I found a problem with MidiInput on Mac OS X.
I wrote following code, that is delived from “StartingPoint” project.
class MainComponent : public Component, public MidiInputCallback
{
private:
public:
//======================================================================
MainComponent()
: Component( T("Main Component") )
{
StringArray mArray = MidiInput::getDevices();
for (int i = 0; i < mArray.size(); ++i) {
MidiInput* pInput = MidiInput::openDevice(i, this);
pInput->start();
}
}
~MainComponent()
{
deleteAllChildren ();
}
virtual void handleIncomingMidiMessage (MidiInput *source, const MidiMessage &message) {}
};
Bulid it and run the app and then receiving long SysEx causes operating system will be frozen for several seconds. The mouse cursor can’t move, MOTU 828 audio output is also frozen at that time. It seems that a kind of deadlock is happen. It doesn’t depend on the size of SysEx but by the timing. (Longer SysEx increases the probability.)
Without running this app, other apps (like MIDI Monitor) can receive SysEx properly. But when runnning this app, other apps also fail to receive SysEx.
My environment is,
Apple PowerBookG4(Latest model) 1.67GHz, 2GB RAM, 100GB HDD
(* Keyboard and TrackPad is connected by USB internally)
Mac OS X 10.4.3
Xcode 2.2
JUCE v1.22
MOTU 828mkII <-> KORG Z1
KORG microKONTROL <-> KORG MS2000
Does anyone can receive SysEx properly?
Best regards,
Masanao Hayashi
Korg Inc.