changeset 50:e666306c5ab1

Add list of tune first lines. Add a list of tune first lines to the Booke. First, a small Python script to filter a .abc file and spit out just enough to give a graphic of the first line without the title. Then generate these graphics and generate a new section in the Booke with a longtable of tune name and the first line graphic.
author Jim Hague <jim.hague@laicatc.com>
date Sun, 04 Mar 2012 20:16:48 +0000
parents ac3bbc2195c1
children 78a035e1a9bd
files abcfirstline.py dottes.tex.firstlines dottes.tex.footer dottes.tex.header makeBooke.sh makeGraphics.sh
diffstat 6 files changed, 64 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/abcfirstline.py	Sun Mar 04 20:16:48 2012 +0000
@@ -0,0 +1,30 @@
+#!/usr/bin/env python
+#
+# Write out a modified version of a .abc file with just the data
+# to print the first line of the music only.
+#
+
+import sys
+
+def process(inf):
+    print "X:1"
+    for line in inf:
+        line = line.strip()
+        start = line[:2]
+        if start[0] != "|" and start[1] == ":":
+            if start[0] in ["M", "K", "L"]:
+                print line
+        elif start[0] != "%":
+            print line
+            if line[-1] != "\\":
+                break
+
+if len(sys.argv) > 1:
+    for arg in sys.argv[1:]:
+        try:
+            inf = open(arg, "r")
+            process(inf)
+        finally:
+            inf.close()
+else:
+    process(sys.stdin)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dottes.tex.firstlines	Sun Mar 04 20:16:48 2012 +0000
@@ -0,0 +1,12 @@
+% -----
+
+\newpage
+\section{List of tune first lines}
+
+You know the feeling. Everyone has just launched into a well-loved tune.
+You've heard it before, but don't remember the name. So here's a list of
+tune first lines to help you figure out what it is in time to join in.
+
+\setlength\LTleft{0pt}
+\setlength\LTright{0pt}
+\begin{longtable}{lr}
--- a/dottes.tex.footer	Sun Mar 04 18:10:53 2012 +0000
+++ b/dottes.tex.footer	Sun Mar 04 20:16:48 2012 +0000
@@ -1,3 +1,5 @@
+\end{longtable}
+
 % -----
 
 \end{document}
--- a/dottes.tex.header	Sun Mar 04 18:10:53 2012 +0000
+++ b/dottes.tex.header	Sun Mar 04 20:16:48 2012 +0000
@@ -3,6 +3,7 @@
 \usepackage{helvet}
 \usepackage{newcent}
 \usepackage{fancyhdr}
+\usepackage{longtable}
 
 % ----- Common variables
 
--- a/makeBooke.sh	Sun Mar 04 18:10:53 2012 +0000
+++ b/makeBooke.sh	Sun Mar 04 20:16:48 2012 +0000
@@ -50,6 +50,16 @@
         echo -E "\end{center}" >> $builddir/$output
     done
 
+cat dottes.tex.firstlines >> $builddir/$output
+
+find $booke -name "*.abc" | sort |
+    while read filename
+    do
+        title=`grep "^T:" $filename | head -1 | sed -e "s/^T: *//"`
+        name=`basename $filename .abc`
+        echo -E "$title & \raisebox{-.25\height}{\includegraphics[width=8cm]{$graphicsdir/firstline-$name}} \\\\" >> $builddir/$output
+    done
+
 cat dottes.tex.footer >> $builddir/$output
 
 cp $outputa4 $builddir
--- a/makeGraphics.sh	Sun Mar 04 18:10:53 2012 +0000
+++ b/makeGraphics.sh	Sun Mar 04 20:16:48 2012 +0000
@@ -21,9 +21,18 @@
     while read filename
     do
         name=`basename $filename .abc`
+
+        # Make the tune graphic.
         abcm2ps -j0 +c -n -E -O $graphicsdir/$name.eps $filename
         # Make $name.eps so we can build with LaTeX.
         mv $graphicsdir/${name}001.eps $graphicsdir/${name}.eps
         # And make the corresponding PDF for pdflatex.
         epstopdf --outfile=$graphicsdir/$name.pdf $graphicsdir/${name}.eps
+
+        # and make the first line graphic.
+        $dir/abcfirstline.py $filename > firstline.abc
+        abcm2ps +c -M +Q -E -O $graphicsdir/firstline-$name.eps firstline.abc
+        mv $graphicsdir/firstline-${name}001.eps $graphicsdir/firstline-${name}.eps
+        rm firstline.abc
+        epstopdf --outfile=$graphicsdir/firstline-$name.pdf $graphicsdir/firstline-${name}.eps
     done