こずぶろ

日常生活や趣味で得た経験・情報を盛ったりせずに記します。

【Arduino】USB MIDIコントローラーを自作した

f:id:cozeck:20230203081042j:image

EXペダルを使いたかっただけなのに

去年(2022年)の夏にAmplitubeを買った流れで、ワウペダルを使いたくエクスプレッションペダルを買ったところ、入力に対応する機器がないことに気づくという残念な出来事がありました。

その時の記事↓

cozeck.hatenablog.com

 

結局、買ったエクスプレッションペダルを使えないので放置していました。

そのためだけにMIDI機器を買うのも自分にはコスパが合わないし、自作も検討しましたがハードルが高そうだし。

 

シンセに興味を持ちMIDIコントローラー必要度がUP

エクスプレッションペダルのためだけにはなぁ〜と色々諦めていましたが、ある時何かの音楽を聴いていたら「MIDI音源の音色を演奏中にリアルタイムに変えられるようにしたいな」という欲求が湧き、MIDIコントローラー導入を検討。

製品はやっぱり価格面で「そこまでしてやりたいことか…?」となってしまうので、自作を再検討。

 

MIDIキーボードを持ってなければツマミやパッドがついたモノを買うところですが、KEYSTATIONを持ってるので買い替えは勿体無い。貧乏性。

 

自作のための超親切な動画があった

www.youtube.com

Arduino UNOを使ったMIDIコントローラーの自作方法を紹介してくれています。

上のPart1の内容だけで、エクスプレッションペダルやツマミ、フェーダーといったコントロールを行う機器を自作できます。

 

www.youtube.com

Part2ではデジタル入力を使ったボタンについて紹介されています。

ON/OFFの操作やキーボードのような入力ができます。(Velocityはない)

ギター関係で例を挙げると、フットスイッチの自作に使える内容です。

 

www.youtube.com

Part3はマルチプレクサを使った多入力化について紹介されています。

例えばツマミが10個欲しいとしたら、Arduino UNOでは6個までしか付けられないけど、マルチプレクサを使えば解決できます。

 

上記の3つの動画に倣って自作を開始!

 

自作機器の構成と材料

・操作

ツマミ:6(可変抵抗、ノブ・・・各6個)

EXP入力:1(ステレオジャック・・・1個)(←スイッチ付がいい。後述)

ボタン:8(タクトスイッチ・・・8個)

MIDI出力:1(DINソケット・・・1個)(←USB化したため機能付けず)

 

・ボディと中身

Arduino UNO Rev3 ・・・1個

74HC4051AP (マルチプレクサIC)・・・1個

ジャンパ線、配線材・・・適量

ブレッドボード・・・1個

鉄製ブックエンド(ケース代わり)・・・1個

USBケーブル( BーA or Cタイプ) 

M2のネジとナット・・・4個

 

材料費のメインはAruduino UNOで、現在の相場は3000円代後半といった具合。

 

材料のほとんどは秋葉原秋月電子通商で揃えました。

Arduino Uno Rev3: マイコン関連 秋月電子通商-電子部品・ネット通販

 

マルチプレクサのICは千石電商で105円でした。(今日時点)

東芝(TOSHIBA) TC74HC4051AP CMOSロジックIC

 

家にあった物も使ったので大体ですが、6000円くらいで上記全て揃うと思います。

 

Arduinoに入門

先に紹介したNotes and Voltsの動画の通りにArduinoを動かしてみます。

環境の導入からやるので、それだけでも頭を使いました。

ちなみにマイコンの経験は10年以上前にAVRに手を出してLEDをチカチカさせたくらいです。でも、少なからず雰囲気はわかるので経験が活きました。

 

ツマミ操作に成功。

 

ボタンも成功。

 

USB-MIDI化にトライ

ここで、せっかくUSB接続してるにUSBが電源のためだけなのは勿体無いし、自分の環境ではMIDI入力は1つしかないため現状のMIDIキーボードと併用できない(MIDIキーボードをPCとUSB接続すればできるけど)ことが気になり、USBでの通信を可能にすることを検討。

