Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/liebharc/learnnotes
Android app where users have to decide if a note is in tune or not.
https://github.com/liebharc/learnnotes
Last synced: about 1 month ago
JSON representation
Android app where users have to decide if a note is in tune or not.
- Host: GitHub
- URL: https://github.com/liebharc/learnnotes
- Owner: liebharc
- License: other
- Created: 2016-08-02T05:58:25.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2016-08-20T19:12:07.000Z (over 8 years ago)
- Last Synced: 2024-04-20T00:24:32.051Z (9 months ago)
- Language: Scala
- Size: 10.3 MB
- Stars: 0
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: License.md
Awesome Lists containing this project
README
# Violin Feedback
A small tool which analysis the sound of a single instrument and calculates some basic metrics (loudness, pitch, speed). Metrics can provide some useful feedback to a user. It is however mandatory to understand how it works otherwise the metrics might make not much sense or might be misunderstood.
## Metrics
The feedback tab is a graph with tree traces: One for amplitude/loudness, pitch error and speed. As can been seen the accuracy of the metrics isn't very high. It's however visible already that the 2nd half of the song was played faster and the pitch was pretty wrong too.
![Screenshot2](Screenshot2.png)If you zoom in then the data points will be annotated with the note name.
![Screenshot1](Screenshot1.png)## Algorithm
The underlying algorithm is very basic.
While recording do the following:1. Obtain sound samples of about a 1/8th of a second (frame length)
2. Calculate spectrum of the frame (using a FFT)
3. Find the maximum magnitude, the position of the maximum gives us the frequency and the amplitudeAs soon as the recording is finished:
4. Find peaks in the amplitude data obtained earlier
5. Assuming that every peak is a note, remove all amplitude and frequency values which are not at a peak
6. The time delta between the position of adjacent peaks gives us the speedOne more note: This was tested with an external microphone which is connected to the phones Aux In. It also works with the phones microphone but - at least for the test device - the results were much poorer.
## Build
`sbt android:install` with a connected Android device