工業音楽 shuplana's diary

CNCを中心としたワンボードマイコン~パソコン周辺

MIDIコントローラを製作してみるために

さて、MIDIコントローラを作りたくなったのです。

大きな目標は、ポリフォニック・アナログシンセを作りたいのですが、音色メモリするとなるとデジタルな力が必要となります。

Prophet5を参考に作っていきたいので、CEM33シリーズ互換のチップを使って組上げたいなと。

実験用のAS3340などのチップは入手済みなのですが、部材がそろわないなど、実験になかなか踏み切れません。

音色メモリのためにArduinoあたりを使うおうと思って調べていると、小さなボードに収まったTeensyにたどり着きました。Teensy3.5クラスになると、シンセを表現できるCPUパワーがあるので、アナログでなくてもシンセができてしまいます。

例えば、Teensy3.6 Teensy4.1 や、RaspberryPi4を使ったシンセ、

UIのデザインのポリシーが2台に差があります。それぞれの特性に合わせてあります。

TSynthは、ほぼ、ラックマウントシンセのUIを持っていて、触れるパラメータはすべてパネルに配置されています。そのパラメータにあったシンセ1種類用です。

Zynthianは、TennsyよりさらにCPUパワーがあるRasPi4を使っているため、統合的なユニットになっています。内包するシンセ、エフェクタなども複数あり、それぞれのソフトのパラメータをメニューから選んで操作する、といったUIです。

MS20に慣れ親しんだ脳が、DX7に会ったときのような、どうすればいいの感、があります。

シンセを操作するのに一旦MIDIを経由しコントロールすれば、コントロール側はMIDIコントローラとして汎用的に動くものであっていいのではないか、と。

ところで、デジタルなメモリされたパラメータ量をボリュームのような絶対的表現の

UIであると、メモリを呼び出したときにそのパラメータが5で、ボリュームが0だったら、表現に乖離が発生します。内臓モータでウイイーンとボリュームが5になるような部材があればいいのですが、雑音、電源パワーが要求されるでしょう。となると、相対的表現のエンコーダ、および値表示の組み合わせが必要だと。そんなこんなで、秋月電子さんでRGBのLED付エンコーダを見つけて、RGBの色でパラメータ値を表現して、エンコーダで値を操作する、ってことができるのではないか、って考えて、Tennsy3.5とRGBエンコーダでこねこねしてました。エンコーダ入力とRGB出力を処理することになるのですが、なかなかすっきりしたプログラム・コードが書けません。

そんなときに見つけてしまったのです。

この2つのソリューションは、組み合わせる前提になっていて、どちらもI2Cのスレーブになります。RGB LED RingのページにデモのYoutubeがありますが、これだ!ってことになりました。

現在、これらを複数組み合わせて、どのように表現できるかテストを始めたところです。I2Cのハードとなるので、ライブラリを介してEncoderなら値を読み取るだけで値が取れます。最小値、最大値、ステップ刻みなどもプログラムできます。値をとるには値を取り出すだけ、Encoderの面倒なステップ方向などはハードが処理してくれます。

RGB LED Ringも、現在はNeoPixelなどが主流かと思いますが、I2Cのチップを使い、操作をライブラリが吸収するため、LED位置とRGBの指定だけで色を操作できます。

Arduino IDEベースで開発するTennsyは、基本、無限ループ式のプログラムで、割り込みのプログラムや、イベントドリブンのプログラムにしようとするとかなり注意深く調査する必要がありますが、自分がやりたいことができそうに思います。

ところで、MIDI については書いていませんが、Arudino,Teensyのライブラリが強力なため、簡単にMIDIコントロールできます。こちらは資料豊富なため書く必要ないかと。

 

デジタルなものをユーロラックに収めるのを嫌う派の方々がいらっしゃるかもしれませんが、自分の方針として、欲しいものがアナログ・デジタル混在なハイブリッドのもので実現できるなら、そのことに全く抵抗はありません。

何ステップ・シーケンサなんかは、デジタルなチップを使ってるはずですし。

 なので、これらをつかってMIDIコントローラを作ろうと思います。

 

f:id:shuplana:20200906151819j:plain

I2C Encoder、RGB LED Ring