2020年4月6日月曜日

アーカイブ・オルグ オーディオ(続き)

さてアーカイブ・オルグからDLしたFlacファイルには、
ハイレゾ音質のものもあります。
これらをCD音質に戻すにはsoundconverterを使うのですが、
残念ながら一回の処理で、CD音質のFlacにする方法がありません。
そこで一旦Soxコマンドで16ビット44.1KHzのWavに変換します。
そのためのHaskellのコードは

import System.FilePath.Posix
import System.Process
toWav :: FilePath -> IO ()
toWav f = do
    createProcess (proc "sox" ["-V2", f, "-r", "44100", "-b", "16", nf]) >> return ()
    where nf = replaceExtension f "wav"

そののちsoundconverterでFlacに戻します。

この時注意が必要なのは、Soxでの処理が終了したことをHaskellから知るすべがないことです。
処理途中で元のファイルを消去してしまうと不完全なファイルが生成される恐れがあります。

スクリプト上は新しいファイルが生成された後で消去するように見えていてもです。

十分な時間をおくか、ファイルマネージャーなどで監視をしてから消去処理を実行します。
僕はファイルマネージャーのアイコンが変化するのを利用して確認しています。

(案外実用的なのが、CPUの唸り声がおさまるのを待つ方法。ただしPCの機種によるかな?)

Haskell Processの問題点。

https://hhg2the-haskell.blogspot.com/2020/05/haskellprocess.html

前記事
アーカイブ・オルグ オーディオ

なぜわざわざハイレゾ音質のファイルをCD音質に変換するのか、疑問に感じられるかと思いますが、主にスペースの都合です。

テラ級のHDDであればその必要はありません。

ハイレゾは混変調ひずみが多く発生しているとの指摘があり、納得できる主張なのですが、
僕自身が確かめてはいません。
大多数の評論家、マニアが「ハイレゾは音がいい」としていることから、少なくとも、混変調ひずみによる音質劣化は大きな問題ではないと思われます。

さらに続き
https://senjounosantafe.blogspot.com/2020/05/blog-post_12.html

0 件のコメント:

コメントを投稿