Mercurial > dottes
annotate makeWebAudio.sh @ 1026:e4d31e094d24
Changes to get Beginners booke building.
The web pages include prev and next links, so to get those right we
have to make the tune filenames distinct from the main booke names.
So fall back to taking the easy way, and just prefix all tune names with
@ or _.
author | Jim Hague <jim.hague@acm.org> |
---|---|
date | Tue, 18 Feb 2020 15:13:38 +0000 |
parents | d6e2a281cceb |
children | 1139aa0eb0c2 |
rev | line source |
---|---|
43
d92717f8130c
First go at producing a very simple website.
Jim Hague <jim.hague@laicatc.com>
parents:
diff
changeset
|
1 #!/bin/bash |
d92717f8130c
First go at producing a very simple website.
Jim Hague <jim.hague@laicatc.com>
parents:
diff
changeset
|
2 # |
223
0ef955669a9a
Make transposed tunes use the original audio.
Jim Hague <jim.hague@acm.org>
parents:
197
diff
changeset
|
3 # Make audio required for the website but not for the book. |
43
d92717f8130c
First go at producing a very simple website.
Jim Hague <jim.hague@laicatc.com>
parents:
diff
changeset
|
4 # They go into web/<book>. |
d92717f8130c
First go at producing a very simple website.
Jim Hague <jim.hague@laicatc.com>
parents:
diff
changeset
|
5 # |
d92717f8130c
First go at producing a very simple website.
Jim Hague <jim.hague@laicatc.com>
parents:
diff
changeset
|
6 |
d92717f8130c
First go at producing a very simple website.
Jim Hague <jim.hague@laicatc.com>
parents:
diff
changeset
|
7 if [ $# != 1 ]; then |
223
0ef955669a9a
Make transposed tunes use the original audio.
Jim Hague <jim.hague@acm.org>
parents:
197
diff
changeset
|
8 echo "Usage: makeWebAudio.sh <book dir name>" |
43
d92717f8130c
First go at producing a very simple website.
Jim Hague <jim.hague@laicatc.com>
parents:
diff
changeset
|
9 exit 1 |
d92717f8130c
First go at producing a very simple website.
Jim Hague <jim.hague@laicatc.com>
parents:
diff
changeset
|
10 fi |
d92717f8130c
First go at producing a very simple website.
Jim Hague <jim.hague@laicatc.com>
parents:
diff
changeset
|
11 |
d92717f8130c
First go at producing a very simple website.
Jim Hague <jim.hague@laicatc.com>
parents:
diff
changeset
|
12 dir=`pwd` |
d92717f8130c
First go at producing a very simple website.
Jim Hague <jim.hague@laicatc.com>
parents:
diff
changeset
|
13 |
d92717f8130c
First go at producing a very simple website.
Jim Hague <jim.hague@laicatc.com>
parents:
diff
changeset
|
14 booke=$dir/$1 |
943 | 15 basewebdir=$dir/web |
16 basetunedir=$basewebdir/tunes | |
43
d92717f8130c
First go at producing a very simple website.
Jim Hague <jim.hague@laicatc.com>
parents:
diff
changeset
|
17 |
400
f1c4abe4fc75
First go at adding the tune learner page.
Jim Hague <jim.hague@acm.org>
parents:
399
diff
changeset
|
18 # Make MP3 and OGG files for the input .abc. Since we're listening to |
f1c4abe4fc75
First go at adding the tune learner page.
Jim Hague <jim.hague@acm.org>
parents:
399
diff
changeset
|
19 # a doorbell playing the tunes, go for lowest quality (and hence smallest) |
943 | 20 # MP3 and OGG. $1 is the input filename, $2 is the output directory, |
21 # $3 is optional args for timidity. | |
394
ae9c05d2aafd
Make slow speed web audio files.
Jim Hague <jim.hague@acm.org>
parents:
393
diff
changeset
|
22 makeaudiofiles() |
ae9c05d2aafd
Make slow speed web audio files.
Jim Hague <jim.hague@acm.org>
parents:
393
diff
changeset
|
23 { |
ae9c05d2aafd
Make slow speed web audio files.
Jim Hague <jim.hague@acm.org>
parents:
393
diff
changeset
|
24 name=`basename $1 .abc` |
943 | 25 tunedir="$2" |
394
ae9c05d2aafd
Make slow speed web audio files.
Jim Hague <jim.hague@acm.org>
parents:
393
diff
changeset
|
26 |
943 | 27 abc2midi $1 -o $tunedir/${name}.tmp.mid |
28 mv $tunedir/${name}.tmp.mid $tunedir/${name}.mid | |
29 timidity -OwM $3 -o $tunedir/${name}.wav $tunedir/${name}.mid | |
30 lame -m m -V 9 --quiet $tunedir/${name}.wav $tunedir/${name}.tmp.mp3 | |
31 mv $tunedir/${name}.tmp.mp3 $tunedir/${name}.mp3 | |
394
ae9c05d2aafd
Make slow speed web audio files.
Jim Hague <jim.hague@acm.org>
parents:
393
diff
changeset
|
32 # Timidity can generate OGG directly. But we need to generate WAV |
ae9c05d2aafd
Make slow speed web audio files.
Jim Hague <jim.hague@acm.org>
parents:
393
diff
changeset
|
33 # for lame, and oggenc produces smaller output. OGG is needed for |
ae9c05d2aafd
Make slow speed web audio files.
Jim Hague <jim.hague@acm.org>
parents:
393
diff
changeset
|
34 # Firefox's audio tag. FF doesn't support MP3, some others support |
ae9c05d2aafd
Make slow speed web audio files.
Jim Hague <jim.hague@acm.org>
parents:
393
diff
changeset
|
35 # MP3 but not OGG. |
943 | 36 oggenc -Q -q 0 -o $tunedir/${name}.tmp.ogg $tunedir/${name}.wav |
37 mv $tunedir/${name}.tmp.ogg $tunedir/${name}.ogg | |
394
ae9c05d2aafd
Make slow speed web audio files.
Jim Hague <jim.hague@acm.org>
parents:
393
diff
changeset
|
38 |
943 | 39 rm $tunedir/${name}.wav |
394
ae9c05d2aafd
Make slow speed web audio files.
Jim Hague <jim.hague@acm.org>
parents:
393
diff
changeset
|
40 } |
ae9c05d2aafd
Make slow speed web audio files.
Jim Hague <jim.hague@acm.org>
parents:
393
diff
changeset
|
41 |
943 | 42 # Make audio for a new tempo for the abc file $1, giving the output |
43 # files the same name with a prefix $3 in output directory $2. The new | |
44 # tempo is the original tempo (120 used if not specified), multiplied | |
45 # by $4 and divided by $5. These audio files are for Learner use; | |
46 # I've found that having the chords thumping away can make it hard to | |
47 # distinguish the melody, so arrange for timidity to mute everything | |
48 # except the melody track. | |
399
aeef7b1ca0ad
Make 1/4, 1/2 and 3/4 speed audio for tunes.
Jim Hague <jim.hague@acm.org>
parents:
394
diff
changeset
|
49 makeaudiofortempo() |
aeef7b1ca0ad
Make 1/4, 1/2 and 3/4 speed audio for tunes.
Jim Hague <jim.hague@acm.org>
parents:
394
diff
changeset
|
50 { |
943 | 51 name=`basename $1 .abc` |
52 tunedir="$2" | |
53 newspeedfilename="$3-${name}.abc" | |
54 mkdir -p $tunedir | |
399
aeef7b1ca0ad
Make 1/4, 1/2 and 3/4 speed audio for tunes.
Jim Hague <jim.hague@acm.org>
parents:
394
diff
changeset
|
55 |
aeef7b1ca0ad
Make 1/4, 1/2 and 3/4 speed audio for tunes.
Jim Hague <jim.hague@acm.org>
parents:
394
diff
changeset
|
56 # Prepare new speed audio files. |
aeef7b1ca0ad
Make 1/4, 1/2 and 3/4 speed audio for tunes.
Jim Hague <jim.hague@acm.org>
parents:
394
diff
changeset
|
57 # The tempo is either a plain number, or <notelen>=<number>. |
aeef7b1ca0ad
Make 1/4, 1/2 and 3/4 speed audio for tunes.
Jim Hague <jim.hague@acm.org>
parents:
394
diff
changeset
|
58 tempo=`$dir/abcfield.py --field Q $1` |
aeef7b1ca0ad
Make 1/4, 1/2 and 3/4 speed audio for tunes.
Jim Hague <jim.hague@acm.org>
parents:
394
diff
changeset
|
59 if [ -z $tempo ]; then |
aeef7b1ca0ad
Make 1/4, 1/2 and 3/4 speed audio for tunes.
Jim Hague <jim.hague@acm.org>
parents:
394
diff
changeset
|
60 echo "Warning: $1 has no tempo. Using 120." |
aeef7b1ca0ad
Make 1/4, 1/2 and 3/4 speed audio for tunes.
Jim Hague <jim.hague@acm.org>
parents:
394
diff
changeset
|
61 tempo="120" |
aeef7b1ca0ad
Make 1/4, 1/2 and 3/4 speed audio for tunes.
Jim Hague <jim.hague@acm.org>
parents:
394
diff
changeset
|
62 fi |
aeef7b1ca0ad
Make 1/4, 1/2 and 3/4 speed audio for tunes.
Jim Hague <jim.hague@acm.org>
parents:
394
diff
changeset
|
63 pos=`expr index $tempo '='` |
aeef7b1ca0ad
Make 1/4, 1/2 and 3/4 speed audio for tunes.
Jim Hague <jim.hague@acm.org>
parents:
394
diff
changeset
|
64 numtempo=${tempo:pos} |
aeef7b1ca0ad
Make 1/4, 1/2 and 3/4 speed audio for tunes.
Jim Hague <jim.hague@acm.org>
parents:
394
diff
changeset
|
65 notelenprefix=${tempo:0:pos} |
aeef7b1ca0ad
Make 1/4, 1/2 and 3/4 speed audio for tunes.
Jim Hague <jim.hague@acm.org>
parents:
394
diff
changeset
|
66 # Calculate new tempo. |
943 | 67 newtempo=$(( ( $numtempo * $4 ) / $5 )) |
399
aeef7b1ca0ad
Make 1/4, 1/2 and 3/4 speed audio for tunes.
Jim Hague <jim.hague@acm.org>
parents:
394
diff
changeset
|
68 # Insert new tempo and delete old. Old may not exist, |
aeef7b1ca0ad
Make 1/4, 1/2 and 3/4 speed audio for tunes.
Jim Hague <jim.hague@acm.org>
parents:
394
diff
changeset
|
69 # so do this rather than overwrite. |
943 | 70 sed -e "/^Q:/d" -e "/^K:/aQ: ${notelenprefix}${newtempo}" $1 > $tunedir/$newspeedfilename |
71 makeaudiofiles $tunedir/$newspeedfilename $tunedir --mute=0,-1 | |
72 rm $tunedir/$newspeedfilename | |
399
aeef7b1ca0ad
Make 1/4, 1/2 and 3/4 speed audio for tunes.
Jim Hague <jim.hague@acm.org>
parents:
394
diff
changeset
|
73 } |
aeef7b1ca0ad
Make 1/4, 1/2 and 3/4 speed audio for tunes.
Jim Hague <jim.hague@acm.org>
parents:
394
diff
changeset
|
74 |
394
ae9c05d2aafd
Make slow speed web audio files.
Jim Hague <jim.hague@acm.org>
parents:
393
diff
changeset
|
75 # Generate audio files and slow speed (currently half speed) audio files. |
753
b83b49f2a0a0
Correct Mac-ism. find -maxdepth n, not find -depth n.
Jim Hague <jim.hague@acm.org>
parents:
748
diff
changeset
|
76 find $booke -maxdepth 1 -name "*.abc" | sort | |
43
d92717f8130c
First go at producing a very simple website.
Jim Hague <jim.hague@laicatc.com>
parents:
diff
changeset
|
77 while read filename |
d92717f8130c
First go at producing a very simple website.
Jim Hague <jim.hague@laicatc.com>
parents:
diff
changeset
|
78 do |
943 | 79 name=`basename $filename .abc` |
80 tunedir=$basetunedir/$name | |
1026
e4d31e094d24
Changes to get Beginners booke building.
Jim Hague <jim.hague@acm.org>
parents:
943
diff
changeset
|
81 |
e4d31e094d24
Changes to get Beginners booke building.
Jim Hague <jim.hague@acm.org>
parents:
943
diff
changeset
|
82 # Already generated? |
e4d31e094d24
Changes to get Beginners booke building.
Jim Hague <jim.hague@acm.org>
parents:
943
diff
changeset
|
83 if [ -f $tunedir/${name}.mp3 ]; then |
e4d31e094d24
Changes to get Beginners booke building.
Jim Hague <jim.hague@acm.org>
parents:
943
diff
changeset
|
84 continue |
e4d31e094d24
Changes to get Beginners booke building.
Jim Hague <jim.hague@acm.org>
parents:
943
diff
changeset
|
85 fi |
e4d31e094d24
Changes to get Beginners booke building.
Jim Hague <jim.hague@acm.org>
parents:
943
diff
changeset
|
86 |
943 | 87 mkdir -p $tunedir |
88 | |
89 makeaudiofiles $filename $tunedir | |
394
ae9c05d2aafd
Make slow speed web audio files.
Jim Hague <jim.hague@acm.org>
parents:
393
diff
changeset
|
90 |
399
aeef7b1ca0ad
Make 1/4, 1/2 and 3/4 speed audio for tunes.
Jim Hague <jim.hague@acm.org>
parents:
394
diff
changeset
|
91 # Now make 1/4, 1/2 and 3/4 speed audio. |
943 | 92 makeaudiofortempo $filename $tunedir "veryslow" 1 4 |
93 makeaudiofortempo $filename $tunedir "slow" 2 4 | |
94 makeaudiofortempo $filename $tunedir "littleslow" 3 4 | |
95 makeaudiofortempo $filename $tunedir "normal" 4 4 | |
43
d92717f8130c
First go at producing a very simple website.
Jim Hague <jim.hague@laicatc.com>
parents:
diff
changeset
|
96 done |