SuperDirtMixer:
Filter:
SuperDirtMixer/Classes (extension) | Live Coding

SuperDirtMixer
ExtensionExtension

Mixer for SuperDirt to provide mixing presets for TidalCycles. This includes level indicators, gain, pan, reverb and eq settings for every orbit (indiviually).

Description

This is a mixer ui was created for the sound engine SuperDirt https://github.com/musikinformatik/SuperDirt for the TidalCycles http://tidalcycles.org/ programming language. The main motivation of this mixer was to get rid of using a DAW like Ableton in a live coding setup, because the author just used it for mixing a live setup. This mixer helps to realize tonal depth, clean frequency separation, signal compression and a stereo panorama and makes this easily accessible in SuperDirt.. In general this mixer overwrites the default values of the orbits defaultParentEvents. This means i.e. that it allows to change the value for gain from 1.0 to a different value from 0 to 1.5. These defaultParentEvent values will be used until they get overwritten on the TidalCycles side.

For the EQ of an orbit, this plugin is using EQui (https://github.com/muellmusik/EQui). For this it's needed to add some additional values to the defaultParentEvent to store and change the EQui parameters which will be done during the initialisation of this mixer. The eq functionality was added as a global effect to every orbit. This allows you to change the eq parameters for every orbit and still use all the other filter like hpf or lpf.

NOTE: It cannot be excluded that some interfaces will still change or will not be allowed later on. This mixer only works together with SuperDirt and uses environment variables, so they must be allowed.

You need to initialize the SuperDirtMixer in your startup file and then you are able to access the ui at any time in a separate SuperCollider file.

Class Methods

.new

Return a new instance of the SuperDirtMixer.

Arguments:

dirt

The current dirt instance to be used. Usually this is ~dirt.

Instance Methods

.gui

Renders the mixer ui with all the settings you made before.

UI configurations

.disableMasterPeakRMS

This will reset the master audio bus and remove the level indicators from the ui.

.setMasterBus

This will render the level indicator for a master audio bus and enables the stage master section. This represents the sum of what you will here on a stereo hardware output.

Arguments:

masterBus

The recommendation would be to use the output bus that will be used for the stereo hardware output. In most cases this should be simply 0 or can be accessed by Bus.new.

Reverb FX

The default configuration uses the native reverb algorithm with a fix room sz value of 0.95. But there is an alternative variant to use i.e. one instance of a VST reverb plugin across all orbits (see the example section). For tonal depth it is recommended to keep every audio signal in the same simulated room and just add the amount of a wet signal.

.setReverbNativeSize

This method sets the size for every orbit to ensure that the same size value for the native reverb is used.

Arguments:

size

This value determines the size of the native reverb room. The default value is 0.95

.setReverbVariableName

With this method you can switch between the native reverb algorithm and a custom reverb algorithm. If you use the native one, then the value of size that was maybe adjusted by SuperDirtMixer: -setReverbNativeSize will be used. If you use a different mechanism, then room and size will be nullified.

Arguments:

variableName

To use the native reverb effect this value needs to be \room. If you want to use a custom reverb algorithm, then this value need differ. In the custom VST example below, the value \reverb will be used instead.

Communication with TidalCycles

This mixer ui is able to send OSC messages to TidalCycles. This will mainly be used to solo or mute orbits. After the mixer was initialized, it automatically trys to establish a connection on location on the port 6010 (TidalCycles default value).

Preset management

.presetPath

This is the path to the preset folder. The path is always relative to the source code of the SuperDirtMixer. This will be used to load and save presets and displays all the files as available presets in the ui. The default value is "../presets".

Examples

These are a set of examples to change the mixer ui with osc messages from the outside. To use this properly, you need to have the ui open with SuperDirtMixer: -gui.

NOTE: Right now it isn't possible to change the EQ settings from outside.

If you want to solo or mute an orbit, then use the TidalCycles reference about playback controllers: https://tidalcycles.org/docs/configuration/MIDIOSC/osc/#playback-controllers

But the idea in general would be something like this:

This is an example of creating a global fx bus for a VST plugin like the free reverb plugin Supermassive Valhalla (https://valhalladsp.com/shop/reverb/valhalla-supermassive/). You need to install the VSTPlugin exension to use the code below (https://github.com/Spacechild1/vstplugin)