How do I CC map setBfree whirl.horn.fastrpm and friends

I want to customize the rotary effect on setBfree. I’d like to map the speed and acceleration/deceleration parameters to MIDI-CC and Zynth-control knobs so that I can “dial in” the sound that I am looking for. I am used to using the expression wheel to set the absolute speed of the effect, and just dial it back a little bit if the top speed is too fast for what I want.

Not finding anything in the on-screen menu I tried my hand at making changes to the engine. I modified the zyngine/zynthian_enginge_setbfree.pl and setBfree/midimap.xml and got as far as seeing the desired controls on my screen, but nothing I changed caused a change to the sound.

Does anyone have any suggestions on how to go about getting this to work, or where the limitations are?

Did a little more digging, and got setBfree running under Windows 10. I managed to map my Oxygen25 MIDI controller to it and did some testing.

It seems that the Leslie cabinet parameters cannot be MIDI mapped, and that changing them causes the organ engine to be restarted.

On the bright side, I was able to quickly play notes, and try settings and came up with a .cfg file that I should be able to load onto my zynthian to get the sound I want. Not quite as good as being able to change it on the fly, but good enough use.

The leslie cab for setBfree is available as a separate lv2, you might need to enable it in the webui but it’s possible you could use that instead ans see if it’s mappable.

Hello folks,

Will the whirl speaker XT be available as an LV plugin or inside the mod part, too?
I’d like to set speed parameters for low and fast rpm as well as acceleration.
I used my Neo Instruments Ventilator for Leslie simulation, but the parameters of this are different from the stock rpm and acceleration parameters…

Greetings and God bless, Marius

@mj_prod I created a fork some years ago, where those parameters are mapped as LV2 parameters. Search github for “setBfreak”.

Regards, Holger

2 Likes

Nice work Holger! Any plans to pull to tip of setBfree and add an engine to Zynth? I don’t want to duplicate any effort.

Currently not. But it should be easy, because I have a recipe created (long time ago):

I hope it still works. Perhaps you would like to try? If everything works, perhaps @jofemodo can integrate this version?

Regards, Holger

Hi, sorry to extend this topic somewhat further:
I’d like to have the extended leslie speaker plugin as an effect to use it with pianoteq sounds. I got used to my Neo Instruments Ventilator that had other parameter settings than the normal jalv leslie plugin as follows:

Speed: SLOW
Bass 0,61Hz – 0,91Hz (0,76Hz)
Horn 0,64Hz – 0,96Hz (0,8Hz)
Speed: FAST
Bass 5,2Hz – 7,8Hz (6,5Hz)
Horn 5,44 – 8,16Hz (6,8Hz)

Acceleration: SLOW > FAST
Bass 4,2sec - 8sec (5,5sec)
Horn 0,5sec – 2sec (1sec)
Acceleration: FAST > SLOW
Bass 4,2sec – 8sec (5,5sec)
Horn 0,8sec – 3,2sec (1,6sec)

Can I alter these parameters that are part of the xt version yet?

Greetings and God bless, Marius

As I wrote: I made the plugin extensions more than 2 years ago and I am old…: I can’t remember all the details of what I put in there. :joy:

I think all mentioned parameters are implemented in the sep. rotary plugin.

Just give it a try :slight_smile: Currently I don’t have any free time for this…

1 Like

Don’t think it’s working. I cloned it to /zynthian/zynthian-recipe and then ran the script and got a compilation error

make[1]: Entering directory '/home/pi/zynthian-sw/plugins/setBfreak/setBfreak_whirl' Version: 0.8.4-33 -> 0 8 4 33 LV2 Version: 2057 67 g++ -ffast-math -fomit-frame-pointer -O3 -fno-finite-math-only -Wall -fPIC -DVERSION="\"0.8.4-33\"" -DHAVE_LV2_1_8 -DHAVE_MEMSTREAM pkg-config --cflags lv2-fv isibility=hidden -DRTK_STATIC_INIT -I. -I.. -Wno-unused-function -DHAVE_IDLE_IFACEpkg-config --cflags cairo pango glu gl \ -DUINQHACK="15723148643082" \ -DPLUGIN_SOURCE="\"gui/setBfreak_whirl.c\"" \ -o setBfreak_whirlUI_gl.so /home/pi/zynthian-sw/plugins/setBfreak/robtk/ui_gl.c \ ../pugl/pugl_x11.c \ \ -shared -Wl,-Bstatic -Wl,-Bdynamic -lX11pkg-config --libs cairo pango pangocairo glu gl /home/pi/zynthian-sw/plugins/setBfreak/robtk/ui_gl.c:298:23: fatal error: gui/setBfreak_whirl.c: No such file or directory #include PLUGIN_SOURCE ^ compilation terminated.

