Corey Menscher
Corey is entering his second year as a masters candidate in the Interactive Telecommunications Program (ITP) of NYU’s Tisch School of the Arts. He was born and raised in Houston, Texas, and graduated from Washington University in 1995 with a BA in Psychology, with a minor in Music. Five days after he accepted his undergraduate degree, he moved to NYC to co-found a web startup called AdOne Classified Network. He has remained in the industry since the initial pioneering days of the Internet, working for consulting companies such as TCB Data Systems, Inc. and Organic, Inc. for clients including the NYSE, Nasdaq, Bloomingdales, Tommy Hilfiger, and Sting. His current passions are photography, NYC Livable Streets issues, and learning.
Websites
http://www.crackblur.com/
http://itp.nyu.edu/ITPedia/Corey_Menscher
(Sorry for the delay…I decided to delay posting my documentation until today so we could go out and celebrate!)
I started out the day with the intention of doing an ice cream-based project. But when I happened across a couple of working EPIA mini-ITX TC-1000 motherboards that Tom Igoe was giving away during his marathon office-cleaning, inspiration hit:

Several weeks ago, a few ancient Silicon Graphics workstations were found to be discarded by ITP…two Indy’s (from 1993), and two O2’s (from 1998). As soon as I saw them, a rush of nostalgic awe washed over me. Nevermind the fact that these machines are probably less powerful than the iPhone in my pocket (and currently worth maybe $100 from their original $5000+ price tag). I remembered the days when seeing one would have made me swoon. Since I first noticed that these beautiful machines were being callously discarded, I had been trying to come up with a way to use one. I realized the O2 has a really nice (and fun) form factor, I decided I would commandeer one and turn it into a Linux server using one of the mini-ITX boards that Tom Igoe was giving away.
Here’s what the SGI O2 looks like. It has a short and squat nature, reminiscent of R2-D2. Hence, my server has been dubbed the O2D2. (The “D” could conceivably stand for “Dremel”.) It’s hopefully going to make a sweet Asterisk server for my home!


As I attempted to take the thing apart, I realized that they were not really designed to be so user-serviceable. Granted, the main board, drives, power supply, and video hardware were all designed to slide out the back. But getting into the actual case was a bitch. Installing an 80gb IDE drive (also being discarded) in the removeable drive tray was easy…but the IDE connector sticks out much further than the ultra-wide SCSI connector of the stock drive. The SCSI connector at the back of the bay made it impossible for me to fit the drive all the way in. I decided the best way to handle this was to simply use a dremel to cut the connector and make it flush with the case:


Unfortunately, this did not provide nearly enough room, and I realized I needed to take off the entire plastic casing to access the front panel and completely remove the connectors. Well, that took a couple of hours…but I managed remove the circuit board that was installed vertically on the face of the machine that contained the SCSI and IDE connectors for the optical and hard drives. I also had to use a Dremel tool to cut wider the slots in the sheetmetal case to give the IDE connector and Molex power connector area to poke through. I’m sorry I didn’t get a chance to take a picture of the drive connectors poking through the case, but it really isn’t all that interesting anyway.
Since it is removable, I also went ahead and dismantled the power supply’s innards and left the cage. It eventually became clear that the mini-ITX’s external power supply could actually sit inside this cage! This means I only have one power cable snaking out of the machine…which is awesome. I also added a personal touch…I gave the O2D2 a blue power LED. What’s an ITP project without an LED?
The machine powers on and gets mostly through the POST, but then hangs. I assume this is due to the discarded drive that I installed…I’m going to need to wipe it and start fresh. So, I wasn’t able to actually get to the part of installing server software, but I will soon. Here are some shots:




|
August 2nd, 2008

