Git Product home page Git Product logo

harpwise's Introduction

Harp Wise

images/harmonicas.jpg

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.

images/screenshot_listen.png

The second screenshot is from mode ‘quiz’: The program has played five notes intially and now challenges to play them back.

images/screenshot_quiz.png

Usage and Overview

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).

Some general concepts

Scales and Licks

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 reference hole

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.

A word on the term holes

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).

A closer look at the display

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 upper half of the screen, the “display”

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.

The lower half of the screen, the “comment”

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 middle part of the display

The Hole-line

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)

The frequency gauge

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.

Configuration

See the README within directory config.

Tuning

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).

Installation

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.

harpwise's People

Contributors

marcihm avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.