Permalink
Browse files

first commit

  • Loading branch information...
0 parents commit e5c05b1a6e2e056b879bfbd7dede002c15f9e6d0 @pantherb committed Jul 12, 2012
Showing with 23,387 additions and 0 deletions.
  1. +5 −0 AUTHORS
  2. +339 −0 COPYING
  3. +15 −0 ChangeLog
  4. +28 −0 Makefile
  5. +84 −0 README
  6. +51 −0 TODO
  7. +34 −0 b_conv/Makefile
  8. +349 −0 b_conv/convolution.cc
  9. +45 −0 b_conv/convolution.h
  10. BIN b_conv/ir/ir_leslie-44100.wav
  11. BIN b_conv/ir/ir_leslie-48000.wav
  12. +17 −0 b_conv/ir/license
  13. +78 −0 b_overdrive/Makefile
  14. +84 −0 b_overdrive/README
  15. +105 −0 b_overdrive/b_overdrive.ttl
  16. +131 −0 b_overdrive/filterTools.c
  17. +31 −0 b_overdrive/filterTools.h
  18. +346 −0 b_overdrive/jboverdrive.c
  19. +191 −0 b_overdrive/lv2.c
  20. +7 −0 b_overdrive/manifest.ttl.in
  21. +57 −0 b_overdrive/overdrive.h
  22. +1,791 −0 b_overdrive/overmaker.c
  23. +62 −0 b_overdrive/overmaker.h
  24. +354 −0 b_overdrive/overmakerdefs.h
  25. +332 −0 b_overdrive/ovt_biased.c
  26. +37 −0 b_overdrive/ovt_biased.h
  27. +137 −0 b_overdrive/ovt_quadratic.c
  28. +45 −0 b_reverb/Makefile
  29. +45 −0 b_reverb/b_reverb.ttl
  30. +135 −0 b_reverb/lv2.c
  31. +7 −0 b_reverb/manifest.ttl.in
  32. +327 −0 b_reverb/reverb.c
  33. +43 −0 b_reverb/reverb.h
  34. +62 −0 b_synth/Makefile
  35. +53 −0 b_synth/b_synth.ttl
  36. +258 −0 b_synth/lv2.c
  37. +7 −0 b_synth/manifest.ttl.in
  38. +43 −0 b_whirl/Makefile
  39. +179 −0 b_whirl/b_whirl-configurable.ttl
  40. +79 −0 b_whirl/b_whirl.ttl
  41. +313 −0 b_whirl/eqcomp.c
  42. +64 −0 b_whirl/eqcomp.h
  43. +217 −0 b_whirl/lv2.c
  44. +7 −0 b_whirl/manifest.ttl.in
  45. +1,311 −0 b_whirl/whirl.c
  46. +61 −0 b_whirl/whirl.h
  47. +208 −0 build-osx.sh
  48. +882 −0 cfg/default.cfg
  49. +86 −0 cfg/fartybass.cfg
  50. +32 −0 cfg/fartybass.sh
  51. +21 −0 cfg/osc-bassy.cfg
  52. +21 −0 cfg/osc-middy.cfg
  53. +16 −0 cfg/osc-noxtalk.cfg
  54. +21 −0 cfg/osc-sawtooth.cfg
  55. +21 −0 cfg/osc-scoop.cfg
  56. +16 −0 cfg/osc-square.cfg
  57. +21 −0 cfg/osc-trebly.cfg
  58. +16 −0 cfg/osc-triangle.cfg
  59. +21 −0 cfg/osc-xwave.cfg
  60. +13 −0 cfg/whirl-mellow.cfg
  61. +13 −0 cfg/whirl-sharp.cfg
  62. +10 −0 cfg/whirl-x100.cfg
  63. +1,826 −0 doc/Doxyfile
  64. BIN doc/dmgbg.png
  65. +73 −0 doc/jboverdrive.1
  66. +148 −0 doc/midi.txt
  67. +16 −0 doc/setBfree-start.1
  68. +672 −0 doc/setBfree.1
  69. BIN doc/setBfree.icns
  70. BIN doc/setBfree.png
  71. +41 −0 doc/vb3kb.1
  72. +479 −0 pgm/default.pgm
  73. +41 −0 pgm/popular.pgm
  74. +128 −0 src/Makefile
  75. +321 −0 src/README
  76. +600 −0 src/cfgParser.c
  77. +95 −0 src/cfgParser.h
  78. +133 −0 src/defaultpgm.h
  79. +718 −0 src/main.c
  80. +59 −0 src/main.h
  81. +1,042 −0 src/midi.c
  82. +74 −0 src/midi.h
  83. +347 −0 src/pgmParser.c
  84. +28 −0 src/pgmParser.h
  85. +1,085 −0 src/program.c
  86. +43 −0 src/program.h
  87. +55 −0 src/setBfree-start.sh
  88. +4,029 −0 src/tonegen.c
  89. +73 −0 src/tonegen.h
  90. +368 −0 src/vibrato.c
  91. +46 −0 src/vibrato.h
  92. +62 −0 vb3kb/Makefile
  93. +179 −0 vb3kb/midi_alsa.c
  94. +214 −0 vb3kb/midi_jack.c
  95. +283 −0 vb3kb/vb3kb.c
  96. +69 −0 vb3kb/vb3kb.h
  97. +656 −0 vb3kb/vb3kb.tcl
