Mercurial > dottes
annotate makeHornInF.sh @ 322:b4a0161e8870
Add abcrange.py to return the range of a tune, and use it in instrument transposition.
This lets us transpose on boundaries that aren't octave boundaries.
author | Jim Hague <jim.hague@acm.org> |
---|---|
date | Thu, 18 Jul 2013 15:27:57 +0100 |
parents | 7b98278d6e8b |
children | b8ea9cfb3546 |
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 { |
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
|
13 return $(($2 <= 109)) |
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 | |
42 # 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
|
43 # 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
|
44 # 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
|
45 # 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
|
46 # crap horn player wants. |
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
|
47 abc2abc $filename -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
|
48 sed -e "/^ *K:/s/$/ clef=treble/" > $outdir/$name.abc |
216 | 49 done |