Mailing Lists: Apple Mailing Lists
Image of Mac OS face in stamp
Re: Midi sysex request in new thread
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Midi sysex request in new thread



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


References: 
 >Midi sysex request in new thread (From: "Peter Karlsson" <email@hidden>)



Visit the Apple Store online or at retail locations.
1-800-MY-APPLE

Contact Apple | Terms of Use | Privacy Policy

Copyright © 2011 Apple Inc. All rights reserved.