Chord Hero Miami University ECE 387 5/2/2011 Team Members: Josh Wilson Jesse Griffis Eric Miller
Introduction: The Chord Hero project involves designing, building,and demoing a device for teaching guitar chords without prior knowledge of guitar playing. The final prototype consisted of a series of Light Emitting Diodes (LED's) and push-button switches that displayed a chord and allowed a user to input the correct response. An Altera DE2 Field Programmable Gate Array(FPGA) was used in processing input and output to the LED s and switches which were located on a board we constructed. The chord selection and output to the LED's are sent and then the user inputs the correct button sequence to learn the chord. When a correct chord structure is inputed by the user, via the switches, the FPGA will display "Good". The project featured a demo mode showing the capabilities of the C file that were written to display chords and receive input. While the end result was a rough prototype it would be feasible to construct a designing similar to this that could function as a learning tool for beginning guitar players. The following report will give you a better idea of our design process as well as in depth look at the finished prototype.
Research: From the beginning we wanted to make a project that allows a user to interact with a system that accurately simulated a real guitar. The system would have to provide visual instruction and feedback to effectively teach the user real guitar chords. The initial idea we had in mind when starting this project was to implement an embedded system inside a real guitar neck. The system would consist of LED s mounted underneath each string that would show the user the correct notes to play. After obtaining a used guitar neck we tried to drill out a section to accommodate the LED s but quickly discovered that we lacked adequate space to contain the circuitry required. The next approach we designed consisted of a series of switches and LED s to simulate as close as possible a real guitar without the limitations of the small guitar neck. The LED s would light to show the proper notes and chord structures and then the switches would be in place to allow the user to input their response and receive feedback from the system. Since it would be fairly expensive to buy switches to represent an entire guitar neck, we decided to concentrate on the first three frets of the guitar neck where most of the major and minor chords are played. After we decided on the design for the neck our next task was to develop a controller to handle the user input and various output that we required. Our first choice was to develop a system on the Arduino micro controller. The Arduino is cheap an easy to program, however it is quite limited in its capabilities. We quickly learned that there would not be enough inputs and outputs on the Arduino to handle all the switches and leds. At first we thought it might be possible to use led drivers to handle the output, but each switch required and independent separate input that couldn't be handled in a straightforward way. The option for the Arduino was ruled out at this point. Since the Arduino lacked the capability we required we decided to pursue a route that utlized an FPGA. The De2 board that we have used previously in other courses has more than enough I/O pins for this project. The real issue with using the FPGA is the complexity of the code required to program the board. The De2 must be programmed in Verilog HDL making the code portion of this project much more difficult than what would be involved in the Arduino. We spent about 4 hours developing a hardware program that would output to LED s and input from switches. The complexity involved in this simple program quickly led us to search for another option for our programming needs. At the suggestion of Dr. Jamieson we started to research implementing a softcore processor on the FGPA that would be capable of running a C file. The complexity involved in implementing the processor is quite large, but once the processor is on board the project is fairly straightforward. Although it took a long time to get the processor working we were able to develop a more advanced program with better features that we would have been able to pursue in hardware alone.
Project Timeline: February 2011 - Attempted to separate a real guitar neck in order to drill holes and run wire through it. This did not turn out too well for the guitar neck because wood glue is strong and does not like to separate. We sought other alternatives such as plywood to simulate a guitar neck. March 2011 - Talked about parts for the guitar and the ground work was laid on how to implement the project. The parts were ordered and received. The FPGA was looked into along with the Nios soft processor and it was chosen due to the multiple inputs and outputs using the IDE cables. April 2011 - Early April-Still trying to get the soft-processor working and able to accept the C program that implements the input and output. Have drilled holes and put in the push-button switches for the guitar replica. We have also begun soldering all of the switches. Mid April- The soft processor is working and are now focusing on the C code to cooperate with the processor for our inputs and outputs. We have been able to set up the switches for testing and now soldering a few LED s in order to test the C program. End April- Demo night is quickly approaching and we are nearing completion of the project. The remaining LED s are installed on the plywood and most of them are soldered. A slight problem of solid solder connections with the LED s has presented itself causing them to stop working intermittently.
Finished Prototype: At the heart of this project was the Nios soft processor which allowed for the FPGA to operate and interpret the C programming language. The actual visual and hands on aspect of the project came easier than setting up the processor. A piece of ¼ plywood was laid out with 18 LED s behind 18 push-button switches which made our three frets of the guitar. Two IDE ribbon cables were placed down the plywood of the simulated guitar in order to accept the push-button inputs and output the correct sequence of LED s. With an abundant length of wire and solder we were able to bring the hands on aspect of the project together. The ribbon cables provided input and output to the FPGA. The switches were fed in by one ribbon, and the FPGA used the information to determine of the chord was played correctly. If it was, the LED seven segment displays in the DE2 board displayed Good We used two key switches on the board to allow the user to go through the chords in its memory. We programmed the 7 Major chord used in many songs, and are considered the basics to play guitar; they include the following chords: A, B, C, D, E, F and G. We also programmed in a demo mode so that, when it is not in use, the device will display all of the chords on the display and on the LEDs on the neck. Conclusions and Future Work: There are a few problems we would want to address in future designs. The final demo guitar was touchy because the wiring on the back would sometimes break and the LED s would not light up. Reducing the overall size of the neck of the guitar so one could play like a real guitar would be key. One way to improve our design is to try and acquire smaller push buttons or a sort of smaller input strip. Another design improvement would have the wiring of the LED s to be more stable and isolated from constant touch of the user. More chords could be added to the chord library. Another key aspect of learning the guitar is what strings to strum and timing. The timing aspect would need separate inputs and could probably run on the internal clock of the FPGA. These ideas would drastically improve Chord Hero and would allow for songs to be implemented into the system. A user could upload a song and set the pace at which they wanted to learn the song. This would be an ultimate design implementation if a user could choose a song, upload it, and then have the system break the song down into certain chord progression s to teach the user the song at their desired pace. Once all the chords and demo mode were programmed in the FPGA, we were running low on memory. In fact, we had to remove a light display we had the device do when it was in demo mode because we ran out of memory in the Nios system.
About the team Josh Wilson I am a studying electrical engineering but have also concentrated my studies on the computer side of the discipline. I chose this project because I am a guitar player and I liked the concept of designing a system that could help beginners out. I also liked how we were able to tie in some simple circuits with a computer system that we also made. ECE 387 provided us with a the opportunity to work on an open ended project in team format. I think this kind of experience is key to finding a desirable career when we graduate and will certainly list this project on my resume under accomplishments. Eric Miller Also currently studying Electrical Engineering and since high school have studied analog circuit analysis. The digital side of electronics has come relatively easy and enjoyable. This project was a perfect fit, because I have created analog guitar effects in the past and do enjoy playing guitar. Prior knowledge of soldering and continuity testing learned in high school helped in this adventure. Incorporating hardware with software will always be a challenge and this project was a valuable learning experience. This ECE 387 class was unlike any other learning experience, and has clearly improved my problem solving process. This experience will undoubtedly further my career as an engineer. Jesse Griffis I am studying electrical engineering. I have specifically worked with FPGAs, and have performed research on the placement problem with FPGAs using genetic algorithms. This project involved the use of an FPGA and I have learned how to build a system on the chip. I found this to be challenging, but gives the FPGA more power to manage applications and ease of use. I found ECE 387 as one of the most important classes in my college experience because it allowed me to use the skills and education I have learned and create practical applications like this project. I feel this practice will further my experience and help me in my career.
Sources: Dr. John Loomis / http://www.johnloomis.org/digitallab/ Altera / http://www.altera.com Sparkfun / http://www.sparkfun.com