wonderingwho
Member
Hi There!
I have a very simple prototype board made up of a MIDI Output circuit (https://www.pjrc.com/teensy/td_libs_MIDI.html) and one Momentary Switch and one Pot. Both these controls are configured to send a simple Control Change (Sustain on/off and Volume).
I am using the "controller" code from https://www.notesandvolts.com/2016/03/arduino-midi-controller-potentiometers.html to handle switch bounce and Pot noise etc, and of course the MIDI library.
All is good, and i can see the expected output (simple controller changes) in my midi monitor software.
All is also good when i plug the MIDI OUT into a Yamaha Reface CP.
However, if i instead plug the MIDI OUT into a DX7 (Mk1) the dreaded MIDI DATA ERROR occurs, and the synth becomes unusable until I remove the MIDI cable.
If I plug the powered up board into the DX7 before turning the DX7 on, the DX7 gets stuck at boot.
This synth is renowned for being rather crap at MIDI, especially handling "large" amounts of data, and other controller manufacturers have implemented "speed controls" to slow down MIDI messages from those controllers (Dtronics DT-7 has a variable control, the PGX7 has a fixed "speed" that works).
If I plug the MIDI OUT from the Teensy into an old Yamaha YMM2 Thru box and then connect the THRU to the IN of the DX7 - hey presto - everything works just great. Controller changes work just fine, seems the THRU box is filtering or throttling or otherwise cleaning up the output. It also seems as if the MIDI library is sending stuff as soon as MIDI.begin() is called. but this (if true) doesn't show up in my MIDI monitor s/w.
Therefore my question is: is there anything i can do either via the MIDI library, or perhaps in my code that can "slow things down" so that I can use this prototype board directly plugged ino the DX7?
Perhaps it is how often I'm checking if the controls have been touched? But wondering if there is some "global" midi tweak I can make to avoid having to throttle things for a particular synth.
The relevant code in the INO file is basically this:
And then the appropriate
for the switch or the Pot.
I have tried a few things already, turning MIDI THRU off, using custom settings for the instance, attempting to lower the baud. None of these seemed to have any effect. I can't be sure i did that correctly:
I have a very simple prototype board made up of a MIDI Output circuit (https://www.pjrc.com/teensy/td_libs_MIDI.html) and one Momentary Switch and one Pot. Both these controls are configured to send a simple Control Change (Sustain on/off and Volume).
I am using the "controller" code from https://www.notesandvolts.com/2016/03/arduino-midi-controller-potentiometers.html to handle switch bounce and Pot noise etc, and of course the MIDI library.
All is good, and i can see the expected output (simple controller changes) in my midi monitor software.
All is also good when i plug the MIDI OUT into a Yamaha Reface CP.
However, if i instead plug the MIDI OUT into a DX7 (Mk1) the dreaded MIDI DATA ERROR occurs, and the synth becomes unusable until I remove the MIDI cable.
If I plug the powered up board into the DX7 before turning the DX7 on, the DX7 gets stuck at boot.
This synth is renowned for being rather crap at MIDI, especially handling "large" amounts of data, and other controller manufacturers have implemented "speed controls" to slow down MIDI messages from those controllers (Dtronics DT-7 has a variable control, the PGX7 has a fixed "speed" that works).
If I plug the MIDI OUT from the Teensy into an old Yamaha YMM2 Thru box and then connect the THRU to the IN of the DX7 - hey presto - everything works just great. Controller changes work just fine, seems the THRU box is filtering or throttling or otherwise cleaning up the output. It also seems as if the MIDI library is sending stuff as soon as MIDI.begin() is called. but this (if true) doesn't show up in my MIDI monitor s/w.
Therefore my question is: is there anything i can do either via the MIDI library, or perhaps in my code that can "slow things down" so that I can use this prototype board directly plugged ino the DX7?
Perhaps it is how often I'm checking if the controls have been touched? But wondering if there is some "global" midi tweak I can make to avoid having to throttle things for a particular synth.
The relevant code in the INO file is basically this:
Code:
MIDI_CREATE_DEFAULT_INSTANCE();
MIDI.begin(MIDI_CHANNEL_OFF);
And then the appropriate
Code:
MIDI.sendControlChange
for the switch or the Pot.
I have tried a few things already, turning MIDI THRU off, using custom settings for the instance, attempting to lower the baud. None of these seemed to have any effect. I can't be sure i did that correctly:
Code:
struct MySettings : public midi::DefaultSettings {
static const long BaudRate = 9600;
};
MIDI_CREATE_CUSTOM_INSTANCE(HardwareSerial, Serial1, MIDI, MySettings);