Difference between revisions of "Android/Music Tutor"

From theGleep.com
Jump to: navigation, search
 
(22 intermediate revisions by one user not shown)
Line 4: Line 4:
 
  |TheGleep |
 
  |TheGleep |
  
;A queue of "notes"
+
= Game Instructions =
:Each note will be pulled off the queue and the image it represents will be loaded into the UI...then I will execute an "animation" against it to cause it to "slide" from right-to-left.
+
The purpose of this game is to help the player learn to read "Sheet Music" or "Manuscript"
  
 +
A random series of notes will be displayed on the staff.  The player will attempt to identify the leftmost note.  As each attempt is made, the current note will be removed from the staff.  A running log of notes is maintained for review and scoring.
  
;Once *that's* working, all of the "notes" will be stacked up on each other, so I'll add some logic to fix that:
+
The final version of the game will serve three functions; Teach manuscript sight reading, train muscle memory for a specific instrument on a specific song, And act as a minimal midi practice/Experimentation platform (Which also allows creation of songs to learn).
: * when the note gets animated, I will add it to an "active animations" queue
+
: * the "slide" instructions will be updated to end (length-of-animations-queue * width-of-a-note) before the left side of the screen.
+
  
 +
Game play and educational experience will combine in the system of 'levels'.  Earlier levels will have few variances, and will focus on core knowledge.  Later levels will incorporate details from earlier, foundational 'lessons'.  There will also be 'boss' levels that summarize a category of lessons.  (See 'difficulty levels', below)
  
;Once *that's* working, it'll be time to honor user input:
+
== Game Play ==
: * wire each button to check if the "head" note in the animations queue is the note for that button
+
<HTML>
: * when the note matches the button
+
<img src='images/MusicTeacher.ScreenShot3.jpg' style="width: 550px;" align='right'/></HTML>
:: + remove it from the animations queue
+
:: + re-animate all of the remaining notes in the queue to "slide" left by (1 * width-of-a-note)
+
  
 +
The interface is divided into three sections; Staff, input and scoring.
  
;at this point, it will be "playable" - but FAR from finished!
+
As the staff fills in with notes, the player will 'guess' which note is next to play.  Every time the player guesses, the leftmost note is removed from the staff (And for aesthetic reasons, all remaining notes will 'slide' to the left)
  
;Time to add a "debug mode" - cycle through all the notes available (and I do mean ALL!  Including keys!) and log what the note should be and what the user selected as the note.
+
Whatever note the player guessed will be sounded by the game, along with the correct note.
  
 +
Scoring will be an accuracy rating, multiplied by level difficulty, taking into account the count of correct sequential note identifications.
  
;The *next* major step will be handling "active" notes:
+
=== Staff ===
: * when the user gets the note right before it's done with the animation
+
The staff part of the interface asks the question "What note is this?"
: * The user is VERY likely to answer while an animation is active, but there are other notes "done" with the animation...like, three notes "stopped" and a fourth note "sliding"...so I need to queue up the "move left by (1 * width-of-a-note) to happen *AFTER* the sliding stops...or revise the active animation to end (1 * width-of-a-note) later than it currently does...
+
  
 +
When space is available, the whole staff (Both treble and bass clef) is displayed.  When space us limited, only one clef is displayed, and the Clef symbol will change as needed.
  
;After that, I have:
+
Because of technical difficulty, as well as learning curve for the player/User, note duration is not considered (Eventually, note duration will be a factor so that the "Game" Can become an interactive tutor, building "Muscle memory" In the musician for a specific song.)
: * "Playing" the note for the button that's pressed (maybe even in "pause" mode...)
+
 
: * changing staffs (trebble cleff vs bass cleff)
+
 
: * scoring
+
=== Input ===
: * Help
+
To create a tool that goes beyond simple sight reading, this game will implement different input 'modes', each oriented to a particular type of learning; Note identification, keyboard key identification, string and fret identification for fretted instruments, and 'audio' and MIDI modes to allow for training on actual instruments.
:: + instructions
+
 
:: + about
+
==== Notes ====
:: + donations
+
In 'notes' mode, user input is collected from a collection of buttons, covering all notes in a single octave (Including sharps and flats): Ab, A, A#, Bb, B, C, C#, Db, D, D#, Eb, E, F, F#, Gb, G, G#
: * configuration
+
 
:: + type of fretboard
+
In motes mode, the octave itself is ignored, all that matters is if the note is correctly identified.
:: + User information for registering high scores (later)
+
 
: * Keyboard
+
==== Keys ====
: * Fretboard
+
 
: * high-scores (online)
+
 
: * "playing songs" - feeding a song into the game so the player learns the song.
+
==== Frets ====
: * levels
+
==== MIDI ====
: * audio feedback (sound the note the user hits)
+
==== Microphone ====
:: Level Progression
+
 
::: level and phase (phase 1 = trebble cleff, phase 2 = bass cleff)
+
=== Difficulty levels ===
::: level 1 - 12 notes
+
 
::: level 2 - 16 notes
+
=== Configuration options ===
::: level 3 - 16 notes (including sharps)
+
==== Strings ====
::: level 4 - 20 notes (including sharps)
+
* Count
::: level 5 - 20 notes (including flats)
+
* Notes
::: level 6 - 24 notes (including flats)
+
 
 +
==== Game play ====
 +
* Songs folder
 +
 
 +
