Arudino MEGA用です
ハードウェアシリアルが、1つしかないArduinoでは
ソフトウェアシリアルというやりかたになるので・・・そちらは知りません。
たぶん SoftwareSerial
#include <MIDI.h>
MIDI_CREATE_INSTANCE(HardwareSerial, Serial, midiUSBPC); //TX0/RX0 (TO PC-USB serial)
MIDI_CREATE_INSTANCE(HardwareSerial, Serial1, midiPORT); //TX1/RX1(外部MIDI)
MIDI_CREATE_INSTANCE(HardwareSerial, Serial2, midiPORT_B); //TX2/RX2(外部MIDI)
//=================================================
//MIDIポート A からPCへのへの処理(MIDIポートAに入力があると、ここに飛んでくる)
//=================================================
void handlePORTprocess(byte channel, byte number, byte value)
{
midiUSBPC.sendControlChange(number, value, Channel); //send to TX0
}
//=================================================
//MIDIポート B から PCへの処理(MIDIポートBに入力があると、ここに飛んでくる)
//=================================================
void handlePORT_Bprocess(byte channel, byte number, byte value)
{
midiUSBPC.sendControlChange(number, value, Channel); //send to TX0
}
//=================================================
//PCからMIDIポートへの処理(PCからMIDIデータがくると、ここに飛んでくる)
//=================================================
void handleUSBPCprocess(byte channel, byte number, byte value)
{
midiPORT.sendControlChange(number, value, Channel);// To TX1
midiPORT_B.sendControlChange(number, value, Channel);// to TX2
}
//=================================================
void setup()
{
midiUSBPC.setHandleControlChange(handleUSBPCprocess);
midiUSBPC.begin(MIDI_CHANNEL_OMNI);
midiUSBPC.turnThruOff();//これがないと、入力をスルーして出力してしまう
midiPORT.setHandleControlChange(handlePORTprocess);
midiPORT.begin(MIDI_CHANNEL_OMNI);
midiPORT.turnThruOff();//これがないと、入力をスルーして出力してしまう
midiPORT_B.setHandleControlChange(handlePORT_Bprocess);
midiPORT_B.begin(MIDI_CHANNEL_OMNI);
midiPORT_B.turnThruOff();//これがないと、入力をスルーして出力してしまう
}
void loop()
{
midiPORT.read(); //read RX1
midiPORT_B.read(); //read RX2
midiUSBPC.read(); //reat RX0
}
//この例では、MIDIコントロールチェンジにしか対応していません
x
0 件のコメント:
コメントを投稿