DJミキサーがほしい。ハドフでボロボロのやつでも4000円くらいするのでこの際作ってしまおうと思いつきで始まったプロジェクト。完成したのでメモとして残す。
Teensyとはマイコンボードの一種で、Arduino IDEで開発ができて処理がかなり高速という特徴を持つ。公式で提供されているAudio Libraryがかなり強力で、少ないコードでエフェクターやらシンセサイザーやらが作れる。
ここがすごいぜTeensy
ベンチマークスコアによる比較。公式サイトより。
なんといっても600MHz(オーバークロックも可能)のARM Cortex-M7が最大の特徴。ちょっと大きなプロジェクトでもCPUパワーでゴリ押しできるという心強さが良い。32bit floatが整数演算とほぼ同じ速度で動くとのことで、マイコンボードとは思えないほど楽にコードが書けそうだ。
お値段は6045円と少しばかり高い*1。が、Arduino Uno R4 Minimaを2個買っても到底これほどのスペックは出せないので、コスパは良いはず。
便利系のライブラリからインターフェイスを扱うライブラリまで様々なライブラリが公式で提供されている中、一際異彩を放っているのがAudioライブラリ。なんと、あらかじめ用意された部品を線でつなぐだけで色んなものが作れてしまう!
そんなわけで、今回作るDJミキサーはTeensyと超強力なAudio Libraryで作ることを決定。
AliExpressで部品を注文
いろいろ注文した。中でも重要なのがPCM1808 ADCとUDA1334A DACだ。I2S接続のADCとDACで、アナログのオーディオをTeensyで入出力するのに必要。
つまみの数に対してADCが足りないので74HC4067のアナログマルチプレクサーモジュールを用意した。
制作
部品を線で結ぶ
なにやら複雑そうに見えるが、至って単純。ADCで入力した音を2系統LRごとに処理している。
コーディング
オーディオの処理はAudio Libraryがやってくれるので、つまみの値を読み取ってAudio Libraryの各部品の制御をするちょっとしたコードを書く作業となる。
はんだ付け
ブレッドボードにTeensyを配置し、各操作子はユニバーサル基板に配置して結線。よくもまあプリント基板なしでここまでやったなあ。
ケースづくり
百均の入れ物を加工して使おうと思っていたがうまくいかなかったので3Dプリンターで作ることに。
ノギスで寸法を測ってモデルを作り、小さい部品単位で3Dプリントしてチェックする。問題がなければ筐体全体の設計に組み込む。
ハマったポイント
- PCM1808 ADCモジュールは3.3Vと5Vが必要
- AudioFilterStateVariableのfrequency()に与える値がよくわからない
- よくわからないので、実際に動かしながら良さげな値にした
- なぜかわからないが動かない
- AliExpressで買ったジャンパー線の接触不良だった
- AudioAnalyzePeakが思ったほど振れない
- スケールの違いかな?数学に弱いのでわからなかった
音が出ない、音を入れられないという場合にはUSBオーディオによる入出力を使って問題の切り分けを行った。大体結線が原因だった。
完成
機能
- 2トラック
- 3バンドEQ
- プリフェーダーリスニング
- レベルメーター
ミキサーを作ったはいいが、プレイヤーがないことに気づく。CDJって作れるんかな。