[LAD] making sense of Jack MIDI; or, is this an appropriate use for Jack?
ingeniousnebbish at cox.net
Fri Feb 15 23:41:11 UTC 2013
On Friday 15 February 2013 15:22:20 Paul Davis wrote:
> the JACK API is fully documented. tutorials on basic use of the audio API
> exist. the big difference here is that there are several example blobs of
> source, ranging from the explicitly "example" clients within the JACK
> source code package itself, to the utility clients, and onward up to full
> scale MIDI sequencers such as ardour.
I suppose I've been spoiled by the Qt documentation. There are overviews for
each framework, and each class and method have significant explanatory
documentation, often including a sample of how to use it. The examples are
well-documented, take you by the hand, and walk you through exactly what's
going on at each line (or small group of lines).
I find the Jack documentation much harder to follow. The refman opens with some
broad explanations of what Jack is, then goes on to give short descriptions of
each function and data type. There's no "here's how you use these guys"
sections. Some of the Jack example files are commented and some aren't. There's
also no expanded tutorial that takes you step by step from something
completely trivial to a simple but functional program (e.g. Qt's tutorial,
Scribble, if I recall). I don't mean to denigrate the documentation that's
there, but it's missing something. It's like a bunch of disconnected man
pages. It's okay if you already know how to use it, but it's very hard for the
newbie. The Alsa documentation suffers from this as well. It's kind of like
taking a calculus textbook and jumbling all the pages. You'd have hunt and
peck through this page and that for a very long time before you could
> what could make quite a bit of sense would be a utility JACK client that
> played an SMF file via JACK MIDI. this would be *relatively* simple to do
> (once you figure out what godawful lump of code you plan to use to parse
> SMF) and would be quite instructional for future questions such as yours.
For parsing an SMF, you mean something like code that can convert midi to text
and back again? I've written a couple of converters to do that sort of thing.
In the program, each midi track is a list of events with absolute times.
Merging the tracks together isn't a big deal, so then I'd have a single list
of events with absolute times (in midi ticks). I also have the code to convert
each event to a list of bytes (binary data), since I can write a SMF. And I
have an algorithm to convert absolute ticks to nanoseconds. It's that messy
sequencing stuff that's giving me the trouble.
More information about the Linux-audio-dev