試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

ALSA上の録音に関する覚え書きとAudacity

ライン入力やマイクなどの外部入力の録音は、ALSA標準の録音機能で行える。JACK Audio Connection Kitを使用することでJACK対応アプリケーションから録音することもできるが、JACKを使用する方法は別の記事にて扱う。

ミキサー設定

録音に関するミキサー設定は必ず行い、音がきちんと録音されるかどうかを確認する。手元のカード*1では、「Capture」をある程度上げた状態で、横の「Input Source 1」を「Line」にすることでライン入力が録音できる状態になっている。使用しているカードにより、設定項目は変わる可能性がある。
ミキサーアプリケーションは、GUIのものもあるが、最も確実に設定するにはalsamixer(alsa-utilsに含まれる)を端末で実行する。*2録音関係の設定は、Tabキーを一度押して

View:  Playback [Capture] All

という表示になっているとき(もしくは「All」が選択されているとき)に可能。
関連記事:

録音方法

コマンドではarecordが使える(Ctrl+Cで止める)が、出力形式はvoc/wav/raw/auのみの対応となっているため、これらが気に入らなければ、一度WAVE形式で出力後、別途エンコードを行って変換することになる。

$ arecord -f cd out.wav

-f cdはCDの音質(16bit/リトルエンディアン/44100Hz/ステレオ)、-f datはDATの品質(16bit/リトルエンディアン/48000Hz/ステレオ)を簡単に指定できる。これ以外にも、オプションで詳細に品質を指定する方法もある(「arecord -h」でヘルプを参照)。
GUIのアプリケーションでは、Audacityなどで録音ができる。

Audacityの覚え書き

jackdを使用すると「メモリが確保できません」になる?

AudacityALSAとJACKの両方に対応しているが、jackdが動作していると

***MEMORY-ERROR***: audacity[30157]: GSlice: failed to allocate 4080 bytes (alignment: 4096): メモリを確保できません

このようなエラーが出て起動できなかった。/etc/security/limits.confには「@audio - memlock 500000」を書いているがうまくいかない。*3
(2008/1/9)値を変化させることでエラーが出たり出なかったりした。一方で、Ardourでは

$ ardour2
(中略)
ardour: [INFO]: Control protocol powermate not usable
JACK tmpdir identified as [/dev/shm]
loading bindings from /home/[ユーザ名]/.ardour2/ardour.bindings
ardour: [ERROR]: JACK: cannot lock down memory for RT thread (メモリを確保できません)

と、似たようなエラーとなっていたが、こちらは値を変えても上のメッセージは出なくなるものの

terminate called after throwing an instance of 'std::bad_alloc'
  what():  St9bad_alloc

となることがある。
(2008/5/17)jackdの起動時に-u(--unlock)オプションを付けるとよいようだ。QjackCtlでは「Unlock Memory」にチェックする。


JACKが使えなくても、ALSAの録音機能を直接使用することでライン入力などからの録音はできる(JACK経由での録音も可能)。

バイス設定と音量設定

バイス(JACKがうまくいかなかったため)ALSAの「hw:0,0」
(2008/1/9)JACK経由でALSAの録音機能を使用して録音することも可能だが、不安定な気がする。

録音レベル(ALSAのミキサー上では「Capture」のレベルとなっている)は

この部分で調整する。大きすぎると下の画像の左のようになり、

ピーク時に右のような状態であれば音も割れずに適したレベル(少し大きい?)。小さすぎても大きすぎてもダメで、適したレベルになるまでは試行錯誤する必要がある。

使用したバージョン:

*1:K9NU Neo-Vのオンボードサウンド(ドライバ名:hda-intel カード名:HDA ULI M5461 チップ名:Realtek ALC883)。

*2:例えば、(バージョン2.20.1の時点の)GNOME音量コントロール(gnome-volume-control)では複数の「Input Source」や「Capture」をうまく扱えず、GNOME ALSA Mixerでも「Input Source」が変

*3:limits.confのmemlock指定でうまくいっているケースもあるようだが...