Just a bit from my latest project.
Dana Simmons is a professional audio engineer and technology consultant and dabbles in instrument invention, synthesizer construction and other experimental music and technology related projects. Here he rambles about his recent projects and such.
Monday, March 2, 2009
Monday, February 2, 2009
New Years Resolution: Removable Media Backup
Removable and portable media, I've found, is one of the toughest things to make consistent backup copies of. After all, there is really no way to predict when and/or where my multitude of drives will be plugged in. Which led me to a simple solution, back them up when they are plugged in.
In the past, I've used rsync to make backups on a regular basis (using cron jobs). I devised a similar scheme to backup removable media.
A simple python script scans for mounted media. Drives that have been configured to be backed up are copied through rsync and ssh to the specified backup location. Drives/media not configured for backup are simply ignored.
The script looks for a two line text file in the root directory of each mounted drive to designate whether or not to backup the drive. The text file contains the volume's name (not to be confused with the portion label, this name is only for aesthetics and organization) and also the location the drive should be copied to on a remote host. The script then continues to archive the drive to the location specified. When done, it moves on to the next drive and so on.
The script and example config file are included in a tarball below. Comments and improvements welcome.
Download the Drive Booty script [Box.net link]

DriveBooty by Dana Simmons is licensed under a Creative Commons Attribution-Share Alike 3.0 United States License.
In the past, I've used rsync to make backups on a regular basis (using cron jobs). I devised a similar scheme to backup removable media.
A simple python script scans for mounted media. Drives that have been configured to be backed up are copied through rsync and ssh to the specified backup location. Drives/media not configured for backup are simply ignored.
The script looks for a two line text file in the root directory of each mounted drive to designate whether or not to backup the drive. The text file contains the volume's name (not to be confused with the portion label, this name is only for aesthetics and organization) and also the location the drive should be copied to on a remote host. The script then continues to archive the drive to the location specified. When done, it moves on to the next drive and so on.
The script and example config file are included in a tarball below. Comments and improvements welcome.
Download the Drive Booty script [Box.net link]
DriveBooty by Dana Simmons is licensed under a Creative Commons Attribution-Share Alike 3.0 United States License.
Sunday, January 4, 2009
Arduino Control Voltage: Rough Code
I've worked a little more on the Arduino Control Voltage. The processing code bellow takes midi input from any midi device, reads the note and velocity information and then spits it back out over the USB Serial connection to the Arduino board. It's a roundabout convoluted way of getting midi information (midi being a serial data stream to begin with), I hope to get a direct midi input wired up soon.
Arduino PWM to CV out circuit
Bellow is the (now) simple code to be uploaded to the Arduino board which just reads the serial data and controls the PWM output.

Arduino Control Voltage by Dana Simmons is licensed under a Creative Commons Attribution-Share Alike 3.0 United States License.
Based on a work at code.google.com.
Arduino PWM to CV out circuit
import promidi.*;
import processing.serial.*;
int com = 0; //Comport/Serial port #
MidiIO midiIO;
Serial sOut;
PFont font;
int pit;
int vel;
void setup(){
font = loadFont("ArialMT-40.vlw");
midiIO = MidiIO.getInstance(this);
println(Serial.list());
midiIO.printDevices();
midiIO.plug(this,"getMidi",0,0);
sOut = new Serial(this, Serial.list()[com], 9600);
}
void draw(){
background(255,255,255);
textFont(font,15);
fill(0,0,0);
text("Midi Data",0,14);
textFont(font,12);
text("Note:",0,28);
text("Velo:",0,42);
textFont(font,12);
text(pit,42,28);
text(vel,42,42);
}
void getMidi(Note note){
println("Got a note!");
vel = note.getVelocity();
pit = note.getPitch();
println(vel);
//println(pit);
sOut.write(vel);
sOut.write(pit);
}
Bellow is the (now) simple code to be uploaded to the Arduino board which just reads the serial data and controls the PWM output.
/*Arduino CV. Reads note and velocity information form the serial line and outputs to PWM pin */
byte note = 0;
byte vel = 0;
int synPin = 11; //Pin # for pitch CV output
void setup() {
Serial.begin(9600);
}
void loop() {
if(Serial.available() >= 2 ){ //Wait untill there is enough information
Serial.println(Serial.available(),DEC);
vel = Serial.read(); //FIX ME: Implement velocity sensitivity (VCA Control)
note= Serial.read();
analogWrite(synPin,note);
}
}
Arduino Control Voltage by Dana Simmons is licensed under a Creative Commons Attribution-Share Alike 3.0 United States License.
Based on a work at code.google.com.
Monday, December 29, 2008
First revision: Arduino Control Voltage
The recent holiday brought into my possession a shiny new Arduino Duemilanove board, my first real project with it? Control Voltage output to control my self titled Uranus synthesizer (based on the Voice of Saturn synth). In any case, after a couple long nights I cam up with the sketch bellow, I've tested it and it seems to work with a little adjustment from the pot on the output.
I have yet to attempt at getting the thing tuned, but by runing the PWM output of the Fading sketch (a steady ramp up and down from 1 to 255) i was able to verify that it does indeed control my rather excentric synth. Thoughts, suggestions and critics welcome.
NOTE: The capacitor in the lowpass filter at the bottom is 470 uF, apologies for not adding the value.


Arduino Control Voltage by Dana Simmons is licensed under a Creative Commons Attribution-Share Alike 3.0 United States License.
Based on a work at code.google.com.
I have yet to attempt at getting the thing tuned, but by runing the PWM output of the Fading sketch (a steady ramp up and down from 1 to 255) i was able to verify that it does indeed control my rather excentric synth. Thoughts, suggestions and critics welcome.
NOTE: The capacitor in the lowpass filter at the bottom is 470 uF, apologies for not adding the value.

Arduino Control Voltage by Dana Simmons is licensed under a Creative Commons Attribution-Share Alike 3.0 United States License.
Based on a work at code.google.com.
Saturday, November 8, 2008
Got boxes? Got Drums!
Inspiration often strikes in peculiar ways, lately, I was struck to bang on random resonant packaging materials and record the sounds they make. I assembled them into a hydrogen drum kit [download drumkit][Broken link now fixed] and composed a simple little percussion piece to demonstrate. Hurray for percussion!
Check out the Waxy Ear myspace and listen to the resulting BoxJar Jam song
Check out the Waxy Ear myspace and listen to the resulting BoxJar Jam song
Saturday, November 1, 2008
Build Pics: Home LAMP server
As promised, I've uploaded some pictures of my latest project: A home network LAMP/Backup/Print server. Details on configuration and ub3r tweaks next time.

Installing Debian. (Before I realized it was much simpler to do a net-install via usb flash drive)
Time to roll up the sleeves and get dirty!
The three hard drives which will handle all the data (two 500 gig sata, one 80 gig ide)

Installing Debian. (Before I realized it was much simpler to do a net-install via usb flash drive)
And that's that. This little workhorse has proven to be a very valuable investment. Besides backing up my main workstation every night to the RAID 1, It runs TorrentFlux to manage bittorrent downloads and also servers as a CUPS host to my home network for printing.
Thursday, October 16, 2008
Prelminary descrete circuitry guitar amp.
Subscribe to:
Posts (Atom)





