Open Source Modular Arranger Plugin Suite

Hello, if this post is inappropriate please remove.

I’m announcing a series of open source Juce plugins, named Topiary, that generate MIDI and together will constitute a kind of modular arranger functionality. I’m targetting Cantabile as a host (not very well known but really awesome for live performances) but the plugins should run in any host (tested in Reaper and Cubase).

2 of these plugins are now ready “for prime time” and can be downloaded - free of course:

Topiary Beatz: a plugin that generates drum patterns and allows live “improvisation” with those patterns. Transitions can be quantized according to transport (locked to measures, beats etc). Can be used for other things than drums (triggering loops/samples for example) - Topiary Beatz has replaced my use of Geist2.

Topiary Presetz: a plugin that allows you to set up 8 “variations” of 12 “mix settings”, and call those up live, at the touch of a button. Quantized to measures, beats etc if needed, and the transition time from one “preset” to another can be set to host transport (measure, beat, whatever). “Mix settings” can be all kinds of things: volume, pan, preset number - basically anything you can control with a Midi CC message.


  • If anyone wants to contribute builds for Macs that would be great!
  • If anyone wants to redo the UI to make it look less 90s that would be awesome! Great student project perhaps?
  • Want to post bug reports or feature requests? Cool!

BTW plugins that generate melodic MIDI phrases coming up shortly.


The reason why I built these plugins is the following: I’m transitioning from a Korg Kronos to VSTs, and I simply could not find plugins that would allow me to do stuff Karma on the Kronos gives me. Longwinded explanation here.

I’m not a C++ programmer and certainly not an audio programmer. I do have 20+ years of raw C under my belt, but these plugins were my first attempt at both C++ and plugin programming. The past 6 months have been fun!

Ergo there are probably 100s of things in the code that can be improved. I have a big to-do list but constructive suggestions are most welcome