Script and supporting API to find good fingerings on bisonoric concertinas
Project description
concertina-helper
concertina_helper is a python script and supporting API to find good fingerings on bisonoric concertinas for tunes in ABC notation.
CLI usage
pip install concertina-helper
concertina-helper --help
usage: concertina-helper [-h] [--output_format {UNICODE,ASCII,LONG,COMPACT}]
(--layout_path PATH | --layout_name {20_cg,30_jefferies_cg,30_wheatstone_cg})
[--layout_transpose SEMITONES]
[--bellows_change_cost N]
[--finger_in_same_column_cost N]
[--pull_at_start_of_measure_cost N]
[--outer_fingers_cost N] [--show_all]
input
Given a file containing ABC notation, and a concertina type, prints possible
fingerings.
positional arguments:
input Input file: Parsed either as a list of pitches, one
per line, or as ABC, if the first lines starts with
"X:".
options:
-h, --help show this help message and exit
--output_format {UNICODE,ASCII,LONG,COMPACT}
Output format. "UNICODE" uses "○" and "●" to represent
button state / "ASCII" uses "." and "@" to represent
button state / "LONG" spells out the names of pressed
buttons / "COMPACT" multiple fingerings represented in
single grid (default: LONG)
Layout options:
Supply your own layout, or use a predefined one, optionally transposed
--layout_path PATH Path of YAML file with concertina layout (default:
None)
--layout_name {20_cg,30_jefferies_cg,30_wheatstone_cg}
Name of concertina layout (default: None)
--layout_transpose SEMITONES
Semitones to transpose the layout; Negative transposes
down (default: 0)
Cost options:
Configure the relative costs of different transitions between fingerings
--bellows_change_cost N
Penalize fingerings where the bellows changes
direction between notes (default: 1)
--finger_in_same_column_cost N
Penalize fingerings where one finger changes rows
between notes (default: 1)
--pull_at_start_of_measure_cost N
Penalize fingerings where a pull begins a measure;
Hitting the downbeat with a push can be more musical.
(default: 1)
--outer_fingers_cost N
Penalize fingerings that use outer fingers of either
hand instead of inner. This is useful as a tiebreaker.
(default: 1)
--show_all Ignore cost options and just show all possible
fingerings (default: False)
See EXAMPLES.md
for examples of CLI usage.
API usage
See API documentation for details.
Development
See demo-api.sh
for typical developer setup. The demo scripts are also used for CI.
To release a new version:
- Make a feature branch
- Update
__version__
in__init__.py
- Run
flit publish
- Make a PR with the updated version and merge.
Related tools
Generate fingerings for tunes
- Anglo Concertina Fingering Generator: Web page which takes ABC notation, and returns ABC notation, and renders it using abcjs
- concertina-pbqp: C++; Models it as an NP-hard problem, but uses a solver library for an approximate solution.
Notes and chords
- Anglo Piano: Web page with piano and a variety of concertina layouts. Shows all possible fingerings for notes and chords.
- KonzertinaNetz: In German. Includes windows
.exe
for download.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
No source distribution files available for this release.See tutorial on generating distribution archives.
Built Distribution
File details
Details for the file concertina_helper-0.0.3-py3-none-any.whl
.
File metadata
- Download URL: concertina_helper-0.0.3-py3-none-any.whl
- Upload date:
- Size: 20.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: python-requests/2.28.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9651f6e5750d923c408bbf28a9d7b8b81cb2577b3e0ed1b30b8231edf0b3be52 |
|
MD5 | e448ec51ef94a7f58a435b6fc07a37ab |
|
BLAKE2b-256 | 73f170fb68f3813e0910c694fa389734c1b8c31ec1abf7dd6e1df5fa9f5aaf0d |