zynaddsubfx

ZynAddSubFX open source synthesizer
Log | Files | Refs | Submodules | LICENSE

commit 542b708ac7f7b5a6d14482a9067a45fb8ffa9250
parent da1a658d77812fc2ac3f45f1ea9a7e07ffa2d361
Author: Johannes Lorenz <j.git@lorenz-ho.me>
Date:   Sun,  2 Mar 2025 12:51:49 +0100

Fix presets of Reverse and Ensemble

Fixes presets of the commits

* Reverse 613658446bf6744a64b4436a744bc4c25af56a3c
* Ensemble aae63c815150bb7cd4535991b42d669404879d24

and adds the respective missing preset tests to SaveOSC.cpp.

Diffstat:
Msrc/Effects/Chorus.cpp | 20+++++++++++---------
Msrc/Effects/Reverse.cpp | 14++++++++------
Msrc/Tests/SaveOSC.cpp | 13+++++++------
3 files changed, 26 insertions(+), 21 deletions(-)

diff --git a/src/Effects/Chorus.cpp b/src/Effects/Chorus.cpp @@ -46,30 +46,32 @@ rtosc::Ports Chorus::ports = { rEnd}, //Pvolume/Ppanning are common - rEffParVol(rDefault(64)), + rEffParVol(rDefaultDepends(preset), rDefault(64), rPreset(10, 127), rPreset(11, 127)), rEffParPan(), rEffPar(Pfreq, 2, rShort("freq"), - rPresets(50, 45, 29, 26, 29, 57, 33, 53, 40, 55), + rPresets(50, 45, 29, 26, 29, 57, 33, 53, 40, 55, 68, 55), "Effect Frequency"), rEffPar(Pfreqrnd, 3, rShort("rand"), rPreset(4, 117) rPreset(6, 34) rPreset(7, 34) rPreset(9, 105) + rPreset(10, 25) rPreset(11, 25) rDefault(0), "Frequency Randomness"), rEffParOpt(PLFOtype, 4, rShort("shape"), rOptions(sine, tri), - rPresets(sine, sine, tri, sine, sine, sine, tri, tri, tri, sine), + rPresets(sine, sine, tri, sine, sine, sine, tri, tri, tri, sine, tri, tri), "LFO Shape"), rEffPar(PStereo, 5, rShort("stereo"), - rPresets(90, 98, 42, 42, 50, 60, 40, 94, 62, 24), "Stereo Mode"), + rPresets(90, 98, 42, 42, 50, 60, 40, 94, 62, 24, 24, 24), "Stereo Mode"), rEffPar(Pdepth, 6, rShort("depth"), - rPresets(40, 56, 97, 115, 115, 23, 35, 35, 12, 39), "LFO Depth"), + rPresets(40, 56, 97, 115, 115, 23, 35, 35, 12, 39, 35, 32), "LFO Depth"), rEffPar(Pdelay, 7, rShort("delay"), - rPresets(85, 90, 95, 18, 9, 3, 3, 3, 19, 19), "Delay"), + rPresets(85, 90, 95, 18, 9, 3, 3, 3, 19, 19, 55, 55), "Delay"), rEffPar(Pfeedback,8, rShort("fb"), - rPresets(64, 64, 90, 90, 31, 62, 109, 54, 97, 17), "Feedback"), + rPresets(64, 64, 90, 90, 31, 62, 109, 54, 97, 17, 64, 80), "Feedback"), rEffPar(Plrcross, 9, rShort("l/r"), rPresets(119, 19, 127, 127, 127), rDefault(0), "Left/Right Crossover"), - rEffParOpt(Pflangemode, 10, rShort("mode"), rDefault(CHORUS),rOptions(CHORUS_MODES), - "Chorus Mode"), + rEffParOpt(Pflangemode, 10, rShort("mode"), rDefault(CHORUS), rOptions(CHORUS_MODES), + rPreset(10, TRIPLE), rPreset(11, DUAL), + "Chorus Mode"), rEffParTF(Poutsub, 11, rShort("sub"), rPreset(4, true), rPreset(7, true), rPreset(9, true), rDefault(false), "Output Subtraction"), diff --git a/src/Effects/Reverse.cpp b/src/Effects/Reverse.cpp @@ -42,17 +42,19 @@ rtosc::Ports Reverse::ports = { d.reply(d.loc, "i", o->Ppreset); rEnd}, rPresetForVolume, - rEffParVol(), + rEffParVol(rDefaultDepends(presetOfVolume), + rPresets(32, 32, 32), + rPresetsAt(16, 64, 64, 64)), rEffParPan(), - rEffPar(Pdelay, 2, rShort("delay"), rDefault(31), + rEffPar(Pdelay, 2, rShort("delay"), rDefault(25), "Length of Reversed Segment"), - rEffParTF(Pstereo,3, rShort("stereo"), + rEffParTF(Pstereo,3, rShort("stereo"), rDefault(false), "Enable Stereo Processing"), rEffPar(Pphase, 4, rShort("phase"), rDefault(64), "Phase offset for Reversed Segment"), - rEffPar(Pcrossfade, 5, rShort("fade"), rDefault(64), rUnit(1/100 s), + rEffPar(Pcrossfade, 5, rShort("fade"), rPresets(32, 16, 50), rUnit(1/100 s), "Cross Fade Time between Reversed Segments"), - rEffParOpt(Psyncmode, 6, rShort("mode"), rDefault(NOTEON), + rEffParOpt(Psyncmode, 6, rShort("mode"), rPresets(NOTEON, NOTEONOFF, AUTO), rOptions(SYNCMODES), "Sync Mode"), }; @@ -61,7 +63,7 @@ rtosc::Ports Reverse::ports = { #undef rObject Reverse::Reverse(EffectParams pars, const AbsTime *time_) - :Effect(pars),Pvolume(50),Pdelay(31),Pphase(64), Pcrossfade(64), PsyncMode(NOTEON), Pstereo(0),time(time_), tick_hist(0) + :Effect(pars),Pvolume(insertion?64:32),Pdelay(25),Pphase(64), Pcrossfade(32), PsyncMode(NOTEON), Pstereo(0),time(time_), tick_hist(0) { float tRef = float(time->time()); reverterL = memory.alloc<Reverter>(&memory, float(Pdelay+1)/128.0f*MAX_REV_DELAY_SECONDS, samplerate, buffersize, tRef, time); diff --git a/src/Tests/SaveOSC.cpp b/src/Tests/SaveOSC.cpp @@ -309,6 +309,7 @@ class SaveOSCTest mw->transmitMsgGui(0, "/insefx6/efftype", "S", "Alienwah"); mw->transmitMsgGui(0, "/insefx7/efftype", "S", "EQ"); mw->transmitMsgGui(0, "/part0/partefx0/efftype", "S", "Chorus"); + mw->transmitMsgGui(0, "/part0/partefx1/efftype", "S", "Reverse"); // use all effects as sys fx (except Chorus, it does not differ) mw->transmitMsgGui(0, "/sysefx0/efftype", "S", "Reverb"); mw->transmitMsgGui(0, "/sysefx1/efftype", "S", "Phaser"); @@ -326,13 +327,13 @@ class SaveOSCTest char partefxstr[] = "/part0/partefx0/preset"; char sysefxstr[] = "/sysefx0/preset"; int npresets_ins[] = {13, 12, 9, 6, 5, 5, 4, 2}; - int npresets_part[] = {10}; - for(; insefxstr[7] < '8'; ++insefxstr[7]) + int npresets_part[] = {12, 3}; + for(; insefxstr[7] < '0' + (char)(sizeof(npresets_ins) / sizeof(npresets_ins[0])); ++insefxstr[7]) if(preset < npresets_ins[insefxstr[7]-'0']) - mw->transmitMsgGui(0, insefxstr, "i", preset); - for(; partefxstr[14] < '1'; ++partefxstr[14]) + mw->transmitMsgGui(0, insefxstr, "i", preset); // "/insefx?/preset ?" + for(; partefxstr[14] < '0' + (char)(sizeof(npresets_part) / sizeof(npresets_part[0])); ++partefxstr[14]) if(preset < npresets_part[partefxstr[14]-'0']) - mw->transmitMsgGui(0, partefxstr, "i", preset); + mw->transmitMsgGui(0, partefxstr, "i", preset); // "/part0/partefx?/preset ?" if(preset == 13) // for presets 13-17, test the up to 5 sysefx { mw->transmitMsgGui(0, "/sysefx0/efftype", "S", "Sympathetic"); @@ -343,7 +344,7 @@ class SaveOSCTest int type_offset = (preset>=13)?4:0; for(; sysefxstr[7] < '4'; ++sysefxstr[7]) if(preset%13 < npresets_ins[sysefxstr[7]-'0'+type_offset]) - mw->transmitMsgGui(0, sysefxstr, "i", preset%13); + mw->transmitMsgGui(0, sysefxstr, "i", preset%13); // "/sysefx?/preset ?" char filename[] = "file0"; filename[4] += preset;