Re: Midi sysex request in new thread
Re: Midi sysex request in new thread
- Subject: Re: Midi sysex request in new thread
- From: Doug Wyatt <email@hidden>
- Date: Wed, 15 Dec 2004 10:04:59 -0800
On Dec 15, 2004, at 4:42, Peter Karlsson wrote:
Dear list!
I have a little problem.
When I click a button, the code under that button starts a new thread.
In
that thread I send a midi sysex request message to one of my
synthesizers.
In my MyReadProc I increase a counter every time I receive a sysex midi
byte. This counter is checked for in a while loop in my new thread. And
when the counter have reached the size of the sysex message the while
loop
is finished and the thread exits. That's the idea but...
It does not work so good. I get [MIDISportLike] sending full buffer
messages so it seems that my way of doing this consumes a lot of cpu
power.
not sure what you mean in this last sentence
Can someone please help me to solve this?
Maybe there is a much better way? I must find a way to stop my code
executing until the sysex message is finished. That's the whole
problem.
I'm open for suggestinss
Well the simplest solution would be to sleep in the while loop ...
something like 50 or 100 milliseconds should let you exit quickly when
the message has been received, e.g.:
UInt64 timeout = CAHostTimeBase::GetCurrentTime() + 0.5 *
CAHostTimeBase::GetFrequency();
// 0.5 seconds from now (adjust if necessary for larger sysexes)
bool success = false;
while (true) {
if (gBytesReceived >= bytesExpected) {
success = true;
break;
}
if (CAHostTimeBase::GetCurrentTime() >= timeout) {
success = false;
break;
}
usleep(100000); // microseconds
}
Doug
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Coreaudio-api mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden