🛠️

PCDJコントローラを自作してみたい(構想編)

2025/02/16に公開

12年ほど前から趣味でDJをやっています。

元々はPCDJ使いで、MixxxやRekordboxをPCで動かし、それをPCDJコントローラで操作する形で演っていました。歴代のコントローラを挙げると、BEHRINGER BCD3000→Numalk DJ2Go→Pioneer DDJ-RB。
しかし、GODJ Plusというオールインワンの機器を手に入れてからは一切使わなくなり、いずれも親しい友人に売ったり譲ったりしてしまい、手元にはひとつも残っていません。

時は流れて令和6年。戯れに自宅でGODJ Plusで配信をやったところ、ちょっと面倒になりまして。
というのもGODJ Plusの出力をオーディオI/Fの入力端子から受け取って、それを配信ソフトの音声入力に当てているのですが、オーディオI/Fの仕様の都合か、PC側でモニターできないんですよ。幸いオーディオI/Fにヘッドホン端子があったのでそこで確認していましたが、最終的にどのくらいの音量で配信されているのか、音が割れたりしてないかというのが分からず、配信しながら手元のスマホで聴いてみたりとか。もっとも観客はほぼ0人だったのでどうでも良かったんですけど。

なので、だったら自宅配信だけはPCDJでやろうかと思ったものの、先述の通りPCDJコントローラは手元になく、買い直すにしてもまあまあな出費です。
バグか?いいえ、お小遣い制です。(久川凪)

ないなら作ればいいんじゃないか。

PCDJコントローラがいわゆるMIDI入力デバイスであるという事は知っています。つまりはボタンやツマミの操作をMIDIメッセージに変換して、PCに送るようにすればいいということになります。
その仲介は、RP2040マイコン搭載の安価かつ高性能なマイコンボード、Raspberry Pi Picoにやらせるのが今の時流なんじゃないでしょうか。

製作構想

1. 疎通

まずはRaspberry Pi Pico単体でボタン1個の入力を取り込み、MIDI信号を送ってRekordboxに反応させるところまでを作ります。
詳しくは後述しますが、MicroPython等を使わず、Arduino IDE上でC/C++で実装します。

このあたりを参考にさせて頂く予定。
https://logikara.blog/raspi-pico-arduinoide/
https://qiita.com/tadfmac/items/bba45c47aa33b893a3bd
https://toys.poppo-ya.com/878/

2. ハードウェア製作

実際にコントローラ類を並べて筐体を作り、Raspberry Pi Picoと配線するまでを行います。
実は気が逸ってもうほとんど作ってしまったのですが、それはいずれ。

3. ソフトウェア製作

Raspberry Pi Picoを使うとなると、たいていの場合はMicroPythonを使うようですが、私はPythonが書けないのと、あまり環境に悩まずとっとと作りたいので、ある程度慣れているArduino IDE上でC/C++で実装します。
ただこれは横着したいだけでなくて、タイマ割込みで入力監視を行い、通常のメインループで入力データをMIDI信号に置き換えてPCに出力する、という構成にするため。MicroPythonに同じことができるか分かりませんし、C/C++でビルドした方がインタプリタより高速かなと。

このあたりを参考にさせて頂く予定。
https://garchiving.com/how-to-use-timer-interrupt-with-arduino/
https://fabcross.jp/category/make/raspberrypi_pico_weekend/20241016_picoprobe.html?fm=side_chkit

4. 実運用向けのチューニング

出来上がったら実際に使ってみて、仕上げのチューニングを行っていきます。テスト操作は勿論のこと、実際に配信してみたり、馴染みのお店で鳴らさせてもらったりしようかなと。

少し長いシリーズになるかもしれませんが、お付き合いいただければ幸いです。

Discussion