[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