Thanks @smiths73v3.

I will take a look at this… Ummpf… much more difficult than I thought.

Currently you can’t map all the parameters to MIDI CC, but you can set the values in the config file quite easily.

Simply take a look to the default config at:

/zynthian/config/setbfree/cfg/default.cfg

For instance, for the leslie you have:

################################################################
##
## Rotary speaker simulator
##
################################################################
##
## The slow rotation speed of the horn in revolutions per minute. 
##
#whirl.horn.slowrpm=40.32
##
##
## The fast rotation speed of the horn in revolutions per minute. 
##
#whirl.horn.fastrpm=423.36
##
##
## The spool-up rate of the horn; time constant - seconds
## Time required to accelerate reduced by a factor exp(1) = 2.718..
##
#whirl.horn.acceleration=0.161
##
##
## The spool-down rate of the horn; time constant - seconds
## Time required to decelerate reduced by a factor exp(1) = 2.718..
##
#whirl.horn.deceleration=0.321
##
##
## The slow rotation speed of the drum in revolutions per minute. 
##
#whirl.drum.slowrpm=36.0
##
##
## The fast rotation speed of the drum in revolutions per minute. 
##
#whirl.drum.fastrpm=357.3
##
##
## The spool-up rate of the drum; time constant - seconds
## Time required to accelerate reduced by a factor exp(1) = 2.718..
##
#whirl.drum.acceleration=4.127
##
##
## The spool-down rate of the drum; time constant - seconds
## Time required to decelerate reduced by a factor exp(1) = 2.718..
##
#whirl.drum.deceleration=1.371
##
##
## The radius of the horn in centimeters (1 cm = 2.54 inches).
##
#whirl.horn.radius=17.0
##
##
## The radius of the drum in centimeters.
##
#whirl.drum.radius=22.0
##
##
## The volume at which the horn is mixed in with the drum sound.
##
#whirl.horn.level=0.7
##
##
## The fraction of the horn level that leaks off the base of the horn.
## It is band-pass filtered, but not subjected to Doppler effect or delay.
## The value is multiplied by whirl.horn.level before it is applied.
##
#whirl.horn.leak=0.15
##
##
## The drum low-pass IIR filter specification (see eqcomp.h).
## This is a actually a high-shelf filter with negative gain in the
## passband.
##
#whirl.drum.filter.type=8
#whirl.drum.filter.hz=811.9695
#whirl.drum.filter.q=1.6016
#whirl.drum.filter.gain=-38.9291
##
##
## The horn filter is implemented with two IIR filters followed by
## two comb filters with feedback. The IIR filters give the basic band-pass
## shape of the driver and horn, while the comb filters break up the
## frequency response and gives some characteristic resonance of the
## physical system. The IIR filters are not in band-pass configuration,
## but consists of a low-pass stage followed by a low-shelf with negative
## gain. The band-pass response is created where the two filters overlap.
##
## The a horn IIR filter specification (see eqcomp.h). Note that the gain
## parameter does not apply to type 0.
##
#whirl.horn.filter.a.type=0
#whirl.horn.filter.a.hz=4500.0
#whirl.horn.filter.a.q=2.7456
#whirl.horn.filter.a.gain=-30.0
##
##
## The b horn IIR filter specification (see eqcomp.h). 
##
#whirl.horn.filter.b.type=7
#whirl.horn.filter.b.hz=300.0
#whirl.horn.filter.b.q=1.0
#whirl.horn.filter.b.gain=-30.0
##
##
## The a horn comb filter. The delay unit is integer nof samples.
##
#whirl.horn.comb.a.feedback=-0.55
#whirl.horn.comb.a.delay=38
##
##
## The b horn comb filter.
##
#whirl.horn.comb.b.feedback=-0.3508
#whirl.horn.comb.b.delay=120

