Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
DSP tonewheel organ
Failed to load latest commit information.
b_conv completely initialize configDoc struct - amend 76d7674
b_overdrive update symbol visibility for LV2
b_reverb update symbol visibility for LV2
b_synth allow larger steps in the advanced config
b_whirl allow to use double for IIR filter
cfg fix typo in cfg files
debian update debian packaging
doc remove outdated documentation (use setBfree --dumpcc)
examples updated example
pgm first commit
pugl don't close on Esc by default
src fix saving program file w/random
ui add static, don’t export global vars.
.gitattributes update dist exported files
.gitignore ignore win built files
AUTHORS remove old TCL/TK GUI
COPYING first commit
ChangeLog finalize changelog v0.7.5
Makefile fix dist/export version numerbing
README.md sprinkle some URLs in the readme.
build-deb.sh update dist exported files
common.mak fix dist/export version numerbing
release.sh update release script to push to all remotes
x-lnx-buildstack.sh allow make params for bundles
x-lnx-bundle.sh create separate lv2 zip bundles
x-osx-buildstack.sh allow make params for bundles
x-osx-bundle.sh fix prev commit / zip archive name & remove cruft
x-win-buildstack.sh allow make params for bundles
x-win-bundle.sh create separate lv2 zip bundles

README.md

setBfree

A DSP Tonewheel Organ emulator.

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.

Quick-start

  • start jackd (see http://jackaudio.org, more below)
  • run setBfreeUI for the GUI version
  • run setBfree for the headless commandline application
  • or load the LV2 plugin "setBfree DSP Tonewheel Organ" in your favorite DAW

Usage

Run setBfree -h for a quick overview. setBfree --help will output a lengthy list of available options and properties than can be modified.

setBfree is the synthesizer engine. It responds to MIDI messages (JACK-MIDI or ALSA-sequencer) and outputs audio to JACK. The engine does not have any graphical user interface (GUI). It is usually started from the commandline.

The GUI setBfreeUI is a standalone application that wraps the LV2 plugin. It provides both visual feedback about the current synth state as well as allows to reconfigure and control numerous aspects of the organ.

The organ itself, as well as broken out parts (leslie, reverv, overdrive) are available as LV2 plugins.

Examples:

setBfree midi.driver="alsa" midi.port="129" jack.connect="jack_rack:in_"
setBfree jack.out.left="system:playback_7" jack.out.left="system:playback_8"
setBfreeUI
jalv.gtk http://gareus.org/oss/lv2/b_synth # LV2 in jalv-host

Getting started - standalone app

You'll want reliable, low-latency, real-time audio. Therefore you want JACK. On GNU/Linux we recommend qjackctl to start the jack-audio-server, on OSX jack comes with a GUI called JACK-pilot. On Windows use the Jack Control GUI.

An excellent tutorial to get started with JACK can be found on the libremusicproduction website.

Internal Signal Flow

     +--------+    /-----------\    /--------\
     |        |    |           |    |        |
MIDI | Synth- |    |  Preamp/  |    |        |
--=->|        +--->|           +--->| Reverb +--\
     | Engine |    | Overdrive |    |        |  |
     |        |    |           |    |        |  |
     +--------+    \-----------/    \--------/  |
                                                |
  /---------------------------------------------/
  |
  |  /--------\ Horn L/R  /-----------\
  |  |        +---------->|  Cabinet  +-----*--> Audio-Out Left
  |  |        +---------->| Emulation +--\  |
  \->| Leslie |           \-----------/  |  |
     |        +--------------------------|--/
     |        +--------------------------*-----> Audio-Out Right
     \--------/ Drum L/R

Render diagram with http://ditaa.org/ A pre-rendered image is available in the doc/ folder.

Each of the stages - except the synth-engine itself - can be bypassed. The effects are available as standalone LV2 plugins which provides for creating custom effect chains and use 3rd party effects.

The preamp/overdrive is disabled by default, reverb is set to 30% (unless overridden with reverb.mix, reverb.dry or reverb.wet). Note that a stopped leslie will still modify the sound (horn-speaker characteristics, angle-dependent reflections). Bypassing the leslie (whirl.bypass=1) will mute the drum-output signals and simply copy the incoming audio-signal to the horn L/R outputs. The cabinet-emulation is an experimental convolution engine and bypassed by default.

The LV2-synth includes the first three effects until and including the Leslie. The effects can be triggered via MIDI just as with the standalone JACK application. The cabinet-emulation is not included in the LV2-synth because it depends on impulse-response files which are not shipped with the plugin.

The Vibrato and Chorus effects are built into the synth-engine itself, as are key-click and percussion modes. These features are linked to the tone generation itself and can not be broken-out to standalone effects.

Summary of Changes since Beatrix

  • native JACK application (JACK Audio, JACK or ALSA MIDI in)
  • synth engine: variable sample-rate, floating point (beatrix is 22050 Hz, 16bit only)
  • broken-out effects as LV2 plugins; LV2 wrapper around synth-engine
  • built-in documentation
  • Graphical User Interface, with MIDI-feedback and dynamically bound MIDI-CC
  • state save/restore
  • numerous bug fixes

see the ChangeLog and git log for details.

Compile

Install the dependencies and simply call make followed by sudo make install.

  • libjack-dev - required - JACK is used for audio and MIDI I/O
  • libftgl-dev, libglu1-mesa-dev, ttf-bitstream-vera - optional, recommended - openGL GUI
  • lv2-dev - optional, recommended - LV2 plugins and GUI
  • libzita-convolver-dev - optional - libzita-convolver is used for cabinet-emulation
  • libsndfile1-dev - optional - libsndfile is needed to load IR samples for zita-convolver
  • liblo-dev - optional - OSC used only in standalone preamp/overdrive app.
  • libasound2-dev - optional - ALSA MIDI
  • help2man - optional - re-create the man pages
  • doxygen - optional - create source-code annotations

If zita-convolver and libsndfile1-dev are available one can use

make clean
make ENABLE_CONVOLUTION=yes

to enable additional leslie cabinet simulation. This is an additional optional post-processing step and not related to the leslie doppler and built-in angular-dependent leslie speaker emulation.

The Makefile understands PREFIX and DESTDIR variables:

make clean
make ENABLE_CONVOLUTION=yes PREFIX=/usr
make install ENABLE_CONVOLUTION=yes PREFIX=/usr DESTDIR=mypackage/setbfree/

Packagers: see debian/rules in the git-repository. LDFLAGS can be passed as is, CFLAGS should be specified by overriding the OPTIMIZATIONS variable. The packaging also includes a desktop-file to launch setBfree from the application-menu which is not included in the release.

Thanks

Many thanks to all who contributed ideas, bug-reports, patches and feedback. In Particular (in alphabetical order): Dominique Michel, Fons Adriaensen, Jeremy Jongepier, Julien Claasen and Ken Restivo.

Something went wrong with that request. Please try again.