MrBlueXav / Dekrispator

Experimental Music synthesizer based on an STM32F4 Discovery board (ARM Cortex M4F from STM32 series) with USB MIDI Host function for interaction and automatic mode.
72 stars 22 forks source link

Midi implementation and synth controls resolution. #3

Open Reggi3 opened 9 years ago

Reggi3 commented 9 years ago

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?

tomassch commented 9 years ago

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 https://github.com/MrBlueXav/Dekrispator/issues/3.

Reggi3 commented 9 years ago

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.

Reggi3 commented 9 years ago

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.

tomassch commented 9 years ago

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 https://github.com/MrBlueXav/Dekrispator/issues/3#issuecomment-63327666.

Reggi3 commented 9 years ago

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.