You’ve heard of the Throwie. Well, today I attempted to create the Chirpie! The Chirpie is an audio throwie…a small electronic device that emits a continuous series of chirps and can be attached to metallic surfaces via a magnet. Multiple throwies could be thrown and attached to a surface to provide a cacophony of chirps! I have no idea if Chirpies have been made before, but I decided to attempt it to learn something about tone generation with analog circuits.
My first attempt to create the Chirpie involved using two 555 timers…one in an astable configuration, and one in a monostable configuration. The astable 555 would have a period of ~1hz, and would trigger the monostable 555. The monostable 555 would in turn emit a tone…ideally around 440hz. I don’t know if you’ve every dealt with 555 timers, but they are a pain in the ass. They’re difficult to configure, and doing so requires a number of components (multiple resistors and capacitors, with leads running between voltage dividers and from one chip pin to another). Since I’d be using TWO 555 chips, plus the components in a “freeform” circuit (i.e. no circuitboard), I nixed this idea due to the fact that this tangled mess would be extremely difficult to solder.
Chris Cerrito recommended I use hex inverters (specifically, 74HC14’s) to generate my audio. These are very simple to use, and since the 74HC14’s contain four inverters per chip, this could be a compact one chip solution. I managed to get a tone, but then I realized that there was no way to use one hex inverter on a chip to trigger another one to play at a regular cycle.
It turned out that I needed to use a 4093 NAND gate/hex inverter chip. Each inverter has TWO inputs, plus one output (the 4HC14 only had one input). This enabled me to generate a slow cycle with one inverter, and use the output pin to trigger another inverter with a higher frequency…providing an audible tone. The beauty of this solution is that it only required one chip and four components (two resistors and two capacitors…which determine each inverter’s period). Here are some shots of my circuit:



The problem with this circuit is that the two 3v coin cells I was going to use simply couldn’t handle the current draw. They made an awesome series of descending-frequency chirps…but died after about 5 chirps. I figured I could use either a 9V or a AA battery with a step-up circuit…but I never got far enough to have to make this decision.
My troubles began when I soldered the freeform circuit. Creating a such a circuit is difficult…you have to solder the components directly to chip pins, as well as to each other. You also have to solder wire to the components and chip to act as power and ground bus. And you have to do all this without shorting anything. Unfortunately, that must be exactly what I did. I melted two small speakers, and apparently fried the chip itself with my 9V test. On the off chance that I had simply soldered the circuit incorrectly, I attempted a second try using the other two inverters on the chip…but go nothing. I suppose I fried the one and only 4093 chip I had. (Chris gave it to me.) So, unfortunately, my 5in5 project for today will not be complete. Well not entirely. Here’s what I unded up with:



But the day wasn’t a TOTAL wash. Since I was inspired by LED Throwies, I decided to make one with a superbright LED and the coin cells I was going to use for the Chirpie:

movie of the Throwie in action
So yeah I made SOMETHING…but it ain’t all that. Still, I learned far more than I ever expected to about creating oscillators with analog circuits. I’m actually very happy that I can come away with that useful knowledge…and I’m committed to actually COMPLETING a Chirpie when I can get my hands on another 4093. Only next time, I’ll probably do the whole thing on a perf board and cut it down as small as possible. Freeform circuits are just too unpredictable.
|
August 1st, 2008
1502 solder points. ~7.5 meters of solder. 7 hours. 1 peggy. This is the Peggy Lite-Brite…

I’ve owned a Peggy 1.0 for several months now, but never assembled it. Ever since I got it, I’ve wanted to solder female headers to it so that I could re-use it indefinitely. But the idea of soldering 625 headers to all available pixels, as well as the other necessary componenets, was daunting. Fortunately, 5in5 gave me the opportunity to realize my dream. I got to work at 11:30am, and finished soldering the last component at 6:35pm. (I did take about 20 minutes to each lunch.) I’m extremely happy with the outcome! I know the Peggy has been called an “adult Lite-Brite” for a while now, but until now no Peggy has ACTUALLY become an adult Lite-Brite…as far as I know.


This was a ton of work, and I now I wish I had accomplished this on a Peggy 2.0. Maybe someday, but for now I have the next best thing! For more photos, check out my flickr stream.

|
July 31st, 2008
Dial (212) 796-0729 ext. 160 to access the Asterisk File Transfer Protocol Server!
Today I created a prototype method for transferring files via an Asterisk VoIP PBX. The inspiration came from my early computing days using a an audio cassette recorder to store applications for my first personal computer, a TI-99/4a. Programs were stored on audio cassettes, and were literally transferred to RAM via an audio signal over a 1/8” jack. If you didn’t plug in the jack but instead listened to the files through the cassette player’s speaker, they had an eery digital quality (a lot like a fax machine). So, I decided to recreate this experience over the telephone. If you have an acoustic coupler attached to your computer, you could potentially download files from the system at a blistering 300 baud!
For demonstration purposes, the A-FTP server transmits this file…an 8Kb jpeg image (which takes 3 minutes and 29 seconds to play):

