[linux-audio-dev] Re: Synth APIs, pitch control

David Olofson david at olofson.net
Thu Dec 12 16:50:00 UTC 2002


On Thursday 12 December 2002 21.56, nick wrote:
[...]
> My whole idea with it was to make it as simple as possible. Bearing
> in mind that many people have learned MIDI already, it makes sense
> to me to use it. Another cool thing is that you could in theory
> write a sequencer as a plugin for it - since it can output midi
> data as it wishes. Other plugins such as midi arpeggiators could
> easily be written. All the timing is catered for since you know the
> number of frames elapsed in this process_**() call.

Well, it's just that MIDI is rather hairy to deal with when it comes 
to continous pitch, individual control of voices and stuff like that 
- and obviously, 95% of plugin developers refuse to implement any of 
that, as a result. (Look at VST.)

Thus, I think it's a better idea to look at the features we need, and 
then implement a clean, simple API that's actually an *API* - not a 
wire protocol for ultra low bandwidth connections.


> Also I find the whole notion of 'ports' just complicates the whole
> issue - the plugin is simply a piece of DSP code which processes
> buffer(s) of audio data. why is anything more than a pointer needed
> for this?

In fact, a Port is not even a pointer in some cases, but rather an 
abstract object that you refer to using a cookie given to you by the 
plugin. XAP Audio Ports will almost definitely just be pointers, as 
anything else brings a bunch of non-obvious issues and no real 
advantages.

These Ports, Channels, Bays etc we're talking about are either 
abstract objects or init time "metadata". When you actually have your 
plugin instantiated, there are only Event Queues and Audio Ports on 
the API level. Anything else is entirely up to the plugin and host 
designers.


//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