Tag Archives: hack

IKEA Hack: MIDI Enabled Highscore Chair


The best thing about IKEA’s ANTILOP Highchair is that it’s cheap, and I mean dirt cheap. With a price tag of $19.99 you don’t have to worry about destroying it, or even not liking it. Coming in as a close second best thing is the fact that you can purchase extra trays which you can modify into activity centers you can swap in and out, such as this pro-gamer training rig.

For the Highscore Chair I added some Joysticks and Buttons I had lying around, loosely intended for expanding my arcade cabinet. These parts have the added advantage of actually being functional, down the road I can hook them up to a Raspberry Pi, an Arduino, MIDI out (Update: I’ve since added MIDI out), or just to some lights and buzzers — if you’ve got any ideas I’d love to hear them. The sky’s the limit as to what you can add to these trays, just keep safety in mind, for example, I placed the joysticks out of the arc of the baby’s head if he were to fall forward.

The trickiest part of this whole process is swapping out the trays. There are four rather stiff tabs that snap in place when attaching the tray. I may make a tool of some sort to make removal easier but in the mean time four butter knives do the trick. It’s probably best to swap the trays without the baby in the highchair, just slip a butter knife under each tab and once all four are in you can remove the tray easily (the butter knives will fall), really, any flat object would work, popsicle sticks perhaps? Now having thought about it, I’ll probably cut off the inner two tabs, the tabs are surprisingly strong I don’t see any risk of the baby removing the tray even if I remove two of them, however removing two would probably allow removal of the tray by an adult pressing one tab with each hand and pushing up on the tray with a knee or the like.

The plastic is very easy to drill, a stepped bit works wonders. Cutting would be a little more difficult but nothing a dremel wouldn’t be able to handle.

Update: I did end up snipping off the inner two tabs on both trays (with some sheet metal shears) and it worked like a charm. The trays can now be removed without the need for tools. Just push on the two remaining tabs with your thumbs keeping your fingers behind the lip for leverage, then use your chest, shoulder or chin (whatever works) to push up on the tray, once the tabs clear the lip you can let go and just lift the tray off. Be sure not to leave any sharp edges and swapping is still best done while the chair is unoccupied due to the number of places little fingers could get pinched while putting the tray on.

Update: I’ve since added MIDI out, which amounts to 10 MIDI triggers, 8 for each joystick and one for each button. The Highscore Chair now triggers samples loaded onto an Akai MPC1000, but with MIDI out it could be used as any sort of control surface now. The MIDI out is accomplished through an Arduino UNO, by following a couple of simple tutorials, found here and here, you can get buttons triggering MIDI notes in no time. I’ll shoot a new video when the little fellow is up for it. While the underside of the tray is already quite isolated from the baby due to the structure of the chair for added safety I’ll be putting the Arduino, battery and MIDI Jack in an enclosure and covering the entire tray undercarriage.


 

Here’s the Arduino sketch, very bare-bones. I cranked it out after a long day so I didn’t want to risk using the wrong array syntax so it’s just long hand, maybe that helps readability for beginners? Anyhow it would be much shorter if it used arrays. Basically there’re variables for each button pin and variables for the state of each button, it will only send one MIDI note per button push and wait until the button’s been released and pressed again before re-sending that note. This sketch is hard-coded to send MIDI notes 36 through 45 on channel 1 at 69 velocity.


const int buttonPin0 = 2;
const int buttonPin1 = 3;
const int buttonPin2 = 4;
const int buttonPin3 = 5;
const int buttonPin4 = 6;
const int buttonPin5 = 7;
const int buttonPin6 = 9;
const int buttonPin7 = 10;
const int buttonPin8 = 11;
const int buttonPin9 = 12;

int buttonStatus0 = 0;
int buttonStatus1 = 0;
int buttonStatus2 = 0;
int buttonStatus3 = 0;
int buttonStatus4 = 0;
int buttonStatus5 = 0;
int buttonStatus6 = 0;
int buttonStatus7 = 0;
int buttonStatus8 = 0;
int buttonStatus9 = 0;

