[linux-audio-dev] XAP: Pitch control

David Olofson david at olofson.net
Wed Dec 11 12:08:00 UTC 2002


On Wednesday 11 December 2002 17.17, Steve Harris wrote:
> On Wed, Dec 11, 2002 at 04:25:56 +0100, David Olofson wrote:
> > > (1/12)/note makes more sense because theres /is/ someting very
> > > 12ey about 12tET notes (the clues in the name ;), whereas there
> > > is nothing 12ey about octaves. At all.
> >
> > There is nothing 12ey *at all* about notes if you're into 16t...
> >
> > So, 1.0/note makes sense, (1/12)/note does *not*. :-)
>
> Well I was only talking about 12tET, if youre working in 16tET then
> its 1/16. If your working in a non ET scale then its non trivial,
> but we know that.

It's always <whatever>/note, and it's always trivial. The non-trivial 
stuff goes on in the scale converter plugin.

MIDI pitch is always MIDI pitch, which is 1/note. This is the same 
thing, only you can say

	note pitch 0.5

instead of

	pitch bend range +/-2; pitch bend 2048; note pitch 60

and do that independently for each note without going Universal SysEx 
or one note/channel.

You don't change the value of "1" in the MIDI protocol when using a 
MIDI scale converter. You don't change the value of 1.0 when using a 
scale converter plugin.


> Your piano argument is not really a problem as its the piano
> mechaism that generates the off-notes, that would be done at the
> midi->pitch stage, sureley?

That *is* the scale converter, if you're dealing with a "primitive" 
sampler that cannot implement this properly. But indeed, you may do 
it directly in the sampler as well. (And IMHO, that's the way you 
*should* do it, since, as I suggested, the need for this tuning is 
directly related to the sound of the instrument.)


> By the time it reaches the oscilators
> its allready been shifted.
>
> Maye I'm thinking at a different scope to you, but I view things
> like big complex sequencers as working outside this API, for ont
> thing it will have the same GUI issues as LADSPA.

A sequencer is just something that records and plays back events. A 
kind of event processor. You may integrate it with your host, or you 
may use some sequencer plugin that comes with the SDK, or whatever. 
The API shouldn't rule any of this out, or it will rule out a number 
of interesting plugins, such as phrase sequencers and virtual analog 
sequencers.


The GUI is another issue - which indeed, is something we have to 
consider for all plugins, if we're going anywhere with this API. The 
way I see it, the Control interface should be a sufficient plugin/GUI 
interface, so that all we need is a standard way of connecting 
controls to the external, non-RT applications that GUIs will normally 
be. Whatever comes in should go throgh the host's "preset database", 
so that the host knows the current value of every control at all 
times.

I'm thinking in terms of GUI == non-RT plugin, or rather client to 
the event system. That is, inside a XAP host, you would see GUI as an 
ordinary plugin in the net. Although it's not really physically in 
there; what you see is a gateway plugin that interfaces with the 
non-RT GUI plugin outside.


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