ジェニーの予算ミキシングデスクの作り方
ホームページホームページ > ニュース > ジェニーの予算ミキシングデスクの作り方

ジェニーの予算ミキシングデスクの作り方

Oct 29, 2023

ジェニーは今月初めに Ask Hackaday の記事を書きましたが、その内容はすべて、安価なコンピューターベースのオーディオ ミキサーの探求に関するものでした。 最初の試みはあまりうまくいきませんでした。問題は、私たちの多くがよく知っている問題でした。Linux アプリケーションは、複数のオーディオ デバイスを同時に使用することを非常に好みません。 Jenny はこの問題に遭遇しましたが、サウンドカードを 1 つのアプリケーションに統合する方法が見つかりませんでした。

私はしばらくの間、おそらくもう 10 年ほどこの問題と戦ってきました。 私がこれに最初にぶつかったのは、いくつかの異なる USB プリアンプを使用し、3 つのマイクでピアノを録音しようとしたときでした。 そしてもちろん、ジェニーと同じように、私も録音ソフトウェアが一度に 1 つのインターフェイスしか認識しないという問題にすぐにイライラしました。 簡単な解決策は、より多くのチャネルを備えたインターフェイスを購入することです。 Tascam US-4x4HR は優れた 4 チャンネル入出力オーディオ インターフェイスで、Behringer U-PHORIA ラインは最大 8 つのマイク プリアンプを搭載しており、ADAT 経由でオーディオを送信できる 2 つ目の DAC を追加すると 16 まで拡張可能です。 しかし、これらはセミプロ向けのインターフェースであり、それに見合った価格が付いています。

しかし、複数の非常に安価なインターフェイスを一緒にまとめるという Jenny のアイデアはどうでしょうか? そうですね、それも可能です。 その方法を説明しますが、最初に、このソフトウェア ミキサー モンスターをどのように制御するかについて話しましょう。 はい、マウスやキーボードを使用することもできますが、課題はミキシング デスクを構築することでした。私にとって、それは物理的なフェーダーとミュート ボタンを意味します。 現在、事前に構築されたソリューションがあり、Behringer X-touch が人気のソリューションです。 しかし、繰り返しになりますが、私たちはジェニーがこの問題に対して設定した価格帯をはるかに上回っています。 したがって、ここハッカデイで私たちが最も得意なことを行い、独自のものを構築しましょう。

必要なのは、ネイティブ USB クライアント サポート、複数のデジタル I/O ピン、およびいくつかのアナログ入力を備えたマイクロコントローラーです。 私が Arduino MKRZero を選んだ理由は、サイズが小さく、値段も手ごろで、実際にマウザーに在庫があるということでした。 他に必要なアイテムは、いくつかのフェーダーとボタンです。 私はフルサイズの 100 mm フェーダーと、Adafruit 製の LED トグル ボタンを選びました。 ワイヤーや抵抗器などの付属品は、隅にある現地の部品箱から調達しました。

最初に考えたのは、パネルをデザインして 3D プリントすることでしたが、合板の端材にレイアウトを作成したところ、結果として得られたサイズが私のプリンターには少し大きすぎることがわかりました。 そこで、レトロ風に「木目調」のミキシングデスクを作ります。 これは CNC ルーターにとっては素晴らしいプロジェクトでしょうが、私はまだそのクールなクラブの一員ではないので、ボール盤、テーブルソー、振動工具が役に立ちました。 結果は私が望んでいたほどきれいなものではありませんでしたが、いつかこのプロジェクトの Mark II が手に入るかもしれません。

配線は比較的簡単で、ボタン内の LED を保護するための電流制限抵抗と、ボタンが押されていないときにデジタル ピンがフローティングになるのを防ぐためのプルアップ抵抗が付いています。 Arduino にはデジタル ピンにプルアップが組み込まれていることが後でわかったので、このプルアップは必要ないかもしれません。 また、10 Ω の抵抗はプルアップには「適切な選択ではない」ことにも注意してください。 アルが雄弁に述べたように、それは「プルアップ抵抗」です。 10 kΩ がより良い選択です。

ビルドを完了するには、Arduino 上で実行するためのスケッチが必要です。 ありがたいことに、まさに私たちがやりたいことを実現する優れたライブラリ、Control Surface がすでに存在します。 これを設定する方法はたくさんありますが、私のスケッチは非常に簡単です。

さて、このプロジェクトの肉じゃがです。 アプリケーションに複数のデバイスからの入力を確認させ、実際にミキシングを実行させるにはどうすればよいでしょうか? ここでの問題は非同期です。 各デバイスは異なるクロック ソースで動作するため、それぞれのデバイスからのビットストリームがふらつき、同期が失われる可能性があります。 これは非常に深刻な問題であるため、古いサウンド ソリューションではカードの結合があまり実装されていませんでした。 少し前までは、これらのオーディオ ストリームをリサンプリングして適切に同期させるプロセスは、非常に CPU を集中的に使用する手順でした。 しかし、20 年前と比較すると、最近では私たちは皆、マルチコアの巨大な実用的なスーパーコンピューターを所有しています。

