Open sciurius opened 2 years ago
My current versions attached for the main C, G and D ukulele tunings, both with and without fingering. They've been fairly thoroughly tested, but might still have the odd mistake: ChordPro_Ukulele_Configs.zip
This might also be a useful tool, which allows chords for all three ukulele tunings to be easily checked and generated. Uke Chords master v5b.ods
Only includes sharp chords (because of the logic of using the same data across three tunings), so this script quickly adds entries for the relevant flat chords:
#!/bin/bash
infile="$1"
oldfile="$infile.bak"
# Temporarily switch [ ] because sed doesn't like them
sed -i 's/\[/</g' "$infile"
sed -i 's/\]/>/g' "$infile"
cp "$infile" "$oldfile"
# Create array from lines containing sharp # symbol (only in chord name?)
readarray -t sharplines < <(grep "name.*#" "$infile")
# Loop through array entries, i.e. each sharp line in turn
for i in "${sharplines[@]}"
do
sharpstring="$i"
flatstring=$(echo "$sharpstring" | tr "ABCDEFG#" "BCDEFGAb")
newstring="$sharpstring\n$flatstring"
sed -i "s|$sharpstring|$newstring|g" "$infile"
done
# Restore [ ]
sed -i 's/</\[/g' "$infile"
sed -i 's/>/\]/g' "$infile"
I found these useful:
{ "name": "A7sus4", "base": 1, "frets": [0, 2, 0, 0], "fingers": [0, 1, 0, 0] },
{ "name": "Am6", "base": 1, "frets": [2, 0, 2, 0], "fingers": [1, 0, 2, 0] },
{ "name": "Am/B", "base": 1, "frets": [2, 0, 0, 2], "fingers": [2, 0, 0, 3] },
{ "name": "Am/E", "copy": "Am" },
{ "name": "Am/F", "base": 1, "frets": [2, 4, 1, 3], "fingers": [2, 4, 1, 3] },
{ "name": "Am/G", "copy": "Am7" },
{ "name": "Bmadd11", "base": 4, "frets": [1, 3, 0, 2], "fingers": [1, 3, 0, 2] },
{ "name": "B7sus4", "base": 1, "frets": [4, 4, 2, 0], "fingers": [3, 4, 1, 0] },
{ "name": "C/A", "base": 1, "frets": [0, 0, 0, 0], "fingers": [0, 0, 0, 0] },
{ "name": "C/B", "base": 1, "frets": [0, 0, 0, 2], "fingers": [0, 0, 0, 1] },
{ "name": "C/G", "copy": "C" },
{ "name": "Cadd9", "base": 1, "frets": [0, 2, 0, 3], "fingers": [0, 2, 0, 3] },
{ "name": "C7sus4", "base": 1, "frets": [0, 0, 1, 1], "fingers": [0, 0, 1, 1] },
{ "name": "Cadd9", "base": 1, "frets": [0, 2, 0, 3], "fingers": [0, 2, 0, 3] },
{ "name": "D/B", "base": 2, "frets": [4, 2, 2, 0], "fingers": [4, 1, 2, 0] },
{ "name": "D/C#", "base": 2, "frets": [1, 1, 1, 3], "fingers": [1, 1, 1, 3] },
{ "name": "D/F#", "copy": "D" },
{ "name": "D7/F#", "base": 2, "frets": [1, 1, 1, 2], "fingers": [1, 1, 1, 2] },
{ "name": "Dbm", "base": 1, "frets": [1, 1, 0, 4], "fingers": [1, 2, 0, 4] },
{ "name": "Dm7", "base": 1, "frets": [2, 0, 1, 3], "fingers": [2, 0, 1, 4] },
{ "name": "Dm9", "base": 5, "frets": [3, 1, 1, 3], "fingers": [3, 1, 1, 4] },
{ "name": "Dmaj9", "base": 2, "frets": [1, 3, 1, 4], "fingers": [1, 3, 1, 4] },
{ "name": "D6/9", "base": 1, "frets": [4, 2, 2, 0], "fingers": [4, 2, 1, 0] },
{ "name": "D7", "base": 1, "frets": [2, 0, 2, 0], "fingers": [2, 0, 1, 0] },
{ "name": "D7sus4", "base": 1, "frets": [2, 2, 3, 3], "fingers": [1, 2, 3, 4] },
{ "name": "E", "base": 1, "frets": [1, 4, 0, 2], "fingers": [1, 4, 0, 2] },
{ "name": "E/G#", "copy": "E" },
{ "name": "Eadd9", "base": 4, "frets": [1, 3, 1, 4], "fingers": [1, 3, 1, 4] },
{ "name": "Em7sus4", "base": 3, "frets": [2, 2, 3, 3], "fingers": [1, 2, 3, 4] },
{ "name": "E7/G#", "copy": "E7" },
{ "name": "Em", "base": 1, "frets": [0, 4, 3, 2], "fingers": [0, 3, 2, 1] },
{ "name": "Em6", "base": 1, "frets": [0, 1, 0, 2], "fingers": [0, 1, 0, 2] },
{ "name": "Em9", "base": 1, "frets": [0, 4, 2, 2], "fingers": [0, 3, 2, 1] },
{ "name": "Emadd9", "base": 1, "frets": [0, 4, 2, 2], "fingers": [0, 3, 2, 1] },
{ "name": "Em/C", "base": 1, "frets": [0, 0, 0, 2], "fingers": [0, 0, 0, 1] },
{ "name": "Em/G", "base": 1, "frets": [0, 4, 0, 2], "fingers": [0, 3, 0, 1] },
{ "name": "Fm/Bb", "base": 3, "frets": [1, 3, 2, 1], "fingers": [1, 3, 2, 1] },
{ "name": "F#m11", "base": 1, "frets": [1, 4, 2, 0], "fingers": [1, 4, 2, 0] },
{ "name": "F#m7b5", "base": 2, "frets": [1, 3, 1, 2], "fingers": [1, 3, 1, 2] },
{ "name": "F7sus4", "base": 1, "frets": [3, 3, 1, 3], "fingers": [2, 3, 1, 4] },
{ "name": "Fmaj7/C", "base": 1, "frets": [2, 4, 1, 0], "fingers": [2, 4, 1, 0] },
{ "name": "F/A", "copy": "F" },
{ "name": "F/C", "copy": "F" },
{ "name": "Fadd9", "base": 1, "frets": [0, 0, 1, 0], "fingers": [0, 0, 1, 0] },
{ "name": "G/B", "copy": "G" },
{ "name": "G/C", "base": 2, "frets": [3, 1, 2, 2], "fingers": [3, 1, 2, 2] },
{ "name": "G/D", "copy": "G" },
{ "name": "G/F#", "base": 1, "frets": [0, 2, 2, 2], "fingers": [0, 1, 1, 1] },
{ "name": "G7sus4", "base": 1, "frets": [0, 2, 1, 3], "fingers": [0, 2, 1, 4] },
{ "name": "H7", "copy": "B7" },
{ "name": "NC", "base": 1, "frets": [-1, -1, -1, -1] },
{ "name": "N.C.", "copy": "NC" },
{ "name": "\\", "copy": "NC" }
I custom defined them like that in my config as ChordPro didn't support them out of the box. "NC" or "N.C." is often used in songs to show that nothing should be played and you should only sing.
Thanks for the additions.
I will not add H7
since it is not common notation.
The NC
and N.C.
chords should work out of the box, don't they?
As for \
, since it is specific to a single song I would advise to define it locally in the song, either with a {define "\\" copy "NC"}
or in a song-specific config.
You define F/A
as a copy of F
, however I would play F
as 1 3 3 2 1 1
and F/A
as x 0 3 2 1 1
.
Similar for E/G#
: 4 2 2 1 0 0
instead of 0 2 2 1 0 0
.
The added bass note is there for a reason.
Agreed.
And I locally defined [\] for that song as you advised.
Wait a minute.
As you only have 4 strings on a ukulele, some of the slash chords can´t be played directly and the closest approximation in this case is an F. If I remember correctly this is why I made that.
Can be ssen here: https://www.scales-chords.com/chord/ukulele/F%5CA
AFAIK there are debates about some of the slash chords and how to properly play them on a ukulele.
I agree: slash chords aren't particularly useful or meaningful for ukulele, as they've only got four strings, and string 4 is often tuned up an octave (but some people play with a lower string 4), so so the idea of having a particular note in the bass becomes quite hard to achieve.
I often create songsheets to serve multiple instruments so, if there is a slash chord (e.g. from guitar arrangement), I generally add a custom voicing with {define-ukulele}
. That at least gives a plausible/playable equivalent, even if it's not strictly a slash chord when played on ukulele, and sometimes it might be an ergonomic more than strictly musical choice.
Sorry, I didn't notice they were ukulele chords. I can imagine there are debates about the slash chords, since the lowest string on the ukulele is a high one.
ukulele_c.json ukulele_d.json ukulele_g.json Uke Chords master v7.ods
Updates to my ukulele chord definitions, and master spreadsheet. I've now removed 'format' settings as that's handled more elegantly by chord formatting config settings.
Subject to testing, I'll probably also remove 'display' settings at some point, as I think they might be getting in the way of transcoding.
Are you missing specific chord definitions for ukulele?
Please create new definitions and add them here as a reply to this issue.
Desired format:
Do you want to add a new name to an existing chord definition, use
"copy"
:Thanks on behalf of the community!