工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

Roland電子ドラムラック用カスタムDAWコントロールボックス(Arduino Micro Pro製)

必要な部品と材料

Arduino Micro Pro(※標準のArduino Microではない、内蔵USBのPro Micro) ×1
プッシュボタン(ノーマルオープン、瞬間スイッチ) ×7
3Dプリント製クランプとボックス本体 ×1式

必要な工具

使用するアプリとオンラインサービス

プロジェクト概要

DAW(私の場合Cubase)を操作しながらドラム録音する際、ノートPCを触るのは不便でスティックを置く必要がありました。スティックを握ったまま、気を散らさずに再生/停止/録音などの必須コマンドを実行できるデバイスが欲しかったのです。市販品は高価すぎるか、ラックマウント不可など実用的ではありませんでした。そこでArduino Micro ProベースのDIYボタンボックスを自作しました。Rolandラックで使われる標準的な38mmパイプにクランプ固定できます。

Roland電子ドラムラック用カスタムDAWコントロールボックス(Arduino Micro Pro製)

作り方

  1. 3Dプリント
    ラッククランプ2パーツとボックス本体をプリント。PLAでOKですが、より強度が欲しければPETG推奨。クランプはM4×40mmネジを軸にして2パーツを連結、回転しやすい程度に締める。M6蝶ネジとナットでラックに固定。上部クランプとボックスはM3×4mmネジ2本で固定。
    Roland電子ドラムラック用カスタムDAWコントロールボックス(Arduino Micro Pro製)
  2. フロントパネル
    ボタン配置に合わせて自作可能。STL(3Dプリント用)またはSVG(CNC用)のテンプレートを用意しています。私はDIY CNCで彫刻入りパネルを作りましたが、3Dプリントでも十分実用的です。
    Roland電子ドラムラック用カスタムDAWコントロールボックス(Arduino Micro Pro製)
  3. ボタン実装と配線
    フロントパネルにボタンを嵌め、Arduinoの指定ピンにハンダ付け(下記ピンアサイン参照)。基板を別途用意するとスペースに余裕ができます(ボックス内部の4隅の穴で固定)。最後にフロントパネルをM3ネジ2本で締めて完成。
    Roland電子ドラムラック用カスタムDAWコントロールボックス(Arduino Micro Pro製)
  4. プログラミング
    Arduino Micro ProならどれでもOKですが、必ずMicro Pro(内蔵USB)を使用してください。PCに接続するとネイティブにUSBキーボードをエミュレートし、ファンクションキーやテンキーを含む任意のキーストロークを送信できます。ライブラリによってコード修正が必要な場合があります。ここではデジタルピン2〜8を内部プルアップ入力として初期化し、ボタン押下でGNDに落ちるのを検知してキー送信します。
    私のCubase用設定は以下の通り:
    ピンボタン表示送信キーCubase機能
    2McメトロノームON/OFF
    3Lテンキー1左ロケータへ移動
    4>>テンキー+早送り
    5<<テンキー-巻き戻し
    6Pスペース再生/停止
    7Bb先頭へ戻る
    8Rテンキー*録画
    コード内で簡単に変更可能です。同梱コードを参考にしてください。

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ファイル

製造プロセス

  1. 輸送中の破損を防ぐ5つの実証済み梱包ハック
  2. SIGHT:視覚障害者を支援するスマートグラス
  3. Raspberry Pi、PIRセンサー、MQTTで作るモーション制御AWS IoTボタン
  4. DIY Wall-E 風 Raspberry Pi CD ボックスロボット
  5. Hekuma、医療用ピペットチップ生産向け新世代自動化システムを発表
  6. ボックスビルド組立のための最適化レイアウト・配線ガイドライン
  7. ボックスビルドアセンブリ委託時に考慮すべき重要ポイント
  8. ボックスビルド組立成功のための必須ガイドライン
  9. 自動車メーカー・サプライヤー向けカスタム輸送コンテナ:業界特化のソリューション
  10. アドバンテック、ARK-1220発表:スマート製造向けコンパクトファンレスDINレールPC
  11. EKF SRS-1201-BLUBRICK:鉄道、自動車、産業環境向けCompactPCI Serial CPU用堅牢ウォールマウント ボックス