On Fri, 13 Dec 2002, David Olofson wrote:
[...valid points...]
How?
It's not the host that sends these events in general; it's
other plugins. The host never touches the events in the normal
case.
Okay. I'm lost here because I don't know what a XAP app would look
like. I only know trackers :).
Well, it's not *that* different. Just think of the different parts of
a tracker (MIDI input, song, pattern, "classic" effects, synth, DSP
effects, audio output) as separate plugins, running under a host that
does pretty much nothing but loading, connecting and running plugins.
The sequencer becomes a plugin, rather than a part of the host, and
you can do the same with I/O and pretty much everything.
My first reaction to reading the above paragraph was "you are insane".
That is a very ambitious plan! Would it really be possible to accomplish
all that with one API...? Is it possible to design it without a divine
intervention...? In the end I fear you may find the host doing a whole lot
more than "pretty much nothing". For instance, the metadata needed to
describe all this could easily get out of hand. No metadata = no UI =
useless API.
If I were me I would keep XAP a low-level block processing API. The idea
of audio ports on the one hand and sample-accurate control events
interleaved in a single queue on the other is ingenious. Add to that voice
allocation and well defined metadata capabilities and we have a backbone
for such a softstudio as you outline above. Then design more APIs on top
of it as needed. Don't let the event aspect fool you into thinking it is
meaningful to make XAP encompass everything.
Summa theologica: dump musical time, note pitch, asynchronous I/O. Use Hz
for pitch.
--
Sami Perttu "Flower chase the sunshine"
Sami.Perttu(a)hiit.fi
http://www.cs.helsinki.fi/u/perttu