Blueprint
- blueprint (will change overtime)
Javadoc
- doc-book (might not be up to date)
Design and architecture
Filter & Pipe Architecture
This architecture is used in get the note pool (sink) from XX (source) by applying filters.
Example
Class Overview
classes
TO FIX
- fix arrow jumping rate
TODO (functionality)
- each mode setting
- least stable time
- error allowance rate
- second rate
- debugging mode
- auto playback answer when correct
- IntervalPracticeFilter mode setting
- triad mode setting
- Global Settings
- save settings when closed the app, reload it when open the app
- song practice mode
- Library page
- user can import midi
- store history of played notes
- database of notes
- SUMMARY page
- report top/bottom 10 notes
- a sentence to cheer up user
User Experience improvement
- Help pages
- note help page
- interval help page
- chord help page
- song help page
- how to create a song and put it in app
- about us page
- user-guide
- user-guide group (on github)
- in app user-guide book
- gestures
- swipe left, swipe right to prev/next question
- ...
User Interface improvement
- better icon, UI
- icon for app
- colour
- font, text colour
- font size, image size to fit to different devices
- colour scheme, (customize)
- default
- dark
- ppap
- random generate button icon (pineapple, penpinapple, applepen, ppap)
Milestone July 25 2019 (dev -> master)
Lots of changes
-
Architecture overhaul
- split model and controller, model view controller architecture is much clearer
- proper observer pattern between controllers and Model
- factory design pattern for creating questions and mode fragments
-
Features and practice modes
- Note, Interval Filter tab fragment for note, interval, triad, graph mode
- Note Graph, Interval, Triad, Song Practice modes working
- Summary Page getting started
BUGS and TODO:
Song Practice Mode
- (bug) Stop Midi processor when switching mode by clicking on items in navigation menu
- (improve) Song library to select songs (replace current spinner)
- (improve) Make song practice mode and song playing mode synchronous, i.e. switching from song playing mode to song practicing mode, the user is on the note that was in song playing mode, and vice versa
- (improve) Allow user to import their own midi
- (improve) use local storage or cache for tmp files like playing.mid
Note Graph mode
- (improve) can display notes in y axis (as an option)
Summary page
- (todo) notes user should practice more often and notes that user did well
- (fixme) graph in summary page should reflex accuracy and stability of a given note
PerModeSetting
- (fixme) it's a bit messy right now, can probably simply some complexity in the code
General
- (fixme) arrow jumping animation, can behave better when slowing down
- (improve) consider adding three arrows for offtrack level
- (todo) misc page for every mode, and their working properly
- (todo) global setting page
- (todo) more page
- (todo) music theory page
- (todo) faq page, ....
- (improve) add a hidden box, or using gesture to next/prev question
- (todo) colour theme
User experience improvement
- (todo) add comment text box, which will show random encouraging sentences
- (fixme) proper help message for each mode
- (improve) per mode setting page and navigation menu color should be according to each mode
- (improve) app intro page improvement
- (fixme) for phones of small resolution, can display proper text size, and graph, etc.
Pages
Help Pages
Note Practice Mode Help Page
Please sing the note that is showing on the screen.
If you don't understand music notation, please visit the major scale.
You can skip this question by long press on screen.
You can play the sound by tapping the play sound button on right top corner.
Interval Practice Mode Help Page
Please sing the note plus/minus the interval.
If you don't understand music notation, please visit the major scale and generic intervals.
You can skip this question by long press on screen.
Triad Practice Mode Help Page
Please sing the note plus/minus the interval.
If you don't understand music notation, please visit introduction to chords.
You can skip this question by long press on screen.
FAQ Pages
Why icon is A4#?
Well, A4 is 440Hz, but that’s too standard, so maybe A4# looks smarter.
Where do you recommend to learn music theory in a short time?
Definitely this website
What is special about this app compared to all other app that also trains singing/listening skills ?
- This app’s goal is let the user get confidence
Note Question Help Page
You are supposed to sing the question note shown on screen with in error range for at least dT time, where error allowance rate and dT can both be set in global setting.
For what does e.g. A4# mean, visit this website.
Interval Question Help Page
Deliverables
- D1 (D1 pdf) (slides) (wireframe)
- D2 Peer to Peer (D2 pdf) (modified P2P pdf on course website)
- D3 Demo (D3 pdf)
- D5 (D5 pdf)
- D6 (D6 pdf)
Song added
- Auld Lang Syne (pdf, midi, ly)
- London Bridge Is Falling Down (pdf, midi, ly)
- Twinkle Twinkle Little Star (pdf, midi, ly)
- Carrying you (pdf, midi, ly)
- 団子大家族 (Clanned) (pdf, midi, ly)
Songs to add (probably no need to worry about copyright)
- Minuet in G major by Bach
- Fur Elise
- Marry has a little lamb
- Caro mio ben
Songs to add (copyright?)
- Do Re Mi (Sound of Music)
- 我是一个粉刷匠 (I am a painting master)
- 泡沫 (... bubbles ?)
- Dearly Beloved ( Kingdom Hearts )
- Heart and Soul
Compiling and playing instructions
Users are encouraged to create their own pieces, it is not hard to write a music sheet using lilypond. It can also output a midi file where you can use a midi player (e.g. on ios, midi opener) to play it.
Android animation
API for sound frequency detection
Git
- git log --graph
- gitk
- gh-pages
- git rebase
demo
colors
Java library
- Jmusic
- javax.sound.midi-for-Android (might out of date)