[linux-audio-dev] XAP and Event Outputs

David Olofson david at olofson.net
Tue Dec 10 20:10:01 UTC 2002


On Wednesday 11 December 2002 01.44, Paul Davis wrote:
> >See how I handle this in Audiality. Originally, I thought it would
> > be a nice idea to be able to queue events ahead of the current
> > buffer, but it turned out to be a very bad idea for various
> > reasons.
> >
> >And normal plugins don't generate and "output" audio or control
> > data an arbitrary number of buffers ahead. Why should they do
> > that with events?
>
> you are discussing an API that is intended to support
> *instruments*.

And very few instruments understand musical time, and practically 
none *should* think in terms of notes.

Just use time (seconds, audio sample frames,...) and pitch (linear 
pitch, Hz,...), and you'll eliminate the need for instuments to 
understand musical time and scales, without imposing any restrictions 
whatsoever upon them.


> any such API needs to be able to handle the
> following kind of request:
>
>     at bar 13, beat 3, start playing a sound corresponding to note
>        134, and enter a release phase at bar 14, beat 2.

This kind of information is relevant only in sequencers, and a few 
special types of plugins. I don't see why the whole API should be 
made significantly more complex and a lot slower, just to make life 
slightly easier for the few that would ever consider writing a plugin 
that cares about musical time.


> now, if you don't handle this by prequeing events, then that simply
> means that something else has to queue the events and deliver them
> at the right time.

That is the job of a sequencer. The job of the event system is to 
transmit "messages" between ports with sample accurate timing.


> so this devolves into that old question: do you implement
> prequeueing once and make it available to all clients of the API,
> or you do require each one to do it over?

If you don't want sequencers and the few other plugins ("MIDI 
echo"...?) that actually need prequeueing to implement it, throw a 
basic solution for that into the plugin SDK, or perhaps even put a 
"prequeue sequencer" in the host.

This does *not* belong in the actual event system, IMNSHO.


//David Olofson - Programmer, Composer, Open Source Advocate

.- The Return of Audiality! --------------------------------.
| Free/Open Source Audio Engine for use in Games or Studio. |
| RT and off-line synth. Scripting. Sample accurate timing. |
`---------------------------> http://olofson.net/audiality -'
.- M A I A -------------------------------------------------.
|    The Multimedia Application Integration Architecture    |
`----------------------------> http://www.linuxdj.com/maia -'
   --- http://olofson.net --- http://www.reologica.se ---



More information about the Linux-audio-dev mailing list