調べると、できそうなのでトライ。

 

何もわからないけど下記の3つの内容をメインにやって、なんとかできました。

qiita.com

qiita.com

ryokosaka.com

 

困ったポイントとしては、dualMoco.hexを何かするところで上手くいかず、dualMoco.hexを「名称未設定/ユーザ/apple/」に置いたら実行できました。

今上記の参考サイトを読み返したら間違ってる感じがありますが、とりあえずできたのでよしとします。

 

で、USB化も無事成功しました。

USB化したらコードも直すのかなと思っていたのですが、そのままでMIDI接続同様の動作をしました。めっちゃありがたい。

 

いよいよ制作

やりたい動作は確認できたので、形に収めていきます。

まずはケースの加工から。

ダイソーの100円のブックエンドを筐体にする斬新なアイデア

ケ、ケース?

ちゃんとしたタカチのアルミケースを買っていたのですが、初めてのMIDIコントローラー自作だし、後からああしたいこうしたいが出るだろうし勿体ないな〜と思い(何度目だ)、適当なモノを買いにダイソーに行ったら四角い金属製のケースは置いてなく、代わりに鉄製の無骨なブックエンドがあったので、「これ…いいかも!(背景が変わりBGMが流れる)」と買って帰りました。

 

捨てられなかった端材を型にして折り曲げ加工

ここでも勿体無い精神が。

過去に使って捨てられなかった2×4材や木板の端材を活用していい感じに折り曲げました。

 

タクトスイッチの穴開けピッチはマスキングテープに

雑な工作なのでできる技。

(結局ちょっとハマりが悪くて機会があれば修正したい)

 

下穴を開けたところ

今回と今後のためにタケノコドリルを購入

安いドリルを買いましたが、刃を労ってグリスも買いました。

各パーツを取り付け見た目をチェック

思ったよりカッコいい。ブックエンドとは思えないぜ。

DINソケットは現状完全なにぎやかしです。せっかく買ったし、付いてるとMIDI機器っぽくてカッコいいので。

 

背面の配線

地味な配線をしてArduinoにプログラムを書き込んだら完成!

ブレッドボードを使ったのは配線が面倒臭いのと、まだまだ試行錯誤していきたいので容易にいじれるようにしたかったためです。

マルチプレクサはここで初めて試しましたが、動画の通りにやったら問題なく動作させられました。

とりあえず操作できることを確認して喜び遊んだビデオです。

 

材料のところで書いた「ステレオジャックはスイッチ付きがいい」について。

プラグを刺している時は正しく回路が繋がるのですが、何も刺さっていない時は入力がどことも繋がっていない浮いた状態になってしまい不安定な信号が出てしまいます。

何も刺さっていない時は入力とGNDが繋がるようにスイッチ付きジャックを配線すれば解決できます。

もしくは、試してませんが、浮いた入力を安定させるためのプルアップとかプルダウンとかの処理をすれば解決できるかもしれません。

 

Model15で使ってみた

moogのモジュラーシンセのソフト版を持っていたので、コントローラーで操作してみました。

ドラムとハイハットを流した上に、Model15の音を2つ録音しています。

動画はそのうち1つの音をいじってる様子です。

youtu.be

 

次はPADを付けたい

エクスプレッションペダルを使いたかっただけですが、勿体ない精神で技術力を高めることができました。

 

新たにパッドも付けたくて、Velocityを含む入力をどうやるのかを調べています。

1個450円もする圧力センサを2個買ったのに使えずにいるので…MOTTAINAI!!!!

参考例はたくさんありますが、自分の環境に置き換えるにはプログラムの基本的な知識が必要で勉強中です。

上手くいったらまた書きます。

↓図書館にあって借りてみました。わかりやすい書かれ方で初心者でも抵抗感なく読むことができました。

 

↓本屋で見つけて立ち読みした感じ、ヘッダファイルの作り方とかが説明されていてこっちの方が実用的かもと思い、買おうかなと思ってます。