NewsWorksSoftwareTextBioContact
background image

VST module for Jamoma

July 16, 2007

Jamoma_vst_moduleI have finally completed a Jamoma module for hosting VST plug-ins and I’m quite satisfied with the result. We have been discussing this for at least two years. If I had realized earlier how useful it would be I would probably made it long ago.

The patch to the right is fairly simple: An audio source is routed to two vst~ effects as inserts and then signal is output using jmod.output~. If the first plug-in is a VST instrument messages from the MIDI module can be directed to it in order to play.

The plug-in and preset program used can be selected from a pop-up menu and the first parameters of the plug-in can be controlled directly from the module interface. This was inspired by VST interface of the Radial application.

The OSC namespace implementation of plug-in parameters is based on M. Zbyszynski and A. Freed: Control of VST Plug-ins using OSC (Proceedings of ICMC 2005). The VST module use a dynamically created Open Sound Control namespace for parameters so that they all can be accessed remotely using messages such as:

/parameter/DryLevel 0.450
/parameter/DryLevel 0 ramp 2000

The latter one will cause DryLevel to ramp to 0 in 2000 ms. The plug-in and program used as well as current values for all parameters are exposed to the Jamoma system for maintaining states so that the state of the plug-in can be saved using pattrstorage or the Jamoma cuelist system. If I press the Get State button of the cuelist module I get the following for the upper VST module:

# Module /vst1
/vst1/audio/bypass 0
/vst1/audio/enveloppe_follower/1 0
/vst1/audio/enveloppe_follower/2 0
/vst1/audio/gain/midi 155.430
/vst1/audio/meters/freeze 0
/vst1/audio/mix 100.000
/vst1/audio/mute 0
/vst1/parameter/ 0
/vst1/parameter/DryLevel 0.693
/vst1/parameter/FeedbackAmount 1.000
/vst1/parameter/FeedbackDelay 0.136
/vst1/parameter/GrainCrossfade 0.042
/vst1/parameter/GrainDuration 0.053
/vst1/parameter/GrainPeriod 0.041
/vst1/parameter/GrainPitch 0.400
/vst1/parameter/StereoFactor 0.033
/vst1/parameter/WetLevel 0.577
/vst1/ui/freeze 0
/vst1/vst/plug /Library/Audio/Plug-Ins/VST/Pluggo/Rye.vst
/vst1/vst/program Crystal Clone

The above patch ends up being extremely simple but powerful in terms of testing VSTs and prototyping possibilities for sound processing. This is all that is to it:

#P bpatcher 39 97 255 60 0 0 jmod.midiin.mxt 0 /midiin
#P objectname jmod.midiin.mxt
#P bpatcher 39 37 255 60 0 0 jmod.cuelist.mxt 0 /cuelist
#P objectname jmod.cuelist.mxt
#P window setfont “Sans Serif” 9.000
#P window linecount 2
#P message 89 179 70 196617 ; max refresh
#P user ezdac~ 39 179 83 212 0
#P bpatcher 293 529 255 120 0 0 jmod.output~.mxt 0
#P objectname jmod.output~.mxt
#P bpatcher 293 346 255 180 0 0 jmod.vst~.mxt 0 /vst2
#P objectname /vst2
#P bpatcher 293 162 255 180 0 0 jmod.vst~.mxt 0 /vst1
#P objectname /vst1
#P bpatcher 293 37 255 120 0 0 jmod.input~.mxt 0
#P objectname jmod.input~.mxt
#P fasten 7 0 1 0 44 159 298 159
#P connect 0 2 1 2
#P connect 0 1 1 1
#P connect 1 1 2 1
#P connect 1 2 2 2
#P connect 2 2 3 2
#P connect 2 1 3 1
#P window clipboard copycount 8 

The VST module has not made it into the downloadable version of Jamoma yet. To get hold of it as of today you need to use subversion to get the most recent version of Jamoma from the active branch. The Jamoma wiki gives details on how to do this.