Skip to main content

This is a Python program that helps you practice sight-reading by flashing up notes on a stave (treble and/or bass clef). You will have a certain number of seconds to correctly identify each note. With the appropriate MIDI adapter plugged in, the -m command-line option (see below) allows you to respond using your instrument. Failing that, respond with keys A, B, C, D, E, F, or G on your computer keyboard. In either case, press Q to quit the program.

Install with python -m pip install pystave. This will install both the pystave package and, if you do not already have it, its dependency pygame.

You can run the game from the command-line with python -m pystave followed by whatever command-line options you want.

On Windows, the simplest way to set it up is to find NoteTrainer.exe in the Scripts directory of your Python distribution (or virtual environment), and make a shortcut to that. In the "Target" field of the "Properties" dialog for the shortcut, you can add any command-line options you want to add. Launch the game from that shortcut.

The game's main command-line options are as follows (use --help to get the full set):

 -m N             Listen to midi channel `N` (default 0, meaning no midi
--midichannel=N   input). It may take some trial and error to find the
                  number that corresponds to the correct channel of your
                  USB MIDI adapter.

 -t T             Set the time limit for responding to `T` seconds
--timelimit=T     (default 4).


 -c C             Include clef `C`. Possible values are `bass` and
--clef=C          `treble`. The default is to test both (choose randomly
                  each time around) which is equivalent to supplying
                  `-c treble -c bass` or `-c bass,treble`.

  -k K            Use key signature `K`. For example `-k "F#"` would
 --key=K          get you F-sharp major, and `-k "Dm"` would get you 
                  D minor.

 -d D             Use file D to specify a custom set of challenges. By
--distribution=D  default, you will be presented with single notes picked
                  with equal probability from the scale specified by `-k`,
                  without accidentals. However, if you do `-d HELP` you
                  will see there are many other possibilities, including
                  chords, accidentals, and the ability to weight the
                  testing towards things you particularly need to practice.

Metadata

Release files for pystave 1.3.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distribution (wheel)

Table of built distributions (wheels) for pystave 1.3.1
File Interpreter ABI Platform
pystave-1.3.1-py2.py3-none-any.whl Python 3, Python 2 none any Details

Release files / pystave-1.3.1-py2.py3-none-any.whl

Download URL pystave-1.3.1-py2.py3-none-any.whl
Size 1.5 MB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
3f7f7f9235f6e60416ce80e190691c39b204effbd6da90cd01a006ee3cef61ee
BLAKE2b-256 checksum
How to use checksums
b72a2818eadc42a3289689867b00452179e90fa40dab6ab0d984b4d20990c19b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.5

Release history Release notifications | RSS feed

This release

1.3.1 This release

1 release file

1.3.0

1 release file

1.2.2

1 release file

1.2.1

1 release file

1.2.0

1 release file

1.1.0

1 release file

1.0.2

1 release file

1.0.1

1 release file

1.0.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page