SongMaps => Steven's Final Project
For my final project, I wanted to make an instrument that used my MIDI foot selector to act as a multi-effects pedal that could also be "loaded up" with various song structures to aide in performance. The effects that I wished to implement were: a voice-controlled reverb, an expression pedal-controlled pitch shifter, and a voice-controlled low pass filter. For my audio input source, I used an Alesis iO|26 audio interface for a microphone and electric guitar channels. For the audio output, I used the PLOrk U46 hemi speaker. I wrote a code that extracts the RMS value of the microphone input FFT and uses this value to manipulate various parameters of the amplified guitar sound. Therefore, as one sings louder into the microphone input, the reverb dry/wet mix or the cutoff frequency for the LPF increases. The pitch-shifter is controlled by one of the expression pedals on my MIDI foot controller.
Originally, I had set out to create a controller that would just allow me to take the sound of my electric guitar and manipulate it in a bunch of different ways using extracted data from the audio input signal (microphone) and expression pedals on my MIDI foot controller. However, when I began to compose a “mini song” for the demonstration of this instrument, I began wanting to add more features that would allow me to use MIDI foot pedals to change drum beats, activate the effects, etc. Eventually, I became interested in writing a code that would allow me to perform various songs that I had written previously using Ableton Live. A separate public class was created that had a number of “presets” that could be set for MIDI beat mappings. In this way, without loading any presets, the effects pedal worked alone...it could be implemented in any sort of song and it wasn’t quantized to a particular tempo. However, upon loading a preset for a particular song, the effects were then linked to various beats or parts of a song.
What made the ChucK performance code unique from playing the piece in Ableton was the ability to link vocal volume swells to certain effect swells that I had to automate in Ableton after recording a dry guitar part. Additionally, this instrument provides the performer with a hardware effects pedal that has the capacity to load different song structures and can be used to play an entire set of songs. With other effects software (Guitar Rig, Ableton, etc.), effect presets are saved and loaded into each new song file so performers can use the same effects among a range of songs. However, using ChucK, one can instead have a functioning, static effects pedal that could load a number of preset song structures.
Additionally, instead of just guitar, one can really plug anything into the second input channel of the input interface using a TRS connector (connect a sampler, a digital music player, etc.), and the controller can then affect the reverb level, pitch, and the low pass filter cut off frequency of that sample’s/song’s output. Additionally, instead of using a microphone in the first input channel of the interface to affect reverb level and maximum LPF frequency cut off in proportion to volume, one could just control the gain level of the channel one input (assuming that there is a constant noise being input to the channel...such as a steady sin wave).
The ChucK files as well as the samples for the demo songs in the video (see below) are all in the .zip file.
Upon downloading the different files, launch them in this order:
HOW TO PLAY/DEMO
Here is an instructional video that demonstrates how to use the MIDI foot selector to activate different effects, load different song structures using the laptop keyboard, and perform pieces using this instrument.
You can use the "MIDDYTESTING.ck" file (in the .zip file above) to see what values are being sent by your own MIDI selector.
The selector switches corresponding to MIDI data2 values 80, 81, and 2 activate the vocal-controlled reverb, the vocal-controlled LPF, and the pitch-shifter, respectively.
In order to load different song mappings to the foot selector, one can use the keyboard on the laptop. Here are the presets that are used in this project:
1 = no mappings
2 = song 1
3 = song 2