commit db5fce2c18b5a7e65166286ed523ec53fa0a489c Author: Michael Winter Date: Tue Jun 2 00:17:46 2020 -0400 first commit diff --git a/lilypond/counterfeit_in_colonial_connecticut_score.ly b/lilypond/counterfeit_in_colonial_connecticut_score.ly new file mode 100644 index 0000000..d89beca --- /dev/null +++ b/lilypond/counterfeit_in_colonial_connecticut_score.ly @@ -0,0 +1,178 @@ +\version "2.19.81" + + +\paper { + #(set-paper-size "a4" 'portrait) + top-margin = 1 \cm + bottom-margin = 1 \cm + left-margin = 2.5 \cm + ragged-bottom = ##t + page-breaking = #ly:minimal-breaking + + top-system-spacing = + #'((basic-distance . 15 ) + (minimum-distance . 15 ) + (padding . 0 ) + (stretchability . 0)) + + system-system-spacing = + #'((basic-distance . 30 ) + (minimum-distance . 30 ) + (padding . 0 ) + (stretchability . 0)) + + last-bottom-spacing = + #'((basic-distance . 15 ) + (minimum-distance . 15 ) + (padding . 0 ) + (stretchability . 0)) + + %min-systems-per-page = 5 + %systems-per-page = 5 + %max-systems-per-page = 5 + + print-page-number = ##t + oddHeaderMarkup = \markup { \on-the-fly #not-first-page "(cic)" } + evenHeaderMarkup = \markup { \on-the-fly #not-first-page "(cic)" } + oddFooterMarkup = \markup { \fill-line { + \on-the-fly #not-first-page + \concat { + "-" + \fontsize #1.5 + \on-the-fly #print-page-number-check-first + \fromproperty #'page:page-number-string + "-"}}} + evenFooterMarkup = \markup { \fill-line { + \on-the-fly #not-first-page + \concat { + "-" + \fontsize #1.5 + \on-the-fly #print-page-number-check-first + \fromproperty #'page:page-number-string + "-"}}} +} + +\header { + title = \markup { \italic {Counterfeiting in Colonial Connecticut}} + %subtitle = \markup { \normal-text { from \italic{a history of the domino the problem}}} + composer = \markup \right-column {"michael winter" "(gatlinburg, tennessee; 2020)"} + tagline = "" +} + +#(set-global-staff-size 11) + +\layout { + indent = 0.0\cm + line-width = 17\cm + ragged-last = ##f + ragged-right = ##f + + \context { + \Score + %\remove "Mark_engraver" + %\override BarNumber.extra-offset = #'(0 . 4) + \override BarNumber.stencil = #(make-stencil-circler 0.1 0.25 ly:text-interface::print) + \override Stem.stemlet-length = #0.75 + %\override SpacingSpanner.base-shortest-duration = #(ly:make-moment 1/4) + %\override SpacingSpanner.common-shortest-duration = #(ly:make-moment 1/30) + proportionalNotationDuration = #(ly:make-moment 1/16) + %\override SpacingSpanner.strict-note-spacing = ##t + %\override SpacingSpanner.uniform-stretching = ##t + %\override TextSpanner.breakable = ##t + \remove "Separating_line_group_engraver" + %\override PaperColumn.used = ##t + %\override DynamicTextSpanner.style = #'none + } + \context { + \Staff + + \override VerticalAxisGroup.staff-staff-spacing = + #'((basic-distance . 13 ) + (minimum-distance . 13 ) + (padding . 0 ) + (stretchability . 0)) + + %\consists "Mark_engraver" + %\remove "Dot_column_engraver" + %\remove "Time_signature_engraver" + %\remove "Clef_engraver" + %\override StaffSymbol.line-count = #1 + %\override NoteHead.no-ledgers = ##t + %\override RestCollision.positioning-done = #merge-rests-on-positioning + \override RehearsalMark.X-offset = #1 + \override RehearsalMark.Y-offset = #4 + \override VerticalAxisGroup.default-staff-staff-spacing = + #'((basic-distance . 16 ) + (minimum-distance . 16 ) + (padding . 0 ) + (stretchability . 0)) + + \override TimeSignature.font-size = #2 + \override TimeSignature.break-align-symbol = #'clef + \override TimeSignature.X-offset = + #ly:self-alignment-interface::x-aligned-on-self + \override TimeSignature.self-alignment-X = #LEFT + %\override TimeSignature.after-line-breaking = + % #shift-right-at-line-begin + \override TimeSignature.Y-offset = #9 + \override TimeSignature.extra-offset = #'(2 . 0) + } + \context { + \StaffGroup + \name "SemiStaffGroup" + \consists "Span_bar_engraver" + \override SpanBar.stencil = + #(lambda (grob) + (if (string=? (ly:grob-property grob 'glyph-name) "|") + (set! (ly:grob-property grob 'glyph-name) "")) + (ly:span-bar::print grob)) + } + \context { + \Score + \accepts SemiStaffGroup + } +} + +\midi { } + + +%showLastLength = R1*128 +\score{ +\new Score + << + \new SemiStaffGroup { + << + \new Staff \with { + instrumentName = "oversound" + shortInstrumentName = "oversound" + midiInstrument = #"clarinet" + } + << + \include "includes/cicc_high.ly" + >> + + \new Staff \with { + instrumentName = "guitar" + shortInstrumentName = "guitar" + midiInstrument = #"electric guitar (jazz)" + } + << + \include "includes/cicc_guitar.ly" + >> + + \new Staff \with { + instrumentName = "undersound" + shortInstrumentName = "undersound" + midiInstrument = #"contrabass" + } + << + \include "includes/cicc_low.ly" + >> + + >> + } + >> + + \layout{} + \midi{} +} \ No newline at end of file diff --git a/lilypond/counterfeit_in_colonial_connecticut_score.midi b/lilypond/counterfeit_in_colonial_connecticut_score.midi new file mode 100644 index 0000000..4bd5414 Binary files /dev/null and b/lilypond/counterfeit_in_colonial_connecticut_score.midi differ diff --git a/lilypond/counterfeit_in_colonial_connecticut_score.pdf b/lilypond/counterfeit_in_colonial_connecticut_score.pdf new file mode 100644 index 0000000..b9eab68 Binary files /dev/null and b/lilypond/counterfeit_in_colonial_connecticut_score.pdf differ diff --git a/lilypond/includes/cicc_guitar.ly b/lilypond/includes/cicc_guitar.ly new file mode 100644 index 0000000..979cb06 --- /dev/null +++ b/lilypond/includes/cicc_guitar.ly @@ -0,0 +1,22 @@ + +{ +\set Score.markFormatter = #format-mark-box-numbers \tempo 8 = 90 + \override Staff.TimeSignature #'stencil = ##f \numericTimeSignature \time 4/4 + \clef treble + \bar "||" \mark \markup { \bold \box 1.1 } +\time 4/4 +d''8 _\markup{\concat{ IV \super 0}} [ fis'''8 _\markup{\concat{ III \super 12}} ] f'''8. _\markup{\concat{ III \super 11}} [ d'16 _\markup{\concat{ VI \super 0}} ] ~ d'8. [ b'''16 _\markup{\concat{ I \super 11}} ] ~ b'''8. [ ais'''16 _\markup{\concat{ I \super 10}} ] ~ | ais'''8. [ a'16 _\markup{\concat{ V \super 0}} ] ~ a'16 [ b''8. _\markup{\concat{ IV \super 9}} ] ~ b''16 [ a'''8 _\markup{\concat{ I \super 9}} a'16 _\markup{\concat{ V \super 0}} ] ~ a'16 [ d''8 _\markup{\concat{ IV \super 0}} c'''16 _\markup{\concat{ I \super 0}} ] ~ | c'''8 [ a'''8 _\markup{\concat{ II \super 12}} ] ~ a'''8 [ fis''8 _\markup{\concat{ III \super 0}} ] ~ fis''16 [ a'''8. _\markup{\concat{ I \super 9}} ] ~ a'''16 [ a''8. _\markup{\concat{ II \super 0}} ] ~ | a''16 [ fis''8. _\markup{\concat{ III \super 0}} ] ~ fis''16 [ a'''8. _\markup{\concat{ I \super 9}} ] ~ a'''16 [ a''8 _\markup{\concat{ II \super 0}} fis''16 _\markup{\concat{ III \super 0}} ] ~ fis''16 [ a'''8 _\markup{\concat{ I \super 9}} a''16 _\markup{\concat{ II \super 0}} ] ~ | a''8 [ fis''8 _\markup{\concat{ III \super 0}} ] ~ fis''8 [ a'''8 _\markup{\concat{ I \super 9}} ] gis'''8 _\markup{\concat{ II \super 11}} [ fis''8 _\markup{\concat{ III \super 0}} ] ~ fis''16 [ c'''8. _\markup{\concat{ I \super 0}} ] ~ | c'''16 [ gis'''8. _\markup{\concat{ II \super 11}} ] ~ gis'''16 [ fis''8. _\markup{\concat{ III \super 0}} ] c'''8. _\markup{\concat{ I \super 0}} [ a''16 _\markup{\concat{ II \super 0}} ] ~ a''16 [ fis''8 _\markup{\concat{ III \super 0}} a'''16 _\markup{\concat{ I \super 9}} ] ~ | a'''16 [ gis'''8. _\markup{\concat{ I \super 8}} ] ~ gis'''16 [ a''8. _\markup{\concat{ II \super 0}} ] ~ a''16 [ fis''8 _\markup{\concat{ III \super 0}} c'''16 _\markup{\concat{ I \super 0}} ] ~ c'''16 [ a''8 _\markup{\concat{ II \super 0}} f'''16 _\markup{\concat{ III \super 11}} ] ~ | f'''16 [ e'''8. _\markup{\concat{ III \super 10}} ] ~ e'''16 [ gis'''8 _\markup{\concat{ I \super 8}} fis''16 _\markup{\concat{ III \super 0}} ] ~ fis''8. [ f''16 _\markup{\concat{ V \super 8}} ] ~ f''16 [ a''8 _\markup{\concat{ II \super 0}} c'''16 _\markup{\concat{ I \super 0}} ] ~ | c'''8 [ e'''8 _\markup{\concat{ III \super 10}} ] ~ e'''16 [ dis'''8. _\markup{\concat{ III \super 9}} ] a'4 _\markup{\concat{ V \super 0}} g'''4 _\markup{\concat{ II \super 10}} | d'8 _\markup{\concat{ VI \super 0}} [ dis'''8 _\markup{\concat{ III \super 9}} ] d'''8 _\markup{\concat{ III \super 8}} [ a''8 _\markup{\concat{ IV \super 7}} ] ~ a''8 [ ais'8 _\markup{\concat{ VI \super 8}} ] fis''8. _\markup{\concat{ III \super 0}} [ d''16 _\markup{\concat{ IV \super 0}} ] ~ | d''8. [ a'16 _\markup{\concat{ V \super 0}} ] ~ a'16 [ d''8 _\markup{\concat{ IV \super 0}} a'16 _\markup{\concat{ VI \super 7}} ] ~ a'8 [ fis''8 _\markup{\concat{ III \super 0}} ] ~ fis''8 [ a'8 _\markup{\concat{ V \super 0}} ] ~ | a'8 [ d''8 _\markup{\concat{ IV \super 0}} ] ~ d''8 [ a'8 _\markup{\concat{ VI \super 7}} ] cis'''8. _\markup{\concat{ III \super 7}} [ a'16 _\markup{\concat{ V \super 0}} ] ~ a'8 [ a''8 _\markup{\concat{ IV \super 7}} ] ~ | a''16 [ d'8. _\markup{\concat{ VI \super 0}} ] fis''8. _\markup{\concat{ III \super 0}} [ c'''16 _\markup{\concat{ I \super 0}} ] ~ c'''8 [ d''8 _\markup{\concat{ IV \super 0}} ] ~ d''8 [ c'''8 _\markup{\concat{ I \super 0}} ] ~ | c'''16 [ a''8. _\markup{\concat{ IV \super 7}} ] ~ a''16 [ c'''8. _\markup{\concat{ I \super 0}} ] ~ c'''16 [ d''8. _\markup{\concat{ IV \super 0}} ] c'''8 _\markup{\concat{ I \super 0}} [ a''8 _\markup{\concat{ IV \super 7}} ] | c'''8. _\markup{\concat{ I \super 0}} [ d''16 _\markup{\concat{ IV \super 0}} ] ~ d''8 [ a''8 _\markup{\concat{ II \super 0}} ] ~ a''16 [ g'''8. _\markup{\concat{ I \super 7}} ] f''8. _\markup{\concat{ V \super 8}} [ e''16 _\markup{\concat{ V \super 7}} ] ~ | e''8 [ a''8 _\markup{\concat{ IV \super 7}} ] fis'''4 _\markup{\concat{ II \super 9}} fis'''4 _\markup{\concat{ I \super 6}} a'4 _\markup{\concat{ V \super 0}} | a''4 _\markup{\concat{ IV \super 7}} gis''8. _\markup{\concat{ IV \super 6}} [ a''16 _\markup{\concat{ II \super 0}} ] ~ a''8 [ c'''8 _\markup{\concat{ I \super 0}} ] dis''8 _\markup{\concat{ V \super 6}} [ d''8 _\markup{\concat{ IV \super 0}} ] ~ | d''4 fis'''4 _\markup{\concat{ II \super 9}} ~ fis'''8 [ e'''8 _\markup{\concat{ II \super 7}} ] ~ e'''4 | c'''4 _\markup{\concat{ I \super 0}} ~ c'''8 [ a'8 _\markup{\concat{ V \super 0}} ] ~ a'8 [ gis''8 _\markup{\concat{ IV \super 6}} ] ~ gis''8 [ g''8 _\markup{\concat{ IV \super 5}} ] ~ | g''8 [ a''8 _\markup{\concat{ II \super 0}} ] c'''8. _\markup{\concat{ I \super 0}} [ d''16 _\markup{\concat{ V \super 5}} ] ~ d''8 [ g''8 _\markup{\concat{ IV \super 5}} ] ~ g''16 [ fis''8. _\markup{\concat{ IV \super 4}} ] | dis'''8. _\markup{\concat{ II \super 6}} [ c'''16 _\markup{\concat{ I \super 0}} ] ~ c'''8 [ cis''8 _\markup{\concat{ V \super 4}} ] ~ cis''16 [ d''8. _\markup{\concat{ IV \super 0}} ] a''8. _\markup{\concat{ II \super 0}} [ c'''16 _\markup{\concat{ I \super 0}} ] ~ | c'''8 [ a'8 _\markup{\concat{ V \super 0}} ] ~ a'16 [ d''8. _\markup{\concat{ IV \super 0}} ] a''4 _\markup{\concat{ II \super 0}} c'''8 _\markup{\concat{ I \super 0}} [ cis''8 _\markup{\concat{ V \super 4}} ] ~ | cis''16 [ fis''8. _\markup{\concat{ IV \super 4}} ] ~ fis''16 [ a''8. _\markup{\concat{ II \super 0}} ] ~ a''16 [ c'''8. _\markup{\concat{ I \super 0}} ] ~ c'''16 [ a'8. _\markup{\concat{ V \super 0}} ] ~ | a'16 [ fis''8 _\markup{\concat{ IV \super 4}} a''16 _\markup{\concat{ II \super 0}} ] ~ a''16 [ cis'''8 _\markup{\concat{ III \super 7}} b''16 _\markup{\concat{ III \super 5}} ] ~ b''16 [ f'''8 _\markup{\concat{ I \super 5}} a''16 _\markup{\concat{ II \super 0}} ] ~ a''8 [ fis''8 _\markup{\concat{ III \super 0}} ] ~ | fis''4 ~ fis''16 [ c'''8. _\markup{\concat{ I \super 0}} ] a''8 _\markup{\concat{ II \super 0}} [ ais''8 _\markup{\concat{ III \super 4}} ] ~ ais''8 [ f'''8 _\markup{\concat{ I \super 5}} ] ~ | f'''8 [ e'''8 _\markup{\concat{ I \super 4}} ] ~ e'''8 [ cis'''8 _\markup{\concat{ II \super 4}} ] ~ cis'''16 [ fis''8. _\markup{\concat{ III \super 0}} ] e'''8. _\markup{\concat{ I \super 4}} [ a''16 _\markup{\concat{ II \super 0}} ] ~ | a''8 [ fis''8 _\markup{\concat{ III \super 0}} ] c'''8. _\markup{\concat{ I \super 0}} [ a''16 _\markup{\concat{ II \super 0}} ] ~ a''8 [ ais''8 _\markup{\concat{ III \super 4}} ] ~ ais''8 [ c'''8 _\markup{\concat{ I \super 0}} ] ~ | c'''8 [ cis'''8 _\markup{\concat{ II \super 4}} ] fis''8. _\markup{\concat{ III \super 0}} [ e'''16 _\markup{\concat{ I \super 4}} ] ~ e'''8. [ a''16 _\markup{\concat{ II \super 0}} ] ~ a''16 [ fis''8 _\markup{\concat{ III \super 0}} c'''16 _\markup{\concat{ I \super 0}} ] ~ | c'''8. [ d'16 _\markup{\concat{ VI \super 0}} ] ~ d'16 [ fis''8 _\markup{\concat{ IV \super 4}} cis'''16 _\markup{\concat{ II \super 4}} ] ~ cis'''16 [ a'8 _\markup{\concat{ VI \super 7}} fis''16 _\markup{\concat{ IV \super 4}} ] ~ fis''16 [ cis''8. _\markup{\concat{ V \super 4}} ] | ais''4 _\markup{\concat{ III \super 4}} cis'''8 _\markup{\concat{ II \super 4}} [ a'8 _\markup{\concat{ V \super 0}} ] e'''4 _\markup{\concat{ I \super 4}} a''4 _\markup{\concat{ II \super 0}} | fis''4 _\markup{\concat{ III \super 0}} cis''8. _\markup{\concat{ V \super 4}} [ e'''16 _\markup{\concat{ I \super 4}} ] ~ e'''8 [ a''8 _\markup{\concat{ II \super 0}} ] ~ a''8 [ ais''8 _\markup{\concat{ III \super 4}} ] ~ | ais''8 [ a'8 _\markup{\concat{ V \super 0}} ] ~ a'8 [ c'''8 _\markup{\concat{ I \super 0}} ] a''8. _\markup{\concat{ II \super 0}} [ ais''16 _\markup{\concat{ III \super 4}} ] ~ ais''8 [ a'8 _\markup{\concat{ V \super 0}} ] ~ | a'16 [ c'''8. _\markup{\concat{ I \super 0}} ] cis'''4 _\markup{\concat{ II \super 4}} fis''4 _\markup{\concat{ III \super 0}} a''4 _\markup{\concat{ II \super 0}} | +\time 2/4 +a'4 _\markup{\concat{ VI \super 7}} g'8 _\markup{\concat{ VI \super 5}} [ gis''8 _\markup{\concat{ III \super 2}} ] | \bar "||" \mark \markup { \bold \box 1.2 } +\time 4/4 +ais''2 _\markup{\concat{ III \super 4}} a''4 _\markup{\concat{ II \super 0}} ~ a''8 [ ais''8 _\markup{\concat{ III \super 4}} ] ~ | ais''4 ~ ais''8 [ a'8 _\markup{\concat{ V \super 0}} ] ~ a'4 ~ a'8 [ c'''8 _\markup{\concat{ I \super 0}} ] ~ | c'''4 cis'''2 _\markup{\concat{ II \super 4}} ~ cis'''16 [ fis''8. _\markup{\concat{ III \super 0}} ] ~ | fis''8. [ a'16 _\markup{\concat{ VI \super 7}} ] ~ a'4 ~ a'8. [ g'16 _\markup{\concat{ VI \super 5}} ] ~ g'4 ~ | g'16 [ gis''8. _\markup{\concat{ III \super 2}} ] ~ gis''4 ais''2 _\markup{\concat{ III \super 4}} | a'4 _\markup{\concat{ V \super 0}} ~ a'16 [ c'''8 _\markup{\concat{ I \super 0}} a''16 _\markup{\concat{ II \super 0}} ] ~ a''4 ~ a''8 [ ais''8 _\markup{\concat{ III \super 4}} ] ~ | ais''4 ~ ais''16 [ a'8. _\markup{\concat{ V \super 0}} ] ~ a'4 ~ a'8 [ c'''8 _\markup{\concat{ I \super 0}} ] ~ | c'''4 ~ c'''16 [ cis'''8. _\markup{\concat{ II \super 4}} ] ~ cis'''4 ~ cis'''16 [ a''8. _\markup{\concat{ II \super 0}} ] ~ | a''16 [ a'8. _\markup{\concat{ VI \super 7}} ] ~ a'4 ~ a'8. [ g'16 _\markup{\concat{ VI \super 5}} ] ~ g'4 ~ | g'8. [ gis''16 _\markup{\concat{ III \super 2}} ] ~ gis''2 ais''4 _\markup{\concat{ III \super 4}} ~ | ais''8. [ a'16 _\markup{\concat{ V \super 0}} ] ~ a'4 ~ a'16 [ a''8. _\markup{\concat{ II \super 0}} ] ~ a''8 [ ais''8 _\markup{\concat{ III \super 4}} ] ~ | ais''4 ~ ais''16 [ a'8. _\markup{\concat{ V \super 0}} ] ~ a'2 | c'''2 _\markup{\concat{ I \super 0}} ~ c'''16 [ cis'''8. _\markup{\concat{ II \super 4}} ] ~ cis'''4 | fis''4 _\markup{\concat{ III \super 0}} ~ fis''8 [ a''8 _\markup{\concat{ II \super 0}} ] a'2 _\markup{\concat{ VI \super 7}} ~ | a'4 g'4 _\markup{\concat{ VI \super 5}} ~ g'8 [ gis''8 _\markup{\concat{ III \super 2}} ] ~ gis''4 ~ | gis''2 ais''2 _\markup{\concat{ III \super 4}} | a'4 _\markup{\concat{ V \super 0}} ~ a'16 [ c'''8 _\markup{\concat{ I \super 0}} a''16 _\markup{\concat{ II \super 0}} ] ~ a''4 ~ a''16 [ a'8. _\markup{\concat{ V \super 0}} ] ~ | a'2 ~ a'8 [ c'''8 _\markup{\concat{ I \super 0}} ] ~ c'''4 ~ | c'''8 [ cis'''8 _\markup{\concat{ II \super 4}} ] ~ cis'''4 ~ cis'''8 [ fis''8 _\markup{\concat{ III \super 0}} ] ~ fis''4 ~ | fis''8 [ a''8 _\markup{\concat{ II \super 0}} ] a'2 _\markup{\concat{ VI \super 7}} ~ a'8 [ g'8 _\markup{\concat{ VI \super 5}} ] ~ | g'8. [ gis''16 _\markup{\concat{ III \super 2}} ] ~ gis''2. | ais''2 _\markup{\concat{ III \super 4}} c'''8. _\markup{\concat{ I \super 0}} [ a''16 _\markup{\concat{ II \super 0}} ] ~ a''4 ~ | a''16 [ ais''8. _\markup{\concat{ III \super 4}} ] c'''2 _\markup{\concat{ I \super 0}} ~ c'''16 [ cis'''8. _\markup{\concat{ II \super 4}} ] ~ | cis'''4 ~ cis'''16 [ a''8. _\markup{\concat{ II \super 0}} ] ~ a''8. [ a'16 _\markup{\concat{ VI \super 7}} ] ~ a'4 ~ | a'4 ~ a'8. [ g'16 _\markup{\concat{ VI \super 5}} ] ~ g'2 | c'''8 _\markup{\concat{ I \super 0}} [ a''8 _\markup{\concat{ II \super 0}} ] ~ a''4 ~ a''16 [ ais''8 _\markup{\concat{ III \super 4}} c'''16 _\markup{\concat{ I \super 0}} ] ~ c'''4 ~ | c'''4 ~ c'''8 [ fis''8 _\markup{\concat{ III \super 0}} ] ~ fis''4 ~ fis''8 [ a''8 _\markup{\concat{ II \super 0}} ] ~ | a''4 ~ a''16 [ a'8. _\markup{\concat{ VI \super 7}} ] ~ a'2 ~ | a'8. [ gis''16 _\markup{\concat{ III \super 2}} ] ~ gis''2. | ais''2 _\markup{\concat{ III \super 4}} ~ ais''8 [ c'''8 _\markup{\concat{ I \super 0}} ] a''4 _\markup{\concat{ II \super 0}} ~ | a''16 [ ais''8. _\markup{\concat{ III \super 4}} ] a'2. _\markup{\concat{ V \super 0}} ~ | a'8. [ c'''16 _\markup{\concat{ I \super 0}} ] ~ c'''2. | cis'''4 _\markup{\concat{ II \super 4}} fis''4 _\markup{\concat{ III \super 0}} ~ fis''8 [ a''8 _\markup{\concat{ II \super 0}} ] ~ a''4 ~ | a''4 ais''2. _\markup{\concat{ III \super 4}} | a'8 _\markup{\concat{ V \super 0}} [ c'''8 _\markup{\concat{ I \super 0}} ] ~ c'''16 [ a''8. _\markup{\concat{ II \super 0}} ] ~ a''16 [ ais''8. _\markup{\concat{ III \super 4}} ] ~ ais''8 [ a'8 _\markup{\concat{ V \super 0}} ] ~ | a'2 ~ a'8. [ c'''16 _\markup{\concat{ I \super 0}} ] ~ c'''4 ~ | c'''2 ~ c'''16 [ fis''8. _\markup{\concat{ III \super 0}} ] ~ fis''4 ~ | fis''16 [ a''8. _\markup{\concat{ II \super 0}} ] ~ a''4 ~ a''8. [ a'16 _\markup{\concat{ VI \super 7}} ] ~ a'4 ~ | a'4 ~ a'8. [ g'16 _\markup{\concat{ VI \super 5}} ] ~ g'4 ais''4 _\markup{\concat{ III \super 4}} ~ | ais''4 ~ ais''8 [ a'8 _\markup{\concat{ V \super 0}} ] ~ a'8 [ c'''8 _\markup{\concat{ I \super 0}} ] ais''8. _\markup{\concat{ III \super 4}} [ a'16 _\markup{\concat{ V \super 0}} ] ~ | a'2. ~ a'16 [ c'''8. _\markup{\concat{ I \super 0}} ] ~ | c'''2 ~ c'''8. [ cis'''16 _\markup{\concat{ II \super 4}} ] ~ cis'''8. [ fis''16 _\markup{\concat{ III \super 0}} ] ~ | fis''2 ~ fis''16 [ a''8. _\markup{\concat{ II \super 0}} ] ~ a''4 ~ | a''8. [ a'16 _\markup{\concat{ VI \super 7}} ] ~ a'2 ~ a'8. [ g'16 _\markup{\concat{ VI \super 5}} ] ~ | g'8 [ gis''8 _\markup{\concat{ III \super 2}} ] ~ gis''2. | \bar "||" \mark \markup { \bold \box 1.3 }fis''8 _\markup{\concat{ IV \super 4}} [ f''8 _\markup{\concat{ IV \super 3}} ] ~ f''16 [ a''8. _\markup{\concat{ II \super 0}} ] ~ a''16 [ g'8. _\markup{\concat{ VI \super 5}} ] ~ g'16 [ fis'8. _\markup{\concat{ VI \super 4}} ] ~ | fis'16 [ fis''8. _\markup{\concat{ III \super 0}} ] ~ fis''16 [ d''8. _\markup{\concat{ IV \super 0}} ] ~ d''16 [ d'8. _\markup{\concat{ VI \super 0}} ] ~ d'16 [ e''8. _\markup{\concat{ IV \super 2}} ] ~ | e''16 [ e'''8. _\markup{\concat{ I \super 4}} ] ~ e'''16 [ dis'''8. _\markup{\concat{ I \super 3}} ] ~ dis'''16 [ a'8. _\markup{\concat{ V \super 0}} ] g''8 _\markup{\concat{ III \super 1}} [ d'8 _\markup{\concat{ VI \super 0}} ] ~ | d'8 [ cis''8 _\markup{\concat{ V \super 4}} ] ~ cis''8 [ c''8 _\markup{\concat{ V \super 3}} ] ~ c''16 [ fis''8. _\markup{\concat{ III \super 0}} ] d'4 _\markup{\concat{ VI \super 0}} | d'''4 _\markup{\concat{ I \super 2}} fis''8 _\markup{\concat{ III \super 0}} [ cis'''8 _\markup{\concat{ I \super 1}} ] ~ cis'''16 [ e'8. _\markup{\concat{ VI \super 2}} ] b''8. _\markup{\concat{ II \super 2}} [ a'16 _\markup{\concat{ V \super 0}} ] ~ | a'8 [ d''8 _\markup{\concat{ IV \super 0}} ] c'''8 _\markup{\concat{ I \super 0}} [ d'8 _\markup{\concat{ VI \super 0}} ] ~ d'16 [ b''8. _\markup{\concat{ II \super 2}} ] a''8. _\markup{\concat{ II \super 0}} [ a'16 _\markup{\concat{ V \super 0}} ] ~ | a'8 [ d''8 _\markup{\concat{ IV \super 0}} ] ~ d''16 [ c'''8 _\markup{\concat{ I \super 0}} d'16 _\markup{\concat{ VI \super 0}} ] ~ d'16 [ a''8 _\markup{\concat{ II \super 0}} a'16 _\markup{\concat{ V \super 0}} ] ~ a'8 [ d''8 _\markup{\concat{ IV \super 0}} ] ~ | d''8 [ c'''8 _\markup{\concat{ I \super 0}} ] dis'8 _\markup{\concat{ VI \super 1}} [ a''8 _\markup{\concat{ II \super 0}} ] a'8. _\markup{\concat{ V \super 0}} [ d''16 _\markup{\concat{ IV \super 0}} ] ~ d''8 [ a''8 _\markup{\concat{ II \super 0}} ] ~ | a''8 [ c'''8 _\markup{\concat{ I \super 0}} ] ~ c'''8 [ g''8 _\markup{\concat{ III \super 1}} ] a''8 _\markup{\concat{ II \super 0}} [ e''8 _\markup{\concat{ IV \super 2}} ] ~ e''8 [ a'8 _\markup{\concat{ V \super 0}} ] ~ | a'16 [ a''8. _\markup{\concat{ II \super 0}} ] d''8. _\markup{\concat{ IV \super 0}} [ c''16 _\markup{\concat{ V \super 3}} ] ~ c''8 [ ais'8 _\markup{\concat{ V \super 1}} ] ~ ais'16 [ a''8. _\markup{\concat{ II \super 0}} ] | \bar ".|" \mark \markup { \bold \box 1.4 }d''8 _\markup{\concat{ IV \super \musicglyph "noteheads.s0harmonic"}} [ a'8 _\markup{\concat{ V \super \musicglyph "noteheads.s0harmonic"}} ] a''8 _\markup{\concat{ II \super \musicglyph "noteheads.s0harmonic"}} [ d''8 _\markup{\concat{ IV \super \musicglyph "noteheads.s0harmonic"}} ] a'8 _\markup{\concat{ V \super \musicglyph "noteheads.s0harmonic"}} [ a''8 _\markup{\concat{ II \super \musicglyph "noteheads.s0harmonic"}} ] d''8 _\markup{\concat{ IV \super \musicglyph "noteheads.s0harmonic"}} [ a'8 _\markup{\concat{ V \super \musicglyph "noteheads.s0harmonic"}} ] | d''8 _\markup{\concat{ IV \super \musicglyph "noteheads.s0harmonic"}} [ a'8 _\markup{\concat{ V \super \musicglyph "noteheads.s0harmonic"}} ] fis''8. _\markup{\concat{ III \super \musicglyph "noteheads.s0harmonic"}} [ a'16 _\markup{\concat{ V \super \musicglyph "noteheads.s0harmonic"}} ] ~ a'8 [ a''8 _\markup{\concat{ II \super \musicglyph "noteheads.s0harmonic"}} ] ~ a''16 [ fis''8. _\markup{\concat{ III \super \musicglyph "noteheads.s0harmonic"}} ] | c'''8. _\markup{\concat{ I \super \musicglyph "noteheads.s0harmonic"}} [ a'16 _\markup{\concat{ V \super \musicglyph "noteheads.s0harmonic"}} ] ~ a'8 [ a''8 _\markup{\concat{ II \super \musicglyph "noteheads.s0harmonic"}} ] ~ a''16 [ fis''8. _\markup{\concat{ III \super \musicglyph "noteheads.s0harmonic"}} ] c'''8. _\markup{\concat{ I \super \musicglyph "noteheads.s0harmonic"}} [ a'16 _\markup{\concat{ V \super \musicglyph "noteheads.s0harmonic"}} ] ~ | a'8. [ a''16 _\markup{\concat{ II \super \musicglyph "noteheads.s0harmonic"}} ] ~ a''8. [ fis''16 _\markup{\concat{ III \super \musicglyph "noteheads.s0harmonic"}} ] ~ fis''8. [ c'''16 _\markup{\concat{ I \super \musicglyph "noteheads.s0harmonic"}} ] ~ c'''8. [ a'16 _\markup{\concat{ V \super \musicglyph "noteheads.s0harmonic"}} ] ~ | a'8. [ a''16 _\markup{\concat{ II \super \musicglyph "noteheads.s0harmonic"}} ] ~ a''8. [ fis''16 _\markup{\concat{ III \super \musicglyph "noteheads.s0harmonic"}} ] ~ fis''8. [ c'''16 _\markup{\concat{ I \super \musicglyph "noteheads.s0harmonic"}} ] ~ c'''8. [ a'16 _\markup{\concat{ V \super \musicglyph "noteheads.s0harmonic"}} ] ~ | a'8. [ a''16 _\markup{\concat{ II \super \musicglyph "noteheads.s0harmonic"}} ] ~ a''4 fis''4 _\markup{\concat{ III \super \musicglyph "noteheads.s0harmonic"}} ~ fis''16 [ c'''8. _\markup{\concat{ I \super \musicglyph "noteheads.s0harmonic"}} ] ~ | c'''8 [ d''8 _\markup{\concat{ IV \super \musicglyph "noteheads.s0harmonic"}} ] ~ d''8. [ c'''16 _\markup{\concat{ I \super \musicglyph "noteheads.s0harmonic"}} ] ~ c'''4 a'4 _\markup{\concat{ V \super \musicglyph "noteheads.s0harmonic"}} ~ | a'16 [ d'8. _\markup{\concat{ VI \super \musicglyph "noteheads.s0harmonic"}} ] ~ d'8 [ a'8 _\markup{\concat{ V \super \musicglyph "noteheads.s0harmonic"}} ] ~ a'4 c'''4 _\markup{\concat{ I \super \musicglyph "noteheads.s0harmonic"}} ~ | c'''8 [ d''8 _\markup{\concat{ IV \super \musicglyph "noteheads.s0harmonic"}} ] ~ d''4 d'4 _\markup{\concat{ VI \super \musicglyph "noteheads.s0harmonic"}} ~ d'8 [ c'''8 _\markup{\concat{ I \super \musicglyph "noteheads.s0harmonic"}} ] ~ | c'''4 a'4 _\markup{\concat{ V \super \musicglyph "noteheads.s0harmonic"}} ~ a'8. [ a''16 _\markup{\concat{ II \super \musicglyph "noteheads.s0harmonic"}} ] ~ a''4 ~ | a''8 [ d''8 _\markup{\concat{ IV \super \musicglyph "noteheads.s0harmonic"}} ] ~ d''4 ~ d''16 [ d'8. _\markup{\concat{ VI \super \musicglyph "noteheads.s0harmonic"}} ] ~ d'4 | c'''4 _\markup{\concat{ I \super \musicglyph "noteheads.s0harmonic"}} ~ c'''8. [ a'16 _\markup{\concat{ V \super \musicglyph "noteheads.s0harmonic"}} ] ~ a'4 ~ a'8. [ a''16 _\markup{\concat{ II \super \musicglyph "noteheads.s0harmonic"}} ] ~ | a''4 ~ a''8. [ d''16 _\markup{\concat{ IV \super \musicglyph "noteheads.s0harmonic"}} ] ~ d''4 ~ d''8. [ d'16 _\markup{\concat{ VI \super \musicglyph "noteheads.s0harmonic"}} ] ~ | d'4 ~ d'8. [ c'''16 _\markup{\concat{ I \super \musicglyph "noteheads.s0harmonic"}} ] ~ c'''2 | a'2 _\markup{\concat{ V \super \musicglyph "noteheads.s0harmonic"}} ~ a'16 [ a''8. _\markup{\concat{ II \super \musicglyph "noteheads.s0harmonic"}} ] ~ a''4 ~ | a''8 [ d''8 _\markup{\concat{ IV \super \musicglyph "noteheads.s0harmonic"}} ] ~ d''2 d'4 _\markup{\concat{ VI \super \musicglyph "noteheads.s0harmonic"}} ~ | d'4 ~ d'8 [ c'''8 _\markup{\concat{ I \super \musicglyph "noteheads.s0harmonic"}} ] ~ c'''2 ~ | c'''16 [ a'8. _\markup{\concat{ V \super \musicglyph "noteheads.s0harmonic"}} ] ~ a'2 a''4 _\markup{\concat{ II \super \musicglyph "noteheads.s0harmonic"}} ~ | a''2 d''2 _\markup{\concat{ IV \super \musicglyph "noteheads.s0harmonic"}} ~ | d''4 ~ d''16 [ d'8. _\markup{\concat{ VI \super \musicglyph "noteheads.s0harmonic"}} ] ~ d'2 ~ | d'8. [ a''16 _\markup{\concat{ II \super \musicglyph "noteheads.s0harmonic"}} ] ~ a''2. ~ | +\time 3/4 +a''2. | \bar "|.|" \mark \markup { \bold \box 2.1 } +\pageBreak + +\time 4/4 +d''8. _\markup{\concat{ IV \super 0}} [ d'16 _\markup{\concat{ VI \super 0}} ] ~ d'8 [ gis'''8 _\markup{\concat{ II \super 11}} ] ~ gis'''16 [ g'''8 _\markup{\concat{ II \super 10}} dis'''16 _\markup{\concat{ III \super 9}} ] ~ dis'''16 [ d'8. _\markup{\concat{ VI \super 0}} ] ~ | d'16 [ d''8 _\markup{\concat{ IV \super 0}} g'''16 _\markup{\concat{ II \super 10}} ] ~ g'''16 [ fis''8. _\markup{\concat{ III \super 0}} ] c''8. _\markup{\concat{ VI \super 10}} [ d''16 _\markup{\concat{ IV \super 0}} ] ~ d''8 [ a''8 _\markup{\concat{ II \super 0}} ] ~ | a''16 [ fis''8. _\markup{\concat{ III \super 0}} ] ~ fis''16 [ d'8. _\markup{\concat{ VI \super 0}} ] ~ d'16 [ c'''8. _\markup{\concat{ IV \super 10}} ] ~ c'''16 [ f'''8 _\markup{\concat{ II \super 8}} fis''16 _\markup{\concat{ III \super 0}} ] ~ | fis''8 [ a'8 _\markup{\concat{ V \super 0}} ] ~ a'16 [ fis''8. _\markup{\concat{ III \super 0}} ] a'8. _\markup{\concat{ V \super 0}} [ fis''16 _\markup{\concat{ III \super 0}} ] ~ fis''4 ~ | fis''16 [ a'8. _\markup{\concat{ V \super 0}} ] d'''4 _\markup{\concat{ III \super 8}} a'4 _\markup{\concat{ V \super 0}} ~ a'8. [ d'''16 _\markup{\concat{ III \super 8}} ] ~ | d'''4 ~ d'''8 [ c'''8 _\markup{\concat{ I \super 0}} ] ~ c'''16 [ a''8. _\markup{\concat{ II \super 0}} ] c''8. _\markup{\concat{ VI \super 10}} [ ais'16 _\markup{\concat{ VI \super 8}} ] ~ | ais'8 [ a'8 _\markup{\concat{ V \super 0}} ] ~ a'8 [ fis''8 _\markup{\concat{ III \super 0}} ] ~ fis''8 [ c'''8 _\markup{\concat{ I \super 0}} ] ~ c'''8 [ f'''8 _\markup{\concat{ II \super 8}} ] ~ | f'''8 [ d'8 _\markup{\concat{ VI \super 0}} ] a'4 _\markup{\concat{ V \super 0}} fis''4 _\markup{\concat{ III \super 0}} b'''4 _\markup{\concat{ I \super 11}} | ais'''8. _\markup{\concat{ I \super 10}} [ f'''16 _\markup{\concat{ II \super 8}} ] ~ f'''8 [ d'8 _\markup{\concat{ VI \super 0}} ] ~ d'16 [ a'8. _\markup{\concat{ V \super 0}} ] fis''8. _\markup{\concat{ III \super 0}} [ a'''16 _\markup{\concat{ I \super 9}} ] ~ | a'''8. [ f'''16 _\markup{\concat{ II \super 8}} ] ~ f'''16 [ d'8 _\markup{\concat{ VI \super 0}} a'16 _\markup{\concat{ V \super 0}} ] ~ a'8. [ fis''16 _\markup{\concat{ III \super 0}} ] ~ fis''16 [ gis'''8 _\markup{\concat{ I \super 8}} f'''16 _\markup{\concat{ II \super 8}} ] ~ | f'''16 [ d'8. _\markup{\concat{ VI \super 0}} ] ~ d'8 [ a'8 _\markup{\concat{ V \super 0}} ] ~ a'16 [ fis''8. _\markup{\concat{ III \super 0}} ] gis'''8. _\markup{\concat{ I \super 8}} [ f'''16 _\markup{\concat{ II \super 8}} ] ~ | f'''8 [ d'8 _\markup{\concat{ VI \super 0}} ] ~ d'16 [ a'8. _\markup{\concat{ V \super 0}} ] ~ a'16 [ fis''8. _\markup{\concat{ III \super 0}} ] ~ fis''16 [ c'''8. _\markup{\concat{ I \super 0}} ] ~ | c'''16 [ f'''8 _\markup{\concat{ II \super 8}} ais'16 _\markup{\concat{ VI \super 8}} ] ~ ais'8. [ a'16 _\markup{\concat{ V \super 0}} ] ~ a'8. [ fis''16 _\markup{\concat{ III \super 0}} ] ~ fis''8. [ c'''16 _\markup{\concat{ I \super 0}} ] ~ | c'''16 [ a''8. _\markup{\concat{ II \super 0}} ] ~ a''16 [ d'8. _\markup{\concat{ VI \super 0}} ] a'8. _\markup{\concat{ V \super 0}} [ d'''16 _\markup{\concat{ III \super 8}} ] ~ d'''8 [ c'''8 _\markup{\concat{ I \super 0}} ] ~ | c'''16 [ f'''8 _\markup{\concat{ II \super 8}} d'16 _\markup{\concat{ VI \super 0}} ] ~ d'16 [ a'8. _\markup{\concat{ V \super 0}} ] d'''8 _\markup{\concat{ III \super 8}} [ c'''8 _\markup{\concat{ I \super 0}} ] ~ c'''16 [ f'''8. _\markup{\concat{ II \super 8}} ] ~ | f'''16 [ d'8. _\markup{\concat{ VI \super 0}} ] ~ d'16 [ a'8. _\markup{\concat{ V \super 0}} ] ~ a'16 [ d'''8 _\markup{\concat{ III \super 8}} c'''16 _\markup{\concat{ I \super 0}} ] ~ c'''8 [ a''8 _\markup{\concat{ II \super 0}} ] ~ | a''16 [ d'8. _\markup{\concat{ VI \super 0}} ] gis''8. _\markup{\concat{ V \super 11}} [ fis''16 _\markup{\concat{ V \super 9}} ] ~ fis''16 [ d'''8 _\markup{\concat{ III \super 8}} cis'''16 _\markup{\concat{ III \super 7}} ] ~ cis'''8 [ c'''8 _\markup{\concat{ I \super 0}} ] ~ | c'''8 [ a''8 _\markup{\concat{ II \super 0}} ] ~ a''8 [ d'8 _\markup{\concat{ VI \super 0}} ] a'8 _\markup{\concat{ V \super 0}} [ cis'''8 _\markup{\concat{ III \super 7}} ] ~ cis'''8 [ e''8 _\markup{\concat{ V \super 7}} ] | a''8 _\markup{\concat{ II \super 0}} [ d''8 _\markup{\concat{ IV \super 0}} ] ~ d''8 [ fis''8 _\markup{\concat{ III \super 0}} ] ~ fis''8 [ e''8 _\markup{\concat{ V \super 7}} ] a''4 _\markup{\concat{ II \super 0}} | c'''4 _\markup{\concat{ IV \super 10}} ais''8 _\markup{\concat{ IV \super 8}} [ cis'''8 _\markup{\concat{ III \super 7}} ] c'''8. _\markup{\concat{ III \super 6}} [ d''16 _\markup{\concat{ V \super 5}} ] ~ d''8 [ a''8 _\markup{\concat{ II \super 0}} ] ~ | a''8 [ d''8 _\markup{\concat{ IV \super 0}} ] fis''8 _\markup{\concat{ III \super 0}} [ a'8 _\markup{\concat{ V \super 0}} ] f'''8 _\markup{\concat{ II \super 8}} [ dis'''8 _\markup{\concat{ II \super 6}} ] a''8 _\markup{\concat{ IV \super 7}} [ fis''8 _\markup{\concat{ III \super 0}} ] | a''4 _\markup{\concat{ IV \super 7}} d'''8 _\markup{\concat{ II \super 5}} [ fis'''8 _\markup{\concat{ I \super 6}} ] fis''8. _\markup{\concat{ III \super 0}} [ a''16 _\markup{\concat{ IV \super 7}} ] ~ a''8 [ g''8 _\markup{\concat{ IV \super 5}} ] ~ | g''16 [ a''8. _\markup{\concat{ II \super 0}} ] f'''8. _\markup{\concat{ I \super 5}} [ b''16 _\markup{\concat{ III \super 5}} ] ~ b''8 [ d''8 _\markup{\concat{ IV \super 0}} ] d'''4 _\markup{\concat{ II \super 5}} ~ | d'''8 [ c'''8 _\markup{\concat{ I \super 0}} ] fis''8. _\markup{\concat{ III \super 0}} [ d''16 _\markup{\concat{ IV \super 0}} ] ~ d''8 [ a''8 _\markup{\concat{ II \super 0}} ] ~ a''8 [ f'''8 _\markup{\concat{ I \super 5}} ] ~ | f'''8 [ b''8 _\markup{\concat{ III \super 5}} ] ~ b''16 [ d''8 _\markup{\concat{ IV \super 0}} a''16 _\markup{\concat{ II \super 0}} ] ~ a''16 [ f'''8 _\markup{\concat{ I \super 5}} b''16 _\markup{\concat{ III \super 5}} ] ~ b''8 [ g''8 _\markup{\concat{ IV \super 5}} ] ~ | g''8 [ a''8 _\markup{\concat{ II \super 0}} ] ~ a''8 [ f'''8 _\markup{\concat{ I \super 5}} ] g''8 _\markup{\concat{ IV \super 5}} [ fis''8 _\markup{\concat{ III \super 0}} ] f'''8 _\markup{\concat{ I \super 5}} [ g''8 _\markup{\concat{ IV \super 5}} ] | fis''8 _\markup{\concat{ III \super 0}} [ f'''8 _\markup{\concat{ I \super 5}} ] ~ f'''16 [ d''8. _\markup{\concat{ IV \super 0}} ] ~ d''16 [ b''8. _\markup{\concat{ III \super 5}} ] ~ b''8 [ c'''8 _\markup{\concat{ I \super 0}} ] ~ | c'''8 [ d''8 _\markup{\concat{ IV \super 0}} ] ~ d''8 [ fis''8 _\markup{\concat{ III \super 0}} ] ~ fis''8 [ c'''8 _\markup{\concat{ I \super 0}} ] ~ c'''8 [ ais'8 _\markup{\concat{ VI \super 8}} ] ~ | ais'8 [ f'''8 _\markup{\concat{ I \super 5}} ] ~ f'''16 [ g''8 _\markup{\concat{ IV \super 5}} a''16 _\markup{\concat{ II \super 0}} ] ~ a''8. [ fis''16 _\markup{\concat{ III \super 0}} ] ~ fis''8 [ a'8 _\markup{\concat{ VI \super 7}} ] ~ | a'16 [ c'''8. _\markup{\concat{ I \super 0}} ] g''8. _\markup{\concat{ IV \super 5}} [ fis''16 _\markup{\concat{ IV \super 4}} ] ~ fis''8 [ d'''8 _\markup{\concat{ II \super 5}} ] ~ d'''16 [ cis'''8. _\markup{\concat{ II \super 4}} ] | fis''8 _\markup{\concat{ III \super 0}} [ a'8 _\markup{\concat{ VI \super 7}} ] g'8 _\markup{\concat{ VI \super 5}} [ c'''8 _\markup{\concat{ I \super 0}} ] ~ c'''16 [ d''8. _\markup{\concat{ IV \super 0}} ] c'''8. _\markup{\concat{ II \super 3}} [ fis''16 _\markup{\concat{ III \super 0}} ] ~ | +\time 3/4 +fis''8. [ d'16 _\markup{\concat{ VI \super 0}} ] ~ d'8. [ e'''16 _\markup{\concat{ I \super 4}} ] ~ e'''16 [ e''8. _\markup{\concat{ IV \super 2}} ] | \bar "||" \mark \markup { \bold \box 2.2 } +\time 4/4 +c'''4 _\markup{\concat{ II \super 3}} fis''2 _\markup{\concat{ III \super 0}} ~ fis''16 [ e'''8. _\markup{\concat{ I \super 4}} ] ~ | e'''16 [ e''8. _\markup{\concat{ IV \super 2}} ] ~ e''4 c'''4 _\markup{\concat{ II \super 3}} ~ c'''16 [ fis''8. _\markup{\concat{ III \super 0}} ] ~ | fis''4 ~ fis''8 [ d'8 _\markup{\concat{ VI \super 0}} ] ~ d'8. [ e'''16 _\markup{\concat{ I \super 4}} ] ~ e'''4 | e''2 _\markup{\concat{ IV \super 2}} c'''4 _\markup{\concat{ II \super 3}} ~ c'''8. [ fis''16 _\markup{\concat{ III \super 0}} ] ~ | fis''2 ~ fis''16 [ e'''8. _\markup{\concat{ I \super 4}} ] ~ e'''16 [ e''8. _\markup{\concat{ IV \super 2}} ] ~ | e''2 c'''4 _\markup{\concat{ II \super 3}} ~ c'''16 [ fis''8. _\markup{\concat{ III \super 0}} ] ~ | fis''2 ~ fis''16 [ d'8. _\markup{\concat{ VI \super 0}} ] e''4 _\markup{\concat{ IV \super 2}} ~ | e''2. c'''4 _\markup{\concat{ II \super 3}} ~ | c'''16 [ fis''8. _\markup{\concat{ III \super 0}} ] ~ fis''2 ~ fis''16 [ d'8 _\markup{\concat{ VI \super 0}} e'''16 _\markup{\concat{ I \super 4}} ] ~ | e'''8. [ e''16 _\markup{\concat{ IV \super 2}} ] ~ e''2. ~ | e''4 c'''8. _\markup{\concat{ II \super 3}} [ fis''16 _\markup{\concat{ III \super 0}} ] ~ fis''2 ~ | fis''4 d'4 _\markup{\concat{ VI \super 0}} e''2 _\markup{\concat{ IV \super 2}} ~ | e''2. c'''4 _\markup{\concat{ II \super 3}} | fis''2. _\markup{\concat{ III \super 0}} ~ fis''8. [ d'16 _\markup{\concat{ VI \super 0}} ] ~ | d'8 [ e''8 _\markup{\concat{ IV \super 2}} ] ~ e''2. ~ | e''2 c'''8 _\markup{\concat{ II \super 3}} [ fis''8 _\markup{\concat{ III \super 0}} ] ~ fis''4 ~ | fis''4 ~ fis''8. [ d'16 _\markup{\concat{ VI \super 0}} ] ~ d'4 e'''4 _\markup{\concat{ I \super 4}} ~ | e'''8 [ e''8 _\markup{\concat{ IV \super 2}} ] ~ e''2. ~ | e''2. c'''8 _\markup{\concat{ II \super 3}} [ fis''8 _\markup{\concat{ III \super 0}} ] ~ | fis''2 ~ fis''8 [ d'8 _\markup{\concat{ VI \super 0}} ] ~ d'8. [ e'''16 _\markup{\concat{ I \super 4}} ] ~ | e'''8. [ e''16 _\markup{\concat{ IV \super 2}} ] ~ e''2. ~ | e''1 | \bar "||" \mark \markup { \bold \box 2.3 }c'''8. _\markup{\concat{ II \super 3}} [ b''16 _\markup{\concat{ II \super 2}} ] ~ b''16 [ fis''8. _\markup{\concat{ III \super 0}} ] e''4 _\markup{\concat{ IV \super 2}} a''8 _\markup{\concat{ II \super 0}} [ c'''8 _\markup{\concat{ I \super 0}} ] ~ | c'''8 [ a'8 _\markup{\concat{ V \super 0}} ] ~ a'16 [ d''8. _\markup{\concat{ IV \super 0}} ] b''4 _\markup{\concat{ II \super 2}} ~ b''8 [ e'''8 _\markup{\concat{ I \super 4}} ] ~ | e'''16 [ a'8 _\markup{\concat{ V \super 0}} e''16 _\markup{\concat{ IV \super 2}} ] ~ e''8. [ d'16 _\markup{\concat{ VI \super 0}} ] ~ d'8. [ fis''16 _\markup{\concat{ III \super 0}} ] ~ fis''16 [ e'''8. _\markup{\concat{ I \super 4}} ] | d'8 _\markup{\concat{ VI \super 0}} [ dis'''8 _\markup{\concat{ I \super 3}} ] d'4 _\markup{\concat{ VI \super 0}} c'''4 _\markup{\concat{ I \super 0}} fis'8 _\markup{\concat{ VI \super 4}} [ c'''8 _\markup{\concat{ I \super 0}} ] ~ | c'''8 [ d'8 _\markup{\concat{ VI \super 0}} ] ~ d'16 [ c''8. _\markup{\concat{ V \super 3}} ] e''4 _\markup{\concat{ IV \super 2}} fis''4 _\markup{\concat{ III \super 0}} | c'''4 _\markup{\concat{ I \super 0}} d'4 _\markup{\concat{ VI \super 0}} b'4 _\markup{\concat{ V \super 2}} d''4 _\markup{\concat{ IV \super 0}} ~ | d''8. [ ais''16 _\markup{\concat{ III \super 4}} ] ~ ais''8 [ c'''8 _\markup{\concat{ I \super 0}} ] ~ c'''16 [ d'8. _\markup{\concat{ VI \super 0}} ] a'8. _\markup{\concat{ V \super 0}} [ dis''16 _\markup{\concat{ IV \super 1}} ] ~ | dis''8 [ a''8 _\markup{\concat{ III \super 3}} ] ~ a''16 [ c'''8. _\markup{\concat{ I \super 0}} ] d'8. _\markup{\concat{ VI \super 0}} [ b''16 _\markup{\concat{ II \super 2}} ] ~ b''8 [ ais''8 _\markup{\concat{ II \super 1}} ] ~ | ais''16 [ d'8. _\markup{\concat{ VI \super 0}} ] dis''8. _\markup{\concat{ IV \super 1}} [ a''16 _\markup{\concat{ II \super 0}} ] ~ a''8. [ d'16 _\markup{\concat{ VI \super 0}} ] ~ d'16 [ d''8 _\markup{\concat{ IV \super 0}} ais''16 _\markup{\concat{ II \super 1}} ] ~ | ais''16 [ fis'8 _\markup{\concat{ VI \super 4}} e'16 _\markup{\concat{ VI \super 2}} ] ~ e'8. [ d''16 _\markup{\concat{ IV \super 0}} ] ~ d''8 [ a''8 _\markup{\concat{ II \super 0}} ] ~ a''16 [ e'8. _\markup{\concat{ VI \super 2}} ] | d''8 _\markup{\concat{ IV \super 0}} [ a''8 _\markup{\concat{ II \super 0}} ] ~ a''8 [ d'8 _\markup{\concat{ VI \super 0}} ] ~ d'16 [ d''8. _\markup{\concat{ IV \super 0}} ] dis'4 _\markup{\concat{ VI \super 1}} | a'4 _\markup{\concat{ V \super 0}} d''4 _\markup{\concat{ IV \super 0}} ~ d''8. [ a''16 _\markup{\concat{ II \super 0}} ] ~ a''16 [ d'8. _\markup{\concat{ VI \super 0}} ] ~ | d'16 [ a'8. _\markup{\concat{ V \super 0}} ] ~ a'16 [ d''8 _\markup{\concat{ IV \super 0}} a''16 _\markup{\concat{ II \super 0}} ] ~ a''8. [ d'16 _\markup{\concat{ VI \super 0}} ] ~ d'8. [ a'16 _\markup{\concat{ V \super 0}} ] ~ | a'16 [ d''8. _\markup{\concat{ IV \super 0}} ] ~ d''16 [ a''8. _\markup{\concat{ II \super 0}} ] ~ a''16 [ d'8. _\markup{\concat{ VI \super 0}} ] a'4 _\markup{\concat{ V \super 0}} ~ | a'8. [ d''16 _\markup{\concat{ IV \super 0}} ] ~ d''4 ~ d''8 [ a''8 _\markup{\concat{ II \super 0}} ] ~ a''8 [ d'8 _\markup{\concat{ VI \super 0}} ] ~ | d'16 [ ais'8. _\markup{\concat{ V \super 1}} ] d''4 _\markup{\concat{ IV \super 0}} ~ d''8 [ a''8 _\markup{\concat{ II \super 0}} ] ~ a''4 ~ | a''16 [ d'8 _\markup{\concat{ VI \super 0}} a'16 _\markup{\concat{ V \super 0}} ] ~ a'8 [ d''8 _\markup{\concat{ IV \super 0}} ] ~ d''16 [ a''8. _\markup{\concat{ II \super 0}} ] d'4 _\markup{\concat{ VI \super 0}} ~ | d'8. [ a'16 _\markup{\concat{ V \super 0}} ] ~ a'8. [ d''16 _\markup{\concat{ IV \super 0}} ] ~ d''8. [ a''16 _\markup{\concat{ II \super 0}} ] ~ a''8. [ d'16 _\markup{\concat{ VI \super 0}} ] ~ | d'8. [ a'16 _\markup{\concat{ V \super 0}} ] ~ a'8 [ d''8 _\markup{\concat{ IV \super 0}} ] ~ d''16 [ a''8. _\markup{\concat{ II \super 0}} ] ~ a''16 [ d'8 _\markup{\concat{ VI \super 0}} a'16 _\markup{\concat{ V \super 0}} ] ~ | a'16 [ d''8 _\markup{\concat{ IV \super 0}} a''16 _\markup{\concat{ II \super 0}} ] ~ a''8 [ d'8 _\markup{\concat{ VI \super 0}} ] a'8 _\markup{\concat{ V \super 0}} [ d''8 _\markup{\concat{ IV \super 0}} ] ~ d''8 [ a''8 _\markup{\concat{ II \super 0}} ] | d'8 _\markup{\concat{ VI \super 0}} [ d'''8 _\markup{\concat{ I \super 2}} ] d'8 _\markup{\concat{ VI \super 0}} [ c'''8 _\markup{\concat{ I \super 0}} ] d'8 _\markup{\concat{ VI \super 0}} [ c'''8 _\markup{\concat{ I \super 0}} ] ~ c'''16 [ d'8. _\markup{\concat{ VI \super 0}} ] | cis'''4 _\markup{\concat{ I \super 1}} fis''4 _\markup{\concat{ III \super 0}} c'''8 _\markup{\concat{ I \super 0}} [ a''8 _\markup{\concat{ II \super 0}} ] ~ a''8 [ fis''8 _\markup{\concat{ III \super 0}} ] | c'''8. _\markup{\concat{ I \super 0}} [ a''16 _\markup{\concat{ II \super 0}} ] ~ a''8. [ g''16 _\markup{\concat{ III \super 1}} ] ~ g''8. [ c'''16 _\markup{\concat{ I \super 0}} ] ~ c'''4 | \bar ".|" \mark \markup { \bold \box 2.4 }a''4 _\markup{\concat{ II \super \musicglyph "noteheads.s0harmonic"}} fis''4 _\markup{\concat{ III \super \musicglyph "noteheads.s0harmonic"}} ~ fis''16 [ c'''8. _\markup{\concat{ I \super \musicglyph "noteheads.s0harmonic"}} ] ~ c'''8 [ a''8 _\markup{\concat{ II \super \musicglyph "noteheads.s0harmonic"}} ] ~ | a''4 fis''4 _\markup{\concat{ III \super \musicglyph "noteheads.s0harmonic"}} ~ fis''8. [ c'''16 _\markup{\concat{ I \super \musicglyph "noteheads.s0harmonic"}} ] ~ c'''4 ~ | c'''8 [ a''8 _\markup{\concat{ II \super \musicglyph "noteheads.s0harmonic"}} ] ~ a''4 ~ a''8 [ c'''8 _\markup{\concat{ I \super \musicglyph "noteheads.s0harmonic"}} ] ~ c'''4 ~ | c'''8 [ fis''8 _\markup{\concat{ III \super \musicglyph "noteheads.s0harmonic"}} ] ~ fis''4 ~ fis''8. [ d''16 _\markup{\concat{ IV \super \musicglyph "noteheads.s0harmonic"}} ] ~ d''4 ~ | d''4 ~ d''16 [ d'8. _\markup{\concat{ VI \super \musicglyph "noteheads.s0harmonic"}} ] ~ d'2 | c'''2. _\markup{\concat{ I \super \musicglyph "noteheads.s0harmonic"}} fis''4 _\markup{\concat{ III \super \musicglyph "noteheads.s0harmonic"}} ~ | fis''2 d''2 _\markup{\concat{ IV \super \musicglyph "noteheads.s0harmonic"}} ~ | d''4 ~ d''16 [ d'8. _\markup{\concat{ VI \super \musicglyph "noteheads.s0harmonic"}} ] ~ d'2 ~ | d'4 a'2. _\markup{\concat{ V \super \musicglyph "noteheads.s0harmonic"}} ~ | a'4 a''2. _\markup{\concat{ II \super \musicglyph "noteheads.s0harmonic"}} ~ | a''4 ~ a''16 [ d''8. _\markup{\concat{ IV \super \musicglyph "noteheads.s0harmonic"}} ] ~ d''2 ~ | d''2 a'2 _\markup{\concat{ V \super \musicglyph "noteheads.s0harmonic"}} ~ | a'2. ~ a'8 [ a''8 _\markup{\concat{ II \super \musicglyph "noteheads.s0harmonic"}} ] ~ | a''1 ~ | a''4 ~ a''8. [ d''16 _\markup{\concat{ IV \super \musicglyph "noteheads.s0harmonic"}} ] ~ d''2 ~ | d''1 ~ | d''1 ~ | d''1 ] \bar "|." } diff --git a/lilypond/includes/cicc_high.ly b/lilypond/includes/cicc_high.ly new file mode 100644 index 0000000..3c94a5d --- /dev/null +++ b/lilypond/includes/cicc_high.ly @@ -0,0 +1,22 @@ + +{ +\set Score.markFormatter = #format-mark-box-numbers \tempo 8 = 90 + \numericTimeSignature \time 4/4 + \clef "treble^8" + \bar "||" \mark \markup { \bold \box 1.1 } +\time 4/4 +f''''1 ~ | f''''1 | R1 | r2. f''''4 ~ | f''''1 ~ | f''''1 ~ | f''''1 ~ | f''''2 ~ f''''8 [ r8 ] r4 | f''''1 ~ | f''''1 ~ | f''''8 [ r8 ] r2. | R1 | r4 r8 [ f''''8 ] ~ f''''2 ~ | f''''2. r4 | r8 [ f''''8 ] ~ f''''2. ~ | f''''1 ~ | f''''1 ~ | f''''1 | r4 r8 [ f''''8 ] ~ f''''2 ~ | f''''1 ~ | f''''4 ~ f''''8 [ r8 ] r2 | r2 r8 [ f''''8 ] ~ f''''4 ~ | f''''1 ~ | f''''2 ~ f''''8 [ r8 ] r4 | R1 | f''''1 ~ | f''''2. r4 | R1 | R1 | R1 | R1 | R1 | R1 | +\time 2/4 +r2 | \bar "||" \mark \markup { \bold \box 1.2 } +\time 4/4 +r8 [ d''''8 ] ~ d''''2. ~ | d''''2 r4 r8 [ d''''8 ] ~ | d''''1 ~ | d''''2 ~ d''''8 [ r8 ] r4 | d''''1 ~ | d''''1 ~ | d''''1 ~ | d''''2. ~ d''''8 [ r8 ] | R1 | r2 d''''2 ~ | d''''2. r4 | R1 | r4 r8 [ d''''8 ] ~ d''''2 ~ | d''''1 ~ | d''''4 ~ d''''8 [ r8 ] r4 d''''4 ~ | d''''1 ~ | d''''1 ~ | d''''1 ~ | d''''2 ~ d''''8 [ r8 ] r4 | R1 | r4 d''''2. ~ | d''''1 ~ | d''''8 [ r8 ] r2. | r2 d''''2 ~ | d''''1 ~ | d''''8 [ r8 ] r4 d''''2 ~ | d''''1 ~ | d''''1 ~ | d''''1 ~ | d''''1 ~ | d''''1 ~ | d''''2. r4 | R1 | r4 d''''2. ~ | d''''1 | r4 r8 [ d''''8 ] ~ d''''2 ~ | d''''2 ~ d''''8 [ r8 ] r4 | d''''1 ~ | d''''4 r2. | R1 | R1 | R1 | R1 | R1 | R1 | \bar "||" \mark \markup { \bold \box 1.3 }r1 | r2 r8 [ f''''8 ] ~ f''''4 ~ | f''''1 | r4 r8 [ f''''8 ] ~ f''''2 ~ | f''''1 ~ | f''''4 ~ f''''8 [ r8 ] r4 f''''4 ~ | f''''1 ~ | f''''1 | R1 | R1 | \bar ".|" \mark \markup { \bold \box 1.4 }r1 | r2 r8 [ f''''8 ] ~ f''''4 ~ | f''''1 ~ | f''''2 r2 | R1 | r8 [ f''''8 ] ~ f''''2. ~ | f''''1 ~ | f''''1 ~ | f''''1 ~ | f''''1 ~ | f''''1 ~ | f''''4 ~ f''''8 [ r8 ] r2 | R1 | f''''1 ~ | f''''2. ~ f''''8 [ r8 ] | R1 | R1 | R1 | R1 | R1 | R1 | +\time 3/4 +r2. | \bar "|.|" \mark \markup { \bold \box 2.1 } +\pageBreak + +\time 4/4 + R1 | r2 r8 [ f''''8 ] ~ f''''4 ~ | f''''1 ~ | f''''2 ~ f''''8 [ r8 ] r4 | f''''1 ~ | f''''1 ~ | f''''4 ~ f''''8 [ r8 ] r2 | R1 | r4 r8 [ f''''8 ] ~ f''''2 ~ | f''''2. ~ f''''8 [ r8 ] | R1 | r2 r8 [ f''''8 ] ~ f''''4 ~ | f''''1 ~ | f''''1 ~ | f''''2. r4 | R1 | f''''1 ~ | f''''4 ~ f''''8 [ r8 ] r4 f''''4 ~ | f''''1 ~ | f''''1 ~ | f''''1 ~ | f''''1 ~ | f''''2 r2 | R1 | r8 [ f''''8 ] ~ f''''2. ~ | f''''1 | R1 | R1 | R1 | R1 | R1 | +\time 3/4 +r2. | \bar "||" \mark \markup { \bold \box 2.2 } +\time 4/4 + R1 | r2 r8 [ d''''8 ] ~ d''''4 ~ | d''''1 ~ | d''''2 r2 | R1 | r2. d''''4 ~ | d''''1 ~ | d''''1 ~ | d''''1 ~ | d''''1 ~ | d''''1 ~ | d''''1 | r4 r8 [ d''''8 ] ~ d''''2 ~ | d''''1 ~ | d''''4 r4 r8 [ d''''8 ] ~ d''''4 ~ | d''''1 ~ | d''''4 r4 r8 [ d''''8 ] ~ d''''4 ~ | d''''1 | R1 | R1 | R1 | R1 | \bar "||" \mark \markup { \bold \box 2.3 }r2. f''''4 ~ | f''''1 ~ | f''''2. ~ f''''8 [ r8 ] | R1 | r2 r8 [ f''''8 ] ~ f''''4 ~ | f''''1 ~ | f''''1 ~ | f''''1 ~ | f''''1 ~ | f''''1 ~ | f''''2. ~ f''''8 [ r8 ] | r4 f''''2. ~ | f''''2 r4 r8 [ f''''8 ] ~ | f''''1 ~ | f''''4 r4 r8 [ f''''8 ] ~ f''''4 ~ | f''''1 ~ | f''''1 ~ | f''''1 ~ | f''''2 r2 | R1 | R1 | R1 | R1 | \bar ".|" \mark \markup { \bold \box 2.4 }r1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 ] \bar "|." } diff --git a/lilypond/includes/cicc_low.ly b/lilypond/includes/cicc_low.ly new file mode 100644 index 0000000..984d1e2 --- /dev/null +++ b/lilypond/includes/cicc_low.ly @@ -0,0 +1,22 @@ + +{ +\set Score.markFormatter = #format-mark-box-numbers \tempo 8 = 90 + \override Staff.TimeSignature #'stencil = ##f \numericTimeSignature \time 4/4 + \clef bass + \bar "||" \mark \markup { \bold \box 1.1 } +\time 4/4 + <<{ d,4 ^ \markup{ 0.0 } } \new Voice { \voiceTwo d,4 }>> \oneVoice r2. | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | +\time 2/4 +r2 | \bar "||" \mark \markup { \bold \box 1.2 } +\time 4/4 + <<{ a,,4 ^ \markup{ 5.0 } } \new Voice { \voiceTwo a,,4 }>> \oneVoice r2. | R1 | R1 | R1 | r2 <<{ a,,4 ^ \markup{ 4.4 } } \new Voice { \voiceTwo a,,4 }>> \oneVoice r4 | R1 | R1 | R1 | R1 | r2. <<{ a,,4 ^ \markup{ 3.9 } } \new Voice { \voiceTwo a,,4 }>> \oneVoice | R1 | R1 | R1 | R1 | R1 | r2 <<{ a,,4 ^ \markup{ 3.3 } } \new Voice { \voiceTwo a,,4 }>> \oneVoice r4 | R1 | R1 | R1 | R1 | R1 | <<{ a,,4 ^ \markup{ 2.8 } } \new Voice { \voiceTwo a,,4 }>> \oneVoice r2. | R1 | R1 | R1 | <<{ a,,4 ^ \markup{ 2.2 } } \new Voice { \voiceTwo a,,4 }>> \oneVoice r2. | R1 | R1 | R1 | <<{ a,,4 ^ \markup{ 1.7 } } \new Voice { \voiceTwo a,,4 }>> \oneVoice r2. | R1 | R1 | R1 | r4 <<{ a,,4 ^ \markup{ 1.1 } } \new Voice { \voiceTwo a,,4 }>> \oneVoice r2 | R1 | R1 | R1 | R1 | r2. <<{ a,,4 ^ \markup{ 0.6 } } \new Voice { \voiceTwo a,,4 }>> \oneVoice | R1 | R1 | R1 | R1 | R1 | R1 | \bar "||" \mark \markup { \bold \box 1.3 } <<{ d,4 ^ \markup{ 0.0 } } \new Voice { \voiceTwo d,4 }>> \oneVoice r2. | R1 | r2. <<{ f,,4 ^ \markup{ 0.0 } } \new Voice { \voiceTwo f,,4 }>> \oneVoice | R1 | R1 | R1 | <<{ e,,4 ^ \markup{ 0.0 } } \new Voice { \voiceTwo e,,4 }>> \oneVoice r2. | R1 | R1 | R1 | \bar ".|" \mark \markup { \bold \box 1.4 } <<{ d,4 ^ \markup{ -36.7 } } \new Voice { \voiceTwo d,4 }>> \oneVoice r2. | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | +\time 3/4 +r2. | \bar "|.|" \mark \markup { \bold \box 2.1 } +\pageBreak + +\time 4/4 + <<{ d,4 ^ \markup{ 0.0 } } \new Voice { \voiceTwo d,4 }>> \oneVoice r2. | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | +\time 3/4 +r2. | \bar "||" \mark \markup { \bold \box 2.2 } +\time 4/4 + <<{ a,,4 ^ \markup{ 5.0 } } \new Voice { \voiceTwo a,,4 }>> \oneVoice r2. | r2 <<{ a,,4 ^ \markup{ 4.4 } } \new Voice { \voiceTwo a,,4 }>> \oneVoice r4 | R1 | r2 <<{ a,,4 ^ \markup{ 3.9 } } \new Voice { \voiceTwo a,,4 }>> \oneVoice r4 | R1 | r2 <<{ a,,4 ^ \markup{ 3.3 } } \new Voice { \voiceTwo a,,4 }>> \oneVoice r4 | R1 | r2. <<{ a,,4 ^ \markup{ 2.8 } } \new Voice { \voiceTwo a,,4 }>> \oneVoice | R1 | R1 | r4 <<{ a,,4 ^ \markup{ 2.2 } } \new Voice { \voiceTwo a,,4 }>> \oneVoice r2 | R1 | r2. <<{ a,,4 ^ \markup{ 1.7 } } \new Voice { \voiceTwo a,,4 }>> \oneVoice | R1 | R1 | r2 <<{ a,,4 ^ \markup{ 1.1 } } \new Voice { \voiceTwo a,,4 }>> \oneVoice r4 | R1 | R1 | r2. <<{ a,,4 ^ \markup{ 0.6 } } \new Voice { \voiceTwo a,,4 }>> \oneVoice | R1 | R1 | R1 | \bar "||" \mark \markup { \bold \box 2.3 } <<{ d,4 ^ \markup{ 0.0 } } \new Voice { \voiceTwo d,4 }>> \oneVoice r2. | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | <<{ f,,4 ^ \markup{ 0.0 } } \new Voice { \voiceTwo f,,4 }>> \oneVoice r2. | R1 | R1 | r4 <<{ e,,4 ^ \markup{ 0.0 } } \new Voice { \voiceTwo e,,4 }>> \oneVoice r2 | R1 | R1 | R1 | R1 | \bar ".|" \mark \markup { \bold \box 2.4 } <<{ d,4 ^ \markup{ -36.7 } } \new Voice { \voiceTwo d,4 }>> \oneVoice r2. | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 ] \bar "|." } diff --git a/supercollider/cicc_gui.scd b/supercollider/cicc_gui.scd new file mode 100644 index 0000000..e8cb424 --- /dev/null +++ b/supercollider/cicc_gui.scd @@ -0,0 +1,152 @@ +( +//~~FUNCTION THAT GENERATES THE GUI +~generateGUI = { + var win, clockStringFunc, metronomeStringFunc, metronomeColorFunc, masterView, faderView, tabs; + var tabButtonReset, transportButton, mixerButton, startPos = 0; + var partAbbr = ["guitar", "accompHigh", "accomLow", "interlude"]; + var trackNames = ["guitar", "high", "low", "interlude"]; + var partVols, partMutes, partPans; + var masterMute, masterVol; + + partVols = [1, 1, 1, 1]; + partMutes = [1, 1, 1, 1]; + partPans = [0, 0, 0, 0]; + masterMute = 1; + masterVol = 1; + + clockStringFunc = { + arg div; + var min, sec; + sec = (div / 5).trunc; + min = (sec / 60).asInteger.asString; + if(min.size == 1, {min = "0" ++ min}, {}); + sec = (sec % 60).asInteger.asString; + if(sec.size == 1, {sec = "0" ++ sec}, {}); + min ++ ":" ++ sec + }; + // [-30, -105, -104].asAscii and [-30, -105, -113].asAscii are unicode inverse bullet and normal bullet, respectively + metronomeStringFunc = { arg div; case {div % 20 < 2} + {[-30, -105, -104].asAscii} {div % 4 < 2} {[-30, -105, -113].asAscii} {true} {" "} }; + metronomeColorFunc = { arg div; case {div % 20 < 2} {Color.red} {div % 4 < 2} {Color.blue} {true} {Color.black} }; + + ~appStatusFunc = Task({ + loop { + {~appStatus.string = ~appStatusString ++ "*"}.defer; + 0.5.wait; {~appStatus.string = ~appStatusString ++ "* *"}.defer; + 0.5.wait; {~appStatus.string = ~appStatusString ++ "* * *"}.defer; + 0.5.wait; {~appStatus.string = ~appStatusString ++ "* * * *"}.defer; + 0.5.wait; {~appStatus.string = ~appStatusString ++ "* * * * *"}.defer; + 0.5.wait; + } + }); + + win = Window("Counterfeiting in Colonial Connecticut", Rect(500, 500, 1100, 500), false).front; + masterView = { + var view, masterIndicators, master, generator, transport, ranSeed, startPosText, pauseButton, clock, metronome; + + OSCFunc({ arg msg, time; { + clock.string = clockStringFunc.value(msg[3]); + metronome.stringColor = metronomeColorFunc.value(msg[3]); + metronome.string = metronomeStringFunc.value(msg[3])}.defer; + },'/tr', s.addr); + + view = View(win); + generator = HLayout( + Button(view).states_([["generate"]]).action_({ + ~appStatusString = "generating data"; + ~appStatusFunc.start; + ~generateData.value(seed: ranSeed.string.asInteger); + }), + ranSeed = TextField(view).string_("20170121"), + Button(view).states_([["reset seed"]]).action_({ ranSeed.string = "20170121"}), + Button(view).states_([["random seed"]]).action_({ ranSeed.string = 50000000.rand.asString}), + [~appStatus = StaticText(view).string_("status: ready"), stretch: 1], + nil); + transport = HLayout( + Button(view).states_([["play", Color.black], ["stop", Color.black, Color.grey]]).action_( + /* + {| pState | + pauseButton.value = 0; + if(pState.value == 0, {~play.set(\playRate, 0, \startTrig, 0); + clock.string = clockStringFunc.value((startPos * ~totalDur * 5).asInteger)}, + {~play.set(\startPos, startPos, \playRate, 1, \startTrig, 1)})} + */ + {| pState | + pauseButton.value = 0; + if(pState.value == 0, {~patterns[0].stop; + clock.string = clockStringFunc.value((startPos * ~totalDur * 5).asInteger)}, + {~patterns[0].play})} + ), + pauseButton = Button(view).states_([["pause", Color.black], ["pause", Color.black, Color.grey]]).action_( + {| pState | + if(pState.value == 1, {~play.set(\playRate, 0)},{~play.set(\playRate, 1)})}), + StaticText(view).string_("start time"), + [Slider(view, Rect(0, 0, 30, 5)).action_( + {|pos| + var min, sec; + startPosText.string = clockStringFunc.value((pos.value * ~totalDur * 5).asInteger); + startPos = pos.value; + }), stretch: 1], + startPosText = StaticText(win).string_("00:00").font_(Font("Monaco", 15)), + nil); + view.layout_(HLayout( + [VLayout(generator, nil, + HLayout(clock = StaticText(win).string_("00:00").font_(Font("Monaco", 200)), + StaticText(win).string_("|").font_(Font("Monaco", 200)), + metronome = StaticText(win).string_([-30, -105, -104].asAscii).font_(Font("Monaco", 300)).stringColor_(Color.red)), + nil, transport + ), alignment: \top])) }; + faderView = { + var view, masterIndicators, trackIndicators, master, tracks; + view = View(win); + masterIndicators = {LevelIndicator()} ! 2; + trackIndicators = {LevelIndicator()} ! 4; + + OSCFunc.new({arg msg; { + {|i| masterIndicators[i].value = msg[3 + i].ampdb.linlin(-40, 0, 0, 1)} ! 2}.defer}, + '/masterLevels', s.addr); + OSCFunc.new({arg msg; { + {|i| trackIndicators[i].value = msg[3 + i].ampdb.linlin(-40, 0, 0, 1)} ! 4}.defer}, + '/trackLevels', s.addr); + + master = HLayout( + VLayout( + [HLayout( + Slider(view).value_(0.8).action_( + {|v| masterVol = v.value * 1.25; ~play.set(\masterVol, masterVol)}), + masterIndicators[0], + masterIndicators[1]), stretch: 2], + Button(view).states_([["mute", Color.black], ["mute", Color.black, Color.grey]]).action_( + {|v| masterMute = (1 - v.value).abs; ~play.set(\masterMute, masterMute)}), + StaticText(view).string_(" master ").align_(\center) + //StaticText(view).string_("("++groupNames[group]++")").align_(\center) + ), + nil); + + tracks = { |part| + HLayout( + VLayout( + HLayout( + Slider(view).value_(0.8).action_( + {|v| partVols[part] = v.value * 1.25; ~play.set(partAbbr[part] ++ "Vol", partVols[part])}), + trackIndicators[part]), + Button(view).states_([["mute", Color.black], ["mute", Color.black, Color.grey]]).action_( + {|v| partMutes[part] = (1 - v.value).abs; ~play.set(partAbbr[part] ++ "Mute", partMutes[part])}), + StaticText(view).string_("pan").align_(\center), + Knob(view).value_(0.5).action_( + {|v| partPans[part] = v.value * 2 - 1; ~play.set(partAbbr[part] ++ "Pan", partPans[part])}), + StaticText(view).string_(trackNames[part]).align_(\center) + ), + nil) + } ! 4; + view.layout_(HLayout(master, nil, *tracks))}; + tabButtonReset = {transportButton.value = 1; mixerButton.value = 1; }; + win.layout = VLayout( + HLayout( + transportButton = Button().states_([["transport", Color.white, Color.grey], ["transport", Color.black]]).action_( + {tabButtonReset.value; transportButton.value = 0; tabs.index = 0 }).value_(0), + mixerButton = Button().states_([["mixer", Color.white, Color.grey], ["mixer", Color.black]]).action_( + {tabButtonReset.value; mixerButton.value = 0; tabs.index = 1 }).value_(1)), + tabs = StackLayout(masterView.value, faderView.value)); +}; +) \ No newline at end of file diff --git a/supercollider/cicc_main.scd b/supercollider/cicc_main.scd new file mode 100644 index 0000000..2c00e0d --- /dev/null +++ b/supercollider/cicc_main.scd @@ -0,0 +1,52 @@ +( +// MAIN LAUNCH (loads necessary files and definitions) + +var appEnvironment, cond; + +s.boot; + +appEnvironment = Environment.make; +appEnvironment.push; + +// load +"cicc_musical_data_generator.scd".loadRelative; +"cicc_sonifier.scd".loadRelative; +"cicc_gui.scd".loadRelative; +"cicc_transcriber.scd".loadRelative; + +~allMusicData = ~genMusicData.value(); +//~player = EventPatternProxy.new; +~patterns = ~allMusicData[0]; +~scoreData = ~allMusicData[1]; +~sectionOffsets = ~allMusicData[2]; + +~play = Synth.new(\masterPlayerControl); + +~generateGUI.value; + + +//counterfeitTranscribe.value(~scoreData); + +// init +/* +~dir = thisProcess.nowExecutingPath.dirname; +~loadedTransform = nil; +~transform = [2, 1, 0, 1, 0, 0, 0]; +~tileMap = ~mapAll.value(6 /*max depth*/, ~transform); +~layoutState = 0; +~tempo = 120; +~dur = 0.125 * (120/~tempo); +~continuousPlay = false; + +// launch +~launchTileVisualizer.value; +~launchGui.value; +*/ + +//appEnvironment.pop; +) +~fader = Synth(\crossFade, [\sel, 0, \busA, ~busA.index, \busB, ~busB.index]); +~patterns[0].play +~transcribe.value(~scoreData) + +~patterns[0].stop \ No newline at end of file diff --git a/supercollider/cicc_musical_data_generator.scd b/supercollider/cicc_musical_data_generator.scd new file mode 100644 index 0000000..5d2ecd0 --- /dev/null +++ b/supercollider/cicc_musical_data_generator.scd @@ -0,0 +1,559 @@ +( +var genInitSeq, finalizeSeqs, finalizeAccompHigh, finalizeAccompLow; + +thisThread.randSeed = 1004; + +//~~~~init vars for initial sequence generation +genInitSeq = { + var setDur, strings, stringIndex, state, lastStrings, position, dur, openStringCount, landingCount, sectionCount, res; + + //~~~~helper dur function + setDur = {[0, 2, 3, 4, 5.rand + 3].wchoose([0, 5, 5, 5, 1].normalizeSum)}; + + strings = (0..5); + //stringIndex = 0; + state = 6.collect({[0, 1].wchoose([2, 1].normalizeSum)}); //fretted or not + lastStrings = [nil, nil]; + position = 6.collect({10 + 3.rand}); //which frets + dur = setDur.value; + openStringCount = 0; + landingCount = 0; //for extending section landing on open strings + sectionCount = 0; + + res = []; //notes before the more static repetitions are put in + + //~~~~run routine and create template sequence + ({sectionCount < 2}).while({ + var alterPattern; + + //alter string pattern or not + alterPattern = [true, false].wchoose([1, 2].normalizeSum); + if(alterPattern, { + strings = (0..5).scramble[..(4.rand + 1)]; + //rotate if a note gets repeated + if(lastStrings.last == strings.first, {strings = strings.rotate}); + //stringIndex = 0; + lastStrings = strings; + }); + + //iterate through the strings + strings.do({arg string, stringIndex; + var alterPos; + + //alter state or not favoring off if on (determines if string is open or fretted) + if(sectionCount.even, { + var isFretted, probs, alterState; + isFretted = (state[string] == 1); + probs = [if(isFretted, {2}, {1}), 1].normalizeSum; + alterState = [true, false].wchoose(probs); + if(alterState, {state[string] = (state[string] + 1) % 2}); + }); + + //alternate option + if(sectionCount.odd, { + var isFretted, alterable; + isFretted = (state[string] == 1); + alterable = isFretted || ((state[string] == 0) && (state.sum < 3)); + if(alterable, { + var probs, alterState; + probs = [if(isFretted, {1}, {2}), 1].normalizeSum; + alterState = [true, false].wchoose(probs); + if(alterState, {state[string] = (state[string] + 1) % 2}); + }); + }); + + //alter fret if fretted and keeping hand in similar position + alterPos = (position[string] * state[string]) > 0; + alterPos = alterPos && (state[string] == 1); //isFretted + alterPos = alterPos && (position[string] > (position.maxItem - 3)); + alterPos = [alterPos, false].wchoose([7, 1].normalizeSum); + if(alterPos, { + var walkDown, stepLimit; + //walk down or not + //BUG - GETTING REPEATED NOTES HERE!!!! + walkDown = [true, false].wchoose([1, 2].normalizeSum); + if(walkDown, { + res = res.add([string, state[string] * position[string], dur, position.deepCopy]); + }); + + //make sure a hand position is not too wide + stepLimit = (position.maxItem - (position[string] - 2)) != 4; + if(stepLimit.not, { + position[string] = (position[string] - 1).clip(0, 12); + }); + if(stepLimit, { + position[string] = (position[string] - [1, 2].choose).clip(0, 12); + }); + }); + + //alter duration or not + if([true, false].wchoose([3, 1].normalizeSum), {dur = setDur.value}); + + //add + res = res.add([string, state[string] * position[string], dur, position.deepCopy]); + + //reset if everything arrives at the bottom string + //perhaps erase the extranotes here! + if((position[string] * state[string]) == 0, {openStringCount = openStringCount + 1}, {openStringCount = 0}); + if(position == [0, 0, 0, 0, 0, 0], { + var hasLanded; + hasLanded = (openStringCount > 20) && (stringIndex == (strings.size - 1)); + if(hasLanded, { + position = 6.collect({10 + 3.rand}); + landingCount = 0; + sectionCount = sectionCount + 1; + (openStringCount - 1).do({arg index; + res[res.size - index - 1][3] = [0, 0, 0, 0, 0, 0]; + res[res.size - index - 1][2] = (dur * (1 + ((1 - (index / openStringCount).clip(0, 1).postln.pow(0.25)) * 10))).asInteger + }); + }); + if(hasLanded.not, {landingCount = landingCount + 1}) + }); + }) + }); + res +}; + + +//~~~~insert more static sections by repeating a figure +finalizeSeqs = {arg initSeq; + var extendToBeat, insertTS, + timeStampSection, timeStampTotal, timeStampSectionStart, lastDur, lastPos, + sectionSeq, timeSigInsSeq, sectionLen, sectionPosLimit, state, guitarSeq; + + extendToBeat = {arg seq; + var timeStampTotal, altEndDur; + // this makes sure it is some multiple of a beat + timeStampTotal = seq.slice(nil, 2).sum; + altEndDur = timeStampTotal.round(4) - timeStampTotal; + if(altEndDur < 0, {altEndDur = altEndDur + 4}); + seq.last[2] = seq.last[2] + altEndDur; + [seq, altEndDur]; + }; + + insertTS = {arg seq, timeStampSectionStart, type, accompSwitch; + var timeStampTotal, noMeasures; + timeStampTotal = seq.slice(nil, 2).sum; + sectionSeq = sectionSeq.add([timeStampTotal, type, accompSwitch]); + noMeasures = ((timeStampTotal - timeStampSectionStart) / 16); + if(noMeasures.frac > 0, { + timeSigInsSeq = timeSigInsSeq.add( + // make 5/4 instrad of 1/4 + if((noMeasures.frac / 0.25).asInteger != 1, { + [timeStampTotal - (4 * (noMeasures.frac / 0.25).asInteger),(noMeasures.frac / 0.25).asInteger] + }, { + [timeStampTotal - (4 * 5), 5] + }); + ); + timeSigInsSeq = timeSigInsSeq.add([timeStampTotal, 4]); + }); + }; + + timeStampSection = 0; //track time in each section + timeStampTotal = 0; //track overall time + timeStampSectionStart = 0; //track the time of the start of a section + lastDur = initSeq[0][2]; //helper for time signature data + lastPos = initSeq[0].last; //helper for keeping track of landing. + + guitarSeq = []; //this is the final sequence with repetitions inserted + sectionSeq = [[0, 0, true]]; //sequence of times for each section (used for double bars in score) + timeSigInsSeq = [[0, 4]]; //sequence for insertion of time signatures and double bars; + + //sectionLen = 128; + sectionPosLimit = 3 + 6.rand; + state = 0; + + initSeq.do({arg item, index, altEndDur; + var dur, pos; + dur = item[2]; + pos = item.last; + + if(state != 1, { + // basically this just copies the original template over + var landingBorder, sectionBorder; + landingBorder = (pos == [0, 0, 0, 0, 0, 0]) && (lastPos != [0, 0, 0, 0, 0, 0]); + sectionBorder = (pos != [0, 0, 0, 0, 0, 0]) && (lastPos == [0, 0, 0, 0, 0, 0]); + if(landingBorder || sectionBorder, { + var seqExtPair; + seqExtPair = extendToBeat.value(guitarSeq); + guitarSeq = seqExtPair[0]; + timeStampSection = timeStampSection + seqExtPair[1]; + insertTS.value(guitarSeq, timeStampSectionStart, if(pos == [0, 0, 0, 0, 0, 0], {1}, {-1}), false); + timeStampSectionStart = guitarSeq.slice(nil, 2).sum; + //if(((sectionLen - timeStampSection) < (16 * 8)) && (pos != [0, 0, 0, 0, 0, 0]), {sectionLen = sectionLen + (16 * 8)}); + }); + + if(sectionBorder, { + state = 0; + sectionPosLimit = 3 + 6.rand; + }); + + guitarSeq = guitarSeq.add(item.add(-1)); + timeStampSection = timeStampSection + dur; + + lastDur = dur; + lastPos = pos; + + if((state == 0) && (pos.minItem < sectionPosLimit), {state = 1}); + }); + + if(state == 1, { + // grabs a figure and repeats it altering it subtly + var rec, reps, noMeasures; + + // this makes sure it the length of the section + //timeStampTotal = guitarSeq.slice(nil, 2).sum; + //altEndDur = sectionLen - timeStampSection; + //guitarSeq.last[2] = guitarSeq.last[2] + altEndDur; + + guitarSeq = extendToBeat.value(guitarSeq)[0]; + timeStampTotal = guitarSeq.slice(nil, 2).sum; + insertTS.value(guitarSeq, timeStampSectionStart, 0, true); + timeStampSectionStart = timeStampTotal; + //sectionSeq = sectionSeq.add([timeStampTotal, 0, true]); + rec = guitarSeq[(guitarSeq.size - (10.rand + 5))..guitarSeq.size].deepCopy; + reps = 5.rand + 5; + reps.do({arg index; + rec.do({arg item, rIndex; + var add, dur; + add = if(index == 0, {3}, {0}); + dur = (item[2] + 2.rand2 + add); + if(dur < 2, {dur = [0, 2].wchoose([1, 4].normalizeSum)}); + rec[rIndex] = [item[0], item[1], dur]; + if([true, false].wchoose([5, 1].normalizeSum), { + guitarSeq = guitarSeq.add(rec[rIndex].add((1 / reps) * index)); + //timeStampTotal = timeStampTotal + dur; + }); + + // if chord randomly choose one of the notes + if(guitarSeq.last[2] == 0, { + arg toAdd = []; + //guitarSeq[(guitarSeq.size - 3)..].postln; + toAdd = toAdd.add(guitarSeq.pop); + toAdd = toAdd.add(guitarSeq.pop); + toAdd[0][2] = toAdd[1][2]; + toAdd[1][3] = toAdd[0][3]; + //toAdd.postln; + toAdd = toAdd.choose; + guitarSeq = guitarSeq.add(toAdd); + //guitarSeq[(guitarSeq.size - 2)..].postln + }); + }); + + guitarSeq = extendToBeat.value(guitarSeq)[0]; + + }); + + insertTS.value(guitarSeq, timeStampSectionStart, 0, true); + + timeStampSection = 0; + timeStampSectionStart = guitarSeq.slice(nil, 2).sum; + sectionLen = ((20 + 60.rand) / 0.08).asInteger.round(16); + lastDur = initSeq[index + 1][2]; + state = 2; + }); + }); + [guitarSeq, sectionSeq, timeSigInsSeq] +}; + +// add the high note part +finalizeAccompHigh = {arg sectionSeq; + var accompHighSeq, timeStamp, secType; + accompHighSeq = []; + timeStamp = 0; + secType = 0; + //sectionSeq.postln; + //(sectionSeq.select({arg item; item.last == true}).slice(nil, 0) * 0.08).do({arg secEnd, secIndex; + + sectionSeq.do({arg secData; + var secEnd, freq, noRestCount, shortCount; + secEnd = secData[0] * 0.08; + freq = if(secType == 0, {62.midicps * 8}, {62.midicps * 8 * 6/5}); + if(secData.last, {secType = ((secType + 1) % 2)}); + noRestCount = 0; + shortCount = 0; + while({timeStamp < secEnd}, { + var dur, sus, isShort, insertRest; + + isShort = case + {shortCount == 0} {true} + {shortCount < 3} {[true, false].wchoose([2, 1].normalizeSum)} + {true} {false}; + + insertRest = [true, noRestCount > 3].wchoose([1, 1].normalizeSum); + + if(isShort, { + sus = (1.5.rand + 1.5).round(0.16); + shortCount = shortCount + 1; + }, { + sus = (5.rand + 4).round(0.16); + shortCount = 0; + }); + + if(insertRest, { + dur = sus + (1.5.rand + 1.5).round(0.16); + noRestCount = 0; + }, { + dur = sus + 0.5.round(0.16); + noRestCount = noRestCount + 1; + }); + + if((timeStamp + dur) < secEnd, { + accompHighSeq = accompHighSeq.add([freq, dur, sus.clip(0, dur)]); + }, { + dur = ((secEnd - timeStamp) + 3.rand).clip(0.16, 1000).round(0.16); + accompHighSeq = accompHighSeq.add([freq, dur, 0]); + }); + timeStamp = timeStamp + dur; + }); + }); + accompHighSeq +}; + + +// add the low note part +finalizeAccompLow = {arg guitarSeq, sectionSeq; + var accompLowSeq, durAccum, lastTrigVal; + accompLowSeq = []; + durAccum = 0; + lastTrigVal = 0; + guitarSeq.do({arg item, i; + var dur, trig, freq1, freq2, finalDur; + dur = item[2]; + trig = item.last; + if(lastTrigVal != trig, { + freq1 = if(trig > -1, {62.midicps / 4 * 3/4}, {62.midicps / 4}); + freq2 = freq1 + if(trig > -1, {5 * (1-trig)}, {0}); + finalDur = durAccum; + accompLowSeq = accompLowSeq.add([freq1, freq2, finalDur]); + durAccum = 0; + }); + durAccum = durAccum + dur; + lastTrigVal = trig; + }); + + accompLowSeq = [accompLowSeq.slice(nil, 0), accompLowSeq.slice(nil, 1), accompLowSeq.slice(nil, 2).integrate].flop; + sectionSeq.collect({arg section; + if(section[1] == 1, { + var curTime = section[0]; + accompLowSeq = accompLowSeq.add([62.midicps / 4, 62.midicps / 8, curTime]); + curTime = curTime - ((4.rand + 4) / 0.08).round(4).asInteger; + accompLowSeq = accompLowSeq.add([64.midicps / 8, 64.midicps / 8, curTime]); + curTime = curTime - ((4.rand + 4) / 0.08).round(4).asInteger; + accompLowSeq = accompLowSeq.add([65.midicps / 8, 65.midicps / 8, curTime]); + }); + if(section[1] == -1, { + var curTime = section[0]; + accompLowSeq = accompLowSeq.add([62.midicps / 4, 62.midicps / 4, curTime]); + //curTime = curTime - ((4.rand + 4) / 0.08).round(4).asInteger; + //accompLowSeq = accompLowSeq.add([69.midicps / 8, 69.midicps / 8, curTime]); + }); + }); + + accompLowSeq = accompLowSeq.sort({ arg a, b; a[2] < b[2] }); + accompLowSeq = [accompLowSeq.slice(nil, 0), accompLowSeq.slice(nil, 1), + accompLowSeq.slice(nil, 2).differentiate.drop(1).add(1)].flop; + + //accompLowSeq = [accompLowSeq.slice(nil, 0), accompLowSeq.slice(nil, 1),accompLowSeq.slice(nil, 2).drop(1).add(1)].flop; + + accompLowSeq +}; + +~genMusicData = { + var initSeq, finalSeqs, guitarSeq, accompHighSeq, accompLowSeq, sectionSeq, timeSigSeq, + patterns, scoreData, sectionOffsets; + + initSeq = genInitSeq.value; + finalSeqs = finalizeSeqs.value(initSeq); + guitarSeq = finalSeqs[0]; + accompHighSeq = finalizeAccompHigh.value(finalSeqs[1]); + accompLowSeq = finalizeAccompLow.value(finalSeqs[0], finalSeqs[1]); + sectionSeq = finalSeqs[1]; + timeSigSeq = finalSeqs[2]; + + patterns = ~genPatterns.value(guitarSeq, accompLowSeq, accompHighSeq, sectionSeq); + scoreData = ~genScoreData.value(guitarSeq, accompLowSeq, accompHighSeq, timeSigSeq, sectionSeq); + sectionOffsets = sectionSeq.slice(nil, 0); + + [patterns, scoreData, sectionOffsets] +}; +) + + +/* +~player[0].play; + +( +~player = EventPatternProxy.new; +~faderPattern = Pmono( + \crossFade, + \sel, Pseq([0, 1], ~sectionOffsets / 2), + \dur, Pseq(~sectionOffsets.differentiate.drop(1) * 0.08), + \busA, ~busA.index, + \busB, ~busB.index + ); +~fader = Synth(\crossFade, [\sel, 0, \busA, ~busA.index, \busB, ~busB.index]); +~player.source = Ptpar( + ([~sectionOffsets.postln * 0.08, ~patterns].flop.flat ++ [0, ~faderPattern]).postln +); +) +~fader.play +~player.play +( +~fader.set(\sel, 1); +~patterns[3].play +) + +~fader = Synth(\crossFade, [\sel, 1, \busA, ~busA.index, \busB, ~busB.index]); +( +~patterns[3].play; +~testDrone = Synth.new(\droneOut, [\gate, 1, \bus, ~droneBus.index]); +//~testDrone.set(\gate, 0); +~dronePattern.play +) + + +( +~player.source = Ptpar([~sectionOffsets.postln * 0.08, + ~patterns.collect({arg pt, i; + if(i < (~patterns.size - 1), { + PfadeOut(pt, 0.1, (~sectionOffsets.differentiate.drop(1)[i] * 0.08) - 0.1) + }, { + pt + }) +})].flop.flat.postln); +) +~sectionOffsets.differentiate.postln; +~player.play +PfadeOut(~patterns[2], 0.1, (~sectionOffsets.differentiate.drop(1)[2] * 0.08) - 0.1).play +PfadeOut(~player[0]).play; +Pdef(\play, ~player[0]).play; +Pdef(\play, ~player[1]) +~player[2].play; +~player.pause; + + +( +var durUnit = 0.15; + +SynthDef(\machine, {arg freq, gate = 1, sustain, amp; + var sound; + sound = TWChoose.ar(Impulse.kr(0), [ + PinkNoise.ar(EnvGen.kr(Env.perc(0.01, sustain, amp * 10), gate, doneAction: 2)), + BrownNoise.ar(EnvGen.kr(Env.perc(0.01, sustain, amp * 2), gate, doneAction: 2)) + ], [0, 20], 1); + Out.ar([0, 1], sound) +}).add; + +~machine1 = Pbind( + \instrument, \machine, + \amp, Pseq(300.collect({var rand = [0.03, 0].choose; (20.rand + 10).rand.collect({rand})}).flat), + \dur, Pseq(1000.collect({[durUnit, durUnit + (durUnit / 100).rand2].wchoose([10, 1].normalizeSum)}).flat), + \sustain, Pseq(1000.collect({durUnit * (1.75 + 0.5.rand)})),//2.25].wchoose([1, 20].normalizeSum)})), + \freq, Pseq(1000.collect({[[300, 250], [300, 250].choose].wchoose([10, 1].normalizeSum)}).flat / 2) +).play; +) + +~machine1.play; +~machine1.stop; + + +( +var durUnit = 0.02; +b = Bus.audio(s, 1); + +SynthDef(\test, { arg out=0, freq=440, amp=0.1, pan=0, gate=1; + var z; + z = LPF.ar( + Mix.new(VarSaw.ar(freq + [0, Rand(-0.4,0.0), Rand(0.0,0.4)], 0, 0.3, 0.3)), + XLine.kr(Rand(4000,5000), Rand(2500,3200), 1) + ) * Linen.kr(gate, 0.01, 0.7, 0.3, 2); + Out.ar(b, Pan2.ar(z, pan, amp)); +}, [\ir]).add; + +SynthDef(\defaultBus, {arg gate; + Out.ar([0, 1], Clip.ar(In.ar(b, 1), -1, 1) * 0.25 * EnvGen.ar(Env.asr(20, 1, 20), gate)) +} +).add; + +Pbind( + \instrument, \test, + \amp, 0.5, + \dur, durUnit, + \sustain, 0.05, + \freq, Pseq(3000.collect({[[62.midicps, 250], [62.midicps, 250].choose].wchoose([10, 1].normalizeSum)}).flat / 2) +).play; + +~testDrone = Synth.new(\defaultBus, [\gate, 1]); +) + +~testDrone.set(\gate, 0); + + +( +var durUnit = 0.02; +b = Bus.audio(s, 1); + +SynthDef(\test, { arg out=0, freq=440, amp=0.1, pan=0, gate=1; + var z; + z = LPF.ar( + Mix.new(VarSaw.ar(freq + [0, Rand(-0.4,0.0), Rand(0.0,0.4)], 0, 0.3, 0.3)), + XLine.kr(Rand(4000,5000), Rand(2500,3200), 1) + ) * Linen.kr(gate, 0.01, 0.7, 0.3, 2); + Out.ar(b, Pan2.ar(z, pan, amp)); +}, [\ir]).add; + +SynthDef(\defaultBus, { + Out.ar([0, 1], Clip.ar(In.ar(b, 1), -1, 1) * 0.25) +} +).add; + +Pbind( + \instrument, \test, + \amp, Pseq(3000.collect({arg i; (i / 3000).clip(0, 1) * 0.5})), + \dur, durUnit, + \sustain, 0.05, + \freq, Pseq(3000.collect({[[62.midicps, 250], [62.midicps, 250].choose].wchoose([10, 1].normalizeSum)}).flat / 2) +).play; + +Synth.new(\defaultBus) +) + + +( +var durUnit = 0.15; + +SynthDef(\machine, {arg freq, gate = 1, sustain, amp; + var sound; + sound = TWChoose.ar(Impulse.kr(0), [ + PinkNoise.ar(EnvGen.kr(Env.perc(0.01, sustain, amp * 10), gate, doneAction: 2)), + BrownNoise.ar(EnvGen.kr(Env.perc(0.01, sustain, amp * 2), gate, doneAction: 2)) + ], [0, 20], 1); + Out.ar([0, 1], sound) +}).add; + +~machine1 = Pseq( + 10.collect({ + var randL, randLArray, amp, durUnitSMult, durUnitSMultLimit, hitsToClip; + randL = 30.rand + 30; + randLArray = (0..randL) ++ (0..(randL-1)).reverse; + amp = [0.1, 0].wchoose([2, 1].normalizeSum); + durUnitSMult = 2 + 1.0.rand; + durUnitSMultLimit = (durUnitSMult - 1) + 0.5.rand; + hitsToClip = 3 + 3.rand; + + Pseq([Pbind( + \instrument, \machine, + \amp, 0.1, + \dur, Pseq(randLArray.collect({arg i; durUnit * (durUnitSMult - ((i / hitsToClip).clip(0, durUnitSMultLimit)))})), + \sustain, Pseq(randLArray.size.collect({durUnit * (1.75 + 0.5.rand)})),//2.25].wchoose([1, 20].normalizeSum)})), + \freq, Pseq(randLArray.size.collect({[[300, 250], [300, 250].choose].wchoose([10, 1].normalizeSum)}).flat / 2) + ),Rest(3.rand + 5) + ]) + }), inf +).play; +) + +62.midicps + +*/ \ No newline at end of file diff --git a/supercollider/cicc_sonifier.scd b/supercollider/cicc_sonifier.scd new file mode 100644 index 0000000..cdebd44 --- /dev/null +++ b/supercollider/cicc_sonifier.scd @@ -0,0 +1,213 @@ +( +//busses +~masterBus = Bus.audio(s, 1); +~guitarBusA = Bus.audio(s, 1); +~guitarBusB = Bus.audio(s, 1); +~accompHighBusA = Bus.audio(s, 1); +~accompHighBusB = Bus.audio(s, 1); +~accompLowBusA = Bus.audio(s, 1); +~accompLowBusB = Bus.audio(s, 1); + + +SynthDef(\masterPlayerControl, { + arg sel = 0, + masterVol = 1, masterMute = 1, + guitarVol = 1, guitarPan = 0, guitarMute = 1, + accompHighVol = 1, accompHighPan = 0, accompHighMute = 1, + accompLowVol = 1, accompLowPan = 0, accompLowMute = 1; + var guitarSig, accompHighSig, accompLowSig, + guitarSigPanned, accompHighSigPanned, accompLowSigPanned, + masterSig, imp; + + guitarSig = SelectX.ar(sel, [In.ar(~guitarBusA), In.ar(~guitarBusB)]) * guitarVol; + accompHighSig = SelectX.ar(sel, [In.ar(~accompHighBusA), In.ar(~accompHighBusB)]) * accompHighVol; + accompLowSig = SelectX.ar(sel, [In.ar(~accompLowBusA), In.ar(~accompLowBusB)]) * accompLowVol; + + guitarSigPanned = Pan2.ar(guitarSig * guitarMute, guitarPan); + accompHighSigPanned = Pan2.ar(accompHighSig * accompHighMute, accompHighPan); + accompLowSigPanned = Pan2.ar(accompLowSig * accompLowMute, accompLowPan); + masterSig = Mix.ar([guitarSigPanned, accompHighSigPanned, accompLowSigPanned]) * masterVol * masterMute; + + Out.ar(0, masterSig); + + imp = Impulse.kr(10); + SendReply.kr(imp, + '/masterLevels', + values: [Amplitude.kr(masterSig)]); + SendReply.kr(imp, + '/trackLevels', + values: [Amplitude.kr(guitarSig), Amplitude.kr(accompHighSig), Amplitude.kr(accompLowSig), DC.ar(0)]); +}).add; + + +//~~~~karplus +SynthDef(\karplus, {arg freq, gate = 1, amp = 0.5, bus; + Out.ar(bus, + Pluck.ar(WhiteNoise.ar(0.1), Impulse.kr(0), 220.reciprocal, freq.reciprocal, 10, coef:0) * + Linen.kr(gate, doneAction: Done.freeSelf) * amp + ) +}).add; + + +//~~~~accompaniment +SynthDef(\accompBass, {arg freq1 = 100, freq2 = 100, gate = 1, amp = 0.5, bus; + var bassDrop; + bassDrop = Mix.ar([SinOsc.ar(freq1, 0, 0.5), SinOsc.ar(freq2, 0, 0.5)]) * + EnvGen.kr(Env.perc(0.1, 10, level: amp), Impulse.kr(0) + Changed.kr(freq2)); + Out.ar(bus, bassDrop) +}).add; + + +SynthDef(\accompTreble, {arg freq, gate = 1, sustain, amp, bus; + var treble; + treble = SinOsc.ar( + freq, 0, + EnvGen.kr(Env.sine(sustain, amp * 0.1), gate)); + Out.ar(bus, treble) +}).add; + + +~droneBus = Bus.audio(s, 1); +SynthDef(\drone, { arg out=0, freq=440, amp=0.1, pan=0, gate=1, bus; + var z; + z = LPF.ar( + Mix.new(VarSaw.ar(freq + [0, Rand(-0.4,0.0), Rand(0.0,0.4)], 0, 0.3, 0.3)), + XLine.kr(Rand(4000,5000), Rand(2500,3200), 1) + ) * Linen.kr(gate, 0.01, 0.7, 0.3, 2); + Out.ar(bus, Pan2.ar(z, pan, amp)); +}, [\ir]).add; + + +SynthDef(\droneOut, {arg gate, bus; + Out.ar([0, 1], Clip.ar(In.ar(bus, 1), -1, 1) * 0.1 * EnvGen.ar(Env.asr(20, 1, 20), gate)) +} +).add; + + +~dronePattern = Pbind( + \instrument, \drone, + \amp, 0.5, + \dur, 0.02, + \sustain, 0.05, + \freq, Pseq(3000.collect({[[62.midicps, 250], [62.midicps, 250].choose].wchoose([10, 1].normalizeSum)}).flat / 2), + \bus, ~droneBus.index +); + +//~~~~gen music +~genPatterns = {arg guitarSeqIn, accompLowSeqIn, accompHighSeqIn, sectionSeqIn; + var calcSustains, genSectionSec, sectionLimits; + + //~~~~helper sus function + calcSustains = {arg stringSeq, durSeq; + var res = []; + stringSeq.size.do({arg index; + var curString, dur, count; + if(stringSeq[index].isRest.not, { + curString = stringSeq[index]; + dur = durSeq[index]; + count = 1; + while({(stringSeq[(index + count).clip(0, stringSeq.size - 1)] != curString) && + (dur < 16) && (count < 100)}, { + dur = dur + durSeq[(index + count).clip(0, durSeq.size - 1)]; + count = count + 1; + }); + res = res.add(dur.clip(0, 16)); + }, { + res.add(Rest()); + }); + }); + res + }; + + genSectionSec = {arg seq, startTime, endTime, type; + var durSum, resSeqs, inSecs, mult; + //sectionSeq.postln; + durSum = 0; + resSeqs = []; + inSecs = switch(type, 0, {false}, 1, {false}, 2, {true}); + mult = if(inSecs, {1}, {0.08}); + seq.do({arg item; + if(((durSum * mult) >= (startTime * 0.08)) && ((durSum * mult) < (endTime * 0.08)), { + var dur = (durSum * mult) - (startTime * 0.08); + if((resSeqs.size == 0) && (dur > 0), { + switch(type, + 0, {resSeqs = resSeqs.add([Rest(-1), Rest(-1), dur])}, + 1, {resSeqs = resSeqs.add([Rest(-1), Rest(-1), dur])}, + 2, {resSeqs = resSeqs.add([Rest(-1), dur.round(0.08), dur.round(0.08)])}) + }); + resSeqs = resSeqs.add(item); + }); + durSum = durSum + if(type == 2, {item[1]}, {item[2]}); + }); + //if(type == 1, {resSeqs = resSeqs.add([0, 0, 16])}); + resSeqs + }; + + sectionLimits = []; + sectionSeqIn.slice(nil, 0).add(100000).doAdjacentPairs({arg a, b; sectionLimits = sectionLimits.add([a, b])}); + sectionLimits.collect({arg timePair, secIndex; + var startTime, endTime, + guitarSecSeq, accompLowSecSeq, accompHighSecSeq, + stringSeq, fretSeq, durSeq, susSeq, trigSeq, openStrings, pattern; + + startTime = timePair.postln[0]; + endTime = timePair[1]; + + guitarSecSeq = genSectionSec.value(guitarSeqIn, startTime, endTime, 0); + accompLowSecSeq = genSectionSec.value(accompLowSeqIn, startTime, endTime, 1); + accompHighSecSeq = genSectionSec.value(accompHighSeqIn, startTime, endTime, 2); + + if(accompHighSecSeq == [], {accompHighSecSeq = [[Rest(-1), 1, 0], [Rest(-1), 1, 0]]}); + + guitarSecSeq.postln; + accompLowSecSeq.postln; + accompHighSecSeq.postln; + + openStrings = [1/1, 3/2, 2/1, 5/2, 35/12, 7/2]; + stringSeq = guitarSecSeq.slice(nil, 0); + fretSeq = guitarSecSeq.slice(nil, 1); + durSeq = guitarSecSeq.slice(nil, 2); + susSeq = calcSustains.value(stringSeq, durSeq); + //trigSeq = guitarSeq.slice(nil, 3); + //~player = EventPatternProxy.new; + pattern = EventPatternProxy.new; + pattern.source = Ppar([ + Pbind( + \instrument, \karplus, + \amp, 0.3, + \dur, Pseq(durSeq * 0.08), + \sustain, Pseq(susSeq * 0.08), + \freq, Pseq(stringSeq.collect({arg string, index; + if(string.isRest, {Rest()}, { + ((62.midicps * openStrings[string]).cpsmidi + fretSeq[index]).midicps})})), + \bus, if(secIndex % 2 == 0, {~guitarBusA.index}, {~guitarBusB.index})), + if(accompLowSecSeq.size > 1, { + Pmono( + \accompBass, + \amp, 0.5, + \freq1, Pseq(accompLowSecSeq.slice(nil, 0)), + \freq2, Pseq(accompLowSecSeq.slice(nil, 1)), + \dur, Pseq(accompLowSecSeq.slice(nil, 2)) * 0.08, + \bus, if(secIndex % 2 == 0, {~accompLowBusA.index}, {~accompLowBusB.index})) + }, { + Pmono( + \accompBass, + \amp, 0.5, + \freq1, Pseq([accompLowSecSeq[0][0]]), + \freq2, Pseq([accompLowSecSeq[0][1]]), + \dur, Pseq([accompLowSecSeq[0][2]]) * 0.08, + \bus, if(secIndex % 2 == 0, {~accompLowBusA.index}, {~accompLowBusB.index})) + }), + Pbind( + \instrument, \accompTreble, + \freq, Pseq(accompHighSecSeq.slice(nil, 0)), + \dur, Pseq(accompHighSecSeq.slice(nil, 1)), + \sustain, Pseq(accompHighSecSeq.slice(nil, 2)), + \amp, 0.5, + \bus, if(secIndex % 2 == 0, {~accompHighBusA.index}, {~accompHighBusB.index})) + ]); + pattern + }).postln; +}; + +) \ No newline at end of file diff --git a/supercollider/cicc_transcriber.scd b/supercollider/cicc_transcriber.scd new file mode 100644 index 0000000..6c39822 --- /dev/null +++ b/supercollider/cicc_transcriber.scd @@ -0,0 +1,283 @@ +( +~transcribe = {arg scoreData; + var rawMusicData, timeSigData, sectionData, dir, basePath, maxSize, openStrings, musicData; + + rawMusicData = scoreData[0]; + timeSigData = scoreData[1]; + sectionData = scoreData[2]; + + dir = thisProcess.nowExecutingPath.dirname; + basePath = dir +/+ ".." +/+ "lilypond"; + + openStrings = [1/1, 3/2, 2/1, 5/2, 35/12, 7/2]; + + maxSize = 0; + musicData = rawMusicData.collect({arg partData, p; + var res; + res = partData.collect({arg item, i; + var note, rest; + switch(p, + 0, { + var string, fret, dur, sus; + string = item[0]; + fret = item[1]; + dur = item[2]; + sus = item[3]; + + note = sus.collect({[string, fret, i]}); + //rest = (dur - sus).collect({[-1, -1]}); + }, + 1, { + var freq, dur, sus; + freq = item[0]; + dur = item[1]; + sus = item[2]; + + note = sus.collect({[freq, i]}); + if(p < rawMusicData.size, {rest = (dur - sus).collect({[-1, i]})}, {[]}); + }, + 2, { + var freq1, freq2, dur, sus; + freq1 = item[0]; + freq2 = item[1]; + dur = item[2]; + sus = 4; + + note = sus.collect({[[freq1, freq2 - freq1], i]}); + if(p < rawMusicData.size, {rest = (dur - sus).collect({[-1, i]})}, {[]}); + } + ); + + note ++ rest + }).flatten; + if(res.size > maxSize, {maxSize = res.size}); + //res = res.extend(res.size.trunc(16) + 16, res.last) + res + }); + + + musicData = musicData.collect({arg partData, p; + var lastSectionSize, lastSectionSizeTrunc, finalSectionSize, ext; + partData[(partData.size - 10)..]; + lastSectionSize = (maxSize - sectionData.last[0]); + lastSectionSizeTrunc = lastSectionSize.trunc(16); + finalSectionSize = if(lastSectionSize != lastSectionSizeTrunc, {lastSectionSizeTrunc + 16}, {lastSectionSize}); + ext = finalSectionSize - lastSectionSize; + partData.extend((maxSize + ext), if(p == 0, {partData.last}, {[-1, partData.last[1]]})) + }); + + musicData.do({arg part, p; + var amps, harm, modi, timeSigIndex, sectionCount, sectionIndex, subSectionIndex, curTimeSig, + lilyFile, lilyString, voices, lastVal, lilyNotes, lilyOcts, lilyGString, isHarmonic, measureCount, + lilyNote, lilyDur, lilyRest, lilyBeatingMark, curTime = 0, noteTuples, markupSuffixes; + + //create file + lilyFile = switch(p, + 0, {File(basePath +/+ "includes" +/+ "cicc_guitar.ly".standardizePath,"w")}, + 1, {File(basePath +/+ "includes" +/+ "cicc_high.ly".standardizePath,"w")}, + 2, {File(basePath +/+ "includes" +/+ "cicc_low.ly".standardizePath,"w")} + ); + + //start lilypond directives + lilyString = ""; + + lastVal = nil; + + //start voice + lilyString = lilyString ++ "\n{ "; + lilyString = lilyString ++ "\n\\set Score.markFormatter = #format-mark-box-numbers "; + + lilyString = lilyString + "\\tempo 8 = 90\n"; + if(p != 1, {lilyString = lilyString + "\\override Staff.TimeSignature #'stencil = ##f"}); + //lilyString = lilyString + "\\numericTimeSignature \\time 4/4\n \\mark \\default \n"; + lilyString = lilyString + "\\numericTimeSignature \\time 4/4\n"; + + lilyString = switch(p, + 0, {lilyString + "\\clef treble\n"}, + 1, {lilyString + "\\clef \"treble^8\"\n"}, + 2, {lilyString + "\\clef bass\n"} + ); + + lilyNotes = ["c", "cis", "d", "dis","e", "f", "fis", "g", "gis", "a", "ais", "b"]; + lilyOcts = [",,", ",", "", "'", "''", "'''", "''''"]; + + timeSigIndex = 0; + sectionCount = 0; + sectionIndex = 1; + subSectionIndex = 1; + curTimeSig = 4; + measureCount = 0; + part.clump(4).do({arg beat, i; + var gSum = 0; + + //beat.postln; + beat.separate({arg a, b; ((a[0] != -1) || (b[0] != -1)) && (a != b)}).do({arg group, g; var noteLength, target = 0; + noteLength = group.size; + gSum = gSum + noteLength; + + //add ties + lilyString = lilyString ++ if((group[0] == lastVal) && (group[0][0] != -1), {"~ "}, {""}); + //add barcheck count + lilyString = lilyString ++ if((curTime % curTimeSig == 0) && (i != 0), {measureCount = measureCount + 1; "| "}, {""}); + //lilyString = lilyString ++ if((curTime % curTimeSig == 0) && ((measureCount % 4) == 0) && (i != 0), {"\n\\break \n"}, {""}); + + if((i == (sectionData[sectionCount][0] / 4)) && (g == 0),{ + var barType, pageBreak; + barType = switch(sectionData[sectionCount][1], 0, {"\"||\""}, 1, {"\".|\""}, -1, {"\"|.|\""}); + pageBreak = switch(sectionData[sectionCount][1], 0, {""}, 1, {""}, -1, {measureCount = 0; "\n\\pageBreak \n"}); + isHarmonic = switch(sectionData[sectionCount][1], 0, {false}, 1, {true}, -1, {false}); + lilyString = lilyString + " \\bar " ++ barType ++ " \\mark \\markup { \\bold \\box " ++ sectionIndex ++ "." ++ subSectionIndex ++ " }" ++ pageBreak; + if(sectionCount < (sectionData.size - 1), {sectionCount = sectionCount + 1}); + switch(sectionData[sectionCount][1], + 0, {subSectionIndex = subSectionIndex + 1}, + 1, {subSectionIndex = subSectionIndex + 1}, + -1, {sectionIndex = sectionIndex + 1; subSectionIndex = 1}) + }); + + if((i == (timeSigData[timeSigIndex][0] / 4)) && (g == 0),{ + timeSigData[timeSigIndex][0]; + curTimeSig = timeSigData[timeSigIndex][1]; + lilyString = lilyString + "\n\\time " ++ curTimeSig.asString ++ "/4\n"; + if(timeSigIndex < (timeSigData.size - 1), {timeSigIndex = timeSigIndex + 1}); + curTime = 0; + }); + + switch(p, + 0, { + lilyNote = lilyNotes[(((62.midicps * openStrings[group[0][0]]).cpsmidi + group[0][1]).round(1) % 12)];// * 2]; + lilyNote = lilyNote ++ lilyOcts[(((62.midicps * openStrings[group[0][0]]).cpsmidi + group[0][1]).round(1) / 12).asInteger - 2]; + }, + 1, { + if(group[0][0] != -1, { + lilyNote = lilyNotes[((group[0][0].cpsmidi).round(1) % 12)];// * 2]; + lilyNote = lilyNote ++ lilyOcts[(((group[0][0]).cpsmidi).round(1) / 12).asInteger - 2]; + },{lilyNote = "r"}); + }, + 2, { + if(group[0][0] != -1, { + lilyNote = lilyNotes[((group[0][0][0].cpsmidi).round(1) % 12)];// * 2]; + lilyNote = lilyNote ++ lilyOcts[(((group[0][0][0]).cpsmidi).round(1) / 12).asInteger - 2]; + lilyBeatingMark = "^ \\markup{ " ++ group[0][0][1].round(0.1) ++ " } "; + },{lilyNote = "r"}); + } + ); + + //duration + lilyDur = switch(noteLength, 1, {"16 "}, 2, {"8 "}, 3, {"8. "}, 4, {"4 "}); + //append rest directive + lilyRest = ""; + lilyGString = if(((group[0] != lastVal) && (p == 0)), { + var stringString, fretString; + stringString = ["VI ", "V ", "IV ", "III ", "II ", "I "][group[0][0]]; + fretString = group[0][1].asString; + if(isHarmonic, {fretString = "\\musicglyph \"noteheads.s0harmonic\""}); + "_\\markup{\\concat{ " ++ stringString ++ " \\super " ++ fretString ++ "}} " + }, {""}); + + if((p != 2) || (lilyNote == "r"), { + lilyString = lilyString ++ lilyNote ++ lilyDur ++ lilyGString; + }, { + lilyString = lilyString ++ " <<{ " ++ lilyNote ++ lilyDur ++ lilyBeatingMark ++ " } \\new Voice { \\voiceTwo " ++ + lilyNote ++ lilyDur ++ " }>> \\oneVoice " ++ lilyGString; + }); + + //beam group + if((g == 0) && (noteLength != 4), {lilyString = lilyString ++ " [ "}); + if((gSum == 4) && (noteLength != 4), {lilyString = lilyString ++ " ] "}); + + lastVal = group[0]; + curTime = curTime + (noteLength / 4); + }); + }); + + //end voice + lilyString = lilyString ++ " ] \\bar \"|.\" } \n"; + + + noteTuples = [lilyNotes, lilyOcts].allTuples.collect({arg val; val.join}).join("|"); + + markupSuffixes = ["VI ", "V ", "IV ", "III ", "II ", "I "].collect({arg stringString; + (["\\\\musicglyph \\\"noteheads.s0harmonic\\\""] ++ (0..14)).collect({arg fret; + "_\\\\markup{\\\\concat{ " ++ stringString ++ " \\\\super " ++ fret.asString ++ "}}"})}).flatten.join("|"); + + lilyString.findRegexp( + "(" ++ noteTuples ++ ")4 (" ++ markupSuffixes ++ ") ~ " ++ + "(" ++ noteTuples ++ ")4 ~ (" ++ noteTuples ++ ")4 ~ (" ++ noteTuples ++ ")4 ~ (" ++ noteTuples ++ ")4" + ).clump(7).do({arg match; + lilyString = lilyString.replace(match[0][1], match[1][1] ++ "2. " ++ match[2][1] ++ " ~ " ++ match[1][1] ++ "2")}); + + lilyString.findRegexp( + "(" ++ noteTuples ++ ")4 (" ++ markupSuffixes ++ ") ~ (" ++ noteTuples ++ ")4 ~ (" ++ noteTuples ++ ")4 ~ (" ++ noteTuples ++ ")4" + ).clump(6).do({arg match; + lilyString = lilyString.replace(match[0][1], match[1][1] ++ "1 " ++ match[2][1])}); + + lilyString.findRegexp( + "(" ++ noteTuples ++ ")4 (" ++ markupSuffixes ++ ") ~ (" ++ noteTuples ++ ")4 ~ (" ++ noteTuples ++ ")4" + ).clump(5).do({arg match; + lilyString = lilyString.replace(match[0][1], match[1][1] ++ "2. " ++ match[2][1])}); + + lilyString.findRegexp("(" ++ noteTuples ++ ")4 (" ++ markupSuffixes ++ ") ~ (" ++ noteTuples ++ ")4").clump(4).do({arg match; + lilyString = lilyString.replace(match[0][1], match[1][1] ++ "2 " ++ match[2][1])}); + + + //consolidate notes + lilyString.findRegexp( + "(" ++ noteTuples ++ ")4 ~ (" ++ noteTuples ++ ")4 ~ (" ++ noteTuples ++ ")4 ~ (" ++ noteTuples ++ ")4 ~ (" ++ noteTuples ++ ")4" + ).clump(6).do({arg match; + lilyString = lilyString.replace(match[0][1], match[1][1] ++ "2. ~ " ++ match[1][1] ++ "2")}); + + lilyString.findRegexp( + "(" ++ noteTuples ++ ")4 ~ (" ++ noteTuples ++ ")4 ~ (" ++ noteTuples ++ ")4 ~ (" ++ noteTuples ++ ")4" + ).clump(5).do({arg match; + lilyString = lilyString.replace(match[0][1], match[1][1] ++ "1")}); + + lilyString.findRegexp("(" ++ noteTuples ++ ")4 ~ (" ++ noteTuples ++ ")4 ~ (" ++ noteTuples ++ ")4").clump(4).do({arg match; + lilyString = lilyString.replace(match[0][1], match[1][1] ++ "2.")}); + + lilyString.findRegexp("(" ++ noteTuples ++ ")4 ~ (" ++ noteTuples ++ ")4").clump(3).do({arg match; + lilyString = lilyString.replace(match[0][1], match[1][1] ++ "2")}); + + + //consolidate rests + lilyString.findRegexp("r4 r4 r4 r4 r4").clump(2).do({arg match; + lilyString = lilyString.replace(match[0][1], "r2. r2")}); + + lilyString.findRegexp("r4 r4 r4 r4").clump(2).do({arg match; + lilyString = lilyString.replace(match[0][1], "r1")}); + + lilyString.findRegexp("r4 r4 r4").clump(2).do({arg match; + lilyString = lilyString.replace(match[0][1], "r2.")}); + + lilyString.findRegexp("r4 r4").clump(2).do({arg match; + lilyString = lilyString.replace(match[0][1], "r2")}); + + + lilyString.findRegexp("\\| r1").clump(2).do({arg match; + lilyString = lilyString.replace(match[0][1], "| R1")}); + + lilyString.findRegexp("4\nr1").clump(2).do({arg match; + lilyString = lilyString.replace(match[0][1], "4\n R1")}); + + //write file + lilyFile.write(lilyString); + lilyFile.close; + }); + +}; + +~genScoreData = {arg guitarSeq, accompLowSeq, accompHighSeq, timeSigInsSeq, sectionSeq; + var stringSeq, fretSeq, durSeq, + partData, timeSigData, sectionData; + stringSeq = guitarSeq.slice(nil, 0); + fretSeq = guitarSeq.slice(nil, 1); + durSeq = guitarSeq.slice(nil, 2); + partData = [ + [stringSeq, fretSeq, durSeq, durSeq].flop, + accompHighSeq.collect({arg item; [item[0], (item[1] / 0.08).round.asInteger, (item[2] / 0.08).round.asInteger]}), + accompLowSeq + ]; + timeSigData = timeSigInsSeq; + sectionData = sectionSeq; + [partData, timeSigData, sectionData] +}; +)