\ProvidesClass{skrul-leadsheet} \LoadClassWithOptions{scrartcl} \usepackage{savesym} \usepackage{gchords} \savesymbol{chord} \RequirePackage{leadsheets} \RequirePackage{etoolbox} \RequirePackage{translations} \usepackage[T1]{fontenc} \usepackage[utf8]{inputenc} \usepackage[sfdefault]{roboto} \usepackage{geometry} \geometry{ letterpaper, margin=0.5in } \pagenumbering{gobble} \usepackage[dvipsnames]{xcolor} \definesongproperty{year} \definesongproperty{meter} \definesongproperty{note} \definesongtitletemplate{leadsheet}{% {\large \textbf{\songproperty{title}} - \songproperty{band}} {\footnotesize \space\space // \space\space \songproperty{year} \space\space // \space\space key: \songproperty{key} \ifsongproperty{capo}{\space\space // \space\space\capo}{} \ifsongproperty{meter}{\space\space // \space\space\songproperty{meter} time}{} \ifsongproperty{note}{\space\space // \space\space\songproperty{note}}{} } \vspace{-0.5\baselineskip} \hrulefill } \ExplSyntaxOn \char_set_catcode_other:N \# \char_set_catcode_parameter:N \! \prop_const_from_keyval:Nn \__skrul_enharmonic_map_prop { Am/F##=Am/G, Ab#m=Am, A##m7=Bm7, B#=C, B#*=C*, B#m=Cm, B#add9=Cadd9, Bb#=B, Bb#m7=Bm7, B#maj7=Cmaj7, B#m6=Cm6, C##=D, C##*=D*, C##7=D7, C##7*=D7*, C##/F#=D/F#, Db#=D, D##m=Em, D/Gb=D/F#, Eb#m=Em, Eb#m*=Em*, E#=F, F##=G, F##*=G*, F##7=G7, F##/A##*=G/B*, F##/B=G/B, G##=A, G##maj7=A\textsuperscript{maj7}, G##sus4=A\textsuperscript{sus4}, G##7=A\textsuperscript{7}, G##m7/C#=Am\textsuperscript{7}/D, G#b*=G*, G#b=G, G##m7=Am7, G##m7*=Am7*, Gb#=G, Eb#=E, Db#7/F#=D7/F#, A#=Bb, (F##)=(G), Cadd9=C\textsuperscript{add9}, A7=A\textsuperscript{7}, Am7=Am\textsuperscript{7}, D7=D\textsuperscript{7}, Bm7=Bm\textsuperscript{7}, F##sus2=G\textsuperscript{sus2}, B#maj7/F##=C\textsuperscript{maj7}/G, Dm/E#=Dm/F } \cs_generate_variant:Nn \str_set:Nn {Nx} \NewDocumentCommand \xchordname {m} {% \tl_if_head_eq_charcode:nNTF { !1 } . { \str_set:Nx \l_tmpa_str { \str_tail:n !1 } \prop_get:NVNTF \__skrul_enharmonic_map_prop \l_tmpa_str \__skrul_enharmonic_tl { \underline{\chordname{\__skrul_enharmonic_tl}}} { \underline{\chordname{\l_tmpa_str}}} } { \prop_get:NnNTF \__skrul_enharmonic_map_prop { !1 } \__skrul_enharmonic_tl { \chordname{\__skrul_enharmonic_tl}} { \chordname{!1}} } } \char_set_catcode_parameter:N \# \char_set_catcode_other:N \! \ExplSyntaxOff \setleadsheets{ title-template = leadsheet, align-chords=l, verse/numbered, chords/format = \color{black}\bfseries, chord-cs = \xchordname, verses-label-format = \itshape } \LeadsheetSurvive \provideversetype{prechorus}[name=Prechorus] \provideversetype*{prechorus*}[name=Prechorus] \provideversetype{postchorus}[name=Postchorus] \provideversetype*{postchorus*}[name=Postchorus] \provideversetype{chorus1}[name=Chorus 1] \provideversetype{chorus2}[name=Chorus 2] \provideversetype{xbreak}[name=Break] \providerobustcmd*\lsenparen[1]{% \expandcode{\noexpand\mklsenparen\mklsenparens{\unexpanded{#1}}}% } \providecommand*\mklsenparens{[]} \providecommand*\mklsenparen[3]{\textup{#1}#3\textup{#2}} \providerobustcmd*\instruction[1]{\lsenparen{\mkinstruction{#1}}} \providecommand*\mkinstruction[1]{\emph{#1}} \providerobustcmd*\choir[1]{\null\qquad\mkchoir{#1}} \providecommand*\mkchoir[1]{\instruction{\leadsheetstranslate{choir}: #1}} \LeadsheetEndSurvive