Skip to content
/ Bemol Public

🎵 Bemol is a free and open-source ear training app that helps music hobbyists and music students train and develop relative pitch.

License

Notifications You must be signed in to change notification settings

ftchirou/Bemol

Repository files navigation

🎵 Bemol

GitHub Workflow Status GitHub Workflow Status GitHub release (latest SemVer)

Bemol is a free and open-source ear training app that helps music hobbyists and music students train and develop relative pitch, the ability to recognize a played musical note in a given tonal context.


bemol-home


Contents

Background

Bemol helps people learn the character of each musical note by having them internalize how each note relates to its nearest tonic in a given key. In each practice session, the user is prompted to identify a series of played notes. Before each note, Bemol plays a I - IV - V - I cadence to establish the key. After the user has identified the note, a short melody is played to resolve the note to the nearest tonic. Listening to this final resolution helps cement the relationship between the note and the tonic in the ear and the mind.

As this process repeats, the user starts to internalize the character of each note in a given tonal context. This helps develop relative pitch and eventually they will have a much easier time recognizing any note as long as a tonal context is clearly established.

This ear training method was first described and implemented by Alain Benbassat in his free Functional Ear Trainer desktop app. Bemol is simply a free and open-source implementation of the method for iOS.

How it works

Bemol is organized in a series of progressive levels. The first level consists only of the first 4 notes in the key of C major. Once the user has at least 90% accuracy in this level, they can move to the next one, where they can practice the next 4 notes.

Once the entire scale is mastered, the next level will introduce chromatic notes. After this, a new key is introduced. This can go on until the user has practiced in all 12 major and 12 minor keys. Or they can choose just to practice in a random key after they have mastered the keys of C major and C minor.

How to get it

  1. Bemol is available on the AltStore.
    • First, download and install the AltStore PAL app here.
    • Then, copy this URL and add it as a source in the AltStore app.
    • Finally, download Bemol from within the AltStore app.
  2. Alternatively, you can install Bemol from TestFlight here. This option may be useful if you don't have access to the AltStore or if you prefer to use the cutting-edge version of the app.

Important

The version of the app in TestFlight is the most recent development version. Which means that it may contain newer features and/or improvements not yet available in the official release on the AltStore. On the other hand, it is also less stable and may contain newer bugs and crashes. You can help and contribute to the development of Bemol by reporting these bugs through TestFlight.

For developers

How to build and run

  1. Install Xcode. Bemol is built with Swift 6 and Xcode 16.2.

  2. Clone the repository and run cd Bemol/.

  3. Run touch ./Configurations/Signing.xcconfig to create an empty signing config file.

  4. Run open Bemol.xcodeproj to open it in Xcode.

  5. Press Run in Xcode to launch the app in a simulator.

  6. If running on a device, you have to provide the id of your development team in ./Configurations/Signing.xcconfig. The contents of the file should look like this:

    // Signing.xcconfig
    
    CODE_SIGN_STYLE = Automatic
    DEVELOPMENT_TEAM = <your-development-team-id>
    

Tip

To be able to hear piano sounds (and not sine waves), you'll need to download a sound font in the sf2 format and save it under Bemol/Resources/sound_font.sf2. The TestFlight version of Bemol uses an excellent and open-source sound font from MuseScore that you can download here (look for MuseScore_General).

How to run the tests

  • Product -> Test in Xcode.
  • Or run ./Scripts/test.sh from the command line. The tests results bundle will then be available at Artifacts/test-results.xcresult.

How to ship

Run ./Scripts/upload_to_testflight.sh <marketing_version> <build_version> to archive and upload a new build to App Store Connect. ./Scripts/next_marketing_version.sh and ./Scripts/next_build_version.sh can be used to automatically generate the required arguments.

The script expects the following environment variables to be set:

  • APPLE_ID
  • APP_STORE_CONNECT_API_KEY
  • APP_STORE_CONNECT_API_ISSUER

These are self-explanatory and their values can be found in App Store Connect. The script also expects a private key file to be available at private_keys/AuthKey_<APP_STORE_CONNECT_API_KEY>.p8.

License

The code and data files in this repository are licensed under the terms of the version 3 of the GNU General Public License as published by the Free Software Foundation. See the LICENSE file for a copy of the license.

About

🎵 Bemol is a free and open-source ear training app that helps music hobbyists and music students train and develop relative pitch.

Topics

Resources

License

Stars

Watchers

Forks