Mercurial > dottes
comparison 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 |
comparison
equal
deleted
inserted
replaced
321:b61c39beac5f | 322:b4a0161e8870 |
---|---|
4 | 4 |
5 if [ $# != 1 ]; then | 5 if [ $# != 1 ]; then |
6 echo "Usage: makeFHorn.sh <book dir name>" | 6 echo "Usage: makeFHorn.sh <book dir name>" |
7 exit 1 | 7 exit 1 |
8 fi | 8 fi |
9 | |
10 # Transpose down (return 0) if top note was > e (> a for horn). | |
11 transposedown() | |
12 { | |
13 return $(($2 <= 109)) | |
14 } | |
9 | 15 |
10 dir=`pwd` | 16 dir=`pwd` |
11 | 17 |
12 booke=$dir/$1 | 18 booke=$dir/$1 |
13 outdir=$dir/$1-HornInF | 19 outdir=$dir/$1-HornInF |
21 | 27 |
22 find $booke -name "*.abc" | sort | | 28 find $booke -name "*.abc" | sort | |
23 while read filename | 29 while read filename |
24 do | 30 do |
25 name=`basename $filename .abc` | 31 name=`basename $filename .abc` |
26 tmpfile=$outdir/$name.abc.tmp | 32 range=`./abcrange.py $filename` |
27 | |
28 # Strip out guitar chords first. This has the advantage of removing | |
29 # text with arbitary lower case characters too. | |
30 sed -e "s/\"[^\"]*\"//g" $filename > $tmpfile | |
31 | 33 |
32 # Transpose concert pitch up a fifth. | 34 # Transpose concert pitch up a fifth. |
33 # If there are any notes at or above C above middle C, transpose | 35 # If there are any notes above 'd' (Horn 'g'), transpose |
34 # down a seventh instead. | 36 # down a seventh instead. |
35 transpose=5 | 37 transpose=5 |
36 if grep -v "^[A-Z]:" $tmpfile | sed -e 's/"[^"]*"//g' | grep -q "[a-g]"; then | 38 if transposedown $range; then |
37 transpose=-7 | 39 transpose=-7 |
38 fi | 40 fi |
39 | 41 |
40 # Transpose. By default abc2abc will report errors in the output, | 42 # Transpose. By default abc2abc will report errors in the output, |
41 # but this messes up output formatting so stop it. Also force all | 43 # but this messes up output formatting so stop it. Also force all |
42 # output to be in treble clef; some lower tunes with the odd high | 44 # output to be in treble clef; some lower tunes with the odd high |
43 # note will otherwise appear in bass clef, which is not what this | 45 # note will otherwise appear in bass clef, which is not what this |
44 # crap horn player wants. | 46 # crap horn player wants. |
45 abc2abc $tmpfile -e -t $transpose | \ | 47 abc2abc $filename -e -t $transpose | \ |
46 sed -e "/^ *K:/s/$/ clef=treble/" > $outdir/$name.abc | 48 sed -e "/^ *K:/s/$/ clef=treble/" > $outdir/$name.abc |
47 rm $tmpfile | |
48 done | 49 done |