Difference between revisions of "PLOrk2009/StevenKimFinalProject"

From CSWiki
Jump to: navigation, search
(CODE)
(HOW TO PLAY/DEMO)
 
(11 intermediate revisions by the same user not shown)
Line 1: Line 1:
 
==SongMaps => Steven's Final Project==
 
==SongMaps => Steven's Final Project==
  
For my final project, I wanted to make an instrument that used my MIDI foot selector to alter certain parameters of an electric guitar that was running through the computer. The effects that I wished to implement on the guitar 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 my microphone and electric guitar input channels. For the audio output, I used the PLOrk U46 hemi speaker. I wrote a code that would take the signal from the electric guitar coming into the Alesis and amplify it out of the hemi speakers. Then, an FFT was performed on the channel of the Alesis corresponding to the microphone input, and the RMS value was extracted from the microphone input. This RMS is then used to control the reverb mix of the guitar sound or the maximum frequency for the LPF. Therefore, as one sings louder into the microphone, the dry/wet mix of the guitar reverb increases, or higher frequencies are allowed through the LPF. The other effect was a pitch-shifter that was controlled by one of the expression pedals on my MIDI foot controller.
+
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 (LPF). 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 only allow me to take the sound of my electric guitar and manipulate it using extracted data from the audio input signal (microphone) and expression pedal 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.
+
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. This gave a more convincing sound of “swelling,” since I didn’t have to go back to the recorded part in Ableton, only activate the vocal and guitar tracks, and try to match reverb swell levels between the two tracks using automation. Additionally, this instrument provides the performer with a permanent effect processor that has the capacity to load different songs to it. With other effects software (Guitar Rig, Ableton, etc.), the same guitar 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.
+
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 attach anything into the second input channel of the input interface (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 use the gain knob on the input channel (assuming that there is a constant noise being input to the channel...such as a steady sin wave).  
+
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).  
  
=== CODE ===
+
=== Code ===
  
 
The ChucK files as well as the samples for the demo songs in the video (see below) are all in the .zip file.
 
The ChucK files as well as the samples for the demo songs in the video (see below) are all in the .zip file.
  
* [http://www.princeton.edu/~sck/MUS314FINAL.zip songmaps]
+
* [http://www.princeton.edu/~sck/MUS314FINAL.zip SongMaps]
  
Upon downloading the different files, launch them in this order:
+
Upon downloading the different files, launch them in this order:<br>
MIDDY.ck
+
1-MIDDY.ck <br>
KEYBORED.ck
+
2-KEYBORED.ck <br>
INSTRONLY.ck
+
3-INSTRONLY.ck <br>
BEATMAPS.ck
+
4-BEATMAPS.ck <br>
LAUNCH.ck
+
5-LAUNCH.ck <br>
  
=== HOW TO PLAY/DEMO ===
+
=== How to Play/Demo Video ===
  
Here is an instructional video that shows you 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.
+
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.
 
You can use the "MIDDYTESTING.ck" file (in the .zip file above) to see what values are being sent by your own MIDI selector.
  
* [http://www.princeton.edu/~sck/MVI_3877.AVI watch me play]
+
* [http://www.princeton.edu/~sck/MUS314finalvid.mp4 watch me awkwardly play]
 +
 
 +
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: <br>
 +
1 = no mappings <br>
 +
2 = song 1<br>
 +
3 = song 2

Latest revision as of 23:14, 11 May 2009

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 (LPF). 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).

Code

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:
1-MIDDY.ck
2-KEYBORED.ck
3-INSTRONLY.ck
4-BEATMAPS.ck
5-LAUNCH.ck

How to Play/Demo Video

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