@@ -0,0 +1,5 @@
+Fredrik Kilander <fk@dsv.su.se>
+Will Panther <pantherb@setbfree.org>
+Robin Gareus <robin@gareus.org>
+Ken Restivo <ken@restivo.org>
+Takashi Iwai <tiwai@suse.de>
339 COPYING

Large diffs are not rendered by default.

Oops, something went wrong.
@@ -0,0 +1,15 @@
+2012-07-04
+Robin Gareus <robin@gareus.org>, Will Panther <pantherb@setbfree.org>
+
+* imported upstream v0.4.1
+* reorganized and modernized source-tree
+* updated the synth-engine to use float (no longer limited to 16bit/samples)
+* reworked engine to allow arbitrary sample-rates.
+* removed OSS audio/midi interface code
+* made synth-engine and plugins realtime-safe.
+* added JACK-audio, JACK-MIDI and ALSA-Sequencer support
+* separated overdrive, whirl and reverb into standalone modules
+* exposed effects and main synth as LV2 plugin
+* standardized commandline options, help-text, added manual pages.
+* added optional convolution reverb and leslie cabinet emulator
+* added simple GUI for testing based on vkeybd
@@ -0,0 +1,28 @@
+PREFIX ?= /usr/local
+OPTIMIZATIONS?=-msse -msse2 -mfpmath=sse -ffast-math -fomit-frame-pointer -O3 -fno-finite-math-only
+ENABLE_CONVOLUTION ?= no ## set to 'yes' to enable convolution for speaker cabinet emulation - requires IR files.
+VERSION=0.5.0-rc3
+
+export PREFIX
+export VERSION
+export OPTIMIZATIONS
+
+SUBDIRS = b_overdrive b_whirl b_reverb b_conv src b_synth vb3kb
+
+default: all
+
+$(SUBDIRS)::
+ $(MAKE) -C $@ $(MAKECMDGOALS)
+
+all clean install uninstall: $(SUBDIRS)
+
+doc:
+ help2man -N --help-option=-H -n 'DSP tonewheel organ' -o doc/setBfree.1 src/setBfree
+ help2man -N -n 'The B Preamp/Overdrive Emulator' -o doc/jboverdrive.1 b_overdrive/jboverdrive
+ VB3KBTCL=vb3kb/vb3kb.tcl help2man -N -n 'Virtual Organ - setBfree control GUI' \
+ --help-option=--help --version-option=--version --no-discard-stderr -o doc/vb3kb.1 vb3kb/vb3kb
+
+dist:
+ git archive --format=tar --prefix=setbfree-$(VERSION)/ HEAD | gzip -9 > setbfree-$(VERSION).tar.gz
+
+.PHONY: clean all subdirs install uninstall dist doc
84 README
@@ -0,0 +1,84 @@
+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 [http://jackaudio.org] or configure JACK autostart
+ - run `setBfree-start`
+ - connect JACK Audio/MIDI ports (using qjackctl or you favorite JACK
+ connection manager)
+
+About
+-----
+
+setBfree is based on the code of Fredrik Kilander's Beatrix organ emulator. He
+gave permission to Will to use the Beatrix code in a GPL app. Robin Gareus
+changed the OSS based code to a JACK interface and moved the overdrive, reverb,
+and leslie functionality into LV2 plugins. The LV2 plugins allow users to mix
+and match any of the components with any other JACK supported app. Robin also
+added a TCL/TK GUI for testing and added leslie cabinet simulation using Ken
+Restivo's IR sample.
+
+While this works now in its first beta release, we are using this as a starting
+point for building a high quality emulator players familiar with the great
+Hammond organs of the past will enjoy. There will be two major milestones to
+reach this goal. The first is to clean up its first beta functionality
+including improving and cleaning up the current code, and adding a slicker gui
+interface. For the second milestone, we will modify much of the code to make
+the organ more dynamic. A user will be able to adjust to taste from the 'like a
+bird' quality of chill players to the knocking, screaming organ sounds of
+gospel vamps, and rock and roll.
+
+
+Usage
+-----
+
+Run `setBfree -h` for a quick overview. `setBfree --help` will output a
+lengthy list of available options and properties than can be modified.
+
+
+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
+
+see the ChangeLog and git log for details.
+
+
+Compile
+-------
+
+Install the dependencies and simply call `make` followed by `sudo make install`.
+
+* libjack-dev - required - http://jackaudio.org - used for audio I/O
+* libasound2-dev - optional, recommended - ALSA MIDI
+* lv2-dev - optional, recommended - build effects as LV2 plugins
+* tcl-dev, tk-dev - optional, recommended - needed for "vb3kb" virtual Keyboard - GUI wrapper for testing and debugging.
+* libzita-convolver-dev - optional - IR leslie speaker-emulation for the standalone organ app
+* libsndfile1-dev - optional - needed to load IR samples for zita-convolver
+* liblo-dev - optional - http://opensoundcontrol.org - used for standalone preamp/overdrive app.
+* help2man - optional - re-create the man pages
+* doxygen - optional - create source-code annotations
+
+
+If zita-convolver and libsndfile1-dev are available you can use
+ make clean
+ make ENABLE_CONVOLUTION=yes
+to enable a built-in convolution reverb.
+
+
+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/
51 TODO
@@ -0,0 +1,51 @@
+Legend:
+ - TODO
+ + Work started, partially done
+ X completed
+ N invalid, nixed
+
+*** Short Term:
+X add GPL boilerplate to source-files.
+X startup-script: launch simple-GUI and connect things
++ Documentation: update README,.. complete built-in documentation, doxygen comments
+ update application name, ChangLog, License,..
+- Fix broken Inglisch documentation (generated man-pages, built-in doc)
++ clean out remaining (unused) hardcoded setMIDIControllerFunction in ./b_overdrive/overmaker.c
+- check assert() -> must quit (NDEBUG must not be defined!) -- convert assert -> exit
+- envAtkClkM* - key-click , multiply by samplerate
++ built-in documentation: annotate available config-options
+X leslie: allow to bypass completely (horn speaker filter/emulation)
+- leslie: get Coefficients from JoS
+- leslie: check butterworth x-over filter
+
+*** Mid-Term:
+- Logo, web-design
+- add presets for commonly used drawbar MIDI controllers
+- separate src/midi.c -> harware I/O, internal API to tonegen, key-mapping
+- collect sounds-samples
+- update build system - waf, cmake or automake
+- create a website to easily share .cfg files and presets
+- One knob to /dial/ age of the organ (crackle, x-talk, bleeding,..)
+ make background-copy of oscillators[] and list-elements (lep),
+ allow to re-compile terminalMix and playMatrix on the fly
+ and dynamically switch midi assignemts.
+- simply access to commonly used settings.
+- record convolution sample(s) and enable convolution-cabinet emulation by default.
+- resample Impulse Response files on demand
+- leslie: allow to toggle bypass via MIDI-CC ?
+- setup options for LV2 plugins (pre-runtime static config)
+- leslie LV2 variant: separate audio outputs for horn & drum
+- include a LV2 plugin-host to setBfree jack-app
+ make the main app use LV2 effect plugins
+- write current config and program table to file (resume later)
+ (Note: programs can't change but the referenced program-file may)
+- JACK session support
+- OSX LV2 pkg
+
+*** Later:
+- proper GUI
+- VST/VSTi wrappers
+- MIDI-learn -> dynamic controller mapping
+
+*** Much Later:
+- rewrite in FAUST.grame.fr :)
@@ -0,0 +1,34 @@
+PREFIX ?= /usr/local
+OPTIMIZATIONS ?= -msse -msse2 -mfpmath=sse -ffast-math -fomit-frame-pointer -O3 -fno-finite-math-only
+ENABLE_CONVOLUTION ?= no
+
+sharedir = $(PREFIX)/share/setBfree
+
+IRPATH ?= $(sharedir)/ir
+
+CXXFLAGS = $(OPTIMIZATIONS) -Wall
+CXXFLAGS+= -DIRPATH=\"$(IRPATH)\"
+LOADLIBES = -lm
+
+# nothing to compile here. ../src will call make convolution.o
+targets=
+#targets=convolution.o
+
+all: $(targets)
+
+%.o: %.h ../src/cfgParser.h ../src/midi.h
+
+clean:
+ rm -f *.o
+
+install:
+ifeq ($(ENABLE_CONVOLUTION), yes)
+ install -d $(DESTDIR)$(sharedir)/ir
+ -install -m644 ir/*.wav $(DESTDIR)$(sharedir)/ir
+endif
+
+uninstall:
+ -rmdir $(DESTDIR)$(sharedir)/ir
+ -rmdir $(DESTDIR)$(sharedir)
+
+.PHONY: clean all install uninstall
Oops, something went wrong.

0 comments on commit e5c05b1

Please sign in to comment.