Linuxでデジタル入力で録音したら音が速くなって困ってしまった時のメモ




デジタル入力で44.1kHzの信号を録音すると音が微妙に速くなってしまう。
忘れた時のために直し方をメモ。






環境は

Knoppix6.2      日本語版
C-MEDIA      CMI8738
Audacity      knoppixに入っている物

という状況。





-- やり方 --

ターミナル(コンソール)を開いて

sudo gedit /usr/share/alsa/alsa.conf

と入力してエンターキーを押下。
エディタで設定ファイルが開く。
下の方にスクロールしていくと

defaults.pcm.dmix.rate 48000

という部分があるので48000を44100に書き換えて上書き保存する。

デジタル入力から録音するにはalsamixerやKmix等、ミキサーでiec958 In Selectを、同軸ならそのまま、角型光ならオンにして、Audacityの入力設定をspdifやiec958に変えて録音する。

放りっぱなしで長時間録音する時はシステムモニタを使って、プロセス、Xscreensaverを停止か強制終了で動かなくする。





音が普通になったので今度は44.1kHzの入力が正確かどうか調べてみたらどうにも一致しない。
ディザかなんかのホワイトノイズが混じる。





テストCDを録音してみると





赤線はテストCDを録音した物でノイズフロアが少々高い。
元の音声ファイルは青線。THD 0.00010% +N 0.00211%。
高低他の周波数も入れてみたがノイズの様子に変化無し。

試行錯誤の結果Audacityの設定が原因と判明。
デフォルトでディザが入っていた。
無しに設定したらコンペア一致するようになった。





asoundrcに書くやり方もついでにメモ。
ココに書いてあるのを少しいじった。
いじらないで丸コピーでもできる。
コンソールで

sudo gedit ~/.asoundrc でエンターキー

白紙のファイルでエディタが起動するから

pcm.swmixer {
    type dmix
    ipc_key 1234
    slave {
        pcm "hw:0,0"
        pcm "hw:0,2"
        period_size 1024
        buffer_size 4096
        rate 44100
    }
}
これをコピーして貼り付け、上書き保存。
設定>デバイス>再生をswmixerに変更。
設定>デバイス>録音をspdifまたはiec958にする。
Audacityのディザを無しにしてやる。

元も張り付け。
pcm.swmixer {
    type dmix
    ipc_key 1234
    slave {
        pcm "hw:0,0" #for ICE1724's analog output
        #pcm "hw:0,1" # for ICE1724's digital output
        #format S32_LE # needed only for ICE1724's digital output.
        period_size 1024
        buffer_size 4096
        rate 44100
    }
}






これでマイク入力を外部ADCを通してハードディスク無しで録音する。
ハードディスクの騒音とアナログMic-INの高域のノイズを排除しようという企みであるが、
電源ファンの音とプリの残留ノイズもあるからどうという事もなく単なる自己満足。





Knoppix5.3.1CD日本語版

でも上の方法をやってみたがこれが上手くいかない。
音は速いまま。


色々試していると、alsaconfやasoundrc等をいじらない状態でAudacityの設定の中の
オーディオI/O>スルー再生>ソフトウェアによるスルー再生にチェックを入れると速度が普通になる事がわかった。
しかしコンペアが通らない。
所々でプチというノイズが出る。
その場所の波形を見ると階段状のズレがある。
スルー再生しながらだと音が飛ぶのかもしれん。
CPUパワーがあれば平気なのだろうか?





また色々試していたら解決策を見つけた。 訂正:実は解決してないっぽい。

alsamixerとAudacityの入力をデジタルにしておく。
Audacityの設定
スルー再生「レコーディングしながら他のトラックを再生」にチェック
「ソフトウェアによるスルー再生」はチェック無しの状態。
デフォルトはこうなっているはずなのでいじってなければ特に触る必要は無い。
正確な入力が欲しいのでディザを無しに設定する。


まずは何でもいいから(無音推奨)録音して停止する。時間は短くていい。このトラックは音が速い。
次にそのトラックを残したまま本当の録音をする。録音ボタンを押すと新しいトラックで録音が始まる。
同時に初めに録音しておいたトラックの音が鳴るが、現在録音しているトラックにこれが混ざる事は無い。
終わったら停止。


こうすると本当の録音に使った2番目のトラックは速度が普通になっている。
あとは最初に録音した音の速いトラックを削除すればよい。
この方法で録音した物はコンペアも通った。
もっとちゃんとした根本的な解決法があるのかもしれんが簡単だからこれでいいや。





この方法なら楽だわぁと思い6.2で試したがダメだった。
上に書いた設定の書き換えでしか音が普通にならない。
ややこしいのぅ。



速度の話とは違うがAudacityでflacで保存すると圧縮率の設定を変えたせいなのかWindowsでflac.exeを使ってデコードできなかった。
ファイル自体はwinampで再生できたが最後にエラーが出る。
デフォルト設定(5だったかな?)で保存した物はflac.exeでデコードできた。
これまたややこし。





5.3.1CDで録音していたらチョコチョコと処理落ちする。
音が飛んだり録音が途中で止まったり。
6.2を使うから別にいいんだけどなんか気になる。
気になるけどまぁいいや。





目次