But don’t modify this file directly because it will be overwritten when updating! Instead it’s a lot better to put your changes on this file:

/zynthian/config/setbfree/cfg/zynthian.cfg

that will be kept when updating.

Regarding what parameters can be assigned to MIDI-CC, you should take a look to the source code:

As you can see, there are a bunch of them, including whirl acceleration/deceleration, but not maximum speeds.

If you assign new paramters to MIDI-CC, you should customize the engine code too for having the new controllers in the UI. In such a case, please, make a pull request and i will merge your changes in the master branch.

Regards,

2 Likes

Yeah @C0d3man, I took a crack at trying to solve the error, but it was a makefile mess. Thanks.

The Leslie effect from setBfree also exists as a standalone LV2, perhaps this would be easier? Source is free: https://x42-plugins.com/x42/x42-whirl

1 Like

It’s already installed on zynthian images. Just enable the plugin from the webconf!

Regards!

1 Like

I’ve enabled x42, and it does allow one to control the accel and rpm parameters like I would like to. I’m having trouble getting the footpedal, or modwheel to set “speed” like the normal setBfree allows for. I “unmapped” those CC’s from setBfree, and turned off the built-in rotary.
Any suggestions?

Ok, I’m taking another crack at it.

setBfree is launched with the following command line:

/usr/local/bin/setBfree -p /zynthian/zynthian-data/setbfree/pgm/all.pgm -c /zynthian/config/setbfree/.autogen.cfg

I can’t figure out how .autogen.cfg is created. Currently it has the content from /zynthian/config/setbfree/cfg/zynthian.cfg but when I modified zynthian.cfg the changes did not show up.

For now, I’m going to copy zynthian.cfg to …/.autogen.cfg but there is also a .autogen.cfg in the cfg directory.

Don’t touch the autogen.cfg. As the name suggest, it’s an autogenerated file and will be overwriten every time you load the engine.
If you want to add some custom config to setBfree, you have to put it inside “zynthian.cfg” and restart the engine.

1 Like

Ah, I got it now!

Create zynthian.cfg in /zynthian/config/setbfree I was modifying the one in …/cfg/

FYI here’s the contents of mine:

#----------------- Whirl --------------------
# Added by S73V3
# modificaions on top of default config
whirl.horn.acceleration=1.0609999895
whirl.horn.slowrpm=91.8199996948
whirl.horn.fastrpm=333.3599853516
whirl.horn.deceleration=1.1710000038
whirl.drum.acceleration=3.7269999981
whirl.drum.deceleration=2.2709999084
whirl.drum.fastrpm=317.2999877930
whirl.drum.slowrpm=100.0000000000
1 Like

Hi folks,

reviving this thread because I hope to be able to bypass the internal rotary section using the method described here.
As already discussed some times, the goal would be to insert another tube/overdrive plugin and then place the separate x42-whirl plugin after that to have the signal chain in the right order again. Or, hypothetically, use the clean sound (no overdrive, no leslie) and plug into a real mighty Leslie speaker, if one has that standing around in their wardrobe.

I edited
/zynthian/config/setbfree/cfg/zynthian.cfg ,
and threw in stuff like

whirl.bypass=1
reverb.dry=1.0
reverb.wet=0.0
reverb.mix=0.0

… saved the file, inserted a new setbfree layer. Nothing happened. Even restarted the Zynthian. Same result, nothing changed. Is it important in any way which snapshot is loaded? Or maybe the GUI has some own defaults, anything like that?

Tried the same thing on /zynthian/zynthian-data/setbfree/cfg/zynthian_my.cfg , nothing different though.

I am quite sure I am just missing something small, probably stupid. But I can’t guess from the documentation there is. Can anyone give me a hint?

Lots of groove,
Bernhard