@ -0,0 +1,13 @@ |
|||||
|
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE |
||||
|
Version 2, December 2004 |
||||
|
|
||||
|
Copyright (C) 2004 Sam Hocevar <sam@hocevar.net> |
||||
|
|
||||
|
Everyone is permitted to copy and distribute verbatim or modified |
||||
|
copies of this license document, and changing it is allowed as long |
||||
|
as the name is changed. |
||||
|
|
||||
|
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE |
||||
|
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION |
||||
|
|
||||
|
0. You just DO WHAT THE FUCK YOU WANT TO. |
@ -1,9 +0,0 @@ |
|||||
\begin{song}{Johnny I Hardly Knew Ye}{Em}{~}{irish traditional}{}{} |
|
||||
\input{battlefield/johnny_i_hardly_knew_ye.tex} |
|
||||
\end{song} |
|
||||
|
|
||||
\begin{song}{Whiskey You're The Devil}{D}{~}{irish traditional}{}{} |
|
||||
\input{battlefield/whiskey_you_re_the_devil.tex} |
|
||||
\end{song} |
|
||||
|
|
||||
\input{battlefield/foggy.tex} |
|
@ -1,65 +0,0 @@ |
|||||
\begin{SBChorus} |
|
||||
Oh, \Ch{G}{whiskey} you're the devil, You're \Ch{C}{leading} me \Ch{G}{astray} |
|
||||
|
|
||||
O'er hills and mountains and to \Ch{D}{Americae} |
|
||||
|
|
||||
You're \Ch{G}{sweeter}, stronger, decenter, You're \Ch{C}{spunkier} than \Ch{G}{tea} |
|
||||
|
|
||||
Oh, \Ch{G}{whiskey} you're me darling drunk or \Ch{D}{so}\Ch{G}{ber} |
|
||||
\end{SBChorus} |
|
||||
|
|
||||
\bigskip |
|
||||
|
|
||||
\begin{SBVerse*} |
|
||||
Now \Ch{G}{brave} boys, we're on the march |
|
||||
|
|
||||
\Ch{D}{Off} to Portu\Ch{C}{gal} and Spain |
|
||||
|
|
||||
\Ch{G}{Drums} a'beating, banners a'waving |
|
||||
|
|
||||
\Ch{C}{Devil} a'home will \Ch{D}{come} tonight |
|
||||
|
|
||||
Lo' fare thee well With me thitery doodelum the \Ch{D}{da} |
|
||||
|
|
||||
Me \Ch{Am}{thitery} doodelum the \Ch{C}{da} |
|
||||
|
|
||||
Me \Ch{G}{right} fol' tur-a laddie-o |
|
||||
|
|
||||
There's \Ch{D}{whiskey} in the \Ch{G}{jar} |
|
||||
\end{SBVerse*} |
|
||||
|
|
||||
\bigskip |
|
||||
|
|
||||
The French are fighting boldly |
|
||||
|
|
||||
Men are dying hot and coldly |
|
||||
|
|
||||
Give every man his flask of powder |
|
||||
|
|
||||
His firelock on his shoulder |
|
||||
|
|
||||
Lo' fare thee well With me thitery doodelum the da |
|
||||
|
|
||||
Me thitery doodelum the da |
|
||||
|
|
||||
Me right fol' tur-a laddie-o |
|
||||
|
|
||||
There's whiskey in the jar |
|
||||
|
|
||||
\bigskip |
|
||||
|
|
||||
Says the mother : \og Do not wrong me |
|
||||
|
|
||||
Don't take me daughter from me |
|
||||
|
|
||||
For if you do I will torment you |
|
||||
|
|
||||
And after death me ghost will haunt you \fg |
|
||||
|
|
||||
We're off, fare thee well With me thitery doodelum the da |
|
||||
|
|
||||
Me thitery doodelum the da |
|
||||
|
|
||||
Me right fol' tur-a laddie-o |
|
||||
|
|
||||
There's whiskey in the jar |
|
@ -1,5 +0,0 @@ |
|||||
\begin{song}{The Jug of Punch}{D}{~}{traditional}{}{} |
|
||||
\input{booze/jug_of_punch.tex} |
|
||||
\end{song} |
|
||||
|
|
||||
\input{booze/bugger.tex} |
|
@ -0,0 +1,2 @@ |
|||||
|
Rem manually performs "make clean" |
||||
|
del *.aux *.d *.toc *.out *.log *.nav *.snm *.sbx *.sxd |
@ -0,0 +1,337 @@ |
|||||
|
% CREPBOOK DOCUMENT CLASS -- version 0.2.2 |
||||
|
% for LaTeX2e |
||||
|
% |
||||
|
\NeedsTeXFormat{LaTeX2e}[1995/12/01] |
||||
|
\ProvidesClass{crepbook}[2009/11/12 v0.4.2 LaTeX document class for Crep |
||||
|
Books] |
||||
|
|
||||
|
\newif{\iftabs} |
||||
|
\newif{\iflilypond} |
||||
|
\newif{\ifnodiagram} |
||||
|
\newif{\ifpictures} |
||||
|
|
||||
|
\tabsfalse |
||||
|
\lilypondfalse |
||||
|
\nodiagramtrue |
||||
|
\picturesfalse |
||||
|
|
||||
|
% Options |
||||
|
\DeclareOption{tabs}{\tabstrue} |
||||
|
\DeclareOption{notabs}{\tabsfalse} |
||||
|
\DeclareOption{lilypond}{\lilypondtrue} |
||||
|
\DeclareOption{nolilypond}{\lilypondfalse} |
||||
|
\DeclareOption{nodiagram}{\nodiagramtrue} |
||||
|
\DeclareOption{diagram}{\nodiagramfalse} |
||||
|
\DeclareOption{pictures}{\picturestrue} |
||||
|
\DeclareOption{nopictures}{\picturesfalse} |
||||
|
|
||||
|
\DeclareOption{10pt}{\PassOptionsToClass{\CurrentOption}{article}} |
||||
|
\DeclareOption{11pt}{\PassOptionsToClass{\CurrentOption}{article}} |
||||
|
\DeclareOption{12pt}{\PassOptionsToClass{\CurrentOption}{article}} |
||||
|
|
||||
|
% Default options : pass to the songs package |
||||
|
\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{songs}} |
||||
|
\ProcessOptions |
||||
|
|
||||
|
% Base class |
||||
|
\LoadClass[a4paper]{article} |
||||
|
|
||||
|
% Main packages |
||||
|
\RequirePackage{graphicx,xcolor} |
||||
|
\RequirePackage{songs} |
||||
|
\RequirePackage{fancybox} |
||||
|
\definecolor{tango-green-3}{HTML}{4e9a06} |
||||
|
\definecolor{tango-blue-3}{HTML}{204a87} |
||||
|
\RequirePackage[bookmarks, |
||||
|
bookmarksopen, |
||||
|
colorlinks=true, |
||||
|
linkcolor=tango-green-3, |
||||
|
urlcolor=tango-blue-3]{hyperref} |
||||
|
\RequirePackage{tikz} |
||||
|
\RequirePackage{tex/licence} |
||||
|
|
||||
|
\iflyric% |
||||
|
\tabsfalse% |
||||
|
\lilypondfalse% |
||||
|
\nodiagramtrue% |
||||
|
\picturesfalse% |
||||
|
\renewcommand{\colbotglue}{0pt plus .5\textheight minus 0pt}% |
||||
|
\fi |
||||
|
|
||||
|
% Start |
||||
|
\def\andname{and} |
||||
|
\def\lastandname{\unskip, and} |
||||
|
|
||||
|
\newcounter{@inst} |
||||
|
\newcounter{@auth} |
||||
|
\newcounter{auco} |
||||
|
|
||||
|
\def\clearheadinfo{\gdef\@author{No Author Given}% |
||||
|
\gdef\@title{No Title Given}% |
||||
|
\gdef\@subtitle{} |
||||
|
\gdef\@version{} |
||||
|
\gdef\@web{} |
||||
|
\gdef\@mail{} |
||||
|
\gdef\@email{} |
||||
|
\gdef\@picture{} |
||||
|
\gdef\@picturecopyright{}} |
||||
|
|
||||
|
\def\subtitle#1{\gdef\@subtitle{#1}} |
||||
|
\def\version#1{\gdef\@version{#1}} |
||||
|
\def\web#1{\gdef\@web{#1}} |
||||
|
\def\mail#1{\gdef\@mail{#1}} |
||||
|
\def\email#1{\gdef\@email{#1}} |
||||
|
\def\licence#1{\gdef\@licence{#1}} |
||||
|
\def\picture#1{\gdef\@picture{#1}} |
||||
|
\def\picturecopyright#1{\gdef\@picturecopyright{#1}} |
||||
|
\def\footer#1{\gdef\@footer{#1}} |
||||
|
\clearheadinfo |
||||
|
|
||||
|
\renewcommand\maketitle{ |
||||
|
\@maketitle |
||||
|
|
||||
|
\thispagestyle{empty} |
||||
|
|
||||
|
\clearheadinfo} |
||||
|
% |
||||
|
\def\@maketitle{\newpage |
||||
|
\markboth{}{}% |
||||
|
\def\lastand{\ifnum\value{@inst}=2\relax |
||||
|
\unskip{} \andname\ |
||||
|
\else |
||||
|
\unskip \lastandname\ |
||||
|
\fi}% |
||||
|
\def\and{\stepcounter{@auth}\relax |
||||
|
\ifnum\value{@auth}=\value{@inst}% |
||||
|
\lastand |
||||
|
\else |
||||
|
\unskip, |
||||
|
\fi}% |
||||
|
\begin{center}% |
||||
|
{\rule{\textwidth}{1mm}} |
||||
|
|
||||
|
{\Huge \bfseries\boldmath\@title \par} |
||||
|
|
||||
|
\if!\@subtitle!\else {\begin{flushright}\large \bfseries\boldmath |
||||
|
\@subtitle \par \end{flushright}} |
||||
|
\fi |
||||
|
|
||||
|
{\rule{\textwidth}{1mm}} |
||||
|
|
||||
|
\end{center}% |
||||
|
|
||||
|
\vspace{1.5cm} |
||||
|
|
||||
|
\begin{flushleft} |
||||
|
\begin{tabular}{l l} |
||||
|
\if!\@version!\else{\bf version:} & \@version \\ \fi |
||||
|
\if!\@date!\else{\bf date:} & \@date \\ \fi |
||||
|
\if!\@author!\else{\bf auteurs:} & \@author \\ \fi |
||||
|
\if!\@web!\else{\bf web:} & \url{\@web} \\ \fi |
||||
|
\if!\@mail!\else{\bf mail:} & \url{\@mail} \\ \fi |
||||
|
\end{tabular} |
||||
|
\end{flushleft} |
||||
|
|
||||
|
\vspace{1.5cm} |
||||
|
|
||||
|
\begin{center} |
||||
|
\includegraphics[height=14cm]{\@picture} |
||||
|
\begin{flushright} |
||||
|
{\flushright \small \@picturecopyright} |
||||
|
\end{flushright} |
||||
|
\end{center} |
||||
|
|
||||
|
\@footer |
||||
|
|
||||
|
\thispagestyle{empty} |
||||
|
\newpage |
||||
|
\@licence |
||||
|
\newpage |
||||
|
} |
||||
|
|
||||
|
\makeatletter |
||||
|
|
||||
|
\newlength{\coverheight} |
||||
|
\setlength{\coverheight}{2cm} |
||||
|
\newlength{\coverspace} |
||||
|
\setlength{\coverspace}{0.1cm} |
||||
|
\newcommand{\songcover}{} |
||||
|
\newcommand{\songalbum}{} |
||||
|
\newsongkey{cov}{\let\songcover\@empty}{\def\songcover{#1}} |
||||
|
\newsongkey{album}{\let\songalbum\@empty}{\def\songalbum{#1}} |
||||
|
\newcommand\cover{% |
||||
|
\ifpictures% |
||||
|
\ifx\songcover\@empty\else% |
||||
|
\mbox{% |
||||
|
\includegraphics[width=\coverheight]{\songcover}% |
||||
|
\hspace{\coverspace}% |
||||
|
}% |
||||
|
\fi% |
||||
|
\fi% |
||||
|
} |
||||
|
|
||||
|
\newlength{\capoheight} |
||||
|
\setlength{\capoheight}{1.5cm} |
||||
|
\renewcommand\capo[1]{% |
||||
|
\ifchorded% |
||||
|
\iftranscapos% |
||||
|
\transpose{#1}% |
||||
|
\else% |
||||
|
\ifpictures |
||||
|
\mbox{% |
||||
|
\includegraphics[height=\capoheight]{capodastre}% |
||||
|
\put(-22,8){\Large #1} |
||||
|
}% |
||||
|
\else |
||||
|
\musicnote{capo: #1}% |
||||
|
\fi |
||||
|
\hspace{\coverspace}% |
||||
|
\fi% |
||||
|
\fi% |
||||
|
}% |
||||
|
|
||||
|
\ifnodiagram% |
||||
|
\renewcommand{\gtab}[2]{}% |
||||
|
\fi% |
||||
|
|
||||
|
\newcommand{\lilypond}[1]{% |
||||
|
\iflilypond% |
||||
|
\IfFileExists{./lilypond/#1.pdf}{\includegraphics{./lilypond/#1}}{}% |
||||
|
\fi% |
||||
|
} |
||||
|
|
||||
|
\newcommand{\image}[2][]{% |
||||
|
\ifpictures% |
||||
|
\begin{flushright}% |
||||
|
\includegraphics[#1]{#2}% |
||||
|
\end{flushright}% |
||||
|
\fi% |
||||
|
} |
||||
|
|
||||
|
% Configuration of the songs package |
||||
|
\titleprefixword{} |
||||
|
\renewcommand{\stitlefont}{\LARGE\bf} |
||||
|
\renewcommand{\printchord}[1]{\small{\it#1}} |
||||
|
\renewcommand{\chorusfont}{\it} |
||||
|
\renewcommand{\showauthors}{% |
||||
|
\hbox{\normalsize\songauthors}% |
||||
|
} |
||||
|
\renewcommand{\idxtitlefont}{\sffamily\bfseries} |
||||
|
\renewcommand{\idxauthfont}{\sffamily\bfseries} |
||||
|
\renewcommand{\idxheadfont}{\sffamily\it\LARGE} |
||||
|
\renewcommand{\idxrefsfont}{\bfseries} |
||||
|
|
||||
|
% |
||||
|
% Customization of the page appearance |
||||
|
% |
||||
|
\RequirePackage[ |
||||
|
a4paper % paper size |
||||
|
,includeheadfoot % include header and footer into text size |
||||
|
,hmarginratio=1:1 % ratio between inner and outer margin (default) |
||||
|
,outer=1.8cm % outer margin (right) |
||||
|
,vmarginratio=1:1 % ratio between top and bottom margin |
||||
|
,bmargin=1.3cm % bottom margin |
||||
|
% ,bindingoffset=1.7cm % space reserved to bound pages together |
||||
|
]{geometry} |
||||
|
|
||||
|
% Paragraph indentation space |
||||
|
\setlength{\parindent}{0.3cm} |
||||
|
|
||||
|
% |
||||
|
% songs class options |
||||
|
% |
||||
|
% Horizontal space reserved to verse number |
||||
|
\setlength{\versenumwidth}{1em} |
||||
|
% Modifier to the space between consecutive lines of lyrics |
||||
|
\baselineadj=-2pt plus 1pt minus 1pt |
||||
|
% Space between verses and chorus |
||||
|
\versesep=6pt plus 2pt minus 2pt |
||||
|
%lyrics font |
||||
|
\renewcommand{\lyricfont}{\normalfont\normalsize} |
||||
|
|
||||
|
|
||||
|
% color used to shade song numbers. |
||||
|
\definecolor{SongbookShade}{HTML}{d1e4ae} |
||||
|
|
||||
|
% |
||||
|
\iftabs% |
||||
|
%% Code from tabs.sty |
||||
|
% Counters |
||||
|
\newcounter{tab-string} |
||||
|
\newcounter{tab-tempo} |
||||
|
\newcounter{tab-line} |
||||
|
% Length |
||||
|
\newlength{\tablen} |
||||
|
% Variables |
||||
|
\def\chordtuning{E,A,D,G,B,e} |
||||
|
\def\xunit{0.35} |
||||
|
\def\yunit{0.2} |
||||
|
% The tab environmant |
||||
|
% \begin{tab} |
||||
|
\newenvironment{tab} |
||||
|
{ |
||||
|
\normalsize |
||||
|
\setcounter{tab-line}{0} |
||||
|
\setcounter{tab-tempo}{0} |
||||
|
|
||||
|
\setlength{\tablen}{\xunit cm} |
||||
|
|
||||
|
% A single note |
||||
|
% \single <string> <fret> |
||||
|
\newcommand{\single}[2]{ |
||||
|
% draw tuning if we are at the beginining of a new tab line |
||||
|
\ifnum\value{tab-tempo}=0 |
||||
|
\setcounter{tab-string}{6} |
||||
|
\foreach \tuning in \chordtuning |
||||
|
{ |
||||
|
\node at (-1,\value{tab-line}+\value{tab-string}) {\tuning}; |
||||
|
\addtocounter{tab-string}{-1} |
||||
|
} |
||||
|
\fi |
||||
|
|
||||
|
% draw the 6 strings |
||||
|
\foreach \string in {1,...,6} |
||||
|
{ |
||||
|
\draw[xshift=-0.5cm] (\value{tab-tempo},\value{tab-line}+\string) -- +(1,0); |
||||
|
} |
||||
|
\draw node[single] at (\value{tab-tempo},\value{tab-line}+##1) {##2}; |
||||
|
\addtocounter{tab-tempo}{1} |
||||
|
\addtolength{\tablen}{\xunit cm} |
||||
|
\ifnum\hsize<\tablen |
||||
|
\addtocounter{tab-line}{8} |
||||
|
\setlength{\tablen}{\xunit cm} |
||||
|
\setcounter{tab-tempo}{0} |
||||
|
\end{tikzpicture} |
||||
|
\begin{tikzpicture}[ |
||||
|
single/.style={}, |
||||
|
cm={\xunit,0,0,-\yunit,(0,0)} |
||||
|
] |
||||
|
\fi |
||||
|
} |
||||
|
% A mesure bar |
||||
|
% \bar |
||||
|
\renewcommand{\bar}{ |
||||
|
\draw[xshift=-0.5cm] (\value{tab-tempo},\value{tab-line}+1) --+(0,5); |
||||
|
} |
||||
|
|
||||
|
\hspace{-\parindent} |
||||
|
\begin{tikzpicture}[ |
||||
|
single/.style={}, |
||||
|
cm={\xunit,0,0,-\yunit,(0,0)} |
||||
|
] |
||||
|
|
||||
|
% draw the first bar |
||||
|
\draw[xshift=-0.5cm] (0,1) --+(0,5); |
||||
|
} |
||||
|
{ |
||||
|
\end{tikzpicture} |
||||
|
} |
||||
|
\else% |
||||
|
\newenvironment{tab}{% |
||||
|
\newcommand{\single}[2]{}% |
||||
|
\renewcommand{\bar}{}% |
||||
|
}{}% |
||||
|
\fi% |
||||
|
|
||||
|
%% End of tabs.sty file |
||||
|
\makeatother |
@ -0,0 +1,4 @@ |
|||||
|
{ |
||||
|
"songs" : [ |
||||
|
] |
||||
|
} |
@ -1,5 +0,0 @@ |
|||||
\begin{song}{Kilkelly, Ireland}{Em}{~}{irish traditional}{}{} |
|
||||
\input{fields/kilkelly.tex} |
|
||||
\end{song} |
|
||||
|
|
||||
\input{fields/maguires.tex} |
|
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 3.4 KiB |
After Width: | Height: | Size: 19 KiB |
After Width: | Height: | Size: 3.0 KiB |
After Width: | Height: | Size: 3.2 KiB |
After Width: | Height: | Size: 3.3 KiB |
After Width: | Height: | Size: 19 KiB |
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 3.4 KiB |
After Width: | Height: | Size: 19 KiB |
After Width: | Height: | Size: 3.0 KiB |
After Width: | Height: | Size: 3.2 KiB |
After Width: | Height: | Size: 3.3 KiB |
@ -1,25 +0,0 @@ |
|||||
\begin{music} |
|
||||
\parindent10mm |
|
||||
\instrumentnumber{1} % a single instrument |
|
||||
\setname1{Piano} % whose name is Piano |
|
||||
\setstaffs1{2} % with two staffs |
|
||||
\generalmeter{\meterfrac44}% 4/4 meter chosen |
|
||||
\startextract % starting real score |
|
||||
\Notes\ibu0f0\qb0{cge}\tbu0\qb0g|\hl j\en |
|
||||
\Notes\ibu0f0\qb0{cge}\tbu0\qb0g|\ql l\sk\ql n\en |
|
||||
\bar |
|
||||
\Notes\ibu0f0\qb0{dgf}|\qlp i\en |
|
||||
\notes\tbu0\qb0g|\ibbl1j3\qb1j\tbl1\qb1k\en |
|
||||
\Notes\ibu0f0\qb0{cge}\tbu0\qb0g|\hl j\en |
|
||||
\endextract % terminate excerpt |
|
||||
\end{music} |
|
||||
|
|
||||
TODO : |
|
||||
Kesh Jig / Blackthorn Stick |
|
||||
Kerry Polka (Egan's Polka) / Britches Full Of Stitches / Finnish Polka |
|
||||
D\'erob\'ee de Guingamp |
|
||||
Morrison's Jig / Joe Cooley's Reel |
|
||||
Drowsy Maggie / Glasgow's Reel |
|
||||
Rights of Men / The Pride of Petravore |
|
||||
Banish Misfortune |
|
||||
Devil's Dream |
|
@ -0,0 +1,50 @@ |
|||||
|
%Licence WTFPL |
||||
|
\begin{center} |
||||
|
\textbf{\LARGE{DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE}} |
||||
|
|
||||
|
Version 2, December 2004 |
||||
|
|
||||
|
~\\ |
||||
|
|
||||
|
Copyright (C) 2004 Sam Hocevar <sam@hocevar.net> |
||||
|
\end{center} |
||||
|
\vspace{1cm} |
||||
|
|
||||
|
%------------------------------------------------------------------------------- |
||||
|
\begin{lblock} |
||||
|
Everyone is permitted to copy and distribute verbatim or modified |
||||
|
copies of this license document, and changing it is allowed as long |
||||
|
as the name is changed. |
||||
|
\end{lblock} |
||||
|
%------------------------------------------------------------------------------- |
||||
|
\begin{lblock} |
||||
|
\centering |
||||
|
|
||||
|
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE |
||||
|
|
||||
|
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION |
||||
|
|
||||
|
\begin{enumerate} |
||||
|
\setcounter{enumi}{-1} |
||||
|
\item You just DO WHAT THE FUCK YOU WANT TO. |
||||
|
\end{enumerate} |
||||
|
\end{lblock} |
||||
|
%------------------------------------------------------------------------------- |
||||
|
\paragraph{Songs \LaTeX~Package} |
||||
|
Ce document est écrit en \LaTeX, d'après le style du projet Songs~: |
||||
|
\url{http://songs.sourceforge.net/} |
||||
|
|
||||
|
\paragraph{Note des auteurs} |
||||
|
Toutes les tablatures sont des représentations d'interprétations |
||||
|
personnelles et approximatives de chansons pouvant être protégées par droits |
||||
|
d'auteurs. Ce recueil de chansons n'a absolument aucune vocation |
||||
|
commerciale et joue sur l'autorisation tacite des auteurs et des |
||||
|
ayant-droits, pensant que la publication de ces tablatures représente |
||||
|
plutôt une publicité positive à leur égard. Si un auteur ou une |
||||
|
société accréditée pense que ces tablatures sont utilisées d'une |
||||
|
manière susceptible de porter atteinte à ses droits et désire |
||||
|
s'opposer à la publication de ses tablatures, merci de nous contacter |
||||
|
à \url{benjamin.coudrin+shiver@gmail.com} et celles-ci seront immédiatement |
||||
|
retirées. |
||||
|
%------------------------------------------------------------------------------- |
||||
|
% Fin de la Licence |
@ -0,0 +1,12 @@ |
|||||
|
Rem build tex file from songbook file |
||||
|
songbook.py --songbook=%1.sb --output=%1.tex |
||||
|
|
||||
|
Rem 1st pdf compilation |
||||
|
pdflatex %1.tex |
||||
|
|
||||
|
Rem build indexes |
||||
|
songbook-makeindex.py %1_title.sxd > %1_title.sbx |
||||
|
songbook-makeindex.py %1_auth.sxd > %1_auth.sbx |
||||
|
|
||||
|
Rem 2nd compilation to include indexes |
||||
|
pdflatex %1.tex |
@ -0,0 +1,99 @@ |
|||||
|
# Copyright (c) 2008-2010 Alexandre Dupas <alexandre.dupas@gmail.com>
|
||||
|
#
|
||||
|
# This program is free software; you can redistribute it and/or modify it
|
||||
|
# under the terms of the GNU General Public License as published by the
|
||||
|
# Free Software Foundation; either version 2, or (at your option) any later
|
||||
|
# version.
|
||||
|
#
|
||||
|
# This program is distributed in the hope that it will be useful, but
|
||||
|
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||
|
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
|
# for more details.
|
||||
|
#
|
||||
|
# You should have received a copy of the GNU General Public License along
|
||||
|
# with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
|
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
#
|
||||
|
|
||||
|
SONGBOOKS := $(wildcard *.sb) |
||||
|
TARGETS = $(SONGBOOKS:%.sb=%) |
||||
|
|
||||
|
PDF = $(TARGETS:%=%.pdf) |
||||
|
|
||||
|
CHORDS = chords.tex |
||||
|
CHORDS_SRC = $(shell ls songs/*/*.sg) |
||||
|
|
||||
|
PRINT=printf "%s\n" |
||||
|
PRINTTAB=printf "\t%s\n" |
||||
|
|
||||
|
MAKE_SONGBOOK=./songbook.py |
||||
|
MAKE_INDEX=./songbook-makeindex.py |
||||
|
MAKE_CHORDS=./utils/songbook-gtab.py |
||||
|
|
||||
|
ifeq ($(shell which lilypond),) |
||||
|
LILYPOND=$(ECHO) "** lilypond not found" >&2 ; $(ECHO) lilypond |
||||
|
LILYFILE='' |
||||
|
else |
||||
|
LILYPOND=lilypond |
||||
|
LILY_SRC=$(wildcard lilypond/*.ly) |
||||
|
LILYFILE=$(LILY_SRC:%.ly=%.pdf) |
||||
|
endif |
||||
|
|
||||
|
|
||||
|
LATEX=pdflatex $(LATEX_OPTIONS) |
||||
|
|
||||
|
############################################################
|
||||
|
### Targets
|
||||
|
|
||||
|
default: songbook.pdf |
||||
|
|
||||
|
all: $(PDF) |
||||
|
|
||||
|
pdf: $(PDF) |
||||
|
xpdf $< |
||||
|
|
||||
|
lilypond: $(LILYFILE) |
||||
|
|
||||
|
clean: |
||||
|
@rm -f $(TARGETS:%=%.d) $(TARGETS:%=%.tex) $(TARGETS:%=%.aux) \
|
||||
|
$(TARGETS:%=%.toc) $(TARGETS:%=%.out) $(TARGETS:%=%.log) \
|
||||
|
$(TARGETS:%=%.nav) $(TARGETS:%=%.snm) |
||||
|
@rm -f *.sbx *.sxd |
||||
|
|
||||
|
cleanall: clean |
||||
|
@rm -f $(PDF) |
||||
|
@rm -f $(LILYFILE) |
||||
|
|
||||
|
depend: |
||||
|
|
||||
|
############################################################
|
||||
|
|
||||
|
|
||||
|
$(PDF): %.pdf: %.tex %.aux |
||||
|
|
||||
|
%.aux: %.tex |
||||
|
$(LATEX) $< |
||||
|
|
||||
|
%.sbx: %.sxd |
||||
|
$(MAKE_INDEX) $< > $@ |
||||
|
|
||||
|
%.tex: %.sb |
||||
|
$(MAKE_SONGBOOK) -s $< -o $@ |
||||
|
|
||||
|
%.d: %.sb |
||||
|
$(MAKE_SONGBOOK) -s $< -d -o $@ |
||||
|
|
||||
|
%.pdf: %.ly |
||||
|
@$(LILYPOND) --output=$(@:%.pdf=%) $< |
||||
|
@rm $(@:%.pdf=%.ps) |
||||
|
|
||||
|
$(CHORDS): $(CHORDS_SRC) |
||||
|
$(MAKE_CHORDS) -o $@ |
||||
|
|
||||
|
ifeq (.pdf,$(suffix $(MAKECMDGOALS))) |
||||
|
include $(MAKECMDGOALS:%.pdf=%.d) |
||||
|
else ifneq ($(MAKECMDGOALS),clean) |
||||
|
ifneq ($(MAKECMDGOALS),cleanall) |
||||
|
include $(TARGETS:%=%.d) |
||||
|
endif |
||||
|
endif |
@ -1,9 +0,0 @@ |
|||||
\begin{song}{Whiskey In The Jar}{G}{~}{irish traditional}{}{} |
|
||||
\input{road/whiskey_in_the_jar.tex} |
|
||||
\end{song} |
|
||||
|
|
||||
\begin{song}{Rocky Road To Dublin}{Dm}{~}{irish traditional}{}{} |
|
||||
\input{road/rocky_road_to_dublin.tex} |
|
||||
\end{song} |
|
||||
|
|
||||
\input{road/wild.tex} |
|
@ -1,42 +0,0 @@ |
|||||
\begin{SBVerse*} |
|
||||
\Ch{Dm}{What} shall we do with a drunken sailor |
|
||||
|
|
||||
\Ch{C}{What} shall we do with a drunken sailor |
|
||||
|
|
||||
\Ch{Dm}{What} shall we do with a drunken sailor |
|
||||
|
|
||||
\Ch{C}{Early} in the \Ch{Dm}{mornin'} |
|
||||
\end{SBVerse*} |
|
||||
|
|
||||
\bigskip |
|
||||
|
|
||||
\begin{SBChorus} |
|
||||
\Ch{Dm}{Wey} Hey and Up she rises |
|
||||
|
|
||||
\Ch{C}{Wey} Hey and Up she rises |
|
||||
|
|
||||
\Ch{Dm}{Wey} Hey and Up she rises |
|
||||
|
|
||||
\Ch{C}{Early} in the \Ch{Dm}{mornin'} |
|
||||
\end{SBChorus} |
|
||||
|
|
||||
\bigskip |
|
||||
|
|
||||
Put him in the longboat till he's sober |
|
||||
|
|
||||
\bigskip |
|
||||
|
|
||||
Shave his belly with a rusty rasor |
|
||||
|
|
||||
\bigskip |
|
||||
|
|
||||
Give him a dose of salt and water |
|
||||
|
|
||||
\bigskip |
|
||||
|
|
||||
Put him in the bed with the captain's daughter |
|
||||
|
|
||||
\bigskip |
|
||||
|
|
||||
That's what we'll do with a drunken sailor |
|
||||
|
|
@ -1,32 +0,0 @@ |
|||||
A moi l'forban, que m'importe la gloire,\\ |
|
||||
Les lois du monde, et qu'importe la mort ? \\ |
|
||||
Sur l'océan j'ai planté ma victoire,\\ |
|
||||
Et bois mon vin dans une coupe d'or. \\ |
|
||||
Vivre d'orgie est ma seule espérance, \\ |
|
||||
Le seul bonheur que j'aie pu conquérir. \\ |
|
||||
C'est sur les flots qu'jai passé mon enfance, \\ |
|
||||
C'est sur les flots qu'un forban doit mourir\\ |
|
||||
\bigskip |
|
||||
\textbf{Vin qui pétille, femme gentille, \\ |
|
||||
Sous tes baisers brûlants d'amour ; \\ |
|
||||
Plaisirs, batailles, Vive la canaille ! \\ |
|
||||
Je bois, je chante, et je tue tour à tour\\} |
|
||||
\bigskip |
|
||||
Peut-être qu'au mât d'une barque étrangère\\ |
|
||||
Mon corps, un jour, servira d'étendard\\ |
|
||||
Et tout mon sang rougira la galère\\ |
|
||||
Aujourd'hui fête et demain le hasard. \\ |
|
||||
Allons esclave, allons, debout mon brave,\\ |
|
||||
Buvons la vie et le vin à grands pots ; \\ |
|
||||
Aujourd'hui fête, et puis demain, peut-être \\ |
|
||||
Ma tête ira s'engloutir dans les flots.\\ |
|
||||
\bigskip |
|
||||
Peut-être qu'un jour, par un coup de fortune \\ |
|
||||
Je capturerai l'or d'un beau gallion ;\\ |
|
||||
Riche à pouvoir vous acheter la lune, \\ |
|
||||
Je m'en irai vers d'autres horizons. \\ |
|
||||
Là, respecté, comme un vrai gentilhomme, \\ |
|
||||
Moi qui ne fus qu'un forban, qu'un bandit, \\ |
|
||||
Je pourrai, comme le fils d'un roi, tout comme \\ |
|
||||
Mourir, peut-être, dedans un grand lit.\\ |
|
||||
\bigskip |
|
@ -1,79 +0,0 @@ |
|||||
A moi forban que m'importe la gloire |
|
||||
|
|
||||
N\'e fils de roi et de prostitu\'ee |
|
||||
|
|
||||
Sur des cadavres j'ai chant\'e la victoire |
|
||||
|
|
||||
Et dans un cr\^ane j'ai bu la libert\'e |
|
||||
|
|
||||
Vierge craintive, toi, ma captive |
|
||||
|
|
||||
Ce soir je vais d\'evorer tes app\^ats |
|
||||
|
|
||||
Encore br\^ulant d'une autre amante |
|
||||
|
|
||||
Tes vertus vont expirer dans mes bras. |
|
||||
|
|
||||
\bigskip |
|
||||
|
|
||||
\textbf{Vin qui p\'etille, femme gentille} |
|
||||
|
|
||||
\textbf{Sous tes baisers br\^ulant d'amour, oui d'amour} |
|
||||
|
|
||||
\textbf{Plaisirs... batailles... vive la canaille} |
|
||||
|
|
||||
\textbf{Je bois, je chante et je tue tour \`a tour.} |
|
||||
|
|
||||
\bigskip |
|
||||
|
|
||||
Etant forban je vis dans ma cabine |
|
||||
|
|
||||
En m\'eprisant les lois , m\^eme la mort |
|
||||
|
|
||||
Ne vivant que de meurtre et de rapine |
|
||||
|
|
||||
Je bois mon vin dans une coupe d'or |
|
||||
|
|
||||
Vivre d'orgie est ma seule esp\'erance |
|
||||
|
|
||||
Le seul bonheur que j'ai su conqu\'erir |
|
||||
|
|
||||
car sur les flots j'ai berc\'e mon enfance |
|
||||
|
|
||||
Et sur les flots un forban doit mourir |
|
||||
|
|
||||
\bigskip |
|
||||
|
|
||||
Pendu au m\^at d'une barque \'etrang\`ere |
|
||||
|
|
||||
Mon corps un jour servira d'\'etendard |
|
||||
|
|
||||
Et tout mon sang rougira la gal\`ere |
|
||||
|
|
||||
Aujourd'hui f\^ete et demain le hasard |
|
||||
|
|
||||
Allons esclaves, debout mes braves |
|
||||
|
|
||||
Buvons l'ivresse et l'orgie \`a grands flots |
|
||||
|
|
||||
Aujourd'hui f\^ete , demain peut \^etre |
|
||||
|
|
||||
Mon corps ira s'engloutir dans les flots |
|
||||
|
|
||||
\bigskip |
|
||||
|
|
||||
Si par hasard par un coup de fortune |
|
||||
|
|
||||
Je capturais l'or d'un beau galion |
|
||||
|
|
||||
Riche \`a pouvoir d\'ecrocher la lune |
|
||||
|
|
||||
Je m'en irai vers d'autres horizons |
|
||||
|
|
||||
L\`a, v\'en\'er\'e tout comme un gentilhomme |
|
||||
|
|
||||
Moi qui ne fut qu'un forban qu'un bandit |
|
||||
|
|
||||
L\`a je pourrais peut \^etre tout comme |
|
||||
|
|
||||
Un grand roi dormir dedans un bon lit |
|
@ -1,80 +0,0 @@ |
|||||
\begin{SBVerse*} |
|
||||
Twas \Ch{G}{Friday} morn when \Ch{C}{we} set \Ch{G}{sail} |
|
||||
|
|
||||
And \Ch{C}{we} were not \Ch{D7}{far} from the \Ch{G}{land} |
|
||||
|
|
||||
When the captain, he spied a \Ch{C}{lovely} \Ch{G}{mermaid} |
|
||||
|
|
||||
With a \Ch{C}comb and a \Ch{D7}{glass} in her \Ch{G}{hand} |
|
||||
\end{SBVerse*} |
|
||||
|
|
||||
\bigskip |
|
||||
|
|
||||
\begin{SBChorus} |
|
||||
O the ocean's waves will roll |
|
||||
|
|
||||
And the stormy winds will \Ch{D7}{blow} |
|
||||
|
|
||||
While \Ch{G}{we} poor sailors go \Ch{C}{skipping} to the \Ch{G}{top} |
|
||||
|
|
||||
And the \Ch{C}{landlubbers} \Ch{D7}{lie} down \Ch{G}{below} (below, below) |
|
||||
|
|
||||
And the \Ch{C}{landlubbers} \Ch{D7}{lie} down \Ch{G}{below} |
|
||||
\end{SBChorus} |
|
||||
|
|
||||
\bigskip |
|
||||
|
|
||||
And up spoke the captain of our gallant ship |
|
||||
|
|
||||
And a well-spoken man was he |
|
||||
|
|
||||
I have me a wife in Salem by the sea |
|
||||
|
|
||||
And tonight she a widow will be |
|
||||
|
|
||||
\bigskip |
|
||||
|
|
||||
And up spoke the cookie of our gallant ship |
|
||||
|
|
||||
And a red hot cookie was he |
|
||||
|
|
||||
Saying I care much more for my pots and my pans |
|
||||
|
|
||||
Than I do for the bottom of the sea |
|
||||
|
|
||||
\bigskip |
|
||||
|
|
||||
Then up spoke the cabinboy, of our gallant ship |
|
||||
|
|
||||
And a nasty little lad was he. |
|
||||
|
|
||||
I'm not quite sure I can spell \og mermaid \fg |
|
||||
|
|
||||
But I'm going to the bottom of the sea. |
|
||||
|
|
||||
\bigskip |
|
||||
|
|
||||
Then three times around went our gallant ship |
|
||||
|
|
||||
And three times around went she |
|
||||
|
|
||||
Three times around went our gallant ship |
|
||||
|
|
||||
And she sank to the bottom of the sea |
|
||||
|
|
||||
%%%%%%%%%%%%% A AJOUTER %%%%%%%%%%%%%%%% |
|
||||
%KEY G |
|
||||
|
|
||||
%verse: |
|
||||
%G G C C |
|
||||
%C D7 G |
|
||||
%G G C C |
|
||||
%C D7 G |
|
||||
|
|
||||
|
|
||||
%chorus: |
|
||||
%G G G G |
|
||||
%G G D7 D7 |
|
||||
%G G C C |
|
||||
%C D7 G |
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
@ -1,51 +0,0 @@ |
|||||
\begin{SBChorus} |
|
||||
\Ch{Dm}{Quinze} marins sur le bahut du \Ch{C}{mort} |
|
||||
|
|
||||
Hop la ho ! une bouteille de \Ch{Dm}{rhum} |
|
||||
|
|
||||
A boire et l'diable avait r\'egl\'e leur \Ch{C}{sort} |
|
||||
|
|
||||
Hop la \Ch{Dm}{ho} ! une \Ch{C}{bouteille} de \Ch{Dm}{rhum} |
|
||||
\end{SBChorus} |
|
||||
|
|
||||
\bigskip |
|
||||
|
|
||||
\begin{SBVerse} |
|
||||
Long John Silver a pris le commandement |
|
||||
|
|
||||
Des marins, et vogue la gal\`ere |
|
||||
|
|
||||
Il tient ses hommes comme il tient le vent |
|
||||
|
|
||||
Tout l'monde a peur de Long John Silver. |
|
||||
\end{SBVerse} |
|
||||
|
|
||||
\bigskip |
|
||||
|
|
||||
C'est Bill, le second du corsaire, |
|
||||
|
|
||||
Le capitaine Flint en col\`ere |
|
||||
|
|
||||
Qu'est revenu du royaume des morts |
|
||||
|
|
||||
Pour hanter la cache au tr\'esor. |
|
||||
|
|
||||
\bigskip |
|
||||
|
|
||||
Essaye un peu de l'contrecarrer, |
|
||||
|
|
||||
Et tu iras o\`u tant d'autres sont all\'es |
|
||||
|
|
||||
Quelqu's uns aux vergues et quelqu's uns par d'sus bord |
|
||||
|
|
||||
Tout l'monde pour nourrir les poissons d'abord. |
|
||||
|
|
||||
\bigskip |
|
||||
|
|
||||
Nous finirons par danser la gigue |
|
||||
|
|
||||
La corde au cou, au quai des pendus |
|
||||
|
|
||||
Toi, John Forest, et toi, John Merigue |
|
||||
|
|
||||
Si pr\`es du gibet qu'j'en ai l'cou tordu. |
|
@ -1,26 +0,0 @@ |
|||||
\begin{song}{Irish Rover}{G}{~}{irish traditional}{}{} |
|
||||
\input{sea/irish_rover.tex} |
|
||||
\end{song} |
|
||||
|
|
||||
\begin{song}{The Mermaid}{G}{Child Ballad 289}{traditional}{}{} |
|
||||
\input{sea/mermaid.tex} |
|
||||
\end{song} |
|
||||
|
|
||||
\begin{song}{Quinze Marins (\textit{Dead Man's Chest})}{Dm}{~}{R.L. Stevenson and Y.E. Allison}{}{} |
|
||||
\input{sea/quinze_marins.tex} |
|
||||
\end{song} |
|
||||
|
|
||||
\begin{song}{Drunken Sailor}{Dm}{Capstan shanty}{traditional}{}{} |
|
||||
\input{sea/drunken_sailor.tex} |
|
||||
\end{song} |
|
||||
|
|
||||
\begin{song}{Le Forban (version de terre)}{C}{~}{traditionnel breton}{}{} |
|
||||
\input{sea/le_forban1.tex} |
|
||||
\end{song} |
|
||||
|
|
||||
\begin{song}{Le Forban (version de mer)}{C}{~}{traditionnel breton}{}{} |
|
||||
\input{sea/le_forban2.tex} |
|
||||
\end{song} |
|
||||
|
|
||||
\input{sea/sally.tex} |
|
||||
\input{sea/kanak.tex} |
|
@ -0,0 +1,124 @@ |
|||||
|
#!/usr/bin/python |
||||
|
# -*- coding: utf-8 -*- |
||||
|
# Generate indexes files for the Crep's chordbook compilation. This is |
||||
|
# a replacement for the original makeindex program written in C that |
||||
|
# produces an index file (.sbx) from a file generated by the latex |
||||
|
# compilation of the songbook (.sxd). |
||||
|
# |
||||
|
# Usage : songbook-makeindex.py src |
||||
|
# src is the .sxd file generated by latex |
||||
|
# |
||||
|
|
||||
|
import sys |
||||
|
import os.path |
||||
|
import glob |
||||
|
import re |
||||
|
from optparse import OptionParser |
||||
|
|
||||
|
# Pattern set to ignore latex command in title prefix |
||||
|
keywordPattern = re.compile(r"^%(\w+)\s?(\w*)") |
||||
|
firstLetterPattern = re.compile(r"^(?:\{?\\\w+\}?)*[^\w]*(\w)") |
||||
|
|
||||
|
class index: |
||||
|
data = dict() |
||||
|
keywords = dict() |
||||
|
|
||||
|
def filter(self, key): |
||||
|
letter = firstLetterPattern.match(key).group(1) |
||||
|
if re.match('\d',letter): |
||||
|
letter = '0-9' |
||||
|
return (letter.upper(), key) |
||||
|
|
||||
|
def keyword(self, key, word): |
||||
|
if not self.keywords.has_key(key): |
||||
|
self.keywords[key] = [] |
||||
|
self.keywords[key].append(word) |
||||
|
|
||||
|
def compileKeywords(self): |
||||
|
pass |
||||
|
|
||||
|
def add(self, key, number, link): |
||||
|
(first, key) = self.filter(key) |
||||
|
if not self.data.has_key(first): |
||||
|
self.data[first] = dict() |
||||
|
if not self.data[first].has_key(key): |
||||
|
self.data[first][key] = [] |
||||
|
self.data[first][key].append({'num':number, 'link':link}) |
||||
|
|
||||
|
def refToStr(self, ref): |
||||
|
if sys.version_info >= (2,6): |
||||
|
return '\\hyperlink{{{0[link]}}}{{{0[num]}}}'.format(ref) |
||||
|
else: |
||||
|
return '\\hyperlink{%(link)s}{%(num)s}' % ref |
||||
|
|
||||
|
def entryToStr(self, key, entry): |
||||
|
if sys.version_info >= (2,6): |
||||
|
return '\\idxentry{{{0}}}{{{1}}}\n'.format(key, '\\\\'.join(map(self.refToStr, entry))) |
||||
|
else: |
||||
|
return '\\idxentry{%s}{%s}\n' % (key, '\\\\'.join(map(self.refToStr, entry))) |
||||
|
|
||||
|
def idxBlockToStr(self, letter, entries): |
||||
|
str = '\\begin{idxblock}{'+letter+'}'+'\n' |
||||
|
for key in sorted(entries.keys()): |
||||
|
str += self.entryToStr(key, entries[key]) |
||||
|
str += '\\end{idxblock}'+'\n' |
||||
|
return str |
||||
|
|
||||
|
def entriesToStr(self): |
||||
|
str = "" |
||||
|
for letter in sorted(self.data.keys()): |
||||
|
str += self.idxBlockToStr(letter, self.data[letter]) |
||||
|
return str |
||||
|
|
||||
|
def processSXDEntry(tab): |
||||
|
return (tab[0], tab[1], tab[2]) |
||||
|
|
||||
|
def processSXD(filename): |
||||
|
file = open(filename) |
||||
|
data = [] |
||||
|
for line in file: |
||||
|
data.append(line.strip()) |
||||
|
file.close() |
||||
|
|
||||
|
type = data[0] |
||||
|
i = 1 |
||||
|
idx = index() |
||||
|
while data[i].startswith('%'): |
||||
|
keywords = keywordPattern.match(data[i]).groups() |
||||
|
idx.keyword(keywords[0],keywords[1]) |
||||
|
i += 1 |
||||
|
idx.compileKeywords() |
||||
|
for i in range(i,len(data),3): |
||||
|
entry = processSXDEntry(data[i:i+3]) |
||||
|
idx.add(entry[0],entry[1],entry[2]) |
||||
|
return idx |
||||
|
|
||||
|
def usage(exitCode=None): |
||||
|
print "usage: songbook-makeindex.py [options] source" |
||||
|
sys.exit(exitCode) |
||||
|
|
||||
|
def main(): |
||||
|
usage = "usage: %prog [options] FILE" |
||||
|
parser = OptionParser(usage) |
||||
|
parser.add_option("-o", "--output", dest="filename", |
||||
|
help="write result into FILE", metavar="FILE") |
||||
|
(options, args) = parser.parse_args() |
||||
|
|
||||
|
# Args processing |
||||
|
if len(args) != 1: |
||||
|
parser.error("incorrect number of arguments") |
||||
|
if not os.path.exists(args[0]): |
||||
|
parser.error("inexistant input file") |
||||
|
|
||||
|
# Options processing |
||||
|
if options.filename: |
||||
|
output = open(options.filename,"w") |
||||
|
else: |
||||
|
output = sys.stdout |
||||
|
|
||||
|
# Actual processing |
||||
|
idx = processSXD(args[0]) |
||||
|
output.write(idx.entriesToStr()) |
||||
|
|
||||
|
if __name__ == '__main__': |
||||
|
main() |
@ -0,0 +1,191 @@ |
|||||
|
#!/usr/bin/python |
||||
|
# -*- coding: utf-8 -*- |
||||
|
# |
||||
|
|
||||
|
import getopt, sys |
||||
|
import os.path |
||||
|
import glob |
||||
|
import re |
||||
|
import json |
||||
|
|
||||
|
def matchRegexp(reg, iterable): |
||||
|
return [ m.group(1) for m in (reg.match(l) for l in iterable) if m ] |
||||
|
|
||||
|
def songslist(songs): |
||||
|
directories = set(["img/"] + map(lambda x: "songs/" + os.path.dirname(x), songs)) |
||||
|
result = ['\\graphicspath{'] + [ ' {{{0}/}},'.format(d) for d in directories ] + ['}'] + [ '\\input{{songs/{0}}}'.format(s.strip()) for s in songs ] |
||||
|
return '\n'.join(result) |
||||
|
|
||||
|
def parseTemplate(template): |
||||
|
embeddedJsonPattern = re.compile(r"^%%:") |
||||
|
f = open(template) |
||||
|
code = [ line[3:-1] for line in f if embeddedJsonPattern.match(line) ] |
||||
|
f.close() |
||||
|
data = json.loads(''.join(code)) |
||||
|
parameters = dict() |
||||
|
for param in data: |
||||
|
parameters[param["name"]] = param |
||||
|
return parameters |
||||
|
|
||||
|
def toValue(parameter, data): |
||||
|
if "type" not in parameter: |
||||
|
return data |
||||
|
elif parameter["type"] == "stringlist": |
||||
|
if "join" in parameter: |
||||
|
joinText = parameter["join"] |
||||
|
else: |
||||
|
joinText = '' |
||||
|
return joinText.join(data) |
||||
|
elif parameter["type"] == "color": |
||||
|
return data[1:] |
||||
|
elif parameter["type"] == "font": |
||||
|
return data+'pt' |
||||
|
elif parameter["type"] == "enum": |
||||
|
return data |
||||
|
elif parameter["type"] == "file": |
||||
|
return data |
||||
|
elif parameter["type"] == "flag": |
||||
|
if "join" in parameter: |
||||
|
joinText = parameter["join"] |
||||
|
else: |
||||
|
joinText = '' |
||||
|
return joinText.join(data) |
||||
|
|
||||
|
def formatDeclaration(name, parameter): |
||||
|
value = "" |
||||
|
if "default" in parameter: |
||||
|
value = parameter["default"] |
||||
|
return '\\def\\set@{name}#1{{\\def\\get{name}{{#1}}}}\n'.format(name=name) + formatDefinition(name, toValue(parameter, value)) |
||||
|
|
||||
|
def formatDefinition(name, value): |
||||
|
return '\\set@{name}{{{value}}}\n'.format(name=name, value=value) |
||||
|
|
||||
|
def makeTexFile(sb, output): |
||||
|
name = output[:-4] |
||||
|
|
||||
|
# default value |
||||
|
template = "patacrep.tmpl" |
||||
|
songs = [] |
||||
|
|
||||
|
# parse the songbook data |
||||
|
if "template" in sb: |
||||
|
template = sb["template"] |
||||
|
del sb["template"] |
||||
|
if "songs" in sb: |
||||
|
songs = sb["songs"] |
||||
|
del sb["songs"] |
||||
|
|
||||
|
parameters = parseTemplate("templates/"+template) |
||||
|
|
||||
|
# output relevant fields |
||||
|
out = open(output, 'w') |
||||
|
out.write('%% This file has been automatically generated, do not edit!\n') |
||||
|
out.write('\\makeatletter\n') |
||||
|
# output automatic parameters |
||||
|
out.write(formatDeclaration("name", {"default":name})) |
||||
|
out.write(formatDeclaration("songslist", {"type":"stringlist"})) |
||||
|
# output template parameter command |
||||
|
for name, parameter in parameters.iteritems(): |
||||
|
out.write(formatDeclaration(name, parameter)) |
||||
|
# output template parameter values |
||||
|
for name, value in sb.iteritems(): |
||||
|
if name in parameters: |
||||
|
out.write(formatDefinition(name, toValue(parameters[name],value))) |
||||
|
# output songslist |
||||
|
if songs == "all": |
||||
|
songs = map(lambda x: x[6:], glob.glob('songs/*/*.sg')) |
||||
|
songs.sort() |
||||
|
if len(songs) > 0: |
||||
|
out.write(formatDefinition('songslist', songslist(songs))) |
||||
|
out.write('\\makeatother\n') |
||||
|
|
||||
|
# output template |
||||
|
commentPattern = re.compile(r"^\s*%") |
||||
|
f = open("templates/"+template) |
||||
|
content = [ line for line in f if not commentPattern.match(line) ] |
||||
|
f.close() |
||||
|
out.write(''.join(content)) |
||||
|
out.close() |
||||
|
|
||||
|
def makeDepend(sb, output): |
||||
|
name = output[:-2] |
||||
|
|
||||
|
dependsPattern = re.compile(r"^[^%]*(?:include|input)\{(.*?)\}") |
||||
|
indexPattern = re.compile(r"^[^%]*\\(?:newauthor|new)index\{.*\}\{(.*?)\}") |
||||
|
lilypondPattern = re.compile(r"^[^%]*\\(?:lilypond)\{(.*?)\}") |
||||
|
|
||||
|
# check for deps (in sb data) |
||||
|
deps = matchRegexp(dependsPattern, [ v for v in sb.itervalues() if type(v) is not list ]) |
||||
|
if sb["songs"] == "all": |
||||
|
deps += glob.glob('songs/*/*.sg') |
||||
|
else: |
||||
|
deps += map(lambda x: "songs/" + x, sb["songs"]) |
||||
|
|
||||
|
# check for lilypond deps (in songs data) if necessary |
||||
|
lilypond = [] |
||||
|
if "bookoptions" in sb and "lilypond" in sb["bookoptions"]: |
||||
|
for filename in deps: |
||||
|
tmpl = open(filename) |
||||
|
lilypond += matchRegexp(lilypondPattern, tmpl) |
||||
|
tmpl.close() |
||||
|
|
||||
|
# check for index (in template file) |
||||
|
if "template" in sb: |
||||
|
filename = sb["template"] |
||||
|
else: |
||||
|
filename = "patacrep.tmpl" |
||||
|
tmpl = open("templates/"+filename) |
||||
|
idx = map(lambda x: x.replace("\getname", name), matchRegexp(indexPattern, tmpl)) |
||||
|
tmpl.close() |
||||
|
|
||||
|
# write .d file |
||||
|
out = open(output, 'w') |
||||
|
out.write('{0} {1} : {2}\n'.format(output, name+".tex", ' '.join(deps))) |
||||
|
out.write('{0} : {1}\n'.format(name+".pdf", ' '.join(map(lambda x: x+".sbx",idx)+map(lambda x: "lilypond/"+x+".pdf", lilypond)))) |
||||
|
out.write('\t$(LATEX) {0}\n'.format(name+".tex")) |
||||
|
out.write('{0} : {1}\n'.format(' '.join(map(lambda x: x+".sxd",idx)), name+".aux")) |
||||
|
out.close() |
||||
|
|
||||
|
def usage(): |
||||
|
print "No usage information yet." |
||||
|
|
||||
|
def main(): |
||||
|
try: |
||||
|
opts, args = getopt.getopt(sys.argv[1:], |
||||
|
"hs:o:d", |
||||
|
["help","songbook=","output=","depend"]) |
||||
|
except getopt.GetoptError, err: |
||||
|
# print help and exit |
||||
|
print str(err) |
||||
|
usage() |
||||
|
sys.exit(2) |
||||
|
|
||||
|
songbook = None |
||||
|
depend = False |
||||
|
output = None |
||||
|
|
||||
|
for o, a in opts: |
||||
|
if o in ("-h", "--help"): |
||||
|
usage() |
||||
|
sys.exit() |
||||
|
elif o in ("-s", "--songbook"): |
||||
|
songbook = a |
||||
|
elif o in ("-d", "--depend"): |
||||
|
depend = True |
||||
|
elif o in ("-o", "--output"): |
||||
|
output = a |
||||
|
else: |
||||
|
assert False, "unhandled option" |
||||
|
|
||||
|
if songbook and output: |
||||
|
f = open(songbook) |
||||
|
sb = json.load(f) |
||||
|
f.close() |
||||
|
|
||||
|
if depend: |
||||
|
makeDepend(sb, output) |
||||
|
else: |
||||
|
makeTexFile(sb, output) |
||||
|
|
||||
|
if __name__ == '__main__': |
||||
|
main() |
@ -0,0 +1,29 @@ |
|||||
|
{ |
||||
|
"template" : "ancient.tmpl", |
||||
|
"author" : "Benjamin Coudrin", |
||||
|
"bookoptions" : [ |
||||
|
"lilypond" |
||||
|
], |
||||
|
"booktype" : "chorded", |
||||
|
"footer" : "\\begin{flushleft}Shiver Me Timbers\\end{flushleft}", |
||||
|
"indexbgcolor" : "#D1E4AE", |
||||
|
"license" : "\\input{license.tex}", |
||||
|
"mail" : "benjamin.coudrin@gmail.com", |
||||
|
"mainfontsize" : "10", |
||||
|
"notebgcolor" : "#FFFDB3", |
||||
|
"picture" : "shiver", |
||||
|
"picturecopyright" : "WTFPL - Do What The Fuck You Want Public License", |
||||
|
"songnumberbgcolor" : "#BA8D5A", |
||||
|
"title" : "Shiver Me Timbers", |
||||
|
"version" : "1.0.0", |
||||
|
"web" : "http://www.myspace.com/shivermetimbersofficial", |
||||
|
"songs" : [ |
||||
|
"Traditional/Irish_Rover.sg", |
||||
|
"Traditional/Johnny_I_Harldy_Knew_Ye_.sg", |
||||
|
"Traditional/Rocky_Road_To_Dublin.sg", |
||||
|
"Traditional/The_Furze_in_Bloom_jig_.sg", |
||||
|
"Traditional/The_Jug_of_Punch.sg", |
||||
|
"Traditional/Whiskey_In_The_Jar.sg", |
||||
|
"Traditional/Whiskey_You_re_the_Devil.sg" |
||||
|
] |
||||
|
} |
@ -1,16 +0,0 @@ |
|||||
\item\ 1. Irish Rover\hbox {, 3} |
|
||||
\item\ 2. The Mermaid\hbox {, 4} |
|
||||
\item\ 3. Quinze Marins (\textit {Dead Man's Chest})\hbox {, 5} |
|
||||
\item\ 4. Drunken Sailor\hbox {, 6} |
|
||||
\item\ 5. Le Forban (version de terre)\hbox {, 7} |
|
||||
\item\ 6. Le Forban (version de mer)\hbox {, 8} |
|
||||
\item\ 7. Johnny I Hardly Knew Ye\hbox {, 9} |
|
||||
\item\ 8. Whiskey In The Jar\hbox {, 11} |
|
||||
\item\ 9. Rocky Road To Dublin\hbox {, 12} |
|
||||
\item\ 10. Dirty Old Town\hbox {, 15} |
|
||||
\item\ 11. Dans les prisons de Nantes\hbox {, 16} |
|
||||
\item\ 12. Eileen Og\hbox {, 17} |
|
||||
\item\ 13. The Leprechaun\hbox {, 19} |
|
||||
\item\ 14. Kilkelly, Ireland\hbox {, 20} |
|
||||
\item\ 15. The Jug of Punch\hbox {, 21} |
|
||||
\item\ 16. Whiskey You're The Devil\hbox {, 22} |
|
@ -1,121 +1,77 @@ |
|||||
\begin{SBVerse*} |
\selectlanguage{english} |
||||
On the \Ch{G}{Fourth} of July, \Ch{C}{1806} |
\songcolumns{2} |
||||
|
\beginsong{Irish Rover}[by=Traditional] |
||||
We set \Ch{G}{sail} from the sweet Cobh of \Ch{D}{Cork} |
|
||||
|
\beginverse |
||||
We were \Ch{G}{sailing} away with a \Ch{C}{cargo} of bricks |
On the \[Sol]Fourth of July, \[Do]1806 |
||||
|
We set \[Sol]sail from the sweet Cobh of \[Ré]Cork |
||||
For the \Ch{G}{Grand} City \Ch{D}{Hall} in New \Ch{G}{York} |
We were \[Sol]sailing away with a \[Do]cargo of bricks |
||||
|
For the \[Sol]Grand City \[Ré]Hall in New \[Sol]York |
||||
'Twas a \Ch{G}{wonderful} craft, She was \Ch{D}{rigged} fore and aft |
|
||||
|
'Twas a \[Sol]wonderful craft, She was \[Ré]rigged 'fore and aft' |
||||
And \Ch{G}{oh}, how the wild wind \Ch{D}{drove} her |
And \[Sol]oh, how the wild wind \[Ré]drove her |
||||
|
She stood \[Sol]several blasts, She had \[Do]twenty seven masts |
||||
She stood \Ch{G}{several} blasts, She had \Ch{C}{twenty} seven masts |
And they \[Sol]called her The \[Ré]Irish \[Sol]Rover |
||||
|
\endverse |
||||
And they \Ch{G}{called} her The \Ch{D}{Irish} \Ch{G}{Rover} |
|
||||
\end{SBVerse*} |
\beginverse |
||||
|
We had one million bags of the best Sligo rags |
||||
\bigskip |
We had two million barrels of stones |
||||
|
We had three million sides of old blind horses hides' |
||||
\bigskip |
We had four million barrels of bones |
||||
|
|
||||
\bigskip |
We had five million hogs, six million dogs |
||||
|
Seven million barrels of porter |
||||
We had one million bags of the best Sligo rags |
We had eight million barrels of old nanny goate tails |
||||
|
In the hold of the Irish Rover |
||||
We had two million barrels of stones |
\endverse |
||||
|
|
||||
We had three million sides of old blind horses hides' |
\beginverse |
||||
|
There was awl Mickey Coote who played hard on his flute |
||||
We had four million barrels of bones |
And the ladies lined up for a set |
||||
|
He would tootle with skill for each sparkling quadrille |
||||
We had five million hogs, six million dogs |
Though the dancers were fluther'd and bet |
||||
|
|
||||
Seven million barrels of porter |
With his smart witty talk, he was cock of the walk |
||||
|
As he rolled the dames under and over |
||||
We had eight million barrels of old nanny goate tails |
They all knew at a glance when he took up his stance |
||||
|
That he sailed in The Irish Rover |
||||
In the hold of the Irish Rover |
\endverse |
||||
|
|
||||
\bigskip |
\beginverse |
||||
|
There was Barney McGee from the banks of the Lee |
||||
\bigskip |
There was Hogan from County Tyrone |
||||
|
There was Johnny McGurk who was scared stiff of work |
||||
There was awl Mickey Coote who played hard on his flute |
And a man from Westmeath called Malone |
||||
|
|
||||
And the ladies lined up for a set |
There was Slugger O'Toole, who was drunk as a rule |
||||
|
And Fighting Bill Tracy from Dover |
||||
He would tootle with skill for each sparkling quadrille |
And your man, Mick McCann, from the banks of the Bann |
||||
|
Was the skipper of the Irish Rover |
||||
Though the dancers were fluther'd and bet |
\endverse |
||||
|
|
||||
With his smart witty talk, he was cock of the walk |
\beginverse |
||||
|
For a sailor its' always a bother in life |
||||
As he rolled the dames under and over |
It's so lonesome by night and by day |
||||
|
That he longs for the shore and a charming young whore |
||||
They all knew at a glance when he took up his stance |
Who will melt all his troubles away |
||||
|
|
||||
That he sailed in The Irish Rover |
Oh, the noise and the rout swillin' poiteen and stout |
||||
|
For him soon the torment's over |
||||
\bigskip |
Of the love of a maid he is never afraid |
||||
|
An old salt from the Irish Rover |
||||
\bigskip |
\endverse |
||||
|
|
||||
\bigskip |
\beginverse |
||||
|
We had sailed seven years when the measles broke out |
||||
There was Barney McGee from the banks of the Lee |
And the ship lost its way in the fog |
||||
|
And that whale of a crew was reduced down to two |
||||
There was Hogan from County Tyrone |
Just myself and the Captain's old dog |
||||
|
|
||||
There was Johnny McGurk who was scared stiff of work |
Then the ship struck a rock. Oh Lord! what a shock |
||||
|
The bulkhead was turned right over |
||||
And a man from Westmeath called Malone |
Turned nine times around and the poor old dog was drowned |
||||
|
I'm the last of The Irish Rover |
||||
There was Slugger O'Toole, who was drunk as a rule |
\endverse |
||||
|
|
||||
And Fighting Bill Tracy from Dover |
\endsong |
||||
|
|
||||
And your man, Mick McCann, from the banks of the Bann |
|
||||
|
|
||||
Was the skipper of the Irish Rover |
|
||||
|
|
||||
\bigskip |
|
||||
|
|
||||
\bigskip |
|
||||
|
|
||||
For a sailor its' always a bother in life |
|
||||
|
|
||||
It's so lonesome by night and by day |
|
||||
|
|
||||
That he longs for the shore and a charming young whore |
|
||||
|
|
||||
Who will melt all his troubles away |
|
||||
|
|
||||
Oh, the noise and the rout swillin' poiteen and stout |
|
||||
|
|
||||
For him soon the torment's over |
|
||||
|
|
||||
Of the love of a maid he is never afraid |
|
||||
|
|
||||
An old salt from the Irish Rover |
|
||||
|
|
||||
\bigskip |
|
||||
|
|
||||
\bigskip |
|
||||
|
|
||||
We had sailed seven years when the measles broke out |
|
||||
|
|
||||
And the ship lost its way in the fog |
|
||||
|
|
||||
And that whale of a crew was reduced down to two |
|
||||
|
|
||||
Just myself and the Captain's old dog |
|
||||
|
|
||||
Then the ship struck a rock. Oh Lord! what a shock |
|
||||
|
|
||||
The bulkhead was turned right over |
|
||||
|
|
||||
Turned nine times around and the poor old dog was drowned |
|
||||
|
|
||||
I'm the last of The Irish Rover |
|
@ -1,76 +1,54 @@ |
|||||
\begin{SBVerse*} |
\selectlanguage{english} |
||||
While \Ch{Em}{goin'} the road to sweet Athy, \Ch{G}{Hurroo!} Hurroo ! |
\songcolumns{2} |
||||
|
\beginsong{Johnny, I Harldy Knew Ye !}[by=Traditional] |
||||
While \Ch{Em}{goin'} the road to sweet Athy, \Ch{G}{Hurroo} ! \Ch{B7}{Hurroo} ! |
|
||||
|
\beginverse |
||||
While \Ch{Em}{goin'} the road to \Ch{Am}{sweet} Athy, |
While \[Mim]goin' the road to sweet Athy, \[Sol]Hurroo! Hurroo ! |
||||
|
While \[Mim]goin' the road to sweet Athy, \[Sol]Hurroo! \[Si7]Hurroo ! |
||||
A \Ch{G}{stick} in the hand and a \Ch{B7}{drop} in the eye |
While \[Mim]goin' the road to \[Lam]sweet Athy, |
||||
|
A \[Sol]stick in the hand and a \[Si7]drop in the eye |
||||
A \Ch{Em}{dole}ful \Ch{Am}{damsel} \Ch{G}{I} heard \Ch{B7}{cry}, |
A \[Mim]doleful \[Lam]damsel \[Sol]I heard \[Si7]cry, |
||||
|
\[Mim]Johnny I \[Ré]hardly \[Mim]knew ye ! |
||||
\Ch{Em}{Johnny} I \Ch{D}{hardly} \Ch{Em}{knew} ye ! |
\endverse |
||||
\end{SBVerse*} |
|
||||
|
\beginchorus |
||||
\bigskip |
With your drums and guns and drums and guns, Hurroo ! Hurroo ! (bis) |
||||
|
With your drums and guns and drums and guns, |
||||
\begin{SBChorus} |
The enemy nearly slew ye |
||||
With your drums and guns and drums and guns, Hurroo ! Hurroo ! (bis) |
Oh me darling dear, Ye look so queer |
||||
|
Johnny I hardly knew ye |
||||
With your drums and guns and drums and guns, |
\endchorus |
||||
|
|
||||
The enemy nearly slew ye |
\beginverse |
||||
|
Where are the eyes that look so mild, Hurroo ! Hurroo ! (bis) |
||||
Oh me darling dear, Ye look so queer |
Where are the eyes that look so mild |
||||
|
When my poor heart you so beguiled |
||||
Johnny I hardly knew ye |
Why did ye skedaddle from me and the child |
||||
\end{SBChorus} |
Oh Johnny, I hardly knew ye. |
||||
|
\endverse |
||||
\bigskip |
|
||||
|
\beginverse |
||||
Where are the eyes that look so mild, Hurroo ! Hurroo ! (bis) |
Where are the legs with which ye run, Hurroo ! Hurroo ! (bis) |
||||
|
Where are the legs with which ye run |
||||
Where are the eyes that look so mild |
When ye went for to carry a gun |
||||
|
Indeed your dancing days are done |
||||
When my poor heart you so beguiled |
Oh Johnny, I hardly knew ye. |
||||
|
\endverse |
||||
Why did ye skedaddle from me and the child |
|
||||
|
\beginverse |
||||
Oh Johnny, I hardly knew ye. |
Ye haven't an arm, Ye haven't a leg, Hurroo ! Hurroo ! (bis) |
||||
|
Ye haven't an arm, ye haven't a leg |
||||
\bigskip |
Ye're an armless, boneless, chickenless egg |
||||
|
Ye'll have to be put in a bowl to beg |
||||
Where are the legs with which ye run, Hurroo ! Hurroo ! (bis) |
Oh Johnny I hardly knew ye. |
||||
|
\endverse |
||||
Where are the legs with which ye run |
|
||||
|
\beginverse |
||||
When ye went for to carry a gun |
I'm happy for to see ye home, Hurroo ! Hurroo ! (bis) |
||||
|
I'm happy for to see ye home |
||||
Indeed your dancing days are done |
All from the island of Sulloon |
||||
|
So low in flesh, so high in bone |
||||
Oh Johnny, I hardly knew ye. |
Oh Johnny I hardly knew ye. |
||||
|
\endverse |
||||
\bigskip |
|
||||
|
\endsong |
||||
Ye haven't an arm, Ye haven't a leg, Hurroo ! Hurroo ! (bis) |
|
||||
|
|
||||
Ye haven't an arm, ye haven't a leg |
|
||||
|
|
||||
Ye're an armless, boneless, chickenless egg |
|
||||
|
|
||||
Ye'll have to be put in a bowl to beg |
|
||||
|
|
||||
Oh Johnny I hardly knew ye. |
|
||||
|
|
||||
\bigskip |
|
||||
|
|
||||
I'm happy for to see ye home, Hurroo ! Hurroo ! (bis) |
|
||||
|
|
||||
I'm happy for to see ye home |
|
||||
|
|
||||
All from the island of Sulloon |
|
||||
|
|
||||
So low in flesh, so high in bone |
|
||||
|
|
||||
Oh Johnny I hardly knew ye. |
|
||||
|
|
@ -1,117 +1,68 @@ |
|||||
In the merry month of May, From my home I started, |
\selectlanguage{english} |
||||
|
\songcolumns{2} |
||||
Left the girls of Tuam, Nearly broken hearted, |
\beginsong{Rocky Road To Dublin}[by=Traditional] |
||||
|
|
||||
Saluted father dear, Kissed my darlin' mother, |
\beginverse |
||||
|
In the \[Rém]merry \[Do]month of \[Rém]May, From my home I started, |
||||
Drank a pint of beer, My grief and tears to smother, |
Left the \[Do]girls of \[Rém]Tuam, Nearly \[Do]broken hearted, |
||||
|
\[Rém]Saluted \[Do]father \[Rém]dear, Kissed my darlin' mother, |
||||
Then off to reap the corn, And leave where I was born, |
Drank a \[Do]pint of \[Rém]beer, My grief and \[Do]tears to smother, |
||||
|
Then \[Rém]off to reap the \[Do]corn, And \[Rém]leave where I was \[Do]born, |
||||
I cut a stout blackthorn, To banish ghost and goblin, |
I \[Rém]cut a stout \[Do]blackthorn, To banish ghost and goblin, |
||||
|
In a \[Rém]brand new pair of \[Do]brogues, I \[Rém]rattled o'er the \[Do]bogs, |
||||
In a brand new pair of brogues, I rattled o'er the bogs, |
And \[Rém]frightened all the \[Do]dogs, On the rocky road to Dublin. |
||||
|
\endverse |
||||
And frightened all the dogs,On the rocky road to Dublin. |
|
||||
|
\beginchorus |
||||
\bigskip |
\[Lam]One, two, \[Do]three, four \[Rém]five, |
||||
|
Hunt the hare and turn her |
||||
\textbf{One, two, three, four five,} |
Down the rocky road |
||||
|
And all the \[Do]ways to Dublin, |
||||
\textbf{Hunt the hare and turn her} |
\[Am]Whack-fol-\[Do]lol-de-\[Rém]ra. |
||||
|
\endchorus |
||||
\textbf{Down the rocky road} |
|
||||
|
\beginverse |
||||
\textbf{And all the ways to Dublin,} |
In Mullingar that night, I rested limbs so weary, |
||||
|
Started by daylight, Next mornin' light and airy, |
||||
\textbf{Whack-fol-lol-de-ra.} |
Took a drop of the pure, To keep my heart from sinkin', |
||||
|
That's an Irishman's cure, Whene'er he's on for drinking. |
||||
\bigskip |
To see the lasses smile, Laughing all the while, |
||||
|
At my curious style, 'Twould set your heart a-bubblin'. |
||||
In Mullingar that night, I rested limbs so weary, |
They ax'd if I was hired, The wages I required, |
||||
|
Till I was almost tired, Of the rocky road to Dublin. |
||||
Started by daylight, Next mornin' light and airy, |
\endverse |
||||
|
|
||||
Took a drop of the pure, To keep my heart from sinkin', |
\beginverse |
||||
|
In Dublin next arrived, I thought it such a pity, |
||||
That's an Irishman's cure, Whene'er he's on for drinking. |
To be so soon deprived, A view of that fine city. |
||||
|
Then I took a stroll, All among the quality, |
||||
To see the lasses smile, Laughing all the while, |
My bundle it was stole, In a neat locality; |
||||
|
Something crossed my mind, Then I looked behind; |
||||
At my curious style, 'Twould set your heart a-bubblin'. |
No bundle could I find, Upon my stick a wobblin'. |
||||
|
Enquirin' for the rogue, They said my Connacht brogue, |
||||
They ax'd if I was hired, The wages I required, |
Wasn't much in vogue, On the rocky road to Dublin. |
||||
|
\endverse |
||||
Till I was almost tired, Of the rocky road to Dublin. |
|
||||
|
\beginverse |
||||
\bigskip |
From there I got away, My spirits never failin' |
||||
|
Landed on the quay As the ship was sailin'; |
||||
In Dublin next arrived, I thought it such a pity, |
Captain at me roared, Said that no room had he, |
||||
|
When I jumped aboard, A cabin found for Paddy, |
||||
To be so soon deprived, A view of that fine city. |
Down among the pigs I played some funny rigs, |
||||
|
Danced some hearty jigs, The water round me bubblin', |
||||
Then I took a stroll, All among the quality, |
When off Holyhead, I wished myself was dead, |
||||
|
Or better far instead, On the rocky road to Dublin. |
||||
My bundle it was stole, In a neat locality; |
\endverse |
||||
|
|
||||
Something crossed my mind, Then I looked behind; |
\beginverse |
||||
|
The boys of Liverpool, When we safely landed, |
||||
No bundle could I find, Upon my stick a wobblin'. |
Called myself a fool; I could no longer stand it; |
||||
|
Blood began to boil, Temper I was losin', |
||||
Enquirin' for the rogue, They said my Connacht brogue, |
Poor ould Erin's isle They began abusin', |
||||
|
\og Hurrah my soul \fg , sez I, My shillelagh I let fly; |
||||
Wasn't much in vogue, On the rocky road to Dublin. |
Some Galway boys were by, Saw I was a hobble in, |
||||
|
Then with a loud hurray, They joined in the affray. |
||||
\bigskip |
We quickly cleared the way, For the rocky road to Dublin. |
||||
|
\endverse |
||||
From there I got away, My spirits never failin' |
|
||||
|
\endsong |
||||
Landed on the quay As the ship was sailin'; |
|
||||
|
|
||||
Captain at me roared, Said that no room had he, |
|
||||
|
|
||||
When I jumped aboard, A cabin found for Paddy, |
|
||||
|
|
||||
Down among the pigs I played some funny rigs, |
|
||||
|
|
||||
Danced some hearty jigs, The water round me bubblin', |
|
||||
|
|
||||
When off Holyhead, I wished myself was dead, |
|
||||
|
|
||||
Or better far instead, On the rocky road to Dublin. |
|
||||
|
|
||||
\bigskip |
|
||||
|
|
||||
The boys of Liverpool, When we safely landed, |
|
||||
|
|
||||
Called myself a fool; I could no longer stand it; |
|
||||
|
|
||||
Blood began to boil, Temper I was losin', |
|
||||
|
|
||||
Poor ould Erin's isle They began abusin', |
|
||||
|
|
||||
\og Hurrah my soul \fg , sez I, My shillelagh I let fly; |
|
||||
|
|
||||
Some Galway boys were by, Saw I was a hobble in, |
|
||||
|
|
||||
Then with a loud hurray, They joined in the affray. |
|
||||
|
|
||||
We quickly cleared the way, For the rocky road to Dublin. |
|
||||
|
|
||||
%KEY Dm \\ |
|
||||
|
|
||||
%verse:\\ |
|
||||
%Dm C \\ |
|
||||
%Dm C\\ |
|
||||
%Dm C\\ |
|
||||
%Dm C\\ |
|
||||
%Dm F Dm F\\ |
|
||||
%Dm F Dm \\ |
|
||||
%Dm F Dm F\\ |
|
||||
%Dm C \\ |
|
||||
|
|
||||
%chorus: C Dm\\ |
|
||||
%Dm \\ |
|
||||
%Dm\\ |
|
||||
%C\\ |
|
||||
%Dm \\ |
|
@ -0,0 +1,7 @@ |
|||||
|
\selectlanguage{english} |
||||
|
\songcolumns{2} |
||||
|
\beginsong{The Furze in Bloom (jig)}[by=Traditional] |
||||
|
|
||||
|
\lilypond{The_furze_in_bloom} |
||||
|
|
||||
|
\endsong |
@ -1,87 +1,65 @@ |
|||||
One pleasent evening in the month of June, |
\selectlanguage{english} |
||||
|
\songcolumns{2} |
||||
As I was sleeping in my room, |
\beginsong{The Jug of Punch}[by=Traditional] |
||||
|
|
||||
A small bird sat on an ivy bunch, |
\beginverse |
||||
|
One \[Ré]pleasent evening in the month of June, |
||||
And the song he sang was The Jug Of Punch. |
As \[La]I was sleeping \[Ré]in my room, |
||||
|
A small bird sat on an \[Sol]ivy \[La]bunch, |
||||
\textbf{Too-ra loo-ra loo, too-ra loo-ra lay,} |
And the \[Ré]song he \[Sol]sang was The \[La7]Jug Of \[Ré]Punch. |
||||
|
|
||||
\textbf{Too-ra loo-ra loo, too-ra loo-ra lay,} |
\textbf{Too-ra \[Ré]loo-ra loo, too-ra \[Mim]loo-ra lay,} |
||||
|
\textbf{Too-ra \[La]loo-ra loo, too-ra \[Ré]loo-ra lay,} |
||||
\textbf{A small bird sang on an ivy bunch,} |
\textbf{A small bird sat on an \[Sol]ivy \[La]bunch,} |
||||
|
\textbf{And the \[Ré]song he \[Sol]sang was the \[La7]jug of \[Ré]punch.} |
||||
\textbf{And the song he sang was the jug of punch.} |
\endverse |
||||
|
|
||||
\bigskip |
\beginverse |
||||
|
What more diveration can a man desire, |
||||
What more diveration can a man desire, |
Than to sit him by an alehouse fire, |
||||
|
Upon his knee a pritty wench, |
||||
Than to sit him by an alehouse fire, |
And on the table a jug of punch. |
||||
|
|
||||
Upon his knee a pritty wench, |
\textbf{Too-ra loo-ra loo, too-ra loo-ra lay,} |
||||
|
\textbf{Too-ra loo-ra loo, too-ra loo-ra lay,} |
||||
And on the table a jug of punch. |
\textbf{Upon his knee a pritty wench,} |
||||
|
\textbf{And on the table a jug of punch.} |
||||
\textbf{Too-ra loo-ra loo, too-ra loo-ra lay,} |
\endverse |
||||
|
|
||||
\textbf{Too-ra loo-ra loo, too-ra loo-ra lay,} |
\beginverse |
||||
|
Let the doctors come with all their art |
||||
\textbf{Upon his knee a pritty wench,} |
They'll make no impression upon me heart |
||||
|
Even the cripple forgets his hunch |
||||
\textbf{And on the table a jug of punch.} |
When he's snug outside of a jug of punch |
||||
|
|
||||
\bigskip |
\textbf{Too-ra loo-ra loo, too-ra loo-ra lay,} |
||||
|
\textbf{Too-ra loo-ra loo, too-ra loo-ra lay,} |
||||
Let the doctors come with all their art |
\textbf{Even the cripple forgets his hunch} |
||||
|
\textbf{When he's snug outside of a jug of punch.} |
||||
They'll make no impression upon me heart |
\endverse |
||||
|
|
||||
Even the cripple forgets his hunch |
\beginverse |
||||
|
If I get drunk, well, me money's me own, |
||||
When he's snug outside of a jug of punch |
And them don't like me, they can leave me alone; |
||||
|
I'll tune me fiddle and I'll rosin me bow |
||||
\textbf{Too-ra loo-ra loo, too-ra loo-ra lay,} |
And I'll be welcome wherever I go. |
||||
|
|
||||
\textbf{Too-ra loo-ra loo, too-ra loo-ra lay,} |
\textbf{Too-ra loo-ra loo, too-ra loo-ra lay,} |
||||
|
\textbf{Too-ra loo-ra loo, too-ra loo-ra lay,} |
||||
\textbf{Even the cripple forgets his hunch} |
\textbf{I'll tune me fiddle and I'll rosin me bow} |
||||
|
\textbf{And I'll be welcome wherever I go.} |
||||
\textbf{When he's snug outside of a jug of punch.} |
\endverse |
||||
|
|
||||
\bigskip |
\beginverse |
||||
|
And when I'm dead and I'm in me grave |
||||
If I get drunk, well, me money's me own, |
No costly tombstone will I crave. |
||||
|
Lay me down by me native peat, |
||||
And them don't like me, they can leave me alone; |
With a jug of punch at me head and feet. |
||||
|
|
||||
I'll tune me fiddle and I'll rosin me bow |
\textbf{Too-ra loo-ra loo, too-ra loo-ra lay,} |
||||
|
\textbf{Too-ra loo-ra loo, too-ra loo-ra lay,} |
||||
And I'll be welcome wherever I go. |
\textbf{Lay me down by me native peat,} |
||||
|
\textbf{With a jug of punch at me head and feet.} |
||||
\textbf{Too-ra loo-ra loo, too-ra loo-ra lay,} |
\endverse |
||||
|
|
||||
\textbf{Too-ra loo-ra loo, too-ra loo-ra lay,} |
\endsong |
||||
|
|
||||
\textbf{I'll tune me fiddle and I'll rosin me bow} |
|
||||
|
|
||||
\textbf{And I'll be welcome wherever I go.} |
|
||||
|
|
||||
\bigskip |
|
||||
|
|
||||
And when I'm dead and I'm in me grave |
|
||||
|
|
||||
No costly tombstone will I crave. |
|
||||
|
|
||||
Lay me down by me native peat, |
|
||||
|
|
||||
With a jug of punch at me head and feet. |
|
||||
|
|
||||
\textbf{Too-ra loo-ra loo, too-ra loo-ra lay,} |
|
||||
|
|
||||
\textbf{Too-ra loo-ra loo, too-ra loo-ra lay,} |
|
||||
|
|
||||
\textbf{Lay me down by me native peat,} |
|
||||
|
|
||||
\textbf{With a jug of punch at me head and feet.} |
|
@ -1,55 +1,47 @@ |
|||||
As I was a goin' over the far famed Kerry mountains |
\selectlanguage{english} |
||||
|
\songcolumns{2} |
||||
I met with captain Farrell and his money he was counting |
\beginsong{Whiskey In The Jar}[by=Traditional] |
||||
|
|
||||
I first produced me pistol and then produced me rapier |
\beginverse |
||||
|
As \[Sol]I was a goin' over the \[Mim]far famed Kerry mountains |
||||
Saying "Stand and deliver" for I am a bold deceiver |
I \[Do]met with captain Farrell and his \[Sol]money he was counting |
||||
|
I first produced me pistol and \[Mim]then produced me rapier |
||||
\bigskip |
Saying \[Do]"Stand and deliver" for I \[Sol]am a bold deceiver |
||||
|
\endverse |
||||
\textbf{Musha ring dumma do damma da} |
|
||||
|
\beginchorus |
||||
\textbf{whack fol' the daddy 'ol (bis)} |
Musha \[Ré]ring dumma do damma da |
||||
|
\[Sol] whack fol' the daddy 'ol |
||||
\textbf{there's whiskey in the jar} |
\[Do] whack fol' the daddy 'ol |
||||
|
there's \[Ré]whiskey \[Sol]in the \[Ré]jar |
||||
\bigskip |
\endchorus |
||||
|
|
||||
I counted out his money and it made a pretty penny |
\beginverse |
||||
|
I counted out his money and it made a pretty penny |
||||
I put it in me pocket and I took it home to Jenny |
I put it in me pocket and I took it home to Jenny |
||||
|
She said and she swore that she never would deceive me |
||||
She said and she swore that she never would deceive me |
But the devil take the women for they never can be easy |
||||
|
\endverse |
||||
But the devil take the women for they never can be easy |
|
||||
|
\beginverse |
||||
\bigskip |
I went up in my chamber, all for to take a slumber |
||||
|
I dreamt of gold and jewels and for sure 't was no wonder |
||||
I went up in my chamber, all for to take a slumber |
But Jenny drew my charges and she filled them up with water |
||||
|
And sent for captain Farrell to be ready for the slaughter |
||||
I dreamt of gold and jewels and for sure 't was no wonder |
\endverse |
||||
|
|
||||
But Jenny drew my charges and she filled them up with water |
\beginverse |
||||
|
't was early in the morning, as I rose to travel |
||||
And sent for captain Farrell to be ready for the slaughter |
The guards were all around me likewise captain Farrell |
||||
|
I first produced me pistol for she stole away me rapier |
||||
\bigskip |
I couldn't shoot the water, so a prisoner I was taken |
||||
|
\endverse |
||||
't was early in the morning, as I rose to travel |
|
||||
|
\beginverse |
||||
The guards were all around me likewise captain Farrell |
If anyone can aid me it's my brother in the army |
||||
|
If I knew his station down in Cork or in Killarney |
||||
I first produced me pistol for she stole away me rapier |
And if he'll come and join me, we'll go rovin' near Killkenny |
||||
|
And sure he'll treat me better than this fuckin' cunt of Jenny |
||||
I couldn't shoot the water, so a prisoner I was taken |
\endverse |
||||
|
|
||||
\bigskip |
\endsong |
||||
|
|
||||
If anyone can aid me it's my brother in the army |
|
||||
|
|
||||
If I knew his station down in Cork or in Killarney |
|
||||
|
|
||||
And if he'll come and join me, we'll go rovin' near Killkenny |
|
||||
|
|
||||
And sure he'll treat me better than this fuckin' cunt of Jenny |
|
@ -0,0 +1,45 @@ |
|||||
|
\selectlanguage{english} |
||||
|
\songcolumns{2} |
||||
|
\beginsong{Whiskey, You're the Devil}[by=Traditional] |
||||
|
|
||||
|
\beginchorus |
||||
|
Oh, \[Sol]whiskey you're the devil, You're \[Do]leading me \[Sol]astray |
||||
|
O'er hills and mountains and to \[Ré]Americae |
||||
|
You're \[Sol]sweeter, stronger, decenter, You're \[Do]spunkier than \[Sol]tea |
||||
|
Oh, \[Sol]whiskey you're me darling drunk or \[Ré]so\[Sol]ber |
||||
|
\endchorus |
||||
|
|
||||
|
\beginverse |
||||
|
Now \[Sol]brave boys, we're on the march |
||||
|
\[Ré]Off to Portu\[Do]gal and Spain |
||||
|
\[Sol]Drums a'beating, banners a'waving |
||||
|
\[Do]Devil a'home will \[Ré]come tonight |
||||
|
Lo' fare thee well With me thitery doodelum the \[Ré]da |
||||
|
Me \[Lam]thitery doodelum the \[Do]da |
||||
|
Me \[Sol]right fol' tur-a laddie-o |
||||
|
There's \[Ré]whiskey in the \[Sol]jar |
||||
|
\endverse |
||||
|
|
||||
|
\beginverse |
||||
|
The French are fighting boldly |
||||
|
Men are dying hot and coldly |
||||
|
Give every man his flask of powder |
||||
|
His firelock on his shoulder |
||||
|
Lo' fare thee well With me thitery doodelum the da |
||||
|
Me thitery doodelum the da |
||||
|
Me right fol' tur-a laddie-o |
||||
|
There's whiskey in the jar |
||||
|
\endverse |
||||
|
|
||||
|
\beginverse |
||||
|
Says the mother : \og Do not wrong me |
||||
|
Don't take me daughter from me |
||||
|
For if you do I will torment you |
||||
|
And after death me ghost will haunt you \fg |
||||
|
We're off, fare thee well With me thitery doodelum the da |
||||
|
Me thitery doodelum the da |
||||
|
Me right fol' tur-a laddie-o |
||||
|
There's whiskey in the jar |
||||
|
\endverse |
||||
|
|
||||
|
\endsong |
@ -0,0 +1,96 @@ |
|||||
|
% Copyright (C) 2011 Benjamin Coudrin |
||||
|
% Copyright (C) 2009-2010 Romain Goffe, Alexandre Dupas |
||||
|
% Copyright (C) 2008 Kevin W. Hamlen |
||||
|
% |
||||
|
% This program is free software; you can redistribute it and/or |
||||
|
% modify it under the terms of the GNU General Public License |
||||
|
% as published by the Free Software Foundation; either version 2 |
||||
|
% of the License, or (at your option) any later version. |
||||
|
% |
||||
|
% This program is distributed in the hope that it will be useful, |
||||
|
% but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
|
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
|
% GNU General Public License for more details. |
||||
|
% |
||||
|
% You should have received a copy of the GNU General Public License |
||||
|
% along with this program; if not, write to the Free Software |
||||
|
% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, |
||||
|
% MA 02110-1301, USA. |
||||
|
% |
||||
|
% The latest version of this program can be obtained from |
||||
|
% http://songs.sourceforge.net. |
||||
|
% |
||||
|
% Modified to serve personnal purposes. Newer versions can be |
||||
|
% obtained from http://www.lohrun.net. |
||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
||||
|
% Template parameters |
||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
||||
|
%%:[ |
||||
|
%%: {"name":"title", "description":"Title", "default":"Shiver Me Timbers", "mandatory":true}, |
||||
|
%%: {"name":"author", "description":"Author", "default":"Benjamin Coudrin", "mandatory":true}, |
||||
|
%%: {"name":"booktype", "description":"Type", "type":"enum", "values":["chorded","lyric"], "default":"chorded", "mandatory":true}, |
||||
|
%%: {"name":"bookoptions", "description":"Options", "type":"flag", "values":["diagram","lilypond","pictures","tabs"], "join":",", "mandatory":true, "default":["lilypond"]}, |
||||
|
%%: {"name":"version", "description":"Version", "default":"1.0.0"}, |
||||
|
%%: {"name":"subtitle", "description":"Songs from the Book"}, |
||||
|
%%: {"name":"web", "description":"Web", "default":"http://www.myspace.com/shivermetimbersofficial"}, |
||||
|
%%: {"name":"mail", "description":"Email", "default":"benjamin.coudrin@gmail.com"}, |
||||
|
%%: {"name":"picture", "description":"Picture", "type":"file", "default":"shiver"}, |
||||
|
%%: {"name":"picturecopyright", "description":"Copyright", "default":"WTFPL - Do What The Fuck You Want Public License"}, |
||||
|
%%: {"name":"footer", "description":"Footer", "default":"\\begin{flushleft}Shiver Me Timbers\\end{flushleft}"}, |
||||
|
%%: {"name":"license", "description":"License", "default":"\\input{license.tex}"}, |
||||
|
%%: {"name":"mainfontsize", "description":"Font Size", "type":"font", "default":"10"}, |
||||
|
%%: {"name":"songnumberbgcolor", "description":"Number Shade", "type":"color", "default":"#D1E4AE"}, |
||||
|
%%: {"name":"notebgcolor", "description":"Note Shade", "type":"color", "default":"#FFFDB3"}, |
||||
|
%%: {"name":"indexbgcolor", "description":"Index Shade", "type":"color", "default":"#D1E4AE"} |
||||
|
%%:] |
||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
||||
|
% begin document |
||||
|
\documentclass[\getbooktype,\getbookoptions,\getmainfontsize]{crepbook} |
||||
|
\usepackage[utf8]{inputenc} |
||||
|
\usepackage[english,spanish,french]{babel} |
||||
|
\usepackage[T1]{fontenc} |
||||
|
\usepackage{tex/venturisold} |
||||
|
|
||||
|
\title{\gettitle} |
||||
|
\author{\getauthor} |
||||
|
\subtitle{\getsubtitle} |
||||
|
\version{\getversion} |
||||
|
\mail{\getmail} |
||||
|
\web{\getweb} |
||||
|
\picture{\getpicture} |
||||
|
\picturecopyright{\getpicturecopyright} |
||||
|
\footer{\getfooter} |
||||
|
\licence{\getlicense} |
||||
|
|
||||
|
\newindex{titleidx}{\getname_title} |
||||
|
\newauthorindex{authidx}{\getname_auth} |
||||
|
|
||||
|
\graphicspath{ |
||||
|
{img/}, |
||||
|
} |
||||
|
|
||||
|
\definecolor{SongNumberBgColor}{HTML}{\getsongnumberbgcolor} |
||||
|
\definecolor{NoteBgColor}{HTML}{\getnotebgcolor} |
||||
|
\definecolor{IndexBgColor}{HTML}{\getindexbgcolor} |
||||
|
|
||||
|
\renewcommand{\snumbgcolor}{SongNumberBgColor} |
||||
|
\renewcommand{\notebgcolor}{NoteBgColor} |
||||
|
\renewcommand{\idxbgcolor}{IndexBgColor} |
||||
|
|
||||
|
\renewcommand{\printchord}[1]{\mdseries\ttfamily\upshape#1} |
||||
|
\pagestyle{empty} |
||||
|
|
||||
|
\begin{document} |
||||
|
|
||||
|
\maketitle |
||||
|
|
||||
|
\showindex{Index des chansons}{titleidx} |
||||
|
|
||||
|
\songsection{Liste des chansons} |
||||
|
\begin{songs}{titleidx,authidx} |
||||
|
\getsongslist |
||||
|
\end{songs} |
||||
|
|
||||
|
\end{document} |
||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
||||
|
% end document |
@ -0,0 +1,47 @@ |
|||||
|
\RequirePackage{graphicx} |
||||
|
\RequirePackage{calc} |
||||
|
|
||||
|
\newlength{\largeurnota} |
||||
|
\newlength{\largeurlignenota} |
||||
|
\newlength{\indentationnota} |
||||
|
\newlength{\paddingnota} |
||||
|
\setlength{\largeurnota}{0.8cm} |
||||
|
\setlength{\paddingnota}{5pt} |
||||
|
|
||||
|
\newenvironment{pictonote}[1]{% |
||||
|
\begin{list}{}{% |
||||
|
\setlength{\labelsep}{5pt}% |
||||
|
\setlength{\leftmargin}{20pt}% |
||||
|
\setlength{\rightmargin}{25pt}} |
||||
|
\item% |
||||
|
\setlength{\indentationnota}{\@totalleftmargin+\largeurnota+\paddingnota}% |
||||
|
\setlength{\largeurlignenota}{\linewidth-\largeurnota-\paddingnota}% |
||||
|
\parshape=3% |
||||
|
\indentationnota\largeurlignenota% |
||||
|
\indentationnota\largeurlignenota% |
||||
|
\@totalleftmargin\linewidth% |
||||
|
\raisebox{-\largeurnota+2.2ex}[0pt][0pt]{% |
||||
|
\makebox[0pt][r]{% |
||||
|
\includegraphics[width=\largeurnota]{#1}% |
||||
|
\hspace{\paddingnota}}}% |
||||
|
\ignorespaces}{% |
||||
|
\end{list}% |
||||
|
\vspace{0.2cm}% |
||||
|
} |
||||
|
|
||||
|
\newcommand{\@lheader}[1]{% |
||||
|
\textbf{\large #1}% |
||||
|
\vspace{0.2cm}% |
||||
|
} |
||||
|
|
||||
|
\newcommand{\lcondition}[1]{% |
||||
|
\textbf{#1~--~}% |
||||
|
} |
||||
|
|
||||
|
\newenvironment{lblock}[1]{% |
||||
|
\@lheader{#1}}{% |
||||
|
\vspace{0.6cm}% |
||||
|
} |
||||
|
|
||||
|
|
||||
|
\endinput |
@ -0,0 +1,30 @@ |
|||||
|
%% Copyright 2010 Clea F. Rees |
||||
|
% |
||||
|
% This work may be distributed and/or modified under the |
||||
|
% conditions of the LaTeX Project Public License, either version 1.3 |
||||
|
% of this license or (at your option) any later version. |
||||
|
% The latest version of this license is in |
||||
|
% http://www.latex-project.org/lppl.txt |
||||
|
% and version 1.3 or later is part of all distributions of LaTeX |
||||
|
% version 2005/12/01 or later. |
||||
|
% |
||||
|
% This work has the LPPL maintenance status `maintained'. |
||||
|
% |
||||
|
% The Current Maintainer of this work is Clea F. Rees. |
||||
|
% |
||||
|
% This work consists of all files listed in manifest.txt. |
||||
|
\NeedsTeXFormat{LaTeX2e} |
||||
|
\ProvidesPackage{venturisold}[2010/07/03 v1.005 VenturisOldADF PS] |
||||
|
\RequirePackage[T1]{fontenc} |
||||
|
\RequirePackage{textcomp} |
||||
|
\RequirePackage{nfssext-cfr} |
||||
|
%:Make Venturis Old default for roman text |
||||
|
\renewcommand{\rmdefault}{yvo} |
||||
|
%:introduce special titling commands |
||||
|
\DeclareRobustCommand{\vtstyle}[1][]{% allow an optional argument for consistency with venturis.sty |
||||
|
\not@math@alphabet\vtstyle\relax |
||||
|
\fontfamily{yvod}\selectfont} |
||||
|
\DeclareTextFontCommand{\textvt}{\vtstyle} |
||||
|
\DeclareTextFontCommand{\textvtl}{\vtstyle} |
||||
|
\endinput |
||||
|
%% end venturisold.sty |
@ -1,67 +0,0 @@ |
|||||
\begin{SBVerse*} |
|
||||
\Ch{Am}{Dans} les prisons de Nantes \Ch{G}{~} (bis) |
|
||||
|
|
||||
Y avait un \Ch{G}{prison}\Ch{Am}{nier} |
|
||||
\end{SBVerse*} |
|
||||
|
|
||||
\bigskip |
|
||||
|
|
||||
Personne ne vint le \og vou\`ere \fg |
|
||||
|
|
||||
Que la fille du ge\^olier |
|
||||
|
|
||||
\bigskip |
|
||||
|
|
||||
Un jour il lui demande |
|
||||
|
|
||||
Et que dit-on de \og mou\'e \fg ? |
|
||||
|
|
||||
\bigskip |
|
||||
|
|
||||
On dit de vous en ville |
|
||||
|
|
||||
Que vous serez pendu |
|
||||
|
|
||||
\bigskip |
|
||||
|
|
||||
Mais s'il faut qu'on me pende |
|
||||
|
|
||||
D\'eliez-moi les pieds |
|
||||
|
|
||||
\bigskip |
|
||||
|
|
||||
La fille \'etait jeunette |
|
||||
|
|
||||
Les pieds lui a d\'eli\'e |
|
||||
|
|
||||
\bigskip |
|
||||
|
|
||||
Le prisonnier alerte |
|
||||
|
|
||||
Dans la Loire s'est jet\'e |
|
||||
|
|
||||
\bigskip |
|
||||
|
|
||||
D\`es qu'il f\^ut sur les rives |
|
||||
|
|
||||
Il se prit \`a chanter |
|
||||
|
|
||||
\bigskip |
|
||||
|
|
||||
Je chante pour les belles |
|
||||
|
|
||||
Surtout celle du ge\^olier |
|
||||
|
|
||||
\bigskip |
|
||||
|
|
||||
Si je reviens \`a Nantes |
|
||||
|
|
||||
Oui je l'\'epouserai |
|
||||
|
|
||||
\bigskip |
|
||||
|
|
||||
Dans les prisons de Nantes |
|
||||
|
|
||||
Y avait un prisonnier |
|
||||
|
|
||||
\bigskip |
|
@ -1,49 +0,0 @@ |
|||||
\begin{SBVerse*} |
|
||||
I met my \Ch{G}{love}, by the gas yard wall |
|
||||
|
|
||||
Dreamed a \Ch{C}{dream}, by the old \Ch{G}{canal} |
|
||||
|
|
||||
Kissed my \Ch{Em}{girl}, by the factory \Ch{G}{wall} |
|
||||
|
|
||||
Dirty old \Ch{D}{town}, dirty old \Ch{Em}{town} |
|
||||
\end{SBVerse*} |
|
||||
|
|
||||
\bigskip |
|
||||
|
|
||||
I heard a siren from the dock |
|
||||
|
|
||||
Saw a train cut the night on fire |
|
||||
|
|
||||
Smelled the breeze on the smokey wind |
|
||||
|
|
||||
Dirty old town, dirty old town |
|
||||
|
|
||||
\bigskip |
|
||||
|
|
||||
I'm going to make a big sharp ax |
|
||||
|
|
||||
Shining steel tempered in the fire |
|
||||
|
|
||||
I'll cut ye down like an old dead tree |
|
||||
|
|
||||
Dirty old town, dirty old town |
|
||||
|
|
||||
\bigskip |
|
||||
|
|
||||
Clouds are drifting on the street |
|
||||
|
|
||||
Cats are prowling on their beats |
|
||||
|
|
||||
Springs a girl on the streets at night |
|
||||
|
|
||||
Dirty old town, dirty old town |
|
||||
|
|
||||
\bigskip |
|
||||
|
|
||||
I Met my love, by the gas yard wall |
|
||||
|
|
||||
Dreamed a dream, by the old canal |
|
||||
|
|
||||
Kissed my girl, by the factory wall |
|
||||
|
|
||||
Dirty old town, dirty old town |
|
@ -1,67 +0,0 @@ |
|||||
\begin{SBVerse*} |
|
||||
\Ch{Am}{Eileen} Oge, and \Ch{E7}{that} the darlin's \Ch{Am}{name} is, \Ch{G}{through} the barony her \Ch{D}{features} they were \Ch{G}{famous} |
|
||||
|
|
||||
\Ch{Am}{If} we loved her, \Ch{E7}{who} is there to \Ch{Am}{blame} us, for wasn't she the \Ch{E7}{pride} of Petra\Ch{Am}{vore} ? |
|
||||
|
|
||||
\Ch{F}{But} her \Ch{G7}{beauty} \Ch{C}{made} us all so shy, \Ch{Dm}{not} a \Ch{E7}{man} could \Ch{Am}{look} her in the eye |
|
||||
|
|
||||
\Ch{F}{Boys}, O \Ch{G7}{boys}, sure \Ch{C}{that's} reason why we're in \Ch{Am}{mourning} for the \Ch{E7}{pride} of Petra\Ch{Am}{vore} |
|
||||
\end{SBVerse*} |
|
||||
\bigskip |
|
||||
\begin{SBChorus} |
|
||||
\Ch{F}{Eileen} \Ch{G7}{Og}, me \Ch{C}{heart} is growing grey \Ch{Dm}{ever} since the \Ch{E7}{day}, you \Ch{Am}{wandered} far away |
|
||||
|
|
||||
\Ch{F}{Eileen} \Ch{G7}{Og}, there's \Ch{C}{good} fish in the sea but there's \Ch{Am}{none} of them like the \Ch{E7}{pride} of Petra\Ch{Am}{vore} |
|
||||
\end{SBChorus} |
|
||||
\bigskip |
|
||||
Friday at the fair of Ballintubber |
|
||||
|
|
||||
Eileen met McGrath the cattle jobber |
|
||||
|
|
||||
I'd like to set me mark upon the robber |
|
||||
|
|
||||
For he stole away the Pride of Petravore |
|
||||
|
|
||||
He never seemed to see the girl at all |
|
||||
|
|
||||
Even when she ogled him underneath her shawl |
|
||||
|
|
||||
Looking big and masterful when she was looking small |
|
||||
|
|
||||
Most provoking for the Pride of Petravore |
|
||||
|
|
||||
\bigskip |
|
||||
|
|
||||
So it went as it was in the beginning |
|
||||
|
|
||||
Eileen Og was bent upon the winning |
|
||||
|
|
||||
Big McGrath contentedly was grinning |
|
||||
|
|
||||
Being courted by the Pride of Petravore |
|
||||
|
|
||||
Says he, \og I know a girl who'd knock you into fits \fg |
|
||||
|
|
||||
At that Eileen nearly lost her wits |
|
||||
|
|
||||
The upshot of the ruction was that now the robber sits |
|
||||
|
|
||||
With his arm around the Pride of Petravore |
|
||||
|
|
||||
\bigskip |
|
||||
|
|
||||
Boys, O boys, with fate 'tis hard to grapple |
|
||||
|
|
||||
Of my eye 'cause Eileen was the apple |
|
||||
|
|
||||
And to see her walkin' to the chapel |
|
||||
|
|
||||
Wid the hardest featured man in Petravore |
|
||||
|
|
||||
Now me boys, this is all I have to say |
|
||||
|
|
||||
When you do your courting make no display |
|
||||
|
|
||||
If you want them to run after you just walk the other way |
|
||||
|
|
||||
For they're mostly like the Pride of Petravore |
|
@ -1,13 +0,0 @@ |
|||||
\begin{song}{Dirty Old Town}{G}{~}{Ewan MacColl}{}{} |
|
||||
\input{town/dirty_old_town.tex} |
|
||||
\end{song} |
|
||||
|
|
||||
\begin{song}{Dans les prisons de Nantes}{Am}{~}{traditionnel breton}{}{} |
|
||||
\input{town/dans_les_prisons_de_nantes.tex} |
|
||||
\end{song} |
|
||||
|
|
||||
\begin{song}{Eileen Og}{Am}{~}{Percy French}{}{} |
|
||||
\input{town/eileen_og.tex} |
|
||||
\end{song} |
|
||||
|
|
||||
\input{town/forges.tex} |
|
@ -0,0 +1,35 @@ |
|||||
|
#!/bin/sh |
||||
|
for directory in songs/*; do |
||||
|
images=`ls $directory/*.{jpg,png} 2> /dev/null` |
||||
|
val=`echo $images | wc -w` |
||||
|
for song in $directory/*.sg; do |
||||
|
sg=`basename $song` |
||||
|
sed -i '0,/\\gtab/s//\\cover\n\\gtab/' $song |
||||
|
if [ $val -gt 1 ] |
||||
|
then |
||||
|
i=1 |
||||
|
for image in $images; do |
||||
|
img=`basename $image .jpg` |
||||
|
img=`echo $img | sed 's/.png$//'` |
||||
|
echo "Apply $img to $song ? ($i/$val)" |
||||
|
i=$(($i+1)) |
||||
|
read answer |
||||
|
case "$answer" in |
||||
|
"y") |
||||
|
sed -i 's/beginsong{\([^}]*\)}\[\([^]]*\)\]/beginsong{\1}[\2,cov='$img']/' $song |
||||
|
break; |
||||
|
;; |
||||
|
"n") |
||||
|
true |
||||
|
;; |
||||
|
esac |
||||
|
done; |
||||
|
elif [ $val -eq 1 ] |
||||
|
then |
||||
|
img=`basename $images .jpg` |
||||
|
img=`echo $img | sed 's/.png$//'` |
||||
|
echo "Applying $img to $sg" |
||||
|
sed -i 's/beginsong{\([^}]*\)}\[\([^]]*\)\]/beginsong{\1}[\2,cov='$img']/' $song |
||||
|
fi; |
||||
|
done; |
||||
|
done; |
@ -0,0 +1,45 @@ |
|||||
|
;;; File: emacs-format-file.el |
||||
|
;;; Description: use this for batch indentation with emacs (see indent.sh) |
||||
|
;;; Author: Romain Goffe |
||||
|
;;; Date: 27/10/2010 |
||||
|
;;; Commentary: based on the work of Stan Warford (emacs-format-mode) and Scott Andrew Borton (indent-mode) |
||||
|
|
||||
|
(defun songbook-indent-line () |
||||
|
"Indent current line as SONGBOOK code." |
||||
|
(interactive) |
||||
|
(beginning-of-line) |
||||
|
(if (bobp) |
||||
|
(indent-line-to 0) ; First line is always non-indented |
||||
|
(let ((not-indented t) cur-indent) |
||||
|
(if (looking-at "^[ \t]*\\(\\\\end\\(song\\|verse\\|chorus\\)\\)") ; If the line we are looking at is the end of a block, then decrease the indentation |
||||
|
(progn |
||||
|
(save-excursion |
||||
|
(forward-line -1) |
||||
|
(setq cur-indent (- (current-indentation) 2))) |
||||
|
(if (< cur-indent 0) ; We can't indent past the left margin |
||||
|
(setq cur-indent 0))) |
||||
|
(save-excursion |
||||
|
(while not-indented ; Iterate backwards until we find an indentation hint |
||||
|
(forward-line -1) |
||||
|
(if (looking-at "^[ \t]*\\(\\\\end\\(song\\|verse\\|chorus\\)\\)") ; This hint indicates that we need to indent at the level of the END_ token |
||||
|
(progn |
||||
|
(setq cur-indent (current-indentation)) |
||||
|
(setq not-indented nil)) |
||||
|
(if (looking-at "^[ \t]*\\(\\\\begin\\(song\\|verse\\|chorus\\)\\)") ; This hint indicates that we need to indent an extra level |
||||
|
(progn |
||||
|
(setq cur-indent (+ (current-indentation) 2)) ; Do the actual indenting |
||||
|
(setq not-indented nil)) |
||||
|
(if (bobp) |
||||
|
(setq not-indented nil))))))) |
||||
|
(if cur-indent |
||||
|
(indent-line-to cur-indent) |
||||
|
(indent-line-to 0)))) ; If we didn't see an indentation hint, then allow no indentation |
||||
|
) |
||||
|
|
||||
|
(defun emacs-format-function () |
||||
|
"Format the whole buffer." |
||||
|
(set (make-local-variable 'indent-line-function) 'songbook-indent-line) |
||||
|
(indent-region (point-min) (point-max) nil) |
||||
|
(untabify (point-min) (point-max)) |
||||
|
(save-buffer) |
||||
|
) |
@ -0,0 +1,11 @@ |
|||||
|
{ |
||||
|
"template" : "patacrep-en.tmpl", |
||||
|
"bookoptions" : [ |
||||
|
"diagram", |
||||
|
"lilypond", |
||||
|
"pictures" |
||||
|
], |
||||
|
"booktype" : "chorded", |
||||
|
"subtitle" : "english songs", |
||||
|
"title" : "Guitar Songbook", |
||||
|
"songs" : [ |
@ -0,0 +1,9 @@ |
|||||
|
{ |
||||
|
"template" : "patacrep.tmpl", |
||||
|
"subtitle" : "chanson francaise", |
||||
|
"bookoptions" : [ |
||||
|
"diagram", |
||||
|
"lilypond", |
||||
|
"pictures" |
||||
|
], |
||||
|
"songs" : [ |
@ -0,0 +1,12 @@ |
|||||
|
{ |
||||
|
"template" : "patacrep.tmpl", |
||||
|
"bookoptions" : [ |
||||
|
"diagram", |
||||
|
"lilypond", |
||||
|
"pictures" |
||||
|
], |
||||
|
"booktype" : "chorded", |
||||
|
"picture" : "Mousey_Band_by_Duffzilla", |
||||
|
"picturecopyright" : "duffzilla @ deviantart.com", |
||||
|
"subtitle" : "Tome 3", |
||||
|
"songs" : [ |
@ -0,0 +1,11 @@ |
|||||
|
#!/bin/sh |
||||
|
|
||||
|
#Author: Romain Goffe |
||||
|
#Date: 27/10/2010 |
||||
|
#Descritpion: correctly indent all songs with emacs |
||||
|
#Commentary: can't manage to use a relative path to emacs-format-file.el |
||||
|
# so be sure to indicate the right path |
||||
|
|
||||
|
for song in songs/*/*.sg ; do |
||||
|
emacs -batch $song -l ~/songbook/utils/emacs-format-file.el -f emacs-format-function ; |
||||
|
done; |
@ -0,0 +1,22 @@ |
|||||
|
#!/bin/sh |
||||
|
|
||||
|
#Author: Romain Goffe |
||||
|
#Date: 14/11/2010 |
||||
|
#Description: Generate an sb file containing all the songs in a given language |
||||
|
|
||||
|
if [ $# -ne 1 ]; |
||||
|
then |
||||
|
echo "Usage: $0 LANG" |
||||
|
exit 1 |
||||
|
fi; |
||||
|
|
||||
|
LANG=$1 |
||||
|
|
||||
|
if [ $LANG="english" -o $LANG="french" ]; |
||||
|
then |
||||
|
cp "./utils/header-$LANG" "$LANG.sb" |
||||
|
grep "selectlanguage{$LANG}" songs/*/*.sg | sed 's|songs/\(.*\):.*| \"\1\",|; $ s|,$|\n ]\n}\n|' >> "$LANG.sb" |
||||
|
else |
||||
|
echo "Error: $LANG is not a supported language" |
||||
|
exit 2 |
||||
|
fi; |
@ -0,0 +1,17 @@ |
|||||
|
#!/bin/sh |
||||
|
echo "Choose langage: 1 (english), 2 (french), 3 (spanish)" |
||||
|
for song in songs/*/*.sg; do |
||||
|
echo "Apply language to $song ?" |
||||
|
read answer |
||||
|
case "$answer" in |
||||
|
1) |
||||
|
sed -i '1i\\\\selectlanguage{english}' $song |
||||
|
;; |
||||
|
2) |
||||
|
sed -i '1i\\\\selectlanguage{french}' $song |
||||
|
;; |
||||
|
3) |
||||
|
sed -i '1i\\\\selectlanguage{spanish}' $song |
||||
|
;; |
||||
|
esac |
||||
|
done; |
@ -0,0 +1,75 @@ |
|||||
|
#!/usr/bin/python |
||||
|
# -*- coding: utf-8 -*- |
||||
|
|
||||
|
# warning: lines beginning with ## are parsed by |
||||
|
# the songbook-client as rules categories |
||||
|
|
||||
|
|
||||
|
import glob |
||||
|
|
||||
|
# the dictionary has target_word:replacement_word pairs |
||||
|
word_dic = { |
||||
|
##: oe inclusion |
||||
|
"coeur": "cœur", |
||||
|
"boeuf": "bœuf", |
||||
|
"oeuvre": "œuvre", |
||||
|
"soeur": "sœur", |
||||
|
"noeud": "nœud", |
||||
|
"oeil": "œil", |
||||
|
"voeu": "vœu", |
||||
|
"oeuf": "œuf", |
||||
|
"oe{}": "œ", |
||||
|
##: Contractions |
||||
|
"ptit": "p'tit", |
||||
|
##: Punctuation |
||||
|
"’": "'", |
||||
|
"Ca ": "Ça ", |
||||
|
"\\musicnote{Intro": "\\musicnote{intro", |
||||
|
"\\musicnote{Outro": "\\musicnote{outro", |
||||
|
"...": "\\dots ", |
||||
|
"…": "\\dots", |
||||
|
#replace tabs with two spaces |
||||
|
" ": " ", |
||||
|
##: Typo |
||||
|
"New-York": "New York", |
||||
|
" i ": " I ", |
||||
|
"avant hier": "avant-hier", |
||||
|
##: Conversion from anglo-saxon conventions |
||||
|
"\\[A": "\\[La", |
||||
|
"\\[B": "\\[Si", |
||||
|
"\\[C": "\\[Do", |
||||
|
"\\[D]": "\\[Ré]", |
||||
|
"\\[E": "\\[Mi", |
||||
|
"\\[F]": "\\[Fa]", |
||||
|
"\\[G": "\\[Sol", |
||||
|
##: Guitar tabs |
||||
|
"\\[Re]": "\\[Ré]", |
||||
|
"b]": "&]", |
||||
|
#Do |
||||
|
"032010": "X32010", |
||||
|
#La |
||||
|
"002220": "X02220", |
||||
|
"002020": "X02020", |
||||
|
"002210": "X02210", |
||||
|
#Ré |
||||
|
"000232": "XX0232", |
||||
|
"X00232": "XX0232", |
||||
|
"000212": "XX0212", |
||||
|
"000231": "XX0231", |
||||
|
"X00231": "XX0231", |
||||
|
#Si |
||||
|
"021202": "X21202", |
||||
|
### end of rules |
||||
|
} |
||||
|
|
||||
|
# Process song files |
||||
|
songfiles = glob.glob('songs/*/*.sg') |
||||
|
for filename in songfiles: |
||||
|
with open(filename, 'r+') as songfile: |
||||
|
data = songfile.read() |
||||
|
for search, replace in word_dic.items(): |
||||
|
data = data.replace(search, replace) |
||||
|
songfile.seek(0) |
||||
|
songfile.write(data) |
||||
|
songfile.truncate() |
||||
|
|
@ -0,0 +1,119 @@ |
|||||
|
#!/usr/bin/perl -w |
||||
|
# |
||||
|
# Generate html index for the Crep's chorbook. |
||||
|
# |
||||
|
# Usage: make-html [options] source |
||||
|
# source should be an .sg or .sbd file |
||||
|
# |
||||
|
|
||||
|
use warnings; |
||||
|
use strict; |
||||
|
use utf8; |
||||
|
|
||||
|
sub uppercase($) |
||||
|
{ |
||||
|
my $letter = shift; |
||||
|
$letter =~ tr/a-zàéèëê/A-ZAEEEE/; |
||||
|
return $letter; |
||||
|
} |
||||
|
|
||||
|
# Create the latex-proof function |
||||
|
sub latex2utf8($) |
||||
|
{ |
||||
|
my $result = shift; |
||||
|
|
||||
|
$result =~ s/\\'e/é/g; |
||||
|
$result =~ s/\\¨e/ë/g; |
||||
|
$result =~ s/\\`e/è/g; |
||||
|
$result =~ s/\\\^e/ê/g; |
||||
|
$result =~ s/\\\^o/ô/g; |
||||
|
$result =~ s/\\\^a/â/g; |
||||
|
$result =~ s/\\\^i/î/g; |
||||
|
$result =~ s/\\`a/à/g; |
||||
|
$result =~ s/\\`u/ù/g; |
||||
|
$result =~ s/\\&/&/g; |
||||
|
$result =~ s/\\oe\s*{}/oe/g; |
||||
|
|
||||
|
return ($result); |
||||
|
} |
||||
|
#' |
||||
|
|
||||
|
sub usage () |
||||
|
{ |
||||
|
die "usage: make-html [options] source", "\n"; |
||||
|
} |
||||
|
|
||||
|
sub defaultoptions() |
||||
|
{ |
||||
|
return ( |
||||
|
titleprefix => "", |
||||
|
); |
||||
|
} |
||||
|
|
||||
|
my %options; |
||||
|
sub getoptions () |
||||
|
{ |
||||
|
%options = defaultoptions(); |
||||
|
eval q{use Getopt::Long}; |
||||
|
Getopt::Long::Configure('pass_through'); |
||||
|
GetOptions( |
||||
|
# "verbose|v!" => \$options{verbose}, |
||||
|
"titleprefix|p=s" => \$options{titleprefix}, |
||||
|
) || usage(); |
||||
|
} |
||||
|
|
||||
|
getoptions(); |
||||
|
|
||||
|
my $prefix = '(('.$options{titleprefix}.')[\s\'])'; |
||||
|
|
||||
|
# Filter function |
||||
|
sub process_titleprefix($) |
||||
|
{ |
||||
|
my $string = shift; |
||||
|
if( $string =~ /^$prefix\W*(\w)/ ) |
||||
|
{ |
||||
|
my $letter = uppercase $3; |
||||
|
$string =~ s/^$prefix\W*\w(.*)/$letter$3, $1/; |
||||
|
} |
||||
|
return $string; |
||||
|
} |
||||
|
|
||||
|
# Process command line |
||||
|
usage() unless @ARGV; |
||||
|
my $file = shift; |
||||
|
|
||||
|
# Open file and store date before closing the file |
||||
|
open( FILE, $file ) or die("unable to open $file"); |
||||
|
|
||||
|
# Process data |
||||
|
my %table; |
||||
|
my $author; |
||||
|
my $title; |
||||
|
|
||||
|
while( <FILE> ) |
||||
|
{ |
||||
|
if( $_ =~ /\\beginsong{(.*)}\[.*by=(.*),.*\]/ ) |
||||
|
{ |
||||
|
$author = latex2utf8 $2; |
||||
|
$title = latex2utf8 $1; |
||||
|
$title = process_titleprefix $title unless $options{titleprefix} eq ""; |
||||
|
# Create empty data index if needed |
||||
|
$table{$author} = [] unless exists $table{$author}; |
||||
|
push @{$table{$author}}, $title; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
close( FILE ); |
||||
|
|
||||
|
# Format output |
||||
|
print '<ul>'; |
||||
|
foreach my $author ( sort keys %table ) |
||||
|
{ |
||||
|
print '<li><strong>', $author, '</strong><ul>'; |
||||
|
foreach my $title ( sort @{$table{$author}} ) |
||||
|
{ |
||||
|
print '<li>',$title,'</li>' |
||||
|
} |
||||
|
print '</ul></li>'; |
||||
|
} |
||||
|
print '</ul>'; |
@ -0,0 +1,15 @@ |
|||||
|
#!/bin/sh |
||||
|
# |
||||
|
# Helper script to get the list of new songs added since the last version |
||||
|
# The output is supposed to be copy/pasted into the NEWS item. |
||||
|
|
||||
|
if [ $# -eq 1 ] |
||||
|
then |
||||
|
VERSION=$1 |
||||
|
else |
||||
|
# Get current version |
||||
|
VERSION=`git tag | tail -n1` |
||||
|
fi |
||||
|
|
||||
|
# Make new songs list by authors |
||||
|
git shortlog $VERSION..master | egrep '^([^ ].*|.*Add song.*)' | sed 's/Add song.*://' | sed 's/\.$//' | sed 's/ (.*)//' | sed 's/\s\s\s*/ /' |
@ -0,0 +1,17 @@ |
|||||
|
#!/bin/sh |
||||
|
# Resize image if needed |
||||
|
|
||||
|
for image in songs/*/*.jpg songs/*/*.png ; |
||||
|
do |
||||
|
SIZE=`identify $image | awk '{ print $3}' | sed 's/x/ /'`; |
||||
|
XSIZE=`echo $SIZE | awk '{ print $1}'`; |
||||
|
YSIZE=`echo $SIZE | awk '{ print $2}'`; |
||||
|
|
||||
|
if [ $((XSIZE)) -gt 128 ] |
||||
|
then |
||||
|
convert $image -resize 128x128 $image; |
||||
|
elif [ $((YSIZE)) -gt 128 ] |
||||
|
then |
||||
|
convert $image -resize 128x128 $image; |
||||
|
fi |
||||
|
done; |
@ -0,0 +1,83 @@ |
|||||
|
#!/usr/bin/python |
||||
|
# |
||||
|
|
||||
|
import sys |
||||
|
import glob |
||||
|
import re |
||||
|
from optparse import OptionParser |
||||
|
|
||||
|
# Pattern set to ignore latex command in title prefix |
||||
|
gtabPattern = re.compile(r"\\gtab\{(.*)\}\{(.*)\}"); |
||||
|
|
||||
|
def main(): |
||||
|
usage = "usage: %prog [options]" |
||||
|
parser = OptionParser(usage) |
||||
|
parser.add_option("-o", "--output", dest="filename", |
||||
|
help="write result into FILE", metavar="FILE") |
||||
|
(options, args) = parser.parse_args() |
||||
|
|
||||
|
# Options processing |
||||
|
if options.filename: |
||||
|
output = open(options.filename,"w") |
||||
|
else: |
||||
|
output = sys.stdout |
||||
|
|
||||
|
# Actual processing |
||||
|
chords = dict() |
||||
|
positions = dict() |
||||
|
|
||||
|
songfiles = glob.glob('songs/*/*.sg') |
||||
|
|
||||
|
for file in songfiles: |
||||
|
for line in open(file): |
||||
|
result = gtabPattern.match(line) |
||||
|
if result: |
||||
|
(chord,position) = result.groups() |
||||
|
if not chords.has_key(chord): |
||||
|
chords[chord] = set() |
||||
|
chords[chord].add(position) |
||||
|
if not positions.has_key(position): |
||||
|
positions[position] = set() |
||||
|
positions[position].add(chord) |
||||
|
|
||||
|
document = [ |
||||
|
'\\documentclass{article}', |
||||
|
'\\usepackage[chorded]{songs}', |
||||
|
'\\usepackage[utf8]{inputenc}', |
||||
|
'\\title{Accords}', |
||||
|
'\\author{Romain Goffe \\and Alexandre Dupas}', |
||||
|
'\\date{}', |
||||
|
'\\begin{document}', |
||||
|
'\\maketitle', |
||||
|
'\\begin{songs}{}', |
||||
|
] |
||||
|
|
||||
|
document.append('\\section{Chords names}') |
||||
|
|
||||
|
chordskeys = chords.keys() |
||||
|
chordskeys.sort() |
||||
|
|
||||
|
for k in chordskeys: |
||||
|
document.append('\\subsection{'+k.replace('#','\\#').replace('&','\\&')+'}') |
||||
|
for p in chords[k]: |
||||
|
document.append('\\gtab{'+k+'}{'+p+'}') |
||||
|
|
||||
|
document.append('\\section{Chords names}') |
||||
|
|
||||
|
positionskeys = positions.keys() |
||||
|
positionskeys.sort() |
||||
|
|
||||
|
for k in positionskeys: |
||||
|
document.append('\\subsection{'+k+'}') |
||||
|
for p in positions[k]: |
||||
|
document.append('\\gtab{'+p+'}{'+k+'}') |
||||
|
|
||||
|
document.extend([ |
||||
|
'\\end{songs}', |
||||
|
'\\end{document}', |
||||
|
]) |
||||
|
|
||||
|
output.write('\n'.join(document)) |
||||
|
|
||||
|
if __name__ == '__main__': |
||||
|
main() |
@ -0,0 +1,41 @@ |
|||||
|
#!/bin/sh |
||||
|
# |
||||
|
#Author: Romain Goffe and Alexandre Dupas |
||||
|
#Date: 27/10/2010 |
||||
|
#Description: fix typographic mistakes, some depending on language |
||||
|
|
||||
|
FILES=songs/*/*.sg |
||||
|
|
||||
|
if [ $# -gt 0 ] ; then |
||||
|
FILES=$@ |
||||
|
fi |
||||
|
|
||||
|
# remove trailing space and double space |
||||
|
sed -i \ |
||||
|
-e 's/\s*$//g' \ |
||||
|
-e 's/[,\.]$//g' \ |
||||
|
-e '/\s*%/! s/\([^ ]\)\s\+/\1 /g' \ |
||||
|
$FILES |
||||
|
|
||||
|
# formating rules depending on language |
||||
|
for song in $FILES; |
||||
|
do |
||||
|
if grep -q "selectlanguage{english}" $song |
||||
|
then |
||||
|
sed -i \ |
||||
|
-e 's/\s*?/?/g' \ |
||||
|
-e 's/\s*!/!/g' \ |
||||
|
-e 's/\s*:/:/g' \ |
||||
|
$song |
||||
|
elif grep -q "selectlanguage{french}" $song |
||||
|
then |
||||
|
sed -i \ |
||||
|
-e 's/\([^ ]\)?/\1 ?/g' \ |
||||
|
-e 's/\([^ ]\)!/\1 !/g' \ |
||||
|
-e 's/\([^ ]\)!/\1 !/g' \ |
||||
|
-e 's/``/{\\og}/g' \ |
||||
|
-e "s/''/{\\\\fg}/g" \ |
||||
|
-e '/\\gtab.*/ ! s/\([^ ]\):/\1 :/g' \ |
||||
|
$song |
||||
|
fi |
||||
|
done |
@ -0,0 +1,40 @@ |
|||||
|
#!/bin/sh |
||||
|
#Author: Romain Goffe |
||||
|
#Date: 07/05/2011 |
||||
|
#Description: Generate an sb file containing all the songs that are not |
||||
|
# already in volume-1 and volume-2 |
||||
|
|
||||
|
#all songs |
||||
|
cd songs |
||||
|
ls -1 */*.sg > ../res1 |
||||
|
cd .. |
||||
|
|
||||
|
#get volume 1 list |
||||
|
tail -n +12 volume-1.sb > tmp1 |
||||
|
head -n -2 tmp1 > list1 |
||||
|
sed -i -e "s/\",//g" -e "s/ \"//g" -e "s/\"//g" list1 |
||||
|
|
||||
|
#remove volume 1 songs |
||||
|
grep -vf list1 res1 > res2 |
||||
|
|
||||
|
#get volume 2 list |
||||
|
tail -n +13 volume-2.sb > tmp2 |
||||
|
head -n -2 tmp2 > list2 |
||||
|
sed -i -e "s/\",//g" -e "s/ \"//g" -e "s/\"//g" list2 |
||||
|
|
||||
|
#remove volume 2 songs |
||||
|
grep -vf list2 res2 > res3 |
||||
|
|
||||
|
#format song list |
||||
|
sed -i -e "s/^/ \"/g" -e "s/$/\",/g" res3 |
||||
|
head -c -2 res3 > res |
||||
|
|
||||
|
|
||||
|
#make volume 3 sb file |
||||
|
cat utils/header-volume-3 > volume-3.sb |
||||
|
cat res >> volume-3.sb |
||||
|
echo "]" >> volume-3.sb |
||||
|
echo "}" >> volume-3.sb |
||||
|
|
||||
|
#remove tmp files |
||||
|
rm -f res res1 res2 res3 list1 list2 tmp1 tmp2 |
@ -1,72 +0,0 @@ |
|||||
There's a Leprechaun in me head, and I wish that I were dead |
|
||||
|
|
||||
For I don't think he'll e'er let me be. |
|
||||
|
|
||||
Oh, he tempts me with his gold, and if I were e'er so bold, |
|
||||
|
|
||||
I'd strangle him and leave him in the street. |
|
||||
|
|
||||
\bigskip |
|
||||
|
|
||||
\textbf{Well, he says to me, "Ah, you're no Irish Laddie!} |
|
||||
|
|
||||
\textbf{And ye call that thing a harp?"} |
|
||||
|
|
||||
\textbf{But each time I share the lore that I am learning.} |
|
||||
|
|
||||
\textbf{He hides in shame while my friends they chant. } |
|
||||
|
|
||||
\textbf{La ta tee, da diddley dee, la ta tee ta tee da} |
|
||||
|
|
||||
\textbf{La ta tee, da diddley diddley dai} |
|
||||
|
|
||||
\textbf{La ta tee, da diddley dee, la ta tee ta tee da} |
|
||||
|
|
||||
\textbf{La ta tee, da diddley diddley dai} |
|
||||
|
|
||||
\bigskip |
|
||||
|
|
||||
There's a leprechaun in my room. He swats me with a broom. |
|
||||
|
|
||||
That's the reason I forget the words of this song. |
|
||||
|
|
||||
Well, he shows me a four-leaf clover, and before me song is over, |
|
||||
|
|
||||
It's buried in a bowl of Lucky Charms. |
|
||||
|
|
||||
\bigskip |
|
||||
|
|
||||
Ther'es a leprechaun on the floor, and he says that I'm a bore. |
|
||||
|
|
||||
He yawns aloud as I sing my song. |
|
||||
|
|
||||
He feigns one last breathe stolen, but I see his eyes are open. |
|
||||
|
|
||||
And he's watching me with envy deep inside. |
|
||||
|
|
||||
\bigskip |
|
||||
|
|
||||
There's a leprechaun on a hill, and his gold is buried there. |
|
||||
|
|
||||
So I grab him by the neck 'fore he gets away. |
|
||||
|
|
||||
The pot's too heavy, he giggles, so I pinch me just a little, |
|
||||
|
|
||||
And he thinks he's fooled me as I run away. |
|
||||
|
|
||||
%%%%%%%%%%%%%%%%%%%%%% A AJOUTER %%%%%%%%%%%%%%%%%%%%%% |
|
||||
|
|
||||
%KEY F |
|
||||
|
|
||||
%verse: |
|
||||
%D D G D |
|
||||
%D D D A |
|
||||
%D D G D |
|
||||
%D D D-A-D |
|
||||
|
|
||||
%chorus: |
|
||||
%G G G D |
|
||||
%G G G A |
|
||||
%D D G D |
|
||||
%D D D-A-D |
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
@ -1,6 +0,0 @@ |
|||||
\begin{song}{The Leprechaun}{?}{St Patrick's Day song}{Marc Gunn}{}{} |
|
||||
TODO : Chords |
|
||||
\input{woods/leprechaun.tex} |
|
||||
\end{song} |
|
||||
|
|
||||
\input{woods/weile.tex} |
|