Guitar Tutor Design
Line 1: | Line 1: | ||
I like to play guitar and like any musician I would like to play it much better. My music theory is reasonably good so last year I did a jazz course and picked up a bit of experience playing on stage. I'm not so good at improvisation yet and so I have decided to create a tool that will help me improve . It seems like a good idea for an OO project and so here it is. | I like to play guitar and like any musician I would like to play it much better. My music theory is reasonably good so last year I did a jazz course and picked up a bit of experience playing on stage. I'm not so good at improvisation yet and so I have decided to create a tool that will help me improve . It seems like a good idea for an OO project and so here it is. | ||
− | [[Image:GuitarTutorDomainDesigh1.jpg|thumb|Domain Design]] | + | [[Image:GuitarTutorDomainDesigh1.jpg|thumb|Domain Design 1]] |
− | ''' | + | '''Scenarios'''-- Chord Chart Practice. |
− | The user loads a chord chart for the song they want to practice. | + | * The user loads a chord chart for the song they want to practice. |
− | + | * The user presses the start button. After a short pause the program will count in two full bars then an indicator will start to scroll along the chart to mark progress in time with the tempo. | |
− | After a short pause the program will count in two full bars then an indicator will start to scroll along the chart to mark progress in time with the tempo. | + | |
− | The user plays notes on the instrument. These notes and their duration are recorded on the chord chart . Notes are coloured one colour for correct and another for incorrect. | + | * The user plays notes on the instrument. These notes and their duration are recorded on the chord chart . Notes are coloured one colour for correct and another for incorrect. |
+ | |||
+ | * The chart is repeated X (default 3) times or until the user presses the start button a second time. | ||
− | |||
− | |||
− | |||
Chord charts can be of the form ABA, ABAC, ABB, etc. with repeats. | Chord charts can be of the form ABA, ABAC, ABB, etc. with repeats. | ||
+ | The first obvoius change is that ''Bar'' needs to be abstract with concrete classes for the first, last and intervening bars as well as a bar for the start of a repeated section and the end of a repeated section. | ||
− | + | Chords can be of the form: Major, (Major7, Major6, Major6-9, MAJOR7#11), Dominant7, (Dominant9 Dominant13), Sus(b7), minor (minor7, minor9, minor11, minor13), Diminant#5/#9, Dominant#5/b9, Half-diminished, Diminished, augmented Major7, augmented7 and minor major7 to name a few. | |
− | + | Not sure how to represent these yet. Maybe an enum, maybe a class hierarchy. | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + |
Revision as of 07:12, 11 September 2008
I like to play guitar and like any musician I would like to play it much better. My music theory is reasonably good so last year I did a jazz course and picked up a bit of experience playing on stage. I'm not so good at improvisation yet and so I have decided to create a tool that will help me improve . It seems like a good idea for an OO project and so here it is.
Scenarios-- Chord Chart Practice.
- The user loads a chord chart for the song they want to practice.
- The user presses the start button. After a short pause the program will count in two full bars then an indicator will start to scroll along the chart to mark progress in time with the tempo.
- The user plays notes on the instrument. These notes and their duration are recorded on the chord chart . Notes are coloured one colour for correct and another for incorrect.
- The chart is repeated X (default 3) times or until the user presses the start button a second time.
Chord charts can be of the form ABA, ABAC, ABB, etc. with repeats.
The first obvoius change is that Bar needs to be abstract with concrete classes for the first, last and intervening bars as well as a bar for the start of a repeated section and the end of a repeated section.
Chords can be of the form: Major, (Major7, Major6, Major6-9, MAJOR7#11), Dominant7, (Dominant9 Dominant13), Sus(b7), minor (minor7, minor9, minor11, minor13), Diminant#5/#9, Dominant#5/b9, Half-diminished, Diminished, augmented Major7, augmented7 and minor major7 to name a few. Not sure how to represent these yet. Maybe an enum, maybe a class hierarchy.