diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /info/latex4musicians |
Initial commit
Diffstat (limited to 'info/latex4musicians')
115 files changed, 5630 insertions, 0 deletions
diff --git a/info/latex4musicians/Figures/Makefile.sb b/info/latex4musicians/Figures/Makefile.sb new file mode 100644 index 0000000000..2d0155370b --- /dev/null +++ b/info/latex4musicians/Figures/Makefile.sb @@ -0,0 +1,26 @@ +# Makefile for sample-songbook + +FIGURES = fellow.pdf happyb.pdf warm.pdf + +sample-songbook: sample-songbook.tex $(FIGURES) + pdflatex sample-songbook.tex; \ + pdflatex sample-songbook.tex; \ + pdflatex sample-songbook.tex + +fellow.pdf: fellow.abc + abcm2ps -c -O= fellow.abc; \ + ps2pdf fellow.ps; pdfcrop fellow.pdf; \ + /bin/mv -f fellow-crop.pdf fellow.pdf + +happyb.pdf: happyb.abc + abcm2ps -O= happyb.abc; \ + ps2pdf happyb.ps; pdfcrop happyb.pdf; \ + /bin/mv -f happyb-crop.pdf happyb.pdf + +warm.pdf: warm.abc + abcm2ps -O= warm.abc; \ + ps2pdf warm.ps; pdfcrop warm.pdf; \ + /bin/mv -f warm-crop.pdf warm.pdf + +clean: + /bin/rm -f .*~ *~ *aux *bak *lo? *to? *out *tmp *bbl *ps diff --git a/info/latex4musicians/Figures/abctab.abc b/info/latex4musicians/Figures/abctab.abc new file mode 100644 index 0000000000..eff562c2cc --- /dev/null +++ b/info/latex4musicians/Figures/abctab.abc @@ -0,0 +1,9 @@ +X: 1 +M: 3/4 +L: 1/4 +K: C +% +V:1 +CDE | FGA | BAB | c2z |] +V:2 clef=tab octave=-1 +CDE | FGA | BAB | c2z |] diff --git a/info/latex4musicians/Figures/abctab.ly b/info/latex4musicians/Figures/abctab.ly new file mode 100644 index 0000000000..55596cf951 --- /dev/null +++ b/info/latex4musicians/Figures/abctab.ly @@ -0,0 +1,53 @@ + +\version "2.18.2" +% automatically converted by musicxml2ly from abctab.xml + +\header { + encoder = "abc2xml version 218" + encodingdate = "2018-12-22" + } + +\layout { + \context { \Score + autoBeaming = ##f + } + } +PartPOneVoiceOne = \relative c' { + \key c \major \time 3/4 c4 d4 e4 | % 2 + f4 g4 a4 | % 3 + b4 a4 b4 | % 4 + c2 r4 \bar "|." + } + +PartPTwoVoiceOne = \relative c { + \clef "tab" \stopStaff \override Staff.StaffSymbol #'line-count = #6 + \startStaff \key c \major \time 3/4 c4 \5 d4 \4 e4 \4 | % 2 + f4 \4 g4 \3 a4 \3 | % 3 + b4 \2 a4 \3 b4 \2 | % 4 + c2 \2 r4 \bar "|." + } + + +% The score definition +\score { + << + \new Staff << + \context Staff << + \context Voice = "PartPOneVoiceOne" { \PartPOneVoiceOne } + >> + >> + \new TabStaff \with { stringTunings = #`( ,(ly:make-pitch 0 2 0) + ,(ly:make-pitch -1 6 0) ,(ly:make-pitch -1 4 0) + ,(ly:make-pitch -1 1 0) ,(ly:make-pitch -2 5 0) + ,(ly:make-pitch -2 2 0) ) } << + \context TabStaff << + \context TabVoice = "PartPTwoVoiceOne" { \PartPTwoVoiceOne } + >> + >> + + >> + \layout {} + % To create MIDI output, uncomment the following line: + % \midi {} + } + diff --git a/info/latex4musicians/Figures/bravura.tex b/info/latex4musicians/Figures/bravura.tex new file mode 100644 index 0000000000..6944bf3c40 --- /dev/null +++ b/info/latex4musicians/Figures/bravura.tex @@ -0,0 +1,36 @@ +\documentclass{article} +\usepackage{fontspec} +\thispagestyle{empty} + +\newfontfamily\brtxt{BravuraText.otf}[Path=/usr/share/fonts/] +\newfontfamily\brv{Bravura.otf}[Path=/usr/share/fonts/] + +\newcommand{\clefGi} {{\brtxt \char"E050}} +\newcommand{\clefCi} {{\brtxt \char"E05C}} +\newcommand{\clefFi} {{\brtxt \char"E062}} + +\newcommand{\clefG} {{\brv \char"E050}} +\newcommand{\clefC} {{\brv \char"E05C}} +\newcommand{\clefF} {{\brv \char"E062}} +\newcommand{\timeC} {{\brv \char"E08A}} +\newcommand{\timeCHalf} {{\brv \char"E08B}} +\renewcommand{\flat} {{\brv \char"E260}} +\renewcommand{\natural} {{\brv \char"E261}} +\renewcommand{\sharp} {{\brv \char"E262}} +\newcommand{\wholeNote} {{\brv \char"E1D2}} +\newcommand{\halfNote} {{\brv \char"E1D3}} +\newcommand{\halfNoteDown}{{\brv \char"E1D4}} +\newcommand{\quarterNote} {{\brv \char"E1D5}} + +\begin{document} + +The Bravura and BravuraText Music fonts provide thousands of music +symbols. BravuraText glyphs are specifically \clefGi\ designed +\clefFi\ to be used \clefCi\ inline: + +clefs:~ \clefG\ \clefC\ \clefF\ ~time signatures:~ +\timeC\ \timeCHalf\ ~accidentals:~ \sharp\ \flat\ \natural\ +~notes:~ \wholeNote\ \halfNote\ \halfNoteDown\ \quarterNote\ +~and much, much more. + +\end{document} diff --git a/info/latex4musicians/Figures/breeches.abc b/info/latex4musicians/Figures/breeches.abc new file mode 100644 index 0000000000..2a5313aacb --- /dev/null +++ b/info/latex4musicians/Figures/breeches.abc @@ -0,0 +1,10 @@ +X:92 +T:Breeches Full of Stitches +R:polka +M:2/4 +L:1/8 +K:Amaj +A>B cA | BA ce | A>B cA | BA F2 |\ +A>B cA | BA ce | A>B AF | FE E2 :| +e>f ec | BA Bc | e>f ec | BA F2 |\ +e>f ec | BA Bc | A>B AF | FE E2 :| diff --git a/info/latex4musicians/Figures/chordii.cho b/info/latex4musicians/Figures/chordii.cho new file mode 100644 index 0000000000..c674579a93 --- /dev/null +++ b/info/latex4musicians/Figures/chordii.cho @@ -0,0 +1,10 @@ +{titles:left} +{title:Imagine} +{st:John Lennon} + +(Intro, x 2) +[C] [Cmaj7] [F] +[C]Imagine there's [Cmaj7]no [F]heaven +[C]It's easy if [Cmaj7]you [F]try +[C]No hell [Cmaj7]below [F]us +[C]Above us [Cmaj7]only [F]sky diff --git a/info/latex4musicians/Figures/chords.tex b/info/latex4musicians/Figures/chords.tex new file mode 100644 index 0000000000..b23b02f8bf --- /dev/null +++ b/info/latex4musicians/Figures/chords.tex @@ -0,0 +1,11 @@ +\documentclass[12pt]{article} +\usepackage[minimal]{leadsheets} +\useleadsheetslibraries{chords} +\thispagestyle{empty} + +\begin{document} + +Let's typeset some chords: \writechord{Bb7(#9)} \writechord{Bbb6} +\writechord{C#7(b9)} \writechord{C##13} + +\end{document} diff --git a/info/latex4musicians/Figures/drowsy.abc b/info/latex4musicians/Figures/drowsy.abc new file mode 100644 index 0000000000..dab1e922d5 --- /dev/null +++ b/info/latex4musicians/Figures/drowsy.abc @@ -0,0 +1,9 @@ +X:55 +T: Drowsy Maggie +M: C| +L: 1/8 +R: reel +K: Edor +|: E2BE dEBE | E2BE AFDF | E2BE dEBE | BABc dAFD :|[K:D] + d2fd c2ec |defg afge | d2fd c2ec | BABc dAFA | + d2fd c2ec |defg afge | afge fdec |BABc dAFD |] diff --git a/info/latex4musicians/Figures/fellow.abc b/info/latex4musicians/Figures/fellow.abc new file mode 100644 index 0000000000..b8cf386686 --- /dev/null +++ b/info/latex4musicians/Figures/fellow.abc @@ -0,0 +1,12 @@ +X: 1 +% T: For He's a Jolly Good Fellow +M: 6/8 +L: 1/8 +K: CMaj +% +G | "C"E2E EDE | F3 E2 E | \ +w:For he's a jol-ly good fel-low, for +"G"D2D DCD | "C"E3 C2 C | "C7"E2E EDE | \ +w:he's a jo-ly good fel-low, for he's a jol-ly good +"F"F3 HA2 A | "C"GAG "G"F2 D| "C"C3 z3 |] +w:fel-low, which no-bo-dy can de-ny! diff --git a/info/latex4musicians/Figures/gchords.tex b/info/latex4musicians/Figures/gchords.tex new file mode 100644 index 0000000000..11b483227a --- /dev/null +++ b/info/latex4musicians/Figures/gchords.tex @@ -0,0 +1,21 @@ +\documentclass{article} +\usepackage{gchords} +\thispagestyle{empty} + +\begin{document} + +\def\numfrets{4} + +\chords{ % print a row of chords +% fingers: n, x, o, p{n}, f{n} +% C chord: finger 3 pos. 3, finger 2 pos. 2, finger 1 pos. 1 +\chord{t}{n,f3p3,f2p2,n,f1p1,n}{C} +\chord{t}{n,n,p2,p2,p1,n}{Am} +\chord{t}{x,n,n,p2,p3,p1}{Dm} +\chord{t3}{n,p2,n,p1,n,n}{G7 (ugly)} +{\tiny % font size for string labels, t{X} +\chord{t}{t{E}n,t{A}n,t{D}n,t{G}n,t{B}n,t{e}n} +{std. tuning} } +} + +\end{document} diff --git a/info/latex4musicians/Figures/gcschemes.tex b/info/latex4musicians/Figures/gcschemes.tex new file mode 100644 index 0000000000..2f0ad7f03f --- /dev/null +++ b/info/latex4musicians/Figures/gcschemes.tex @@ -0,0 +1,41 @@ +\documentclass{article} +\usepackage{guitarchordschemes} +\thispagestyle{empty} + +\begin{document} + +% general parameters +\setchordscheme{ + rotate=-90, + x-unit=2.5mm, % chord size, x + y-unit=3mm, % chord size, y + name-format=\bfseries, % chord name font + finger-format=\bfseries% + \footnotesize % fingering font +} + +\newsavebox{\Gstd} +\savebox{\Gstd}{ +\chordscheme[ % define the chord + name = G (Sol), % chord name + position = 1, % first fret position + finger = {2/5:2} , % fret, string, finger + finger = {3/6:3} , % fret, string, finger + finger = {3/1:4} , % fret, string, finger + ring = {2,3,4} % open strings +]} + +\newsavebox{\Gbarre} +\savebox{\Gbarre}{ +\chordscheme[ + name = G (Sol) barre, + position = 3, + barre = 1/1-6, % fret, string range + finger = {2/3:2}, + finger = {3/5:3}, + finger = {3/4:4} +]} + +\usebox{\Gstd}\usebox{\Gbarre} + +\end{document}
\ No newline at end of file diff --git a/info/latex4musicians/Figures/gdiagram.tex b/info/latex4musicians/Figures/gdiagram.tex new file mode 100644 index 0000000000..64388f3d42 --- /dev/null +++ b/info/latex4musicians/Figures/gdiagram.tex @@ -0,0 +1,15 @@ +\documentclass{article} +\usepackage{gchords} +\thispagestyle{empty} + +\begin{document} + +\def\numfrets{4} + +\chords{ +\chord{t}{n,p3,p2,n,p1,n}{C} +\chord{t}{n,n,p2,p2,p1,n}{Am} +\chord{t}{x,n,n,p2,p3,p1}{Dm} +} + +\end{document} diff --git a/info/latex4musicians/Figures/glyphs.tex b/info/latex4musicians/Figures/glyphs.tex new file mode 100644 index 0000000000..efde1e7fd2 --- /dev/null +++ b/info/latex4musicians/Figures/glyphs.tex @@ -0,0 +1,13 @@ +\documentclass{article} +\usepackage[minimal]{leadsheets} +\useleadsheetslibraries{musicsymbols} +\useleadsheetslibraries{chords} +\thispagestyle{empty} + +\begin{document} + +\large +\sharp\ \flat\ \trebleclef\ \altoclef\ \bassclef\ \meterC\ +\writechord{Bb7(#9)} + +\end{document} diff --git a/info/latex4musicians/Figures/glyphs_ls.tex b/info/latex4musicians/Figures/glyphs_ls.tex new file mode 100644 index 0000000000..bdd915a7dd --- /dev/null +++ b/info/latex4musicians/Figures/glyphs_ls.tex @@ -0,0 +1,19 @@ +\documentclass{article} +\usepackage[minimal]{leadsheets} +\useleadsheetslibraries{musicsymbols} +\thispagestyle{empty} + +\begin{document} + +Leadsheets makes the music symbol font provided by MusiX\TeX\ +available as text font and then uses it to define a number +of symbols: + +\sharp\ \doublesharp\ \flat\ \doubleflat\ \natural\ +\trebleclef\ \altoclef\ \bassclef\ \meterC\ \allabreve\ +\meter{12}{8}\ \wholerest\ \halfrest\ \quarterrest\ +\eighthrest\ \sixteenthrest\ \Break\ \normalbar\ +\leftrepeat\ \rightrepeat\ \leftrightrepeat\ \doublebar\ +\stopbar + +\end{document} diff --git a/info/latex4musicians/Figures/gtablature.ly b/info/latex4musicians/Figures/gtablature.ly new file mode 100644 index 0000000000..0af7e8c84b --- /dev/null +++ b/info/latex4musicians/Figures/gtablature.ly @@ -0,0 +1,17 @@ +\version "2.18.2" +\header { +tagline = "" % no footer +} + +\paper { left-margin = 0\cm } + +notes = { + \time 3/4 + c4 d e f g a b a b c'2 r4 +} + +\score { + << + \new TabStaff { \notes } + >> +} diff --git a/info/latex4musicians/Figures/gtrcrd.tex b/info/latex4musicians/Figures/gtrcrd.tex new file mode 100644 index 0000000000..b721a927a5 --- /dev/null +++ b/info/latex4musicians/Figures/gtrcrd.tex @@ -0,0 +1,25 @@ +\documentclass{article} +\thispagestyle{empty} +\usepackage{gtrcrd} + +\setlength{\crdheight}{2ex} % reduce spacing +\def\crdfont{\footnotesize \itshape \sffamily} % st chord font +\setlength{\parindent}{0pt} % no indentation + +\begin{document} + +\textbf{Imagine (John Lennon)} + +\emph{Intro, $\times$ 2} + +% if chords overlap, use \hspace: +\C {\hspace{3mm}} \C[maj7] {\hspace{10mm}} \F ~ + +\C Imagine there's \C[maj7] no {\hspace{5mm}} \F heaven + +\C It's easy if \C[maj7] you {\hspace{2mm}} \F try + +\C No hell \C[maj7] below \F us + +\C Above us \C[maj7] only {\hspace{2mm}} \F sky +\end{document} diff --git a/info/latex4musicians/Figures/guitar.tex b/info/latex4musicians/Figures/guitar.tex new file mode 100644 index 0000000000..f5cee20465 --- /dev/null +++ b/info/latex4musicians/Figures/guitar.tex @@ -0,0 +1,20 @@ +\documentclass{article} +\thispagestyle{empty} +\usepackage{guitar} + +\begin{document} + +\begin{guitar} + \textbf{Imagine (John Lennon)} + + \emph{Intro, $\times$ 2} + % use tilde to add some space + [C] ~ [Cmaj7] ~ [F] ~ + % if chords overlap, add | at the end of the chord, like: + [C]Imagine there's [Cmaj7|]{no} [F]heaven + [C]It's easy if [Cmaj7|]{you} [F]try + [C]No hell [Cmaj7|]{below} [F]us + [C]Above us [Cmaj7|]{only} [F]sky +\end{guitar} + +\end{document} diff --git a/info/latex4musicians/Figures/guitartabs.tex b/info/latex4musicians/Figures/guitartabs.tex new file mode 100644 index 0000000000..d9c49f8ef1 --- /dev/null +++ b/info/latex4musicians/Figures/guitartabs.tex @@ -0,0 +1,34 @@ +\documentclass{guitartabs} +\thispagestyle{empty} + +\begin{document} + +\Large + +\begin{tabline}{4}{4}{4}{E,A,D,G,B,e} + % bar 1 + % note 1 of 3, string 5, fret 4, note lenght 1/4 + \notel{1}{3}{5}{3}{4} + % note 2 of 3, string 4, fret 0, note lenght 1/4 + \notel{2}{3}{4}{0}{4} + \notel{3}{3}{4}{2}{4} + % bar 2 + \nextbar + \notel{1}{3}{4}{3}{4} + \notel{2}{3}{3}{0}{4} + \notel{3}{3}{3}{2}{4} + % bar 3 + \nextbar + \notel{1}{3}{2}{0}{4} + \notel{2}{3}{3}{2}{4} + \notel{3}{3}{2}{0}{4} + % bar 4 + \nextbar + \notel{1}{3}{2}{1}{2} + % rests + \restquarter{2}{3} + \restquarter{3}{3} +\end{tabline} + + +\end{document}
\ No newline at end of file diff --git a/info/latex4musicians/Figures/happyb.abc b/info/latex4musicians/Figures/happyb.abc new file mode 100644 index 0000000000..0c649708b5 --- /dev/null +++ b/info/latex4musicians/Figures/happyb.abc @@ -0,0 +1,10 @@ +X: 1 +% T: Happy Birthday +M: 3/4 +L: 1/4 +K: F +% +C/>C/| "F"DCF | "C"E2 C/>C/ | "C7"DCG | "F"F2 C/>C/| +w: Hap-py birth-day to you, hap-py birth-day to you, hap-py +cAF | "Bb"ED B/>B/| "F"AF"C"G | "F"F2z |] +w: birth-day dear Gui-do, hap-py birth-day to you! diff --git a/info/latex4musicians/Figures/jingle.ly b/info/latex4musicians/Figures/jingle.ly new file mode 100644 index 0000000000..cf3fc0fee0 --- /dev/null +++ b/info/latex4musicians/Figures/jingle.ly @@ -0,0 +1,20 @@ +% Twelfth Street Rag + +\version "2.18.2" +\header { tagline = "" } % no footer +\paper { left-margin = 0\cm } + +music = \relative c' { + \time 2/4 \key ees \major + bes16 a bes c bes8-. r8 | bes16 a bes c bes8-. r8 | + bes16 bes8 bes16 c8 d | ees4-. r4 | +} + +\score { + << + \new Staff { \clef "G_8" \music } % sheet music + \new TabStaff { \tabFullNotation \music } % tablature + >> + \layout { } + \midi { \tempo 4 = 128 } +} diff --git a/info/latex4musicians/Figures/julia.abc b/info/latex4musicians/Figures/julia.abc new file mode 100644 index 0000000000..8961eeef4c --- /dev/null +++ b/info/latex4musicians/Figures/julia.abc @@ -0,0 +1,8 @@ +X:63 +T: Julia Delaney's +M: C| +L: 1/8 +R: reel +K: Ddor +|: dcAG ~F2EF|~E2 DE FD D2|dcAG FGAA|Addc d2 fe :| + f2fe fagf |ecgc acgc |f2fe fagf|edcG Add2 :| diff --git a/info/latex4musicians/Figures/kyrie.gabc b/info/latex4musicians/Figures/kyrie.gabc new file mode 100644 index 0000000000..2b9051c917 --- /dev/null +++ b/info/latex4musicians/Figures/kyrie.gabc @@ -0,0 +1,5 @@ +name:Kyrie XVII; +%% +(c4)KY(f)ri(gfg)e(h.) *() +e(ixjvIH'GhvF'E)lé(ghg')i(g)son.(f.) +<i>bis</i>(::) diff --git a/info/latex4musicians/Figures/kyrie.tex b/info/latex4musicians/Figures/kyrie.tex new file mode 100644 index 0000000000..3a1c222ea7 --- /dev/null +++ b/info/latex4musicians/Figures/kyrie.tex @@ -0,0 +1,10 @@ +\documentclass{article} +\thispagestyle{empty} + +\usepackage[autocompile]{gregoriotex} + +\begin{document} + +\gregorioscore{kyrie} + +\end{document} diff --git a/info/latex4musicians/Figures/leadsheets.tex b/info/latex4musicians/Figures/leadsheets.tex new file mode 100644 index 0000000000..f70ccbdea3 --- /dev/null +++ b/info/latex4musicians/Figures/leadsheets.tex @@ -0,0 +1,22 @@ +\documentclass{article} +\usepackage[songs]{leadsheets} +\thispagestyle{empty} + +\begin{document} + +\begin{song}{title={Imagine}, music={John Lennon}} +\begin{verse} + + Intro, $\times$ 2\\ + \chord{C}~ \chord{Cmaj7}~ \chord{F}~ + + % The ^ character is a shortcut for \chord + \chord{C}Imagine there's ^{Cmaj7}no ^{F}heaven \\ + ^{C}It's easy if ^{Cmaj7}you ^{F}try \\ + ^{C}No hell ^{Cmaj7}below ^{F}us \\ + ^{C}Above us ^{Cmaj7}only ^{F}sky \\ + +\end{verse} +\end{song} + +\end{document} diff --git a/info/latex4musicians/Figures/lilyglyphs.tex b/info/latex4musicians/Figures/lilyglyphs.tex new file mode 100644 index 0000000000..580f4f107b --- /dev/null +++ b/info/latex4musicians/Figures/lilyglyphs.tex @@ -0,0 +1,21 @@ +\documentclass{article} +\usepackage{fontspec} +\usepackage{lilyglyphs} +\thispagestyle{empty} + +\begin{document} + +Lilyglyphs makes the music symbol font provided by LilyPond available +as text font and then uses it to define a number of symbols, some +\clefGInline\ of which \clefCInline\ can be used \clefFInline\ inline: + +clefs:~ \clefG\ \clefC\ \clefF\ ~time signatures:~ +\lilyTimeC\ \lilyTimeCHalf\ \lilyTimeSignature{7}{8}\ +~accidentals:~ \sharp\ \flat\ \natural\ \doublesharp\ \flatflat\ +~rests:~ \wholeNoteRest\ \halfNoteRest\ \crotchetRest\ +~notes:~ \wholeNote\ \halfNote\ \halfNoteDown\ \quarterNote\ +\quarterNoteDotted\ +~and much, much more. + + +\end{document} diff --git a/info/latex4musicians/Figures/lilytab.ly b/info/latex4musicians/Figures/lilytab.ly new file mode 100644 index 0000000000..5c667755e4 --- /dev/null +++ b/info/latex4musicians/Figures/lilytab.ly @@ -0,0 +1,15 @@ +\version "2.18.2" +\header { tagline = "" } % no footer +\paper { left-margin = 0\cm } + +music = { + \time 3/4 + c4 d e f g a b a b c'2 r4 \bar "|." +} + +\score { + << + \new Staff { \clef "G_8" \music } % sheet music + \new TabStaff { \tabFullNotation \music } % tablature + >> +} diff --git a/info/latex4musicians/Figures/mtxlatex.sty b/info/latex4musicians/Figures/mtxlatex.sty new file mode 100644 index 0000000000..6061de4b40 --- /dev/null +++ b/info/latex4musicians/Figures/mtxlatex.sty @@ -0,0 +1,91 @@ +% mtxlatex.sty: Macro package to make music scores using Latex +% or produce LaTeX documents containing music examples +% Dirk Laurie dlaurie@na-net.ornl.gov 2001-12-27 +% Update: see \mtxdate below +% Some comments on usage appear at the bottom + +\ifx\mtxlatex\undefined\else\endinput\fi + +\def\MTx{\mbox{\textbf{\textsl{M-Tx}}}} +\def\PMX{\textbf{PMX}} +\def\musixlyr{\texttt{\textbf{musixlyr}}} + +\input musixtex +\input musixltx + +% Preamble TeX commands for documents that contain .ex files +% generated by M-Tx/PMX + +\def\mtxlatex{ +\input musixmad +\def\mtxversion{mtxLaTeX} +\def\mtxdate{<16 March 2005>} +\input mtx +\renewcommand{\BIGfont}{\Huge\bfseries} +\renewcommand{\Bigfont}{\Large\bfseries} +% Kill the PMX definition of \parskip. +\parskip=0pt plus 1pt +} +% Extra vertical space evenly spread between systems +\renewcommand\alaligne{\stoppiece\vfill\contpiece} +\def\scoreheight{\textheight 260mm} +\def\scorewidth{\textwidth 193mm} + +\newcommand{\startscore}{\let\SmuF\startmuflex\let\EmuF\endmuflex +\scorewidth\scoreheight +\oddsidemargin -15mm\evensidemargin -15mm\topmargin -20mm +\ifx\mysizes\undefined\else\mysizes\fi +\let\startmuflex\relax\let\endmuflex\relax\let\bye\relax% +\let\nopagenumbers\relax\musicparskip} +\newcommand\headingandcontents[1]{\markboth{#1}{#1}\addcontentsline{toc} + {section}{\protect\numberline{}{#1}}} + +% The environment 'Score' is suitable for scores submitted to the +% Werner Icking music archive +\newenvironment{Score}[2]{\headingandcontents{#1} +\startscore\input #2 +}{\markboth{}{}} + +% The environment 'score' requires you to do your own input +\newenvironment{score}{\startscore}{} + +\newenvironment{excerpts}{ +\newlength\keepOSM\setlength\keepOSM\oddsidemargin +\newlength\keepTM\setlength\keepTM\topmargin +\global\setlength\oddsidemargin{-13mm} \global\setlength\topmargin{-20mm} +\let\startmuflex\relax\let\endmuflex\relax +\let\nopagenumbers\relax \let\bye\relax \let\vfill\relax \let\eject\relax +\musicparskip +\renewcommand{\BIGfont}{\Large\bfseries} +\renewcommand{\Bigfont}{\large\bfseries} +}{\global\setlength\oddsidemargin\keepOSM\global\setlength\topmargin\keepTM} + +\newenvironment{mus}% +{\begin{minipage}{260mm}\startscore\musicparskip}% +{\assignlyrics1{}\assignlyrics2{}% +\gdef\mtxTitle{}\end{minipage}} + +\def\example#1#2#3#4#5#6#7#8{ +\noindent\begin{minipage}[t]{#3} +\begin{mus} \vskip #6 +\input{#1.tex} +\end{mus} +\end{minipage}\hskip #4 +\begin{minipage}[#7]{#5} \vskip #8 +\verbatiminput{#1.#2} +\end{minipage}} + +\endinput + +============================================================================ + +\example{basename}{ext} + {musicwidth}{separation}{codewidth} + {musicvskip}{alignment}{codevskip} + +Set music example together with M-Tx (or other) code. + +basename - musicfile is basename.tex +ext - codefile is basename.ext +separation - distance between music and code minipages +alignment - c, t or b (for code minipage) diff --git a/info/latex4musicians/Figures/musicography.tex b/info/latex4musicians/Figures/musicography.tex new file mode 100644 index 0000000000..4ac88892ea --- /dev/null +++ b/info/latex4musicians/Figures/musicography.tex @@ -0,0 +1,18 @@ +\documentclass{article} +\usepackage{musicography} +\thispagestyle{empty} % no page number + +\begin{document} + +Musicography makes the music symbol font provided by MusiX\TeX\ +available as text font and then uses it to define a number +of symbols: + +\musFlat\ \musSharp\ \musNatural\ \musDoubleFlat\ \musDoubleSharp\ +\musWhole\ \musHalf\ \musQuarter\ \musEighth\ \musSixteenth\ +\musWholeDotted\ \musHalfDotted\ \musQuarterDotted\ +\musEighthDotted\ \musSixteenthDotted\ +\meterC\ \meterCutC\ \meterCThree\ \meterCThreeTwo\ \meterCZ\ +\musMeter{7}{8} + +\end{document}
\ No newline at end of file diff --git a/info/latex4musicians/Figures/musixguit.tex b/info/latex4musicians/Figures/musixguit.tex new file mode 100644 index 0000000000..aa4497a478 --- /dev/null +++ b/info/latex4musicians/Figures/musixguit.tex @@ -0,0 +1,25 @@ +\documentclass{article} +\usepackage{musixguit} +\thispagestyle{empty} + +\begin{document} + +\textbf{Imagine (John Lennon)} + +\begin{song} + +\emph{Intro, $\times$ 2} + +\chord{C} ~ \chord{Cmaj7} {\hspace{8mm}} \chord{F} + +\chord{C}Imagine there's \chord{Cmaj7}no~~~ \chord{F}heaven + +\chord{C}It's easy if \chord{Cmaj7}you~~ \chord{F}try + +\chord{C}No hell \chord{Cmaj7}below \chord{F}us + +\chord{C}Above us \chord{Cmaj7}only~ \chord{F}sky + +\end{song} + +\end{document} diff --git a/info/latex4musicians/Figures/musixtab.tex b/info/latex4musicians/Figures/musixtab.tex new file mode 100644 index 0000000000..5505918de2 --- /dev/null +++ b/info/latex4musicians/Figures/musixtab.tex @@ -0,0 +1,256 @@ +% Extension for MusiXTeX - Guitar Tablatures +% +% This file contains some macros which extend MusiXTeX with some +% common notations for guitar tablatures. It is recommended that +% you use a 6-line system (assuming a 6-string guitar) and increase +% the space between its staves, e.g.: +% +% \setlines16 +% \setsize1\largevalue +\makeatletter + +% Clef symbol that displays "TAB" vertically (looks best with +% \smallmusicsize) +\def\tabclefsymbolsmall{\vtop to .75\Interligne{% + \vss% + \hbox to 2.5\Interligne{\hss\tinytype\bf T}% + \vskip -1\Interligne + \hbox to 2.5\Interligne{\hss\tinytype\bf A}% + \vskip -1\Interligne + \hbox to 2.5\Interligne{\hss\tinytype\bf B}}} + +% Display guitar string numbers on staves +% +% Usage: \str{<string>}{<number>} +% <string>: string number between 1 and 6 +% <number>: any number (or other text) to put onto the string +% (usually a fret number between 0 and 24) +% +% \str inserts horizontal space after the number (like other +% MusiXTeX notes). To insert a non-spacing string note, use +% \zstr. +\def\strerr{\errmessage{str macro requires a string number from 1--6}} +\def\zstr#1#2{% + \ifcase#1\relax\strerr + \or\def\@strnr{-1}% + \or\def\@strnr{1}% + \or\def\@strnr{3}% + \or\def\@strnr{5}% + \or\def\@strnr{7}% + \or\def\@strnr{9}% + \else\strerr + \fi + \cchar\@strnr{\tinytype\bf\roffset{.35}{#2}}} +\def\str#1#2{\zstr{#1}{#2}\sk} + +% Insert a Palm Mute indicator (P.M.) starting at the current position. +% +% Usage: \palmmute{<pitch>}{<length>} +% <pitch>: vertical level at which the palm mute is placed +% <length>: length of the line in multiples of \noteskip +% +% This will insert a palm mute indicator looking similar to this: +% P.M.-----------| +% If <length> is sufficiently small, no line will be inserted, just +% P.M. +\newtoks\@pmstring +\chardef\@pmlinechar=45 +\chardef\@pmendchar=21 +\newdimen\@pmboxminwd +\@pmboxminwd=2.3em +\def\palmmute{\check@staff + \n@v\@pmlinechar \n@ii\@pmendchar\global\@pmstring={P.M.}\fi + \@drawpm} +\def\@drawpm#1#2{\check@staff + \y@v#2\noteskip% + \ifnum #2<2 + \zcharnote{#1}{\loff{\hbox\@to\@pmboxminwd{% + \@pminit}}}% + \else + \zcharnote{#1}{\loff{\hbox\@to\y@v{% + \@pminit\xleaders\hbox{\char\n@v}\hfill\mxsps\char\n@ii}}}% + \fi\fi} +\def\@pminit{% + \setbox\w@rkbox\hbox{\tinytype\the\@pmstring}% + \box\w@rkbox} + +% Insert a Hammer On or Pull Off symbol. +% +% Usage: \hammeron{<pitch>}{<offset>} +% \pulloff{<pitch>}{<offset>} +% <pitch>: vertical level at which the symbol is placed +% <offset>: horizontal offset from the current position +% in note head widths +% +% \hammeron will insert an "H", while \pulloff will insert +% a "P". +\def\hammeron#1#2{% + \ccharnote{#1}{\tinytype\roffset{#2}{H}}} +\def\pulloff#1#2{% + \ccharnote{#1}{\tinytype\roffset{#2}{P}}} + +% Insert a Natural Harmonics or Artifical Harmonics +% indicator. +% +% Usage: \harmonics{<pitch>}{<offset>} +% \aharmonics{<pitch>}{<offset>} +% <pitch>: vertical level at which the symbol is placed +% <offset>: horizontal offset from the current position +% in note head widths +% +% \harmonics will insert "Harm.", while \aharmonics will +% insert "A.H.". +\def\harmonics#1#2{% + \ccharnote{#1}{\tinytype\roffset{#2}{Harm.}}} +\def\aharmonics#1#2{% + \ccharnote{#1}{\tinytype\roffset{#2}{A.H.}}} + +% Insert a bend indicator at the current position. +% +% Usage: \bendhalf{<pitch>}{<textpitch>}{<offset>} +% \bendfull{<pitch>}{<textpitch>}{<offset>} +% <pitch>: vertical level at which the lower end of the +% bend curve is placed +% <textpitch>: vertical level at which the text is placed +% <offset>: horizontal offset from the current position +% in note head widths +% +% \bendhalf uses the text "1/2", while \bendfull uses the +% text "Full". +% +% There are more commands like \Bendhalf, \Bendfull, and +% \Bend, which allow full control over the curve parameters, +% text etc. However, they should rarely be necessary. +\newtoks\@bendslurid +\newtoks\@bendstring +\newtoks\@bendho +\newtoks\@bendvo +\newtoks\@bendht +\newtoks\@bendvt +\newtoks\@bendcur +\newtoks\@bendang +\@bendslurid={14} + +\def\@rstbendho{\global\@bendho={2}} +\def\@rstbendvo{\global\@bendvo={2}} +\def\@rstbendht{\global\@bendht={4}} +\def\@rstbendvt{\global\@bendvt={6}} +\def\@rstbendcur{\global\@bendcur={-.4}} +\def\@rstbendang{\global\@bendang={.2}} +\def\@rstbend{\@rstbendho\@rstbendvo\@rstbendht\@rstbendvt\@rstbendcur\@rstbendang} + +\def\@setbendstring#1{\global\@bendstring={#1}} +\def\@setbendho#1{\global\@bendho={#1}} +\def\@setbendvo#1{\global\@bendvo={#1}} +\def\@setbendht#1{\global\@bendht={#1}} +\def\@setbendvt#1{\global\@bendvt={#1}} +\def\@setbendcur#1{\global\@bendcur={#1}} +\def\@setbendang#1{\global\@bendang={#1}} + +\def\bendhalf{\check@staff + \@rstbend\@setbendstring{1/2}\fi + \@drawbend} +\def\Bendhalf#1#2{\check@staff + \@rstbend\@setbendstring{1/2}% + \@setbendht{#1}\@setbendvt{#2}\fi + \@drawbend} +\def\bendfull{\check@staff + \@rstbend\@setbendstring{Full}\fi + \@drawbend} +\def\Bendfull#1#2{\check@staff + \@rstbend\@setbendstring{Full}% + \@setbendht{#1}\@setbendvt{#2}\fi + \@drawbend} +\def\Bend#1#2#3#4#5#6#7{\check@staff + \@rstbend\@setbendstring{#1}% + \@setbendho{#2}\@setbendvo{#3}\@setbendht{#4}% + \@setbendvt{#5}\@setbendcur{#6}\@setbendang{#7}\fi + \@drawbend} +\def\@drawbend#1#2#3{\check@staff + \roffset{#3}{\iSlur{\the\@bendslurid}{#1}{\the\@bendvo}{\the\@bendho}% + \tSlur{\the\@bendslurid}{#1}{\the\@bendvt}{\the\@bendht}{\the\@bendcur}{\the\@bendang}% + \ccharnote{#2}{\tinytype\roffset{\the\@bendho}{\the\@bendstring}}}% + \fi} + +% Insert a slide indicator at the current position. +% +% Usage: \gslide{<pitch>}{<length>}{<slope>} +% \gslidet{<pitch>}{<length>}{<slope>}{<textpitch>}{<textoffset>} +% \gSlide{<pitch>}{<voffset>}{<length>}{<slope>} +% \gSlidet{<pitch>}{<voffset>}{<length>}{<slope>}{<textpitch>}{<textoffset>} +% <pitch>: vertical level at which the beginning of the +% line is placed +% <voffset>: additional vertical offset (for fine-tuning +% the line position) +% <length>: length of the line (values smaller than 2 +% may cause weird behavior) +% <slope>: slope of the line (should be in [-20,20] range) +% <textpitch>: vertical level at which the text is placed +% <textoffset>: horizontal offset from the current position +% in note head widths for the text +% +% These commands insert a straight line. The text versions +% additionally insert the text "sl." in italics. +\newtoks\@gslidestring +\newtoks\@gslideho +\newtoks\@gslidevp +\newtoks\@gslidevo +\newtoks\@gslidelen +\newtoks\@gslideslp +\newtoks\@gslidestrho +\newtoks\@gslidestrvp + +\def\@rstgslideho{\global\@gslideho={1.5}} +\def\@rstgslidevp{\global\@gslidevp={m}} +\def\@rstgslidevo{\global\@gslidevo={0}} +\def\@rstgslidelen{\global\@gslidelen={3}} +\def\@rstgslideslp{\global\@gslideslp={-10}} +\def\@rstgslidestrho{\global\@gslidestrho={1.8}} +\def\@rstgslidestrvp{\global\@gslidestrvp={p}} +\def\@rstgslide{\@rstgslideho\@rstgslidevp\@rstgslidevo\@rstgslidelen\@rstgslideslp\@rstgslidestrho\@rstgslidestrvp} + +\def\@setgslidestring#1{\global\@gslidestring={#1}} +\def\@setgslideho#1{\global\@gslideho={#1}} +\def\@setgslidevp#1{\global\@gslidevp={#1}} +\def\@setgslidevo#1{\global\@gslidevo={#1}} +\def\@setgslidelen#1{\global\@gslidelen={#1}} +\def\@setgslideslp#1{\global\@gslideslp={#1}} +\def\@setgslidestrho#1{\global\@gslidestrho={#1}} +\def\@setgslidestrvp#1{\global\@gslidestrvp={#1}} + +\def\gslide#1#2#3{\check@staff + \@rstgslide\@setgslidevp{#1}% + \@setgslidelen{#2}\@setgslideslp{#3}\fi + \@drawgslide} +\def\gslidet#1#2#3#4#5{\check@staff + \@rstgslide\@setgslidevp{#1}% + \@setgslidelen{#2}\@setgslideslp{#3}% + \@setgslidestrvp{#4}\@setgslidestrho{#5}\@setgslidestring{sl.}\fi + \@drawgslide\@drawgslidestr} +\def\gslideT#1#2#3#4#5#6{\check@staff + \@rstgslide\@setgslidevp{#1}% + \@setgslidelen{#2}\@setgslideslp{#3}% + \@setgslidestrvp{#4}\@setgslidestrho{#5}\@setgslidestring{#6}\fi + \@drawgslide\@drawgslidestr} +\def\gSlide#1#2#3#4{\check@staff + \@rstgslide\@setgslidevp{#1}\@setgslidevo{#2}% + \@setgslidelen{#3}\@setgslideslp{#4}\fi + \@drawgslide} +\def\gSlidet#1#2#3#4#5#6{\check@staff + \@rstgslide\@setgslidevp{#1}\@setgslidevo{#2}% + \@setgslidelen{#3}\@setgslideslp{#4}% + \@setgslidestrvp{#5}\@setgslidestrho{#6}\@setgslidestring{sl.}\fi + \@drawgslide\@drawgslidestr} +\def\gSlideT#1#2#3#4#5#6#7{\check@staff + \@rstgslide\@setgslidevp{#1}\@setgslidevo{#2}% + \@setgslidelen{#3}\@setgslideslp{#4}% + \@setgslidestrvp{#5}\@setgslidestrho{#6}\@setgslidestring{#7}\fi + \@drawgslide\@drawgslidestr} +\def\@drawgslide{\check@staff + \zcharnote{\the\@gslidevp}{\roffset{\the\@gslideho}{\varline{\the\@gslidevo}{\the\@gslidelen\qn@width}{\the\@gslideslp}}}% + \fi} +\def\@drawgslidestr{\check@staff + \zcharnote{\the\@gslidestrvp}{\tinytype\it\roffset{\the\@gslidestrho}{\the\@gslidestring}}% + \fi} + +\makeatother diff --git a/info/latex4musicians/Figures/notes.abc b/info/latex4musicians/Figures/notes.abc new file mode 100644 index 0000000000..6414103388 --- /dev/null +++ b/info/latex4musicians/Figures/notes.abc @@ -0,0 +1,5 @@ +X: 1 +L: 1/4 +K: C +% +CEGc | diff --git a/info/latex4musicians/Figures/pdfcrop.sh b/info/latex4musicians/Figures/pdfcrop.sh new file mode 100644 index 0000000000..87430839bf --- /dev/null +++ b/info/latex4musicians/Figures/pdfcrop.sh @@ -0,0 +1,38 @@ +#!/bin/sh + +# pdfcrop.sh +# Guido Gonzato, PhD. GPL 2 or later. + +MYSELF=$(basename $0) + +if [ $# -eq 0 ] ; then + printf "Usage: ${MYSELF} <file.pdf>\n" + printf "This script uses 'gs' to crop a one-page pdf file.\n\n" + exit 1 +fi + +# GhostScript for Windows must be installed in C:\Gs +# GS=/c/gs/gs9.26/bin/gswin64c.exe +# GNU/Linux and others: +GS=/usr/bin/gs + +INPUT=$1 +PDF=$(basename $1 .pdf) +OUTPUT=$PDF-crop.pdf +GSOPTS="-q -sDEVICE=bbox -dBATCH -dNOPAUSE" + +# find out the bounding box +$GS $GSOPTS $INPUT 2>&1 | grep "%%B" > $PDF.bbox + +# read bbox coordinates in variables +read tmp X1 Y1 X2 Y2 < $PDF.bbox + +# write the output, cropped to bbox +$GS -q -o $OUTPUT \ + -sDEVICE=pdfwrite \ + -c "[ /CropBox [$X1 $Y1 $X2 $Y2] /PAGES pdfmark" \ + -f $INPUT + +/bin/rm -f $PDF.bbox + +echo "$INPUT cropped to $OUTPUT" diff --git a/info/latex4musicians/Figures/sample-abc-all.tex b/info/latex4musicians/Figures/sample-abc-all.tex new file mode 100644 index 0000000000..505c2cf9ff --- /dev/null +++ b/info/latex4musicians/Figures/sample-abc-all.tex @@ -0,0 +1,132 @@ +% typeset with: +% pdflatex -shell-escape sample-abc-all.tex + +\documentclass{article} +\thispagestyle{empty} +\usepackage[generate,ps2eps]{abc} + +% --- M-Tx support +\newenvironment{mtx}[1][] +{\renewcommand{\normalabcoutputfile}{out-mtx}% +\abc[program=musixtex,options={-g},extension=mtx,#1]} +{\endabc} +\newcommand{\mtxinput}[2][]{% +\abcinput[program=musixtex,options={-g},extension=mtx,#1]{#2}} + +% --- PMW support +\newenvironment{pmw}[1][] +{\renewcommand{\normalabcoutputfile}{out-pmw}% +\abc[program=pmw,options={-includefont},extension=pmw,#1]} +{\endabc} +\newcommand{\pmwinput}[2][]{% +\abcinput[program=pmw,options={-includefont},extension=pmw,#1]{#2}} + +% --- LilyPond support +% !!! BUG: the LilyPond source must begin with a \null command +\newenvironment{lily}[1][] +{\renewcommand{\normalabcoutputfile}{out-lily}% +\abc[program=lilypond,options={-d backend=eps},extension=ly,#1]} +{\endabc} +\newcommand{\lilyinput}[2][]{% +\abcinput[program=lilypond,options={--ps},extension=ly,#1]{#2}} + +% --- MUP support +\newenvironment{mup}[1][] +{\renewcommand{\normalabcoutputfile}{out-mup}% +\abc[program=mup,options={-F},extension=mup,#1]} +{\endabc} +\newcommand{\mupinput}[2][]{% +\abcinput[program=mup,options={-F},extension=mup,#1]{#2}} + +% --- ABC must be redefined +\newenvironment{ABC}[1][] +{\renewcommand{\normalabcoutputfile}{out-ABC}% +\abc[program=abcm2ps,options={-O=},extension=abc,#1]} +{\endabc} +\newcommand{\ABCinput}[2][]{% +\abcinput[program=abcm2ps,options={-O=},extension=abc,#1]{#2}} + +\begin{document} + +This document includes music excerpts written in several formats. It +uses \texttt{abc.sty} and defines new environments. + +This is a short piece, typeset by M-Tx: + +\begin{mtx} +Title: \bigtype Music sample in M-Tx +Style: Solo +Meter: C +Width: 160mm + +c4 d8 e f g a b | c4 b8 a g f e d | c8 g+ e g c- g+ e g | c4- e c r | +\end{mtx} + +The same piece, typeset by LilyPond: + +\begin{lily} + % twice - it's required to avoid a bug +\version "2.18.2" +\version "2.18.2" + +\header { + title = "Music sample in LilyPond" + tagline = "" % no footer +} + +\relative c' { + \time 4/4 + \clef treble + c4 d8 e f8 g a b | c4 b8 a g8 f e d | + c8 g' e g c,8 g' e g | c,4 e c r \bar "|." +} +\end{lily} + +The same piece, typeset by PMW: + +\begin{pmw} +Heading "|Music sample in PMW" +Key C +Time 4/4 + +[stave 1 treble 1] +c d- e-; f-g-a-b-; | c' b- a-; g-f-e-d-; | +c-g-e-g-; c-g-e-g-; |c e c r | +[endstave] +\end{pmw} + +The same piece, typeset by MUP: + +\begin{mup} +// music sample in MUP notation + +header + title "Music sample in MUP" + +score + time=4/4 + +music + 1: 4c; 8d bm; e ebm; f bm; g; a; b ebm; + bar + 1: 4c+; 8b bm; a ebm; g bm; f; e; d ebm; + bar + 1: 8c bm; g; e; g ebm; c bm; g; e; g ebm; + bar + 1: 4c; e; c; r; + endbar +\end{mup} + +The same piece, typeset by abcm2ps: + +\begin{ABC} +X: 1 +T: Music sample in ABC +M: 4/4 +L: 1/4 +K: C +% +C D/E/ F/G/A/B/|c B/A/ G/F/E/D/|C/G/E/G/ C/G/E/G/|CECz|] +\end{ABC} + +\end{document} diff --git a/info/latex4musicians/Figures/sample-abc.abc b/info/latex4musicians/Figures/sample-abc.abc new file mode 100644 index 0000000000..1f178649c4 --- /dev/null +++ b/info/latex4musicians/Figures/sample-abc.abc @@ -0,0 +1,7 @@ +X: 1 +T: Music sample in ABC +M: C +L: 1/4 +K: C +% +C D/E/ F/G/A/B/|c B/A/ G/F/E/D/|C/G/E/G/ C/G/E/G/|CECz|] diff --git a/info/latex4musicians/Figures/sample-abc.tex b/info/latex4musicians/Figures/sample-abc.tex new file mode 100644 index 0000000000..fb19807911 --- /dev/null +++ b/info/latex4musicians/Figures/sample-abc.tex @@ -0,0 +1,27 @@ +\documentclass{article} +\usepackage[generate,ps2eps]{abc} +\thispagestyle{empty} + +\begin{document} + +This is an Irish reel: + +\begin{abc}[name=julia,program={abcm2ps -O=}] +X:63 +T: Julia Delaney's +M: C| +L: 1/8 +R: reel +K: Ddor +|: dcAG ~F2EF|~E2 DE FD D2|dcAG FGAA|Addc d2 fe :| + f2fe fagf |ecgc acgc |f2fe fagf|edcG Add2 :| +\end{abc} + +This is an Irish polka, slighly smaller: + +\abcinput[program={abcm2ps -O=},width=0.9\abcwidth] +{breeches} + +End of document. + +\end{document} diff --git a/info/latex4musicians/Figures/sample-all.tex b/info/latex4musicians/Figures/sample-all.tex new file mode 100644 index 0000000000..507de59454 --- /dev/null +++ b/info/latex4musicians/Figures/sample-all.tex @@ -0,0 +1,36 @@ +\documentclass{article} +\thispagestyle{empty} +\usepackage[generate,ps2eps]{abc} + +% --- M-Tx support +\newenvironment{mtx}[1][] +{\renewcommand{\normalabcoutputfile}{out-mtx}% +\abc[program=musixtex,options={-g},extension=mtx,#1]} +{\endabc} +\newcommand{\mtxinput}[2][]{% +\abcinput[program=musixtex,options={-g},extension=mtx,#1]{#2}} + +% --- PMW support +\newenvironment{pmw}[1][] +{\renewcommand{\normalabcoutputfile}{out-pmw}% +\abc[program=pmw,options={-includefont},extension=pmw,#1]} +{\endabc} +\newcommand{\pmwinput}[2][]{% +\abcinput[program=pmw,options={-includefont},extension=pmw,#1]{#2}} + +\begin{document} + +This document includes music excerpts written in different formats. It +uses \texttt{abc.sty} and defines new environments. + +This is a short piece, typeset by M-Tx: + +\mtxinput{sample-mtx} + +The same piece, typeset by PMW: + +\pmwinput{sample-pmw} + +End of document. + +\end{document} diff --git a/info/latex4musicians/Figures/sample-includeall.tex b/info/latex4musicians/Figures/sample-includeall.tex new file mode 100644 index 0000000000..1db830dd09 --- /dev/null +++ b/info/latex4musicians/Figures/sample-includeall.tex @@ -0,0 +1,81 @@ +% typeset with: +% pdflatex -shell-escape sample-example.tex + +\documentclass{article} +\thispagestyle{empty} +\usepackage[generate,ps2eps]{abc} + +% --- M-Tx support +% https://ctan.org/pkg/m-tx + +\newcommand{\mtxinput}[2][]{% +\abcinput[program=musixtex,options={-g},extension=mtx,#1]{#2}} + +% --- PMW support +% http://people.ds.cam.ac.uk/ph10/pmw.html + +\newcommand{\pmwinput}[2][]{% +\abcinput[program=pmw,options={-includefont},extension=pmw,#1]{#2}} + +% --- LilyPond support +% http://lilypond.org/ + +\newcommand{\lilyinput}[2][]{% +\abcinput[program=lilypond,options={-d backend=eps},extension=ly,#1]{#2}} + +% --- MUP support +% http://arkkra.com/ + +\newcommand{\mupinput}[2][]{% +\abcinput[program=mup,options={-F},extension=mup,#1]{#2}} + +% --- ABC is supported by default + +\begin{document} + +This document includes music excerpts written in several formats. It +uses \texttt{abc.sty} and defines new environments. + +\bigskip + +This is a short piece, typeset by M-Tx: + +\medskip + +\mtxinput{sample-mtx} + +\medskip + +The same piece, typeset by LilyPond: + +\medskip + +\lilyinput{sample-lilypond} + +\medskip + +The same piece, typeset by PMW: + +\medskip + +\pmwinput{sample-pmw} + +\medskip + +The same piece, typeset by MUP: + +\medskip + +\mupinput{sample-mup} + +\medskip + +The same piece, typeset by abcm2ps: + +\medskip + +\abcinput[program=abcm2ps,options={-c -O=},extension=abc]{sample-abc} + +\end{document} + +% End of file `sample-includeall.tex'. diff --git a/info/latex4musicians/Figures/sample-latexmtx.ltx b/info/latex4musicians/Figures/sample-latexmtx.ltx new file mode 100644 index 0000000000..8dcd97c493 --- /dev/null +++ b/info/latex4musicians/Figures/sample-latexmtx.ltx @@ -0,0 +1,23 @@ +\documentclass[12pt]{article} +\usepackage{mtxlatex} % usually not installed +\thispagestyle{empty} + +\mtxlatex + +% compile with: +% musixtex sample-mtx scale sample-latexmtx.ltx + +\begin{document} + +This \LaTeX\ document includes music written in M-Tx. The +\texttt{mus} environment includes music inline: +\begin{mus} \input{scale.tex} \end{mus} , while the +\texttt{excerpts} environment is used for longer excerpts: + +\medskip + +\begin{excerpts} + \input{sample-mtx.tex} +\end{excerpts} + +\end{document} diff --git a/info/latex4musicians/Figures/sample-lilybook.lytex b/info/latex4musicians/Figures/sample-lilybook.lytex new file mode 100644 index 0000000000..61c64df467 --- /dev/null +++ b/info/latex4musicians/Figures/sample-lilybook.lytex @@ -0,0 +1,29 @@ +\documentclass{article} +\thispagestyle{empty} + +\begin{document} + +This is a LilyPond snippet \begin{lilypond} {c' e' g'} +\end{lilypond} embedded in the \LaTeX{} source. + +This is another LilyPond excerpt that uses the \texttt{lilypond} +environment: + +\medskip + +\begin{lilypond} + \score { + \relative c' { + \time 4/4 + \clef treble + c4 d8 e f8 g a b | c4 b8 a g8 f e d | + c8 g' e g c,8 g' e g | c,4 e c r \bar "|." + } + } % end of score +\end{lilypond} + +\medskip + +End of document. + +\end{document} diff --git a/info/latex4musicians/Figures/sample-lilypond.ly b/info/latex4musicians/Figures/sample-lilypond.ly new file mode 100644 index 0000000000..82ee67907f --- /dev/null +++ b/info/latex4musicians/Figures/sample-lilypond.ly @@ -0,0 +1,17 @@ +% music sample in LilyPond notation + +\version "2.18.2" + +\header { + title = "Music sample in LilyPond" + tagline = "" % no footer +} + +\paper { left-margin = 0\cm } + +\relative c' { + \time 4/4 + \clef treble + c4 d8 e f8 g a b | c4 b8 a g8 f e d | + c8 g' e g c,8 g' e g | c,4 e c r \bar "|." +} diff --git a/info/latex4musicians/Figures/sample-lyluatex.tex b/info/latex4musicians/Figures/sample-lyluatex.tex new file mode 100644 index 0000000000..410380d6e4 --- /dev/null +++ b/info/latex4musicians/Figures/sample-lyluatex.tex @@ -0,0 +1,30 @@ +\documentclass{article} +\usepackage{lyluatex} +\thispagestyle{empty} + +\begin{document} + +This is a LilyPond snippet \lilypond{c' e' g'} embedded in the text +using the \verb|\lilypond| command. + +This is another LilyPond excerpt that uses the \texttt{lilypond} +environment: + +\medskip + +\begin{lilypond} + \score { + \relative c' { + \time 4/4 + \clef treble + c4 d8 e f8 g a b | c4 b8 a g8 f e d | + c8 g' e g c,8 g' e g | c,4 e c r \bar "|." + } + } % end of score +\end{lilypond} + +\medskip + +End of document. + +\end{document} diff --git a/info/latex4musicians/Figures/sample-mlatex.tex b/info/latex4musicians/Figures/sample-mlatex.tex new file mode 100644 index 0000000000..2837c85069 --- /dev/null +++ b/info/latex4musicians/Figures/sample-mlatex.tex @@ -0,0 +1,38 @@ +\documentclass{article} +\usepackage{musixtex} +\thispagestyle{empty} + +\begin{document} + +A short music excerpt in MusiX\TeX: + +\medskip + +\begin{music} + \smallmusicsize + \instrumentnumber{1} + \setstaffs1{1} + \generalmeter{\meterC} + \nobarnumbers + \startextract + % bar 1 + \Notes \qu c \en % C + \notes \ibu1d2\qb1d\tbu1\qb1e \en % beamed DE + \notes \ibu1g2\qb1f\qb1g% + \qb1{'a}\tbu1\qb1b \en % beamed FGAB + \bar % bar 2 + \Notes \ql{'c} \en % c + \notes \ibu1{'b}{-3}% % beam slope + \qb1b\tbu1\qb1a \en % beamed BA + \notes \ibu1{g}{-3}% + \qb1g\qb1f\qb1e\tbu1\qb1d \en % beamed GFED + \bar % bar 3 + \notes \ibu1f0\qb1c\qb1g\qb1e\tbu1\qb1g% % beamed CGEG + \ibu1f0\qb1c\qb1g\qb1e\tbu1\qb1g \en % beamed CGEG + \bar % bar 4 + \Notes \qu c\qu e\qu c\qp \en % CEC + \endextract + +\end{music} + +\end{document} diff --git a/info/latex4musicians/Figures/sample-mtex.tex b/info/latex4musicians/Figures/sample-mtex.tex new file mode 100644 index 0000000000..3cffaf028f --- /dev/null +++ b/info/latex4musicians/Figures/sample-mtex.tex @@ -0,0 +1,19 @@ +% bare MusiXTeX example + +\input musixtex +\nopagenumbers + +\setstaffs1{1} % a single stave +\setclef1{\treble} % with a treble clef +\generalmeter{\meterC} % common time +\nobarnumbers % what it says +\startextract % a short music piece + % \qu = quarter note, stem up; + % \ql = quarter note, stem down; + % \Notes, \en = start and end of note line + \Notes \qu c \qu d \qu e \qu f \en + \bar + \Notes \qu g \qu{'a} \ql b \ql c \en +\endextract + +\end diff --git a/info/latex4musicians/Figures/sample-mtx.mtx b/info/latex4musicians/Figures/sample-mtx.mtx new file mode 100644 index 0000000000..ea8ac90b9b --- /dev/null +++ b/info/latex4musicians/Figures/sample-mtx.mtx @@ -0,0 +1,8 @@ +% music sample in M-Tx notation + +Title: \bigtype Music sample in M-Tx +Style: Solo +Meter: C +Width: 160mm + +c4 d8 e f g a b | c4 b8 a g f e d | c8 g+ e g c- g+ e g | c4- e c r | diff --git a/info/latex4musicians/Figures/sample-mtx.pmx b/info/latex4musicians/Figures/sample-mtx.pmx new file mode 100644 index 0000000000..068d63542f --- /dev/null +++ b/info/latex4musicians/Figures/sample-mtx.pmx @@ -0,0 +1,27 @@ +--- +\def\mtxversion{0.63a} +\def\mtxdate{<8 April 2018>} +\input mtx +\mtxTitleLine{\bigtype Music sample in M-Tx} +--- +1 -1 1 4 4 0 6 0.00000 0 1 1 20 0 + +0 +./ +Tt +\mtxTitle +w160m +% Paragraph 3 line 8 bar 1 +c44 d8 e8 f8 g8 a8 b8 | / + +%Bar 2 +c4 b8 a8 g8 f8 e8 d8 | / + +%Bar 3 +c8 g8+ e8 g8 c8- g8+ e8 g8 | / + +%Bar 4 +c4- e4 c4 r4 | Rb + / + +% Coded by M-Tx diff --git a/info/latex4musicians/Figures/sample-mtx.tex b/info/latex4musicians/Figures/sample-mtx.tex new file mode 100644 index 0000000000..abfccd7041 --- /dev/null +++ b/info/latex4musicians/Figures/sample-mtx.tex @@ -0,0 +1,50 @@ +%%%%%%%%%%%%%%%%% +% +% sample-mtx.tex +% +%%%%%%%%%%%%%%%% +\def\mtxversion{0.63a} +\def\mtxdate{<8 April 2018>} +\input mtx +\mtxTitleLine{\bigtype Music sample in M-Tx} +\input musixtex +\input pmx +\setmaxslurs{24}\setmaxinstruments{24}% +\normalmusicsize% +\nopagenumbers +\tracingstats=2\relax +\hsize=454pt +\vsize740pt +\def\nbinstruments{1} +\setstaffs11 +\setclef10 +\setname1{ } +\generalsignature{ 0}% +\generalmeter\meterC% +\parindent 0pt +\elemskip1pt\afterruleskip1.000pt\beforeruleskip0pt\relax +\stafftopmarg0pt\staffbotmarg5\Interligne\interstaff{10}\relax +\nostartrule +\readmod{sample-mtx} +\startmuflex\startpiece\addspace\afterruleskip% +\znotes\zcharnote{16}{\titles{2.0}{}{0}% +{\mtxTitle}{2.0}{}{0}}\en% +% Bar count 1 +\pnotes{2.83}\qu c\en% +\pnotes{2.00}\ibu1d2\qb1d\tbu1\qb1e\ibu1g2\qb1f\qb1g\qb1{'a}\tbu1\qb1b% +\en% +% Bar count 2 +\xbar +\pnotes{2.83}\ql{'c}\en% +\pnotes{2.00}\ibu1{'b}{-2}\qb1b\tbu1\qb1a\ibu1{`f}{-2}\qb1g\qb1f\qb1e% +\tbu1\qb1d\en% +% Bar count 3 +\xbar +\pnotes{2.00}\ibu1f0\qb1c\qb1g\qb1e\tbu1\qb1g\ibu1f0\qb1c\qb1g\qb1e% +\tbu1\qb1g\en% +% Bar count 4 +\xbar +\pnotes{2.83}\qu c\qu e\qu c\qp\en% +\endpiece +\vfill\eject\endmuflex +\bye diff --git a/info/latex4musicians/Figures/sample-mup.mup b/info/latex4musicians/Figures/sample-mup.mup new file mode 100644 index 0000000000..76249b9de1 --- /dev/null +++ b/info/latex4musicians/Figures/sample-mup.mup @@ -0,0 +1,17 @@ +// music sample in MUP notation + +header + title "Music sample in MUP" + +score + time=4/4 + +music + 1: 4c; 8d bm; e ebm; f bm; g; a; b ebm; + bar + 1: 4c+; 8b bm; a ebm; g bm; f; e; d ebm; + bar + 1: 8c bm; g; e; g ebm; c bm; g; e; g ebm; + bar + 1: 4c; e; c; r; + endbar diff --git a/info/latex4musicians/Figures/sample-musixtex-tab.tex b/info/latex4musicians/Figures/sample-musixtex-tab.tex new file mode 100644 index 0000000000..29471a6b7f --- /dev/null +++ b/info/latex4musicians/Figures/sample-musixtex-tab.tex @@ -0,0 +1,24 @@ +% bare MusiXTeX example + +\input musixtex +\nopagenumbers + +This is a MusiXTeX tablature example: + +\setlines16 % six lines +\setstaffs1{1} +\setclefsymbol1{\tabclef} % and a TAB clef +\nobarnumbers +\let\extractline\leftline % left aligned + +\startextract + \Notes \tab{5}{3} \tab{4}{0} \tab{4}{2} \en + \bar + \Notes \tab{4}{3} \tab{3}{0} \tab{3}{2} \en + \bar + \Notes \tab{2}{0} \tab{3}{2} \tab{2}{0} \en + \bar + \Notes \tab{2}{1} \qp \qp \en +\endextract + +\end diff --git a/info/latex4musicians/Figures/sample-pmw.pmw b/info/latex4musicians/Figures/sample-pmw.pmw new file mode 100644 index 0000000000..7809fea8b2 --- /dev/null +++ b/info/latex4musicians/Figures/sample-pmw.pmw @@ -0,0 +1,10 @@ +@ music sample in PMW + +Heading "|Music sample in PMW" +Key C +Time 4/4 + +[stave 1 treble 1] +c d- e-; f-g-a-b-; | c' b- a-; g-f-e-d-; | +c-g-e-g-; c-g-e-g-; |c e c r | +[endstave] diff --git a/info/latex4musicians/Figures/sample-songbook.orig.tex b/info/latex4musicians/Figures/sample-songbook.orig.tex new file mode 100644 index 0000000000..39d6b4c057 --- /dev/null +++ b/info/latex4musicians/Figures/sample-songbook.orig.tex @@ -0,0 +1,141 @@ +\documentclass[11pt]{article} +\usepackage{graphicx} +\usepackage{gchords} +\usepackage{guitar} + +\begin{document} + +\title{A Minimal Songbook} +\author{Guido Gonzato} + +\maketitle + +\tableofcontents + +\bigskip +\hrule + +% ----- + +\section{For He's a Jolly Good Fellow} + +According to the 1998 Guinness World Records, this is the second most +recognized song in the English language. + +\smallchords + +\def\numfrets{4} +\chords{ +\chord{t}{n,p3,p2,n,p1,n}{C} +\chord{t}{p3,p2,n,n,n,p3}{G} +\chord{t1}{n,p2,p2,p1,n,n}{F} +} + +\medskip + +\includegraphics[width=\textwidth]{fellow} + +% ----- + +\section{Happy Birthday To You} + +According to the 1998 Guinness World Records, it is the most +recognized song in the English language, followed by ``For He's a +Jolly Good Fellow''. + +\def\numfrets{4} +\chords{ +\chord{t1}{n,p2,p2,p1,n,n}{F} +\chord{t}{n,p3,p2,n,p1,n}{C} +\chord{t}{n,p3,p2,p3,p1,n}{C7} +\chord{t1}{n,n,p2,p2,p2,n}{Bb} +} + +\medskip + +\includegraphics[width=\textwidth]{happyb} + +% ----- + +\section{Twinkle, Twinkle Little Star} + +This is a popular English lullaby. + +\def\numfrets{4} +\chords{ +\chord{t}{n,p3,p2,n,p1,n}{C} +\chord{t1}{n,p2,p2,p1,n,n}{F} +\chord{t}{x,n,n,p2,p3,p1}{Dm} +\chord{t}{p3,p2,n,n,n,p3}{G} +} + +\includegraphics[width=\textwidth]{twinkle} + +\medskip + +\begin{guitar} + +[C]Twinkle, twinkle, [F]little [C]star, +[Dm]How I [C]wonder [G]what you [C]are! +[C]Up a[Dm]bove the [C]world so [G]high, +[C]Like a [Dm]diamond [C]in the [G]sky. +Twinkle{\ldots} + +[C]When this blazing [F]sun is [C]gone, +[Dm]When he [C]nothing [G]shines u[C]pon, +[C]Then you [Dm]show your [C]little [G]light, +[C]Twinkle, [Dm]twinkle, [C]through the night. +Twinkle{\ldots} + +[C]Then the [F]traveller in the [C]dark +[Dm]Thanks you [C]for your [G]tiny [C]spark; +[C]He could [Dm]not see [C]where to [G]go, +[C]If you [Dm]did not [C]twinkle [G]so. +Twinkle{\ldots} + +[C]In the dark blue [F]sky you [C]keep, +And [Dm]often [C]through my [G]curtains [C]peep, +[C]For you [Dm]never [C]shut your [G]eye +[C]Till the [Dm]sun is [C]in the [G]sky. +Twinkle{\ldots} + +[C]As your bright and [F]tiny [C]spark +[Dm]Lights the [C]traveller [G]in the [C]dark, +[C]Though I [Dm]know not [C]what you [G]are, +[C]Twinkle, [Dm]twinkle, [C]little [G]star. +Twinkle{\ldots} + +\end{guitar} + +% ----- + +\section{Warm Kitty} + +No need to introduce this lullaby! + +\def\numfrets{4} +\chords{ +\chord{t1}{n,n,p2,p2,p2,n}{Bb} +\chord{t1}{n,p2,p2,p1,n,n}{F} +\chord{t1}{n,p2,n,p1,n,n}{F7} +} + +\medskip + +\includegraphics[width=\textwidth]{happyb} + +\medskip + +\begin{guitar} + +[Bb]Soft kitty, [F]warm kitty + +[Bb]Little ball of [F]fur [F7] + +[Bb]Happy kitty, [F]sleepy kitty + +[Bb]Purr, [F]purr, [Bb]purr + +\end{guitar} + +\end{document}
\ No newline at end of file diff --git a/info/latex4musicians/Figures/sample-songbook.tex b/info/latex4musicians/Figures/sample-songbook.tex new file mode 100644 index 0000000000..ec55cb3e02 --- /dev/null +++ b/info/latex4musicians/Figures/sample-songbook.tex @@ -0,0 +1,107 @@ +\documentclass[11pt]{article} +\usepackage{graphicx} +\usepackage{gchords} +\usepackage{guitar} + +\begin{document} + +\title{A Minimal Songbook} +\author{Guido Gonzato} +\date{\today} + +\maketitle +\tableofcontents + +% ----- + +\section{For He's a Jolly Good Fellow} + +% Typically sung to congratulate somebody. + +\smallchords + +\def\numfrets{4} +\begin{minipage}[c]{\linewidth} % use less space + \chords{ + \chord{t}{n,p3,p2,n,p1,n}{C} + \chord{t}{p3,p2,n,n,n,p3}{G} + \chord{t}{n,p3,p2,p3,p1,n}{C7} + \chord{t1}{n,p2,p2,p1,n,n}{F} +} +\end{minipage} + +\medskip + +\includegraphics[width=\textwidth]{fellow} + +\bigskip + +\begin{guitar} + +For [C]he's a jolly good fellow, +For [G]he's a jolly good [C]fellow, +For [C7]he's a jolly good [F]fellow, +Which [C]nobody [G]can [C]deny. + +\end{guitar} + +% ----- + +\section{Happy Birthday To You} + +% Sung to remind somebody they're growing old. + +\def\numfrets{4} +\begin{minipage}[c]{\linewidth} + \chords{ + \chord{t1}{n,p2,p2,p1,n,n}{F} + \chord{t}{n,p3,p2,n,p1,n}{C} + \chord{t}{n,p3,p2,p3,p1,n}{C7} + \chord{t1}{n,n,p2,p2,p2,n}{Bb} +} +\end{minipage} + +\medskip + +\includegraphics[width=\textwidth]{happyb} + +\bigskip + +\begin{guitar} +Happy [F]birthday to [C]you, +Happy [C7]birthday to [F]you, +Happy birthday dear [Bb]Guido, +Happy [F]birthday [C]to [F]you! +\end{guitar} + +% ----- + +\section{Warm Kitty} + +% No need to introduce this lullaby! + +\def\numfrets{4} +\begin{minipage}[c]{\linewidth} +\chords{ + \chord{t}{n,n,p2,p2,p2,n}{A} + \chord{t}{n,p2,p2,p1,n,n}{E} + \chord{t}{n,p2,p2,p1,p3,n}{E7} +} +\end{minipage} + +\medskip + +\includegraphics[width=\textwidth]{warm} + +\bigskip + +\begin{guitar} + +[A]Soft kitty, [E]warm kitty +[A]Little ball of [E]fur [E7]~ +[A]Happy kitty, [E]sleepy kitty +[A]Purr, [E]purr, [A]purr + +\end{guitar} + +\end{document} diff --git a/info/latex4musicians/Figures/scale.mtx b/info/latex4musicians/Figures/scale.mtx new file mode 100644 index 0000000000..2f3e6f326b --- /dev/null +++ b/info/latex4musicians/Figures/scale.mtx @@ -0,0 +1,6 @@ +Style: Solo +Meter: C +Size: 13pt +Width: 30mm + +c8 d e f g2 | diff --git a/info/latex4musicians/Figures/scale.pmx b/info/latex4musicians/Figures/scale.pmx new file mode 100644 index 0000000000..ffe916b089 --- /dev/null +++ b/info/latex4musicians/Figures/scale.pmx @@ -0,0 +1,16 @@ +--- +\def\mtxversion{0.63a} +\def\mtxdate{<8 April 2018>} +\input mtx +--- +1 -1 1 4 4 0 6 0.00000 0 1 1 16 0 + +0 +./ +\\mtxSetSize{1}{\mtxSmallSize}\ +w30m +% Paragraph 2 line 6 bar 1 +c84 d8 e8 f8 g2 | Rb + / + +% Coded by M-Tx diff --git a/info/latex4musicians/Figures/scale.tex b/info/latex4musicians/Figures/scale.tex new file mode 100644 index 0000000000..59c6f5bfcb --- /dev/null +++ b/info/latex4musicians/Figures/scale.tex @@ -0,0 +1,36 @@ +%%%%%%%%%%%%%%%%% +% +% scale.tex +% +%%%%%%%%%%%%%%%% +\def\mtxversion{0.63a} +\def\mtxdate{<8 April 2018>} +\input mtx +\input musixtex +\input pmx +\setmaxslurs{24}\setmaxinstruments{24}% +\smallmusicsize% +\nopagenumbers +\tracingstats=2\relax +\hsize= 85pt +\vsize740pt +\def\nbinstruments{1} +\setstaffs11 +\setclef10 +\setname1{ } +\generalsignature{ 0}% +\generalmeter\meterC% +\parindent 0pt +\elemskip1pt\afterruleskip1.000pt\beforeruleskip0pt\relax +\stafftopmarg0pt\staffbotmarg5\Interligne\interstaff{10}\relax +\nostartrule +\readmod{scale} +\mtxSetSize{1}{\mtxSmallSize}% +\startmuflex\startpiece\addspace\afterruleskip% +\znotes\zcharnote{16}{\titles{2.0}{}{0}{}{0}{}{0}}\en% +% Bar count 1 +\pnotes{2.00}\ibu1d2\qb1c\qb1d\qb1e\tbu1\qb1f\en% +\pnotes{4.00}\hu g\en% +\endpiece +\vfill\eject\endmuflex +\bye diff --git a/info/latex4musicians/Figures/scale1.abc b/info/latex4musicians/Figures/scale1.abc new file mode 100644 index 0000000000..e12389adc8 --- /dev/null +++ b/info/latex4musicians/Figures/scale1.abc @@ -0,0 +1,3 @@ +X: 1 % start of header +K: C % scale: C major +C D E F G A B c | c d e f g a b c' | diff --git a/info/latex4musicians/Figures/shave.abc b/info/latex4musicians/Figures/shave.abc new file mode 100644 index 0000000000..7f01d063e4 --- /dev/null +++ b/info/latex4musicians/Figures/shave.abc @@ -0,0 +1,10 @@ +%%scale 0.7 + +X: 1 +L: 1/4 +K: C +% +V: 1 +c G/G/ _AG|z !>!B!>!c z|] +V: 2 clef=tab octave=-1 +c G/G/ _AG|z Bc z|] diff --git a/info/latex4musicians/Figures/shave.ly b/info/latex4musicians/Figures/shave.ly new file mode 100644 index 0000000000..d45e17f22e --- /dev/null +++ b/info/latex4musicians/Figures/shave.ly @@ -0,0 +1,17 @@ +% shave.ly + +\version "2.18.2" +\header { tagline = "" } % no footer +\paper { left-margin = 0\cm } + +music = \relative c' { + \time 4/4 + c4^"Scherzando" g8 g aes4 g | r4 b4-> c-> r4 | +} + +\score { + << + \new Staff { \clef "G_8" \music } + \new TabStaff { \music } + >> +} diff --git a/info/latex4musicians/Figures/sheet.abc b/info/latex4musicians/Figures/sheet.abc new file mode 100644 index 0000000000..4a2d3bad0d --- /dev/null +++ b/info/latex4musicians/Figures/sheet.abc @@ -0,0 +1,5 @@ +X: 1 +L: 1/4 +K: C +% +c G/G/ _AG|z !>!B!>!c z|] diff --git a/info/latex4musicians/Figures/songbook.tex b/info/latex4musicians/Figures/songbook.tex new file mode 100644 index 0000000000..685de43416 --- /dev/null +++ b/info/latex4musicians/Figures/songbook.tex @@ -0,0 +1,23 @@ +\documentclass{article} +\usepackage[chordbk]{songbook} +\thispagestyle{empty} + +\begin{document} + +\textbf{Imagine (John Lennon)} + +\medskip + +\emph{Intro, $\times$ 2} + +\Ch{C}~ \Ch{Cmaj7}~ \Ch{F}~ + +\Ch{C}{Imagine} there's \Ch{Cmaj7}{no} \Ch{F}heaven + +\Ch{C}{It's} easy if \Ch{Cmaj7}{you} \Ch{F}{try} + +\Ch{C}No hell \Ch{Cmaj7}{below} \Ch{F}us + +\Ch{C}{Above} us \Ch{Cmaj7}{only} \Ch{F}{sky} + +\end{document} diff --git a/info/latex4musicians/Figures/songs.tex b/info/latex4musicians/Figures/songs.tex new file mode 100644 index 0000000000..e2f48fdb80 --- /dev/null +++ b/info/latex4musicians/Figures/songs.tex @@ -0,0 +1,25 @@ +\documentclass{article} +\thispagestyle{empty} +\usepackage[chorded]{songs} + +\begin{document} + +\renewcommand{\lyricfont}{\small} +\renewcommand{\printchord}{\it\small} +\afterpreludeskip=-18pt +\beforepostludeskip=-8pt + +\begin{songs}{} +\beginsong{Imagine}[by={John Lennon}] +\beginverse + \emph{Intro, $\times$ 2} + \[C] \[Cmaj7] \[F] + \[C]Imagine there's \[Cmaj7]no \[F]heaven + \[C]It's easy if \[Cmaj7]you \[F]try + \[C]No hell \[Cmaj7]below \[F]us + \[C]Above us \[Cmaj7]only \[F]sky +\endverse +\endsong +\end{songs} + +\end{document} diff --git a/info/latex4musicians/Figures/songs_all.tex b/info/latex4musicians/Figures/songs_all.tex new file mode 100644 index 0000000000..5092a2d0ff --- /dev/null +++ b/info/latex4musicians/Figures/songs_all.tex @@ -0,0 +1,25 @@ +\documentclass[a4paper,12pt]{article} +\thispagestyle{empty} +\usepackage[chorded]{songs} + +\begin{document} + +\begin{songs}{} +\beginsong{Imagine}[by={John Lennon}] + +\gtab{C}{032010:032010} \gtab{Cmaj7}{032000:032000} +\gtab{F}{1:022100} \gtab{G}{3:022100} \gtab{A}{5:022100} + + +\beginverse + \emph{Intro, $\times$ 2} + \[C] \[Cmaj7] \[F] + \[C]Imagine there's \[Cmaj7]no \[F]heaven + \[C]It's easy if \[Cmaj7]you \[F]try + \[C]No hell \[Cmaj7]below \[F]us + \[C]Above us \[Cmaj7]only \[F]sky +\endverse +\endsong +\end{songs} + +\end{document} diff --git a/info/latex4musicians/Figures/songs_g.tex b/info/latex4musicians/Figures/songs_g.tex new file mode 100644 index 0000000000..86b319e285 --- /dev/null +++ b/info/latex4musicians/Figures/songs_g.tex @@ -0,0 +1,11 @@ +\documentclass{article} +\thispagestyle{empty} +\usepackage[chorded]{songs} + +\begin{document} + +% \gtab{chord name}{fret:strings:fingering} +\gtab{C}{032010:032010} \gtab{Cmaj7}{032000:032000} +\gtab{F}{1:022100} + +\end{document} diff --git a/info/latex4musicians/Figures/twinkle.abc b/info/latex4musicians/Figures/twinkle.abc new file mode 100644 index 0000000000..7fab5d0e28 --- /dev/null +++ b/info/latex4musicians/Figures/twinkle.abc @@ -0,0 +1,38 @@ +X: 1 +% T: Twinkle, Twinkle Little Star +M: 4/4 +L: 1/4 +K: C +% +"C"CCGG|"F"AA"C"G2|"Dm"FF"C"EE|"G"DD"C"C2| +w: Twin-kle, twin-kle lit-le star, how I won-der what you are! +"C"GG"Dm"FF|"C"EE"G"D2|"C"GG"Dm"FF|"C"EE"G"D2| +w: Up a-bove the world so high, like a dia-mond in the sky. +"C"CCGG|"F"AA"C"G2|"Dm"FF"C"EE|"G"DD"C"C2|] +w: Twin-kle, twin-kle lit-le star, how I won-der what you are! +% + +Twinkle, twinkle, little star, +How I wonder what you are! +Up above the world so high, +Like a diamond in the sky. + +When this blazing sun is gone, +When he nothing shines upon, +Then you show your little light, +Twinkle, twinkle, through the night. + +Then the traveller in the dark +Thanks you for your tiny spark; +He could not see where to go, +If you did not twinkle so. + +In the dark blue sky you keep, +And often through my curtains peep, +For you never shut your eye +Till the sun is in the sky. + +As your bright and tiny spark +Lights the traveller in the dark, +Though I know not what you are, +Twinkle, twinkle, little star. diff --git a/info/latex4musicians/Figures/verses-chords.tex b/info/latex4musicians/Figures/verses-chords.tex new file mode 100644 index 0000000000..875b4058bf --- /dev/null +++ b/info/latex4musicians/Figures/verses-chords.tex @@ -0,0 +1,49 @@ +\documentclass{article} +\usepackage{guitar} +\usepackage{gchords} +\thispagestyle{empty} + +\newcommand{\C}{\hspace{-0.8em}\chord{t}{n,p3,p2,n,p1,n}{C}} +\newcommand{\CmajVII}{\hspace{-0.8em}\chord{t}{n,p3,p2,n,n,n}{Cmaj7}} +\newcommand{\F}{\hspace{-0.8em}\chord{t1}{n,p2,p2,p1,n,n}{F}} + +\def\chordsize{1.5mm} +\def\numfrets{3} +\def\namefont{\it} + +\begin{document} + +\noindent +We can typeset verses and guitar chord grids in a \texttt{guitar} +environment: + +\bigskip + +\begin{minipage}[c]{\linewidth} % to avoid indentation + \begin{guitar} + + \textbf{Imagine (John Lennon)} + \emph{Intro, $\times$ 2} + [\C] \hspace{2em} [\CmajVII] \hspace{2em} [\F] \hspace{2em} + [\C]Imagine there's [\CmajVII|]{no} ~ [\F]heaven + [\C]It's easy if [\CmajVII|]{you} ~ [\F]try + + \end{guitar} +\end{minipage} + +\noindent +{\ldots}and so on. But we could just use the \verb|\upchord| command, +provided by \texttt{gchords}: + +\begin{verse} + + \upchord{\C}Imagine there's \upchord{\CmajVII}no \qquad + \upchord{\F}heaven + + \upchord{\C}It's easy if \upchord{\CmajVII}you \qquad + \upchord{\F}try + +\end{verse} + + +\end{document}
\ No newline at end of file diff --git a/info/latex4musicians/Figures/warm.abc b/info/latex4musicians/Figures/warm.abc new file mode 100644 index 0000000000..3298ae87e3 --- /dev/null +++ b/info/latex4musicians/Figures/warm.abc @@ -0,0 +1,7 @@ +X:1 +M:2/4 +L:1/8 +K:Amaj +% +"A"e2 cc | "E"d2 BB | "A"AB cd | "E"e2 "E7"z2 | +"A"e2 cc | "E"d2 BB | "A"A2 "E"B2 | "A"A2 z2 |] diff --git a/info/latex4musicians/HOW-TO-TYPESET.md b/info/latex4musicians/HOW-TO-TYPESET.md new file mode 100644 index 0000000000..069a46629a --- /dev/null +++ b/info/latex4musicians/HOW-TO-TYPESET.md @@ -0,0 +1,86 @@ +## How to typeset + +This document uses many packages and programs. If you want to typeset +it yourself, this is the list of stuff you'll have to install: + +- Package: musicography. +<https://ctan.org/pkg/musicography> + +- Package: leadsheets. +<https://ctan.org/pkg/leadsheets> + +- Package: lilyglyphs. +<https://ctan.org/pkg/lilyglyphs> + +- Font: Bravura. +<https://www.smufl.org/fonts> + +- Package: guitar. +<https://ctan.org/pkg/guitar> + +- Package: gtrcrd. +<https://ctan.org/pkg/gtrcrd> + +- Package: songs. +<https://ctan.org/pkg/songs> + +- Package: musixguit. +<https://ctan.org/pkg/musixguit> + +- Package: songbook. +<https://ctan.org/pkg/songbook> + +- Program: Chordii. +<https://www.vromans.org/projects/Chordii> + +- Package: gchords. +<https://ctan.org/pkg/gchords> + +- Package: guitarchordschemes. +<https://ctan.org/pkg/guitarchordschemes> + +- Package: guitartabs. +<https://ctan.org/pkg/guitartabs> + +- Page: MusiXTeX and Related Software. +<https://icking-music-archive.org/software/htdocs/htdocs.html> + +- Package: MusiXTeX. +<https://ctan.org/pkg/musixtex> + +- Package: M-Tx. +<https://ctan.org/pkg/m-tx> + +- Package: Gregoriotex. +<https://ctan.org/pkg/gregoriotex> +http://gregorio-project.github.io/gregoriotex +<http://gregorio-project.github.io> + +- Program: LilyPond. +<http://lilypond.org> + +- Package: Lyluatex. +<https://ctan.org/pkg/lyluatex> + +- Programs: abcm2ps, and2svg. +<http://moinejf.free.fr> + +- Program: PMW, Philip’s Music Writer. +<http://people.ds.cam.ac.uk/ph10/pmw.html> + +- Program: MUP. +<http://www.arkkra.com> + +- Program: MuseScore. +<http://musescore.org> + +- Package: Abc. +<https://ctan.org/pkg/abc> + +- Program: abc2xml.ly. +<https://wim.vree.org/svgParse/abc2xml.html> + +Then, just type "make" in this directory. + +Cheers, + Guido =8-) diff --git a/info/latex4musicians/Makefile b/info/latex4musicians/Makefile new file mode 100644 index 0000000000..2d95314171 --- /dev/null +++ b/info/latex4musicians/Makefile @@ -0,0 +1,159 @@ +# Makefile for latex4musicians.tex + +VERSION = 1.0.1 +DATE = 2019-01-17 +NAME = latex4musicians +MANUAL = $(NAME).pdf +TEXFILES = $(NAME).tex params.tex + +FIGURES = abctab.pdf bravura.pdf chordii.pdf chords.pdf gchords.pdf \ + gcschemes.pdf gdiagram.pdf glyphs.pdf glyphs_ls.pdf gtablature.pdf \ + gtrcrd.pdf guitar.pdf guitartabs.pdf jingle.pdf kyrie.pdf \ + leadsheets.pdf lilyglyphs.pdf lilytab.pdf musicography.pdf \ + musixguit.pdf songbook.pdf songs.pdf songs_g.pdf sample-abc.pdf \ + sample-abc-all.pdf sample-all.pdf sample-latexmtx.pdf \ + sample-lyluatex.pdf sample-lilybook.pdf sample-mtx.pdf \ + sample-pmw.pdf sample-mtex.pdf sample-mlatex.pdf \ + sample-songbook.pdf sheet.pdf verses-chords.pdf + +$(MANUAL): $(TEXFILES) $(FIGURES) jingle.midi + pdflatex $(NAME).tex; \ + pdflatex $(NAME).tex; \ + pdflatex $(NAME).tex + +clean: + /bin/rm -Rf *aux *.dep *.lo? *.out *.toc *log \ + *.ps *dvi *mx1 *.ps *.eps out-* *.mx1 *.gtex snippet* \ + *.count *.texi *xml Tmp/ tmp-ly/; \ + cd Figures; /bin/rm -Rf *aux *.dep *.lo? *.out *.toc *log \ + *.ps *dvi *mx1 *.ps *.eps out-* *.mx1 *.gtex snippet* \ + *.count *.texi *xml *pdf + +OTHER = fellow.pdf happyb.pdf julia.pdf scale.pdf twinkle.pdf + +cleanpdf: + /bin/rm -f $(FIGURES) $(OTHER) + +abctab.pdf: Figures/abctab.abc + abc2xml.py -f Figures/abctab.abc > abctab.xml; \ + musescore abctab.xml -o abctab.pdf; + /bin/sh crop.sh abctab.pdf +bravura.pdf: Figures/bravura.tex + /bin/sh ./pdfx.sh bravura.tex +chordii.pdf: Figures/chordii.cho + chordii -a Figures/chordii.cho > chordii.ps; \ + ps2pdf chordii.ps; \ + /bin/sh crop.sh chordii.pdf +chords.pdf: Figures/chords.tex + /bin/sh ./pdfl.sh chords.tex +gchords.pdf: Figures/gchords.tex + /bin/sh ./pdfl.sh gchords.tex +gcschemes.pdf: Figures/gcschemes.tex + /bin/sh ./pdfl.sh gcschemes.tex +gdiagram.pdf: Figures/gdiagram.tex + /bin/sh ./pdfl.sh gdiagram.tex +glyphs.pdf: Figures/glyphs.tex + /bin/sh ./pdfx.sh glyphs.tex +glyphs_ls.pdf: Figures/glyphs_ls.tex + /bin/sh ./pdfx.sh glyphs_ls.tex +gtablature.pdf: Figures/gtablature.ly + lilypond Figures/gtablature.ly ; \ + /bin/sh crop.sh gtablature.pdf +gtrcrd.pdf: Figures/gtrcrd.tex + /bin/sh ./pdfl.sh gtrcrd.tex +guitar.pdf: Figures/guitar.tex + /bin/sh ./pdfl.sh guitar.tex +guitartabs.pdf: Figures/guitartabs.tex + /bin/sh ./pdfl.sh guitartabs.tex +jingle.pdf: Figures/./jingle.ly + lilypond Figures/jingle.ly ; \ + /bin/sh crop.sh jingle.pdf +kyrie.pdf: Figures/kyrie.tex + cd Figures; \ + lualatex kyrie.tex; \ + /bin/mv kyrie.pdf .. ; \ + cd .. \; + /bin/sh crop.sh kyrie.pdf +leadsheets.pdf: Figures/leadsheets.tex + /bin/sh ./pdfl.sh leadsheets.tex +lilytab.pdf: Figures/lilytab.ly + lilypond Figures/lilytab.ly; \ + /bin/sh crop.sh lilytab.pdf +lilyglyphs.pdf: Figures/lilyglyphs.tex + /bin/sh ./pdfx.sh lilyglyphs.tex +musicography.pdf: Figures/musicography.tex + /bin/sh ./pdfl.sh musicography.tex +musixguit.pdf: Figures/musixguit.tex + /bin/sh ./pdfl.sh musixguit.tex +songbook.pdf: Figures/songbook.tex + /bin/sh ./pdfl.sh songbook.tex +songs.pdf: Figures/songs.tex + /bin/sh ./pdfl.sh songs.tex +songs_g.pdf: Figures/songs_g.tex + /bin/sh ./pdfl.sh songs_g.tex +sample-abc.pdf: Figures/sample-abc.tex + cd Figures; \ + pdflatex --shell-escape sample-abc.tex ; \ + /bin/mv sample-abc.pdf .. ; \ + cd .. ; \ + /bin/sh crop.sh sample-abc.pdf +sample-abc-all.pdf: Figures/sample-abc-all.tex + pdflatex --shell-escape Figures/sample-abc-all.tex ; \ + /bin/sh crop.sh sample-abc-all.pdf +sample-all.pdf: Figures/sample-all.tex + cd Figures; \ + pdflatex -shell-escape sample-all.tex ; \ + /bin/mv sample-all.pdf .. ; \ + cd .. \; + /bin/sh crop.sh sample-all.pdf +sample-latexmtx.pdf: Figures/sample-latexmtx.ltx + cd Figures; \ + musixtex sample-mtx scale sample-latexmtx.ltx; \ + /bin/mv sample-latexmtx.pdf .. ; \ + cd .. ; \ + /bin/sh crop.sh sample-latexmtx.pdf +sample-lilybook.pdf: Figures/sample-lilybook.lytex + lilypond-book -f latex -o ./Tmp/ \ + --lily-output-dir=./Tmp Figures/sample-lilybook.lytex; \ + cd ./Tmp; pdflatex sample-lilybook.tex; \ + /bin/cp ../*sh . ; /bin/sh ./crop.sh sample-lilybook.pdf; \ + /bin/mv -f sample-lilybook.pdf .. +sample-lyluatex.pdf: Figures/sample-lyluatex.tex + lualatex --shell-escape Figures/sample-lyluatex.tex; \ + /bin/sh crop.sh sample-lyluatex.pdf +sample-mtx.pdf: Figures/sample-mtx.mtx + cd Figures; \ + musixtex sample-mtx.mtx; \ + /bin/mv sample-mtx.pdf .. ; \ + cd .. ; \ + /bin/sh crop.sh sample-mtx.pdf +sample-musixtex-tab.pdf: Figures/sample-musixtex-tab.tex + cd Figures; tex sample-musixtex-tab.tex; \ + dvips sample-musixtex-tab.dvi; ps2pdf sample-musixtex-tab.ps; \ + /bin/sh ../crop.sh sample-musixtex-tab.pdf; \ + /bin/mv -f sample-musixtex-tab.pdf .. +sample-mtex.pdf: Figures/sample-mtex.tex + cd Figures; tex sample-mtex.tex; \ + dvips sample-mtex.dvi; ps2pdf sample-mtex.ps; \ + /bin/sh ../crop.sh sample-mtex.pdf; \ + /bin/mv -f sample-mtex.pdf .. +sample-mlatex.pdf: Figures/sample-mlatex.tex + /bin/sh ./pdfl.sh sample-mlatex.tex +sample-pmw.pdf: Figures/sample-pmw.pmw + pmw -includefont Figures/sample-pmw.pmw; \ + ps2pdf Figures/sample-pmw.ps ; \ + /bin/mv Figures/sample-pmw-pdf; \ + /bin/sh crop.sh sample-pmw.pdf +sample-songbook.pdf: Figures/sample-songbook.tex + cd Figures; \ + make -f Makefile.sb; \ + /bin/mv sample-songbook.pdf .. +sheet.pdf: Figures/./sheet.abc + abcm2ps -c -O= Figures/sheet.abc; + ps2pdf sheet.ps; \ + /bin/sh crop.sh sheet.pdf +verses-chords.pdf: Figures/verses-chords.tex + /bin/sh ./pdfl.sh verses-chords.tex + + +# End of Makefile diff --git a/info/latex4musicians/README b/info/latex4musicians/README new file mode 100644 index 0000000000..a66059d537 --- /dev/null +++ b/info/latex4musicians/README @@ -0,0 +1,8 @@ +A guide for combining LaTeX and music. + +"LaTeX for Musicians" is a guide that explains how to create LaTeX +documents that include several kinds of music elements: music symbols, +song lyrics, guitar chords diagrams, lead sheets, music excerpts, +guitar tablatures, multi-page scores. + +Brought to you by Guido Gonzato, PhD diff --git a/info/latex4musicians/TODO b/info/latex4musicians/TODO new file mode 100644 index 0000000000..9c7a67028e --- /dev/null +++ b/info/latex4musicians/TODO @@ -0,0 +1,10 @@ +Things that could be added: + +- chordii -> chordpro? +- VexTab? +- Verovio? +- tab (https://www.cs.dartmouth.edu/~wbc/lute/AboutTab.html)? +- https://ctan.org/pkg/texchord +- https://tex.stackexchange.com/questions/324828/typesetting-guitar-chord-diagrams-in-a-songbook +- mention kpsewhich + diff --git a/info/latex4musicians/abctab.pdf b/info/latex4musicians/abctab.pdf Binary files differnew file mode 100644 index 0000000000..fef4d1cb45 --- /dev/null +++ b/info/latex4musicians/abctab.pdf diff --git a/info/latex4musicians/bravura.pdf b/info/latex4musicians/bravura.pdf Binary files differnew file mode 100644 index 0000000000..39993cfb29 --- /dev/null +++ b/info/latex4musicians/bravura.pdf diff --git a/info/latex4musicians/chordii.pdf b/info/latex4musicians/chordii.pdf Binary files differnew file mode 100644 index 0000000000..786671c3b5 --- /dev/null +++ b/info/latex4musicians/chordii.pdf diff --git a/info/latex4musicians/chords.pdf b/info/latex4musicians/chords.pdf Binary files differnew file mode 100644 index 0000000000..cd44f6d2ff --- /dev/null +++ b/info/latex4musicians/chords.pdf diff --git a/info/latex4musicians/crop.sh b/info/latex4musicians/crop.sh new file mode 100644 index 0000000000..80dac1ac43 --- /dev/null +++ b/info/latex4musicians/crop.sh @@ -0,0 +1,11 @@ +#!/bin/sh + +if [ $# = 0 ]; then + echo "Usage: $0 <file.pdf>" + exit 1 +fi + +NAME=$(basename $1 .pdf) +PDF=$NAME.pdf +sh ./pdfcrop.sh $PDF +/bin/mv -f $NAME-crop.pdf $PDF diff --git a/info/latex4musicians/gchords.pdf b/info/latex4musicians/gchords.pdf Binary files differnew file mode 100644 index 0000000000..15dc52efea --- /dev/null +++ b/info/latex4musicians/gchords.pdf diff --git a/info/latex4musicians/gcschemes.pdf b/info/latex4musicians/gcschemes.pdf Binary files differnew file mode 100644 index 0000000000..22b037d707 --- /dev/null +++ b/info/latex4musicians/gcschemes.pdf diff --git a/info/latex4musicians/gdiagram.pdf b/info/latex4musicians/gdiagram.pdf Binary files differnew file mode 100644 index 0000000000..1a73d50740 --- /dev/null +++ b/info/latex4musicians/gdiagram.pdf diff --git a/info/latex4musicians/glyphs.pdf b/info/latex4musicians/glyphs.pdf Binary files differnew file mode 100644 index 0000000000..6df2e0e4bd --- /dev/null +++ b/info/latex4musicians/glyphs.pdf diff --git a/info/latex4musicians/glyphs_ls.pdf b/info/latex4musicians/glyphs_ls.pdf Binary files differnew file mode 100644 index 0000000000..668148c5f3 --- /dev/null +++ b/info/latex4musicians/glyphs_ls.pdf diff --git a/info/latex4musicians/gtablature.pdf b/info/latex4musicians/gtablature.pdf Binary files differnew file mode 100644 index 0000000000..06767603a2 --- /dev/null +++ b/info/latex4musicians/gtablature.pdf diff --git a/info/latex4musicians/gtrcrd.pdf b/info/latex4musicians/gtrcrd.pdf Binary files differnew file mode 100644 index 0000000000..b930c5bed1 --- /dev/null +++ b/info/latex4musicians/gtrcrd.pdf diff --git a/info/latex4musicians/guidopiper.jpeg b/info/latex4musicians/guidopiper.jpeg Binary files differnew file mode 100644 index 0000000000..e23d823a6a --- /dev/null +++ b/info/latex4musicians/guidopiper.jpeg diff --git a/info/latex4musicians/guitar.pdf b/info/latex4musicians/guitar.pdf Binary files differnew file mode 100644 index 0000000000..a60bc03518 --- /dev/null +++ b/info/latex4musicians/guitar.pdf diff --git a/info/latex4musicians/guitartabs.pdf b/info/latex4musicians/guitartabs.pdf Binary files differnew file mode 100644 index 0000000000..21bbcaf448 --- /dev/null +++ b/info/latex4musicians/guitartabs.pdf diff --git a/info/latex4musicians/jingle.midi b/info/latex4musicians/jingle.midi Binary files differnew file mode 100644 index 0000000000..a9942726de --- /dev/null +++ b/info/latex4musicians/jingle.midi diff --git a/info/latex4musicians/jingle.pdf b/info/latex4musicians/jingle.pdf Binary files differnew file mode 100644 index 0000000000..2820fd8047 --- /dev/null +++ b/info/latex4musicians/jingle.pdf diff --git a/info/latex4musicians/kyrie.pdf b/info/latex4musicians/kyrie.pdf Binary files differnew file mode 100644 index 0000000000..c27a212d7a --- /dev/null +++ b/info/latex4musicians/kyrie.pdf diff --git a/info/latex4musicians/latex4musicians.pdf b/info/latex4musicians/latex4musicians.pdf Binary files differnew file mode 100644 index 0000000000..1b33be0f06 --- /dev/null +++ b/info/latex4musicians/latex4musicians.pdf diff --git a/info/latex4musicians/latex4musicians.tex b/info/latex4musicians/latex4musicians.tex new file mode 100644 index 0000000000..fb2bd31925 --- /dev/null +++ b/info/latex4musicians/latex4musicians.tex @@ -0,0 +1,3107 @@ +% latex4musicians.tex -*- LaTeX -*- +% +% By Guido Gonzato, PhD <guido.gonzato (at) gmail.com> +% +% Last updated: January 19, 2019 + +% \RequirePackage[l2tabu,orthodox]{nag} % LaTeX syntax check + +\documentclass[a4paper,12pt]{article} +\usepackage{etoolbox} % fix alltt +\usepackage{fancyhdr} % fancy headers +\usepackage{metalogo} % LaTeX logos +\usepackage{wasysym} % for \twonotes +\usepackage{graphicx} % include PDF files +\usepackage[colorlinks,% + linkcolor=red,% + urlcolor=blue,% + filecolor=blue,% + breaklinks=true]% + {hyperref} % URLs and links +\urlstyle{same} % use the same font for links +\usepackage{setspace} % for sources +\usepackage{fancyvrb} % fancy verbatim +\usepackage{color} % for included pages +\pagecolor{white} % don't disrupt pdfpages +\usepackage{pdfpages} % include external pages +\usepackage[breakable]% +{tcolorbox} % shaded boxes +\usepackage{alltt} % for sources +\usepackage{textcomp} % for upquote +\usepackage{upquote} % fix ' in PDF output +\usepackage{boxedminipage} % for LaTeX examples + +\include{params} % low-level formatting stuff +\pagestyle{fancy} % fancy headers + +% ----- + +\begin{document} + +\title{\LaTeX{} for {\huge\twonotes{}}usicians} + +\author{Guido Gonzato, PhD} + +\date{Version \version\\ +\today} + +\maketitle + +\begin{center} + \includegraphics[width=\textwidth]{jingle.pdf} +\end{center} + +\begin{abstract} + + This guide shows how to create \LaTeX{} documents that include + several kinds of music elements, from very simple to quite complex. + Music features may consist of music symbols, song lyrics, guitar + chords diagrams, lead sheets, music excerpts, guitar tablatures, + multi-page scores. + + Music can be produced directly by \TeX{} and \LaTeX{} using + packages, and also by external scorewriters. Major packages and + programs are listed and briefly described, providing ready-to-use + examples. + +\end{abstract} + +\tableofcontents +% \listoftables +% \listoffigures + +\noteseparator + +% ----- + +\section{Introduction} + +~ \hfill% +\begin{minipage}{0.7\linewidth} + \begin{quote} + [And] there is no such hobby that it cannot be combined with \LaTeX. + + ~ \hfill --- \href{http://www.mychemistry.eu/2013/04/guitar-tablatures/} + {Clemens Niederberger} + \end{quote} +\end{minipage} + +\bigskip + +I'm a long-time and enthusiastic \LaTeX{} user, and I'm also an +amateur musician; I play folk music on wind instruments. Years ago, I +used \LaTeX{} to typeset my +\href{http://abcplus.sourceforge.net/#ABCGuide}{ABC notation tutorial} +that I'm still maintaining. Writing that tutorial, I included many PDF +music snippets along with the corresponding ABC sources, and I was +very satisfied with the result. (Hopefully, other people were +satisfied, too.) + +Since then, I have become interested in other music notation +languages. I have come across many excellent programs and many great +packages I wasn't aware of; I have collected many music snippets and I +have taken notes. I must say that I'm impressed; there are plenty of +options for the musician who is also a \LaTeX{} user. In fact, \TeX{} +can typeset music by itself using extensions, such as the MusiX\TeX{} +family. Besides, \LaTeX{} can easily include music produced by other +scorewriters. + +So, to write \LaTeX{} documents that include music we have to solve +two problems: how do we make the music in a suitable format? And how +do we combine the music with \LaTeX? + +For my own self-training, and in the hope of doing something useful +for other musicians, I have decided to write this guide that explains +how to solve these problems in many ways. In particular, it shows how +to create documents that include many types of music information, from +very simple to quite complex: + +\begin{itemize} + + \item \hyperref[sec:musicsymbols]{music symbols}: + \begin{minipage}[c]{\linewidth} + \includegraphics{glyphs} + \end{minipage} + + \item \hyperref[sec:songbooks]{song lyrics}: + \begin{minipage}[c]{\linewidth} + \includegraphics[width=2cm]{guitar} + \end{minipage} + + \item \hyperref[sec:guitar]{guitar chord diagrams}: + \begin{minipage}[c]{\linewidth} + \includegraphics{gdiagram} + \end{minipage} + + \item \hyperref[sec:sheetmusic]{sheet music}: + \begin{minipage}[c]{\linewidth} + \includegraphics{sheet} + \end{minipage} + + \item \hyperref[sec:tablatures]{guitar tablatures}: + \begin{minipage}[c]{\linewidth} + \includegraphics{gtablature} + \end{minipage} + + \item \hyperref[sec:multimedia]{multimedia files}: + \begin{minipage}[c]{\linewidth} + \href{run:jingle.midi}{\fbox{play me!}} + \end{minipage} + + \item \hyperref[sec:sources]{notation sources}: + \hspace{1em} + \begin{boxedminipage}[c]{0.4\linewidth} + \begin{alltt} +\footnotesize +X: 1 +L: 1/4 +K: C +c G/G/ _AG|z !>!B!>!c z|] +\end{alltt} + \end{boxedminipage} + +\end{itemize} + +This guide aims to provide a roundup of available options, along with +ready-to-use examples. We will examine a few \TeX/\LaTeX{} packages +and several programs that produce high-quality music output; then we +will learn how to include the music (as PDF files, sound files, or +notation sources) in \LaTeX{} documents. + +% ----- + +\subsection{Conventions} + +This document is meant to be consulted in its PDF version (online, if +possible), rather than printed on paper. Hence, it uses many external +links. + +Links are written in short form whenever possible; for instance, the +\pkgname{abc} package will be referred to as +\href{https://www.ctan.org/pkg/abc}{abc} instead of +\url{https://www.ctan.org/pkg/abc}. + +Sources (\LaTeX{} or notation languages) are shown in a frame with a +light green background; the resulting PDF output, when applicable, has +a light gray background. Command line sessions are shown in a frame; +user commands are emphasised in boldface. + +All software described in this guide is +\href{https://en.wikipedia.org/wiki/Free_and_open-source_software}% +{free and open source}. + +% ----- + +\subsection{Preliminaries} + +To begin with, we need a working \LaTeX{} system. I strongly recommend +that you install the latest release of +\href{https://www.tug.org/texlive/}{TeX Live}, which I used to typeset +this manual and all included examples on a GNU/Linux system (TeX Live +2018). Please note that on Debian-based GNU/Linux systems, and maybe +other distributions, the default TeX Live packages may be older. I +suppose that other \TeX{} distributions like +\href{https://miktex.org/}{MiKTeX} or +\href{http://www.tug.org/mactex/}{MacTeX} are just as good, but I have +no first-hand experience with them. + +Secondly, we need a Bash-based command line environment; this is +provided by default in GNU/Linux and macOS systems. Windows users +should install the excellent \href{http://www.msys2.org/}{MSYS2} +platform. + +In most cases, typesetting is done with the common \cmd{pdflatex} +command. Some packages, though, require the \XeLaTeX{} or \LuaLaTeX{} +engines. In this manual, \cmd{pdflatex} is the default command, unless +otherwise specified. + +This manual is not meant to replace the documentation of the packages +and programs that it briefly describes. A few examples are provided to +get you started and to whet your appetite, but in most cases they +don't cover all available features. The package or program +documentation is the primary source of information you should refer +to. + +% Good luck. Some programmers write awsome programs, but clearly +% don't know how to write good, useful, concise documentation. + +Finally, I assume that you are reasonably familiar with \LaTeX. Should +you need some information, fine manuals and tutorials are available at +the \href{https://ctan.org/tex-archive/info/}{\LaTeX{} info page}. + +% ----- + +\subsection{Adding Packages} + +TeX Live provides a large number of packages, but in the following +sections we will deal with packages that may not be included in less +recent releases. Also, some features may be available in package +releases that are newer than those included in TeX Live. In these +cases, you will have to install the missing (or newer) package +manually. The procedure is simple: + +\begin{enumerate} + + \item create this directory structure: + + \verb|$ mkdir -p $HOME/texmf/tex/latex| + + new packages will be installed in this directory tree. + + \item get the package (typically as a zip-compressed directory) from + your favourite CTAN mirror; let's call it \file{foo.zip} + + \item unpack it in the right place: + + \verb|$ mkdir $HOME/texmf/tex/latex/foo| + + \verb|$ mv foo.zip $HOME/texmf/tex/latex/foo| + + \verb|$ cd $HOME/texmf/tex/latex/foo ; unzip foo.zip| + + \item if no \file{.sty} file exists, run the command + \cmd{latex foo.ins} or \cmd{latex foo.dtx} to create it; + + \item run the command \cmd{texhash \$HOME/texmf} + +\end{enumerate} + +Package \pkgname{foo} is now accessible. + +If you are installing a package that is newer than that in TeX Live +and want \LaTeX{} to use it, add this line to your \file{.bashrc}: + +\begin{verbatim} +export TEXINPUTS=$HOME/texmf/tex//: +\end{verbatim} +% $ + +Please note the double \cmd{/} at the end. This line makes \TeX{} +search recursively in \file{\$HOME/texmf/tex/}, then it adds the +current value of \cmd{TEXINPUTS} (if any) to the search path. + +% ----- + +\subsection{Including PDF files} + +It's reasonable to assume that PDF is the most sensible format for +final output. PostScript, SVG, PNG and other formats will not be +considered, but it's easy to convert PDF files to these formats using +applications like \href{https://inkscape.org}{Inkscape} or +\href{https://www.imagemagick.org}{ImageMagick}. + +Unless you create music directly using \pkgname{MusiXTeX} and related +packages (Section~\ref{sec:musixtex}), your \LaTeX{} document will +include music as PDF files. Such files can be short excerpts, i.e.\ +smaller than a page, or span several pages. These files will be +included with the \ltx{includegraphics} command (package +\pkg{graphicx}) or with the \ltx{include\-pdf} command (package +\pkg{pdfpages}), respectively: + +\begin{source} +\begin{verbatim} +\documentclass[oneside]{article} +\usepackage{graphicx} +\usepackage{pdfpages} +\usepackage[a4paper,margin=1.5cm]{geometry} + +\begin{document} + +This is a short excerpt: + +\includegraphics[width=0.8\textwidth]{sample.pdf} + +Let's now include several pages: + +% pages=- means "all pages" +\includepdf[pages=-,pagecommand={},width=\textwidth]{music.pdf} + +\end{document} +\end{verbatim} +\end{source} + +I suggest that you read the excellent \pkg{epslatex} guide that +explains many details on alignment, size, rotation etc.\ of included +graphics files. + +In the case of short excerpts, we need some means of cropping the PDF +to its actual contents (bounding box); PDF files, in fact, are usually +created as whole pages. Cropping the PDF is accomplished with the free +program \href{http://pdfcrop.sourceforge.net}{pdfcrop}, a very useful +Perl script that depends on +\href{https://www.ghostscript.com}{Ghostscript} and +\href{http://pdfedit.cz/en/index.html}{PDFedit}. + +Given a file called \file{music.pdf}, we crop it with these commands: + +\begin{screen} +$ \textbf{pdfcrop music.pdf} +PDFCROP 1.38, 2012/11/02 - Copyright (c) 2002-2012 by Heiko Oberdiek. +==> 1 page written on \verb|`|music-crop.pdf'. +$ \textbf{mv -f music-crop.pdf music.pdf} +$ _ +\end{screen} +% $ + +Pdfcrop doesn't work on MSYS2; moreover, MSYS2's Ghostscript package +lacks the \cmd{bbox} device. However, if you install the official +release of Ghostscript for Windows, you can use the following shell +script, \cmd{pdfcrop.sh}. It only works with single-page PDF files: + +\begin{source} +\begin{verbatim} +#!/bin/sh + +# pdfcrop.sh - for MSYS2 and GhostScript +# Guido Gonzato, PhD. GPL 2 or later. + +MYSELF=$(basename $0) + +if [ $# -eq 0 ] ; then + printf "Usage: ${MYSELF} <file.pdf>\n" + printf "This script uses 'gs' to crop a one-page pdf file.\n\n" + exit 1 +fi + +# GhostScript for Windows is installed in C:\Gs +GS=/c/gs/gs9.26/bin/gswin64c.exe +# GNU/Linux and others: +# GS=/usr/bin/gs +INPUT=$1 +PDF=$(basename $1 .pdf) +OUTPUT=$PDF-crop.pdf +GSOPTS="-q -sDEVICE=bbox -dBATCH -dNOPAUSE" + +# find out the bounding box +$GS $GSOPTS $INPUT 2>&1 | grep "%%B" > $PDF.bbox + +# read bbox coordinates in variables +read tmp X1 Y1 X2 Y2 < $PDF.bbox + +# write the output, cropped to bbox +$GS -q -o $OUTPUT \ + -sDEVICE=pdfwrite \ + -c "[ /CropBox [$X1 $Y1 $X2 $Y2] /PAGES pdfmark" \ + -f $INPUT + +/bin/rm -f $PDF.bbox + +echo "$INPUT cropped to $OUTPUT" +\end{verbatim} +\end{source} + +% $ + +% ----- + +\noteseparator + +% ----- + +\section{Music Symbols} +\label{sec:musicsymbols} + +The simplest music elements we may want to include in our documents +are music symbols (\emph{glyphs}). Standard \LaTeX{} only provides the +math mode commands \ltx{sharp}, \ltx{flat}, and \ltx{natural}: +$\sharp$ $\flat$ $\natural$. Additional glyphs are provided by several +packages; moreover, glyphs provided by music fonts are accessible via +\XeLaTeX{} and Lua\LaTeX. + +% ----- + +\subsection{Using Packages} + +The impressive +\href{http://tug.ctan.org/info/symbols/% +comprehensive/symbols-a4.pdf}% +{Comprehensive LaTeX Symbol List}, Section 7, lists packages that +provide a handful of music symbols: \pkg{textcomp}, \pkg{mnsymbol}, +\pkg{fdsymbol}, \pkg{boisik}, \pkg{wasysym}, \pkg{stix}, and +\pkg{arev}. + +More symbols are provided by \pkg{musicography}, \pkg{leadsheets}, and +\pkg{harmony}. These packages work with \cmd{pdflatex}, but still +provide a fairly limited number of glyphs. Besides, there could be +incompatibility between packages because of commands defined using the +same name. + +% TODO: figure out what harmony glyphs are for... + +% ----- + +\subsubsection{Package \pkg{musicography}} + +This package may be missing in less recent releases of TeX Live, so +you might have to install it manually. If you only need a limited +number of glyphs, then \pkg{musicography} may do the job: + +\begin{source} +\begin{verbatim} +\documentclass{article} +\usepackage{musicography} +\thispagestyle{empty} % no page number + +\begin{document} + +Musicography makes the music symbol font provided by MusiX\TeX\ +available as text font and then uses it to define a number +of symbols: + +\musFlat\ \musSharp\ \musNatural\ \musDoubleFlat\ \musDoubleSharp\ +\musWhole\ \musHalf\ \musQuarter\ \musEighth\ \musSixteenth\ +\musWholeDotted\ \musHalfDotted\ \musQuarterDotted\ +\musEighthDotted\ \musSixteenthDotted\ +\meterC\ \meterCutC\ \meterCThree\ \meterCThreeTwo\ \meterCZ\ +\musMeter{7}{8} + +\end{document}\end{verbatim} +\end{source} + +\score{musicography} + +% ----- + +\subsubsection{Package \pkg{leadsheets}} + +If you only need a limited number of glyphs, then also +\pkg{leadsheets} may do the job: + +\begin{source} +\begin{verbatim} +\documentclass{article} +\usepackage[minimal]{leadsheets} +\useleadsheetslibraries{musicsymbols} +\thispagestyle{empty} + +\begin{document} + +Leadsheets makes the music symbol font provided by MusiX\TeX\ +available as text font and then uses it to define a number +of symbols: + +\sharp\ \doublesharp\ \flat\ \doubleflat\ \natural\ +\trebleclef\ \altoclef\ \bassclef\ \meterC\ \allabreve\ +\meter{12}{8}\ \wholerest\ \halfrest\ \quarterrest\ +\eighthrest\ \sixteenthrest\ \Break\ \normalbar\ +\leftrepeat\ \rightrepeat\ \leftrightrepeat\ \doublebar\ +\stopbar + +\end{document} +\end{verbatim} +\end{source} + +\score{glyphs_ls} + +This package also provides the \ltx{writechord} command to typeset +chords: + +\begin{source} +\begin{verbatim} +\documentclass[12pt]{article} +\usepackage[minimal]{leadsheets} +\useleadsheetslibraries{chords} +\thispagestyle{empty} + +\begin{document} + +Let's typeset some chords: \writechord{Bb7(#9)} \writechord{Bbb6} +\writechord{C#7(b9)} \writechord{C##13} + +\end{document} +\end{verbatim} +\end{source} + +\scoreshort{chords} + +% ----- + +\subsubsection{Package \pkg{lilyglyphs}} + +One of the most complete sources of music glyphs is the +\pkg{lilyglyphs} package. It provides all the symbols available in the +\href{http://lilypond.org/doc/v2.18/% +Documentation/notation/the-feta-font} {Emmentaler} music font, which +is used by the \href{http://lilypond.org}{LilyPond} scorewriter +(Section~\ref{sec:lilypond}). \pkgname{Lilyglyphs} only works with +\XeLaTeX{} and \LuaLaTeX, and is incompatible with +\pkgname{leadsheets} and \pkgname{MusiXTeX}. Available glyphs and +corresponding commands are listed in Section 3 of the package +\href{http://mirrors.ctan.org/macros/luatex/latex/lilyglyphs/% +documentation/lilyglyphs.pdf}{documentation}. + +This is a very small example of what \pkgname{Lilyglyphs} provides: + +\begin{source} +\begin{verbatim} +\documentclass{article} +\usepackage{fontspec} +\usepackage{lilyglyphs} +\thispagestyle{empty} + +\begin{document} + +Lilyglyphs makes the music symbol font provided by LilyPond available +as text font and then uses it to define a number of symbols, some +\clefGInline\ of which \clefCInline\ can be used \clefFInline\ inline: + +clefs:~ \clefG\ \clefC\ \clefF\ ~time signatures:~ +\lilyTimeC\ \lilyTimeCHalf\ \lilyTimeSignature{7}{8}\ +~accidentals:~ \sharp\ \flat\ \natural\ \doublesharp\ \flatflat\ +~rests:~ \wholeNoteRest\ \halfNoteRest\ \crotchetRest\ +~notes:~ \wholeNote\ \halfNote\ \halfNoteDown\ \quarterNote\ +\quarterNoteDotted\ +~and much, much more. + +\end{document} +\end{verbatim} +\end{source} + +\score{lilyglyphs} + +% ----- + +\subsection{Using Music Fonts} + +The \XeLaTeX{} and Lua\LaTeX{} engines use Unicode input by default +and support OTF/TTF fonts. We can use these engines to print any +character provided by locally installed fonts; these can be listed +with the \cmd{fc-list} command, provided by the +\href{https://www.fontconfig.org/}{Fontconfig} software. + +Some fonts are especially useful for music. Unicode-encoded fonts +provide \href{https://www.unicode.org/charts/PDF/U1D100.pdf}{music +symbols}, which we can find for instance in +\href{https://www.gnu.org/software/freefont/}{GNU FreeFont}. However, +a font standard for music applications called +\href{https://www.smufl.org}{SMuFL} has been developed. + +Specifically, \href{https://www.smufl.org/fonts}{Bravura} is a free, +SMuFL-compliant music font that provides thousands of high-quality +music glyphs. Bravura is available in OpenType format as +\file{Bravura.otf} and \file{BravuraText.otf}; the first is used for +drawing music symbols in scores, the second for inserting music +symbols in text. Each glyph is mapped to a numerical code called +\emph{code point}; a comprehensive list of glyphs and the +corresponding code points is available at +\url{https://www.smufl.org/version}. + +The following source shows how to use the glyphs provided by Bravura. +We can define new commands for commonly used glyphs, or directly use +the \ltx{char"XXXX} syntax to print Unicode characters specifying +their code point. The fonts are expected to be installed in +\path{/usr/share/fonts/}; if you install the fonts in a different +directory, you'll also have change the following source accordingly: + +\begin{source} +\begin{verbatim} +\documentclass{article} +\usepackage{fontspec} +\thispagestyle{empty} +\newfontfamily\brtxt{BravuraText.otf}[Path=/usr/share/fonts/] +\newfontfamily\brv{Bravura.otf}[Path=/usr/share/fonts/] + +\newcommand{\clefGi} {{\brtxt \char"E050}} +\newcommand{\clefCi} {{\brtxt \char"E05C}} +\newcommand{\clefFi} {{\brtxt \char"E062}} + +\newcommand{\clefG} {{\brv \char"E050}} +\newcommand{\clefC} {{\brv \char"E05C}} +\newcommand{\clefF} {{\brv \char"E062}} +\newcommand{\timeC} {{\brv \char"E08A}} +\newcommand{\timeCHalf} {{\brv \char"E08B}} +\renewcommand{\flat} {{\brv \char"E260}} +\renewcommand{\natural} {{\brv \char"E261}} +\renewcommand{\sharp} {{\brv \char"E262}} +\newcommand{\wholeNote} {{\brv \char"E1D2}} +\newcommand{\halfNote} {{\brv \char"E1D3}} +\newcommand{\halfNoteDown}{{\brv \char"E1D4}} +\newcommand{\quarterNote} {{\brv \char"E1D5}} + +\begin{document} + +The Bravura and BravuraText Music fonts provide thousands of music +symbols. BravuraText glyphs are specifically \clefGi\ designed +\clefFi\ to be used \clefCi\ inline: + +clefs:~ \clefG\ \clefC\ \clefF\ ~time signatures:~ +\timeC\ \timeCHalf\ ~accidentals:~ \sharp\ \flat\ \natural\ +~notes:~ \wholeNote\ \halfNote\ \halfNoteDown\ \quarterNote\ +~and much, much more. + +\end{document} +\end{verbatim} +\end{source} + +\score{bravura} + +% ----- + +\noteseparator + +% ----- + +\section{Song Lyrics} +\label{sec:songbooks} + +Several packages make it possible to typeset song lyrics, with varying +degrees of complexity. For instance, we may want to write lyrics only; +other useful features include chords above lyrics, guitar chords +diagrams, transposition, index generation, etc. + +% ----- + +\subsection{Package \pkg{guitar}} +\label{sec:pkgguitar} + +This is a very basic and simple to use package that provides a +\env{guitar} environment to add chords above lyrics. Customisation +options include alignment, spacing, font, and other low-level +details. + +A minimal +example: + +\begin{source} +\begin{verbatim} +\documentclass{article} +\thispagestyle{empty} +\usepackage{guitar} + +\begin{document} + +\begin{guitar} + \textbf{Imagine (John Lennon)} + + \emph{Intro, $\times$ 2} + % use tilde to add some space + [C] ~ [Cmaj7] ~ [F] ~ + % if chords overlap, add | at the end of the chord, like: + [C]Imagine there's [Cmaj7|]{no} [F]heaven + [C]It's easy if [Cmaj7|]{you} [F]try + [C]No hell [Cmaj7|]{below} [F]us + [C]Above us [Cmaj7|]{only} [F]sky +\end{guitar} + +\end{document} +\end{verbatim} +\end{source} + +\scoreshort{guitar} + +% ----- + +\subsection{Package \pkg{gtrcrd}} + +This is another basic and simple to use package. Customisation options +include chord location and name (Do-Re-Mi instead of C-D-E), font, +transposition, and spacing. Chords overlaps need manual adjustment. + +\begin{source} +\begin{verbatim} +\documentclass{article} +\thispagestyle{empty} +\usepackage{gtrcrd} + +\setlength{\crdheight}{2ex} % reduce spacing +\def\crdfont{\footnotesize \itshape \sffamily} % setchord font +\setlength{\parindent}{0pt} % no indentation + +\begin{document} + +\textbf{Imagine (John Lennon)} + +\emph{Intro, $\times$ 2} + +% if chords overlap, use \hspace: +\C {\hspace{3mm}} \C[maj7] {\hspace{10mm}} \F ~ + +\C Imagine there's \C[maj7] no {\hspace{5mm}} \F heaven + +\C It's easy if \C[maj7] you {\hspace{2mm}} \F try + +\C No hell \C[maj7] below \F us + +\C Above us \C[maj7] only {\hspace{2mm}} \F sky +\end{document} +\end{verbatim} +\end{source} + +\scoreshort{gtrcrd} + +% ----- + +\subsection{Package \pkg{songs}} +\label{sec:pkgsongs} + +This is a very powerful package that provides many features: chords +above lyrics, guitar chords diagrams (Section~\ref{sec:songs_cd}), +transposition, index generation, multiple columns, and more. Overall, +it allows for the creation of complete songbooks. + +% \enlargethispage{\baselineskip} + +\begin{source} +\begin{verbatim} +\documentclass{article} +\thispagestyle{empty} +\usepackage[chorded]{songs} + +\begin{document} + +\renewcommand{\lyricfont}{\small} +\renewcommand{\printchord}{\it\small} +\afterpreludeskip=-18pt +\beforepostludeskip=-8pt + +\begin{songs}{} +\beginsong{Imagine}[by={John Lennon}] +\beginverse + \emph{Intro, $\times$ 2} + \[C] \[Cmaj7] \[F] + \[C]Imagine there's \[Cmaj7]no \[F]heaven + \[C]It's easy if \[Cmaj7]you \[F]try + \[C]No hell \[Cmaj7]below \[F]us + \[C]Above us \[Cmaj7]only \[F]sky +\endverse +\endsong +\end{songs} + +\end{document} +\end{verbatim} +\end{source} + +\scoreshort{songs} + +% ----- + +\subsection{Package \pkg{musixguit}} + +This package is integrated with \pkg{musixtex} +(Section~\ref{sec:musixtex}), and is also capable of producing sheet +music and guitar chord diagrams. Its documentation is written in +German; if you can't read it don't worry, the provided examples are +easy to understand. Chords overlaps need manual adjustment. + +\begin{source} +\begin{verbatim} +\documentclass{article} +\usepackage{musixguit} +\thispagestyle{empty} + +\begin{document} + +\textbf{Imagine (John Lennon)} + +\begin{song} + +\emph{Intro, $\times$ 2} + +\chord{C} ~ \chord{Cmaj7} {\hspace{8mm}} \chord{F} + +\chord{C}Imagine there's \chord{Cmaj7}no~~~ \chord{F}heaven + +\chord{C}It's easy if \chord{Cmaj7}you~~ \chord{F}try + +\chord{C}No hell \chord{Cmaj7}below \chord{F}us + +\chord{C}Above us \chord{Cmaj7}only~ \chord{F}sky + +\end{song} + +\end{document} +\end{verbatim} +\end{source} + +\scoreshort{musixguit} + +% ----- + +\subsection{Package \pkg{leadsheets}} +\label{sec:leadsheets} + +This package provides many features: music and symbols, chords, +MuseJazz style, a \env{song} and a \env{verse} environment, +transposition, a \cmd{leadsheet} class, and templates. Overall, this +package allows for the creation of complete songbooks. + +\begin{source} +\begin{verbatim} +\documentclass{article} +\usepackage[full]{leadsheets} +\thispagestyle{empty} + +\begin{document} + +\begin{song}{title={Imagine}, music={John Lennon}} +\begin{verse} + + Intro, $\times$ 2\\ + \chord{C}~ \chord{Cmaj7}~ \chord{F}~ + + % The ^ character is a shortcut for \chord + \chord{C}Imagine there's ^{Cmaj7}no ^{F}heaven \\ + ^{C}It's easy if ^{Cmaj7}you ^{F}try \\ + ^{C}No hell ^{Cmaj7}below ^{F}us \\ + ^{C}Above us ^{Cmaj7}only ^{F}sky \\ + +\end{verse} +\end{song} + +\end{document} +\end{verbatim} +\end{source} + +\scoreshort{leadsheets} + +% ----- + +\subsection{Package \pkg{songbook}} + +This is another powerful package that provides support for chords, +songs, overhead transparencies, and index generation. + +\begin{source} +\begin{verbatim} +\documentclass{article} +\usepackage[chordbk]{songbook} +\thispagestyle{empty} + +\begin{document} + +\textbf{Imagine (John Lennon)} + +% \medskip + +\emph{Intro, $\times$ 2} + +\Ch{C}~ \Ch{Cmaj7}~ \Ch{F}~ + +\Ch{C}{Imagine} there's \Ch{Cmaj7}{no} \Ch{F}heaven + +\Ch{C}{It's} easy if \Ch{Cmaj7}{you} \Ch{F}{try} + +\Ch{C}No hell \Ch{Cmaj7}{below} \Ch{F}us + +\Ch{C}{Above} us \Ch{Cmaj7}{only} \Ch{F}{sky} + +\end{document} +\end{verbatim} +\end{source} + +\scoreshort{songbook} + +% ----- + +\subsection{Program: \href{https://www.vromans.org/projects/Chordii/} +{chordii}} + +Chordii is a free command-line program, released under the +\href{https://www.gnu.org/licenses/licenses.en.html}{GNU GPL}. It uses +a simple text notation to typeset songs in PostScript format, complete +with chords and guitar chord grid. + +This is the source of a song written in Chordii format: + +\begin{source} +\begin{verbatim} +{titles:left} +{title:Imagine} +{st:John Lennon} + +(Intro, x 2) +[C] [Cmaj7] [F] +[C]Imagine there's [Cmaj7]no [F]heaven +[C]It's easy if [Cmaj7]you [F]try +[C]No hell [Cmaj7]below [F]us +[C]Above us [Cmaj7]only [F]sky +\end{verbatim} +\end{source} + +% \medskip + +We typeset the score with these commands: + +\begin{screen} +$ \textbf{chordii -a imagine.cho > imagine.ps} +$ \textbf{ps2pdf imagine.ps} +$ _ +\end{screen} +% $ + +The \cmd{-a} switch means ``Automatic single space lines without +chords''. The resulting song is: + +\bigskip + +\scoreshort{chordii} + +% ----- + +\noteseparator + +% ----- + +\section{Guitar Chord Diagrams} +\label{sec:guitar} + +Guitar players may need to print \emph{guitar chords diagrams} and +\emph{guitar tablatures}; both can be made with \LaTeX{} packages and +external programs. As a matter of fact, these music features are not +limited to the guitar; chord diagrams and tablatures apply to other +stringed instruments as well. + +Tablatures are a form of music notation that is usually employed to +show how a \emph{melody} should be fingered on the fretboard. Since +tablatures are just a special form of music notation, we will deal +with them after the section about sheet music. For the moment, let's +see how to do guitar chord diagrams. + +For an authoritative list of standard guitar chords diagrams, I +suggest that you visit \href{http://lilypond.org/doc/v2.18/% +Documentation/notation/predefined-fretboard-diagrams}{this useful +page}. + +% ----- + +\subsection{Package \pkg{gchords}} +\label{sec:gchords} + +This package makes it possible to print guitar chord diagrams using +the \ltx{chord} command that employs a simple syntax: + +\medskip + +\ltx{chord}{\emph{\{fret +number\}}}{\emph{\{fingering\}}}{\emph{\{chord name\}}} + +\begin{itemize} + + \item \emph{fret number} can be \texttt{\{t\}}, which means top + fret, or \texttt{\{t\}} followed by a digit that denotes the fret; + + \item \emph{fingering} is explained in the example below; + + \item \emph{chord name} is the given chord name. + +\end{itemize} + +The \ltx{chords} command prints a row of chords, each defined by a +\ltx{chord} command: + +\begin{source} +\begin{verbatim} +\documentclass{article} +\usepackage{gchords} +\thispagestyle{empty} + +\begin{document} + +\def\numfrets{4} + +\chords{ % print a row of chords +% fingers: n, x, o, p{n}, f{n} +% C chord: finger 3 pos. 3, finger 2 pos. 2, finger 1 pos. 1 +\chord{t}{n,f3p3,f2p2,n,f1p1,n}{C} +\chord{t}{n,n,p2,p2,p1,n}{Am} +\chord{t}{x,n,n,p2,p3,p1}{Dm} +\chord{t3}{n,p2,n,p1,n,n}{G7 (ugly)} +{\tiny % font size for string labels, t{X} +\chord{t}{t{E}n,t{A}n,t{D}n,t{G}n,t{B}n,t{e}n} +{std. tuning} } +} + +\end{document} +\end{verbatim} +\end{source} + +\scoreshort{gchords} + +% ----- + +\subsection{Package \pkg{songs}} +\label{sec:songs_cd} + +We met this package in Section~\ref{sec:pkgsongs}. It provides an +easy way to print guitar chord diagrams (referred to as ``guitar +tablatures'' in the package). The \ltx{gtab} command defines chord +diagrams using a very simple syntax: + +\medskip + +\ltx{gtab}{\emph{\{chord name\}}} +{\emph{\{fret:strings:fingering\}}} + +\begin{itemize} + + \item \emph{chord name} is the given chord name; + + \item \emph{fret} is an optional fret number; + + \item \emph{strings} is a string of digits denoting the strings that + compose the chord; + + \item \emph{fingering} is an optional string of digits denoting the + fingers to use. + +\end{itemize} + +\begin{source} +\begin{verbatim} +\documentclass{article} +\thispagestyle{empty} +\usepackage[chorded]{songs} + +\begin{document} + +% \gtab{chord name}{fret:strings:fingering} +\gtab{C}{032010:032010} \gtab{Cmaj7}{032000:032000} +\gtab{F}{1:022100} + +\end{document} +\end{verbatim} +\end{source} + +\scoreshort{songs_g} + +% ----- + +\subsection{Package \pkg{guitarchordschemes}} + +This package enables the creation of fully customisable guitar chord +diagrams and scales. The main command is \ltx{chordscheme}, and is +quite self-explanatory: + +\begin{source} +\begin{verbatim} +\documentclass{article} +\usepackage{guitarchordschemes} +\thispagestyle{empty} + +\begin{document} + +% general parameters +\setchordscheme{ + rotate=-90, + x-unit=2.5mm, % chord size, x + y-unit=3mm, % chord size, y + name-format=\bfseries, % chord name font + finger-format=\bfseries% + \footnotesize % fingering font +} + +\newsavebox{\Gstd} +\savebox{\Gstd}{ +\chordscheme[ % define the chord + name = G (Sol), % chord name + position = 1, % first fret position + finger = {2/5:2} , % fret, string, finger + finger = {3/6:3} , % fret, string, finger + finger = {3/1:4} , % fret, string, finger + ring = {2,3,4} % open strings +]} + +\newsavebox{\Gbarre} +\savebox{\Gbarre}{ +\chordscheme[ + name = G (Sol) barre, + position = 3, + barre = 1/1-6, % fret, string range + finger = {2/3:2}, + finger = {3/5:3}, + finger = {3/4:4} +]} + +\usebox{\Gstd}\usebox{\Gbarre} + +\end{document} +\end{verbatim} +\end{source} + +\scoreshort{gcschemes} + +% ----- + +\noteseparator + +% ----- + +\section{Sheet Music} +\label{sec:sheetmusic} + +In this section, we will learn how to produce sheet music in PDF +format for inclusion in \LaTeX{} documents. Sheet music can be typeset +by \TeX{} itself, but we can also use the output produced by one of +the several free and open source scorewriters. + +In the next few sections, we will briefly examine each option. Music +notation languages will not be explained, for obvious space reasons. +Minimal sources will be listed to give minimal working examples and to +get acquainted with the notation complexity. + +% ----- + +\subsection{Which Notation Software?} + +I'm not going to suggest any particular music notation software. I do +have my personal preferences; I find some notations easier than +others; some programs have more features than others; and so on. +Nevertheless, I think that all packages and programs described in the +following sections have their advantages, and all of them can typeset +beautiful scores. Unless you need specific features, choosing a +typesetting software is mostly a matter of personal preference. Let's +put it this way: the best program is the one that lets you obtain the +results you need, with the least effort, in the least amount of time, +and the most fun. + +All software described below is capable of typesetting complex Western +music: multiple voices and staves, symbols, dynamics, lyrics, text +annotations; sone of them can also do tablatures and more. + +% ----- + +\subsection{Packages \pkg{musixtex}, \pkg{m-tx}} +\label{sec:musixtex} + +In the beginning, \TeX{} could not typeset music, and everyone was +unhappy. Then the \pkg{mtex} (aka \pkgname{MuTeX}) package was +created, but it was limited and not very easy to use. Then +\pkgname{MuTeX} begat \pkgname{MusicTeX}, which begat \pkg{pmtex}; +then \pkgname{MusicTeX} begat \pkg{musixtex}, which begat \pkg{pmx}, +which begat \pkg{m-tx}. I hope I got the storyline right. Each package +was a simpler interface to its predecessors. + +In reverse order: \pkgname{M-Tx} is a preprocessor to \pkgname{PMX}, +which in turn is a preprocessor for \pkgname{MusiXTeX}, which does the +actual music typesetting via \TeX. It goes without saying that +\pkgname{M-Tx} is the simplest to use, while \pkgname{MusiXTeX} is the +most difficult to use but also the most powerful. Other packages +related to \pkgname{MusiXTeX} are the following: + +\begin{itemize} + + \item \pkg{autosp} generates note-spacing commands for + \pkgname{MusiXTeX} scores; + + \item \pkg{bagpipe} provides support for typesetting bagpipe music; + + \item \pkg{bizantinemusic} facilitates the writing of Byzantine + music; + + \item \pkg{figbas} provides mini fonts for figured bass notation in + \pkgname{MusiXTeX}; + + \item \pkg{gregoriotex} provides engraving of Gregorian Chant + (Section~\ref{sec:gregoriotex}); + + \item \pkg{lyluatex} provides commands to include LilyPond scores in + Lua\LaTeX{} documents (Section~\ref{sec:lyluatex}); + + \item \pkg{musixtnt} is an extension library that enables + transformations of the effect of notes commands; + + \item \pkg{pmxchords} produces chord information to go with pmx + output; + + \item \pkg{snote} provides shape notes for \pkgname{MusixTeX}; + + \item \pkg{texmuse} is a music typesetting system using \TeX{} + and Metafont. + +\end{itemize} + +From \pkg{musixtex} home page: + +\begin{quote} + + MusiXTEX provides a set of macros, based on the earlier MusicTEX, + for typesetting music with \TeX. + +\end{quote} + +\pkgname{MusiXTeX} is quite low-level, and the user must take care of +such details as beam slope and note spacing; several examples are +available \href{https://ctan.org/tex-archive/macros/% +musixtex/doc/examples}{here}. Notably, it works with plain \TeX. (Ever +tried plain \TeX?) A minimal example (\file{sample-mtex.tex}): + +\begin{source} +\begin{verbatim} +% bare MusiXTeX example + +\input musixtex +\nopagenumbers + +\setstaffs1{1} % a single stave +\setclef1{\treble} % with a treble clef +\generalmeter{\meterC} % common time +\nobarnumbers % what it says +\startextract % a short music piece + % \qu = quarter note, stem up; + % \ql = quarter note, stem down; + % \Notes, \en = start and end of note line + \Notes \qu c \qu d \qu e \qu f \en + \bar + \Notes \qu g \qu{'a} \ql b \ql c \en +\endextract + +\end +\end{verbatim} +\end{source} + +We typeset the score with these commands: + +\begin{screen} +$ \textbf{tex sample-mtex.tex} +$ \textbf{dvips sample-mtex.dvi} +$ \textbf{ps2pdf sample-mtex.ps} +$ _ +\end{screen} + +\scoreshort{sample-mtex} + +\pkgname{MusiXTeX} input can also be embedded in \LaTeX{} documents +(\file{sam\-ple-m\-la\-tex.tex}): + +\begin{source} +\begin{verbatim} +\documentclass{article} +\usepackage{musixtex} +\thispagestyle{empty} + +\begin{document} + +A short music excerpt in MusiX\TeX: + +\medskip + +\begin{music} + \smallmusicsize + \instrumentnumber{1} + \setstaffs1{1} + \generalmeter{\meterC} + \nobarnumbers + \startextract + % bar 1 + \Notes \qu c \en % C + \notes \ibu1d2\qb1d\tbu1\qb1e \en % beamed DE + \notes \ibu1g2\qb1f\qb1g% + \qb1{'a}\tbu1\qb1b \en % beamed FGAB + \bar % bar 2 + \Notes \ql{'c} \en % c + \notes \ibu1{'b}{-3}% + \qb1b\tbu1\qb1a \en % beamed BA + \notes \ibu1{g}{-3}% + \qb1g\qb1f\qb1e\tbu1\qb1d \en % beamed GFED + \bar % bar 3 + \notes \ibu1f0\qb1c\qb1g\qb1e\tbu1\qb1g% % beamed CGEG + \ibu1f0\qb1c\qb1g\qb1e\tbu1\qb1g \en % beamed CGEG + \bar % bar 4 + \Notes \qu c\qu e\qu c\qp \en % CEC + \endextract + +\end{music} + +\end{document} +\end{verbatim} +\end{source} + +\score{sample-mlatex} + +\bigskip + +Admittedly it looks a bit arcane, and I'll point you to the +\href{http://mirrors.ctan.org/macros/musixtex/doc/musixdoc.pdf} +{documentation} for explanations. I suggest that you learn at least +the basics of it; several useful packages are based on this syntax. + +\pkgname{M-Tx} employs a much simpler notation than +\pkgname{MusiXTeX}. This is a standalone music sample +(\file{sample-mtx.mtx}) that produces the same music as the above +\pkgname{MusiXTeX} score: + +\begin{source} +\begin{verbatim} +% music sample in M-Tx notation + +Title: \bigtype Music sample in M-tx +Style: Solo +Meter: C +Width: 140mm + +c4 d8 e f g a b | c4 b8 a g f e d | c8 g+ e g c- g+ e g | c4- e c r | +\end{verbatim} +\end{source} + +We typeset the score with this command: + +\begin{screen} +$ \textbf{musixtex sample-mtx.mtx} +This is musixtex.lua version 0.21. +==> This is M-Tx 0.63a (Music from TeXt) <8 April 2018> +==>> Input from file sample-mtx.mtx +... +sample-mtx.pdf generated by ps2pdf. +$ _ +\end{screen} +% $ + +\noindent which produces \file{sample-mtx.pdf}. In older versions of +\pkgname{M-Tx}, the command was \cmd{m-tx}; it has now been retired +and replaced by \cmd{musixtex}. This is the resulting score: + +\bigskip + +\score{sample-mtx} + +\bigskip + +Music in \pkgname{M-Tx} format can be easily included in \LaTeX{} +documents. \pkgname{M-Tx} provides the \env{Score}, \env{excerpts}, +and \env{mus} environments to include complete pieces, short excerpts, +and inline short excerpts respectively. Let's see how to use +\cmd{excerpts} and \cmd{mus}; a few steps are required. + +First of all, the \LaTeX{} source that includes the \pkgname{M-Tx} +music files must not have a \file{.tex} extension; \file{.ltx} or +\file{.latex} are ok. Let's call our sample file +\file{sample-latexmtx.ltx}. + +Secondly, we need the \file{mtxlatex.sty} style file, which is not +installed by default but is found in the \pkgname{M-Tx} documentation +directory. In TeX Live, \file{mtxlatex.sty} is located in directory +\path{/usr/share/doc/texlive-doc/generic/m-tx}. This file must be +copied to the same directory as the source file; all included +\pkgname{M-Tx} files must be copied there too. + +We already met \file{sample-mtx.mtx}; the following is another short +excerpt, \file{scale.mtx}. It produces a 30mm wide scale: + +\begin{source} +\begin{verbatim} +Style: Solo +Meter: C +Size: 13pt +Width: 30mm + +c8 d e f g2 | +\end{verbatim} +\end{source} + +Finally, this is the main file \file{sample-latexmtx.ltx}: + +\begin{source} +\begin{verbatim} +\documentclass[12pt]{article} +\usepackage{mtxlatex} % usually not installed +\thispagestyle{empty} + +\mtxlatex + +\begin{document} + +This \LaTeX{} document includes music written in M-Tx. The +\texttt{mus} environment includes music inline: +\begin{mus} \input{scale.tex} \end{mus} , while the +\texttt{excerpts} environment is used for longer excerpts: + +\medskip + +\begin{excerpts} + \input{sample-mtx.tex} +\end{excerpts} + +\end{document} +\end{verbatim} +\end{source} + +We typeset the document with this command: + +\begin{screen} +$ \textbf{musixtex sample-mtx scale sample-latexmtx.ltx} +... +sample-latexmtx.pdf generated by ps2pdf. +$ _ +\end{screen} +% $ + +Please note that we omitted the \pkgname{M-Tx} file extensions, and +that the main file is the last in the command line. We obtain this +output: + +\bigskip + +\score{sample-latexmtx} + +\bigskip + +Please also note that the \pkgname{M-Tx} excerpts cannot be resized as +if they were included PDF files: their geometry, in fact, is set in +the \pkgname{M-Tx} source. + +% ----- + +\subsection{Package \pkg{gregoriotex}} +\label{sec:gregoriotex} + +This package typesets Gregorian chant. Input is in GABC format, a +simple text notation inspired by the +\href{http://abcnotation.com/}{ABC notation} that we'll examine later +on. Conversion requires Lua\LaTeX. + +This is a sample GABC source, \file{kyrie.gabc}, taken from the +package documentation: + +\begin{source} +\begin{alltt} +name:Kyrie XVII; +%% +(c4)KY(f)ri(gfg)e(h.) *() +e(ixjvIH'GhvF'E)l\'e(ghg')i(g)son.(f.) +<i>bis</i>(::) +\end{alltt} +\end{source} + +We also need an auxiliary \LaTeX{} source, \file{kyrie.tex}: + +\begin{source} +\begin{verbatim} +\documentclass{article} +\thispagestyle{empty} +\usepackage[autocompile]{gregoriotex} + +\begin{document} + +\gregorioscore{kyrie} + +\end{document} +\end{verbatim} +\end{source} + +We typeset the score with this command: + +\begin{screen} +$ \textbf{lualatex kyrie.tex} +... +Output written on kyrie.pdf (1 page, 11290 bytes). +Transcript written on kyrie.log. +$ _ +\end{screen} +% $ + +\scoreshort{kyrie} + +% ----- + +\subsection{Program: \href{http://lilypond.org/}{LilyPond}} +\label{sec:lilypond} + +LilyPond is a free and multiplatform scorewriter, released under the +GNU GPL. From the LilyPond home page: + +\begin{quote} + + LilyPond is a music engraving program, devoted to producing the + highest-quality sheet music possible. It brings the aesthetics of + traditionally engraved music to computer printouts. LilyPond is free + software and part of the \href{http://gnu.org/}{GNU Project}. + +\end{quote} + +LilyPond uses a simple text notation for music input; output is PDF by +default. This is our usual music sample in LilyPond format, +\file{sample-lily\-pond.ly}: + +\begin{source} +\begin{verbatim} +% music sample in LilyPond notation + +\version "2.18.2" + +\paper{ + indent = 0 \mm +} + +\header { + title = "Music sample in LilyPond" + tagline = "" % no footer +} + +\relative c' { + \time 4/4 + \clef treble + c4 d8 e f8 g a b | c4 b8 a g8 f e d | + c8 g' e g c,8 g' e g | c,4 e c r \bar "|." +} +\end{verbatim} +\end{source} + +We typeset the document with this command: + +\begin{screen} +$ \textbf{lilypond sample-lilypond.ly} +GNU LilyPond 2.18.2 +Processing `sample-lilypond.ly' +Parsing... +Interpreting music... +Preprocessing graphical objects... +Finding the ideal number of pages... +Fitting music on 1 page... +Drawing systems... +Layout output to `sample-lilypond.ps'... +Converting to `./sample-lilypond.pdf'... +Success: compilation successfully completed +$ _ +\end{screen} +% $ + +\bigskip + +LilyPond is capable of typesetting many different kinds of music, and +it is among the most complete and powerful scorewriters available. If +you want to find out more, the documentation page is +\href{http://lilypond.org/manuals.html}{here}. + +% ----- + +\subsubsection{\cmd{lilypond-book}} + +LilyPond also provides the \cmd{lilypond-book} command that can be +used to easily embed LilyPond sources in special \LaTeX{} documents. +These should have a \cmd{.lytex} extension, like the following source +(\cmd{sample-lilybook.lytex}): + +\begin{source} +\begin{verbatim} +\documentclass{article} +\thispagestyle{empty} + +\begin{document} + +This is a LilyPond snippet \begin{lilypond} {c' e' g'} +\end{lilypond} embedded in the \LaTeX{} source. + +This is another LilyPond excerpt that uses the \texttt{lilypond} +environment: + +\medskip + +\begin{lilypond} + \score { + \relative c' { + \time 4/4 + \clef treble + c4 d8 e f8 g a b | c4 b8 a g8 f e d | + c8 g' e g c,8 g' e g | c,4 e c r \bar "|." + } + } % end of score +\end{lilypond} + +\medskip + +End of document. + +\end{document} + +\end{verbatim} +\end{source} + +We typeset the score with these commands: + +\begin{screen} +$ \textbf{lilypond-book -f latex -o /tmp \textbackslash + --lily-output-dir=/tmp sample-lilybook.lytex} +lilypond-book (GNU LilyPond) 2.18.2 +... +Writing `/tmp/sample-lilybook.tex'... +$ \textbf{cd /tmp} +$ \textbf{pdflatex sample-lilybook.tex} +... +Output written on sample-lilybook.pdf (1 page, 60934 bytes). +Transcript written on sample-lilybook.log. +$ _ +\end{screen} +% $ + +\bigskip + +\score{sample-lilybook} + +% ----- + +\subsubsection{Package \pkg{lyluatex}} +\label{sec:lyluatex} + +This package may be missing in less recent releases of TeX Live, so +you might have to install it manually. \pkgname{Lyluatex} provides a +native Lua\LaTeX{} environment that offers the same functionality as +\cmd{lilypond-book}, even though the output is different. This source +is \file{sample-lyluatex.tex}: + +\begin{source} +\begin{verbatim} +\documentclass{article} +\usepackage{lyluatex} +\thispagestyle{empty} + +\begin{document} + +This is a LilyPond snippet \lilypond{c' e' g'} embedded in the text +using the \verb|\lilypond| command. + +This is another LilyPond excerpt that uses the \texttt{lilypond} +environment: + +\medskip + +\begin{lilypond} + \score { + \relative c' { + \time 4/4 + \clef treble + c4 d8 e f8 g a b | c4 b8 a g8 f e d | + c8 g' e g c,8 g' e g | c,4 e c r \bar "|." + } + } % end of score +\end{lilypond} + +\medskip + +End of document. + +\end{document} +\end{verbatim} +\end{source} + +We typeset the score with this command: + +\begin{screen} +$ \textbf{lualatex --shell-escape sample-lyluatex.tex} +... +Output written on sample-lyluatex.pdf (1 page, 22334 bytes). + Transcript written on sample-lyluatex.log. +$ _ +\end{screen} +% $ + +\score{sample-lyluatex} + +% ----- + +\subsection{Program: \href{http://moinejf.free.fr}{abcm2ps}} + +\cmd{abcm2ps} is a free and multiplatform scorewriter, released under +the GNU GPL. + +This program is currently one of the best implementations of the +\href{http://abcnotation.com/}{ABC notation}, which describes itself +as: + +\begin{quote} + + \emph{the} text-based music notation system and the \emph{de + facto} standard for folk and traditional music. + +\end{quote} + +In fact, this notation is specifically designed to meet the needs of +traditional musicians; hundred of thousands (really!) of tunes in ABC +formats are available. ABC is a simple text notation, originally +designed for single-voice music but currently capable of producing +complex polyphonic scores. + +This is our usual music sample in ABC notation (\file{sample-abc.abc}): + +\begin{source} +\begin{verbatim} +% music sample in ABC notation + +X: 1 +T: Music sample in ABC +M: C +L: 1/4 +K: C +% +C D/E/ F/G/A/B/|c B/A/ G/F/E/D/|C/G/E/G/ C/G/E/G/|CECz|] +\end{verbatim} +\end{source} + +We typeset the score with these commands: + +\begin{screen} +$ \textbf{abcm2ps -c -O= sample-abc.abc} +abcm2ps-8.14.1 (2018-11-15) +File sample-abc.abc +Output written on sample-abc.ps (1 page, 1 title, 20503 bytes) +$ \textbf{ps2pdf sample-abc.ps} +$ _ +\end{screen} +% $ + +% ----- + +\subsection{Program: \href{http://moinejf.free.fr}{abc2svg}} + +\cmd{abc2svg} is a free and multiplatform scorewriter, released under +the GNU GPL. It's basically \cmd{abcm2ps} rewritten in JavaScript. + +Although \cmd{abc2svg} can be integrated in a +\href{http://moinejf.free.fr/js/edit-1.xhtml}{web-based editor}, it's +a command-line program. It reads an ABC source file and turns it to +\file{xhtml}: + +\begin{screen} +$ \textbf{abc2svg file.abc > file.xhtml} +$ _ +\end{screen} + +The resulting \file{.xhtml} can then be loaded into any web browser +and printed to PDF. \href{https://www.google.com/chrome}{Google +Chrome} or \href{https://www.chromium.org/Home}{Chromium} are the +recommended browsers. + +We can run the whole procedure non-interactively, entirely in the +command line. This only works in GNU/Linux and macOS: + +\begin{screen} +$ \textbf{abc2svg tunes.abc > tunes.xhtml} +$ \textbf{chromium-browser --headless --print-to-pdf=tunes.pdf tunes.xhtml} +... many log messages ... +... Written to file tunes.pdf. +$ _ +\end{screen} + +% $ +However, in this case Chromium will add headers and footers to every +page. To remove them and obtain a clean PDF file, run the command: + +\begin{screen} +$ \textbf{pdfcrop --margins "0 -9 0 -9" --clip tunes.pdf} +PDFCROP 1.38, 2012/11/02 - Copyright (c) 2002-2012 by Heiko Oberdiek. +==> 79 pages written on `tunes-crop.pdf'. +$ _ +\end{screen} + +The same result can be obtained using \pkg{pdfpages} directly: + +\begin{source} +\begin{verbatim} +\documentclass{article} +\usepackage{pdfpages} + +\def\tunes{tunes.pdf} % PDF file to trim + +\begin{document} + +\includepdf[pages=-,pagecommand={},% +width=\paperwidth,trim={0 0.9cm 0 0.9cm},clip]{\tunes} + +\end{document} +\end{verbatim} +\end{source} + +% ----- + +\subsection{Program: \href{http://people.ds.cam.ac.uk/ph10/pmw.html}{PMW}} + +Philip's Music Writer (PMW) is a free and multiplatform scorewriter, +released under the GNU GPL. From the PMW home page: + +\begin{quote} + + \emph{Philip's Music Writer} (PMW) is a computer program for high + quality music typesetting. + +\end{quote} + +PMW uses a simple text notation for music input and produces output in +PostScript. + +This is our usual music sample in PMW format (\file{sample-pmw.pmw}): + +\begin{source} +\begin{verbatim} +@ music sample in PMW + +Heading "|Music sample in PMW" +Key C +Time 4/4 + +[stave 1 treble 1] +c d- e-; f-g-a-b-; | c' b- a-; g-f-e-d-; | +c-g-e-g-; c-g-e-g-; |c e c r | +[endstave] +\end{verbatim} +\end{source} + +We typeset the score with these commands: + +\begin{screen} +$ \textbf{pmw -includefonts sample-pmw.pmw} +$ \textbf{ps2pdf sample-pmw.ps} +$ _ +\end{screen} +% $ + +% ----- + +\subsection{Program: \href{http://www.arkkra.com/}{MUP}} + +MUP is a free and multiplatform scorewriter, released under a free +license. From the MUP home page: + +\begin{quote} + + Mup takes a text file as input and produces very high quality + PostScript output for printed music. It can handle both regular + notation and tablature notation. It can also produce MIDI output. + +\end{quote} + +This is our usual music sample in MUP format (\file{sample-mup.mup}): + +\begin{source} +\begin{verbatim} +// music sample in MUP notation + +header + title "Music sample in MUP" + +score + time=4/4 + +music + 1: 4c; 8d bm; e ebm; f bm; g; a; b ebm; + bar + 1: 4c+; 8b bm; a ebm; g bm; f; e; d ebm; + bar + 1: 8c bm; g; e; g ebm; c bm; g; e; g ebm; + bar + 1: 4c; e; c; r; + endbar +\end{verbatim} +\end{source} + +We typeset the score with these commands: + +\begin{screen} +$ \textbf{mup -F sample-mup.mup} +Mup - Music Publisher Version 6.6 +Copyright (c) 1995-2017 by Arkkra Enterprises. +Mup is free software. Use -l option to see license terms. +$ \textbf{ps2pdf sample-mup.ps} +$ _ +\end{screen} +% $ + +% ----- + +\subsection{Program: \href{http://musescore.org}{MuseScore}} +\label{sec:musescore} + +MuseScore is a free and multiplatform scorewriter, released under the +GNU GPL. Unlike the previous programs, it's a desktop application; +however, it can be conveniently used from the command line. + +MuseScore uses its own file formats (\file{.mscz}, \file{.mscx}) but +it can also import several other file formats; +\href{https://www.musicxml.com/}{MusicXML} is probably the most +important. + +We convert any supported file to PDF with this command: + +\begin{screen} +$ \textbf{musescore file.xml -o file.pdf} +initScoreFonts 0x30d33c0 +convert <file.xml> to <file.pdf> +setFirstInstrument: no instrument found for part 'P1' +$ _ +\end{screen} +% $ + +% ----- + +\subsection{Package \pkg{abc}} +\label{sec:pkgabc} + +This package enables the inclusion of music in ABC notation in +\LaTeX{} sources; it's similar to \cmd{lilypond-book} or +\pkg{lyluatex}, but targeting ABC. + +\pkgname{Abc} provides the \env{abc} environment and the +\ltx{abcinput} commands. The first embeds ABC music in the source, +while the second includes an external ABC file. This is +(\file{sample-abc.tex}): + +\begin{source} +\begin{verbatim} +\documentclass{article} +\usepackage[generate,ps2eps]{abc} +\thispagestyle{empty} + +\begin{document} + +This is an Irish reel: + +\begin{abc}[name=julia,program={abcm2ps -O=}] +X:63 +T: Julia Delaney's +M: C| +L: 1/8 +R: reel +K: Ddor +|: dcAG ~F2EF|~E2 DE FD D2|dcAG FGAA|Addc d2 fe :| + f2fe fagf |ecgc acgc |f2fe fagf|edcG Add2 :| +\end{abc} + +This is an Irish polka, slighly smaller: + +\abcinput[program={abcm2ps -O=},width=0.9\abcwidth] +{breeches} + +End of document. + +\end{document} +\end{verbatim} +\end{source} + +The \cmd{generate} option (default) indicates that the ABC music +should be generated by the external ABC typesetter. If the ABC music +is not modified and it has already been generated, we could specify +the \cmd{nogenerate} option. This is what we want to do when only the +text is changed. + +We typeset the source with this command: + +\begin{screen} +$ \textbf{pdflatex --shell-escape sample-abc.tex} +... +Output written on sample-abc.pdf (1 page, 30937 bytes). +Transcript written on sample-abc.log. +$ _ +\end{screen} + +\score{sample-abc} + +% ----- + +\noteseparator + +% ----- + +\section{Guitar Tablatures} +\label{sec:tablatures} + +Let's go back to guitar stuff. Tablature, as already explained, is a +form of music notation for stringed instruments; making tablatures is +basically the same process as making sheet music. + +We can distinguish between \emph{automatic tablatures}, where fret +positions are generated by the program, and \emph{manual tablatures}, +where fret positions are specified by the user. + +% ----- + +\subsection{Program: \href{http://lilypond.org/}{LilyPond}} +\label{sec:lilytab} + +In addition to sheet music, LilyPond can also easily typeset automatic +guitar tablatures. A minimal example (\file{lilytab.ly}): + +\begin{source} +\begin{verbatim} +\version "2.18.2" +\header { tagline = "" } % no footer +\paper { left-margin = 0\cm } + +music = { + \time 3/4 + c4 d e f g a b a b c'2 r4 \bar "|." +} + +\score { + << + \new Staff { \clef "G_8" \music } % sheet music + \new TabStaff { \tabFullNotation \music } % tablature + >> +} +\end{verbatim} +\end{source} + +We typeset the score with this command: + +\begin{screen} +$ \textbf{lilypond lilytab.ly} +... +Converting to `./lilytab.pdf'... +Success: compilation successfully completed +$ _ +\end{screen} +% $ + +\scoreshort{lilytab} + +\bigskip + +As we can see, the very same music line can be typeset as sheet music +and as guitar tablature. Fretboard positions are automatically +generated by LilyPond. + +% ----- + +\subsection{Program: \href{https://wim.vree.org/svgParse/abc2xml.html} +{abc2xml.py}} +\label{sec:abc2xml} + +This Python program converts an ABC file to a +\href{https://www.musicxml.com/}{MusicXML} file containing automatic +tablature information; this file can then be typeset with any +MusicXML-enabled application, like MuseScore. + +A minimal tablature example (\file{abctab.abc}): + +\begin{source} +\begin{verbatim} +X: 1 +M: 3/4 +L: 1/4 +K: C +% +V:1 +CDE | FGA | BBB | c2z |] +V:2 clef=tab octave=-1 +CDE | FGA | BBB | c2z |] +\end{verbatim} +\end{source} + +We typeset the score with these commands (error messages can be safely +ignored): + +\begin{screen} +$ \textbf{abc2xml.py -f abctab.abc > abctab.xml} +-- decoded from utf-8 +-- skipped header: (field X,1) +-- done in 0.02 secs +$ \textbf{musescore abctab.xml -o abctab.pdf} +Jack appears to be installed on this system, so we'll use it. +initScoreFonts 0x25ba100 +libpng warning: iCCP: known incorrect sRGB profile +convert <abctab.xml> to <abctab.pdf> +Error at line 18 col 16: no instrument found for part 'P1' +Error at line 138 col 16: no instrument found for part 'P2' +$ _ +\end{screen} +% $ + +\score{abctab} + +\bigskip + +As we can see, the very same music line can be typeset as sheet music +and as guitar tablature. Fretboard positions are automatically +generated by \cmd{abc2xml.py}. + +We can also use \cmd{lilypond} to typeset the ABC tablature. The +ancillary program \cmd{musicxml2ly} converts MusicXML files to +LilyPond format: + +\begin{screen} +$ \textbf{abc2xml.py -f abctab.abc > abctab.xml} +-- decoded from utf-8 +-- skipped header: (field X,1) +-- done in 0.02 secs +$ \textbf{musicxml2ly abctab.xml} +$ musicxml2ly: Reading MusicXML from abctab.xml ... +musicxml2ly: Converting to LilyPond expressions... +musicxml2ly: Converting to LilyPond expressions... +musicxml2ly: Output to `abctab.ly' +$ \textbf{lilypond abctab.ly} +GNU LilyPond 2.18.2 +Processing `abctab.ly' +... +Converting to `./abctab.pdf'... +Success: compilation successfully completed +$ _ +\end{screen} +% $ + +Regrettably, \cmd{musicxml2ly} is not as robust as MuseScore's +MusicXML import filter, and it may fail on complex music. + +% ----- + +\subsection{Package \pkg{musixtex}} + +Starting from version 1.29, \pkgname{MusiXTeX} can also make manual +tablatures for several stringed instruments. A minimal example, to be +typeset with \cmd{musixtex} (\file{sample-musixtex-tab.tex}): + +\begin{source} +\begin{verbatim} +% bare MusiXTeX example + +\input musixtex +\nopagenumbers + +This is a MusiXTeX tablature example: + +\setlines16 % six lines +\setstaffs1{1} +\setclefsymbol1{\tabclef} % and a TAB clef +\nobarnumbers +\let\extractline\leftline % left aligned + +\startextract + \Notes \tab{5}{3} \tab{4}{0} \tab{4}{2} \en + \bar + \Notes \tab{4}{3} \tab{3}{0} \tab{3}{2} \en + \bar + \Notes \tab{2}{0} \tab{3}{2} \tab{2}{0} \en + \bar + \Notes \tab{2}{1} \qp \qp \en +\endextract + +\end +\end{verbatim} +\end{source} + +\scoreshort{sample-musixtex-tab} + +% ----- + +\subsection{Package \pkg{guitartabs}} + +This package may be missing in less recent releases of TeX Live, so +you might have to install it manually. It provides a \cmd{guitartabs} +document class and a very simple syntax to manually specify strings, +fret positions, and note length: + +\begin{source} +\begin{verbatim} +\documentclass{guitartabs} +\thispagestyle{empty} + +\begin{document} + +\Large + +\begin{tabline}{4}{4}{4}{E,A,D,G,B,e} + % bar 1 + % note 1 of 3, string 5, fret 4, note length 1/4 + \notel{1}{3}{5}{3}{4} + % note 2 of 3, string 4, fret 0, note length 1/4 + \notel{2}{3}{4}{0}{4} + \notel{3}{3}{4}{2}{4} + % bar 2 + \nextbar + \notel{1}{3}{4}{3}{4} + \notel{2}{3}{3}{0}{4} + \notel{3}{3}{3}{2}{4} + % bar 3 + \nextbar + \notel{1}{3}{2}{0}{4} + \notel{2}{3}{3}{2}{4} + \notel{3}{3}{2}{0}{4} + % bar 4 + \nextbar + \notel{1}{3}{5}{3}{2} + % rests + \restquarter{2}{3} + \restquarter{3}{3} +\end{tabline} + +\end{document} +\end{verbatim} +\end{source} + +\score{guitartabs} + +If you don't need the note length indications at the bottom of the +tablature, use \ltx{note} instead of \ltx{notel}. + +% ----- + +\subsection{Using Guitar Pro Tablatures} + +A \emph{de facto} standard for guitar tablatures is the +\href{https://www.guitar-pro.com}{Guitar Pro} format, or more +precisely a set file formats: \file{.gpX} (where X is 3, 4, 5, 6), +\file{.gpx}, \file{.gtp}. Many sites offer free tablatures in one of +these formats. + +To print them, we can use +\href{http://www.tuxguitar.com.ar/}{TuxGuitar} or MuseScore. TuxGuitar +is a free and multiplatform tablature editor; it's a desktop +application that can export tablatures in PDF format. Regrettably, it +cannot work as a command-line program. + +To import GuitarPro tablatures into MuseScore and export them as PDF, +we can use the \cmd{-P} command line switch. It exports all parts to +the PDF file; then it's up to the user to find out the pages that +contain the tablature. + +% ----- + +\noteseparator + +% ----- + +\section{Bits and Pieces} + +\subsection{Multimedia Files} +\label{sec:multimedia} + +In addition to sheet music, our documents can also include sound +files. To be more precise, we can click on a link to an external sound +file that is referred to in the PDF document; the default player will +be run. + +This feature is made possible by the \pkg{hyperref} package, which +provides the \ltx{href} command: + +\begin{source} +\begin{verbatim} +\href{run:jingle.midi}{this midi file} +\end{verbatim} +\end{source} + +The first parameter opens the specified file with the default +multimedia player; the second parameter creates a link to click on. +For example, the above line lets the reader click on +\href{run:jingle.midi}{this midi file} and listen to it. The operating +system must know how to play the specified sound file. + +The link need not be just text; we may as well apply the link to +included graphics. + +% ----- + +\subsection{Notation Source Files} +\label{sec:sources} + +If we need to include notation source files, we could use a simple +\cmd{verbatim} environment, or \cmd{alltt} (package \pkg{alltt}) if we +also want to include \LaTeX{} commands in the source: + +\bigskip + +\noindent +{ \small +\begin{boxedminipage}[c]{0.52\linewidth} +\begin{verbatim} +\textit{\% This is a comment!} +\textbf{X:} 1 +\textbf{L:} 1/4 +\textbf{K:} C +\textit{\% These are notes:} +c G/G/ _AG|z !>!B!>!c z|] +\end{verbatim} +\end{boxedminipage} +\hspace{2em} +\begin{boxedminipage}[c]{0.4\linewidth} +\begin{alltt} +\textit{\% This is a comment!} +\textbf{X:} 1 +\textbf{L:} 1/4 +\textbf{K:} C +\textit{\% These are notes:} +c G/G/ _AG|z !>!B!>!c z|] +\end{alltt} +\end{boxedminipage} +} % \small + +\bigskip + +But if you want something fancier, like the sources included in this +document, you could also use the \pkg{tcolorbox} and define a new +environment like the following: + +\bigskip + +\begin{tcolorbox}[breakable,boxrule=0.2pt,% + left=0pt,right=0pt,colback=green!7!white,arc=2pt] +\begin{verbatim} +\newenvironment{source} +{ % beg def + \medskip + \small + \begin{margins}{-0.3cm}{-0.3cm} + \begin{spacing}{0.9} + \begin{tcolorbox}[breakable,boxrule=0.2pt,% + left=0pt,right=0pt,colback=green!7!white,arc=2pt] + \begin{alltt} +} +{ % end def + \end{alltt} + \end{tcolorbox} + \end{spacing} + \end{margins} +} +\end{verbatim} +\end{tcolorbox} + +% ----- + +\noteseparator + +% ----- + +\section{Putting It All Together} + +We have solved the first problem; now we know how to make music files +in several different ways. Now it's time to solve the second problem: +how to combine music files and \LaTeX. + +We have two possible approaches: keeping all music in the \LaTeX{} +source, or keeping the music in external files. Both approaches have +advantages and disadvantages. Basically, the first method is slower, +because any change in the source may require recompilation of music +excerpts. The second method requires a little more work, because we +need to maintain an additional file that takes care of music +conversion. + +% ----- + +\subsection{Package \pkg{abc}, Revisited} + +We met this package in Section~\ref{sec:pkgabc}, where it was used to +include ABC music in a \LaTeX{} source. This package, however, is not +limited to ABC. User-defined environments can provide support for +virtually any external scorewriter; LilyPond support, however, is +slightly bugged. + +The following source defines the \env{mtx} and \env{pmw} environments. +For each, the definition specifies the external program to run, its +command line switches, and the file extension: + +\begin{source} +\begin{verbatim} +\documentclass{article} +\thispagestyle{empty} +\usepackage[generate,ps2eps]{abc} + +% --- M-Tx support +\newenvironment{mtx}[1][] +{\renewcommand{\normalabcoutputfile}{out-mtx}% +\abc[program=musixtex,options={-g},extension=mtx,#1]} +{\endabc} +\newcommand{\mtxinput}[2][]{% +\abcinput[program=musixtex,options={-g},extension=mtx,#1]{#2}} + +% --- PMW support +\newenvironment{pmw}[1][] +{\renewcommand{\normalabcoutputfile}{out-pmw}% +\abc[program=pmw,options={-includefont},extension=pmw,#1]} +{\endabc} +\newcommand{\pmwinput}[2][]{% +\abcinput[program=pmw,options={-includefont},extension=pmw,#1]{#2}} + +\begin{document} + +This document includes music excerpts written in different formats. It +uses \texttt{abc.sty} and defines new environments. + +This is a short piece, typeset by M-Tx: + +\mtxinput{sample-mtx} + +The same piece, typeset by PMW: + +\pmwinput{sample-pmw} + +End of document. + +\end{document} +\end{verbatim} +\end{source} + +\score{sample-all} + +\bigskip + +A complete template that implements all environments is presented in +Section~\ref{sec:abcall}. + +% ----- + +\subsection{Using \cmd{make}} + +Another way to make a \LaTeX{} document that includes music in +different formats is by using a developer's tool called \cmd{make}. +It's a program that takes care of what needs what, what needs to be +converted first, what should be done if you modify something, and so +on. \cmd{make} is normally used to compile programs. + +Let's make a practical example. We have a \LaTeX{} document, +\file{main.tex}, which includes three PDF files, \file{music1.pdf}, +\file{music2.pdf}, and \file{music3.pdf}: + +\begin{source} +\begin{verbatim} +\documentclass{article} +\usepackage{graphicx} +\thispagestyle{empty} + +\begin{document} + +This document includes three music excerpts: + +\includegraphics{music1} + +\includegraphics{music2} + +\includegraphics{music3} + +End of document. + +\end{document} +\end{verbatim} +\end{source} + +Let's suppose that the three PDF files are obtained from an +\pkgname{M-Tx} file, a LilyPond file, and an ABC file. We should +convert the PDF files manually, then typeset \file{main.tex}. It's not +a big deal, but what if you have dozens of music files, each of which +must be converted with different commands? This task would soon grow +tedious and difficult to manage. + +Here \cmd{make} comes to the rescue. It uses a text file, called +\file{Makefile}, which contains rules for building the document and +the PDF files that it includes. This is a simple \file{Makefile} that +can be used to compose (make!) \file{main.pdf}: + +\begin{source} +\begin{verbatim} +# Makefile for main.tex + +FIGURES = music1.pdf music2.pdf music3.pdf + +# The final document depends on main.tex and the figures +main.pdf: main.tex $(FIGURES) + pdflatex main.tex + +# music1.pdf depends on music1.mtx +# conversion commands follow +music1.pdf: music1.mtx + musixtex music1.mtx ; pdfcrop musix1.pdf ; \ + /bin/mv musix1-crop.pdf music1.pdf + +# music2.pdf depends on music2.ly +music2.pdf: music2.ly + lilypond music2.ly; pdfcrop musix2.pdf ; \ + /bin/mv musix2-crop.pdf music2.pdf + +# music3.pdf depends on music3.abc +music3.pdf: music3.abc + abcm2ps -c -O= music3.abc; ps2pdf music3.ps; \ + pdfcrop musix3.pdf ; \ + /bin/mv musix3-crop.pdf music3.pdf + +# end of Makefile +\end{verbatim} +\end{source} + +% $ + +Let's see what it does. First of all, as you might have guessed the +\cmd{\#} character starts a comment; the rest of the line is ignored. + +This line: + +\begin{source} +\begin{verbatim} +FIGURES = music1.pdf music2.pdf music3.pdf +\end{verbatim} +\end{source} + +\noindent +creates a \emph{variable}, that is a ``name'' (\cmd{FIGURES}) that +``contains'' the three file names \cmd{music1.pdf music2.pdf +music3.pdf}. This variable will be referred to later on. + +These lines: + +\begin{source} +\begin{verbatim} +main.pdf: main.tex $(FIGURES) + pdflatex main.tex +\end{verbatim} +\end{source} +% $ + +\noindent +declare that \cmd{main.pdf} is a \emph{target} that depends on +\file{main.tex} and on the three files denoted by the \cmd{FIGURES} +variable. The second line specifies the command that must be run to +make \file{main.pdf}. This line starts with a TAB character, not with +spaces: this is important! + +Then we have three sections, one for each music file. Each section +tells \cmd{make} what to do to compose the PDF figure. For instance, +the section: + +\begin{source} +\begin{verbatim} +music1.pdf: music1.mtx + musixtex music1.mtx ; pdfcrop musix1.pdf ; \ + /bin/mv musix1-crop.pdf music1.pdf +\end{verbatim} +\end{source} + +\noindent +states that \file{music1.pdf} is a target that depends on +\file{music1.mtx}; the following lines specify the commands to create +\file{music1.pdf}. Commands are separated by the \cmd{;} character, +while \cmd{\textbackslash} indicates that the command continues to the +next line. + +To make \file{main.pdf}, we simply run the command: + +\begin{screen} +$ \textbf{make} +... +$ _ +\end{screen} + +\noindent +in the same directory where we saved \file{Makefile}. \cmd{make} will +make the three figures first, then \file{main.pdf} that depends on +them. + +If we modify one of the files, \cmd{make} will take care of +dependencies and rebuild the final target. For example, if we modify +\file{music2.ly}, \cmd{make} will rebuild \file{music2.pdf} first, then +\file{main.pdf} that depends on \file{music2.pdf}. + +In my opinion, this approach is the most flexible. This guide was +compiled using \cmd{make} and a pretty long \file{Makefile}. + +% ----- + +\noteseparator + +% ----- + +\newpage +\section{The End} + +That's it, dear fellow musicians: I really hope that this guide will +be useful to you. Please help me improve this document: for any +suggestions, comments, or contributions, please feel free to contact +me by \href{mailto:guido.gonzato@gmail.com}{email}. I'd like to +receive feedback, especially if you use this document in education. + +I would like to thank all the geniuses who wrote the packages and +programs cited in this guide. Kudos and hats off, folks! + +This document is copyleft \copyleft{} Guido Gonzato, PhD, and released +under the \href{https://www.gnu.org/licenses/fdl.html}{GNU Free +Documentation Licence}. + +\medskip + +\begin{center} + \includegraphics{guidopiper.jpeg} +\end{center} + +Ciao! \texttt{=8-)} + +% ----- + +\noteseparator + +% ----- + +\newpage + +\appendix + +\section{List of Packages and Programs} + +This manual uses many \LaTeX{} packages and includes PDF output +produced by several programs, all of which are free and open source. +Commercial programs were intentionally left out. + +The page \url{https://www.ctan.org/topic/music} is an important +starting po\-int for those interested in combining \LaTeX{} and music. +It's a list of \LaTeX{} packages for typesetting music and related +stuff. The following is the complete list of packages and programs I +used to make this manual, in order of appearance. + +\begin{itemize} + + \item CTAN Music page. ``This topic contains packages for + typesetting music and related stuff.''\\ + \url{https://www.ctan.org/topic/music}. + + \item Package: musicography, v. 2018-05.21.\\ + \url{https://ctan.org/pkg/musicography} + + \item Package: leadsheets, v. 0.5b\\ + \url{https://ctan.org/pkg/leadsheets} + + \item Package: lilyglyphs, v. 0.2.3\\ + \url{https://ctan.org/pkg/lilyglyphs} + + \item Font: Bravura, v.1.272\\ + \url{https://www.smufl.org/fonts} + + \item Package: guitar, v. 1.6\\ + \url{https://ctan.org/pkg/guitar} + + \item Package: gtrcrd, v. 1.1\\ + \url{https://ctan.org/pkg/gtrcrd} + + \item Package: songs, v. 3.0\\ + \url{https://ctan.org/pkg/songs} + + \item Package: musixguit, v. 1.2.2\\ + \url{https://ctan.org/pkg/musixguit} + + \item Package: songbook, v. 4.5\\ + \url{https://ctan.org/pkg/songbook} + + \item Program: Chordii, v. 4.3\\ + \url{https://www.vromans.org/projects/Chordii} + + \item Package: gchords, v. 1.20\\ + \url{https://ctan.org/pkg/gchords} + + \item Package: guitarchordschemes, v. 0.7\\ + \url{https://ctan.org/pkg/guitarchordschemes} + + \item Package: guitartabs, v. 2018-05-01\\ + \url{https://ctan.org/pkg/guitartabs} + + \item Page: MusiXTeX and Related Software. \\ + \url{https://icking-music-archive.org/software/htdocs/htdocs.html} + + \item Package: MusiXTeX, v. 1.29\\ + \url{https://ctan.org/pkg/musixtex} + + \item Package: M-Tx, v. 0.63a\\ + \url{https://ctan.org/pkg/m-tx} + + \item Package: Gregoriotex, v. 5.1.1\\ + \url{https://ctan.org/pkg/gregoriotex}\\ + \url{http://gregorio-project.github.io/gregoriotex}\\ + \url{http://gregorio-project.github.io} + + \item Program: LilyPond, v. 1.18.2\\ + \url{http://lilypond.org} + + \item Package: Lyluatex, v. 1.0b\\ + \url{https://ctan.org/pkg/lyluatex} + + \item Programs: \cmd{abcm2ps} v. 8.14.2, \cmd{and2svg} v. 1.19.0\\ + \url{http://moinejf.free.fr} + + \item Program: PMW, Philip's Music Writer, v. 4.30\\ + \url{http://people.ds.cam.ac.uk/ph10/pmw.html} + + \item Program: MUP v. 6.6\\ + \url{http://www.arkkra.com} + + \item Program: MuseScore v. 3.0\\ + \url{http://musescore.org} + + \item Package: Abc v. 2.0b\\ + \url{https://ctan.org/pkg/abc} + + \item Program: abc2xml.ly v. 218\\ + \url{https://wim.vree.org/svgParse/abc2xml.html} + +\end{itemize} + +% ----- + +\newpage + +\section{Examples} + +\subsection{A Complete \pkg{abc} Example} +\label{sec:abcall} + +This source defines environments for M-Tx, PMW, LilyPond, and MUP; it +also redefines the \cmd{abc} environment as \cmd{ABC}. This is +necessary for technical reasons. Lilypond sources must begin with a +double line \ltx{version "2.18.2"}; this is required to avoid a bug. + +\begin{source} +\begin{verbatim} +% typeset with: +% pdflatex -shell-escape sample-abc-all.tex + +\documentclass{article} +\thispagestyle{empty} +\usepackage[generate,ps2eps]{abc} + +% --- M-Tx support +\newenvironment{mtx}[1][] +{\renewcommand{\normalabcoutputfile}{out-mtx}% +\abc[program=musixtex,options={-g},extension=mtx,#1]} +{\endabc} +\newcommand{\mtxinput}[2][]{% +\abcinput[program=musixtex,options={-g},extension=mtx,#1]{#2}} + +% --- PMW support +\newenvironment{pmw}[1][] +{\renewcommand{\normalabcoutputfile}{out-pmw}% +\abc[program=pmw,options={-includefont},extension=pmw,#1]} +{\endabc} +\newcommand{\pmwinput}[2][]{% +\abcinput[program=pmw,options={-includefont},extension=pmw,#1]{#2}} + +% --- LilyPond support +% !!! BUG: the LilyPond source must begin with a \null command +\newenvironment{lily}[1][] +{\renewcommand{\normalabcoutputfile}{out-lily}% +\abc[program=lilypond,options={-d backend=eps},extension=ly,#1]} +{\endabc} +\newcommand{\lilyinput}[2][]{% +\abcinput[program=lilypond,options={--ps},extension=ly,#1]{#2}} + +% --- MUP support +\newenvironment{mup}[1][] +{\renewcommand{\normalabcoutputfile}{out-mup}% +\abc[program=mup,options={-F},extension=mup,#1]} +{\endabc} +\newcommand{\mupinput}[2][]{% +\abcinput[program=mup,options={-F},extension=mup,#1]{#2}} + +% --- ABC must be redefined +\newenvironment{ABC}[1][] +{\renewcommand{\normalabcoutputfile}{out-ABC}% +\abc[program=abcm2ps,options={-O=},extension=abc,#1]} +{\endabc} +\newcommand{\ABCinput}[2][]{% +\abcinput[program=abcm2ps,options={-O=},extension=abc,#1]{#2}} + +\begin{document} + +This document includes music excerpts written in several formats. It +uses \texttt{abc.sty} and defines new environments. + +This is a short piece, typeset by M-Tx: + +\begin{mtx} +Title: \bigtype Music sample in M-Tx +Style: Solo +Meter: C +Width: 160mm + +c4 d8 e f g a b | c4 b8 a g f e d | c8 g+ e g c- g+ e g | c4- e c r | +\end{mtx} + +The same piece, typeset by LilyPond: + +\begin{lily} +% twice - it's required to avoid a bug +\version "2.18.2" +\version "2.18.2" + +\header { + title = "Music sample in LilyPond" + tagline = "" % no footer +} + +\relative c' { + \time 4/4 + \clef treble + c4 d8 e f8 g a b | c4 b8 a g8 f e d | + c8 g' e g c,8 g' e g | c,4 e c r \bar "|." +} +\end{lily} + +The same piece, typeset by PMW: + +\begin{pmw} +Heading "|Music sample in PMW" +Key C +Time 4/4 + +[stave 1 treble 1] +c d- e-; f-g-a-b-; | c' b- a-; g-f-e-d-; | +c-g-e-g-; c-g-e-g-; |c e c r | +[endstave] +\end{pmw} + +The same piece, typeset by MUP: + +\begin{mup} +// music sample in MUP notation + +header + title "Music sample in MUP" + +score + time=4/4 + +music + 1: 4c; 8d bm; e ebm; f bm; g; a; b ebm; + bar + 1: 4c+; 8b bm; a ebm; g bm; f; e; d ebm; + bar + 1: 8c bm; g; e; g ebm; c bm; g; e; g ebm; + bar + 1: 4c; e; c; r; + endbar +\end{mup} + +The same piece, typeset by abcm2ps: + +\begin{ABC} +X: 1 +T: Music sample in ABC +M: 4/4 +L: 1/4 +K: C +% +C D/E/ F/G/A/B/|c B/A/ G/F/E/D/|C/G/E/G/ C/G/E/G/|CECz|] +\end{ABC} + +\end{document} + +\end{verbatim} +\end{source} + +\score{sample-abc-all} + +% ----- + +\subsection{A Complete Songbook Example} +\label{sec:songbook} + +The following source is a minimal template for songbooks. It uses the +\pkg{gchords} and \pkg{guitar} packages (Sections~\ref{sec:gchords} +and \ref{sec:pkgguitar}). The resulting PDF has its own page numbers +(don't get confused!) and is included in this document with +\ltx{includepdf}. + +\begin{source} +\begin{verbatim} +\documentclass[11pt]{article} +\usepackage{graphicx} +\usepackage{gchords} +\usepackage{guitar} + +\begin{document} + +\title{A Minimal Songbook} +\author{Guido Gonzato} +\date{\today} + +\maketitle +\tableofcontents + +% ----- + +\section{For He's a Jolly Good Fellow} + +% Typically sung to congratulate somebody. + +\smallchords + +\def\numfrets{4} +\begin{minipage}[c]{\linewidth} % use less space + \chords{ + \chord{t}{n,p3,p2,n,p1,n}{C} + \chord{t}{p3,p2,n,n,n,p3}{G} + \chord{t}{n,p3,p2,p3,p1,n}{C7} + \chord{t1}{n,p2,p2,p1,n,n}{F} +} +\end{minipage} + +\medskip + +\includegraphics[width=\textwidth]{fellow} + +\bigskip + +\begin{guitar} + +For [C]he's a jolly good fellow, +For [G]he's a jolly good [C]fellow, +For [C7]he's a jolly good [F]fellow, +Which [C]nobody [G]can [C]deny. + +\end{guitar} + +% ----- + +\section{Happy Birthday To You} + +% Sung to remind somebody they're growing old. + +\def\numfrets{4} +\begin{minipage}[c]{\linewidth} + \chords{ + \chord{t1}{n,p2,p2,p1,n,n}{F} + \chord{t}{n,p3,p2,n,p1,n}{C} + \chord{t}{n,p3,p2,p3,p1,n}{C7} + \chord{t1}{n,n,p2,p2,p2,n}{Bb} +} +\end{minipage} + +\medskip + +\includegraphics[width=\textwidth]{happyb} + +\bigskip + +\begin{guitar} +Happy [F]birthday to [C]you, +Happy [C7]birthday to [F]you, +Happy birthday dear [Bb]Guido, +Happy [F]birthday [C]to [F]you! +\end{guitar} + +% ----- + +\section{Warm Kitty} + +% No need to introduce this lullaby! + +\def\numfrets{4} +\begin{minipage}[c]{\linewidth} +\chords{ + \chord{t}{n,n,p2,p2,p2,n}{A} + \chord{t}{n,p2,p2,p1,n,n}{E} + \chord{t}{n,p2,p2,p1,p3,n}{E7} +} +\end{minipage} + +\medskip + +\includegraphics[width=\textwidth]{warm} + +\bigskip + +\begin{guitar} + +[A]Soft kitty, [E]warm kitty +[A]Little ball of [E]fur [E7]~ +[A]Happy kitty, [E]sleepy kitty +[A]Purr, [E]purr, [A]purr + +\end{guitar} + +\end{document} +\end{verbatim} +\end{source} + +\newpage + +\pagecolor{pdfbg} +\includepdf[pages=-,pagecommand={}]{sample-songbook.pdf} +\pagecolor{white} + +% ----- + +\subsection{A sample \file{Makefile}} + +This is the \file{Makefile} that was used to typeset the previous +example. The \cmd{clean} target is used to clean up all temporary +files. + +\begin{source} +\begin{verbatim} +# Makefile for sample-songbook + +FIGURES = fellow.pdf happyb.pdf warm.pdf + +sample-songbook: sample-songbook.tex $(FIGURES) + pdflatex sample-songbook.tex; \ + pdflatex sample-songbook.tex; \ + pdflatex sample-songbook.tex + +fellow.pdf: fellow.abc + abcm2ps -c -O= fellow.abc; \ + ps2pdf fellow.ps; pdfcrop fellow.pdf; \ + /bin/mv -f fellow-crop.pdf fellow.pdf + +happyb.pdf: happyb.abc + abcm2ps -O= happyb.abc; \ + ps2pdf happyb.ps; pdfcrop happyb.pdf; \ + /bin/mv -f happyb-crop.pdf happyb.pdf + +warm.pdf: warm.abc + abcm2ps -O= warm.abc; \ + ps2pdf warm.ps; pdfcrop warm.pdf; \ + /bin/mv -f warm-crop.pdf warm.pdf + +clean: + /bin/rm -f .*~ *~ *aux *bak *lo? *to? *out *tmp *bbl *ps +\end{verbatim} +\end{source} +% $ + +% ----- + +\subsection{Verses and Guitar Chords Diagrams} + +Combining verses and guitar chord diagrams can be done in several +ways. I think that the following example shows two of the easiest +methods. Please refer to Section~\ref{sec:pkgguitar} and +Section~\ref{sec:gchords} for further details. + +\begin{source} +\begin{verbatim} +\documentclass{article} +\usepackage{guitar} +\usepackage{gchords} +\thispagestyle{empty} + +\newcommand{\C}{\hspace{-0.8em}\chord{t}{n,p3,p2,n,p1,n}{C}} +\newcommand{\CmajVII}{\hspace{-0.8em}\chord{t}{n,p3,p2,n,n,n}{Cmaj7}} +\newcommand{\F}{\hspace{-0.8em}\chord{t1}{n,p2,p2,p1,n,n}{F}} + +\def\chordsize{1.5mm} +\def\numfrets{3} +\def\namefont{\it} + +\begin{document} + +\noindent +We can typeset verses and guitar chord grids in a \texttt{guitar} +environment: + +\bigskip + +\begin{minipage}[c]{\linewidth} % to avoid indentation + \begin{guitar} + + \textbf{Imagine (John Lennon)} + \emph{Intro, $\times$ 2} + [\C] \hspace{2em} [\CmajVII] \hspace{2em} [\F] \hspace{2em} + [\C]Imagine there's [\CmajVII|]{no} ~ [\F]heaven + [\C]It's easy if [\CmajVII|]{you} ~ [\F]try + + \end{guitar} +\end{minipage} + +\noindent +{\ldots}and so on. But we could just use the \verb|\upchord| command, +provided by \texttt{gchords}: + +\begin{verse} + + \upchord{\C}Imagine there's \upchord{\CmajVII}no \qquad + \upchord{\F}heaven + + \upchord{\C}It's easy if \upchord{\CmajVII}you \qquad + \upchord{\F}try + +\end{verse} + +\end{document} +\end{verbatim} +\end{source} + +\score{verses-chords} + +% ----- + +\end{document} + +%% --- end of file latex4musicians.tex diff --git a/info/latex4musicians/leadsheets.pdf b/info/latex4musicians/leadsheets.pdf Binary files differnew file mode 100644 index 0000000000..297ae1dd9e --- /dev/null +++ b/info/latex4musicians/leadsheets.pdf diff --git a/info/latex4musicians/lilyglyphs.pdf b/info/latex4musicians/lilyglyphs.pdf Binary files differnew file mode 100644 index 0000000000..bbcae821dd --- /dev/null +++ b/info/latex4musicians/lilyglyphs.pdf diff --git a/info/latex4musicians/lilytab.pdf b/info/latex4musicians/lilytab.pdf Binary files differnew file mode 100644 index 0000000000..53be9420eb --- /dev/null +++ b/info/latex4musicians/lilytab.pdf diff --git a/info/latex4musicians/musicography.pdf b/info/latex4musicians/musicography.pdf Binary files differnew file mode 100644 index 0000000000..5b921cdcec --- /dev/null +++ b/info/latex4musicians/musicography.pdf diff --git a/info/latex4musicians/musixguit.pdf b/info/latex4musicians/musixguit.pdf Binary files differnew file mode 100644 index 0000000000..42a3e2e6ed --- /dev/null +++ b/info/latex4musicians/musixguit.pdf diff --git a/info/latex4musicians/params.tex b/info/latex4musicians/params.tex new file mode 100644 index 0000000000..a2f2840478 --- /dev/null +++ b/info/latex4musicians/params.tex @@ -0,0 +1,168 @@ +% params.tex -*- LaTeX -*- +% +% By Guido Gonzato, PhD <guido.gonzato (at) gmail.com> +% +% Last updated: January 16, 2019 + +% ----- DEBUG +% \overfullrule=5pt +% \widowpenalty=10000 +% \clubpenalty=10000 + +% default typewriter font +\renewcommand{\ttdefault}{txtt} + +\definecolor{shadecolor}{rgb}{0.85,0.85,1} +\definecolor{pdfbg}{rgb}{0.95,0.95,0.95} + +% ----- DEFINITIONS + +\newcommand{\version}{1.0.1} % VERSION + +\newcommand{\copyleft}{\reflectbox{\textcopyright}} +\newcommand{\bl}{\textbackslash} +\newcommand{\qs}{\textquotesingle} + +% ----- NEW COMMANDS AND ENVIRONMENTS + +\newcommand{\qnote} +{\raisebox{\depth}{\scalebox{-1}[-1]{\quarternote}}} + +\newcommand{\reg} +{\textsuperscript{\textregistered}} + +\newcommand{\entry}[2] +{{\small \textsf{#1/#2}}} + +\newcommand{\pkg}[1] +{\href{https://ctan.org/pkg/#1}{\texttt{#1}}} + +\newcommand{\ltx}[1] +{\texttt{\bl{}#1}} + +\newcommand{\app}[1] +{\texttt{#1}} + +\newcommand{\pkgname}[1] +{\textsc{#1}} + +\newcommand{\key}[1] +{\textbf{#1}} + +\newcommand{\menu}[1] +{\textsf{#1}} + +\newcommand{\file}[1] +{\texttt{#1}} + +\newcommand{\env}[1] +{\texttt{#1}} + +\newcommand{\field}[1] +{\texttt{#1}} + +\newcommand{\cmd}[1] +{\texttt{#1}} + +\newcommand{\icmd}[1] +{\textit{\texttt{#1}\/}} + +\newcommand{\metacmd}[1] +{\texttt{\%\%#1}} + +\newcommand{\parm}[1] +{\textit{$\langle$#1$\rangle$}} + +\newcommand{\optparm}[1] +{\textit{[#1]}} + +\newcommand{\car}[1] +{\texttt{#1}} + +\newcommand{\notes}[1] +{\texttt{#1}} + +\newcommand{\graph}[1] +{\textsc{#1}} + +\newcommand{\noteseparator} +{ +\begin{center} + \twonotes~\twonotes~\twonotes~\twonotes~\twonotes~\twonotes~\twonotes +\end{center} +} + +\newenvironment{margins}[2] +{ % begin def +\begin{list}{} +{ +\setlength{\leftmargin}{#1} +\setlength{\rightmargin}{#2} +} \item +} % end def +{\end{list}} + +\newenvironment{source} +{ % beg def + \medskip + \small + \begin{margins}{-0.3cm}{-0.3cm} + \begin{spacing}{0.9} + \begin{tcolorbox}[breakable,boxrule=0.2pt,% + left=0pt,right=0pt,colback=green!7!white,arc=2pt] + \begin{alltt} +} +{ % end def + \end{alltt} + \end{tcolorbox} + \vspace{-1.5em} + \end{spacing} + \end{margins} +} + +\newenvironment{screen} +{ % beg def + \medskip + \small + \begin{margins}{-0.3cm}{-0.3cm} + \begin{spacing}{0.9} + \tcbset{beforeafter skip=0pt} + \begin{tcolorbox}[breakable,boxrule=0.2pt,% + left=0pt,right=0pt,colback=white,arc=0pt] + \begin{alltt} +} +{ % end def + \end{alltt} + \end{tcolorbox} + \end{spacing} + \end{margins} +} + +\newlength{\tmplength} + +\newcommand{\score}[1] +{ + \setlength{\tmplength}{\parindent} + \setlength{\parindent}{0pt} + \begin{margins}{-0.3cm}{-0.3cm} + \colorbox{pdfbg}{\includegraphics[width=\linewidth]{#1.pdf}} + \end{margins} + \setlength{\parindent}{\tmplength} +} + +\newcommand{\scoreshort}[1] +{ + \setlength{\tmplength}{\parindent} + \setlength{\parindent}{0pt} + \begin{center} + \colorbox{pdfbg}{\includegraphics{#1.pdf}} + \end{center} + \setlength{\parindent}{\tmplength} +} + +\newcommand{\scorepage}[1] +{ + \includegraphics[width=\linewidth]{#1.pdf} +} + +% ----- End of file params.tex diff --git a/info/latex4musicians/pdfcrop.sh b/info/latex4musicians/pdfcrop.sh new file mode 100644 index 0000000000..87430839bf --- /dev/null +++ b/info/latex4musicians/pdfcrop.sh @@ -0,0 +1,38 @@ +#!/bin/sh + +# pdfcrop.sh +# Guido Gonzato, PhD. GPL 2 or later. + +MYSELF=$(basename $0) + +if [ $# -eq 0 ] ; then + printf "Usage: ${MYSELF} <file.pdf>\n" + printf "This script uses 'gs' to crop a one-page pdf file.\n\n" + exit 1 +fi + +# GhostScript for Windows must be installed in C:\Gs +# GS=/c/gs/gs9.26/bin/gswin64c.exe +# GNU/Linux and others: +GS=/usr/bin/gs + +INPUT=$1 +PDF=$(basename $1 .pdf) +OUTPUT=$PDF-crop.pdf +GSOPTS="-q -sDEVICE=bbox -dBATCH -dNOPAUSE" + +# find out the bounding box +$GS $GSOPTS $INPUT 2>&1 | grep "%%B" > $PDF.bbox + +# read bbox coordinates in variables +read tmp X1 Y1 X2 Y2 < $PDF.bbox + +# write the output, cropped to bbox +$GS -q -o $OUTPUT \ + -sDEVICE=pdfwrite \ + -c "[ /CropBox [$X1 $Y1 $X2 $Y2] /PAGES pdfmark" \ + -f $INPUT + +/bin/rm -f $PDF.bbox + +echo "$INPUT cropped to $OUTPUT" diff --git a/info/latex4musicians/pdfl.sh b/info/latex4musicians/pdfl.sh new file mode 100644 index 0000000000..8c87efe214 --- /dev/null +++ b/info/latex4musicians/pdfl.sh @@ -0,0 +1,12 @@ +#!/bin/sh + +if [ $# = 0 ]; then + echo "Usage: $0 <file.tex>" + exit 1 +fi + +NAME=$(basename $1 .tex) +PDF=$NAME.pdf +pdflatex Figures/$NAME.tex +pdfcrop $PDF +/bin/mv -f $NAME-crop.pdf $PDF diff --git a/info/latex4musicians/pdfx.sh b/info/latex4musicians/pdfx.sh new file mode 100644 index 0000000000..f26039b1e8 --- /dev/null +++ b/info/latex4musicians/pdfx.sh @@ -0,0 +1,12 @@ +#!/bin/sh + +if [ $# = 0 ]; then + echo "Usage: $0 <file.tex>" + exit 1 +fi + +NAME=$(basename $1 .tex) +PDF=$NAME.pdf +xelatex Figures/$NAME.tex +pdfcrop $PDF +/bin/mv -f $NAME-crop.pdf $PDF diff --git a/info/latex4musicians/sample-abc-all.pdf b/info/latex4musicians/sample-abc-all.pdf Binary files differnew file mode 100644 index 0000000000..ddf2d4e853 --- /dev/null +++ b/info/latex4musicians/sample-abc-all.pdf diff --git a/info/latex4musicians/sample-abc.pdf b/info/latex4musicians/sample-abc.pdf Binary files differnew file mode 100644 index 0000000000..dd0314db10 --- /dev/null +++ b/info/latex4musicians/sample-abc.pdf diff --git a/info/latex4musicians/sample-all.pdf b/info/latex4musicians/sample-all.pdf Binary files differnew file mode 100644 index 0000000000..e62e6c7654 --- /dev/null +++ b/info/latex4musicians/sample-all.pdf diff --git a/info/latex4musicians/sample-latexmtx.pdf b/info/latex4musicians/sample-latexmtx.pdf Binary files differnew file mode 100644 index 0000000000..6c5321b4ae --- /dev/null +++ b/info/latex4musicians/sample-latexmtx.pdf diff --git a/info/latex4musicians/sample-lilybook.pdf b/info/latex4musicians/sample-lilybook.pdf Binary files differnew file mode 100644 index 0000000000..e1e4f122bd --- /dev/null +++ b/info/latex4musicians/sample-lilybook.pdf diff --git a/info/latex4musicians/sample-lyluatex.pdf b/info/latex4musicians/sample-lyluatex.pdf Binary files differnew file mode 100644 index 0000000000..d95d16ac65 --- /dev/null +++ b/info/latex4musicians/sample-lyluatex.pdf diff --git a/info/latex4musicians/sample-mlatex.pdf b/info/latex4musicians/sample-mlatex.pdf Binary files differnew file mode 100644 index 0000000000..745cceb648 --- /dev/null +++ b/info/latex4musicians/sample-mlatex.pdf diff --git a/info/latex4musicians/sample-mtex.pdf b/info/latex4musicians/sample-mtex.pdf Binary files differnew file mode 100644 index 0000000000..9f7ae078c9 --- /dev/null +++ b/info/latex4musicians/sample-mtex.pdf diff --git a/info/latex4musicians/sample-mtx.pdf b/info/latex4musicians/sample-mtx.pdf Binary files differnew file mode 100644 index 0000000000..03ca7eb24e --- /dev/null +++ b/info/latex4musicians/sample-mtx.pdf diff --git a/info/latex4musicians/sample-musixtex-tab.pdf b/info/latex4musicians/sample-musixtex-tab.pdf Binary files differnew file mode 100644 index 0000000000..512a4405e5 --- /dev/null +++ b/info/latex4musicians/sample-musixtex-tab.pdf diff --git a/info/latex4musicians/sample-pmw.pdf b/info/latex4musicians/sample-pmw.pdf Binary files differnew file mode 100644 index 0000000000..65ab6cbb48 --- /dev/null +++ b/info/latex4musicians/sample-pmw.pdf diff --git a/info/latex4musicians/sample-songbook.pdf b/info/latex4musicians/sample-songbook.pdf Binary files differnew file mode 100644 index 0000000000..a9d3b78b62 --- /dev/null +++ b/info/latex4musicians/sample-songbook.pdf diff --git a/info/latex4musicians/sheet.pdf b/info/latex4musicians/sheet.pdf Binary files differnew file mode 100644 index 0000000000..eb56ab1a3f --- /dev/null +++ b/info/latex4musicians/sheet.pdf diff --git a/info/latex4musicians/songbook.pdf b/info/latex4musicians/songbook.pdf Binary files differnew file mode 100644 index 0000000000..f5f7831ba9 --- /dev/null +++ b/info/latex4musicians/songbook.pdf diff --git a/info/latex4musicians/songs.pdf b/info/latex4musicians/songs.pdf Binary files differnew file mode 100644 index 0000000000..92fc0b4123 --- /dev/null +++ b/info/latex4musicians/songs.pdf diff --git a/info/latex4musicians/songs_g.pdf b/info/latex4musicians/songs_g.pdf Binary files differnew file mode 100644 index 0000000000..35633673c5 --- /dev/null +++ b/info/latex4musicians/songs_g.pdf diff --git a/info/latex4musicians/verses-chords.pdf b/info/latex4musicians/verses-chords.pdf Binary files differnew file mode 100644 index 0000000000..158e445e15 --- /dev/null +++ b/info/latex4musicians/verses-chords.pdf |