Hi.
During the past year or so I've been working on a Clojure library which
lets me live code FluidSynth from within a Clojure REPL. I personally use
Emacs with CIDER, but it should work from a plain REPL or any other editor
that supports interactive development.
The project got to a point where I think it is ready to be shown to the
world.
Feature highlights:
- drives an in-process FluidSynth instance through the C API bound into the
JVM via JNR-FFI
- notes can be represented by keywords (:c-3), MIDI note values or scale
degrees
- supports any kind of scale (just give it the list of intervals)
- musical phrases can be encoded with either Clojure data structures or an
equivalent text-based syntax
- musical phrases can be bound to variables for reuse in other phrases
- supports scoped change of scale, mode, root note, octave, semitone
offset, MIDI channel, velocity, note step and duration
- supports live looping (in the sense of Extempore or Sonic Pi)
- the sequencer is pretty generic, it could be used to control anything,
not just musical devices (e.g. it would be possible to play music and
control an OpenGL visualizer via OSC simultaneously from the same patterns)
- there is a tutorial which can be followed in a Clojure-capable editor,
with runnable examples
Note that some Clojure programming knowledge is necessary to make use of
this tool.
The library and the tutorial can be found at
https://github.com/omkamra/cowbells
Merry Christmas,
Balázs Ruzsa (cellux)