はじめに
Youtubeに投稿した動画の内容を補足する記事を掲載します。
🖱「同じような事をやってみたいよ」という方がいらっしゃればですが、注意事項です。
作業的には、Arduinoにプログラムを流し込んで、ボードにスイッチの導線をつなぐだけなの内容です。
とは言え、ハードウェアの加工がありますので、間違えてくっつけてしまうと大事なパソコンが故障したり、最悪発火したりする可能性があります。
半田付けでは、火傷しそうになったりしたので、事前に十分調べて、これで大丈夫となってから作業を始めて下さい。
Arduinoのハードウェアについて
HiLetgo Leonardo Pro Micro という製品を使いました。
1個 900円なのですが、
3個セットだと 1180円という、訳が分からない値段になっています。
(同じのを3個は持て余すので、1個のにしました。)
USBケーブルは、microBというタイプでデータ転送(通信)対応のケーブルがあれば大丈夫だと思います。
PCに接続しないと使えないので、ケーブルはある程度の長さが必要だと感じました。
Pro Microじゃないボードのおまけで付いてきたUSBケーブルは長さが全然足りなかったので、USBハブ経由で接続しています。
Arduino IDE のインストールと設定
Arduino IDEのホームページ(https://www.arduino.cc/)を開いて、メニューの「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 Pro Micro」を選べるようになります。
「ツール」→「プロセッサ:ATmega32U4(5V, 16Mhz)」に設定しておきます。
(※通常は5Vだと思うのですが、購入したボードを確認して合わせてください)
これで対象の機種を「Pro Micro」に設定できました。
メニューの「スケッチ」→「ライブラリをインクルード」→「ライブラリを管理」を選択します。
ライブラリマネージャに「midi」と入力すると一覧が表示されるので、「MIDIUSB」を選択してインストールします。
Arudino USB-MIDIコントローラーのソースコード
現在使っているソースコードです。
入力は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 スイッチボードコネクタ番号の対応表
MIDI-OXでの動作確認
MIDI-OXのホームページ(http://www.midiox.com/)を開いて、Download: MIDI-OX 7.0.2のリンクをクリックするとダウンロードページが表示されます。
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のコードがモニタリングされれば成功です。
コメント
leapmotionと組み合わせるにはフッドペダルだと思ってました!
でも後にAzure Kinect⇒PERCEPTION NEURONとレベルアップしたときに
足ですらモーションの一部となりコントローラーにまわせなくなるはずと思っています。
なにかいい解決案があれば教えていただけると有難いです!
小型で指のかすかな動作でMIDIだせればなぁ~
iphoneでは驚き、テレ、✖などのアニメ的な表情できないですしね~
コメントありがとうございます!
(個人的にですが)現状、全身を動かして撮影する場合は、のらきゃっとさん方式になるのかなぁと漠然とですが考えています。
VR用の機材を使う場合、他の方が沢山ノウハウを出して頂いているのが参考になると思います。
お役にたてなくて申し訳ありません。