Mercurial > dottes
annotate makeHornInF.sh @ 510:0a75c953c3c8 build-default-216
Add the Pugwash theme, aka the Trumpet Hornpipe.
I've checked this against YouTube and the first episode, and corrected an
obvious wrong note in Paul Hardy's version. But I've kept his descending
triplets in the last line of the B tune - the original has the same note,
with descending chords, but changing the triplets to remain on G doesn't
sound right.
author | Jim Hague <jim.hague@acm.org> |
---|---|
date | Fri, 01 Aug 2014 23:41:42 +0100 |
parents | ecc62b487e57 |
children | ce5c7214f9aa |
rev | line source |
---|---|
216 | 1 #!/bin/bash |
2 # | |
3 # Transpose a book for Horn in F. | |
4 | |
5 if [ $# != 1 ]; then | |
6 echo "Usage: makeFHorn.sh <book dir name>" | |
7 exit 1 | |
8 fi | |
9 | |
322
b4a0161e8870
Add abcrange.py to return the range of a tune, and use it in instrument transposition.
Jim Hague <jim.hague@acm.org>
parents:
263
diff
changeset
|
10 # Transpose down (return 0) if top note was > e (> a for horn). |
b4a0161e8870
Add abcrange.py to return the range of a tune, and use it in instrument transposition.
Jim Hague <jim.hague@acm.org>
parents:
263
diff
changeset
|
11 transposedown() |
b4a0161e8870
Add abcrange.py to return the range of a tune, and use it in instrument transposition.
Jim Hague <jim.hague@acm.org>
parents:
263
diff
changeset
|
12 { |
351
6bcafbfac674
Now fix logic error in makeHornInF.sh.
Jim Hague <jim.hague@acm.org>
parents:
350
diff
changeset
|
13 (($2 > 109)) |
322
b4a0161e8870
Add abcrange.py to return the range of a tune, and use it in instrument transposition.
Jim Hague <jim.hague@acm.org>
parents:
263
diff
changeset
|
14 } |
b4a0161e8870
Add abcrange.py to return the range of a tune, and use it in instrument transposition.
Jim Hague <jim.hague@acm.org>
parents:
263
diff
changeset
|
15 |
216 | 16 dir=`pwd` |
17 | |
18 booke=$dir/$1 | |
19 outdir=$dir/$1-HornInF | |
20 | |
21 mkdir -p $outdir | |
22 | |
217
a8a46fd79d5c
Fix up problems in Horn in F transposition.
Jim Hague <jim.hague@laicatc.com>
parents:
216
diff
changeset
|
23 # Copy book component items. |
a8a46fd79d5c
Fix up problems in Horn in F transposition.
Jim Hague <jim.hague@laicatc.com>
parents:
216
diff
changeset
|
24 cp $booke/*.txt $outdir |
a8a46fd79d5c
Fix up problems in Horn in F transposition.
Jim Hague <jim.hague@laicatc.com>
parents:
216
diff
changeset
|
25 |
263
7b98278d6e8b
Add instrument name into title page for transpositions.
Jim Hague <jim.hague@acm.org>
parents:
218
diff
changeset
|
26 echo "Horn in F" > $outdir/instrument.txt |
7b98278d6e8b
Add instrument name into title page for transpositions.
Jim Hague <jim.hague@acm.org>
parents:
218
diff
changeset
|
27 |
216 | 28 find $booke -name "*.abc" | sort | |
29 while read filename | |
30 do | |
31 name=`basename $filename .abc` | |
322
b4a0161e8870
Add abcrange.py to return the range of a tune, and use it in instrument transposition.
Jim Hague <jim.hague@acm.org>
parents:
263
diff
changeset
|
32 range=`./abcrange.py $filename` |
216 | 33 |
34 # Transpose concert pitch up a fifth. | |
322
b4a0161e8870
Add abcrange.py to return the range of a tune, and use it in instrument transposition.
Jim Hague <jim.hague@acm.org>
parents:
263
diff
changeset
|
35 # If there are any notes above 'd' (Horn 'g'), transpose |
216 | 36 # down a seventh instead. |
37 transpose=5 | |
322
b4a0161e8870
Add abcrange.py to return the range of a tune, and use it in instrument transposition.
Jim Hague <jim.hague@acm.org>
parents:
263
diff
changeset
|
38 if transposedown $range; then |
216 | 39 transpose=-7 |
40 fi | |
41 | |
370
ecc62b487e57
Some empty "" chords may be causing trouble with Jenkins.
Jim Hague <jim.hague@acm.org>
parents:
351
diff
changeset
|
42 # There's no point in having transposed chords. Remove from the |
ecc62b487e57
Some empty "" chords may be causing trouble with Jenkins.
Jim Hague <jim.hague@acm.org>
parents:
351
diff
changeset
|
43 # abc before transposing. Some badly formed chord items can give |
ecc62b487e57
Some empty "" chords may be causing trouble with Jenkins.
Jim Hague <jim.hague@acm.org>
parents:
351
diff
changeset
|
44 # erroneous output from abc2abc (like, strings of binary gibberish). |
ecc62b487e57
Some empty "" chords may be causing trouble with Jenkins.
Jim Hague <jim.hague@acm.org>
parents:
351
diff
changeset
|
45 sed -e "s/\"[^\"]*\"//g" $filename > $outdir/$name.abc.tmp |
ecc62b487e57
Some empty "" chords may be causing trouble with Jenkins.
Jim Hague <jim.hague@acm.org>
parents:
351
diff
changeset
|
46 |
216 | 47 # Transpose. By default abc2abc will report errors in the output, |
218
1a9d937b7765
Force Horn in F output to be in treble clef.
Jim Hague <jim.hague@laicatc.com>
parents:
217
diff
changeset
|
48 # but this messes up output formatting so stop it. Also force all |
1a9d937b7765
Force Horn in F output to be in treble clef.
Jim Hague <jim.hague@laicatc.com>
parents:
217
diff
changeset
|
49 # output to be in treble clef; some lower tunes with the odd high |
1a9d937b7765
Force Horn in F output to be in treble clef.
Jim Hague <jim.hague@laicatc.com>
parents:
217
diff
changeset
|
50 # note will otherwise appear in bass clef, which is not what this |
1a9d937b7765
Force Horn in F output to be in treble clef.
Jim Hague <jim.hague@laicatc.com>
parents:
217
diff
changeset
|
51 # crap horn player wants. |
370
ecc62b487e57
Some empty "" chords may be causing trouble with Jenkins.
Jim Hague <jim.hague@acm.org>
parents:
351
diff
changeset
|
52 abc2abc $outdir/$name.abc.tmp -e -t $transpose | \ |
218
1a9d937b7765
Force Horn in F output to be in treble clef.
Jim Hague <jim.hague@laicatc.com>
parents:
217
diff
changeset
|
53 sed -e "/^ *K:/s/$/ clef=treble/" > $outdir/$name.abc |
370
ecc62b487e57
Some empty "" chords may be causing trouble with Jenkins.
Jim Hague <jim.hague@acm.org>
parents:
351
diff
changeset
|
54 rm $outdir/$name.abc.tmp |
216 | 55 done |