[linux-audio-dev] XAP and Event Outputs

Paul Davis paul at linuxaudiosystems.com
Tue Dec 10 20:42:01 UTC 2002


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

i didn't say anything about notes (which is why i deliberately used a
non-MIDI number to stand for a pitch code of some kind). see below
about musical time.

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

some people don't seem to agree with you about using frequency.

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

i'm sorry, you're simply wrong here. tim's original proposal was for
an API centered around the needs of "instruments", not DSP units. go
take a look at the current set of VSTi's and you'll find lots of them
make some use of the concept of musical time, particular tempo. you
want the LFO to be tempo-synced? you want to delay in the modulation
section to follow the tempo? there are lots of small, but musically
rather important (and certainly pleasant) capabilities that rely on
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.

well, yes, the sequencer can do it, if indeed there *is* a
sequencer. but this is an API we're talking about, and every single
host that decides to use an API like this will end up needing to
prequeue events this way. i consider that wasteful.

i agree with you that adding multiple timebases to an events timestamp
field has an nasty edge of complexity to it. but i also think you will
find that the existing proprietary software world is just beginning to
understand the power of providing "virtual instruments" with access to
a rich and wonderful temporal environment. i am concerned that you
are losing sight of the possibilities in favor of simplicity, and that
it might turn out that allowing events to be timestamped with musical
time allows for more flexibility.

--p




More information about the Linux-audio-dev mailing list