%% This is a hack. The relative path works when building, say, %% "01-song1", but it fails when building a specific part, %% e.g. "01-song1/parts/keys.pdf". With this expression we try one %% path first and move on to the next relative path if that happens to %% fail. This is really gross, but it works. ¯\_(ツ)_/¯ #(or (false-if-exception (load "stafftab-engraver.scm")) (false-if-exception (load "../stafftab-engraver.scm")) (load "../../stafftab-engraver.scm")) %% tunings for 12-string Chapman Stick \makeDefaultStringTuning #'stick-classic-tuning \stringTuning \makeDefaultStringTuning #'stick-matched-reciprocal-tuning \stringTuning %% MR™ High Bass 4th % TODO: melody note heights are probably wrong %stick-tuning-twelve-mr-high = % \stringTuning % %% 12-String Classic™ High Bass 4th % TODO: melody note heights are probably wrong %stick-tuning-twelve-classic-high = % \stringTuning % %% Deep Matched Reciprocal™ % TODO %stick-tuning-twelve-deep-mr = % \stringTuning % %% Raised Matched Reciprocal™ % TODO %stick-tuning-twelve-classic-high = % \stringTuning % %% Dual Bass Reciprocal™ % TODO %stick-tuning-twelve-dual-bass-r = % \stringTuning %% tunings for 10-string Chapman Stick %% Baritone Melody™ % TODO: melody is wrong %stick-tuning-ten-baritone = % \stringTuning % %% Deep Baritone Melody™ % TODO: melody is wrong %chapman-stick-ten-deep-baritone = % \stringTuning %% tunings for 10-string Alto Stick %% TODO: check them! \makeDefaultStringTuning #'alto-stick-tuning \stringTuning \makeDefaultStringTuning #'alto-stick-gregs-extended-tuning \stringTuning \makeDefaultStringTuning #'alto-stick-bobs-expanded-tuning \stringTuning %% convert 12-string Chapman Stick tuning to 10-string tuning ten-string-stick = #(lambda (tuning) (append (list-head tuning 5) (list-head (list-tail tuning 6) 5))) %% get either the bass or the melody string group stick-string-group = #(lambda (tuning group) (let ((num (/ (length tuning) 2))) (if (equal? group 'bass) (list-head tuning num) (list-tail tuning num)))) \layout { \context { \PianoStaff \accepts "StaffTab" } \context { \GrandStaff \accepts "StaffTab" } \context { \Score \accepts "StaffTab" } \context { \Staff \name "StaffTab" \alias "Staff" \denies "Voice" \defaultchild "StickVoice" \accepts "StickVoice" \description "Same as @code{Staff} context, except that it is accommodated for typesetting a piece in StaffTab notation." } \context { \Voice \name "StickVoice" \alias "Voice" \description "Same as @code{Voice} context, except that it is accomodated for typesetting a piece in StaffTab notation." \remove "Fingering_engraver" \remove "New_fingering_engraver" \consists #stafftab-engraver } } \midi { \context { \Score \accepts "StaffTab" } \context { \Staff \name "StaffTab" midiInstrument = #"electric guitar (jazz)" \alias "Staff" \denies "Voice" \defaultchild "StickVoice" \accepts "StickVoice" \description "Same as @code{Staff} context, except that it is accommodated for typesetting a piece in StaffTab notation." } \context { \Voice \name "StickVoice" \alias "Voice" \description "Same as @code{Voice} context, except that it is accomodated for typesetting a piece in StaffTab notation." } }