PreenFM Forum

-it would be great to have a global tuning setting, something like 435 to 448 in the global menu that tunes the preenfm to a reference a. nowadays more and more music is 442.-a preset based midi offset would be great, in the range of -24 to +24 halftones (-+ 2 octaves). this is a feature found on many hardware synths, and would be very handy.

-i added cc3 to the matrix source, easy enough. but i thought it could be nice to have a user_cc value that you can set in the global menu and that will then be available in the modmatrix. that way everybody can define an individual cc for modulation, again very handy. i tried to implement this, but failed :-(

i would attempt the first two, but would need some ideas as to where the midi to frequency is happening in the code, global-tune would just be a constant fractional value added to the midi note.

for preset based midi offset the main question is where to put it in the menu...from there again it would only be an offset added to midinote...

thanks for the heads up. i think i did global tune! have to check tomorrow with the unit. while i was at it, i also tried the midi-offset thing i described. i added another parameterrowengine for the midi offset and it compiles fine. so the ui part should work. i'm not sure how to get a variable from my new entry though. where is for example oscillator->detune (used in Osc.cpp) defined? i don't see how the detune menu affects this variable (or where).

oscillator structure is definied here :https://github.com/Ixox/preenfm2/blob/master/src/synth/Common.h#L324This structure is used in the global Synth param structure :https://github.com/Ixox/preenfm2/blob/master/src/synth/Common.h#L398Then this global structure variable is defined at the instrument level here :https://github.com/Ixox/preenfm2/blob/master/src/synth/Timbre.h#L159(I need to get rid of the space/tab problem, indentation is not nice in github ;) )

Adding a new parameterrowengine is not easy, it will make your memory mapping incompatible with the current presets saved on your USB.I have this problem for a very long time so that's why convertMemoryToParam and convertParamToMemory functions are for :)https://github.com/Ixox/preenfm2/blob/master/src/filesystem/PreenFMFileType.cpp#L252

haha, this seems to be all way over my head... globaltune does not work on the preenfm when i test it now. if i set it to a constant offest value it works. i took a different approach and added a globalTune float variable in osc.cpp and changed the line (and all others that should be affected):

if i set globalTune = 4.0f in the osc init function it works as expected, everything is tuned higher.

however i tried (naively i think) to access the global_tune menu entry (that i defined in menu.h and menu.cpp) like this:

this->synthState->fullState.midiConfigValue[MIDICONFIG_GLOBAL_TUNE] and i did something like this:

globalTune = (4400.0f + (this->synthState->fullState.midiConfigValue[MIDICONFIG_GLOBAL_TUNE] - 50)) / 4400.f (globaltune is defined from 0 to 126 with 50 as 440hz. this should give me 0.1 resolution on the frequency from 435 to 447.6.