The Jesusonic collection might not be the prettiest of Reaper's plug-ins, but there's more to them than meets the eye.
The JS (or Jesusonic) plug-ins that are included in the standard Reaper installation are often overlooked and are an unknown quantity for a large proportion of the software's user base. This may, in part, be due to the overwhelming range of effects available, the lack of documentation or, most likely, the end user's preference for vibrant graphical user interfaces. But although simple in appearance — controls are typically limited to sliders and boxes giving numerical values — the JS plug-ins provide efficient and often creative processing with minimal CPU usage. Additionally, given that the programming code that underpins the processing is easily accessible and editable within Reaper itself, the user is free to customise the parameters of existing plug-ins to suit their working methods, and even create new plug-ins. This tutorial explores a few interesting effects near the top of the JS plug-in palette and looks at some basic manipulation of the code that's suitable for even the novice programmer.
There are a number of interesting finds in the delay folder, some of which provide creative effect processing. The 'delay_lowres' plug-in, as the name suggests, delays the signal passing through whilst reducing its resolution. This yields progressively more gritty and distorted delays as bit depth is reduced using the resolution slider, and the echoes can be made more dramatic by increasing the gain of the 'upd wet' slider to create higher levels of feedback. With greater degradation of the signal and feedback, the effect output distorts quite readily, so care must be taken to attenuate the 'out wet' control. The default value for both the wet outputs is set to -6dB, and so is too high for my preferred use of the crunchy lower bit-depths with high feedback levels. By peering under the bonnet to perform a simple edit to the code I can change the default value of both the wet and dry outputs.
- Insert the 'delay_lowres' plug-in on a track's effects chain. This can be located by navigating to JS from the plug-in types displayed on the left-hand side of the window that pops up, and looking down the list of effects in the Delay category.
- Press the Edit button on the plug-in window to reveal the programming environment.
- The top section of the code displayed defines parameters for the sliders that the plug-in uses. Look down the list of sliders to find reference to the wet and dry outputs ('out wet' and 'out dry' respectively). The parameters for each slider are defined using the following format:
sliderID:default value<min value,max value,increment size>name (unit)
- Using a combination of arrow and backspace keys, change the default values for the 'out wet' and 'out dry' sliders to -9. Image 1 shows the edited code.
- Save the adjustments and then close the window. The plug-in should show the position of the new default value with a vertical line on the slider's scale. Double-click the slider to send it to the default value.
These changes are written into the script for the plug-in, and so are permanent. If you are at all worried about messing up the code and not being able recover it later, you can simply open the script in an external editor and save it with an alternative filename. This is particularly a good idea when experimenting with more involved programming relating to signal processing, or if you're just plain clumsy:
- Press the Edit button on the plug-in window to open the programming environment. Now click on 'Open in external editor' and the same code should appear on screen in an appropriate text editor.
- Make the desired changes and select 'Save As' from the File menu. Give the effect a new filename without a file extension on the end. Image 2 demonstrates the result of this.
- Close the original plug-in editing environment window without saving and remove the original plug-in from the effects chain. You are now free to add your newly created plug-in to the effects chain by selecting it from the list of JS effects. The code can subsequently be modified further using the programming edit screen with the black background in Reaper.
Another curious plug-in from the JS selection is a variable-length delay, named 'delay_varlength'. This is capable of producing unearthly, pitch-modulated echoes, and once again the 'upd wet' parameter slider is used to add feedback (remember to turn the wet signal down before going crazy with this!). The period slider controls the rate of the pitch modulation, and manipulation of the amplitude (ratio) control makes the effect more pronounced. As with other plug-in formats, all parameters within JS effects can be freely automated using track envelopes.
Often, tried-and-tested production tricks are exactly what is needed to add interest to a track, and the resonant low-pass filter sweep is a prime example. The JS bundle includes a range of filter types, but the two-parameter 'resonantlowpass' plug-in handles the task with minimal processing power, devoid of the bells and whistles you would typically find on a filter plug-in with a fancy GUI. A little tweak to the code works wonders here too, especially when you're applying the effect to drum lines. If you modify the minimum value of the slider (to 180Hz), the kick drum can still be heard when the frequency is swept all the way down, and the default value can be adjusted to 20,000Hz so that the filter doesn't automatically attenuate high frequencies as it is introduced into the effects chain. Screen 3 demonstrates these changes to the code, achieved using the steps outlined above.
In the JS Guitar category, a range of distortion and modulated effects are accessible, and there's an amp simulator called 'amp-model'. Just like the native ReaVerb plug-in (read the two-part feature at /sos/dec11/articles/reaper-notes-1211.htm), this processor makes use of convolution to model sounds. Impulse responses taken from 12 iconic loudspeaker cabs are available, loaded in as WAV files from Reaper's Data folder. The plug-in applies the tonal characteristics of the given amp/speaker cabinet and works especially well when paired with an appropriate distortion placed before it in the effects chain. Screen 4 shows this plug-in used with distort-fuzz. Just as when I searched for free impulse responses to load into ReaVerb, I was able to find a range of guitar-amp impulse responses recorded by enthusiasts and posted to web sites and forums. Any WAV-format impulses found can be copied to the 'amp_models' folder within the Reaper Data folder and then accessed in the plug-in window, although, based on my experiences, you may want to proceed with caution. Many of the downloaded impulse responses I collected caused the effect to peak at extreme volume, so I would suggest starting with the preamp slider set to its lowest level, gradually increasing it when loading in new impulse response files.
Reaper's JS bundle offers a wide range of efficient effects processors that can add interest to productions or perform more mundane functions. Have a sift through and don't let the basic visuals put you off. Delve in and try your hand at modifying the code, too. You may even end up with some new favourite plug-ins.
Cracking The Code
A page on the Cockos web site gives essential information about how the JS plug-in code is constructed, detailing common operators and commands that feed into the signal processing (go to www.reaper.fm/sdk/js/js.php). Those who have dabbled with either VST or AU plug-in programming will find this a breeze in comparison, as much of the 'framework' that surrounds the signal-processing code is already taken care of. In addition, the results are truly platform agnostic and will work on any computer running Reaper. The real simplicity of the system means that new effects can be built by adapting the code of existing ones. This can be achieved by simply opening up the script in a text editor (for example, Text Edit or Notepad), editing the code and then re-saving the effect with a new filename in Reaper's Effects folder. The JS programming language, therefore, represents a good starting point for those who have limited experience of programming and wish to try their hand at creating effects.