そこで、Wim Taymans が Pipewire を書いたとき、別のアプローチをとりました。 リサンプリングするのに十分なサイクルがあるため、Pipewire は必要に応じて透過的にリサンプリングを行います。 Pipewire はすべてのオーディオ インターフェイスを一度に認識し、Jack API と Pulseaudio API の両方を実装します。 ディストリビューションによってこれの処理方法は少し異なりますが、一般に、これを機能させるには、Pipewire パッケージに加えて、pipewire-jack および Pipewire-pulseaudio パッケージが必要です。

その秘密は次のとおりです。Jack ルーティング ツールは Pipewire と連動します。 大きな 3 つのオプションは、qjackctl、carla、および qpwgraph ですが、qpwgraph は実際には Pipewire ネイティブであることに注意してください。 したがって、アプリケーションが一度に 1 つのデバイスしか選択できない場合でも、そのアプリケーションが Jack、Pulseaudio、または Pipewire API を使用している場合は、これらのルーティング制御プログラムの 1 つを使用して入力と出力を任意に接続できます。

それでは、最も単純なソリューションである jack_mixer から始めましょう。 アプリケーションを起動し、好みのルーティング コントローラーを使用して、Arduino コントロール サーフェスから MIDI 出力を取得し、jack_mixer の MIDI 入力に接続します。 jack_mixer で、新しい入力チャンネルを追加し、適切な名前を付けます。 これをテストする USB テープ デッキがあるので、これを「テープ デッキ」と呼びましょう。 ここで、コントローラーの魔法が始まります。ボリューム コントロールの「学習」ボタンを押し、コントローラーの最初のフェーダーを小刻みに動かします。 次に、ミュート ボタンを押して、新しいチャンネルを保存します。 出力チャンネルも追加したいと思います。 フェーダーの 1 つをこれにも自由に割り当ててください。

最後に、ルーティング プログラムに戻り、テープ デッキの出力を jack_mixer 入力に接続し、jack_mixer の出力をスピーカーにルーティングします。 テープを再生すると、音量やミュートを完全にコントロールできます。 YouTube ビデオをミックスに追加したいですか? ビデオの再生を開始し、ルーティング コントローラーを使用してスピーカーからビデオを切断し、jack_mixer の 2 番目のチャンネルに送ります。 これら 5 つの安っぽくて厄介なサウンド カードのそれぞれについて繰り返します。 利益!

ここで言及すべきもう 1 つのアプリケーションがあります。 jack_mixer を使用する代わりに、Ardor を使用して面倒な作業を行うことができます。 この方法で設定するには、基本設定の下に 2 つの主要な Ardour 設定があります。監視タブで、「レコード監視の処理」が Ardour に設定されていることを確認し、「自動入力はトークバックを行う」オプションがチェックされていることを確認します。 次に、トラックを追加し、トラック入力を適切な入力ハードウェアに設定し、トラック出力をマスター バスに設定します。 マスターバスが希望の場所にルーティングされていることを確認してください。そうすれば、Ardour とのライブミックスもできるはずです。

これにより、プラグインの形であらゆる種類の便利な機能が提供されます。 音源にコンプレッサーやEQが必要ですか? 問題ない。 ソースを自動調整したいですか? X42 にはそれを行うプラグインがあります。 そしてもちろん、Ardor は録音、ループ、その他あらゆる種類のオプションをパーティーにもたらします。

Ardor はカスタム ミキシング インターフェイスもサポートしています。 また、環境設定で、「コントロール サーフェス」タブを探し、「一般 MIDI」がチェックされていることを確認します。 次に、それを強調表示して、「プロトコル設定を表示」ボタンをクリックします。 受信 MIDI は Arduino デバイスに設定する必要があります。 その後、Ctrl + 中クリック ショートカットを使用して、チャンネル フェーダーとミュート ボタンを学習モードに設定できます。 コントロールを小刻みに動かして、そのタスクに割り当てます。 または、.map ファイルを Ardour の midi_maps ディレクトリに追加することもできます。 私のものは次のようになります:

興奮しすぎて、Linux オーディオのセットアップに多額のお金や時間をつぎ込む前に、知っておくべきことがいくつかあります。 まずはレイテンシーです。 特に USB ベースのハードウェアを使用している場合、非常に低いレイテンシーを達成するように Pipewire システムをセットアップするのは非常に困難です。 それは可能であり、このテーマに関する研究が進行中です。 しかし、これまで安定して実行できた最高の測定値は往復 22 ミリ秒でした。これには、音声の文字化けを避けるために Pipewire 設定ファイルをかなりいじる必要がありました。 これは、セルフモニタリングやライブ音楽にはほぼ使用可能で、事前に録音されたものを再生する場合にはまったく問題ありません。

次に知っておきたいのは、これは素晴らしかったということです。 まともなオーディオ ハードウェアと利用可能な素晴らしい無料ツールを組み合わせることがどれほど楽しいかについては、少し心配です。 次回の Zoom ミーティングに向けて自分の声を自動調整したいですか? 簡単。 小さな MIDI キーボードをデスクに組み込んでみませんか? マイクロコントローラーといくつかのはんだ付けだけです。 空は限界です。 そして未来も明るいです。 Pipewire や Ardor などのツールは非常に活発に開発されており、リアルタイム カーネル パッチはまさにゴールラインを越えようとしています。 夢中になってクールなものを作成し、それについてぜひ私たちに教えてください。