Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Tonality - a free piano


ic launcher

Tonality is a simple piano keyboard. It allows to highlight scales based on a root note and can label intervals for you. This makes learning of scales much easier.

Copyright © 2019 Sascha Lüdecke <>

Tonality is based on:

Semitone - tuner, metronome, and piano for Android
by Andy Tockman <>
Official website:

Getting Tonality

Get it on F-Droid en badge web generic

net.currit tonality Tonality issues Tonality license

Full Description

Tonality is a simple piano keyboard. It allows to highlight scales based on a root note and can label intervals for you. This makes learning of scales much easier.


  • Piano view to play with

  • Scale highlighting

  • Optional key labeling

  • Optional interval labeling based on root note

  • Dynamic sizing of the keyboard (configuration stored per device orientation)

  • Stack multiple keyboards (top down or bottom up)

Screenshots of Tonality (Version 1.2)

tonality v1.2   1. main tonality v1.2   2. scale selection tonality v1.2   3. scale highlight tonality v1.2   4. root note selection tonality v1.2   5. scaled 2 tonality v1.2   6. more menu tonality v1.2   7. interval labels tonality v1.2   8. sizing popup

Possible next features …​ or just a bunch of ideas

  • ❏ harmonize handling of pianoview parameters in preferences (currently in PianoView and PianoFragment)

  • ❏ grey out or hide notes which cannot be played due to missing sound file

  • ❏ add some open source synth to tonality in order to play more than audio files

  • ❏ improve scale selection with custom dialog and scale grouping

  • ❏ add MIDI keyboard support via USB on the go

  • ❏ add metronome to piano view

  • ❏ automate screenshot generation combined with espresso UI testing


see LICENSE file for more details and this snippet for an overview:

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see


Build instructinos

  • checkout tonality

  • Ensure the environment variable ANDROID_NDK is set

  • Ensure that gradle can call patch and git, i.e. these should be on your PATH

  • Prepare dependencies - this will pull git submodules and build native ffmpeg binaries

    • gradle setupTonalityDependencies

  • build tonality:

    • gradle build

Interaction with upstream semitone

You will probably need these only as a maintainer of the project.

These commands assume that remotes named semitone-upstream and semitone-as-a-library. have been set up.

  • commit all changes

  • git subtree pull --prefix semitone semitone-upstream master

  • convert semitone into an android library by changing semitone/build.gradle

    • change build gradle plugin to library

    • comment out application ID

  • commit all changes

  • git subtree push --prefix semitone semitone-fork semitone-as-a-library

  • add pull request towards semitone project