Tumblr Facebook ВКонтакте linkedin Hatena Tweet LINE 카카오톡 Reddit Pocket Google+ 微博 Pinterest Email

Raspberry PiでBehringer製4ch入出力USBオーディオインターフェイスUMC404HDを使う#録音

UMC404HDについて

以前国内メーカーや販売店に問い合わせたもののLinux対応について否定したりお茶を濁した回答だったが、本機は海外でも動作報告が多数あり安価。デスクトップのLinux/Ubuntuでは基本挿せば使えたが、RasPi3(Mate16.04)ではやや設定を要した。まずは再起動したり抜き差ししたり余計な電力食うUSBデバイスを除去。

前面右端ヘッドホン用端子PHONESは6.35mmステレオフォン端子で、スマホ等で一般的な3.5mmステレオミニプラグには変換プラグが必要。変換プラグにも注意が必要で、ネジ目がついていて専用ケーブル以外緩かったり、スマホ用四極端子との相性が悪かったりする。極力安価なものを複数用意するほうがいい。

右からふたつ目のMAIN OUT調節つまみは裏側の6.35mmモノラルフォン端子ひと組とXLRキャノン端子ひと組からのメインアウトの音量を上下させるが、いわゆるアンプやパワードスピーカーへの接続を意図したもののようで、ヘッドホンを繋いでも極めて小さな音でしかない。言うひとに言わせれば、こちらの端子の方がヘッドホン用端子より音がいいというが、ヘッドホン用端子でもパソコンやモニタの裏側やスマホの出力に比べれば十分にノイズフロアが低く別物。

以上PHONES,メインアウトはいずれも2チャンネルでしかなく、MONITER A/Bのスイッチで1,2chと3,4chに出力を切替え、いずれかの組を2chステレオとして聴く。UBUNTUではプラグインするだけでFront L/RとRear L/Rとして認識される。

4ch出力はRCAとフォンが四端子ずつ並んだPLAY BACK端子から可能で、この音量調節用の物理的なノブは用意されていない。

MIXノブは左へ回すとマイク入力、右へ回すとパソコンからの音声が大きくなる。

MIDI対応キーボートは今手許になく未評価。

音を出す

/usr/share/alsa/alsa.conf の二行、優先順位を0から1に下げる。
defaults.ctl.card 1
defaults.pcm.card 1

デスクトップランチャーを作る
omxplayer -b --hw -o alsa:plughw:1,0
このランチャーにファイルをドラッグすれば意図したデバイスから音声出力をして再生される。(Filerがthunarなのかnemoなのかによりまた動作が違う。)
-bで背景ブランクを指定しない場合、16:9比率以外の動画ではデスクトップがそのまま背景になる。
--hwは音声のハードウェアデコード

音を録音する

少なくともarecordでは、4ch以外は弾かれる。
arecord -f S32_LE -c4 --rate=192000 -D hw:1,0 $(date +%Y%m%d_%H%M%S_%N|cut -c1-19).wav
hw:1,0 は arecord -lで確認出来る番号を。
--rate=192000 を48000などに変更するのは可能だが、S32_LE を16bit24bitなどに変更するとエラーが出て、それによりopusenc, oggencとの接続がうまく行かない模様。

soxでチャンネル数削ることが出来るので同時にoggに変換も出来る。
arecord -f S32_LE -c4 --rate=48000 -D hw:1,0|sox -t wav - -c1 -t ogg -C10 $(date +%Y%m%d_%H%M%S_%N|cut -c1-19).ogg
oggencでは-C10は10chを意味するが、soxではVBRのQualityを意味する。最低の-1から最高10まで指定可能。
音楽ビデオ用途程度ならば、レンダリング時の再エンコードでの品質低下などあるにせよ、Wavを捨ててOggを原本に保存した方がディスク容量、加工のしやすさ等、実用上のメリットが大きい。
ただし、機械の動作音等、超音波域のデータを記録解析する用途はWAVやFLACでないと無理。また、映像と同期させる際にズレを起こす場合があるので要注意。(逆にWAVでもその書き込みサイズの大きさからメモリカードとの相性で微細な音飛びを繰り返してずれている場合がある。その手のズレの起こる確率は逆に圧縮形式のほうが低減される。)

