[linux-audio-dev] XAP status : incomplete draft

David Olofson david at olofson.net
Fri Dec 13 20:50:01 UTC 2002


On Saturday 14 December 2002 00.25, Steve Harris wrote:
> On Fri, Dec 13, 2002 at 11:47:13 +0100, David Olofson wrote:
> > And note that this problem occurs even in a pure 12tET net! You
> > *cannot* mix plugins that thin in notes/scales with linear pitch
> > based plugins in just any order, and there is no way whatsoever
> > the host or users can be informed about that, unless there is a
> > way for plugins to say what they expect, and what they output.
>
> Right, so dont allow plugins to talk notes... I still dont think
> its necceasry, its just programmer convienvence.

It's actually more *user* convenience than programmer convenience. 
Programmers that work with traditional theory will have to work with 
<something>/note regardless, but users won't be able to tell for sure 
which plugins expect or generate what, since it just says "PITCH" 
everywhere. Is that acceptable, or maybe even desirable?

Fine, it works for me, but I'm not sure I know how to explain how 
this works to your average user.


> If you dont have it there cant be any compatibility problems.

How can you avoid compatibility problems by sending two different 
kinds of data, while pretending they are the same?


> > Whether you think of linear pitch as 1.0/octave or (1/12)/note,
> > it's still not explicitly related to a scale, and thus, you're
> > casting one type of data into another, just to be able to squeeze
> > it through the API. That looks like a dirty hack to me.
>
> No, thats right, its not explicity related to a scale, thats what
> makes it so useful.

Useful when you think only in terms of linear pitch, yes. When you do 
anything related to traditional music theory, you'll have to guess 
which note the input pitch is supposed to be, and then you'll have to 
guess what scale is desired for the output.

This works fine if you just assume that everything is 12tET, and then 
convert from 12tET to some other scale.

Again, this is really rather obvious to me (even if the pitch is 
(1/12)/note :-), but it's entirely possible for your average user to 
get the plugins in the wrong order, for weird and totally incorrect 
results.


> > > You can't prove a negative.  I think that it's possible for it
> > > to cause quite big problems, which is why I'm still harping on
> > > about it.
> >
> > I still think *not* having it can cause a great deal of trouble.
> > We're not really getting anywhere...
>
> When?

Whenever you deal with scale/note based plugins. They will either 
have to contain two scale converters, or you'll have to assume that 
PITCH is in some NtET scale for all such plugins. The former seems 
rather hairy to me, and means the *sequencer* has to output linear 
pitch in the correct scale, or the plugins won't understand it. In 
the latter case, you'll need to convert into actual linear pitch when 
you're done.

The latter seems a lot more sensible, but there is still one problem: 
What is that (unofficial) unit that these plugins use for PITCH? How 
is a scale converter supposed to understand it? Is it (1/12)/note, 
regardless of scale? Do 12t scales use (1/12)/note, while other 
scales use other formats? 1.0/note...?

I would suggest (1/12)/note, since then, just not using a scale 
converter means you get 12tET automatically. It has been suggested to 
me that this is a bad idea, but what's the alternative?


> What examples did the VST people give for wanting this?

Nothing more sophisticated than autocomp plugins (rhythm + 
harmonizer, basically) and other plugins based on traditional music 
theory. Things that are relatively easy to implement if you can 
assume that input and output is note based, and disregard tempering 
of the scale, within reasonable limits. They still work with non-ET 
scales, because that translation is done elsewhere. (In the synths - 
but not many of them actually support it, AFAIK... *heh*)


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