【Arduino & Midi USB】3tene専用のアバター操演用MIDIフットペダルを作ったにゃ。スイッチが11個も付いてる優れものにゃ【Roland FC-100】

【3tene専用】Arduinoという部品を使って、ミテネを操作できるMIDIフットペダルを作ったにゃ。スイッチが11個も付いてる優れものにゃ【フットスイッチ】
【Arduino & Midi USB】3tene専用のアバター操演用MIDIフットペダルを作ったにゃ。スイッチが11個も付いてる優れものにゃ【Roland FC-100】

はじめに

Youtubeに投稿した動画の内容を補足する記事を掲載します。

🖱「同じような事をやってみたいよ」という方がいらっしゃればですが、注意事項です。
  作業的には、Arduinoにプログラムを流し込んで、ボードにスイッチの導線をつなぐだけなの内容です。
 とは言え、ハードウェアの加工がありますので、間違えてくっつけてしまうと大事なパソコンが故障したり、最悪発火したりする可能性があります。
  半田付けでは、火傷しそうになったりしたので、事前に十分調べて、これで大丈夫となってから作業を始めて下さい。

Arduinoのハードウェアについて

HiLetgo Leonardo Pro Micro という製品を使いました。

1個 900円なのですが、

Amazon.co.jp: HiLetgo Leonardo Pro Micro ATmega32U4 5V/16MHz ブートローダ マイクロ USB Pro mini Arduinoに対応 [並行輸入品]: 産業・研究開発用品
Amazon.co.jp: HiLetgo Leonardo Pro Micro ATmega32U4 5V/16MHz ブートローダ マイクロ USB Pro mini Arduinoに対応 : 産業・研究開発用品

3個セットだと 1180円という、訳が分からない値段になっています。
(同じのを3個は持て余すので、1個のにしました。)

Amazon.co.jp: HiLetgo 3個セット pro mini ATMEGA328P 5V 16MHz Arduino PRO miniと互換 [並行輸入品]: おもちゃ
Amazon.co.jp: HiLetgo 3個セット pro mini ATMEGA328P 5V 16MHz Arduino PRO miniと互換 : おもちゃ

USBケーブルは、microBというタイプでデータ転送(通信)対応のケーブルがあれば大丈夫だと思います。
PCに接続しないと使えないので、ケーブルはある程度の長さが必要だと感じました。
Pro Microじゃないボードのおまけで付いてきたUSBケーブルは長さが全然足りなかったので、USBハブ経由で接続しています。

Amazon | ELECOM Micro-USB(A-MicroB)ケーブル タブレットPC用 データ転送 充電対応 1.5m 【PlayStation 4 対応】 TB-AMB15BK | エレコム | USBケーブル 通販
ELECOM Micro-USB(A-MicroB)ケーブル タブレットPC用 データ転送 充電対応 1.5m 【PlayStation 4 対応】 TB-AMB15BKがUSBケーブルストアでいつでもお買い得。当日お急ぎ便対象商品は、当日お届け可能です。アマゾン配送商品は、通常配送無料(一部除く)。

Arduino IDE のインストールと設定

