<br><br><div class="gmail_quote">On Fri, Feb 15, 2013 at 10:33 AM, M Donalies <span dir="ltr"><<a href="mailto:ingeniousnebbish@cox.net" target="_blank">ingeniousnebbish@cox.net</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im">On Friday 15 February 2013 11:12:04 Paul Davis wrote:<br>
> JACK does not provide sequencing facilities. It simply transports MIDI<br>
> between ports.<br>
><br>
> > If I wanted to do the sequencing myself, what would be involved?<br>
><br>
> a lot.<br>
<br>
</div>Does that mean:<br>
Don't even think about it unless you're a systems programmer because there's<br>
1000 low-level subtleties involved.<br>
<br>
Or is it just the tedium of turning all the midi events into binary and making<br>
sure all the events are in order to be processed by the target (fluidsynth or<br>
soundcard or whatever)?<br>
<br>
I can handle the latter, but certainly not the former. My idiot-level<br>
algorithm is kind of like writing realtime midi to a port and looks something<br>
like:<br>
1) My app has a buffer of the binary midi data. Jack is running and I've<br>
created a midi out port.<br>
<br>
2) Jack let's me know what time it is through a callback.<br>
<br>
3) To play, I record the current time as my starting time. Then write some<br>
events to the port.<br>
<br>
4) Wait for another callback and write more data.<br>
<br>
Ok, you can stop banging your head on or desk, exclaiming "How does this idiot<br>
even know how to post a message to the list!" I have the feeling this is the<br>
equivalent of the car question, "Now tell me again, why do I have to use this<br>
icky motor oil stuff? Pouring water in the reservoir fills it just the same and<br>
it's far less messy."<br>
<div class="HOEnZb"><div class="h5"><br></div></div></blockquote><div><br>It means that you have to do that tricky 'sequencing' part, which consists of scheduling (MIDI) events and only placing them onto the JACK buffer at the appropriate instant. ALSA MIDI does this for you, as well as providing a nice API for generating the MIDI events. That's not the trickiest part though, the real mess begins when you want to deal with the JACK Transport/Timebase API to follow or generate tempo changes. <br>
 <br></div></div>