Skip to content

flesheatinggames/open-ear

 
 

Repository files navigation

OpenEar

featured_graphics_narrow

OpenEar is an open source ear training app for musicians. It's goal is to provide a flexible variety of exercises so musicians will be able to master recognizing any musical pattern that might help them become better musicians.

Currently includes the following built in exercises:

  1. Identify interval
  2. Identify note in a tonal context
  3. Identify chord & chord progressions in a tonal context
  4. Identify a triad chord inversion in close position

The app is still under initial development and might contain bugs and uncompleted features.

Download the app from google play: https://play.google.com/store/apps/details?id=com.openear.www

screenshots

Contribution

OpenEar app is built in Angular using the Ionic library. It uses Tone.js to generate sounds. The easiest way to contribute to OpenEar is creating some new exercises on the existing infra. To contribute follow the following steps.

  1. Fork the repository
  2. open the repository root
  3. Install ionic globally by running npm i ionic -g
  4. Run yarn or npm i (you may need to install node if you don't have it installed already)
  5. Run yarn start
  6. App should be served in the browser!

To implement new exercises, you need to write a class that implements Exercise.IExercise interface. See examples in src/app/exercise/exercises. After implementing this class you will need to add it to ExerciseService#_exerciseList.

If you would like to contribute in adding some features to the core infra of the app, you can do so as well. Here is a quick description of the infra:

  • PlayerService is a wrapper on Tone.js that enables playing parts and return a promise that resolves when the part completed playing.
  • ExerciseStateService manages the state of the exercise, including user actions (like answering, requesting repeat etc.). This does not hold any UI element.
  • ExercisePage is the UI part of ExerciseStateService, and it manages rendering the UI, getting user input and displaying any indication.
  • Under src/app/exercise you will also find a "utility" folder that has a tone of musical utilities like generating scales, chord progression etc. You can also convert notes to numbers to make calculation to them etc.

License

Copyright 2021 Shachar Har-Shuv

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Credits

Piano samples used by Jan Frost from @audio-samples/piano-mp3-*.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • TypeScript 85.8%
  • HTML 8.5%
  • SCSS 5.1%
  • JavaScript 0.6%