Friday, April 27, 2012

DEMO DAY!





Demo day is here, and RoboUke works pretty well! 







Some glamor shots:

Slave Ukulele

Master Ukulele and mbed





Project Abstract:


 RoboUke
Sam Wolfson and Nick Howarth
Team Fox
RoboUke is a trainable, robotic ukulele system developed on the mbed LPC11u24. The user plays a simple chord progression on the master ukulele, and RoboUke stores the chords and rhythm data, parses it, and then mimics the chord progression on the slave ukulele. In the recording mode, RoboUke uses a microphone to detect when the user strums a chord, and then identifies the chord using pressure sensitive resistors acting as switches on the fretboard of the master ukulele. An LED countdown lets the user know when to start recording, and the recording mode will stop once a strum without a chord identity is detected. In playback mode, the chord data and strum timing is used to control servos on the slave ukulele. The chord progression played during the recording mode is repeated until the user exits playback mode. The slave ukulele uses three servo motors to achieve six possible bar chords (C, D, E, F, G, and A) and another servo to strum the strings. RoboUke is capable of storing chord progressions on different channels, as well as playing back pre-programmed songs. This concept of trainable mechanic actuation has applications in consumer electronics as well as biomedical devices.




Dropbox link to presentation slides:

https://www.dropbox.com/sh/qgykkgex3rawvmk/fPo9g_LOTJ


Wednesday, April 25, 2012

So it almost works...

After a couple more sessions in the lab, we have both input and output working. We need to work on the timing a bit, but the chord progression works pretty well. Watch Nick play a simple tune and Robouke's attempt to copy it in the video:


Thursday, April 12, 2012

Strumming and chord changes



Everything needs to be mounted properly to the ukulele, but the strumming works! 

Chord Actuation Mechanics





The chord actuation mechanics are almost done. The video shows a hand test of the servo spacing playing the proper chords.




Here are some pictures of the mechanics:

Oulala

Close-up of mounts

Nick is proud

Thursday, March 29, 2012

Chord ID using force sensors

In the likely scenario that we are unable to achieve chord recognition using FFTs, our backup plan is to use force sensitive resistors underneath the strings on the frets of the ukulele. These sensors would act like switches which would be activated when pressed, and the chord would be identified based on the state of the each of the sensors, as conceptualized in the following images.
Basic major chord diagram. Shows which of the basic major chord formations overlap.
Possible Boolean logic equations to identify chord based on state of force/pressure sensors.  Topological issues, namely the proximity of the sensors on the same fret under adjacent strings, were considered in determining the optimal logic scheme. We are planning on purchasing these force sensitive resistors:  http://www.sparkfun.com/products/9673









Sunday, March 25, 2012

Here we have a nice flowchart of the architecture of RoboUke. Everyone loves flowcharts.




On chord recognition

Recognizing the chord that the user is playing on the master ukulele will likely be the most complicated part of the project. Our original idea was to use a DFT to identify the four dominant frequencies of the audio signal from the master ukulele, and determine the chord that way. While researching the feasibility of this approach, Nick came across this discussion of identifying guitar chords. It seems that this approach may turn out to be even more complicated than we initially thought, but it could still be doable.

Some alternative chord identification methods that we have been brainstorming are:

  • Ditch the idea of a real ukulele as the master altogether, and use a guitar-hero style controller (lame, but fairly easy)
  • Take sample audio signals from the chords of interest, and match the incoming audio signals with the stored audio signals (much less lame, but potentially more challenging)

In the next few days we will have to nail down exactly how we want to approach this problem. Stay tuned.

Saturday, March 24, 2012

And so it begins...

Welcome to our blog!  My lovely comrade, Sam Wolfson, and I, Nick Howarth, will be documenting our month-long final project for ESE 350 (Intro to Embedded Systems and Microcontrollers). 

The goal of our project is to design and implement a trainable robotic ukulele system.  The system will consist of a "master" ukulele, played by the user, and a "slave" ukulele, which will mimic the user's recorded performance -- perfect for the lonely ukuleleist in your life!

Follow us on our journey as we delve deep into the world of DSP and tinker with servo motors!