1 Electrical and Computer Engineering Guitar Virtuos Justin D’Alessando (EE) Jacob Dionne (CSE)...

16
1 Electrical and Computer Engineering Guitar Virtuos Justin D’Alessando (EE) Jacob Dionne (CSE) Adam Montalbano (CSE) Jeffrey Newton (EE) Team Kelly Comprehensive Design Review (CDR)

Transcript of 1 Electrical and Computer Engineering Guitar Virtuos Justin D’Alessando (EE) Jacob Dionne (CSE)...

Page 1: 1 Electrical and Computer Engineering Guitar Virtuos Justin D’Alessando (EE) Jacob Dionne (CSE) Adam Montalbano (CSE) Jeffrey Newton (EE) Team Kelly Comprehensive.

1Electrical and Computer Engineering

Guitar Virtuos

Justin D’Alessando (EE)Jacob Dionne (CSE)

Adam Montalbano (CSE)Jeffrey Newton (EE)

Team Kelly

Comprehensive Design Review (CDR)

Page 2: 1 Electrical and Computer Engineering Guitar Virtuos Justin D’Alessando (EE) Jacob Dionne (CSE) Adam Montalbano (CSE) Jeffrey Newton (EE) Team Kelly Comprehensive.

2Electrical and Computer Engineering

Design Progress

CDR goals reached:• Hardware button interface for two strings complete• Microcontroller programmed• Basic GUI functional paired with song bank• New vibration sensing solution

Future goals:• USB interface between microcontroller and GUI• Finalize logic block and wiring

Page 3: 1 Electrical and Computer Engineering Guitar Virtuos Justin D’Alessando (EE) Jacob Dionne (CSE) Adam Montalbano (CSE) Jeffrey Newton (EE) Team Kelly Comprehensive.

3Electrical and Computer Engineering

Prototype Completion

Page 4: 1 Electrical and Computer Engineering Guitar Virtuos Justin D’Alessando (EE) Jacob Dionne (CSE) Adam Montalbano (CSE) Jeffrey Newton (EE) Team Kelly Comprehensive.

4Electrical and Computer Engineering

System Requirements (Revised)

Button Interface:• Must not affect playability of guitar • Avoid wire clutter

String Detection:• Must not affect playability of guitar strings• Output voltage produced must be recognized as logic ‘1’

Microcontroller:• Accurate logic operation on input from buttons• Reliable communication with chosen output interface

Graphical User Interface:• Real-time operation• Interfacing with microcontroller output efficiently• Provide useful results to user

Page 5: 1 Electrical and Computer Engineering Guitar Virtuos Justin D’Alessando (EE) Jacob Dionne (CSE) Adam Montalbano (CSE) Jeffrey Newton (EE) Team Kelly Comprehensive.

5Electrical and Computer Engineering

Finger Placement Detection

First two strings are fully functional. Future tasks:

• Complete the 4 strings which remain.• Finalize wiring organization.

Button array and guitar modifications to be completed in coming week.

Page 6: 1 Electrical and Computer Engineering Guitar Virtuos Justin D’Alessando (EE) Jacob Dionne (CSE) Adam Montalbano (CSE) Jeffrey Newton (EE) Team Kelly Comprehensive.

6Electrical and Computer Engineering

Logic Circuitry

In the past logic operations were done in microcontroller.

Microcontroller can operate up to 16MHz which provides ample sampling rate.

Speed of microcontroller software is a bottleneck. Hardware will be used to speed up logic

operations.

Page 7: 1 Electrical and Computer Engineering Guitar Virtuos Justin D’Alessando (EE) Jacob Dionne (CSE) Adam Montalbano (CSE) Jeffrey Newton (EE) Team Kelly Comprehensive.

7Electrical and Computer Engineering

Microcontroller to PC Interface

Used MIDI adapter to communicate with PC in past demos.

Desired direct communication via USB port. Serial communication can be provided using the

FTDI USB TTL-232 cable.

Page 8: 1 Electrical and Computer Engineering Guitar Virtuos Justin D’Alessando (EE) Jacob Dionne (CSE) Adam Montalbano (CSE) Jeffrey Newton (EE) Team Kelly Comprehensive.

8Electrical and Computer Engineering

FTDI USB TTL-232

Orange and yellow pins communicate with microcontroller through its TxD and RxD ports.

Provides convenient 5V Supply and Ground from USB.

Page 9: 1 Electrical and Computer Engineering Guitar Virtuos Justin D’Alessando (EE) Jacob Dionne (CSE) Adam Montalbano (CSE) Jeffrey Newton (EE) Team Kelly Comprehensive.

