From CSWiki
Revision as of 15:16, 11 May 2009 by Skim (talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

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

This is a subsection

With some text.

  • And some bullet points
  • Here's another

This is another subsection

with a link off the wiki

and a link on the wiki

What to include on your project page

  • A description of your project
  • Your code
    • If it's short, you can make a new page for it like this one
    • Or, if there's a lot of it, put it in a .zip file so that people can upload it.
  • Instructions on how to run your code
  • A sound or video recording of your piece. Going lo-fi and using built-in webcam from another laptop (e.g. PLOrk machine in studio B) is fine. But for audio, if you're using chuck, best to use for writing chuck's output directly to a file.
    • See directions above on putting it on your network drive and linking to it