Blueprint

Javadoc

Design and architecture

Filter & Pipe Architecture

This architecture is used in get the note pool (sink) from XX (source) by applying filters.

Example

alt text

Class Overview

alt text

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 ?

  1. 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

Song added

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

demo

colors

Java library

midi