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