「SF BAY MUSIC TECH」さんの「MIDI OX を使って MIDI メッセージを記録する方法」に使用方法があります。
MIDI接続
MIDI Keyboard(Novation Remote 25)からPCに直接USBでPCに接続し、同時にMIDI OUTからUSBオーディオ・インターフェイスのMIDI INに接続しました。PCへは2系統のMIDI入力になります。
MIDI Deviceの設定
MIDI OXの[Option]-[MIDI Devices...]でダイアログが開きます。
認識しているデバイスが表示されるので、[MIDI Inputs:]で[1) ReMOTE]と[2) TASCAM US-144 MKII MIDI]両方を選択しました。
MIDIキーボードで適当に鍵盤を押すと[Monitor - Input]に受信したMIDIメッセージが表示されます。2系統で受信しているので[IN]カラムの値が1と2で同じメッセージが受信されています。
Arduino UnoでMIDIメッセージを表示する。
Arduinoに16行2桁のキャラクタLCD(HD44780互換)を接続して受信したMIDIメッセージを表示させました。フォトカプラを使ったMIDIの受信についていては前回の記事にあります。
ブレッドボード配線図
Arduinoのスケッチ <MIDI_Display_Message.ino>
#include <MIDI.h> #include <LiquidCrystal.h> #define TITLE_STR1 ("MIDI Message ") #define TITLE_STR2 ("20180430 ") // MIDI MIDI_CREATE_DEFAULT_INSTANCE(); // LCD static const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; LiquidCrystal lcd(rs, en, d4, d5, d6, d7); // ----------------------------------------------------------------------------- void printNoteOnOff(const char* type, byte inChannel, byte inNote, byte inVelocity) { lcd.setCursor(0, 1); lcd.print(" "); lcd.setCursor(0, 1); lcd.print(type); lcd.print(' '); lcd.print(inChannel); lcd.print(' '); lcd.print(inNote); lcd.print(' '); lcd.print(inVelocity); } void handleNoteOn(byte inChannel, byte inNote, byte inVelocity) { printNoteOnOff("On", inChannel, inNote, inVelocity); } void handleNoteOff(byte inChannel, byte inNote, byte inVelocity) { printNoteOnOff("Off", inChannel, inNote, inVelocity); } // ----------------------------------------------------------------------------- void setup() { MIDI.setHandleNoteOn(handleNoteOn); MIDI.setHandleNoteOff(handleNoteOff); MIDI.begin(MIDI_CHANNEL_OMNI); lcd.begin(16, 2); lcd.print(TITLE_STR1); lcd.setCursor(0, 1); lcd.print(TITLE_STR2); } void loop() { if (MIDI.read()) { // Display Raw Midi Message byte type = MIDI.getType(); byte channel = MIDI.getChannel(); byte data1 = MIDI.getData1(); byte data2 = MIDI.getData2(); lcd.setCursor(0, 0); lcd.print(" "); lcd.setCursor(0, 0); lcd.print(type, HEX); lcd.print(' '); lcd.print(channel, HEX); lcd.print(' '); lcd.print(data1, HEX); lcd.print(' '); lcd.print(data2, HEX); } }
LCDの1行目は、受信したMIDIメッセージの
Type | Channel | Data1 | Data2を表示。2行目はNoteON、NoteOFFのときのみ
ON/OFF | Channel | Note | Velocityを表示するようにしています。
ちゃんとはチェックしていませんがだいたいのメッセージは拾えているようです。
まずは、NoteON/NoteOFF、PitchBend、Modulation、Control Changeが使えればいいかな~と思っています。
0 件のコメント:
コメントを投稿