Arduino IDEのホームページ(https://www.arduino.cc/)を開いて、メニューの「SOFTWARE」→「DOWNLOADS 」を選択します。

メニューの「SOFTWARE」→「DOWNLOADS 」を選択します

Windows用のファイルを選択してダウンロード、インストールしてください。

Arduino IDEを起動して、プログラムを書き込むボードの機種情報を設定します。

[ファイル->環境設定]を選択して、追加のボードマネージャのURLの枠に↓のURLを設定して、OKボタンを押します。

https://raw.githubusercontent.com/sparkfun/Arduino_Boards/master/IDE_Board_Manager/package_sparkfun_index.json
追加のボードマネージャの設定

メニューの「ツール」→「ボード」→「ボードマネージャー」を選択します。

ボードマネージャーを選択

ボードマネージャーに「spark」と入力すると一覧が表示されるので「SparkFun AVR Boards by SparkFun Electronics」を選択してインストールします。

SparkFun AVR Boards by SparkFun Electronicsをインストール

インストールができたら、「ツール」→「ボード」を選択すると、ボードマネージャーから「SparkFun Pro Micro」を選べるようになります。

ボードマネージャーから「SparkFun Pro Micro」を選べるようになります。

「ツール」→「プロセッサ:ATmega32U4(5V, 16Mhz)」に設定しておきます。
(※通常は5Vだと思うのですが、購入したボードを確認して合わせてください)

プロセッサ:ATmega32U4(5V, 16Mhz)に設定しておきます。

これで対象の機種を「Pro Micro」に設定できました。

メニューの「スケッチ」→「ライブラリをインクルード」→「ライブラリを管理」を選択します。

ライブラリを管理

ライブラリマネージャに「midi」と入力すると一覧が表示されるので、「MIDIUSB」を選択してインストールします。

MIDIUSBのインストール

Arudino USB-MIDIコントローラーのソースコード

現在使っているソースコードです。
入力は18個使えるようにしています。

入力は18個使えるようにしています。

3teneで使うならNOTE NUMBERだけで十分なので、CCはバッサリ削ってあります。
ピンに対応するNOTE NUMBERは、配列内の数字を入れ替えれば対応可能です。
ショートカットに対応するペダルだけ把握しておけばいいので、NOTE NUMBERの値は気にする必要は無いかなと思います。

/*
  USB-MIDI controller for Arduino Leonardo
  Library
  https://github.com/arduino-libraries/MIDIUSB
*/
/* MIDIUSB */
#include "MIDIUSB.h"

void noteOn(byte channel, byte pitch, byte velocity) {
  midiEventPacket_t noteOn = {0x09, 0x90 | channel, pitch, velocity};
  MidiUSB.sendMIDI(noteOn);
}

void noteOff(byte channel, byte pitch, byte velocity) {
  midiEventPacket_t noteOff = {0x08, 0x80 | channel, pitch, velocity};
  MidiUSB.sendMIDI(noteOff);
}

void controlChange(byte channel, byte control, byte value) {
  midiEventPacket_t event = {0x0B, 0xB0 | channel, control, value};
  MidiUSB.sendMIDI(event);
}

int pedalCC = 18; // 使う入力ピン数
int switchPins[] = {1, 0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 16, 14, 15, A0, A1, A2, A3};  // 入力ピン
int btNote[]     = {1, 2, 3, 4, 5, 6, 7, 8, 9,10, 11, 12, 13, 14, 15, 16, 17, 18};  // NOTE NUMBER:入力ピンに対応
int switchStatus[18] = {0};

void setup() {
  Serial.begin(115200); //MIDIUSB
  for (int i = 0; i < pedalCC; i++) {
    pinMode(switchPins[i], INPUT_PULLUP);     // Inputモードでプルアップ抵抗を有効に
    digitalWrite(switchPins[i], HIGH);
  }
  delay(100);
}

void loop() {
  for (int i = 0; i < pedalCC; i++) {
    if (digitalRead(switchPins[i]) == LOW) {  // ボタンが押されていたら、ピンの値はLOW
      if (switchStatus[i] == false) {
        switchStatus[i] = true;
        noteOn(0, btNote[i], 64);    // channel, pitch, velocity
        MidiUSB.flush();
      }
    } else {
      if (switchStatus[i] == true) {
        switchStatus[i] = false;
        noteOff(0, btNote[i], 64);     // channel, pitch, velocity
        MidiUSB.flush();
      }
    }
  }
}

ソースコードの設定とボードへの書込み

スケッチ(sketchxxxx)のタブの中身を全部消しておきます。

スケッチを消しておきます。

ソースコードをコピー&ペーストします。

ソースコードをコピー&ペーストします。

ファイル→名前を付けて保存を選択して一度保存しておきます。

ファイル→名前を付けて保存
ソースコードを保存

Arduino Pro MicroをUSBケーブルにつないでパソコンと接続します。

「ツール」→「シリアルポート」で、接続されたポート番号を確認しておきます。

ポート番号を確認

「スケッチ」→「マイコンボードに書き込む」を選択します。

マイコンボードに書き込む

スケッチ(ソースコード)がコンパイルされた後

コンパイル

マイコンボードに実行ファイルが書き込まれて使える状態になります。

マイコンボードに実行ファイルが書き込まれて使える状態になります。

Roland FC-100 スイッチボードコネクタ番号の対応表

ケーブルは 2セットあります。それぞれ13本の導線が付いています。
ケーブル番号とスイッチの対応表です。リヴィジョンで変わっている可能性もあるので、接続前に大丈夫か確認してください。

MIDI-OXでの動作確認

MIDI-OXホームページ(http://www.midiox.com/)を開いて、Download: MIDI-OX 7.0.2のリンクをクリックするとダウンロードページが表示されます。

MIDI-OXのホームページ

MIDI-OX 7.0.2 (917K 17-JUN-10) Downloadというリンクをクリックすると、midioxse.exeがダウンロードされるのでインストールしてください。

MIDI-OXを起動して、メニューの「Options」→「MIDI Devices」を選択します。

MIDI Devicesウインドウが開いて、「SpeakFun Pro Micro」が表示されていれば認識できていますので、OKを押して閉じてください。

メニューの「View」→「Input Monitor」を選択します。

Pro MicroのボードのGNDとソフトウェアで割り当てた端子をショートさせます。

MIDIのコードがモニタリングされれば成功です。

コメント

  1. 赤ad より:

    leapmotionと組み合わせるにはフッドペダルだと思ってました!

    でも後にAzure Kinect⇒PERCEPTION NEURONとレベルアップしたときに
    足ですらモーションの一部となりコントローラーにまわせなくなるはずと思っています。

    なにかいい解決案があれば教えていただけると有難いです!
    小型で指のかすかな動作でMIDIだせればなぁ~

    iphoneでは驚き、テレ、✖などのアニメ的な表情できないですしね~

    • みくねみくね より:

      コメントありがとうございます!

      (個人的にですが)現状、全身を動かして撮影する場合は、のらきゃっとさん方式になるのかなぁと漠然とですが考えています。
      VR用の機材を使う場合、他の方が沢山ノウハウを出して頂いているのが参考になると思います。

      お役にたてなくて申し訳ありません。