Hacking Synplant: Adding New MIDI Controller Hooks

Note: This article was written for Synplant 1.0. It is somewhat obsolete in Synplant 1.2, because Synplant now has a MIDI learn setting for planting a new random seed. However, this article also explains how to MIDI learn "clone selected branch". I do not know if the approach explained here still works in Synplant 1.2, I haven't tried yet. If you try it and it works, let me know!

 

I made a feature request to Sonic Charge to expose more control of their Synplant synthesizer to my MIDI controller. Specifically I wanted to plant a new random seed at the press of a button on my keyboard. Little did I know how quickly I could get this feature.

After the usual "thanks for the feedback, we'll consider this in a future version" response, I later got an email back from Magnus Lindström, the creator of Synplant. He explained:

"In the later phases of the Synplant development I decided to try out some new technologies that enables us to extend and modify the behaviour of Synplant without rebuilding the entire plug-in. There are many limitations to what you can do at the moment, but your particular request is actually fully implementable."

He provided some config files that I simply need to drop into the right place and bam! I have my feature! Serious respect to Magnus for thinking ahead and providing this kind of extensibility.

I took a look at the config files and was able to figure out how to add another MIDI learn function for cloning the selected branch. Now I can control everything I want from my MIDI keyboard. Good stuff.

I couldn't resist sharing this information with other people who want these features. Please use this at your own risk! I'm sure this is not officially supported. It works fine for me, but if you have a typo in the config file it can cause Synplant to malfunction. If you want to mess with the config files and get some strange error message when attempting to Reassign MIDI Controllers, then undo your changes. Worst case you can just delete these files and everything should go back to normal. Ok, consider yourself warned. Here's the deal:

  1. Download these two files: main.cushy and midi.cushy (they are text files but need to have a .cushy extension, so delete the .txt if you browser adds it when downloading)
  2. Copy them to the same folder as your plugin. On OS X that's here: /Library/Audio/Plug-Ins/Components (AU) and /Library/Audio/Plug-Ins/VST/Sonic Charge (VST)

That's it! You need to close and reopen the plugin's GUI window for the changes to take effect. If you Reassign MIDI Controllers there are two new buttons above the seed. The one on the left is to randomize the seed, and the one on the right clones the selected branch (there are tooltips if you forget which is which).

These config files are plaintext and seem fairly understandable, so the adventurous might try other adjustments. Here's a summary of the changes that were made to provide the 2 new MIDI learn features:

In midi.cushy, the following was added:

{
	type: "midiCC"
	label: "ccTriggerD"
	bounds: { 134, 204, 35, 18 }
	font: { film: "MIDILabelCharacters", ascent: 10, advance: 6, charset: "0123456789abcdefg#-?" }
	film: "CCLabelBackgrounds"
	blinkRate: 500
	offset: { 0, -4 }
	align: "center"
	hint: "\"Randomize\" controller no. (click to reset & learn, drag to change)";
}
{
	type: "midiCC"
	label: "ccTriggerG"
	bounds: { 202, 204, 35, 18 }
	font: { film: "MIDILabelCharacters", ascent: 10, advance: 6, charset: "0123456789abcdefg#-?" }
	film: "CCLabelBackgrounds"
	blinkRate: 500
	offset: { 0, -4 }
	align: "center"
	hint: "\"Clone\" controller no. (click to reset & learn, drag to change)";
}

and in main.cushy, the following was added:

{ when: "midiTriggerD", action: ">randomize" },

{ when: "midiTriggerG", action: ">clone" },



Adam Murray, 2009
contact the author...