-D hw:1,0 の番号は流動的なので、/dev/snd/by-id/を見て
-D hw:/dev/snd/by-id/usb-BEHRINGER_UMC404HD_192k-00,0
とすれば確実に固定される。(Linuxの仕様変更までは。)

sox重ねればコンプかけて圧縮形式まで一行。
arecord -f S32_LE -c4 --rate=48000 -D hw:1,0|sox -t wav - -c1 -t wav - compand 0.3,1 6:-70,-60,-20 -5 -90 0.2|sox -t wav - -c1 -t ogg $(date +%Y%m%d_%H%M%S_%N|cut -c1-19).ogg

そのままパイプしてエンコードも可。RPi3は動画のリアルタイムエンコードは能力的にほぼ無理だが(omxハードウェアエンコードを使わない場合)、音声ならoggもopusも楽々。特にopusは極めて軽快・高圧縮・高品質。ただ、一時間ほど録ると動画と数分ズレていたりするので音楽用途等には要注意だ。

一般に低ビットレートとは50kbps前後だが、opusでは音楽用途でない会話程度であれば1chあたり --bitrate 20 も取れば実使用上、安価なラジカセ等民生機でのCDやFMの音質と大差ないと感じられる。音質を気にせず聞き取り可能性のみであれば更に半分10kbps以下でも可。これらはLameのmp3はもちろんOggでも完全に破綻する低ビットレートであるので、この点Opusというコーデックは極めて画期的だ。(別記事で述べたとおり。)

残念ながらホワイトノイズしか記録されないダメなコマンド
arecord -f S32_LE -c4 --rate=48000 -D hw:1,0|opusenc --genre UMC404 --date $(date +%Y-%m-%d) --framesize 60 --bitrate 40 --vbr --raw-chan 1 - $(date +%Y%m%d_%H%M%S_%N|cut -c1-19)b40.opus
ERROR: Unsupported WAV sample size. Must be 8, 16, or 24 bit PCM or 32 bit floating point PCM. Error parsing input file: -

24bitに下げてplughwに変えてやるとパイプ先のopusenc,oggencともに見かけ上エラーが出なくなるが、無音。32bit4chのみしか扱えないようだ。soxでチャンネルを削ってやってbit下げてパイプしても弾かれる。
arecord -f S24_LE -c1 --rate=48000 -D plughw:/dev/snd/by-id/usb-BEHRINGER_UMC404HD_192k-00,0 |sox -t wav - -t wav - compand 0.3,1 6:-70,-60,-20 -7 -90 0.2|oggenc -t wav - -q 10 -o $(date +%Y%m%d_%H%M%S_%N|cut -c1-19).ogg

脱線:ffmpegでのハードウェアエンコード

ffmpeg -codecs|grep omx と打ってみたら、h264_omxが標準で組み込まれてビルドされてるよう。欲を言えば265,HEVCが欲しいが、ありがたい。
ffmpeg version 3.2-2+rpi1~xenial1.7
DEV.LS h264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (decoders: h264 h264_mmal ) (encoders: libx264 libx264rgb h264_omx )
しかし、2.5倍くらい速い感じではあるものの、そのままでは汚く、実用には設定が要る感じ。

脱線2:soxのRpiにおける挙動

たとえば、つぎのコマンドは通常のデスクトップパソコンでは作動するが、Rpiでは難しい。

sox "$line" -b 16 -r 48000 -t wav - compand 0.3,1 6:-70,-60,-20 -7 -90 0.2|sox -t wav - -t wav - reverse fade h 3|sox -t wav - -C7 comp.ogg reverse fade h 3

fadeはフェードインのみで、フェードアウトさせるには終了時間を指定する必要があり、末尾でフェードアウトさせようと思うとreverseでひっくり返してからパイプするが、これが空き領域不足のエラーになる。単体でパイプしなければ使えるが、gain n などは単体でも動作しない。

ほとんどなんでも出来るだけに、時折ファン音も電力消費も重量もデカイパソコンを立ち上げないといけないのが結構面倒。まあ2020年台にはまた状況が変わってるでしょうね。

CPU使用:音は意外と食わない

ps aux |sort -hk3
で確かめると、
4chのarecordで0.5%,
sox remixで2.0%,
sox -t ogg -C10で 28%,
Rpi3Bの400%に対して全く余裕。

2018-09-21

//
::
//
::

2019 B-AE.com All rights reserved.

support @ b-ae.com

Flag Counter