Roland電子ドラムラック用カスタムDAWコントロールボックス(Arduino Micro Pro製)
必要な部品と材料
| Arduino Micro Pro(※標準のArduino Microではない、内蔵USBのPro Micro) | ×1 |
| プッシュボタン(ノーマルオープン、瞬間スイッチ) | ×7 |
| 3Dプリント製クランプとボックス本体 | ×1式 |
必要な工具
- 3Dプリンタ(汎用)
使用するアプリとオンラインサービス
- Arduino IDE
プロジェクト概要
DAW(私の場合Cubase)を操作しながらドラム録音する際、ノートPCを触るのは不便でスティックを置く必要がありました。スティックを握ったまま、気を散らさずに再生/停止/録音などの必須コマンドを実行できるデバイスが欲しかったのです。市販品は高価すぎるか、ラックマウント不可など実用的ではありませんでした。そこでArduino Micro ProベースのDIYボタンボックスを自作しました。Rolandラックで使われる標準的な38mmパイプにクランプ固定できます。

作り方
- 3Dプリント
ラッククランプ2パーツとボックス本体をプリント。PLAでOKですが、より強度が欲しければPETG推奨。クランプはM4×40mmネジを軸にして2パーツを連結、回転しやすい程度に締める。M6蝶ネジとナットでラックに固定。上部クランプとボックスはM3×4mmネジ2本で固定。

- フロントパネル
ボタン配置に合わせて自作可能。STL(3Dプリント用)またはSVG(CNC用)のテンプレートを用意しています。私はDIY CNCで彫刻入りパネルを作りましたが、3Dプリントでも十分実用的です。

- ボタン実装と配線
フロントパネルにボタンを嵌め、Arduinoの指定ピンにハンダ付け(下記ピンアサイン参照)。基板を別途用意するとスペースに余裕ができます(ボックス内部の4隅の穴で固定)。最後にフロントパネルをM3ネジ2本で締めて完成。