void setup() {
  pinMode(buttonPin0, INPUT);
  pinMode(buttonPin1, INPUT);
  pinMode(buttonPin2, INPUT);
  pinMode(buttonPin3, INPUT);
  pinMode(buttonPin4, INPUT);
  pinMode(buttonPin5, INPUT);
  pinMode(buttonPin6, INPUT);
  pinMode(buttonPin7, INPUT);
  pinMode(buttonPin8, INPUT);
  pinMode(buttonPin9, INPUT);   

  Serial.begin(31250);
}

void loop(){

  int button0State = digitalRead(buttonPin0);
  int button1State = digitalRead(buttonPin1);
  int button2State = digitalRead(buttonPin2);
  int button3State = digitalRead(buttonPin3);
  int button4State = digitalRead(buttonPin4);
  int button5State = digitalRead(buttonPin5);
  int button6State = digitalRead(buttonPin6);
  int button7State = digitalRead(buttonPin7);
  int button8State = digitalRead(buttonPin8);
  int button9State = digitalRead(buttonPin9);  

  if(button0State == 1 && buttonStatus0 == 0)
  {
    buttonStatus0 = 1;
    noteOn(0x90, 0x24, 0x45);
  }
  else if(button0State == 0)
  {
    buttonStatus0 = 0;
  }

  if(button1State == 1 && buttonStatus1 == 0)
  {
    buttonStatus1 = 1;
    noteOn(0x90, 0x25, 0x45);
  }
  else if(button1State == 0)
  {
    buttonStatus1 = 0;
  }

  if(button2State == 1 && buttonStatus2 == 0)
  {
    buttonStatus2 = 1;
    noteOn(0x90, 0x26, 0x45);
  }
  else if(button2State == 0)
  {
    buttonStatus2 = 0;
  }

  if(button3State == 1 && buttonStatus3 == 0)
  {
    buttonStatus3 = 1;
    noteOn(0x90, 0x27, 0x45);
  }
  else if(button3State == 0)
  {
    buttonStatus3 = 0;
  }

  if(button4State == 1 && buttonStatus4 == 0)
  {
    buttonStatus4 = 1;
    noteOn(0x90, 0x28, 0x45);
  }
  else if(button4State == 0)
  {
    buttonStatus4 = 0;
  }

  if(button5State == 1 && buttonStatus5 == 0)
  {
    buttonStatus5 = 1;
    noteOn(0x90, 0x29, 0x45);
  }
  else if(button5State == 0)
  {
    buttonStatus5 = 0;
  }

  if(button6State == 1 && buttonStatus6 == 0)
  {
    buttonStatus6 = 1;
    noteOn(0x90, 0x2A, 0x45);
  }
  else if(button6State == 0)
  {
    buttonStatus6 = 0;
  }

  if(button7State == 1 && buttonStatus7 == 0)
  {
    buttonStatus7 = 1;
    noteOn(0x90, 0x2B, 0x45);
  }
  else if(button7State == 0)
  {
    buttonStatus7 = 0;
  }

  if(button8State == 1 && buttonStatus8 == 0)
  {
    buttonStatus8 = 1;
    noteOn(0x90, 0x2C, 0x45);
  }
  else if(button8State == 0)
  {
    buttonStatus8 = 0;
  }

  if(button9State == 1 && buttonStatus9 == 0)
  {
    buttonStatus9 = 1;
    noteOn(0x90, 0x2D, 0x45);
  }
  else if(button9State == 0)
  {
    buttonStatus9 = 0;
  }
}

void noteOn(int cmd, int pitch, int velocity) {
  Serial.write(cmd);
  Serial.write(pitch);
  Serial.write(velocity);
}

A Maker Wedding

Initially I wasn’t sure how much our wedding was truly going to represent my fiancée and I, after all, we wanted our family and friends to enjoy themselves and feel included — as with any large event there are a lot of expectations to manage. After deciding to craft my own Edison-style light fixtures for our reception I realized that the occasion was, in addition to a celebration of our life-long commitment to each other, an opportunity for us to showcase our creativity and perhaps introduce some of our family and friends to aspects of ourselves they may not have known existed.

