Expert Sleepers Oomingmak v1.0.
Copyright © 2009 Expert Sleepers. All rights reserved. This manual, as well as the software described in it, is furnished under licence and may be used or copied only in accordance with the terms of such licence. The content of this manual is furnished for informational use only, is subject to change without notice, and should not be construed as a commitment by Expert Sleepers. Expert Sleepers assumes no responsibility or liability for any errors or inaccuracies that may appear in this document.
Contents Introduction 8 Installation 9 Mac OS X, Audio Unit (AU) Mac OS X, VST Windows (VST) 9 9 9 System Requirements 9 Mac OS X Windows 9 9 Registration 10 Quickstart 11 Factory presets Defaults Down One Octave Down Two Octaves Sync To The Max Auto-Wah PWM-tastic Ring Mod Auto Bassline Try Me On Drums Sweep The Pitch Madness Using Oomingmak 11 11 11 11 11 11 11 12 12 12 12 12 13 Using the controls 13 Knobs Value edit boxes Name/value display 13 13 13 Overview 14 Input Filter 15 H
Envelope Level meters Gain Attack/Release Gate 15 15 15 15 16 Pitch Tracking Display 16 Oscillator 16 Tri Saw Square PWM 16 16 16 16 Pitch Pitch Sweep Sync Osc Filter 17 17 17 17 17 18 Cutoff Q Type 18 18 18 Env Mod 18 Osc Env Trigger Pitch Filter PWM 18 18 19 19 19 Pitch LFO 19 Shape Speed Amount/Fine Filter LFO Shape/Speed Amount PWM LFO Shape/Speed/Amount 19 19 19 19 19 20 20 20
Mix Dry Wet Osc Dry RM Wet RM Preferences 20 20 20 20 20 20 21 OSC Base Port Eye candy Constant redraw Floating tooltip 21 21 21 22 MIDI control 23 OSC Control 24 Received OSC Commands /ping s:returnUrl s:returnPath /set i:param f:value /get i:param s:returnUrl s:returnPath /getAll s:returnUrl s:returnPath /getNumParameters s:returnUrl s:returnPath /isParameterUsed i:param s:returnUrl s:returnPath /getInfo i:param s:returnUrl s:returnPath /registerUpdate i:param s:returnUrl s:returnPath /unregiste
MIDI & OSC Script Functions getParameterID( param ) getParameter( param ) setParameter( param, value ) getParameterMinMax( param ) getParameterUnit( param ) getParameterName( param ) isParameterUsed( param ) getNumParameters() setOthersParameter( id, param, value ) getOthersParameter( id, param ) sendOSC( address, path [, format ] [, values ] ) requestAllNoteOn( function ) requestAllNoteOff( function ) requestAllCC( function ) requestAllNRPN( function ) requestAllProgramChange( function ) requestAllPolyPres
FreeType 38 FTGL 38 libpng 38 zlib 38
Introduction Short version: Oomingmak turns your guitar into an analogue monosynth. Long version: Oomingmak is a pitch- and envelope-tracking (re)synthesis effect. It tracks the pitch and level of the incoming audio and uses them to: • • synthesize an entirely original sound, using classic analogue-style waveforms and subtractive synthesis.
Installation Mac OS X, Audio Unit (AU) The plug-in file is called ExSlOomingmak.component. Simply copy the file to the folder: Library/Audio/Plug-Ins/Components Mac OS X, VST The plug-in file is called ExSlOomingmak.vst. Simply copy the file to the folder: Library/Audio/Plug-Ins/VST Windows (VST) The plug-in file is called oomingmak.dll. Simply copy the file to your VST plug-ins folder. System Requirements Mac OS X Oomingmak requires at least Mac OS X version 10.2.8. Version 10.4 or higher is recommended.
Registration The downloadable version of Oomingmak stops working after 15 minutes every time you use it. To stop this happening, you need to buy a registration. You can buy a registration key online using a credit card or PayPal from the Expert Sleepers Licence Manager application. See here for more information. Note that you need at least version 1.0.13 of the Licence Manager. The e-commerce side of things is handled by eSellerate.
Quickstart For a quick overview of Oomingmak, load up the plug-in in your host application of choice and try out the factory presets, which are listed below. In all cases you will probably need to set up your levels appropriately, as described below in the Envelope section, so that the envelope tracking works optimally. Factory presets Defaults In this preset all parameters are at their default value, and audio is passed through the plug-in unaltered.
Ring Mod A fairly traditional ring modulation effect. The oscillator’s pitch is fixed, rather than tracking the incoming audio, and the ‘Dry RM’ output is selected. However the oscillator’s pitch is modulated slightly by the envelope, making this rather more than a standard ring mod. Auto Bassline The oscillator’s output is used, and fixed to a bass note. The envelope controls the oscillator’s level, and the filter. The result is a simple bassline that takes its rhythm from the incoming audio.
Using Oomingmak Using the controls Knobs Basic use of the knobs is to click on them and drag the mouse up and down. However you can obtain different results by holding keys as follows: • • • Shift : Values change more slowly as you move the mouse. Command1 (Mac OS X)/Alt (Windows) : The knob assumes its default position. Option 2 (Mac OS X)/Control (Windows): The knob assumes integer values only. The exception to the above are knobs which are actually ‘on/off’ buttons.
Overview Here's a block diagram of the 'circuitry' of Oomingmak. It can help to visualise this when understanding the effect of some settings.
Input Filter The input filter section filters the incoming audio before it reaches the pitch tracking section. By removing frequencies outside of the range of interest, the tracking can be made more reliable. Highpass/Lowpass The Highpass and Lowpass controls apply highpass (low frequencies removed) and lowpass (high frequencies removed) filtering, respectively, at the specified frequencies.
more slowly than that of the incoming audio; higher release settings will cause the envelope to fall more slowly than that of the incoming audio. Gate Once the envelope falls below the gate value, it is forced to exactly zero. (This is similar to the operation of a traditional noise gate.) This is useful if your incoming audio is quite noisy, and you don’t want a very low level of synthesised sound leaking out when you’re not actually playing.
Pitch These knobs relate in various ways to the pitch of the Oscillator and ReSynth sections. Pitch Sets the pitch, in semitones, of the Oscillator and ReSynth outputs, relative to the tracked pitch as determined by the tracking section. Sweep Exactly the same as the ‘Pitch’ control except that the knob can take on any value, not just integer values. The two controls are simply added together to determine the total pitch value.
Filter The Filter section applies a state-variable filter to the output of the other sections. Cutoff Controls the filter’s cut-off frequency. Q Controls the filter’s resonance. Type Allows you to smoothly change between the following filter types: • • • • Thru - no filtering Low - lowpass filter Band - bandpass filter High - highpass filter Env Mod This section controls how the envelope affects various other sections.
Pitch Sets the amount by which the Oscillator and ReSynth sections’ pitches are modulated by the envelope. Filter Sets the amount by which the Filter’s cut-off frequency is modulated by the envelope. PWM Sets the amount by which the Oscillator’s square wave’s pulse-width is modulated by the envelope. Pitch LFO This section lets you apply a low frequency modulation to the Oscillator and ReSynth modules’ pitch.
Amount Sets the amount of modulation applied. PWM LFO This section lets you apply a low frequency modulation to the Oscillator’s square wave’s pulse-width. Shape/Speed/Amount As for the Filter LFO, above. Mix This section sets the output levels of the various other sections. Refer to the overview diagram if needed to clarify what these settings control exactly. Dry Sets the level of the unprocessed audio (or the audio filtered by the Input Filter if the Use Filtered For Dry option is set).
Preferences Pressing the ‘Prefs’ button brings up a dialog where various preferences are set. These settings are shared by all instances of Oomingmak, and are not stored with presets. The top section shows the product version. The central section will show your serial number once you’ve bought a registration. OSC Base Port Sets the base port number for OSC. See the section on OSC, below. Eye candy Enables the pretty graphics.
Floating tooltip Causes the parameter name and value display (usually in the top right of the GUI) to be displayed above the mouse pointer.
MIDI control All of Oomingmak’s parameters can be controlled via MIDI CC’s (Continuous Controllers) according to the table below.
OSC Control Oomingmak can be controlled via the Open Sound Control (OSC) protocol. If you’re new to OSC, start by visiting opensoundcontrol.org. Two settings control what port the plug-in uses to listen on for OSC commands. One is the base OSC port, set in the preferences. The second is the OSC Port Offset control. If the port offset is set to something other than ‘Off’, then the two numbers are added together and the result used as the port number. E.g.
replies to 10.0.0.2:7000 with (assuming parameter 14 has the value 64.0) /foo 14 64.0 /getAll s:returnUrl s:returnPath Behaves exactly as if a /get message was received for every parameter. /getNumParameters s:returnUrl s:returnPath Responds by sending a message back to the returnUrl and returnPath with the parameters i:numParameters where ‘numParameters’ is the total number of parameters defined by the plug-in. E.g. /getNumParameters osc.udp://10.0.0.2:7000 “/foo” replies to 10.0.0.
/getAllRegistered Behaves exactly as if every parameter registered for updates with /registerUpdate had changed. A message will be sent for every such parameter. /exec s:func ... Executes the Lua function ‘func’, which is assumed to be defined by the MIDI & OSC scripting system (see below). OSC parameters following ‘func’ are passed through to the Lua function, as can best be managed given the varying limitations of the two.
MIDI & OSC Scripting Preamble It is possible to extend the plug-in’s MIDI & OSC functionality via user-writeable scripts. Indeed, the standard MIDI functionality described above has been re-implemented using such a script, which you can use as reference for your customisations. The language used for the MIDI scripts is Lua. You will find a complete description of the language, and some useful tutorials, at the Lua website: www.lua.
Script locations The plug-in looks for MIDI & OSC scripts in standard locations. Scripts must have the filename extension “.lua”. Mac OS X The plug-in looks for scripts in Library/Application Support/Expert Sleepers/Oomingmak/Scripts Windows The plug-in looks for scripts in C:\Documents and Settings\\Application Data\Expert Sleepers\Oomingmak\Scripts Overriding the default script Normally any scripts that the plug-in finds are run in addition to (and after) the default script (‘midi.
pitch = getParameter( “Pitch” ) pitch = getParameter( paramID_Pitch ) setParameter( param, value ) Sets the value of the plug-in parameter. See the description of getParameter() for the meaning of ‘param’. E.g. setParameter( “Pitch”, 12.0 ) setParameter( paramID_Pitch, 12.0 ) getParameterMinMax( param ) Returns the minimum and maximum values allowable for a plug-in parameter. See the description of getParameter() for the meaning of ‘param’. E.g.
E.g. setOthersParameter( 2, paramID_Pitch, 12.0 ) getOthersParameter( id, param ) As getParameter(), but gets the parameter from another instance of the plug-in. See setOthersParameter() for a fuller explanation. E.g. pitch = getOthersParameter( 2, paramID_Pitch ) sendOSC( address, path [, format ] [, values ] ) Sends an OSC message. ‘values’ is an optional array of data items to be sent with the message.
end requestAllCC( handleCC ) requestAllNRPN( function ) Request that the given function be called in response to any MIDI non-registered parameter number (NRPN) event. E.g. local function handleNRPN( channel, nrpn, value ) -- do stuff end requestAllNRPN( handleNRPN ) requestAllProgramChange( function ) Request that the given function be called in response to any MIDI program change event. E.g.
requestCC( cc, function ) Request that the given function be called in response to the given MIDI continuous controller (CC) event. E.g. local function handleCC( channel, cc, value ) -- do stuff end requestCC( 20, handleCC ) requestNRPN( nrpn, function ) Request that the given function be called in response to the given MIDI non-registered parameter number (NRPN) event. E.g.
requestChannelPressure( function ) Request that the given function be called in response to a MIDI channel pressure (aftertouch) event. E.g. local function handleChannelPressure( channel, value ) -- do stuff end requestChannelPressure( handleChannelPressure ) Pre-defined Global Values The system defines some values before calling your script, which you can use to make the script’s behaviour dependent on, for example, what kind of computer you’re using.
Version History 1.0.0 26/3/2009 • First release.
Contact The Expert Sleepers website is here: http://www.expert-sleepers.co.uk/ Or you can email info@expertsleepers.co.uk Or you can use the forum, which is here: http://www.kvraudio.com/forum/viewforum.
Acknowledgements The software described in this manual makes use of the following open source projects. The author is greatly indebted to them for their efforts and generosity. Below are reproduced the various copyright notices and disclaimers that accompany these software projects, in accordance with their terms of use. Lua Copyright (C) 1994-2008 Lua.org, PUC-Rio.
glew The OpenGL Extension Wrangler Library Copyright (C) 2002-2007, Milan Ikits Copyright (C) 2002-2007, Marcelo E. Magallon Copyright (C) 2002, Lev Povalahev All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. FreeType The FreeType Project is copyright (C) 1996-2000 by David Turner, Robert Wilhelm, and Werner Lemberg.