I decided to use the “Kanas City standard” (http://en.wikipedia.org/wiki/Kansas_City_standard) for audio frequency-shift keying of digital files. This standard was established in 1975 at a symposium in Kansas City to provide an alternative storage solution to expensive floppy drives. (I’m not sure whether the TI-99/4a used it, but it sounds pretty close.) To convert the file into an audio file that conforms to the Kansas city standard, Adam Parrish clued me into the CSound audio programming language. Csound is “a unit generator-based, user-programmable computer music system.” Its syntax is excruciating, but it is extremely powerful. I spent most of the day trying to learn the basics to create the fundamental components of a CSound composition…the Orchestra File and the Score file.
The Orchestra file describes all the “instruments” used to generate audio. In my case, I needed two instruments…one 1200hz sine wave oscillator for “0” bits, and one 2400hz sine wave oscillator for “1” bits. The score file is what describes the audio piece itself…it tells CSound what sounds to generate, and when and how long to play each instrument. (CSound gets vastly more complex than my rudimentary needs.) Once I figured out how to generate this file, I wrote a PHP script that reads my binary image file and outputs the appropriate lines in the score file. (A big thanks to Adam Parrish again for helping with the bit masking stuff.) Once the .wav file was generated, I converted it to the GSM audio format that Asterisk loves so dearly. I then created a short dial plan to first playback a greeting, and then the file itself.
You can access the server by dialing (212) 796-0729 ext. 160. Unfortunately, the low quality GSM codec probably precludes the audio waveform from actually being used for file transfer…but it’s still a fun idea. You can listen to a higher-fidelity version of the file here (2.4mb).
Here’s the CSound .orc (orchestra) file:
sr= 44100
ksmps= 20
nchnls= 1
instr 1
; bit '1'
asound oscil 15000, 2400, 1
out asound
endin
instr 2
; bit '0'
asound oscil 15000, 1200, 1
out asound
endin
Here’s the PHP code for generating the CSound .sco (score) file:
$scoreIntro = "f1 0 1024 10 1 \n";
$outFile = "aftp.sco"; //CSound score file to write
$inputFile = "isawaturtle.jpg";
//bit masking props to Adam Parrish
function bit($val, $bitno) {
return ($val & (1 << $bitno)) ? 1 : 0;
}
//generates and outputs the individual note events for CSound
function writeScore($contents) {
GLOBAL $handleWrite;
$lastEventTime = 0; //time last note was played
$currEventTime = 0; //time to play the current note until
$trueBitLen = .0033; //play a note for this length when a bit is true
$falseBitLen = .0016; //play a note for this length when a bit is false
$thisBitLen = 0;
$startBit = "";
$stopBit1 = "";
$stopBit2 = "";
$outStr = "";
for($i = 0; $i < strlen($contents); $i++) {
$thisByte = substr($contents, $i, 1);
$startBit = "i2 " . $lastEventTime . " " . $falseBitLen . "\n";
if($lastEventTime == 0) {
fwrite($handleWrite, "i2 0 .0016 \n");
$lastEventTime = .0016;
$currentEventTime = .0032;
}
for($b=0; $b<8; $b++) {
$thisBit = bit(ord($thisByte), $b);
if($thisBit) {
$currEventTime = $lastEventTime + $trueBitLen;
$thisInstrument = "i1";
$thisBitLen = $trueBitLen;
} else {
$currEventTime = $lastEventTime + $falseBitLen;
$thisInstrument = "i2";
$thisBitLen = $falseBitLen;
}
//output this bit
$outStr = $thisInstrument . " " . $lastEventTime . " " . $thisBitLen . "\n";
fwrite($handleWrite, $outStr);
$lastEventTime = $currEventTime;
}
$currEventTime = $lastEventTime + $trueBitLen;
fwrite($handleWrite, "i1 " . $lastEventTime . " " . $trueBitLen . "\n");
$currEventTime = $currEventTime + $trueBitLen;
fwrite($handleWrite, "i1 " . $currEventTime . " " . $trueBitLen . "\n");
if($i != strlen($contents)-1) {
$currEventTime = $currEventTime + $trueBitLen;
fwrite($handleWrite, "i2 " . $currEventTime . " " . $falseBitLen . "\n");
}
$lastEventTime = $currEventTime;
}
}
/*****************************************
********** BEGIN PROCESSSING *************
*****************************************/
//first read the input file
$handleRead = file_get_contents($inputFile);
//make sure the output file exists...if not create it
if (!file_exists($outFile)) touch($outFile);
$handleWrite = fopen($outFile, 'r+'); //open the score file
fwrite($handleWrite, $scoreIntro); //write the score intro
writeScore($handleRead); //loop through the input file and write the notes
fwrite($handleWrite, "e"); //end the score
fclose ($handleWrite); //close the score file
|
July 30th, 2008
The TuneSash is complete! Unfortunately, I spent over six hours attempting to hack the iHome iH85, but in the end it just did not work. Instead, I created an audio amplifier out of an LM386 chip, and I have to say…it sounds awesome!
Most of my day was spent taking apart the iH85 and resoldering the iPod dock’s ribbon cable, as well as a couple of solder points that came apart from handling the dismantled unit. Here’s what the iH85 looks like when taken apart:
Before I got started, I went to Paragon Sports to pick up a shoulder strap and spare Timbuktu pad:
My intent was to use the strap as the sash, and then velcro the replacement pad would be velcroed around it by removing the padding. Here’s how I would have laid out the electronics:
I needed to extend the iPod dock connector to extend to a separate pouch for holding an iPhone, which I also purchased. I used a ribbon cable and resoldered the EXREMELY tight solder points, and extended the existing ribbon cable on the dock connector to the new cable:
After I fixed this and added a battery holder, I tested the setup…and it didn’t work! Actually, one of the components started to smoke. So, I must’ve had a short in there somewhere…even though I tested it as best I could with a multimeter. So at that point I gave up and switched to my backup plan of creating my own amp with an LM386 and using a standard 2mm audio jack instead of the iPod dock. So first I created my circuit:
Then I soldered it to a perfboard:
I hot glued a small ~2″ diameter speaker to the pad as well as the perfboard and battery. I also added a power switch and LED:
I’m actually glad that the iH85 didn’t work…using a 2mm input now allows me to use both my iPhone and an iPod shuffle (or any other device with a headphone jack…like a radio). This offers more flexibility in the long run. Here’s a shot of the TuneSash itself:
You can view a demo at Blip.tv!
|
July 29th, 2008
Today I will be making the TuneSash. It’s a sash that contains an audio ampllifier, a speaker, an input jack, and possibly some sort of pocket for holding an audio player.
My initial intention was to make the TuneSash as generic as possible…meaning any audio player can be used. But since this is a one-off project, I figured I should make it with one particular audio player I own…an iPhone 3G. This means that I will attempt to incorporate iphone-specific controls as well as a holder for the unit itself. My backup plan is to just assume that an iPod Shuffle will be used in conjunction with the TuneSash. Since the iPod Shuffle has a built-in clip, it could prove to be the easiest player to work with.
In terms of electronics, there are two possible directions I can go with the TuneSash:
- Build an audio amp out of an LM386 chip and perfboard. I would use a 9V battery as the power source. This method has several drawbacks:
- Requires soldering a circuit to a perfboard
- Produces pretty awful quality audio
- Will chew through 9V batteries.
- Hack an existing iPod speaker device and incorporate the components into the TuneSash. I have an iHome iH85 speaker system for bikes and ipods (http://www.ihomeaudio.com/products.asp?product_id=10186). It’s very nice, but is difficult to hear from the position it’s to be installed on a bike, and also doesn’t hold an iPhone. So, I can take it apart and use the components in TuneSash. There are a couple of drawbacks to this as well:
- Destroy an expensive piece of electronics
- Does not have a 2mm audio jack, so it will be limited to iPhones/iPods with dock connectors..thus forcing me to create a pocket for storing the iPhone on the tunesash (and forget about the ipod shuffle).
- Takes four AA batteries, and requires the iPhone to also be held within the TuneSash, which means it will be heavier.
I’ve decided to go with the second option, if possible. The audio quality from the speaker is phenomenal, and its four AA batteries seem to last quite a long time. It also has a wireless remote, which will make it very nice when used in conjunction with a bike.
I’m going to start by dismantling the iHome device to determine how usable it is. If the parts separate cleanly, and are small enough, I’ll definitely proceed. Wish me luck!
|
July 28th, 2008