- プログラミング
Arduino Micro ProならどれでもOKですが、必ずMicro Pro(内蔵USB)を使用してください。PCに接続するとネイティブにUSBキーボードをエミュレートし、ファンクションキーやテンキーを含む任意のキーストロークを送信できます。ライブラリによってコード修正が必要な場合があります。ここではデジタルピン2〜8を内部プルアップ入力として初期化し、ボタン押下でGNDに落ちるのを検知してキー送信します。
私のCubase用設定は以下の通り:
コード内で簡単に変更可能です。同梱コードを参考にしてください。ピン ボタン表示 送信キー Cubase機能 2 M c メトロノームON/OFF 3 L テンキー1 左ロケータへ移動 4 >> テンキー+ 早送り 5 << テンキー- 巻き戻し 6 P スペース 再生/停止 7 B b 先頭へ戻る 8 R テンキー* 録画
Enjoy!
スケッチ(Arduino Micro Pro用)
/* ROLAND RACK BUTTON BOX
Note: This is for the Arduino Pro Micro!
Emulates a keyboard to press keys on a connected PC for a DAW (here: Steinberg Cubase).
Optional: uses emulated UART COM port via USB (for debugging) and LEDs (RX/TX) on Micro board.
KEYS: Config for Cubase: https://steinberg.help/cubase_elements_le_ai/v9/de/cubase_nuendo/topics/key_commands/key_commands_default_c.html
Assignment:
Port Switch Key Cubase Function
------------------------------------------
2 M c Metronome On
3 L [Num]1 Goto Left Locator
4 >> [Num]+ Forward
5 << [Num]- Backward
6 P SPACE Play/Stop
7 B b Begin
8 R [Num]* Record
mac70 13.01.2021 */
#define DEBUG_OUTPUT 0
#include
#define KEYPAD_1 225
#define KEYPAD_PLUS 223
#define KEYPAD_MINUS 222
#define KEYPAD_ASTERIX 221
int RXLED = 17;
void setup() {
pinMode(2, INPUT_PULLUP); pinMode(3, INPUT_PULLUP);
pinMode(4, INPUT_PULLUP); pinMode(5, INPUT_PULLUP);
pinMode(6, INPUT_PULLUP); pinMode(7, INPUT_PULLUP);
pinMode(8, INPUT_PULLUP);
pinMode(RXLED, OUTPUT);
digitalWrite(RXLED, HIGH);
Keyboard.begin();
Serial.begin(9600);
if (DEBUG_OUTPUT == 1) Serial.println("Button Box Serial Monitor");
}
void loop() {
Keyboard.releaseAll();
digitalWrite(RXLED, HIGH);
delay(50);
if (digitalRead(2) == 0) { // M
if (DEBUG_OUTPUT == 1) Serial.println("Button M");
digitalWrite(RXLED, LOW);
Keyboard.press('c'); delay(5); Keyboard.releaseAll();
while(digitalRead(2) == 0);
}
if (digitalRead(3) == 0) { // L
if (DEBUG_OUTPUT == 1) Serial.println("Button L");
digitalWrite(RXLED, LOW);
Keyboard.press(KEYPAD_1); delay(5); Keyboard.releaseAll();
while(digitalRead(3) == 0);
}
if (digitalRead(4) == 0) { // >>
if (DEBUG_OUTPUT == 1) Serial.println("Button >>");
digitalWrite(RXLED, LOW);
Keyboard.press(KEYPAD_PLUS);
while(digitalRead(4) == 0); // 長押しでリピート
Keyboard.releaseAll();
}
if (digitalRead(5) == 0) { // <<
if (DEBUG_OUTPUT == 1) Serial.println("Button <<");
digitalWrite(RXLED, LOW);
Keyboard.press(KEYPAD_MINUS);
while(digitalRead(5) == 0);
Keyboard.releaseAll();
}
if (digitalRead(6) == 0) { // PLAY/STOP
if (DEBUG_OUTPUT == 1) Serial.println("Button PLAY/STOP");
digitalWrite(RXLED, LOW);
Keyboard.press(' '); delay(5); Keyboard.releaseAll();
while(digitalRead(6) == 0);
}
if (digitalRead(7) == 0) { // BACK
if (DEBUG_OUTPUT == 1) Serial.println("Button BACK");
digitalWrite(RXLED, LOW);
Keyboard.press('b'); delay(5); Keyboard.releaseAll();
while(digitalRead(7) == 0);
}
if (digitalRead(8) == 0) { // REC
if (DEBUG_OUTPUT == 1) Serial.println("Button REC");
digitalWrite(RXLED, LOW);
Keyboard.press(KEYPAD_ASTERIX); delay(5); Keyboard.releaseAll();
while(digitalRead(8) == 0);
}
}
3Dモデルデータ
Thingiverseで公開中:CADファイル
製造プロセス
- 輸送中の破損を防ぐ5つの実証済み梱包ハック
- SIGHT:視覚障害者を支援するスマートグラス
- Raspberry Pi、PIRセンサー、MQTTで作るモーション制御AWS IoTボタン
- DIY Wall-E 風 Raspberry Pi CD ボックスロボット
- Hekuma、医療用ピペットチップ生産向け新世代自動化システムを発表
- ボックスビルド組立のための最適化レイアウト・配線ガイドライン
- ボックスビルドアセンブリ委託時に考慮すべき重要ポイント
- ボックスビルド組立成功のための必須ガイドライン
- 自動車メーカー・サプライヤー向けカスタム輸送コンテナ:業界特化のソリューション
- アドバンテック、ARK-1220発表:スマート製造向けコンパクトファンレスDINレールPC
- EKF SRS-1201-BLUBRICK:鉄道、自動車、産業環境向けCompactPCI Serial CPU用堅牢ウォールマウント ボックス