MrBlueXav/Dekrispator

Midi implementation and synth controls resolution.

Reggi3 opened this issue · 5 comments

Forgetting 7bit midi for a second, what is the actual resolution of some of the controls? because it's possible to implement much higher resolution using standard midi messages (pitchbend is 14bit in a 3byte message), and higher with sysex, I'm sure some of the functions could really benefit from higher resolution control (master tempo for instance, or finer granularity on filters?).

I also wonder whether it's worth doing the extra maths for functions that don't use the full range of 0-127? if a function is only going to use values between 0-5 for instance?

I'll take a look and see what I can implement on my fork, it would be really useful to have some kind of spec for the synth though if that's possible?

i am planning to keep the subtractive signal flow (osc filter adsr),
leaving as much parameters for midi config as possible. I would like it to
be polyphonic, and keep the latency below 3ms.

Thats the plan i have for my fork. now i am on vacation, and dedicating my
synth time to play on a korg volca keys. in a month i will be back and
start tinkering on it again
On Nov 13, 2014 1:40 PM, "Reggie" notifications@github.com wrote:

Forgetting 7bit midi for a second, what is the actual resolution of some
of the controls? because it's possible to implement much higher resolution
using standard midi messages (pitchbend is 14bit in a 3byte message), and
higher with sysex, I'm sure some of the functions could really benefit from
higher resolution control (master tempo for instance, or finer granularity
on filters?).

I also wonder whether it's worth doing the extra maths for functions that
don't use the full range of 0-127? if a function is only going to use
values between 0-5 for instance?

I'll take a look and see what I can implement on my fork, it would be
really useful to have some kind of spec for the synth though if that's
possible?


Reply to this email directly or view it on GitHub
#3.

This is my first attempt at anything to do with a synth, I don't know much about the terminology yet but I do have a fair bit of recent experience writing code for midi controllers, buttons, encoders, pots, using ccs, nrpns, pitchbend etc.

For instance, instead of having 127 steps from CCs for the filter frequency, you could use 13 bytes of a pitchbend message and get full control from 80hz to 8khz at 1hz per step if you wanted, not as simple to implement on a controller with a fader or a standard pot as you need low noise/higher precision ADCs than the stm32F4 has got and long throw faders/multiturn pots but it's simple on a rotary encoder or a pair of buttons in absolute or relative mode.

It appears that there's a lot of division involved in translating from 0-127 midi data bytes to the values that the synth engine uses, we can actually keep the resolution as high as we like if we use rotary encoders in relative mode instead of potentiometers in absolute mode.

thats the fun of designing synths! its an art making machine, so we have
lots of freedom!

the filter cutoff is always a sensitive control, because of the huge
dynamic range (20~20k). The same happens to osc frequency, but this one is
usually solved with separate controls for octave (coarse) and semitone
(fine).

if the cutoff follows the osc frequency, then it becomes a bit easier.
On Nov 17, 2014 4:08 PM, "Reggie" notifications@github.com wrote:

It appears that there's a lot of division involved in translating from
0-127 midi data bytes to the values that the synth engine uses, we can
actually keep the resolution as high as we like if we use rotary encoders
in relative mode instead of potentiometers in absolute mode.


Reply to this email directly or view it on GitHub
#3 (comment).

it's a bit of a trade off in some respects, you can't do a nice sweep with fine resolution but then you can't totally craft the sound in low-resolution. Yes, I agree on the cutoff tracking something, note etc.

I agree on the fun of making synths, it's nice being able to really tweak the settings through functions I've added.