diff --git a/lilypond/counterfeit_in_colonial_connecticut_score.ly b/lilypond/counterfeit_in_colonial_connecticut_score.ly index e60cc8c..a968005 100644 --- a/lilypond/counterfeit_in_colonial_connecticut_score.ly +++ b/lilypond/counterfeit_in_colonial_connecticut_score.ly @@ -2,7 +2,6 @@ \include "pseudoindent.ly" - #(define factor 2) #(define (enlarged-extent-laissez-vibrer::print grob) @@ -28,7 +27,7 @@ bottom-margin = 1 \cm left-margin = 2.5 \cm ragged-bottom = ##t - page-breaking = #ly:minimal-breaking + %page-breaking = #ly:minimal-breaking top-system-spacing = #'((basic-distance . 15 ) @@ -48,13 +47,11 @@ (padding . 0 ) (stretchability . 0)) - %min-systems-per-page = 5 - %systems-per-page = 5 - %max-systems-per-page = 5 + 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)" } + oddHeaderMarkup = \markup { \on-the-fly #not-first-page \italic {Counterfeiting in Colonial Connecticut} } + evenHeaderMarkup = \markup { \on-the-fly #not-first-page \italic {Counterfeiting in Colonial Connecticut} } oddFooterMarkup = \markup { \fill-line { \on-the-fly #not-first-page \concat { @@ -85,7 +82,7 @@ \layout { indent = 0.0\cm line-width = 17\cm - ragged-last = ##t + ragged-last = ##f ragged-right = ##f \context { @@ -179,6 +176,7 @@ } << \include "includes/cicc_guitar.ly" + % { s1 | s1 | s1 | s1 | \break \pseudoIndents 0 44 s1 | s1 | s1 | s1 | } >> \new Staff \with { diff --git a/lilypond/counterfeit_in_colonial_connecticut_score.pdf b/lilypond/counterfeit_in_colonial_connecticut_score.pdf index 7a26534..ce5d531 100644 Binary files a/lilypond/counterfeit_in_colonial_connecticut_score.pdf and b/lilypond/counterfeit_in_colonial_connecticut_score.pdf differ diff --git a/lilypond/includes/cicc_guitar.ly b/lilypond/includes/cicc_guitar.ly index 28fc90b..01bc488 100644 --- a/lilypond/includes/cicc_guitar.ly +++ b/lilypond/includes/cicc_guitar.ly @@ -1,3 +1,112 @@ +{ +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\pseudoIndents 0 21 \repeat unfold 7 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\pseudoIndents 0 42 \repeat unfold 6 {s2 \noBreak} \break +\pseudoIndents 0 21 \repeat unfold 7 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\pseudoIndents 0 21 \repeat unfold 7 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\pseudoIndents 0 126 \repeat unfold 2 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\pseudoIndents 0 42 \repeat unfold 6 {s2 \noBreak} \break +\pseudoIndents 0 21 \repeat unfold 7 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\pseudoIndents 0 63 \repeat unfold 5 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\pseudoIndents 0 42 \repeat unfold 6 {s2 \noBreak} \break +\pseudoIndents 0 21 \repeat unfold 7 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\pseudoIndents 0 63 \repeat unfold 5 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\pseudoIndents 0 21 \repeat unfold 7 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\pseudoIndents 0 21 \repeat unfold 7 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +} { \set Score.markFormatter = #format-mark-box-numbers \tempo 2 = 90 diff --git a/lilypond/includes/cicc_high.ly b/lilypond/includes/cicc_high.ly index c245480..593f54e 100644 --- a/lilypond/includes/cicc_high.ly +++ b/lilypond/includes/cicc_high.ly @@ -1,3 +1,112 @@ +{ +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\pseudoIndents 0 21 \repeat unfold 7 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\pseudoIndents 0 42 \repeat unfold 6 {s2 \noBreak} \break +\pseudoIndents 0 21 \repeat unfold 7 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\pseudoIndents 0 21 \repeat unfold 7 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\pseudoIndents 0 126 \repeat unfold 2 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\pseudoIndents 0 42 \repeat unfold 6 {s2 \noBreak} \break +\pseudoIndents 0 21 \repeat unfold 7 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\pseudoIndents 0 63 \repeat unfold 5 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\pseudoIndents 0 42 \repeat unfold 6 {s2 \noBreak} \break +\pseudoIndents 0 21 \repeat unfold 7 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\pseudoIndents 0 63 \repeat unfold 5 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\pseudoIndents 0 21 \repeat unfold 7 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\pseudoIndents 0 21 \repeat unfold 7 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +} { \set Score.markFormatter = #format-mark-box-numbers \tempo 2 = 90 diff --git a/lilypond/includes/cicc_low.ly b/lilypond/includes/cicc_low.ly index 84cb533..76c1a82 100644 --- a/lilypond/includes/cicc_low.ly +++ b/lilypond/includes/cicc_low.ly @@ -1,3 +1,112 @@ +{ +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\pseudoIndents 0 21 \repeat unfold 7 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\pseudoIndents 0 42 \repeat unfold 6 {s2 \noBreak} \break +\pseudoIndents 0 21 \repeat unfold 7 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\pseudoIndents 0 21 \repeat unfold 7 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\pseudoIndents 0 126 \repeat unfold 2 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\pseudoIndents 0 42 \repeat unfold 6 {s2 \noBreak} \break +\pseudoIndents 0 21 \repeat unfold 7 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\pseudoIndents 0 63 \repeat unfold 5 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\pseudoIndents 0 42 \repeat unfold 6 {s2 \noBreak} \break +\pseudoIndents 0 21 \repeat unfold 7 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\pseudoIndents 0 63 \repeat unfold 5 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\pseudoIndents 0 21 \repeat unfold 7 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\pseudoIndents 0 21 \repeat unfold 7 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +\repeat unfold 8 {s2 \noBreak} \break +} { \set Score.markFormatter = #format-mark-box-numbers \tempo 2 = 90 diff --git a/lilypond/pseudoindent.ly b/lilypond/pseudoindent.ly index 4bedc7d..8283263 100644 --- a/lilypond/pseudoindent.ly +++ b/lilypond/pseudoindent.ly @@ -125,4 +125,9 @@ pseudoIndent = % for changing just left-indent ((markup-list? '()) number?) #{ \pseudoIndents $name-tweaks $left-indent 0 - #}) \ No newline at end of file + #}) + +% [1] versions <2.19.1 can have end-of-line leftedges too +% - these were eliminated in issue 3761 +% [2] versions >=2.19.16: the first system behaves differently from the rest +% - a side effect of issue 660 ? diff --git a/supercollider/cicc_gui.scd b/supercollider/cicc_gui.scd index bf762dc..a65e49b 100644 --- a/supercollider/cicc_gui.scd +++ b/supercollider/cicc_gui.scd @@ -8,12 +8,14 @@ var partVols, partMutes, partPans; var masterMute, masterVol; + // set initial mixer values partVols = [1, 1, 1, 1, 1]; partMutes = [1, 1, 1, 1, 1]; partPans = [0, 0, 0, 0, 0]; masterMute = 1; masterVol = 1; + // these funcs update the elements of the transport panel clockStringFunc = { arg measure, beat; var measureString, beatString, leadSpace; @@ -26,40 +28,29 @@ metronomeStringFunc = { arg beat; if(beat == 1, {[-30, -105, -104].asAscii}, {[-30, -105, -113].asAscii}) }; metronomeColorFunc = { arg beat; if(beat == 1, {Color.red},{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, order, startPosText, - prevSectionButton, prevSubsectionButton, playStopButton, nextSubsectionButton, nextSectionButton, - sectionDisplay, clock, metronome; + var view, generator, transport, ranSeed, order, sectionDisplay, clock, metronome; + // this func updates the whole transport panel ~updateTransport = {arg measure, beat; clock.string = clockStringFunc.value(measure, beat); metronome.stringColor = metronomeColorFunc.value(beat); metronome.string = metronomeStringFunc.value(beat); }; + // this func handles the movement between sections ~updateSection = {arg shift, stop = true, manualCall = true; var runThis; - runThis = (manualCall || (manualCall.not && ~autoAdvance.postln)); + runThis = (manualCall || (manualCall.not && ~autoAdvance)); runThis = runThis && ((~currentSection + shift) < ~sectionOrder.size); runThis = runThis && (((~currentSection % 4) == 3) && ~interludes && manualCall.not).not; if(runThis, { var truncOnly, section, subSection; if(~isPlaying, { - if(stop, {~patterns[~sectionOrder[~currentSection]].stop}); + if(stop, { + ~patterns[~sectionOrder[~currentSection]].stop + }) }); truncOnly = case @@ -100,6 +91,7 @@ }); }; + // these funcs receive messages from the synth OSCFunc({ arg msg, time; { var measure, beat; @@ -108,7 +100,6 @@ ~updateTransport.value(measure, beat) }.defer; },'/measureClock', s.addr); - OSCFunc({ arg msg, time; {metronome.string = ""}.defer},'/measureClockReset', s.addr); view = View(win); @@ -116,25 +107,14 @@ ranSeed = TextField(view, Rect(10, 10, 10, 20)).string_("20200525"), Button(view).states_([["reset seed"]]).action_({ ranSeed.string = "20200525"}), Button(view).states_([["random seed"]]).action_({ ranSeed.string = 50000000.rand.asString}), - Button(view).states_([["generate"]]).action_({ - //~appStatusString = "generating data"; - //~appStatusFunc.start; - ~genAll.value(ranSeed.string.asInteger); - }), - Button(view).states_([["transcribe"]]).action_({ - ~transcribe.value(~scoreData) - }), - [StaticText(view).string_(" "), stretch: 1], - nil); + Button(view).states_([["generate"]]).action_({~genAll.value(ranSeed.string.asInteger)}), + Button(view).states_([["transcribe"]]).action_({~transcribe.value(~scoreData)}), + [StaticText(view).string_(" "), stretch: 1], nil); transport = HLayout( - prevSectionButton = Button(view).states_([["<<", Color.black]]).action_({| pState | - ~updateSection.value(-4); - }), - prevSubsectionButton = Button(view).states_([["<", Color.black]]).action_({| pState | - ~updateSection.value(-1); - }), - playStopButton = Button(view).states_([["play", Color.black], ["stop", Color.black, Color.grey]]).action_( - {| pState | + Button(view).states_([["<<", Color.black]]).action_({arg pState; ~updateSection.value(-4)}), + Button(view).states_([["<", Color.black]]).action_({arg pState; ~updateSection.value(-1)}), + Button(view).states_([["play", Color.black], ["stop", Color.black, Color.grey]]).action_( + {arg pState; if(pState.value == 0, { var measure, beat; ~isPlaying = false; @@ -156,15 +136,9 @@ }) } ), - nextSubsectionButton = Button(view).states_([[">", Color.black]]).action_({| pState | - ~updateSection.value(1); - }), - nextSectionButton = Button(view).states_([[">>", Color.black]]).action_({| pState | - ~updateSection.value(4); - }), - nil, - sectionDisplay = StaticText(win).string_("section: 1.1").font_(Font("Monaco", 70)), - nil); + Button(view).states_([[">", Color.black]]).action_({arg pState; ~updateSection.value(1)}), + Button(view).states_([[">>", Color.black]]).action_({arg pState; ~updateSection.value(4)}), nil, + sectionDisplay = StaticText(win).string_("section: 1.1").font_(Font("Monaco", 70)), nil); view.layout_(HLayout( [VLayout( HLayout(clock = StaticText(win).string_(" 1.1").font_(Font("Monaco", 200)), @@ -172,10 +146,10 @@ metronome = StaticText(win).string_([-30, -105, -104].asAscii).font_(Font("Monaco", 300)).stringColor_(Color.red)), nil, transport, nil, HLayout(Button(view).states_([["auto advance", Color.black], ["auto advance", Color.black, Color.grey]]).action_({ - |v| ~autoAdvance = if(v.value == 0, {false}, {true});~autoAdvance.postln; + arg v; ~autoAdvance = if(v.value == 0, {false}, {true});~autoAdvance; }).value_(1), Button(view).states_([["interludes", Color.black], ["interludes", Color.black, Color.grey]]).action_({ - |v| ~interludes = if(v.value == 0, {false}, {true}) + arg v; ~interludes = if(v.value == 0, {false}, {true}) }), [StaticText(view).string_(" "), stretch: 1]), [StaticText(view).string_(" "), stretch: 1], @@ -183,20 +157,19 @@ order = TextField(view).string_("1-4"), Button(view).states_([["set order"]]).action_({ ~patterns[~sectionOrder[~currentSection]].stop; - ~sectionOrder = order.string.postln.split($,).collect({arg secEntry; + ~sectionOrder = order.string.split($,).collect({arg secEntry; var bounds; bounds = secEntry.split($-).collect({arg item; item.asInteger - 1}); ((bounds.minItem)..(bounds.maxItem)).collect({arg sec; (sec.asInteger * 4) + [0, 1, 2, 3] }); }).flat; - ~sectionOrder.postln; ~currentSection = 0; ~updateSection.value(0); }), [StaticText(view).string_(" "), stretch: 1]), [StaticText(view).string_(" "), stretch: 1], generator - ), alignment: \top])) }; + ), alignment: \top]))}; faderView = { var view, masterIndicators, trackIndicators, master, tracks; view = View(win); @@ -204,38 +177,35 @@ trackIndicators = {LevelIndicator()} ! 5; OSCFunc.new({arg msg; { - {|i| masterIndicators[i].value = msg[3 + i].ampdb.linlin(-40, 0, 0, 1)} ! 2}.defer}, + {arg 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)} ! 5}.defer}, + {arg i; trackIndicators[i].value = msg[3 + i].ampdb.linlin(-40, 0, 0, 1)} ! 5}.defer}, '/trackLevels', s.addr); master = HLayout( VLayout( [HLayout( Slider(view).value_(0.8).action_( - {|v| masterVol = v.value * 1.25; ~play.set(\masterVol, masterVol)}), + {arg 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)}), + {arg 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| + ), nil); + tracks = {arg part; HLayout( VLayout( HLayout( Slider(view).value_(0.8).action_( - {|v| partVols[part] = v.value * 1.25; ~play.set(partAbbr[part] ++ "Vol", partVols[part])}), + {arg 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])}), + {arg 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])}), + {arg v; partPans[part] = v.value * 2 - 1; ~play.set(partAbbr[part] ++ "Pan", partPans[part])}), StaticText(view).string_(trackNames[part]).align_(\center) ), nil) diff --git a/supercollider/cicc_main.scd b/supercollider/cicc_main.scd index 7306084..b9d910d 100644 --- a/supercollider/cicc_main.scd +++ b/supercollider/cicc_main.scd @@ -3,17 +3,19 @@ var appEnvironment; +//push new environment appEnvironment = Environment.make; appEnvironment.push; s.waitForBoot({ - // load + // load all files "cicc_musical_data_generator.scd".loadRelative; "cicc_sonifier.scd".loadRelative; "cicc_gui.scd".loadRelative; "cicc_transcriber.scd".loadRelative; + // generate all the data ~genAll = {arg seed; ~allMusicData = ~genMusicData.value(seed); ~patterns = ~allMusicData[0]; @@ -24,6 +26,7 @@ s.waitForBoot({ ~isPlaying = false; }; + // set the global variables ~dir = thisProcess.nowExecutingPath.dirname; ~genAll.value(20200525); ~play = Synth.new(\masterPlayerControl); @@ -34,4 +37,6 @@ s.waitForBoot({ ~generateGUI.value; appEnvironment.pop; -}); \ No newline at end of file +}); + +) \ No newline at end of file diff --git a/supercollider/cicc_sonifier.scd b/supercollider/cicc_sonifier.scd index b93a3e6..efd9899 100644 --- a/supercollider/cicc_sonifier.scd +++ b/supercollider/cicc_sonifier.scd @@ -8,6 +8,7 @@ ~accompLowLowerBusB = Bus.audio(s, 1); ~accompLowUpperBusB = Bus.audio(s, 1); ~interludeBus = Bus.audio(s, 1); +~droneBus = Bus.audio(s, 1); SynthDef(\masterPlayerControl, { arg sel = 0, @@ -20,13 +21,8 @@ SynthDef(\masterPlayerControl, { guitarSigPanned, accompHighSigPanned, accompLowLowerSigPanned, accompLowUpperSigPanned, 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; - guitarSig = In.ar(~guitarBus) * guitarVol; accompHighSig = In.ar(~accompHighBus) * accompHighVol; - //accompLowSig = SelectX.ar(sel, [In.ar(~accompLowBusA), In.ar(~accompLowBusB)]) * accompLowVol; accompLowLowerSig = Mix.ar( [ In.ar(~accompLowLowerBusA) * EnvGen.kr(Env.asr(0.001, 1, 0.1), (sel + 1) % 2), @@ -76,8 +72,7 @@ SynthDef(\transport, {arg measure = 0, beat = 0, gate = 1, dur = 1; 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: 2) * amp - ) + Linen.kr(gate, doneAction: 2) * amp) }).add; @@ -87,7 +82,6 @@ SynthDef(\accompBass, {arg freq1 = 100, freq2 = 100, gate = 1, amp = 0.5, busLow env = EnvGen.kr(Env.perc(0.1, 10, level: amp), Impulse.kr(0) + Changed.kr(freq2)); lower = SinOsc.ar(freq1, 0, 0.5) * env; upper = SinOsc.ar(freq2, 0, 0.5) * env; - //EnvGen.kr(Env.cutoff(0.1, level: amp), cutoff); Out.ar(busLower, lower); Out.ar(busUpper, upper) }).add; @@ -96,14 +90,11 @@ SynthDef(\accompBass, {arg freq1 = 100, freq2 = 100, gate = 1, amp = 0.5, busLow //this is not releasing properly 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, doneAction: 2)); + treble = SinOsc.ar(freq, 0, EnvGen.kr(Env.sine(sustain, amp * 0.1), gate, doneAction: 2)); 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( @@ -116,8 +107,7 @@ SynthDef(\drone, { arg out=0, freq=440, amp=0.1, pan=0, gate=1, bus; SynthDef(\droneFade, {arg gate = 0; Out.ar([0, 1], Clip.ar(In.ar(~droneBus, 1), -1, 1) * 0.1 * EnvGen.ar(Env.asr(20, 1, 20), gate)) -} -).add; +}).add; ~dronePattern = EventPatternProxy.new; @@ -132,9 +122,7 @@ SynthDef(\droneFade, {arg gate = 0; ); -OSCFunc({ arg msg, time; - {~updateSection.value(1, false, false)}.defer; -},'/playNextSubsection', s.addr); +OSCFunc({ arg msg, time; {~updateSection.value(1, false, false)}.defer},'/playNextSubsection', s.addr); //~~~~gen music ~genPatterns = {arg guitarSeqIn, accompLowSeqIn, accompHighSeqIn, sectionSeqIn, tempo = 0.08; @@ -164,7 +152,6 @@ OSCFunc({ arg msg, time; genSectionSec = {arg seq, startTime, endTime, type; var durSum, resSeqs, inSecs, mult; - //sectionSeq.postln; durSum = 0; resSeqs = []; seq.do({arg item; @@ -180,8 +167,6 @@ OSCFunc({ arg msg, time; }); durSum = durSum + if(type == 2, {item[1]}, {item[2]}); }); - //if(type == 1, {resSeqs = resSeqs.add([0, 0, 16])}); - resSeqs.postln; resSeqs }; @@ -214,22 +199,12 @@ OSCFunc({ arg msg, time; 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); - susSeq.last.postln; - durSeq.last.postln; - accompLowSecSeq.last.postln; - accompHighSecSeq.last.postln; - //trigSeq = guitarSeq.slice(nil, 3); - //~player = EventPatternProxy.new; pattern = EventPatternProxy.new; pattern.source = Ppar([ Pbind( @@ -252,7 +227,7 @@ OSCFunc({ arg msg, time; //\cutoff, Pseq(accompLowSecSeq.drop(-1).size.collect({0}).add(1)), \busLower, if(secIndex % 2 == 0, {~accompLowLowerBusA.index}, {~accompLowLowerBusB.index}), \busUpper, if(secIndex % 2 == 0, {~accompLowUpperBusA.index}, {~accompLowUpperBusB.index})) - //\bus, ~accompLowBus) + //\bus, ~accompLowBus) }, { Pmono( \accompBass, @@ -263,7 +238,7 @@ OSCFunc({ arg msg, time; //\cutoff, Pseq(accompLowSecSeq.drop(-1).size.collect({0}).add(1)), \busLower, if(secIndex % 2 == 0, {~accompLowLowerBusA.index}, {~accompLowLowerBusB.index}), \busUpper, if(secIndex % 2 == 0, {~accompLowUpperBusA.index}, {~accompLowUpperBusB.index})) - //\bus, ~accompLowBus) + //\bus, ~accompLowBus) }), Pbind( \instrument, \accompTreble, diff --git a/supercollider/cicc_transcriber.scd b/supercollider/cicc_transcriber.scd index e6773ae..8e0afc7 100644 --- a/supercollider/cicc_transcriber.scd +++ b/supercollider/cicc_transcriber.scd @@ -1,13 +1,12 @@ ( ~transcribe = {arg scoreData; - var rawMusicData, timeSigData, sectionData, dir, basePath, maxSize, openStrings, musicData; + var rawMusicData, timeSigData, sectionData, dir, basePath, maxSize, lineBreakString, openStrings, musicData; rawMusicData = scoreData[0]; timeSigData = scoreData[1]; sectionData = scoreData[2]; basePath = ~dir +/+ ".." +/+ "lilypond"; - openStrings = [1/1, 3/2, 2/1, 5/2, 35/12, 7/2]; maxSize = 0; @@ -65,6 +64,49 @@ partData.extend((maxSize + ext), if(p == 0, {partData.last}, {[-1, partData.last[1]]})) }); + lineBreakString = ""; + sectionData.slice(nil, 0).add(musicData[0].size).differentiate.drop(1).clump(4).do({arg section; + var remainder, endSec; + remainder = 0; + + section.do({arg len, index; + var measuresInFirst; + if(remainder % 16 == 0, { + lineBreakString = lineBreakString ++ "\\repeat unfold 8 {s2 \\noBreak} \\break \n"; + }, { + lineBreakString = lineBreakString ++ "\\pseudoIndents 0 21 \\repeat unfold 7 {s2 \\noBreak} \\break \n"; + }); + + remainder = len - (((64 - remainder) / 16).asInteger * 16); + + ((remainder / 64) - 1).asInteger.do({ + lineBreakString = lineBreakString ++ "\\repeat unfold 8 {s2 \\noBreak} \\break \n"; + }); + + remainder = remainder - (((remainder / 64) - 1).asInteger * 64); + + if(remainder % 16 == 0, { + lineBreakString = lineBreakString ++ "\\repeat unfold 8 {s2 \\noBreak} \\break \n"; + remainder = remainder % 64; + }, { + if(remainder > 72, { + lineBreakString = lineBreakString ++ "\\repeat unfold 8 {s2 \\noBreak} \\break \n"; + remainder = remainder - 64; + }, { + lineBreakString = lineBreakString ++ "\\pseudoIndents 0 42 \\repeat unfold 6 {s2 \\noBreak} \\break \n"; + remainder = 24; + }); + }); + remainder + }); + + if(remainder > 0, { + lineBreakString = lineBreakString ++ "\\pseudoIndents 0 " ++ + (21 * (8 - (remainder / 8).asInteger)) ++ " \\repeat unfold " ++ (remainder / 8).asInteger ++ " {s2 \\noBreak} \\break \n"; + }); + }); + + musicData.do({arg part, p; var amps, harm, modi, timeSigIndex, sectionCount, sectionIndex, subSectionIndex, curTimeSig, lilyFile, lilyString, voices, lastVal, lilyNotes, lilyOcts, lilyGString, isHarmonic, measureCount, @@ -109,7 +151,6 @@ 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; @@ -128,7 +169,8 @@ -1, {"\"|.\" \\set Score.currentBarNumber = #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; + 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}, @@ -183,7 +225,8 @@ if((p != 2) || (lilyNote == "r"), { lilyString = lilyString ++ lilyNote ++ lilyDur ++ lilyGString; }, { - lilyString = lilyString ++ " <<{ " ++ lilyNote ++ lilyDur ++ " \\laissezVibrer " ++ lilyBeatingMark ++ " }\\\\ {\\new Voice { \\voiceTwo " ++ + lilyString = lilyString ++ " <<{ " ++ lilyNote ++ lilyDur ++ + " \\laissezVibrer " ++ lilyBeatingMark ++ " }\\\\ {\\new Voice { \\voiceTwo " ++ lilyNote ++ lilyDur ++ " \\laissezVibrer }}>> \\oneVoice " ++ lilyGString; }); @@ -267,7 +310,7 @@ lilyString = lilyString.replace(match[0][1], "2\n R1")}); //write file - lilyFile.write(lilyString); + lilyFile.write("{\n" ++ lineBreakString ++ "}\n" ++ lilyString); lilyFile.close; }); @@ -288,4 +331,4 @@ sectionData = sectionSeq; [partData, timeSigData, sectionData] }; -) +) \ No newline at end of file