Unity Audio Prototyping Toolkit
I released this free package to the Unity Asset store. It has everything one needs to prototype their audio DSP ideas inside of Unity. It includes: a delay line, numerous filters, two distortions, a reverb, a tremelo, and an RMS averager.
Open-Source Spatial Suite:
This is a suite of object based spatial tools & algorithms implemented in C++ (with the JUCE SDK), Javascript, and Max/MSP.
It contains:
Create Trajectories - XYZ plugin that sends OSC over a desired port. (Written in the JUCE SDK)
DBAP, VBAP & VBIP algorithms implemented in Javascript.
A max project called Spatial Suite with all of the algorithms setup for use in quad. It also has a position based panning setup.
An implementation of a 2D ambisonic mic encoder/decoder. (For three cardioid microphones)
It contains:
Create Trajectories - XYZ plugin that sends OSC over a desired port. (Written in the JUCE SDK)
DBAP, VBAP & VBIP algorithms implemented in Javascript.
A max project called Spatial Suite with all of the algorithms setup for use in quad. It also has a position based panning setup.
An implementation of a 2D ambisonic mic encoder/decoder. (For three cardioid microphones)
Little Anarchist (VST3):
Little Anarchist is a cascading distortion audio plugin VST programmed in C++ using the JUCE SDK. It utilizes wave-shaping, clip, and soft distortion techniques. Included is a one pole filter that allows the user to choose which part the audio signal they would like to distort.
The Cascade Explained: Each of the gain knobs responds to one of the toggle buttons along the bottom. If one of the toggle buttons is checked, then you can listen to the response of added gain against its corresponding distortion algorithm. These algorithms cascade from top to bottom, so if you decide that you would like soft distortion and wave-shaping distortion (using a sin based wave-shaping algorithm) the wave-shaping algorithm will further distort the pre-distorted soft signal. The Filter Explained: The filter is a simple one-pole filter. You turn it on & off with the toggle button in the top left, adjust the frequency with the dial, and then decide whether you would like a low or a high pass filter with the difference knob. The "Left Over" button adds back in what ever you filter out after the distortion. This way you can distort just the low or high end but keep the original signal intact. |
Equirectangular Projection (C# Code):
In the early summer of 2021 I developed the app 32 Acres. Most of the code was checking arrays of numbers against the user's current location. It was a process of developing and maintaining a tool for other artists. We used the Unity Game Engine and because of this, I coded most of the scripts in C#. One script in particular I think is definitely worth sharing is my "equirectangular distance finder."
Based on simple geographic projection, this script finds the distance between two latitude and longitude values. After testing a number of different ways of doing calculating these distances, I found that this method was the most optimized method. Over small distances (less than 1km) the margin of error is a few centimeters.
With this script we were able to measure distances between two points and generate new points a set distance away. Here's that code snippet:
private bool LocationTest(double TestableLat, double TestableLong, double addlat, double addlong)
{
//Generate added distances
addlat = LatLongConversionCalculator.PythagoreanΔLatProjInverse(addlat, TestableLat);
addlong = LatLongConversionCalculator.PythagoreanΔLoniProjInverse(addlong, TestableLat, TestableLong);
//grab the current latitude/longitude from the dataTest ScriptableObj
double Lat = locations.Latitude;
double Long = locations.Longitude;
//set the checkable ranges
double Latitudemin = TestableLat - basicLatRange - addlat;
double Latitudemax = TestableLat + basicLatRange + addlat;
double Longitudemin = TestableLong - basicLongRange - addlong;
double Longitudemax = TestableLong + basicLongRange + addlong;
//if we are in the ranges playback the audio
if (Lat >= Latitudemin && Lat <= Latitudemax && Long >= Longitudemin && Long <= Longitudemax)
return true;
else
return false;
}
I've also included the static class to the equirectangular distance finder below. For more reading and other example scripts this website is a great resource: https://www.movable-type.co.uk/
Based on simple geographic projection, this script finds the distance between two latitude and longitude values. After testing a number of different ways of doing calculating these distances, I found that this method was the most optimized method. Over small distances (less than 1km) the margin of error is a few centimeters.
With this script we were able to measure distances between two points and generate new points a set distance away. Here's that code snippet:
private bool LocationTest(double TestableLat, double TestableLong, double addlat, double addlong)
{
//Generate added distances
addlat = LatLongConversionCalculator.PythagoreanΔLatProjInverse(addlat, TestableLat);
addlong = LatLongConversionCalculator.PythagoreanΔLoniProjInverse(addlong, TestableLat, TestableLong);
//grab the current latitude/longitude from the dataTest ScriptableObj
double Lat = locations.Latitude;
double Long = locations.Longitude;
//set the checkable ranges
double Latitudemin = TestableLat - basicLatRange - addlat;
double Latitudemax = TestableLat + basicLatRange + addlat;
double Longitudemin = TestableLong - basicLongRange - addlong;
double Longitudemax = TestableLong + basicLongRange + addlong;
//if we are in the ranges playback the audio
if (Lat >= Latitudemin && Lat <= Latitudemax && Long >= Longitudemin && Long <= Longitudemax)
return true;
else
return false;
}
I've also included the static class to the equirectangular distance finder below. For more reading and other example scripts this website is a great resource: https://www.movable-type.co.uk/
latlongconversioncalculator.cs | |
File Size: | 1 kb |
File Type: | cs |
USITT Publication (Creating MIDI Instruments for Use in Live Theatre):
This is a link to the paper I wrote for USITT discussing the process of creating MIDI instruments for use in Live theatre:
I'm extremely biased, but if you're a theater sound designer, it's a great read.
The other publications on the website are also amazing. Anyone who is interested in sound design would find the articles both helpful and inspiring.
The other publications on the website are also amazing. Anyone who is interested in sound design would find the articles both helpful and inspiring.
Webcam Based Realtime Binaural Audio (Max/MSP Patch):
Due to COVID-19, many performances have transitioned to streaming platforms. Designing for that medium is something deeply worth exploring. This is a demonstration of a tool that can be used for live streaming spatial audio.
This is a download for the patch. To get it to work properly you will need both the Spat~ and cv.jit packages installed.
|
|
The Visualizer Max for Live Patch (Max4Live Device):
This is an Max for Live device I created. It can be used to add 3D geometrical projection design to a performance. It has the ability to react to sound, vary in size, change color, change shape etc.
|
|
|
This ZIP folder has the Visualizer Max for Live patch as well as a ReadMe.pdf. I find it helpful to have the ReadMe pdf open while programming to quickly reference the MIDI note index.
|
Qlab Templates:
During my time as a sound designer, I have compiled a list of, and inevitably debugged a lot of, applescripts and OSC commands to make my Qlab programming more time efficient. I have been consistently adding to two Qlab templates. I thought these templates might be worth sharing throughout my network of colleagues/friends/mentors etc.
|
|
This ZIP folder has two Qlab templates in it. One template for version 3, and one for version 4. It has a ReadMe pdf. As well as a Qlab cue sheet preset for the program installed on macs "Numbers."
|
Ableton Live VFX Preset:
|
During my time freelancing in Cleveland, I created an Ableton based vocal effect processing setup for Cleveland Playhouse's production of Feed. It allowed a few actors to affect their voices - pitch bending, delay/reverb effects, chorus effects - while they played back DJ style sound effects. We then sent this "DJ MIX" out of an audio interface and into the house CL5, where the signal was mixed live through out the show. This is that preset. It's set up for two mics. Please, use it as a jumping off point for anything you would like.
|