In retrospect we probably took on too much, but it allowed us to feel the occasion was a true reflection of ourselves — for me this meant soldering, stripping, crimping, twisting, programming and no small amount of brow furrowing. None of these projects could’ve come together without the help of my wonderful wife Ester, who not only said yes, but also collaborated throughout and trusted me to deliver on some very important aspects of our big day. In addition, a big thanks to my dear old Dad who took time to help me with the lengthy task of wiring the Edison fixtures and to the friends and family who helped us setup and teardown these, and other installations.

Animated Arduino LED matrix lounge table top

Vinyl “flexi” record wedding invitations

XBee remote relay as photobooth RF camera trigger

Bachelor party wireless Arduino accelerometer Stab-O-Meter

JQuery Animated Wedding Website


Various puppet arms available at Obscura Antiques & Oddities, New York

osPID Sous Vide: Open source high tech cooking on a budget

osPID Sous Vide

It seemed inevitable that I’d put together a sous vide immersion cooker, when I came across a post regarding the osPID I knew the time was right. The osPID or Open Source Proportional–Integral–Derivative Controller is a device which can be employed to turn a heater on and off in such a way as to keep the temperature of an environment at a specific level — in this case a container of water used to cook sealed food, or a sous vide.

What I liked about the osPID is that it’s more than just a PID, it’s a platform. Programmable as any Arduino is along with four buttons, a two line LCD display (my favourite white-on-blue style) and limitless expansion possibilities, the osPID can be used in many, many applications — a sound investment I thought, so I invested. Can anyone spot the other PID in the gallery?

Commercial sous vide cookers can be extremely expensive. Creating one yourself is easy, it can be taken apart for storage and you can also salvage parts from it for other projects if need be.

Parts

  • osPID Kit $85.00 (Rocket Scream)
  • Exoterra Repti flo 200 Circulation Pump $10.99 (Pets & Ponds)
  • Milwaukee Type K 49-77-2002 Thermocouple $14.17 (Amazon)
  • Norpro 559 300 Watt Water/Tea/Coffee Heater $7.05 (Amazon, eBay) *Ensure the coils are submersed before powering (plugging-in) or these will fry themselves
  • 12V, Positive Center, A/C Adapter
  • Grounded Extension Cable
  • Coat Hanger
  • Clip

Alternate Parts

Once I had the osPID up and running, thanks to great support from Brett (one half of the dynamic duo responsible for the osPID), I cut the black (hot) wire of the extension cord and attached each stripped end to the relay onboard the osPID. By using an extension cord I can plug any type of heater into the relay, for this project I purchased two Norpro Water/Tea/Coffee Heaters which have a useful clip style base. Because the extension I wired only had one outlet I needed a power bar to plug both heaters in — whether or not you’ll need one will depend on how many heaters you want to use.

I then purchased a K-Type thermocouple (don’t ask me what it means, K-Type is what the osPID supports), removed the connector it came with and connected the positive and negative leads to the thermocouple terminals on the osPID. These terminals are polarized so keep track of positive and negative leads on the thermocouple while working.

That’s it really. I purchase a circulation pump to keep the water moving in the vessel and thus heating evenly. I try to include a coat hanger in every project so I used one to suspend the ziplock full of tenderloin secured with a clip in the sous vide.

Keep in mind the thermocouple will most likely not read the proper temperature until calibrated so just use a thermometer to find the target temperature and set the osPID accordingly. For me an input reading of 57 translated to the 130°F I needed for medium rare, so I set the osPID to maintain an input of 57.

I would’ve preferred a larger bowl and will track one down, but the Beef Tenderloin With Lemon-Parsley Butter I cooked with my favourite gal turned out fantastic and we’re looking forward to more sous vide meals.

Thanks to Brett for the swift support and for the osPID itself.

Update: The Norpro Heaters stopped working on my second cook. This is probably due to the fact that I plugged them in before fully submersing the coils, that being said, many others have had these types of cheap immersion heaters die on them — so I included an alternate upgraded heater for those wishing to avoid the issue. Thankfully since I wired in a cord not the heaters themselves I was able to plug in another heat source for the osPID to control in order to get my dinner cooked.

