Ruby script to support the daily practice for bends, scales, intervals or licks on a (diatonic) richter or chromatic harmonica for various keys. May also be useful when writing down tabs.
Its main operation modes are ‘listen’, ‘quiz’ and ‘licks’; these modes may help to:
- Work on bends
- Train your musical memory
- Internalize various scales
- Play and remember intervals
- Learn, memorize and analyze licks regarding scales, chords and intervals
- Support improvisation: Provide licks and scale info
- Help in writing down a sequence of holes
The first screenshot is from mode ‘listen’: The program has recognized a note from the blues scale and marks it in the harmonica chart.
The second screenshot is from mode ‘quiz’: The program has played five notes intially and now challenges to play them back.
Get a short usage information by invoking without arguments:
./harpwise
This will show examples and options for the four main operations of the wise:
- listen: Listen to your playing, e.g. to monitor bends or scales
- quiz: Train your ear and musical memory
- licks: Learn licks (licks not included, but some pointers)
- calibrate: Generate samples for holes or record your own
As an initial step you will need to calibrate the program; the resulting wav-files will be kept in directory ~/.harpwise
To get started quickly you may use auto-calibration for machine-generated tones and frequencies.
If you want to work with mode licks to learn and memorize licks (highly recommended !), you will need to add new licks very soon. They need to be added to your own lick-file, which is typically located at
~/.harpwise/licks/richter/licks_with_holes.txt
this file is created on first invocation and filled with only a few sample-licks; however it contans extensive instructions on how to add new licks and some pointers to sources for more (printed and online).
Both concepts:
- scales, e.g. “blues” or “major pentatonic” and even “chord-i” (holes of the i-Chord)
- Licks, e.g. the opening lick of “Juke”
they play a central very role for harpwise.
In many of its different views, harpwise shows information about the scales, a given hole belongs to. Or it helps you to memorize your favorite licks.
For this to work best, you may:
- Add the option –add-scales on the commandline to tell, which scales you may want to see, e.g. “–add-scales chord-i:1,chord-iv:4,chord-v:5,root:r”
- Find and add your own licks as described above
The wise can remember a hole you have played to refer to it; this is useful e.g. to show the interval between the currently played hole and the reference, or to show the deviation from the current played frequency to the nominal frequency of the hole, especially when practicing bends.
To set the reference, you simply play the desired note and hit the key r at the same time. To clear the reference you simply need to hit r when not playing anything.
The Program uses the term “holes” throughout to give you feedback or hints. Examples would be “-1” or “+4”; these obviously name the holes of your harmonica and distinguish between “draw” and “blow”; a special name like “-2+3” is used as a common name, if two holes (“-2” and “+3”) produce the same note.
So, if such a hole-name is given, you always know the note that sounds, when the hole is played (at least for a given key of harmonica).
In effect, you may consider hole-names like “-2+3” as practical names for the notes played on a harmonica of a given key.
By the way, if you prefer other names, you may create your own type of harmonica, which ist faily easy (see the paragraph on configuration).
Please note, that the wise tries to adapt itself to different screen sizes by inserting blank lines in its display; you do not need to restart it for this.
The display shows details and context about the notes you are playing:
- The hole you played
- A Chart showing the layout of your harmonica with notes
- A similar chart but with scales
- Chart with intervals (if the reference is set)
- A frequency scale, centered around the currently referenced note
The color may show, if you hit a note from the chosen scales.
This shows whatever comment is appropriate for listen or quiz and licks.
For listen this may be one of:
- The hole you played
- The respective note
- The interval to the previous note or the stored reference
- Cents deviation of the current frequency to the reference
For quiz and licks the comment gives information about the sequence of holes, the wise expects you to play. There are three layouts showing the holes small and large and with associated scales.
The first line in the middle of the display currently looks like this:
Hole: – , Note: – , Ref: – , Rem: –
After the obvious fields Hole and Note there are:
- Ref
- (if set) a chosen reference note, against which, e.g. your bends will be judged when displaying them.
- Rem
- A remark, that can be defined for a scale (i.e. within the file scales_SCALE_with_holes.yaml)
Currently it looks like this:
[……….:..|…….]
The middle position (marked by “:”) represents the frequency, that was found during calibration. If you have done an automatic calibration, this frequency might not match what you are actually playing (marked by “I”); consider a manual calibration with your actual harp in such a case.
The left and right position (marked by “[.” and “.]”) represent the point, where the displayed note would change: half way to the next hole. After reaching which (e.g. while bending), the gauge will change, the “:” will represent the next hole and the displayed cursor (“I”) will jump to the other side to approach the central position again.
See the README within directory config.
The harp wise does not make assumptions about the tuning of your harmonica; e.g. it works equally well with “equal temperament” (ET) or “just intonation” tuning. Simply because, it asks you to play your own harp (whatever its tuning might be), to generate samples; and it then computes frequency values from these.
However, sometimes harpwise has to choose one tuning, e.g. when doing auto calibration, or when your samples need to be judged against some standard. In such cases it generally uses “equal temperament” (ET for short).
The program harpwise runs in the linux console (no graphical environment needed); it runs directly from within the directory, which you need to clone from github first. Vice versa it can simply be removed by deleting the cloned directory.
harpwise has a bunch of dependencies and one of the scripts in directory install may be used to install them.
For MS Windows, version 11, you may use the latest windows-Subsystem for Linux wsl2, which supports sound through the remote desktop protocol.
See README.org in directory install for more details.