Welcome to the GuitarFace Wiki! Check out the Github repository for GuitarFace here: https://github.com/ginacollecchia/GuitarFace
Why is this project called guitar face? It started with a feeling:
Oh hey there Brian May! I bet you're playing some sweet jams. Here are some other amazing guitar faces. Try to notice similarities between them.
Gary Moore, amazing
Ritchie Sambora, squeezing one out
Pat Metheny is trying, people.
Yngwie! So many nooootes.
Joe Satriani, stunned
- open mouth, maybe even some tongue action, OR pursed lips
- closed eyes OR buggy eyes
- scrunched face OR long face
- raised head?
With these observations, we believe there might be extractable features of a guitar face. GuitarFace seeks to pair musical data from a MIDI guitar input with computer vision in order to trigger events in a visual environment, so that guitarists (and other musicians alike) can get real time feedback of their playing, and fun rewards for their practice sessions.
- To detect the facial features of the guitar face using OpenCV
- To make a visualizer of musical MIDI data that records and rewards user input in real time
- To be able to compare sessions against one another and track individual progress
In our design of the musical data that we'll be providing to players, we make a few assumptions about what musicians want. Our model is similar to an exercise routine, where the user could set goals / thresholds for their practice sessions, such as:
- duration of the session, number of notes played
- count of big jumps between pitch (adventurousness, comfort with pitch)
- count of pitches in the key, with key set by user at beginning
- count of notes on the beat, with tempo set by user at beginning and a metronome feature
- count of vibratos
- count of pitch bends
- count of slides
- count of power chords
- count of musical intervals (m2, M2, P4, etc.)
- chord labeling
- dynamic range (moving average / smart)
- pitch range
- stage presence, guitar face
- fretboard heatmap: where are you playing most frequently?
- repetition of pitch sequences
- clarity and consistency of dynamics and intonation
- mixture of divisions of the beat (i.e., all quarter notes = bad)
- pace of playing
- extra-musical moments, such as palm mutes and artificial harmonics, if detectable
These comprise the analytic structure of our software. Each of these things will trigger an event, whether it's a histogram or other graph, numerical count, graphical object (a squiggly for vibrato, changing with time, fading away completely after some time lapse), or graphical environment change (perhaps when certain goals are reached--100 notes! things are blue now! whoaaa!).
MIDI data is output in real time from a MIDI guitar pedal unit, the Roland GR55. The data isn't perfect, so hopefully, we won't have to spend much time or energy scrubbing of this data in order to get decent, guitar-like musical data into the system. We don't need to play it back, anyways. We could also augment the USB MIDI data from the GR55 with 3 other forms of data: the audio signal from the guitar, MIDI out from the GR55, and the audio signal from the GR55, which sounds significantly better than the USB out.
There are two forms of input into the software: MIDI input, and user input. The user input consists of things like "goals" for the current session, key, BPM, metronome on/off, and more options. These data are passed through functions to compute the aforementioned measures, such as number of notes.
These functions are wired up to the graphical display and the graphical events.
Finally, a summary of the session is output and capable of being saved, for comparison with previous sessions.
Therefore, there are 4 main screens: 1. Set user options: how many notes do you want to play? Other goals? Initialization options. 2. Play! See what you're playing appear on screen! 3. End session, save report? Restart? 4. Compare session to previous sessions.
Musicians, specifically guitar players, interested in knowing more about their practice sessions. However, this software can be used by any instrument capable of producing MIDI output. The output can serve as a score, though we don't really think of it primarily that way; we're more interested in the statistics and progress one makes toward set goals in their practice time, such as the change in duration from session to session, or pitch and volume content.
Libraries and previous work
- OpenCV: http://opencv.org/
- Roland FriendJam, for use with their MIDI sensors / pedals / interfaces: http://www.roland.com/FriendJam/Guitar/
Sensors / Accessories
- Godin MIDI guitar
- Roland GR55 guitar MIDI interface / pedals
- Computer camera to detect guitar face
- Lighting for the face?
- Accelerometer / Game-Track to track hip gyration?
- Roshan Vidyashankar
- Gina Collecchia
- Week 1: OpenCV compilation, research; most of MIDI code; graphics setup
- Week 2: OpenCV feature detection progress; MIDI + graphics integration and design; make the thing work, basically
- Week 3: UI/UX tweaks
- Week 4: Code code code