Update: To replace the Norpro Heaters I picked up a couple of heating elements at a local electronic surplus store (Active Surplus) for $3 each. I snipped and soldered the Norpro power cords to the new heating elements and covered the connections with heat shrink tubing. You can see the final results in the gallery above. These weren’t stainless steel but they work just fine, I bent them to follow the curve of the bowl (which I’ll probably regret when I switch to another container) and to keep them from slipping I fashioned some clips out of, you guessed it, left over coat hanger. They’ll probably short circuit if both solder joints hit the water, heat shrinking or no – be mindful of that if you decide to go this route. I believe these are somewhere around 140 Watts, I needed both to maintain a temperature setting.

Kaoss Guitar, Korg Kaoss Pad / Epiphone Les Paul Mod

kaoss guitarA plan began to form. How hard would it be to put the touch pad on a cable of some sort and then mount it on a guitar?

I’ve migrated unmaintained from Community Server to WordPress and intend to maintain it a little better. Seeing as how my Kaoss Guitar mod tutorial was one of, if not the most, popular post on unmaintained I’ve migrated it. At some point I will also convert the forum thread replies to comments on this post. I’m glad to see folks are still doing this mod and putting the resulting intruments to good use.

YouTube Demos

Checking my RSS feeds one day I came across a post on Music Thing regarding a Hugh Manson guitar with an XY midi controller in it. The demo video of this thing on YouTube had the pad controlling a Kaoss Pad, watching this as well as a Muse concert w/ another similar Hugh Manson guitar and a Radiohead show w/ the Kaoss Pad got me hooked. I needed one. Shortly there after I noticed one on good ol’ Craig’s List and picked up a Kaoss Pad 2 for $250 CAN ( sweet! ).

I want to stress that I’m not the first person to do this, perhaps the first to do it on the cheap at home, but props go to Hugh Manson and MJ Guitar Engineering both of who have made guitars with a simliar controller built in.

 

While the Kaoss Pad is fantastic in many ways, it’s not very friendly to guitarists in it’s natural state, I quickly realized this. One would have to have it on a stand of some sort to use it while playing, which wouldn’t do. A plan began to form. How hard would it be to put the touch pad on a cable of some sort and then mount it on a guitar? Usual disclaimer applies, if you break your gear don’t blame me. I suggest reading the entire article beforehand to get an idea of what’s involved.

Step 1, Proof of Concept

The first step I took was to ensure that this would work, at least to some degree by investigating the Kaoss Pad and connecting the touch pad through a cable. Personally I wanted to take this step before committing to a guitar however soldering at this step will most likely have to be redone when fishing the cables through the guitar since the connectors in most cases will not fit through the holes you drill.

Materials

  • 1x Button
  • 2x Female DB9 Serial Connectors
  • 1x Straight Serial Cable Male to Male
  • 1x Soldering Iron

Taking the Kaoss Pad Apart

I’ve got to hand it to Korg, they know how to put a device together. I’ve never been so pleased at the ease of which something’s come apart. There are 4 screws on the bottom plate, 3 screws on the rear of the pad as well as a ground wire screw and a whole lot more on the circuit boards inside. A mid sized Phillips Head ( cross ) screw driver will do them all. First, pop the three knobs off the face of the Kaoss Pad, these should come off rather easily with your fingers, then remove the screws at the rear and the grounding screw. Next remove the back plate screws and remove the plate. Lastly, remove all the screws from the circuit boards inside without removing the boards ( shown in red ).

 

Carefully slide the lower two PCB’s ( circuit boards ) upwards so that the mic and headphone jacks / knobs slide out of the frame, just let these little boards sit where they are once the jacks / knobs are out. You can then carefully move the main PCB slightly to allow removal of the rear PCB ( the one with all the inputs / outputs ) do this slowly and don’t move the main board very much. The touch pad is connected to the main PCB with a all fragile ribbon cable, the rear PCB is also connected to the frame to power the blue light on the top display ( you can disconnect this easily however you don’t have to in order to accomplish what we’re doing ). Once the rear PCB is out of the frame you should be able to lift the main PCB enough to disconnect the touch pad’s ribbon cable, make note of which side of the cable was face up when inserted into it’s connector. The white connector must be opened to allow removal of the ribbon cable, this is done by carefully gripping the edge of the connector and pulling in the direction as if you were pulling out the cable, but don’t pull the cable! just the connector, it will snap open and the cable should then slide out easily. Be very careful with this cable as it’s connection to the touch pad is fragile and in my experience these cables are delicate in themselves.

 

