ukebox

Crates.io Documentation travis license rustc

ukebox is a ukulele chord finder for the command line written in Rust.

Features

Installation

ukebox is intended to be a stand-alone command-line application but for the time being you need Rust to build and run the program. The easiest way to install ukebox is to use cargo.

$ cargo install ukebox

Alternatively, get the source code by cloning the repo from Github.

$ git clone https://github.com/noeddl/ukebox

Downloadable binaries for different platforms will be provided in upcoming releases.

Usage

``` USAGE: ukebox [OPTIONS]

FLAGS: -h, --help Prints help information -V, --version Prints version information

OPTIONS: -t, --tuning Type of tuning to be used [default: C] [possible values: C, D, G]

SUBCOMMANDS: chart Chord chart lookup help Prints this message or the help of the given subcommand(s) name Chord name lookup ```

When running the program with Rust, replace the command ukebox with cargo run --release, e.g. cargo run --release -- chart G.

Chord chart lookup

Use the subcommand chart to look up the chart for a given chord name. By default, the first matching chord voicing is presented. Use the flag --all to get all possible voicings of the same chord. You can use additional options to further filter the result, e.g. by specifying a minimal or a maximal fret that should be involved in the chord voicing.

``` USAGE: ukebox chart [FLAGS] [OPTIONS]

FLAGS: -a, --all Print out all voicings of that fulfill the given conditions -h, --help Prints help information -V, --version Prints version information

OPTIONS: --max-fret Maximal fret up to which to play [default: 12] --max-span Maximal span between the first and the last fret pressed down when playing [default: 4] --min-fret Minimal fret (= minimal position) from which to play [default: 0] --transpose Number of semitones to add (e.g. 1, +1) or to subtract (e.g. -1) [default: 0] -t, --tuning Type of tuning to be used [default: C] [possible values: C, D, G]

ARGS: Name of the chord to be shown ```

Some examples:

``` $ ukebox chart G [G - G major]

A ||---|-o-|---|---|- B E ||---|---|-o-|---|- G C ||---|-o-|---|---|- D G o||---|---|---|---|- G ```

``` $ ukebox chart --tuning D G [G - G major]

B o||---|---|---|---|- B F# ||-o-|---|---|---|- G D o||---|---|---|---|- D A ||---|-o-|---|---|- B ```

``` $ ukebox chart --min-fret 3 G [G - G major]

A -|---|-o-|---|---|- D E -|---|---|---|-o-|- B C -|---|---|---|-o-|- G G -|-o-|---|---|---|- B 4 ```

``` $ ukebox chart --tuning D --min-fret 3 G [G - G major]

B -|-o-|---|---|---|- D F# -|---|---|-o-|---|- B D -|---|---|-o-|---|- G A -|---|---|-o-|---|- D 3 ```

``` $ ukebox chart --transpose 1 C [C# - C# major]

A ||---|---|---|-o-|- C# E ||-o-|---|---|---|- F C ||-o-|---|---|---|- C# G ||-o-|---|---|---|- G# ```

``` $ ukebox chart --transpose -2 C [Bb - Bb major]

A ||-o-|---|---|---|- Bb E ||-o-|---|---|---|- F C ||---|-o-|---|---|- D G ||---|---|-o-|---|- Bb ```

``` $ ukebox chart --all --max-fret 5 C [C - C major]

A ||---|---|-o-|---|- C E o||---|---|---|---|- E C o||---|---|---|---|- C G o||---|---|---|---|- G

A ||---|---|-o-|---|- C E o||---|---|---|---|- E C ||---|---|---|-o-|- E G o||---|---|---|---|- G

A ||---|---|-o-|---|- C E ||---|---|-o-|---|- G C ||---|---|---|-o-|- E G o||---|---|---|---|- G

A -|-o-|---|---|---|- C E -|-o-|---|---|---|- G C -|---|-o-|---|---|- E G -|---|---|-o-|---|- C 3 ```

Chord name lookup

Use the subcommand name to look up the chord name(s) corresponding to a given chord fingering.

``` USAGE: ukebox name [OPTIONS]

FLAGS: -h, --help Prints help information -V, --version Prints version information

OPTIONS: -t, --tuning Type of tuning to be used [default: C] [possible values: C, D, G]

ARGS: A compact chart representing the finger positions of the chord to be looked up ```

Some examples:

$ ukebox name 2220 D - D major

$ ukebox name --tuning D 2220 E - E major

$ ukebox name 0233 Csus2 - C suspended 2nd Gsus4 - G suspended 4th

If the fret pattern contains fret numbers greater than 9 you have to add spaces between the fret numbers and embed them in quotes:

$ ukebox name "7 7 7 10" G - G major

Supported chord types

Currently, ukebox can handle the following types of chords:

More types of chords will be supported in future versions (see #35).

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.