Joytunes (mini-project 1)

Anis Abboud, Brendan Fruin


http://www.youtube.com/watch?v=0bC4fYWSs4c

Introduction

We set out to create a new method of text entry using thumb joysticks, but wound up creating Joytunes, a music playing system for the less musically inclined. Joytunes uses two joysticks to play notes and two pedals to play a cymbal and a bass drum. Joytunes currently supports alternating between the flute, guitar, oboe, saxophone, and violin. Each instrument supports two octaves starting just before Middle C and ending around G5. The position of the joystick selects the note corresponding to the angle in the interface while clicking the joystick cycles through the available instruments. The following paragraphs outline Joytunes music interface, the keyboard interface and the physical setup along with the parts used.

Music

The Joytunes music mode interface consists of two circles denoted note circles with eight notes on each circle with a background image of the current instrument selected along with two pedals for additional instruments. Joytunes currently recognizes eight quadrants for each joystick and once a joystick has been moved at least ninety percent away from its origin the note is played once. Holding a note does not continue to play it, but this can be done by going below the ninety percent threshold and then going above it again. ‘Sliding’ to different notes above this threshold will play the different notes without having to go below the threshold each time. Joytunes currently supports the flute, guitar, oboe, saxophone and violin which can be cycled through by clicking either joystick. The current instrument is seen as a background image between the two note circles. Note that due to limited open sound files, the notes may vary slightly between different instruments, but they approximately range from A4 to G5. Joytunes also has two preset pedals for playing a cymbal and a bass drum. In this way, Joytunes allows an amateur musician to become a one-person band.
flute.PNG
guitar.PNG
oboe.PNG
saxophnoe.PNG
violin.PNG

Keyboard
Joytunes’ keyboard mode interface varies slightly from music mode in that the keys have now been replaced with characters. Each circle in the keyboard mode interface consists of sixteen characters totaling thirty-two characters allowing for input of the entire English alphabet with some additional punctuation characters. To access the other characters of the keyboard, a click of the left thumb joystick changes the mode to caps lock which makes all of the characters uppercase while clicking the right thumb joystick changes the characters to numbers and symbols. To deal with the increased number of characters with limited user precision, characters are highlighted in red when selected and only outputted when the thumb joystick returns to its origin. The left pedal backspaces and erases the last character inputted while the right pedal outputs a space character. While slow to learn and more difficult to use than a normal keyboard, the Joytunes’ keyboard mode presents an alternative approach to text entry.
keyboard1.PNG(default layout)
keyboard2.PNG(upper-case layout after clicking the left joystick)
keyboard3.PNG(symbols layout after clicking the right joystick)

Hardware

20140228_165452.jpg
20140228_162208.jpg
20140228_162156.jpg(the two thumb-joysticks connected to the breadboard)
20140228_163447.jpg(pedals, for bass drum/cymbal, or space/backspace)

Challenges
  • Throughout the development of Joytunes, we ran into hiccups related to the assembly of the components and interpreting the data we received from them into actions on the interface. We both had less than a month of experience experimenting with Arduino and neither one of us had experience with connecting or using the components we used.
    Our first step was to solder the thumb joysticks to their breakout boards which required time learning to solder. The next step was getting the readings from the two buttons that we used as pedals. The items came with no documentation and only trial and error resulted in getting their state information to the Arduino.
  • Another issue we ran into during the development of the music layout, is that very often, the vertical/horizontal notes were accidentally played while the thumb was turned to one of the diagonal angles, due to the imperfection of the joysticks.
    To solve this problem, instead of splitting the 360° (invisible) circle into 8 equally-distributed areas, 45° each, we increased the area of the 4 diagonal notes to 60°, and decreased the area of the other notes to 30° each.
    Also, we play the note only if the joystick is at least 90% away from its center, so that only when the joystick is "fully" turned away from its center towards a note, the note gets played. That increased the stability as well.

Thoughts about Project

  • Overall, we enjoyed working on this project so much. We haven't had the "joy of making" very often in the past, and this project enabled us to create something fun and working.
  • The only issue that we suggest improving and organizing is the process of ordering parts for the project.
    (We had to order parts on our own and wait for them to arrive before we could start working on the project.)

Links