![見出し画像](https://assets.st-note.com/production/uploads/images/81471775/rectangle_large_type_2_f95627a0f173f3e919a80322518c976a.jpeg?width=800)
Arduinoで作るMIDIコントローラー(回路図・コード付き)
Arduinoを使ったMIDIコントローラーの作り方解説をしていこうと思います。
前提条件としてArduinoの導入・接続方法、またライブラリ導入方法などの説明はここでは致しません。ただコード部分についてはプログラミングができない方でも同じものなら作れるぐらいには解説していこうと思います。
使用パーツ
・100均のアクリルケース
・ACEIRMC Pro Micro(Arduino Arduino Leonardo互換マイクロコントローラ)
・可変抵抗 B10k*2
・24φ アケコンボタン
・usb-micro typeB(オス) - usb typeA(メス) 変換アダプタ
使用ライブラリ
・Control-Surface
![](https://assets.st-note.com/img/1656234001561-FBqSZuHVIs.jpg?width=800)
必要部品に補足情報を上げておくとArduinoはMicroかLeonardoを使用した方が簡単になります。(もしくはその互換機)
自分はLeonardoの互換機としてpro microを使用しています。
なぜかというと上記であげた2つであればUSB周辺機器としての機能が備わっているためそのままUSB接続してMIDIインターフェイスとして使えるのですが、Arduino Unoなどはその機能が備わっておらずもしUSB-MIDIとして接続するためにはフォームウェアの書き換えなどの作業をしなくてはいけないためです。
それも少々めんどくさいので、、、
またノブとして使用する可変抵抗は、今回使用しているライブラリの抵抗の推奨値が5k~10kΩとのことでしたので、作成する際はその値のものを使用した方が良いかと思われます。
回路図
![](https://assets.st-note.com/img/1656235815377-P3a32tr195.png?width=800)
上記の図だと少し見にくくなっているので解説すると下記の場所に接続しています。
ボタン → D4
可変抵抗 → A0, A1
コード
#include <Control_Surface.h>
USBMIDI_Interface midi;
NoteButton button {
4,
{60, CHANNEL_1},
};
CCPotentiometer potentiometers[] = {
{0, {71, CHANNEL_1}},
{1, {72, CHANNEL_1}},
};
void setup() {
Control_Surface.begin(); // Initialize Control Surface
}
void loop() {
Control_Surface.loop(); // Update the Control Surface
}
中身としては全体でこれだけになります。
軽いControl Surfaceの説明をすると、必要な機能のオブジェクト(↑コードの場合buttonとpotentiometers)を記述し、setup()の中にはControl_Surface.begin(); 、loop()の中にはControl_Surface.loop();を書くだけで処理してくれる便利なものです。
それではコード内のボタン部分について解説をします。
NoteButton ← MIDIノートイベントを送信するクラス
button ← 命名した名前(なんでも大丈夫)
4 ← 接続するArduinoのpin番号
60 ← 送信するノート番号(60なら真ん中のド C4)
CHANNEL_1 ← チャンネル番号
次にノブの解説になりますが、中身の書き方は↑で解説したボタンと同じです。ただ、ボタンはパーツが1つでしたが、ノブは2つあるので配列として定義しています。([]←これ)
CCPotentiometer ← ポテンショメータまたはフェーダーからアナログ入力を読み取り、 7ビットのMIDIコントロールチェンジイベントを送信するクラス。
potentiometers[] ← 命名した名前(なんでも大丈夫)今回は中に複数個パーツを入れているので、鉤括弧をつけて配列とさせている。
0 ← 接続するArduinoのpin番号
71 ← 送信するコントロール番号
CHANNEL_1 ← チャンネル番号
となっています。なのでもしボタンを複数個入れたい場合とかは↓ のように書けば大丈夫です。
//ボタンを4個にする場合
NoteButton buttons[] {
{4, {60, CHANNEL_1}},
{5, {61, CHANNEL_1}},
{6, {62, CHANNEL_1}},
{7, {63, CHANNEL_1}},
};
control surfaceの機能自体はまだまだめちゃくちゃあるのですが、ただボタンとノブをつけるだけならこれだけで作れてしまいます。
あとはボードに書き込み、ボタンやノブ取り付けを配線を接続すれば完成です。
ちなみにこれが自分が作成したものの完成品になります。
![](https://assets.st-note.com/img/1656238996432-Nr8nLHIJZe.jpg?width=800)
この記事が気に入ったらサポートをしてみませんか?