- まず、M-200iのREACポートとLinuxマシンとをLANケーブルで接続する。
(1 Gbpsでリンクすることを期待していたのだが、dmesgを見るとなぜか100 Mbpsでリンクしていた。)
e1000e: enp0s31f6 NIC Link is Up 100 Mbps Full Duplex, Flow Control: None e1000e 0000:00:1f.6 enp0s31f6: 10/100 speed: disabling TSO
今回はストレートケーブルを使って、スイッチングハブなどを介さずに接続した。 - 以下のように
tcpdump
でキャプチャし、ファイルに保存する。このとき、オプション-B
でカーネル上のバッファサイズを大きく取っておく。今回使用した環境 (Intel Core i7-7700 + H270) では、256MiBに設定したらようやくパケットロスしなくなった。$ tcpdump -i enp0s31f6 -B 262144 -w a.pcap
このときtcpdumpはパケットロスしたと報告するのだが、次のステップでパケットを解析すると、音声情報が載ったパケットのロスは無かった. - そのあと、自作のプログラムで、チャネルを選択して24-bit WAVE形式に変換する。プログラム自体はそのうちGitHubで公開するかもしれない。
$ reacrecorder --save-channels 21,22,39,40 --save-wav-24 --load-pcap-file a.pcap
2020-03-23
RolandのミキサーM-200iのREACポートのオーディオをLinuxマシンで録音
Rolandという浜松にある音響機器メーカーが出しているM-200iというオーディオミキサーがある。
このミキサーには、REACポートというディジタル音声を40チャネル出力するポートが備わっている。
ステージボックスとの接続や他のミキサーとの接続に使用するポートで、Ethernetパケットに音声情報を載せて送るようになっている。
Windows用には、このポートを通して録音するソフトが出ている。
Mac OS X用には、サードパーティからREAC driverというGPL3のツールが出ている。
どちらもLinuxでは使用できないので、REAC driverのソースを参考に、Linuxで動くものを作成し始めた。
REAC driverのようなカーネル空間で動くオーディオドライバにすると扱いやすいのだろうが、そこまでするのは大変なので、ユーザー空間で動かすプログラムをつくることにした。
Linuxのsocketをつかってプログラムを書いてみたが、パケットロスを回避するのが難しく断念、最終的に、tcpdumpでファイルに保存しておき、後処理をすることにした。
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