Stompbox Real Sensors 2016
Lab 2: Controlling an Effect with Real Sensors
Designed by Edgar Berdahl (updated by Romain Michon)
NOTE: Some of the pictures on this page show the old version of the Satellite CCRMA kit that was based on a BeagleBoard. This shouldn't change anything to the understanding of the different figures, etc.
For this lab you need your Satellite CCRMA kit, a laptop computer with Ethernet adaptor to program it, and some headphones with a mini 1/8" (3.175mm) stereo jack.
You are also invited to bring the following optional items, but they are by no means required:
- Some of your favorite breadboardable sensors and LEDs.
- A set of small, battery powered speakers with 1/8" (3.175mm) jack.
Putting Things Together
- Insert your Arduino Nano into the breadboard all the way at the end toward the higher numbered rows and seated roughly in the middle (see below).
- In order to run circuits on the breadboard, you need to get power to it. The Arduino gets 5V from the USB connection, so in this section you will make the 5V accessible to the breadboard.
- Make sure that your Arduino is mounted at the very end of the breadboard with the higher-numbered rows, as shown in the following picture. In that case, the GND and 5V pins will end up in the 19th row. (Otherwise if your Arduino isn't mounted this way, you simply won't be able to rely on the row numbers, but you can still figure out how to wire things up!)
- Recall first that that holes in the solderless bread board are wired together as shown:
- Using short jumpers, connect the GND row to the blue "GND" bus on the breadboard, and connect the 5V row to the red "power" bus on the breadboard.
- Connect the "GND" and "power" busses from both sides of the breadboard together as shown.
- Make sure that the Arduino is connected to one of the USB port of the Raspberry Pi.
First Circuit: Potentiometer
Now you will build the following voltage divider circuit, to connect one potentiometer to analog input A0.
For some help on placing the wires, please see the following picture. In order to ensure the correct orientation, ensure that the text on the potentiometer is facing away from the Arduino (see also oblique picture in next section).
Add A Second Potentiometer
Now connect a second potentiometer to analog input A3 using the same voltage divider circuit.
Again, ensure that the text on the potentiometer is facing *away* from the Arduino (see the red boxes in the following figure):
Add A Button
Most stomp boxes have a button, so we include that as well according to the following circuit:
The corresponding picture of the bread board is shown below:
Add An LED
Finally, we add a light-emitting diode (LED) for fun and to help with debugging. Recall that current can only flow in one direction through a diode. One good trick to remember for LEDs is that the longer leg (the anode) points toward the power supply. The 220 Ohm resistor limits the amount of current that can flow through the LED.
Test The Tremolo Effect
Now you will test a very simple tremolo effect.
- Connect headphones or some small loudspeakers to the audio out jack on the Beagle Board. (It is the one closer to the middle of the board.)
- Connect an input audio source, such as a small MP3 player or instrument the audio output of the jack on the Beagle Board.
- Start pd by running pd &
- Open the patch ~/pd/stompbox/demo-stompboxes/stompbox-tremolo.pd using the File|Open menu option.
- Start audio signal computation by checking the compute audio button in the main pd window.
- Verify that turning the potentiometer connected to input pin A3 on the Arduino adjusts the value A3 shown in the main patch window. This should also change the output volume of the effect.
- Verify that turning the potentiometer connected to input pin A0 on the Arduino adjusts the oscillator frequency.
- Verify that clicking the "Turn LED on or off" toggle will control the LED.
- Look inside the subpatch pd get-input-from-arduino, which access the Arduino, and figure out how you could access data coming from the other analog inputs. Would you need to add an outlet to the subpatch?
- Verify that when you press the button, the mode checkbox changes its state. Modify the effect too so that the mode checkbox implements a bypass switch. We will ask some volunteers in class the following morning to explain how to do this.
Rapid Prototyping: Try Incorporating Other Sensors
Making an enclosure is time-intensive, so in the context of the workshop, we recommend exploring ideas and designs first in a rapid prototyping context.
- So far you have been using a potentiometer for controlling effect parameters:
- but you could also use a force-sensitive resistor (FSR):
- or a bend sensor
- or a photoresistor
- or an optical reflective sensor
The reflective optical sensor consists of an infrared LED and a phototransistor that passes an amount of current proportional to the reflected light received. We use two kinds at CCRMA, the Fairchild QRB1114 has the letter "E" (Emitter) to label the LED, and the label "S" (Sensor) for the phototransistor. The Optek OPB704 uses the symbols for an LED and a transistor to label the two sides. One leg of the sensor is connected to +5V, which supplies current, and the voltage drop across the 10k resistor that we measure is proportional to the amount of current.
Optional: Build A New Effect
- Build a new effect whose parameters are adjustable by the potentiometers and button. We will ask for volunteers to demonstrate this the following morning in class. You can build on what you did in lab 1 if you like.
- Think about the result
- do the controls allow the entire space of parameters to be explored?
- is it easy to choose any desired set of parameters?
- does the effect sound good?
- does it have dynamics?
- would you want to use it live?
- If not, what is missing still?
Some small amount of the text and images here was taken from prior laboratory exercises for the course Music 250A. We regret that we do not know who contributed these elements, but these people are likely to include Wendy Ju, Bill Verplank, Michael Gurevich, and possibly more.