9Electrical and Computer Engineering

Guitar Strings Wired to Microcontrollers

2nd and 4th String connected to PD2 (Pin16)

Page 10: 1 Electrical and Computer Engineering Guitar Virtuos Justin D’Alessando (EE) Jacob Dionne (CSE) Adam Montalbano (CSE) Jeffrey Newton (EE) Team Kelly Comprehensive.

10Electrical and Computer Engineering

Voltage Applied to String when Played

Operating voltage of 4.5V to 5.5V for Atmel ATMEGA32 microcontrollers.

Metal pick is powered by 5V power supply. Each string that is played will have 5V running

through it. 6.99E-8 Ohm-m resistivity on the nickel guitar

strings which is 12 times more resistive than copper but still very small.

Gloves will be used in near future to prevent shock and a battery holder will be attached to provide portability.

Page 11: 1 Electrical and Computer Engineering Guitar Virtuos Justin D’Alessando (EE) Jacob Dionne (CSE) Adam Montalbano (CSE) Jeffrey Newton (EE) Team Kelly Comprehensive.

11Electrical and Computer Engineering

Song Bank Design

Note values and timing printed from a text file• First three digit string represents the note to be displayed• Second three digit string represents the time that the note is to be played (in

milliseconds)

Note information is send to GUI to be displayed as song plays• Song played using the “sun.audio” library

Page 12: 1 Electrical and Computer Engineering Guitar Virtuos Justin D’Alessando (EE) Jacob Dionne (CSE) Adam Montalbano (CSE) Jeffrey Newton (EE) Team Kelly Comprehensive.

12Electrical and Computer Engineering

Timing / Beginner Mode

All timing managed by getSleep() method• Allows for dynamic timing

• Every note has a unique timing• Shortest note possible is 1ms

• World record for fastest guitar playing is 20 notes/sec• Timing scheme accommodates any song

Beginner Mode allows user to slow down song for easier playing

• Prototype allows user to play song in half speed• Future draft will accommodate slower speeds

Page 13: 1 Electrical and Computer Engineering Guitar Virtuos Justin D’Alessando (EE) Jacob Dionne (CSE) Adam Montalbano (CSE) Jeffrey Newton (EE) Team Kelly Comprehensive.

13Electrical and Computer Engineering

Graphical User Interface (GUI)

Pre-programmed song notes

User-played song notes

Button Panel

Correctly played note

Incorrectly played note

Fret linesStrings

Top

Bottom

Page 14: 1 Electrical and Computer Engineering Guitar Virtuos Justin D’Alessando (EE) Jacob Dionne (CSE) Adam Montalbano (CSE) Jeffrey Newton (EE) Team Kelly Comprehensive.

14Electrical and Computer Engineering

GUI Design Modifications

Re-design of interface allows fretboards to remain stationary• Frets drawn onto fretboards• Timers used in software to delay notes from being

displayed• Ovals used to represent notes on the fretboard

• Solid oval = pinched fret at oval’s location• Re-colored string = open note on that string

• Improves readability of the GUI• Allows for simpler software design• Results analysis may be an issue

• How to allow user to see previously misplayed notes?

• Way to allow user to see upcoming notes?

Page 15: 1 Electrical and Computer Engineering Guitar Virtuos Justin D’Alessando (EE) Jacob Dionne (CSE) Adam Montalbano (CSE) Jeffrey Newton (EE) Team Kelly Comprehensive.

15Electrical and Computer Engineering

GUI to Song Bank Communication

Song audio is imported and played using the Java Sound API

Songs are then read in line by line from a text file to the GUI software using the Java Scanner class

Note information is extracted within the GUI• Each line of the text file is stored in an ArrayList of String

objects • Switch statements determine note positioning on the

fretboards by checking the first character (the guitar string) and then the second and third characters (the fret number) of each entry in the ArrayList

• Ovals are then drawn at the appropriate position on the fretboard that represents the note, or one of the guitar strings is colored to represent an open note

Page 16: 1 Electrical and Computer Engineering Guitar Virtuos Justin D’Alessando (EE) Jacob Dionne (CSE) Adam Montalbano (CSE) Jeffrey Newton (EE) Team Kelly Comprehensive.

16Electrical and Computer Engineering

GUI to Song Bank Communication (cont.)

Timing of notes is done using the getSleep() and Thread.sleep() methods• getSleep() extracts a delay value (in milliseconds)

based on a line from the text file• After notes are drawn on the fretboard, Thread.sleep()

is invoked with this value to delay following notes from being displayed

This process (aside from the audio portion) repeats until all lines are read from the text file (i.e. – the song has completed)