The touch pad is braced to the front of the pad with 4 metal brackets, carefully remove the screws and place these aside. You can then remove the touch pad. Put it somewhere safe and out of the way, I placed it in a ziplock to prevent dust getting into it’s panels.

Wiring Connectors

When disconnecting the screen you would have noticed the small white ribbon cable connector on the main PCB, if you can find one of these to purchase or scavenge from something, great! I was about to fashion a make-shift version when I realized I can just pop that one off the PCB. Removing components from a PCB can be a nasty task, a solder remover will help, perhaps a google search or two on this ( I’m certainly not an expert at it ). Make a note of which way the connector was facing on the PCB. Once this is removed ( or you’ve found a suitable stand-in ) we can start the soldering, run 4 wires from the 4 connections on the PCB where the screen connecter is/was to one of the DB9 connectors ( the red square in the image below ), I used pins 1, 2, 6 and 7 for this although it doesn’t matter as long as it matches the other connector. Next run 2 wires from the hold button solder points on the PCB ( the purple circles in the image below ) to 2 more pins on the DB9 connector.

This next part will most likely have to be resoldered when you mount the pad and hardware in the guitar so it’s up to you whether you want to skip it or not, I wanted to ensure everything worked so I when ahead and did it. Simply solder the button and the ribbon connector ( that you removed from the PCB or replaced ) to the remaining DB9 connector. Refer to the note you made on the placement of the connector on the PCB initially and solder the same leads to the same pins on the connector, make sense? Once this is done refer to your note on how the screen’s ribbon cable was inserted ( or visualize how it was ) ensure that the connector is in it’s open position, slide the cable in and then close the connector. All that’s left is to connect the serial cable and power on the Kaoss Pad, I suggest closing the Kaoss Pad ( sans screen ), before you do, trace the screen opening on the Kaoss Pad onto some paper for use as a template later. The DB9 connector can just hang out the screen opening for now. Don’t worry about replacing all the screws at this point you’ll probably open it up again. Hopefully you’re up and running with the touch pad on a cable now, proof of concept, proven. In the picture below I have replaced the missing pad with a some plexi-glass and mounted the connector.

Step 2, Guitar Shopping

Obviously you may be able to skip this part if you have a suitable victim in mind. I wasn’t willing to risk destroying one of my favorite guitars so I decided to purchase an affordable guitar for just this purpose. I settled on a used Epiphone Les Paul Special 2, it had enough space on the body and a nice flaw hiding black finish. Measure the screen size ( including it’s mounting frame ) and take a template shopping with you to ensure the guitar will have enough space. Also start thinking about button and connector placement. Ideally try to keep these away from the guitar’s own hardware to avoid electromagnetic noise, think also about drilling, you’ll have to drill from the screen cavity to the connector and it’s nice to have the button reside along this path.

Step 3, Hack the Axe

This step is where I’m sure many if not everyone who tries this will deviate from my approach. I’ve never done any wood work on a guitar before, I did this in a near complete vacuum of information, I was too antsy to research much. My plan was to just make a hole the size of the screen through the entire body then drill the path for the connector and button. You could accomplish this hack without making a cavity through the entire body and in retrospect I might’ve been better off, but having the full through cavity certainly helped with adjustments and allowed for less messing with the touch pad once it was in. I removed the strings, bridge, anything really that came off the guitar easily, depending on how you make the cavity you may want to remove tuners and pickups to avoid vibrations damaging them.

Here’s where you’ll all think I’m a lunatic, off to Lee Valley I went and purchased a number of chisels, taped off a template for the screen on the guitar’s body and went to town. Initially I was going to saw out the hole so I drilled out corners and went at it with a fret saw, this wasn’t working fast enough, hence the chisels. Drove my neighbors nuts for a couple nights and eventually ended up with a gaping hole through this poor guitar. I then “smoothed” out the cavity with a rasp.

The cavity should not be the size of the touch pad with it’s mounting frame, as the mounting frame should anchor the touch pad on the face of the guitar. So the main cavity should be slightly larger than the display area of the screen ( which you can reference from the opening in the Kaoss Pad ). On the face of the guitar I created a ledge where the touch pad frame would mount to, allowing the screen to sit flush with the face of the guitar. Also ensure that you create a space for the ribbon cable to loop around behind the screen, be generous for this as the cable is fragile, I used a slip of paper to protect the cable from the wood and chafing.

