SETBFREE(1)
πΈ setBfree β DSP tonewheel organ πΈ
okay bestie, welcome to SETBFREE(1), aka the User Commands corner of the manual, aka the place where we talk about a whole entire software synthesizer. sit down, grab a strawberry π, we're doing this.
β¨ NAME β¨
setBfree β DSP tonewheel organ. that's it, that's the name. iconic. no cap. π
π SYNOPSIS π
setBfree [ OPTIONS ] [ property=value ... ]
like, you give it some options, you give it some property=value pairs, and it sings. π
π¦ DESCRIPTION π¦
setBfree β DSP tonewheel organ. (yes, again, because the manpage said it twice and we do not skip things in this house.)
so like, setBfree is a MIDI-controlled, software synthesizer designed to imitate the sound and properties of the electromechanical organs and sound modification devices that brought world-wide fame to the names and products of Laurens Hammond and Don Leslie. literally the whole vibe. the main character energy of organs. if you know you know. πΉβ¨
π OPTIONS π
-c <filename>,--config <filename>β Load alternate config file over default. bye default, hello your config.-C,--noconfigβ Do not read the default configuration file. the equivalent built-in defaults are still set, so you're not left with nothing, bestie.-d,--dumpccβ Print a list of MIDI-CC mappings on startup. like a little receipt of all your mappings π§Ύ-D,--noCCβ do not load default CC map on startup.-hβ Print short help text. the tl;dr version.-H,--helpβ Print complete help text with parameter list. the full unhinged version, we love her.-l <pgm>β Load a MIDI program-preset at startup (may override previous settings given with-r,-U,..). so like, order matters, she has opinions.-M <filename>,--midnam <filename>β export current controller mapping to.midnamfile.-p <filename>,--program <filename>β Load alternate program file over default.-P,--noprogramβ Do not read the default program file. the built-in programs are cleared as well. so it's giving empty. π-r,--randomizeβ Randomize initial preset (whacky but true). WHACKY BUT TRUE. it's in the manual, I'm not making this up.-U,--upper <drawbar settings>β Specify initial drawbar settings, for the upper manual as 9 digits. e.g.808000000-V,--versionβ Print version information. flex the number, babe. π
π General Information π
okay so this part is important, pay attention, no scrolling past.
The configuration consists of two parts: program (pgm) and config (cfg).
The static configuration of the properties of the instrument is defined in a .cfg file. There is no need to specify a config-file, as all configurable parameters have built-in default values. They can be overridden on startup using 'property=value' pairs or by loading a specific .cfg file. As the name /static implies, the properties can only be set on application start. Yet many of the properties merely define the initial value of settings which can later be modified during playback. The ones which can be dynamically modified are marked with an asterisk (*).
Properties are modified by sending MIDI Control-Commands (CC) to the synth. The mapping of CCs to function can be modified by setting the "midi.controller.{upper|lower|pedal}.<CC>=<function>" property. Function-names are equivalent to property-names. e.g. "midi.controller.upper.22=overdrive.outputgain" assigns the overdrive-gain to MIDI-CC 22 on MIDI-channel 1 (upper). (Note: each function can assigned only once, however MIDI-CC can be re-used and trigger multiple function at the same time.)
The program basically defines shortcuts. Loading a program is usually equivalent to sending a series of CC. Programs are commonly used to define instruments (e.g. draw-bar settings to mimic a flute) or provide scalepoints (e.g. reverb=64). There are a few special commands which are only available by recalling a program (randomize settings, split-manuals, enable overdrive).
Programs are defined in a .pgm file and are fixed after starting the application. They are activated by sending MIDI-program-change messages (also known as presets). MIDI-banks are ignored. So at most 127 programs can be specified.
At startup 'default.cfg' and 'default.pgm' in $XDG_CONFIG_HOME/setBfree/ (default: $HOME/.config/setBfree/) are are evaluated if the files exist, unless '--noconfig' or '--noprogram' options are given. An additional config or program file can be loaded using the '-c' and '-p' option respectively.
Example config: "/usr/share/setBfree/cfg/default.cfg"
Example program: "/usr/share/setBfree/pgm/default.pgm"
π Instrument Properties π
Below is a list of available property-value pairs and their default values. The default value is omitted "(-)" for properties which contain an array of values.
The type identifiers are:
'S': text-string'I': integer'F': float'D': double-precision float
Properties marked with an asterisk (*) are available as MIDI CC functions. When used as CC, the values 0-127 (MIDI data) is mapped to a range of values appropriate to the function. In config-files or on the command-line you must you the type as specified e.g. "osc.temperament=gear60 osc.wiring-crosstalk=0.2"
ποΈ Parameters for 'Main' ποΈ
midi.driverβS("jack") β The midi driver to use,'jack'or'alsa'midi.portβS("") β The midi port(s) to auto-connect to. With alsa it's a single port-name or number, jack accepts regular expressions.jack.connectβS("system:playback_") β Auto connect both audio-ports to a given regular-expression. This setting is ignored if either ofjack.out.{left|right}is specified.jack.out.leftβS("") β Connect left-output to this jack-port (exact name)jack.out.rightβS("") β Connect right-output to this jack-port (exact name)
πΉ Parameters for 'MIDI Parser' πΉ
midi.upper.channelβI(1) β The MIDI channel to use for the upper-manual. range:[1..16]midi.lower.channelβI(2) β The MIDI channel to use for the lower manual. range:[1..16]midi.pedals.channelβI(3) β The MIDI channel to use for the pedals. range:[1..16]midi.controller.resetβI("-") β Clear existing CC mapping for all controllers (if non-zero argument is given). See also-Doption.midi.controller.upper.<cc>βS("-") β Specify a function-name to bind to the given MIDI control-command.<cc>is an integer0..127. Defaults are inmidiPrimeControllerMapping()and can be listed using the'-d'commandline option. See general information.midi.controller.lower.<cc>βS("-") β seemidi.controller.uppermidi.controller.pedals.<cc>βS("-") β seemidi.controller.uppermidi.transposeβI(0) β Global transpose (noteshift) in semitones.midi.upper.transposeβI(0) β Shift/transpose MIDI-notes on upper-manualmidi.lower.transposeβI(0) β Shift/transpose MIDI-notes on lower-manualmidi.pedals.transposeβI(0) β Shift/transpose MIDI-notes on pedalsmidi.upper.transpose.splitβI(0) β Noteshift for upper manual in split modemidi.lower.transpose.splitβI(0) β Noteshift for lower manual in split modemidi.pedals.transpose.splitβI(0) β Noteshift for lower manual in split mode
π§ Parameters for 'MIDI Program Parser' π§
pgm.controller.offsetβI(1) β Compensate for MIDI controllers that number the programs from 1 to 128. Internally we use 0-127, as does MIDI. range:[0,1]
π Parameters for 'Tone Generator' π
this is the big one, the moment, the era. π«Ά
osc.tuningβD(440.0) β Base tuning of the organ.osc.temperamentβS("gear60") β Tuning temperament, gear-ratios/motor-speed. One of:"equal","gear60","gear50"osc.x-precisionβD(0.001) β Wave precision. Maximum allowed error when calculating wave buffer-length for a given frequency (ideal #of samples - discrete #of samples)osc.perc.fastβD(1.0) β Fast percussion decay timeosc.perc.slowβD(4.0) β Slow percussion decay timeosc.perc.normalβD(1.0) β Percussion starting gain of the envelope for normal volume.osc.perc.softβD(0.5012) β Percussion starting gain of the envelope for soft volume.osc.perc.gainβD(11.0) β Basic volume of the percussion signal, applies to both normal and softosc.perc.bus.aβI(3) β range[0..8]osc.perc.bus.bβI(4) β range[0..8]osc.perc.bus.trigβI(8) β range[-1..8]osc.eq.macroβS("chspline") β one of"chspline","peak24","peak46"osc.eq.p1yβD(1.0) β EQ spline parameterosc.eq.r1yβD(0.0) β EQ spline parameterosc.eq.p4yβD(1.0) β EQ spline parameterosc.eq.r4yβD(0.0) β EQ spline parameterosc.eqv.ceilingβD(1.0) β Normalize EQ parameters.osc.eqv.<oscnum>βD(-) βoscnum=[0..127], value:[0..osc.eqv.ceiling]; default values are calculated depending on selectedosc.eq.macroandtone-generator-model.osc.harmonic.<h>βD(-) β specify level of given harmonic number.osc.harmonic.w<w>.f<h>βD(-) βw: number of wheel[0..91],h: harmonic numberosc.terminal.t<t>.w<w>βD(-) βt,w: wheel-number[0..91]osc.taper.k<key>.b<bus>.t<wheel>βD(-) β customize tapering model. Specify level of[key, drawbar, tonewheel].osc.crosstalk.k<key>βS(-) β value colon-separated:"<int:bus>:<int:wheel>:<double:level>"osc.compartment-crosstalkβD(0.01) β Crosstalk between tonewheels in the same compartment. The value refers to the amount of rogue signal picked up.osc.transformer-crosstalkβD(0) β Crosstalk between transformers on the top of the tg.osc.terminalstrip-crosstalkβD(0.01) β Crosstalk between connection on the terminal strip.osc.wiring-crosstalkβD(0.01) β Throttle on the crosstalk distribution model for wiringosc.contribution-floorβD(0.0000158) β Signals weaker than this are not put on the contribution listosc.contribution-minβD(0) β If non-zero, contributing signals have at least this levelosc.attack.click.levelβD(0.5) β Amount of random attenuation applied to a closing bus-oscillator connection.osc.attack.click.maxlengthβD(0.6250) β The maximum length of a key-click noise burst, 100% corresponds to 128 audio-samplesosc.attack.click.minlengthβD(0.1250) β
The minimum length of a key-click noise burst β 100% corresponds to 128 audio-samples. (That was the tail end of a param from before, but now let's keep it moving!) π
osc.release.click.levelβD(0.25) β How much random attenuation gets applied to an opening bus-oscillator. ποΈosc.release.modelβS("linear") β The model used during key-release. One of "click", "cosine", "linear", "shelf". β¨osc.attack.modelβS("click") β The model used during key-attack; one of "click", "cosine", "linear", "shelf". π
π Parameters for 'Vibrato Effect' π
scanner.hzβD(7.25) β Frequency of the vibrato scanner. πscanner.modulation.v1βD(3.0) β Amount of modulation for the vibrato/chorus 1 setting. ποΈscanner.modulation.v2βD(6.0) β Amount of modulation for the vibrato/chorus 2 setting. ποΈscanner.modulation.v3βD(9.0) β Amount of modulation for the vibrato/chorus 3 setting. ποΈ
π₯ Parameters for 'Preamp/Overdrive Effect' π₯
overdrive.inputgainβF*(0.3567) β How much the input signal is scaled as it enters the overdrive effect. The default is pretty hot, but you can try it however you like; range[0..1]. πΆοΈoverdrive.outputgainβF*(0.07873) β How much the signal is scaled as it leaves the overdrive effect. You want this as high as possible without clipping β and you will notice when it clips. Test with a bass-chord on88 8888 000with percussion enabled and full swell, but turn down the amplifier/headphone volume first! Range[0..1]. πxov.ctl_biasedβF*(0.5347) β Bias base; range[0..1]. βοΈxov.ctl_biased_gfbβF*(0.6214) β Global [negative] feedback control; range[0..1]. πoverdrive.characterβF*(-) β An abstraction to setxov.ctl_biased_fbandxov.ctl_biased_fb2. πxov.ctl_biased_fbβF*(0.5821) β This acts kinda like an analogue tone control for bass before the overdrive stage. Unity is around0.6; lower values take away bass and lower the volume, while higher values give more bass and more signal into the overdrive. Must be less than1.0. πΈxov.ctl_biased_fb2βF*(0.999) β Same function asfb1but controls the signal after the overdrive stage. Together they can reduce bass going into the overdrive and then recover it on the other side. Must be less than1.0. ποΈxov.ctl_sagtobiasβF*(0.1880) β Part of an attempt to recreate an artefact called 'power sag'. When a power amplifier is under heavy load, the voltage drops and alters the operating parameters, usually towards more and different kinds of distortion. Thesagfbparameter controls the rate of recovery from the sag effect when the load is lifted. Must be less than1.0. β‘
π Parameters for 'Leslie Cabinet Effect' π
whirl.bypassβI(0) β If set to1, completely bypass the leslie emulation. π«whirl.speed-presetβI(0) β Initial horn and drum speed.0: stopped,1: slow,2: fast. ποΈwhirl.horn.slowrpmβD(40.32) β Target RPM for slow (aka choral) horn speed. π’whirl.horn.fastrpmβD(423.36) β Target RPM for fast (aka tremolo) horn speed. πwhirl.horn.accelerationβD*(0.161) β Time required to accelerate the horn (exponential time constant). β©whirl.horn.decelerationβD*(0.321) β Time required to decelerate the horn (exponential time constant). βͺwhirl.horn.brakeposβD*(0) β Horn stop position. Clockwise position where to stop. (0: free-stop,1.0: front-center). πwhirl.drum.slowrpmβD(36.0) β Target RPM for slow (aka choral) drum speed. π’whirl.drum.fastrpmβD(357.3) β Target RPM for fast (aka tremolo) drum speed. πwhirl.drum.accelerationβD*(4.127) β Time required to accelerate the drum (exponential time constant). β©whirl.drum.decelerationβD*(1.371) β Time required to decelerate the drum (exponential time constant). βͺwhirl.drum.brakeposβD*(0) β Drum stop position. Clockwise position where to stop. (0: free-stop,1.0: front-center). πwhirl.drum.widthβD(0) β Drum stereo width (LV2 only) (-1: left mic,0: stereo,1: right mic). ποΈwhirl.horn.widthβD(0) β Horn stereo width (LV2 only) (-1: left mic,0: stereo,1: right mic). ποΈwhirl.horn.radiusβD(19.2) β Horn radius in centimeter. πwhirl.drum.radiusβD(22.0) β Drum radius in centimeter. πwhirl.mic.distanceβD(42.0) β Distance from mic to origin in centimeters. πwhirl.horn.mic.angleβD(180.0) β Horn Stereo Mic angle. πwhirl.horn.offset.zβD(0.0) β Offset of horn perpendicular to mic to front, in centimeters. βοΈwhirl.horn.offset.xβD(0.0) β Offset of horn towards left mic, in centimeters. βοΈwhirl.horn.levelβD(0.7) β Horn wet-signal volume. πwhirl.horn.leakβD(0.15) β Horn dry-signal signal leakage. π§whirl.drum.filter.typeβI*(8) β This filter separates the signal to be sent to the drum-speaker. It should be a high-shelf filter with negative gain. Filter type:0-8. See "Filter types" below. ποΈwhirl.drum.filter.qβD*(1.6016) β Filter Quality, bandwidth. ποΈwhirl.drum.filter.hzβD*(811.9695) β Filter frequency. πΆwhirl.drum.filter.gainβD*(-38.9291) β Filter gain. πwhirl.horn.filter.a.typeβI*(0) β This is the first of two filters to shape the signal to be sent to the horn-speaker; by default a low-pass filter with negative gain to cut off high frequencies. Filter type:0-8. See "Filter types" below. ποΈwhirl.horn.filter.a.hzβD*(4500) β Filter frequency. πΆwhirl.horn.filter.a.qβD*(2.7456) β Filter quality, bandwidth. ποΈwhirl.horn.filter.a.gainβD*(-30.0) β Filter gain. πwhirl.horn.filter.b.typeβI*(7) β This is the second of two filters to shape the signal to be sent to the horn-speaker; by default a low-shelf filter with negative gain to remove frequencies which are sent to the drum. Filter type:0-8. See "Filter types" below. ποΈwhirl.horn.filter.b.hzβD*(300.0) β Filter frequency. πΆwhirl.horn.filter.b.qβD*(1.0) β Filter Quality, bandwidth. ποΈwhirl.horn.filter.b.gainβD*(-30.0) β Filter gain. π
π Parameters for 'Reverb Effect' π
reverb.wetβD(0.1) β Reverb Wet signal level; range[0..1]. π§reverb.dryβD(0.9) β Reverb Dry signal level; range[0..1]. π΅reverb.inputgainβD(0.1) β Reverb Input Gain. π€reverb.outputgainβD(1.0) β Reverb Output Gain (modifies dry/wet). πreverb.mixβD*(0.1) β Reverb Mix (modifies dry/wet). ποΈ
ποΈ Filter Types (for Leslie) ποΈ
0β LPF low-pass1β HPF high-pass2β BF0 band-pass 03β BF1 band-pass 14β NOT notch5β APF all-pass6β PEQ peaking eq7β LSH low shelf8β HSH high shelf
Note that the gain parameter does not apply to type 0 Low-Pass-Filters.
πΉ Additional MIDI Control-Command Functions πΉ
These properties can not be modified directly, but are meant to be mapped to MIDI-controllers (see "General Information" above) e.g. midi.controller.upper.70=upper.drawbar16.
{upper|lower|pedal}.drawbar<NUM>βI*(-) β where<NUM>is one of[16, 513, 8, 4, 223, 2, 135 , 113, 1]. Set MIDI-Controller IDs to adjust given drawbar. -- The range is inversely mapped to the position of the drawbar, so that fader-like controllers work in reverse, like real drawbars. Note that the MIDI controller values are quantized into0 ... 8to correspond to the nine discrete positions of the original drawbar system:0:8(loudest),1-15:7,16-31:6,32-47:5,48-63:4,64-79:3,80-92:2,96-110:1,111-127:0(off). ποΈrotary.speed-presetβI*(-) β Set horn and drum speed;0: stop,1: slow,2: fast. πrotary.speed-toggleβI*(-) β Togglerotary.speed-presetbetween1/2. πrotary.speed-selectβI*(-) β Low-level access function0..8(3^2combinations)[stop/slow/fast]^[horn|drum]. ποΈswellpedal1βD*(0.7) β Set swell pedal gain. π¦Άswellpedal2βD*(0.7) β Identical toswellpedal1. π¦Άvibrato.knobβI*(0) β<22: vibrato1,<44: chorus1,<66: vibrato2,<88: chorus2,<110vibrato3,>=110: chorus3. ποΈvibrato.routingβI*(0) β<32: off,<64: lower,<96: upper,>=96: both. π£οΈvibrato.upperβI*(0) β<64: off,>=64on. πvibrato.lowerβI*(0) β<64: off,>=64on. πpercussion.enableβI*(0) β<16: off,<63: normal,<112: soft,>=112: off. π₯percussion.decayβI*(0) β<64: fast-decay,>=64slow decay. π₯percussion.harmonicβI*(0) β<64: third harmonic,>=64second harmonic. π΅overdrive.enableβI*(0) β<64: disable overdrive,>=64enable overdrive. πΈ
π EXAMPLES π
setBfree setBfree -p pgm/default.pgm midi.port="a2j:[AV]"
midi.driver=jack setBfree midi.port=129 midi.driver=alsa
jack.connect=jack_rack:in_ setBfree jack.out.left=system:playback_7
jack.out.right=system:playback_8 setBfree -U 868000000
π REPORTING BUGS π
Report bugs at <http://github.com/pantherb/setBfree/issues>.
Website and manual: <http://setbfree.org>
Β©οΈ COPYRIGHT Β©οΈ
Copyright Β© 2008-2018 Robin Gareus <robin@gareus.org> Copyright Β© 2012 Will Panther <pantherb@setbfree.org> Copyright Β© 2010 Ken Restivo <ken@restivo.org> Copyright Β© 2003-2004 Fredrik Kilander <fk@dsv.su.se>
This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
That's the whole vibe, bestie! This is setBfree 0.8.13 from June 2024, and the manual page is SETBFREE(1). Stay slaying! πβ¨π
π¦ where this page comes from
- arch rolling: setbfree-standalone 0.8.17-1 Β· GPL-2.0-or-later
- debian trixie: setbfree 0.8.13+ds-1 Β· GPL-2.0-or-later
- fedora 43: setBfree 0.8.13-5.fc43 Β· GPL-2.0-or-later AND GPL-3.0-or-later AND ISC
- fedora 44: setBfree 0.8.13-6.fc44 Β· GPL-2.0-or-later AND GPL-3.0-or-later AND ISC
- ubuntu questing: setbfree 0.8.13+ds-1
- ubuntu resolute: setbfree 0.8.13+ds-1build1 Β· GPL-2.0-or-later
- ubuntu stonking: setbfree 0.8.15+ds-1 Β· GPL-2.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms