Mac OS Foot Switch From a Guitar Amp Pedal.

by aymans in Circuits > Arduino

18024 Views, 22 Favorites, 0 Comments

Mac OS Foot Switch From a Guitar Amp Pedal.

2804879126_194df13ab4.jpg
Need a foot pedal for your Mac? Got a two switch guitar pedal and and arduino board lying around? A couple of wires, a three prong 1/4" jack and you're all set. I had to do some audio transcription and used my pedal to play/pause and skip back the video.

This tutorial illustrates making a foot pedal for a Macintosh computer using an Arduino and a 2 switch guitar amp pedal.

You'll have to be a little familiar with soldering and writing simple code.

If you need a guitar amp pedal switch, you can buy one or make one with this other instructable or with this one.

Supplies.

2804879126_194df13ab4.jpg
2804894432_ee3dce44e3.jpg
2804882948_c80bcf461e.jpg
2804890428_1105283d6b.jpg
2804886734_451e535581.jpg
1) Guitar Pedal (I'm using a two switch pedal)
2) Arduino (I'm using a Diecimila)
3) Breadboard (or prototype board if you like)
4) Three Conductor 1/4" Stereo Phone Jack (got one at RadioShack)
5) 2 1k ohm resisters
6) Wire (you know whatever you have lying around)
7) Soldering Iron (and Solder will help too)

Solder the Jack

2804894432_ee3dce44e3.jpg
2804068559_61ac638e64.jpg
2804064811_3d4ee66711.jpg
The jack (and corresponding plug) has three connection points: Ring, Tip, Sleeve. You need to solder a wire onto each of the connectors. Make the wires different colors just to stay sane.

The Sleeve (attached to the black wire in my photo) is the common line running to each of the switches on the pedal. If we give it (the black wire) a voltage, switch #1 will turn on/off the Tip wire (green in my photo). Likewise, switch #2 turns the Ring on and off (yellow in my photo).

If you get confused (I kinda did) just solder a different color wire onto each lead on the jack. You can use a volt meter to test for continuity (or wire it up to the breadboard with an LED on it) to figure it out. I kinda looked at each lead and figured out what part of the plug it actually makes contact with.

Wire the Jack to the Breadboard

IMG_5024.JPG
IMG_5025.JPG
IMG_5026.JPG
IMG_5028.JPG
This step is the messy one. Here we connect the jack to the bread board.

Basically, we are going to take power from the arduino and run it to the foot switch (via the black wire on my jack - i know i know i should have used a red wire). Then each wire off the jack we hook to a 1k ohm resistor. And from the back of each resistor, back to ground.

Then we need two generous wires to lead off the board from the front of each resistor (next to where the jack leads back in. These two wires we will use to test for HIGH/LOW on the Arduino.

Attach the Jack.

IMG_5030.JPG
IMG_5031.JPG
Attach the Jack so the Sleeve line connects to the RED 5v.

The Ring and the Tip should connect to each of the heads of the resistors.

Look at the little boxes on the second photo for detail.

Attach Two Probe Wires.

IMG_5031.JPG
We need 2 wires to run from the top (not the side connected to the ground, the other) of each resistor to our arduino.

Look at the long boxes on the photo for details.

Attach the Breadboard to the Arduino

IMG_5033.JPG
Now we plug four wires from the breadboard to our Arduino.

Plug the RED power wire into the 5V Power line on the Arduino.
Plug the BLACK ground wire into the GND line on the Arduino.
Plug the #1 switch (GREEN line) into the #9 pin on the Arduino.
Plug the #2 switch (YELLOW line) into the #8 pin on the Arduino.

(We'll test pins 8 & 9 for voltage on the Arduino)

Plug in the Arduino to the Mac's USB Port

IMG_5034.JPG
Plug your Arduino/Breadboard/Jack/Switch combo thingie into your USB port.

Program the Arduino

arduino-footswitch.png
So here, we wanna code up the arduino. You can use whatever pins you like really. Basically, we want to write to the serial port whenever a pin changes. We write a 1 for switch #2 and a "2" for switch #2. Really, you can't chord with this setup (but the code could be changed to allow for that).

Um, use the FootSwitch.pde file to get the code...not the jpg. :)

Downloads

Program the Mac

arduino-serial.png
So, by now we have a foot switch talking to our Arduino. The Arduino writes a 1 or a 2 to the serial device when we click the switches. We need something on the Mac to read it. Making the Arduino pretend to be a keyboard is kinda hard. So, instead we are gonna write a little C program to be our controller for the Mac.

We'll start by taking Tod E. Kurt's existing arduino-serial program that reads the Arduino serial port. I've made a few small modifications to automatically do stuff when it sees a 1 or a 2. The attached file should work well. You can read the comments if you wanna see whats going on, but its not for the faint of heart.

You can download the source (the arduino-serial-footswitch.c file) or the compiled app (third file: arduino-serial-footswitch).

Download it and put it in a new folder.

If you wanna compile it, I'll assume you know how to:

1) Open an iTerm and CD into that directory
2) Compile it by typing: gcc -o arduino-serial-footswitch arduino-serial-footswitch.c

Remote the Mac Via Applescript

arduino-applescript.png
applescript-saveas.png
So we need to write two AppleScripts. These will open the app we want and type they keyboard (shortcut) we want.

Attached is my template for doing so. You can almost read AppleScript. So just take a look at the attached file.

There are three types of key events you can make from AppleScript: "'key down'", "'key code'", and '"keystroke'". Your mileage may vary, so try "'keystroke'" first...if that doesn't work try the other events, one at a time.

Open up the Script Editor application (its there on your mac somewhere) and try it out. I'm gonna make you type this part in by hand. Sorry folks. :)

Save As... each AppleScript as a type "Application". Put them next to our complied C code/app from the last step. Name each one 1.app and 2.app - one for each switch.

Get Running!

Picture 8.png
Picture 10.png
Whew. Ok, so we have a Foot Switch, which is wired into a breadboard, which is attached to an Arduino, which is plugged USB into a Mac, which is running a C program that listens to the footswitch and execs applescripts. Yowza!

ok. you should have a folder that looks like this:

.
|-- 1.app
|-- 2.app
|-- arduino-serial-footswitch
`-- arduino-serial-footswitch.c

Open up your terminal app. CD into the directory you made. You can start your little script like:

./arduino-serial-footswitch -p `ls /dev/tty.usbserial*` -b 9600 -R

this runs our script by looking for our Arduino board...if you have more than one plugged in, replace all of `ls /dev/tty.usbserial*` with the path to the device (if you do this dont use the quotes!).

It will appear to do nothing, but your pedal is now live. If your buttons are backwards, you can reverse the wires running to pins 8 & 9. :)

Happy Stomping!

Voila–a Video Demo!

3102224098_dd5f101606.jpg


Here's a demo of the footswitch in action! I mention there's a 500ms latency (which is the AppleScript lag). There's a second latency in invoking the script itself, so you will see a total lag of ~60 seconds.