Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/g-r-a-n-t/music-training
Music training software for electronic keyboards.
https://github.com/g-r-a-n-t/music-training
music
Last synced: 15 days ago
JSON representation
Music training software for electronic keyboards.
- Host: GitHub
- URL: https://github.com/g-r-a-n-t/music-training
- Owner: g-r-a-n-t
- Created: 2018-03-31T20:00:05.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2021-03-08T16:59:20.000Z (over 3 years ago)
- Last Synced: 2024-10-06T20:41:22.479Z (about 1 month ago)
- Topics: music
- Language: Python
- Homepage:
- Size: 17.6 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Music Training
This repository contains practical exercises in music theory and ear training. You will need a [midi keyboard](http://m-audio.com/products/view/keystation-49) and [pedal](http://m-audio.com/products/view/sp-2) configured with your system along with an inter-application audio routing service, like [Jack Audio Connection Kit](http://jackaudio.org/). The python libraries [mido](https://github.com/olemb/mido), [python-rtmidi](https://pypi.org/project/python-rtmidi/), and [musthe](https://github.com/gciruelos/musthe) must be installed to run these scripts. This is developed for Python 3.
## Chords
The chords script will challenge you to play a randomly generated chord
within a given key. When you have played the chord correctly, it will generate another. Chord types are limited to what is passed in under the "chords" option.
To receive a hint for the chord you are trying to play, press the pedal. Depending on your options, this will either print the shorthand or progression representation or play the chord through your configured audio output, or print one of the two representaions and play audio. You don't need to play the chord in any specific way, it can be inverted or in a different octave. If you would like, you can set the "two hands" flag, which will require you to play each chord in both hands.
```sh
$ ./chords.py -h
Usage: chords.py [options]Options:
-h, --help show this help message and exit
-c CHORDS, --chords=CHORDS
chords used in training. Example: "maj min dim"
-s SCALE_NAME, --scale-name=SCALE_NAME
scale to base chord selection off of. Example: "major"
-r SCALE_ROOT, --scale-root=SCALE_ROOT
root to base scale off of. Example: "C"
-w WRITTEN_HINT, --written-hint=WRITTEN_HINT
prints the name of the chord you are tasked with
playing. Parameters: progression, shorthand
-a, --audible-hint audibly plays the chord you are tasked with playing
-t, --two-hands checks if the chord was played in both hands
```#### Available parameters:
- chords: *maj, min, aug, dim, dom7, min7, maj7, aug7, m7dim5*
- scales: *major, natural_minor, harmonic_minor, melodic_minor, major_pentatonic, minor_pentatonic*
- roots: *any note*#### Example usage:
```sh
$ ./chords.py --scale-name major --scale-root E --written-hint shorthand --audible-hint --two-hands --chords "maj min"
new chord (press pedal for hint)
Bmaj
time: 4.741794109344482s
new chord (press pedal for hint)
Amaj
time: 3.338390588760376s
new chord (press pedal for hint)
F#min
time: 5.929013013839722s
new chord (press pedal for hint)
...
```
## Intervals
The intervals script will challenge you to play a randomly generated interval. When you have played the interval correctly, it will generate another. Intervals are limited to what is passed in under the "intervals" option. To receive a hint for the interval you are trying to play, press the pedal. Depending on your options, this will either print the shorthand representation or play the interval through your configured audio output. If you would like, you can set the "two hands" flag, which will require you to play each interval in both hands.
```sh
$ ./intervals.py -h
Usage: intervals.py [options]Options:
-h, --help show this help message and exit
-c INTERVALS, --intervals=INTERVALS
intervals used in training. Example: "M2 P5"
-r INTERVAL_ROOT, --interval-root=INTERVAL_ROOT
root to base intervals off of. Example: "C"
-w, --written-hint prints the name of the interval you are tasked with
playing
-a, --audible-hint audibly plays the interval you are tasked with playing
-t, --two-hands checks if the interval was played in both hands```
#### Available parameters:
- intervals: *P1, m2, M2, m3, M3, P4, A4, P5, m6, M6, m7, M7, P8*
- roots: *any note*#### Example usage:
```sh
$ ./intervals.py --intervals "M3 P5 M7" --interval-root D --audible-hint --written-hint --two-hands
new interval (press pedal for hint)
M7
time: 3.169617414474487s
new interval (press pedal for hint)
M3
time: 4.972516059875488s
new interval (press pedal for hint)
M7
time: 6.176300048828125s
new interval (press pedal for hint)
M7
time: 1.1742990016937256s
new interval (press pedal for hint)
P5
time: 5.430243730545044s
...
```