Play That Note is a flashcard game attempting to help music students learn to read music by displaying a musical note and "listening" with the device's microphone for the correct pitch. The student (user) is notified upon detection of a musical pitch as to whether the correct pitch was played or sung. Statistics are kept for the user's viewing, and also to inform the game engine how often to show individual flashcards. Flashcards with better statistics over time will be shown less often than others.
To run the app, open up the xcode project file and build with Xcode like you would any other app. In order to play the game, Play That Note must be running on a physical device.
The user will be presented at launch with a menu view of four different clef images. To play, select the desired clef. A flashcard with a blank music staff and statistics should appear. At the bottom of the screen, tap the "Start" button. A note will appear on the staff and the pitch engine is activated to detect a pitch. Play or sing a pitch and watch the statistics accumulate.
To access the settings, tap the gear icon on the tab bar. These settings help the user adjust the pitch detection configurations to optimize for the environment (i.e. noise pollution) or instrument being used.
- Consecutive Buffers control how many consecutive buffers must detect the same pitch to trigger user feedback.
- Buffer Size controls the number of audio frames per second a sample size uses to detect a pitch.
- Level Threshhold controls the amplitude of sounds under which pitch detection is ignored.
To access statistics, tap the bar graph icon on the tab bar. Statistics are grouped by clef. To view details of statistics for each clef, tap on the respective table cell. Tap the cell for an individual card to view the card and more statistical details for that card.
For pitch detection, Play That Note relies on the open source framework Beethoven, which itself is dependent on another open source framework, Pitchy. Both can be found on Github:
For displaying musical notation, Play That Note uses the Javascript library Vexflow, which can be found on Github:
XCode 8.3.3, iOS 10.3.2