Once you’ve made this cavity ( or have had someone make it ) you can then drill a hole for the hold button and then for the DB9 connector. Save yourself a headache and design this so these two holes intersect.

I’m sure most of you can make this prettier, but as you can see, it can be rather horrible. This is all covered eventually by a frame/brace to hold the touch pad in on the front and a panel cover on the back.
Step 4, Fabricating a Frame and Back Cover

The frame I made from a semi-translucent plexi-glass about 1/4 inch thick. I cut this with my trusty Dremel, then smoothed it out as best I could with a sanding bit on the Dremel. The center space of this frame should be exactly that of the original opening for the touch pad in the old frame ( a template you made previously ) the width of this frame is up to you really, as long as it is wide enough to accommodate screws which clear the edges of the touch pad. You can see in the image the frame in pink and the touch pad frame in grey. I never used the holes on the touch pad frame for mounting as the screws through the plexi glass held the screen in very well. Remember to always drill into the guitar body before screwing as you don’t want to crack the finish or cause undue stress on the surrounding body.

If you’ve made a cavity straight through you’ll need a back cover. I decided to cover both the original guitar cavity and the new two ( screen and button ) with one new cover. The back cover I used plexi glass as well, too thick in retrospect, you should find as thin as possible. Translucent helps as you can place the plexi glass over the guitar and simply trace the shape of the cavity. Lining the underside of the cavity with foil or copper tape can help shield the cavities, but you can do this later. Simply cut out the shape, make some screw holes ( remember to drill ) and you’re all set.

Step 5, Mounting the Touch Pad and Final Wiring

Without the pad in place try screwing your frame on, if all goes well then remove it, place the touch pad in, I kept the plastic cone behind the screen to distribute the LED light and for protection. I then checked the screen movement, in my case it gave slightly due to my sloppy work so I used one of the braces from the Kaoss Pad body ( which originally braced the screen ) to brace the screen from behind in the cavity. Ensure that you run the ribbon cable behind the screen when you mount it, careful that it is not chafing on anything and is safe from duress.

If you’ve already soldered the DB9 connector to the ribbon cable connector you can try to fish the ribbon connector through the hole you drilled, if it doesn’t fit ( or doesn’t look like it will ) you’ll have to undo the solder, fish the wires and then re-solder, I suggest fishing the button wires first through and out the button hole, then the wires for the touch pad. This is what I did. In the image you can see the touch pad’s ribbon cable inserted into the connector as well as some nasty soldering. An extra two wires you say? The Blue and Yellow wires are to power the blue LED, pick up any LED you like or set and the use the two pins closest to the ribbon cable, in the image yellow is positive and blue is negative. The positive lead on the LED ( the longer of the two LED wires ) should be connected to the lead the Yellow wire is soldered to in the image. The negative lead of the LED ( the longer wire ) should be connected to a 1K resistor ( brown-black-red-gold ) which should then be connected to the lead the Blue wire is soldered to in the image. The four wires for the touch pad connector should match the DB9 connections wired on the PCB of the Kaoss Pad ( as you can see you LED piggy backs two of these ). Wiring the LED wrong will cause a flickering LED and interfere with the pad signal ( however it didn’t wreck anything for me, neither did plugging the screen in upside-down which I did a number of times ).

I then held everything in place with some electrical tape. Place the LED where you get a desirable light. As you can see I lined the cavities with copper tape to reduce EM interference.

Originally I intended to mount the button properly with it’s nut and washer, however the hole I drilled was so snug I said t’hell with it and just soldered then worked it in, since the hole is through I can always push it out from behind.

 

 

Final Notes

There it is, throw the back cover on and you’re good to go. Let me know if something’s unclear, if you run into any problems I can offer advice in regards to how I did it, but I must admit I’m no electrical or fabrication expert.

kaoss guitar
 
Update: The good folks at Two Cherries Instruments have released a new version of their all-in-one kit, the Black Box Kaoss Pad Guitar Kit check it out!