==== Scoring ====
 +
* Minimum success rate for next level
 +
 
 +
 
 +
== Known Bugs ==
 +
{{#ifeq:{{CURRENTUSER}}
 +
|TheGleep |
 +
 
 +
== Development History ==
 +
18-Nov-2011 - Rebooted the development approach to use Adobe Air so that it's cross-platform
 +
 
 +
= Help Text =
 +
 
 +
= Development Notes =
 +
Use adobe AIR to build so it's cross-platform.
 +
 
 +
* [http://www.flashdevelop.org/wikidocs/index.php?title=Main_Page Editor]
 +
* [http://vandelaydesign.com/blog/web-development/adobe-air-tutorials/ Examples/Tutorials]
 +
 
 +
[http://www.cs.cofc.edu/~manaris/spring04/cs220-handouts/JFugue/JFugue-UserGuide.html jFugue] looks like a VERY useful library, but I don't know how well it would integrate to adobe Air.  Even if it's not usable, there is some very good documentation for naming/notation conventions there.
 +
 
 +
 
 +
;Well...now I have to restart ... and I removed all of my other "todo" items, so I'll have to redesign.  Oh, well.
 +
:use jFugue to play the notes!
 +
:There are open-source tuners for android...find one and adopt the "what note is playing" code for instrument mode
 +
 
 +
 
 +
;Todo
 +
: Add accuracy to "Status" section - Phase *and* total
 +
 
 +
: Speed up staff population (for now)
 +
 
 +
: Build the phases (See below for phase progressions)
 +
 
 +
: Show accuracy in "continue" prompt
 +
 
 +
: Support accuracy configuration for moving on to the next level
 +
:: Change "Continue" prompt to support "retry"
 +
:: Save configuration settings
 +
:: Default accuracy
 +
 
 +
: Configuration dialog
 +
:: Minimum Accuracy per phase
 +
:: "Reset" or "Restart" option (clears game state back to level 1, phase 1)
 +
 
 +
: Save game-state on exit
 +
: Restore game-state on startup
 +
 
 +
: Improve animation
 +
:: Slow down the note population and allow users to identify the note before it is "lands"
 +
::: Slide currently active notes to the left by one position
 +
::: revise the "landing place" of the currently active animation
 +
:: Proper honoring of "pause" mode
 +
 
 +
: Add "debug mode" - cycle through all the notes available (and I do mean ALL!  Including keys!) and log what the note should be and what the user selected as the note.
 +
 
 +
:After that, I have:
 +
:: * "Playing" the note for the button that's pressed (maybe even in "pause" mode...)
 +
:: * changing staffs (trebble cleff vs bass cleff)
 +
:: * scoring
 +
:: * Help
 +
::: + instructions
 +
::: + about
 +
::: + donations
 +
:: * configuration
 +
::: + type of fretboard
 +
::: + User information for registering high scores (later)
 +
:: * Keyboard
 +
:: * Fretboard
 +
:: * high-scores (online)
 +
:: * "playing songs" - feeding a song into the game so the player learns the song.
 +
:: * audio feedback (sound the note the user hits)
 +
:: Level Progression - level and phase
 +
:::: phase 1 = trebble cleff
 +
:::: phase 2 = bass cleff
 +
:::: phase 3 = trebble cleff with flats
 +
:::: phase 4 = bass cleff with flats
 +
:::: phase 5 = trebble cleff with sharps
 +
:::: phase 6 = bass cleff with sharps
 +
:::: phase 7 (when keys are added) = Trebble naturals
 +
:::: phase 8 (when keys are added) = Bass naturals
 +
:::: phase 8 ("Trebble Boss") = trebble cleff with all notes
 +
:::: phase 9 ("Bass Boss") = bass cleff with all notes
 +
::: level 1 - 24 notes, all within two steps of the staff
 +
::: level 2 - 24 notes, all within two steps or above the staff
 +
::: level 3 - 24 notes, all within two steps or below the staff
 +
::: level 4 - 24 notes, full range
 
::: level 7+ adds "keys" (base key, key plus sharps, key plus flats, key plus naturals...for however many keys there are)  
 
::: level 7+ adds "keys" (base key, key plus sharps, key plus flats, key plus naturals...for however many keys there are)  
:: + speed
+
::: + speed
:: + number of notes
+
::: + number of notes
:: + allow sharps
+
::: + allow sharps
:: + allow flats (will require adding "flats" to the collection of pictures)
+
::: + allow flats (will require adding "flats" to the collection of pictures)
:: + use "keys"
+
::: + use "keys"
::: - add key signature pictures to slide in
+
:::: - add key signature pictures to slide in
::: - add "naturals" to the collection of pictures
+
:::: - add "naturals" to the collection of pictures
::: - support key signature to evaluate for correct input
+
:::: - support key signature to evaluate for correct input
: * Mic support
+
:::: - bonus points: "Guess the key"
: * ?Time signature and note lengths?
+
:::: - Extra level "Identify the key"
 +
:: * Mic support
 +
:: * ?Time signature and note lengths?
 +
 
 +
: Options/Configuration
 +
:: * Minimum level score (Percent correct)
 +
:: "Reset Game"
 +
 
 +
}}
 
}}
 
}}

Latest revision as of 13:16, 5 August 2013

I'm not saying much about it right now. But I'm going to enjoy using this app for myself.