[linux-audio-dev] XAP: Pitch control

Steve Harris S.W.Harris at ecs.soton.ac.uk
Mon Dec 9 17:11:00 UTC 2002


On Mon, Dec 09, 2002 at 09:04:17 +0100, David Olofson wrote:
> There is potentially a "current" scale for each *Channel* of an event 
> generator/processor. (I'm not even sure it's that simple...)

Ok, fine, that doesn't change anything.

> 	* Getting what you actually *need* for the synth. Is
> 	  this something that can be narrowed down to one or
> 	  two formats (frequency and period?), or is it perhaps
> 	  better left to plugins to perform the linear->"value"
> 	  conversion? Is there a point in using a host callback
> 	  to make sure you have linear pitch, if you *still*
> 	  need to convert again, into something else?

Surely this is another argument for using explicit function calls?
 
> 	* How do you manage scales, if they're not handled by
> 	  "normal" plugins? Should all hosts have built-in UIs
> 	  for this? How sophisticated must this be to actually
> 	  be usable?

I was jsut thinking that there would be a scale hint on a control, and the
host could manage it. I would image that some hosts would only support
12tET in which case they dont need to expose it.
 
> Again, that's why 12.0/octave makes sense. It doesn't make a 
> difference technically, but it makes *this* stuff a whole lot easier, 
> since it just "happens" to result in note_pitch and linear_pitch 
> being identical as long as you stick with 12tET.

It makes note steps marinally simpler for 12tET and illogical for other
tunings. I dont see that as a big win. It also ecourages the 12tone way of
thinking, which I dont particularly like (can you tell ;).

I prefer APIs to be culturaly neutral.

> Why make this a special case, when it's actually just another event 
> processor - on that most people will never need to use?

OK, I can concede that providing scale conversion functions is a special
case, but so are conversion plugins and you still havent explained how
your going to implement conversion plugins without host provided
functions.
 
> Unless your LFO or whatever *understands* scales (ie has it's own 
> built-in scale converter, or can actually "think" in non-linear 
> scales), it would *always* see and generate 12.0/octave.
> 
> If you don't like 12.0, scale and use whatever you like internally. 
> It doesn't change anything.

But it does mess up the API.
 
> > What happens when your not using 12 tone? Do you use eg.
> > 5.0 per octave?
> 
> Nothing. You still se, and are expected to send, 12.0/octave.

Right, wouldn't it be less confusing to just always use 1.0. Its just that
one note is 1/(number of notes), rather than 12/(number of notes). I
really, really dont think that any 12tET based programmer is going to be
confused by having to add 1/12 to go up one note!

> > Its what CV
> > synthesisers settled on after a good few years of battling, it just
> > makes everything simpler.
> 
> 1.0 Volt is a nice and handy figure. Easy to remember, and it goes 
> well with SI units when you design analog cirquits. There's nothing 
> magical about the figure as such.

Well, it is /the/ unit, and like you said its easy to remember. Its much
more magical than 12. Conventions are useful things.

Thsi has been a long discussion, so, my position:

	I do like 1.0 per octave, linear pitch
	I dont like "notes" being in the API.

- Steve



More information about the Linux-audio-dev mailing list