diff --git a/songs/R.E.M./Bad Day (chords).tex b/songs/R.E.M./Bad Day (chords).tex new file mode 100644 index 0000000..18fdbcf --- /dev/null +++ b/songs/R.E.M./Bad Day (chords).tex @@ -0,0 +1,88 @@ +\documentclass{skrul-leadsheet-chords}[20pt] + +\begin{document} +\begin{song}[transpose-capo=true]{title={Bad Day}, band={R.E.M.}, bpm={98}, key={F}} + +\begin{intr} +\instruction{4 bar guitar riff intro over these (unplayed) chords} \\ +\chordtable{ +\\[-0.5ex] +\xb{F} & \xb{C} & \xb{Bb} & \xb{Bb} & & +} +\end{intr} + +\begin{v1} +\chordtable{ +\xb{F} & \xb{C} & \xb{Bb} & \xbb{Bb}[\textbf{...}]{C}[\textbf{.}] & & \\ +\xb{F} & \xb{C} & \xb{Gm} & \xb{Gm} & & \\ +\xb{F} & \xb{C} & \xb{Bb} & \xbb{Bb}[\textbf{...}]{C}[\textbf{.}] & & \\ +\xb{F} & \xb{C} & \xb{Gm} & \xb{Gm} & & \\ +} +\end{v1} + +\begin{b1} +\chordtable{ +\xb{C} & \xb{C} & \xb{Dm} & \xb{Bb} & & \\ +\xb{C} & \xb{C} & \xb{Dm} & \xb{Bb} & & \\ +\xb{Am} & \xb{C} & & & \\ +} +\end{b1} + +\begin{v2} +\instruction{Repeat Verse} +\end{v2} + +\begin{b2} +\instruction{Repeat Bridge} +\end{b2} + +\begin{c1} +\chordtable{ +\xb{F} & \xb{C} & \xb{Gm} & \xb{Gm} & repeat 4x & \\ +} +\end{c1} + +\begin{v3} +\instruction{Repeat Verse} +\end{v3} + +\begin{b3} +\instruction{Repeat Bridge} +\end{b3} + +\begin{c2} +\instruction{Repeat Chorus} +\end{c2} + +\begin{s1} +\instruction{Guitar bends for 2 bars} +\end{s1} + +\begin{c3} +\instruction{Repeat Chorus with doo doo doo doo doo ahhh} +\end{c3} + +\begin{b4} +\instruction{Repeat Bridge} +\end{b4} + +\begin{c4} +\instruction{Repeat Chorus} +\end{c4} + +\begin{c5} +\instruction{Repeat Chorus} +\end{c5} + +\begin{c6} +\instruction{Repeat Chorus with doo doo doo doo doo ahhh} +\end{c6} + +\begin{out} +\chordtable{ +\xb{Gm}[ $\Diamond$ ] & & & & +} +\end{out} + +\end{song} +\end{document} \ No newline at end of file diff --git a/songs/R.E.M./The One I Love (chords).tex b/songs/R.E.M./The One I Love (chords).tex index 17494da..5ed46b5 100644 --- a/songs/R.E.M./The One I Love (chords).tex +++ b/songs/R.E.M./The One I Love (chords).tex @@ -36,11 +36,11 @@ \begin{song}[transpose-capo=true]{title={The One I Love}, band={R.E.M.}, bpm={128}, key={Em}} \begin{intr} -\adjustbox{valign=t}{ +%\adjustbox{valign=t}{ \begin{tabularx}{\textwidth}{XXXXX} \xb{Em} & \xb{Dsus2} & \xb{Em} & \xb{Em} & \end{tabularx} -} +%} \end{intr} \begin{v1} diff --git a/tex/skrul-leadsheet-chords.cls b/tex/skrul-leadsheet-chords.cls index 7a942d0..eb7a863 100644 --- a/tex/skrul-leadsheet-chords.cls +++ b/tex/skrul-leadsheet-chords.cls @@ -3,6 +3,7 @@ \usepackage{savesym} \usepackage{gchords} + \savesymbol{chord} \RequirePackage{leadsheets} @@ -24,6 +25,11 @@ \usepackage[dvipsnames]{xcolor} +\usepackage{tabularx} +\usepackage{xparse} +\usepackage{adjustbox} +\usepackage{amssymb} + \definesongproperty{bpm} \definesongproperty{meter} \definesongproperty{note} @@ -132,6 +138,53 @@ \ExplSyntaxOff +\makeatletter +\newcommand\cellwidth{\TX@col@width} +\makeatother + +\NewDocumentCommand \xb { m O{\space} }{{ +\smash{% + \raisebox{10pt}{% + \begin{tabular}{@{}c} + #2 \\ + \writechord{#1} \\ + \end{tabular} + } + } +}} + +\NewDocumentCommand \xbb { m O{\space} m O{\space} }{{ +\smash{% + \raisebox{10pt}{% + \begin{tabular}{@{}cc@{}} + #2 & #4 \\ + \writechord{#1} & \writechord{#3} \\ \hline + \end{tabular} + } + } +}} + +\NewDocumentCommand \xbbbb { m o m o m o m o }{{ +\begin{tabular}{@{}lll} +\IfNoValueTF{#2}{}{#2} & \IfNoValueTF{#4}{}{#4} & \IfNoValueTF{#6}{}{#6} & \IfNoValueTF{#8}{}{#8} \\[-1ex] +\writechord{#1} & \writechord{#3} & \writechord{#5} & \writechord{#7} \\ \hline +\end{tabular}} +} + +% Globally smashes the row height of all tabularx rows. However, this +% messes with the baseline of the first row so compensate for it later. +\setlength{\extrarowheight}{-1.5ex} + +\NewDocumentCommand \chordtable { m }{{ +\adjustbox{valign=t}{ + \begin{tabularx}{\textwidth}{XXXXXX} + \\[0.4ex] % row height compensation + #1 + \end{tabularx} + } + \vspace*{-4ex} % remote some extra padding on bottom? + }} + \setleadsheets{ title-template = leadsheet, align-chords=l, @@ -155,7 +208,27 @@ \provideversetype{v4}[name=V4] \provideversetype{c1}[name=C1] \provideversetype{c2}[name=C2] +\provideversetype{c3}[name=C3] +\provideversetype{c4}[name=C4] +\provideversetype{c5}[name=C5] +\provideversetype{c6}[name=C6] + + +\provideversetype{b0}[name=B] +\provideversetype{b1}[name=B1] +\provideversetype{b2}[name=B2] +\provideversetype{b3}[name=B3] +\provideversetype{b4}[name=B4] + +\provideversetype{s1}[name=S1] +\provideversetype{s2}[name=S2] + +\provideversetype{i1}[name=I1] +\provideversetype{i2}[name=I2] + + \provideversetype{intr}[name=In] +\provideversetype{out}[name=Out] \provideversetype{s}[name=S] \providerobustcmd*\lsenparen[1]{%