first commit
commit
e7072228f5
@ -0,0 +1 @@
|
||||
*.wav
|
Binary file not shown.
@ -0,0 +1,298 @@
|
||||
\version "2.19.81"
|
||||
|
||||
% systems-per-page, unfold vars, and strings delimited by tildes
|
||||
% are changed by the Supercollider transcriber
|
||||
|
||||
\paper {
|
||||
#(set-paper-size "a4" 'portrait)
|
||||
top-margin = 1 \cm
|
||||
bottom-margin = 1 \cm
|
||||
left-margin = 2.5 \cm
|
||||
|
||||
top-system-spacing =
|
||||
#'((basic-distance . 25 )
|
||||
(minimum-distance . 25 )
|
||||
(padding . 0 )
|
||||
(stretchability . 0))
|
||||
|
||||
last-bottom-spacing =
|
||||
#'((basic-distance . 15 )
|
||||
(minimum-distance . 15 )
|
||||
(padding . 0 )
|
||||
(stretchability . 0))
|
||||
|
||||
% manually change systems-per-page to 2 if the harmonics of hl 6 are uncommented below
|
||||
systems-per-page = 4
|
||||
|
||||
print-page-number = ##t
|
||||
oddHeaderMarkup = \markup { \on-the-fly #not-first-page "(~~score_type~~ - ~~transform~~)" }
|
||||
evenHeaderMarkup = \markup { \on-the-fly #not-first-page "(~~score_type~~ - ~~transform~~)" }
|
||||
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 {a lot of tiles (trivial scan)}}
|
||||
subtitle = \markup { \normal-text {~~transform~~}}
|
||||
composer = \markup \left-column {"michael winter" "(cdmx, mx and nashville, usa; 2018)"}
|
||||
piece = \markup { \normal-text {~~score_type~~ - ~~transform~~}}
|
||||
tagline = ""
|
||||
}
|
||||
|
||||
#(set-global-staff-size 15)
|
||||
|
||||
\layout {
|
||||
indent = 0.0\cm
|
||||
line-width = 17\cm
|
||||
ragged-last = ##t
|
||||
|
||||
\context {
|
||||
\Score
|
||||
\override BarNumber.extra-offset = #'(0 . 5)
|
||||
\override BarNumber.stencil =
|
||||
#(make-stencil-circler 0.1 0.25 ly:text-interface::print)
|
||||
}
|
||||
\context {
|
||||
\Staff
|
||||
\override StaffSymbol.line-count = #1
|
||||
\override Clef.stencil = #point-stencil
|
||||
\override Clef.space-alist.first-note = #'(extra-space . 1)
|
||||
\remove "Time_signature_engraver"
|
||||
}
|
||||
\context {
|
||||
\Voice
|
||||
\override Glissando.minimum-length = #0
|
||||
\override Glissando.layer = 500
|
||||
\override Glissando.breakable = ##t
|
||||
\override Glissando.bound-details =
|
||||
#'((right
|
||||
(attach-dir . -1)
|
||||
(end-on-accidental . #f)
|
||||
(padding . 0))
|
||||
(right-broken
|
||||
(padding . 0.5))
|
||||
(left-broken
|
||||
(padding . 0.5)
|
||||
(attach-dir . 1))
|
||||
(left
|
||||
(attach-dir . -1)
|
||||
(padding . -0.25)
|
||||
(start-at-dot . #f)))
|
||||
}
|
||||
}
|
||||
|
||||
% this draws a curve and a gradient
|
||||
#(define (make-grey-filled-curve-stencil-list x-coords colors half-thick rl)
|
||||
(if (null? (cdr x-coords))
|
||||
rl
|
||||
(make-grey-filled-curve-stencil-list
|
||||
(cdr x-coords)
|
||||
(cdr colors)
|
||||
half-thick
|
||||
(cons
|
||||
(stencil-with-color
|
||||
(make-filled-box-stencil
|
||||
(interval-widen (cons (car x-coords) (cadr x-coords)) 0.1)
|
||||
(cons (- half-thick) (- 9 (* 10 (car colors)))))
|
||||
(list (car colors) (car colors) (car colors)))
|
||||
rl))))
|
||||
|
||||
% this draws a just a line with a gradient
|
||||
#(define (make-grey-filled-box-stencil-list x-coords colors half-thick rl)
|
||||
(if (null? (cdr x-coords))
|
||||
rl
|
||||
(make-grey-filled-box-stencil-list
|
||||
(cdr x-coords)
|
||||
(cdr colors)
|
||||
half-thick
|
||||
(cons
|
||||
(stencil-with-color
|
||||
(make-filled-box-stencil
|
||||
(interval-widen (cons (car x-coords) (cadr x-coords)) 0.1)
|
||||
(cons (- half-thick) half-thick))
|
||||
(list (car colors) (car colors) (car colors)))
|
||||
rl))))
|
||||
|
||||
#(define my-gliss
|
||||
(lambda (grob)
|
||||
(if (ly:stencil? (ly:line-spanner::print grob))
|
||||
(let* ((stencil (ly:line-spanner::print grob))
|
||||
(X-ext (ly:stencil-extent stencil X))
|
||||
(Y-ext (ly:stencil-extent stencil Y))
|
||||
(Y-length (- (cdr Y-ext) (car Y-ext)))
|
||||
(left-bound-info (ly:grob-property grob 'left-bound-info))
|
||||
(left-Y (assoc-get 'Y left-bound-info))
|
||||
(thick
|
||||
(assoc-get 'thickness (ly:grob-property grob 'details) 0.5))
|
||||
(layout (ly:grob-layout grob))
|
||||
(blot (ly:output-def-lookup layout 'blot-diameter))
|
||||
(right-bound (ly:spanner-bound grob RIGHT))
|
||||
(right-par (ly:grob-parent right-bound X))
|
||||
(stem
|
||||
(if (grob::has-interface right-par 'note-column-interface)
|
||||
(ly:grob-object right-par 'stem)
|
||||
'()))
|
||||
(stem-stencil
|
||||
(if (ly:grob? stem)
|
||||
(ly:grob-property stem 'stencil)
|
||||
#f))
|
||||
(stem-thick
|
||||
(if (ly:stencil? stem-stencil)
|
||||
(interval-length (ly:stencil-extent stem-stencil X))
|
||||
0))
|
||||
(corr-delta-X (- (interval-length X-ext)
|
||||
Y-length
|
||||
blot
|
||||
stem-thick
|
||||
;; mmh, why this value??
|
||||
-0.05))
|
||||
(colors
|
||||
(assoc-get 'colors (ly:grob-property grob 'details)
|
||||
(list 0 .5 .8)))
|
||||
(steps
|
||||
(length colors))
|
||||
(raw-x-coords
|
||||
(iota (1+ (abs steps)) 0 (/ corr-delta-X (abs steps))))
|
||||
(x-coords
|
||||
(map
|
||||
(lambda (e)
|
||||
(+ (car X-ext) Y-length blot e))
|
||||
raw-x-coords)))
|
||||
|
||||
;; create a flat glissando
|
||||
(ly:grob-set-nested-property! grob '(right-bound-info Y) left-Y)
|
||||
|
||||
;; return the stencil of added boxes
|
||||
(ly:stencil-translate-axis
|
||||
(apply
|
||||
ly:stencil-add
|
||||
;; change this to make-grey-filled-box-stencil-list to eleminate curve and just use gradient
|
||||
(make-grey-filled-curve-stencil-list
|
||||
x-coords
|
||||
colors
|
||||
thick
|
||||
'()))
|
||||
;; the actual offset is TODO, hardcoded here
|
||||
3.5
|
||||
Y))
|
||||
#f)))
|
||||
|
||||
#(define (add-gliss m)
|
||||
(case (ly:music-property m 'name)
|
||||
((NoteEvent)
|
||||
(set! (ly:music-property m 'articulations)
|
||||
(append
|
||||
(ly:music-property m 'articulations)
|
||||
(list (make-music 'GlissandoEvent))))
|
||||
m)
|
||||
(else #f)))
|
||||
|
||||
addGliss =
|
||||
#(define-music-function (music)
|
||||
(ly:music?)
|
||||
(map-some-music add-gliss music))
|
||||
|
||||
|
||||
\new Score
|
||||
\with {proportionalNotationDuration = #(ly:make-moment 1 16)}
|
||||
<<
|
||||
\new StaffGroup \with{
|
||||
\override StaffGrouper.staff-staff-spacing =
|
||||
#'((basic-distance . 13)
|
||||
(minimum-distance . 13)
|
||||
(padding . 0)
|
||||
(stretchability . 0))
|
||||
\override StaffGrouper.staffgroup-staff-spacing =
|
||||
#'((basic-distance . 13)
|
||||
(minimum-distance . 13)
|
||||
(padding . 0)
|
||||
(stretchability . 0))
|
||||
}
|
||||
<<
|
||||
|
||||
% uncomment these lines to view harmonics of hl 6
|
||||
% also change systems-per-page to 2 manually above
|
||||
%{
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 6 " "(harm 13) "}
|
||||
shortInstrumentName = #"hl6 (h13) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 33 { \repeat unfold 3 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_6_harm_13.ly"
|
||||
>>
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 6 " "(harm 9) "}
|
||||
shortInstrumentName = #"hl6 (h9) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 33 { \repeat unfold 3 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_6_harm_9.ly"
|
||||
>>
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 6 " "(harm 5) "}
|
||||
shortInstrumentName = #"hl6 (h5) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 33 { \repeat unfold 3 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_6_harm_5.ly"
|
||||
>>
|
||||
%}
|
||||
|
||||
%~~hl6-start~~
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 6 " "(harm 1) "}
|
||||
shortInstrumentName = #"hl6 (h1) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 33 { \repeat unfold 3 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_6_harm_1.ly"
|
||||
>>
|
||||
%~~hl6-end~~
|
||||
>>
|
||||
|
||||
\new StaffGroup \with{
|
||||
\override StaffGrouper.staff-staff-spacing =
|
||||
#'((basic-distance . 9)
|
||||
(minimum-distance . 9)
|
||||
(padding . 0)
|
||||
(stretchability . 0))
|
||||
}
|
||||
<<
|
||||
%~~hl5-start~~
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 5" "(high noise)"}
|
||||
shortInstrumentName = #"hl5 (hn) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 33 { \repeat unfold 3 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_5.ly"
|
||||
>>
|
||||
%~~hl5-end~~
|
||||
|
||||
%~~hl4-start~~
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 4 " "(low noise)"}
|
||||
shortInstrumentName = #"hl4 (ln) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 33 { \repeat unfold 3 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_4.ly"
|
||||
>>
|
||||
%~~hl4-end~~
|
||||
>>
|
||||
>>
|
@ -0,0 +1,298 @@
|
||||
\version "2.19.81"
|
||||
|
||||
% systems-per-page, unfold vars, and strings delimited by tildes
|
||||
% are changed by the Supercollider transcriber
|
||||
|
||||
\paper {
|
||||
#(set-paper-size "a4" 'portrait)
|
||||
top-margin = 1 \cm
|
||||
bottom-margin = 1 \cm
|
||||
left-margin = 2.5 \cm
|
||||
|
||||
top-system-spacing =
|
||||
#'((basic-distance . 25 )
|
||||
(minimum-distance . 25 )
|
||||
(padding . 0 )
|
||||
(stretchability . 0))
|
||||
|
||||
last-bottom-spacing =
|
||||
#'((basic-distance . 15 )
|
||||
(minimum-distance . 15 )
|
||||
(padding . 0 )
|
||||
(stretchability . 0))
|
||||
|
||||
% manually change systems-per-page to 2 if the harmonics of hl 6 are uncommented below
|
||||
systems-per-page = 4
|
||||
|
||||
print-page-number = ##t
|
||||
oddHeaderMarkup = \markup { \on-the-fly #not-first-page "(master score - 0111211)" }
|
||||
evenHeaderMarkup = \markup { \on-the-fly #not-first-page "(master score - 0111211)" }
|
||||
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 {a lot of tiles (trivial scan)}}
|
||||
subtitle = \markup { \normal-text {0111211}}
|
||||
composer = \markup \left-column {"michael winter" "(cdmx, mx and nashville, usa; 2018)"}
|
||||
piece = \markup { \normal-text {master score - 0111211}}
|
||||
tagline = ""
|
||||
}
|
||||
|
||||
#(set-global-staff-size 15)
|
||||
|
||||
\layout {
|
||||
indent = 0.0\cm
|
||||
line-width = 17\cm
|
||||
ragged-last = ##t
|
||||
|
||||
\context {
|
||||
\Score
|
||||
\override BarNumber.extra-offset = #'(0 . 5)
|
||||
\override BarNumber.stencil =
|
||||
#(make-stencil-circler 0.1 0.25 ly:text-interface::print)
|
||||
}
|
||||
\context {
|
||||
\Staff
|
||||
\override StaffSymbol.line-count = #1
|
||||
\override Clef.stencil = #point-stencil
|
||||
\override Clef.space-alist.first-note = #'(extra-space . 1)
|
||||
\remove "Time_signature_engraver"
|
||||
}
|
||||
\context {
|
||||
\Voice
|
||||
\override Glissando.minimum-length = #0
|
||||
\override Glissando.layer = 500
|
||||
\override Glissando.breakable = ##t
|
||||
\override Glissando.bound-details =
|
||||
#'((right
|
||||
(attach-dir . -1)
|
||||
(end-on-accidental . #f)
|
||||
(padding . 0))
|
||||
(right-broken
|
||||
(padding . 0.5))
|
||||
(left-broken
|
||||
(padding . 0.5)
|
||||
(attach-dir . 1))
|
||||
(left
|
||||
(attach-dir . -1)
|
||||
(padding . -0.25)
|
||||
(start-at-dot . #f)))
|
||||
}
|
||||
}
|
||||
|
||||
% this draws a curve and a gradient
|
||||
#(define (make-grey-filled-curve-stencil-list x-coords colors half-thick rl)
|
||||
(if (null? (cdr x-coords))
|
||||
rl
|
||||
(make-grey-filled-curve-stencil-list
|
||||
(cdr x-coords)
|
||||
(cdr colors)
|
||||
half-thick
|
||||
(cons
|
||||
(stencil-with-color
|
||||
(make-filled-box-stencil
|
||||
(interval-widen (cons (car x-coords) (cadr x-coords)) 0.1)
|
||||
(cons (- half-thick) (- 9 (* 10 (car colors)))))
|
||||
(list (car colors) (car colors) (car colors)))
|
||||
rl))))
|
||||
|
||||
% this draws a just a line with a gradient
|
||||
#(define (make-grey-filled-box-stencil-list x-coords colors half-thick rl)
|
||||
(if (null? (cdr x-coords))
|
||||
rl
|
||||
(make-grey-filled-box-stencil-list
|
||||
(cdr x-coords)
|
||||
(cdr colors)
|
||||
half-thick
|
||||
(cons
|
||||
(stencil-with-color
|
||||
(make-filled-box-stencil
|
||||
(interval-widen (cons (car x-coords) (cadr x-coords)) 0.1)
|
||||
(cons (- half-thick) half-thick))
|
||||
(list (car colors) (car colors) (car colors)))
|
||||
rl))))
|
||||
|
||||
#(define my-gliss
|
||||
(lambda (grob)
|
||||
(if (ly:stencil? (ly:line-spanner::print grob))
|
||||
(let* ((stencil (ly:line-spanner::print grob))
|
||||
(X-ext (ly:stencil-extent stencil X))
|
||||
(Y-ext (ly:stencil-extent stencil Y))
|
||||
(Y-length (- (cdr Y-ext) (car Y-ext)))
|
||||
(left-bound-info (ly:grob-property grob 'left-bound-info))
|
||||
(left-Y (assoc-get 'Y left-bound-info))
|
||||
(thick
|
||||
(assoc-get 'thickness (ly:grob-property grob 'details) 0.5))
|
||||
(layout (ly:grob-layout grob))
|
||||
(blot (ly:output-def-lookup layout 'blot-diameter))
|
||||
(right-bound (ly:spanner-bound grob RIGHT))
|
||||
(right-par (ly:grob-parent right-bound X))
|
||||
(stem
|
||||
(if (grob::has-interface right-par 'note-column-interface)
|
||||
(ly:grob-object right-par 'stem)
|
||||
'()))
|
||||
(stem-stencil
|
||||
(if (ly:grob? stem)
|
||||
(ly:grob-property stem 'stencil)
|
||||
#f))
|
||||
(stem-thick
|
||||
(if (ly:stencil? stem-stencil)
|
||||
(interval-length (ly:stencil-extent stem-stencil X))
|
||||
0))
|
||||
(corr-delta-X (- (interval-length X-ext)
|
||||
Y-length
|
||||
blot
|
||||
stem-thick
|
||||
;; mmh, why this value??
|
||||
-0.05))
|
||||
(colors
|
||||
(assoc-get 'colors (ly:grob-property grob 'details)
|
||||
(list 0 .5 .8)))
|
||||
(steps
|
||||
(length colors))
|
||||
(raw-x-coords
|
||||
(iota (1+ (abs steps)) 0 (/ corr-delta-X (abs steps))))
|
||||
(x-coords
|
||||
(map
|
||||
(lambda (e)
|
||||
(+ (car X-ext) Y-length blot e))
|
||||
raw-x-coords)))
|
||||
|
||||
;; create a flat glissando
|
||||
(ly:grob-set-nested-property! grob '(right-bound-info Y) left-Y)
|
||||
|
||||
;; return the stencil of added boxes
|
||||
(ly:stencil-translate-axis
|
||||
(apply
|
||||
ly:stencil-add
|
||||
;; change this to make-grey-filled-box-stencil-list to eleminate curve and just use gradient
|
||||
(make-grey-filled-curve-stencil-list
|
||||
x-coords
|
||||
colors
|
||||
thick
|
||||
'()))
|
||||
;; the actual offset is TODO, hardcoded here
|
||||
3.5
|
||||
Y))
|
||||
#f)))
|
||||
|
||||
#(define (add-gliss m)
|
||||
(case (ly:music-property m 'name)
|
||||
((NoteEvent)
|
||||
(set! (ly:music-property m 'articulations)
|
||||
(append
|
||||
(ly:music-property m 'articulations)
|
||||
(list (make-music 'GlissandoEvent))))
|
||||
m)
|
||||
(else #f)))
|
||||
|
||||
addGliss =
|
||||
#(define-music-function (music)
|
||||
(ly:music?)
|
||||
(map-some-music add-gliss music))
|
||||
|
||||
|
||||
\new Score
|
||||
\with {proportionalNotationDuration = #(ly:make-moment 1 16)}
|
||||
<<
|
||||
\new StaffGroup \with{
|
||||
\override StaffGrouper.staff-staff-spacing =
|
||||
#'((basic-distance . 13)
|
||||
(minimum-distance . 13)
|
||||
(padding . 0)
|
||||
(stretchability . 0))
|
||||
\override StaffGrouper.staffgroup-staff-spacing =
|
||||
#'((basic-distance . 13)
|
||||
(minimum-distance . 13)
|
||||
(padding . 0)
|
||||
(stretchability . 0))
|
||||
}
|
||||
<<
|
||||
|
||||
% uncomment these lines to view harmonics of hl 6
|
||||
% also change systems-per-page to 2 manually above
|
||||
%{
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 6 " "(harm 13) "}
|
||||
shortInstrumentName = #"hl6 (h13) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 33 { \repeat unfold 3 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_6_harm_13.ly"
|
||||
>>
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 6 " "(harm 9) "}
|
||||
shortInstrumentName = #"hl6 (h9) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 33 { \repeat unfold 3 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_6_harm_9.ly"
|
||||
>>
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 6 " "(harm 5) "}
|
||||
shortInstrumentName = #"hl6 (h5) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 33 { \repeat unfold 3 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_6_harm_5.ly"
|
||||
>>
|
||||
%}
|
||||
|
||||
%~~hl6-start~~
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 6 " "(harm 1) "}
|
||||
shortInstrumentName = #"hl6 (h1) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 33 { \repeat unfold 3 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_6_harm_1.ly"
|
||||
>>
|
||||
%~~hl6-end~~
|
||||
>>
|
||||
|
||||
\new StaffGroup \with{
|
||||
\override StaffGrouper.staff-staff-spacing =
|
||||
#'((basic-distance . 9)
|
||||
(minimum-distance . 9)
|
||||
(padding . 0)
|
||||
(stretchability . 0))
|
||||
}
|
||||
<<
|
||||
%~~hl5-start~~
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 5" "(high noise)"}
|
||||
shortInstrumentName = #"hl5 (hn) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 33 { \repeat unfold 3 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_5.ly"
|
||||
>>
|
||||
%~~hl5-end~~
|
||||
|
||||
%~~hl4-start~~
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 4 " "(low noise)"}
|
||||
shortInstrumentName = #"hl4 (ln) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 33 { \repeat unfold 3 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_4.ly"
|
||||
>>
|
||||
%~~hl4-end~~
|
||||
>>
|
||||
>>
|
@ -0,0 +1,298 @@
|
||||
\version "2.19.81"
|
||||
|
||||
% systems-per-page, unfold vars, and strings delimited by tildes
|
||||
% are changed by the Supercollider transcriber
|
||||
|
||||
\paper {
|
||||
#(set-paper-size "a4" 'portrait)
|
||||
top-margin = 1 \cm
|
||||
bottom-margin = 1 \cm
|
||||
left-margin = 2.5 \cm
|
||||
|
||||
top-system-spacing =
|
||||
#'((basic-distance . 25 )
|
||||
(minimum-distance . 25 )
|
||||
(padding . 0 )
|
||||
(stretchability . 0))
|
||||
|
||||
last-bottom-spacing =
|
||||
#'((basic-distance . 15 )
|
||||
(minimum-distance . 15 )
|
||||
(padding . 0 )
|
||||
(stretchability . 0))
|
||||
|
||||
% manually change systems-per-page to 2 if the harmonics of hl 6 are uncommented below
|
||||
systems-per-page = 8
|
||||
|
||||
print-page-number = ##t
|
||||
oddHeaderMarkup = \markup { \on-the-fly #not-first-page "(part - hl 4 - 0111211)" }
|
||||
evenHeaderMarkup = \markup { \on-the-fly #not-first-page "(part - hl 4 - 0111211)" }
|
||||
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 {a lot of tiles (trivial scan)}}
|
||||
subtitle = \markup { \normal-text {0111211}}
|
||||
composer = \markup \left-column {"michael winter" "(cdmx, mx and nashville, usa; 2018)"}
|
||||
piece = \markup { \normal-text {part - hl 4 - 0111211}}
|
||||
tagline = ""
|
||||
}
|
||||
|
||||
#(set-global-staff-size 15)
|
||||
|
||||
\layout {
|
||||
indent = 0.0\cm
|
||||
line-width = 17\cm
|
||||
ragged-last = ##t
|
||||
|
||||
\context {
|
||||
\Score
|
||||
\override BarNumber.extra-offset = #'(0 . 5)
|
||||
\override BarNumber.stencil =
|
||||
#(make-stencil-circler 0.1 0.25 ly:text-interface::print)
|
||||
}
|
||||
\context {
|
||||
\Staff
|
||||
\override StaffSymbol.line-count = #1
|
||||
\override Clef.stencil = #point-stencil
|
||||
\override Clef.space-alist.first-note = #'(extra-space . 1)
|
||||
\remove "Time_signature_engraver"
|
||||
}
|
||||
\context {
|
||||
\Voice
|
||||
\override Glissando.minimum-length = #0
|
||||
\override Glissando.layer = 500
|
||||
\override Glissando.breakable = ##t
|
||||
\override Glissando.bound-details =
|
||||
#'((right
|
||||
(attach-dir . -1)
|
||||
(end-on-accidental . #f)
|
||||
(padding . 0))
|
||||
(right-broken
|
||||
(padding . 0.5))
|
||||
(left-broken
|
||||
(padding . 0.5)
|
||||
(attach-dir . 1))
|
||||
(left
|
||||
(attach-dir . -1)
|
||||
(padding . -0.25)
|
||||
(start-at-dot . #f)))
|
||||
}
|
||||
}
|
||||
|
||||
% this draws a curve and a gradient
|
||||
#(define (make-grey-filled-curve-stencil-list x-coords colors half-thick rl)
|
||||
(if (null? (cdr x-coords))
|
||||
rl
|
||||
(make-grey-filled-curve-stencil-list
|
||||
(cdr x-coords)
|
||||
(cdr colors)
|
||||
half-thick
|
||||
(cons
|
||||
(stencil-with-color
|
||||
(make-filled-box-stencil
|
||||
(interval-widen (cons (car x-coords) (cadr x-coords)) 0.1)
|
||||
(cons (- half-thick) (- 9 (* 10 (car colors)))))
|
||||
(list (car colors) (car colors) (car colors)))
|
||||
rl))))
|
||||
|
||||
% this draws a just a line with a gradient
|
||||
#(define (make-grey-filled-box-stencil-list x-coords colors half-thick rl)
|
||||
(if (null? (cdr x-coords))
|
||||
rl
|
||||
(make-grey-filled-box-stencil-list
|
||||
(cdr x-coords)
|
||||
(cdr colors)
|
||||
half-thick
|
||||
(cons
|
||||
(stencil-with-color
|
||||
(make-filled-box-stencil
|
||||
(interval-widen (cons (car x-coords) (cadr x-coords)) 0.1)
|
||||
(cons (- half-thick) half-thick))
|
||||
(list (car colors) (car colors) (car colors)))
|
||||
rl))))
|
||||
|
||||
#(define my-gliss
|
||||
(lambda (grob)
|
||||
(if (ly:stencil? (ly:line-spanner::print grob))
|
||||
(let* ((stencil (ly:line-spanner::print grob))
|
||||
(X-ext (ly:stencil-extent stencil X))
|
||||
(Y-ext (ly:stencil-extent stencil Y))
|
||||
(Y-length (- (cdr Y-ext) (car Y-ext)))
|
||||
(left-bound-info (ly:grob-property grob 'left-bound-info))
|
||||
(left-Y (assoc-get 'Y left-bound-info))
|
||||
(thick
|
||||
(assoc-get 'thickness (ly:grob-property grob 'details) 0.5))
|
||||
(layout (ly:grob-layout grob))
|
||||
(blot (ly:output-def-lookup layout 'blot-diameter))
|
||||
(right-bound (ly:spanner-bound grob RIGHT))
|
||||
(right-par (ly:grob-parent right-bound X))
|
||||
(stem
|
||||
(if (grob::has-interface right-par 'note-column-interface)
|
||||
(ly:grob-object right-par 'stem)
|
||||
'()))
|
||||
(stem-stencil
|
||||
(if (ly:grob? stem)
|
||||
(ly:grob-property stem 'stencil)
|
||||
#f))
|
||||
(stem-thick
|
||||
(if (ly:stencil? stem-stencil)
|
||||
(interval-length (ly:stencil-extent stem-stencil X))
|
||||
0))
|
||||
(corr-delta-X (- (interval-length X-ext)
|
||||
Y-length
|
||||
blot
|
||||
stem-thick
|
||||
;; mmh, why this value??
|
||||
-0.05))
|
||||
(colors
|
||||
(assoc-get 'colors (ly:grob-property grob 'details)
|
||||
(list 0 .5 .8)))
|
||||
(steps
|
||||
(length colors))
|
||||
(raw-x-coords
|
||||
(iota (1+ (abs steps)) 0 (/ corr-delta-X (abs steps))))
|
||||
(x-coords
|
||||
(map
|
||||
(lambda (e)
|
||||
(+ (car X-ext) Y-length blot e))
|
||||
raw-x-coords)))
|
||||
|
||||
;; create a flat glissando
|
||||
(ly:grob-set-nested-property! grob '(right-bound-info Y) left-Y)
|
||||
|
||||
;; return the stencil of added boxes
|
||||
(ly:stencil-translate-axis
|
||||
(apply
|
||||
ly:stencil-add
|
||||
;; change this to make-grey-filled-box-stencil-list to eleminate curve and just use gradient
|
||||
(make-grey-filled-curve-stencil-list
|
||||
x-coords
|
||||
colors
|
||||
thick
|
||||
'()))
|
||||
;; the actual offset is TODO, hardcoded here
|
||||
3.5
|
||||
Y))
|
||||
#f)))
|
||||
|
||||
#(define (add-gliss m)
|
||||
(case (ly:music-property m 'name)
|
||||
((NoteEvent)
|
||||
(set! (ly:music-property m 'articulations)
|
||||
(append
|
||||
(ly:music-property m 'articulations)
|
||||
(list (make-music 'GlissandoEvent))))
|
||||
m)
|
||||
(else #f)))
|
||||
|
||||
addGliss =
|
||||
#(define-music-function (music)
|
||||
(ly:music?)
|
||||
(map-some-music add-gliss music))
|
||||
|
||||
|
||||
\new Score
|
||||
\with {proportionalNotationDuration = #(ly:make-moment 1 16)}
|
||||
<<
|
||||
\new StaffGroup \with{
|
||||
\override StaffGrouper.staff-staff-spacing =
|
||||
#'((basic-distance . 13)
|
||||
(minimum-distance . 13)
|
||||
(padding . 0)
|
||||
(stretchability . 0))
|
||||
\override StaffGrouper.staffgroup-staff-spacing =
|
||||
#'((basic-distance . 13)
|
||||
(minimum-distance . 13)
|
||||
(padding . 0)
|
||||
(stretchability . 0))
|
||||
}
|
||||
<<
|
||||
|
||||
% uncomment these lines to view harmonics of hl 6
|
||||
% also change systems-per-page to 2 manually above
|
||||
%{
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 6 " "(harm 13) "}
|
||||
shortInstrumentName = #"hl6 (h13) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 17 { \repeat unfold 7 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_6_harm_13.ly"
|
||||
>>
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 6 " "(harm 9) "}
|
||||
shortInstrumentName = #"hl6 (h9) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 17 { \repeat unfold 7 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_6_harm_9.ly"
|
||||
>>
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 6 " "(harm 5) "}
|
||||
shortInstrumentName = #"hl6 (h5) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 17 { \repeat unfold 7 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_6_harm_5.ly"
|
||||
>>
|
||||
%}
|
||||
|
||||
%{~~hl6~~
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 6 " "(harm 1) "}
|
||||
shortInstrumentName = #"hl6 (h1) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 17 { \repeat unfold 7 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_6_harm_1.ly"
|
||||
>>
|
||||
%}
|
||||
>>
|
||||
|
||||
\new StaffGroup \with{
|
||||
\override StaffGrouper.staff-staff-spacing =
|
||||
#'((basic-distance . 9)
|
||||
(minimum-distance . 9)
|
||||
(padding . 0)
|
||||
(stretchability . 0))
|
||||
}
|
||||
<<
|
||||
%{~~hl5~~
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 5" "(high noise)"}
|
||||
shortInstrumentName = #"hl5 (hn) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 17 { \repeat unfold 7 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_5.ly"
|
||||
>>
|
||||
%}
|
||||
|
||||
%~~hl4-start~~
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 4 " "(low noise)"}
|
||||
shortInstrumentName = #"hl4 (ln) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 17 { \repeat unfold 7 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_4.ly"
|
||||
>>
|
||||
%~~hl4-end~~
|
||||
>>
|
||||
>>
|
@ -0,0 +1,298 @@
|
||||
\version "2.19.81"
|
||||
|
||||
% systems-per-page, unfold vars, and strings delimited by tildes
|
||||
% are changed by the Supercollider transcriber
|
||||
|
||||
\paper {
|
||||
#(set-paper-size "a4" 'portrait)
|
||||
top-margin = 1 \cm
|
||||
bottom-margin = 1 \cm
|
||||
left-margin = 2.5 \cm
|
||||
|
||||
top-system-spacing =
|
||||
#'((basic-distance . 25 )
|
||||
(minimum-distance . 25 )
|
||||
(padding . 0 )
|
||||
(stretchability . 0))
|
||||
|
||||
last-bottom-spacing =
|
||||
#'((basic-distance . 15 )
|
||||
(minimum-distance . 15 )
|
||||
(padding . 0 )
|
||||
(stretchability . 0))
|
||||
|
||||
% manually change systems-per-page to 2 if the harmonics of hl 6 are uncommented below
|
||||
systems-per-page = 8
|
||||
|
||||
print-page-number = ##t
|
||||
oddHeaderMarkup = \markup { \on-the-fly #not-first-page "(part - hl 5 - 0111211)" }
|
||||
evenHeaderMarkup = \markup { \on-the-fly #not-first-page "(part - hl 5 - 0111211)" }
|
||||
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 {a lot of tiles (trivial scan)}}
|
||||
subtitle = \markup { \normal-text {0111211}}
|
||||
composer = \markup \left-column {"michael winter" "(cdmx, mx and nashville, usa; 2018)"}
|
||||
piece = \markup { \normal-text {part - hl 5 - 0111211}}
|
||||
tagline = ""
|
||||
}
|
||||
|
||||
#(set-global-staff-size 15)
|
||||
|
||||
\layout {
|
||||
indent = 0.0\cm
|
||||
line-width = 17\cm
|
||||
ragged-last = ##t
|
||||
|
||||
\context {
|
||||
\Score
|
||||
\override BarNumber.extra-offset = #'(0 . 5)
|
||||
\override BarNumber.stencil =
|
||||
#(make-stencil-circler 0.1 0.25 ly:text-interface::print)
|
||||
}
|
||||
\context {
|
||||
\Staff
|
||||
\override StaffSymbol.line-count = #1
|
||||
\override Clef.stencil = #point-stencil
|
||||
\override Clef.space-alist.first-note = #'(extra-space . 1)
|
||||
\remove "Time_signature_engraver"
|
||||
}
|
||||
\context {
|
||||
\Voice
|
||||
\override Glissando.minimum-length = #0
|
||||
\override Glissando.layer = 500
|
||||
\override Glissando.breakable = ##t
|
||||
\override Glissando.bound-details =
|
||||
#'((right
|
||||
(attach-dir . -1)
|
||||
(end-on-accidental . #f)
|
||||
(padding . 0))
|
||||
(right-broken
|
||||
(padding . 0.5))
|
||||
(left-broken
|
||||
(padding . 0.5)
|
||||
(attach-dir . 1))
|
||||
(left
|
||||
(attach-dir . -1)
|
||||
(padding . -0.25)
|
||||
(start-at-dot . #f)))
|
||||
}
|
||||
}
|
||||
|
||||
% this draws a curve and a gradient
|
||||
#(define (make-grey-filled-curve-stencil-list x-coords colors half-thick rl)
|
||||
(if (null? (cdr x-coords))
|
||||
rl
|
||||
(make-grey-filled-curve-stencil-list
|
||||
(cdr x-coords)
|
||||
(cdr colors)
|
||||
half-thick
|
||||
(cons
|
||||
(stencil-with-color
|
||||
(make-filled-box-stencil
|
||||
(interval-widen (cons (car x-coords) (cadr x-coords)) 0.1)
|
||||
(cons (- half-thick) (- 9 (* 10 (car colors)))))
|
||||
(list (car colors) (car colors) (car colors)))
|
||||
rl))))
|
||||
|
||||
% this draws a just a line with a gradient
|
||||
#(define (make-grey-filled-box-stencil-list x-coords colors half-thick rl)
|
||||
(if (null? (cdr x-coords))
|
||||
rl
|
||||
(make-grey-filled-box-stencil-list
|
||||
(cdr x-coords)
|
||||
(cdr colors)
|
||||
half-thick
|
||||
(cons
|
||||
(stencil-with-color
|
||||
(make-filled-box-stencil
|
||||
(interval-widen (cons (car x-coords) (cadr x-coords)) 0.1)
|
||||
(cons (- half-thick) half-thick))
|
||||
(list (car colors) (car colors) (car colors)))
|
||||
rl))))
|
||||
|
||||
#(define my-gliss
|
||||
(lambda (grob)
|
||||
(if (ly:stencil? (ly:line-spanner::print grob))
|
||||
(let* ((stencil (ly:line-spanner::print grob))
|
||||
(X-ext (ly:stencil-extent stencil X))
|
||||
(Y-ext (ly:stencil-extent stencil Y))
|
||||
(Y-length (- (cdr Y-ext) (car Y-ext)))
|
||||
(left-bound-info (ly:grob-property grob 'left-bound-info))
|
||||
(left-Y (assoc-get 'Y left-bound-info))
|
||||
(thick
|
||||
(assoc-get 'thickness (ly:grob-property grob 'details) 0.5))
|
||||
(layout (ly:grob-layout grob))
|
||||
(blot (ly:output-def-lookup layout 'blot-diameter))
|
||||
(right-bound (ly:spanner-bound grob RIGHT))
|
||||
(right-par (ly:grob-parent right-bound X))
|
||||
(stem
|
||||
(if (grob::has-interface right-par 'note-column-interface)
|
||||
(ly:grob-object right-par 'stem)
|
||||
'()))
|
||||
(stem-stencil
|
||||
(if (ly:grob? stem)
|
||||
(ly:grob-property stem 'stencil)
|
||||
#f))
|
||||
(stem-thick
|
||||
(if (ly:stencil? stem-stencil)
|
||||
(interval-length (ly:stencil-extent stem-stencil X))
|
||||
0))
|
||||
(corr-delta-X (- (interval-length X-ext)
|
||||
Y-length
|
||||
blot
|
||||
stem-thick
|
||||
;; mmh, why this value??
|
||||
-0.05))
|
||||
(colors
|
||||
(assoc-get 'colors (ly:grob-property grob 'details)
|
||||
(list 0 .5 .8)))
|
||||
(steps
|
||||
(length colors))
|
||||
(raw-x-coords
|
||||
(iota (1+ (abs steps)) 0 (/ corr-delta-X (abs steps))))
|
||||
(x-coords
|
||||
(map
|
||||
(lambda (e)
|
||||
(+ (car X-ext) Y-length blot e))
|
||||
raw-x-coords)))
|
||||
|
||||
;; create a flat glissando
|
||||
(ly:grob-set-nested-property! grob '(right-bound-info Y) left-Y)
|
||||
|
||||
;; return the stencil of added boxes
|
||||
(ly:stencil-translate-axis
|
||||
(apply
|
||||
ly:stencil-add
|
||||
;; change this to make-grey-filled-box-stencil-list to eleminate curve and just use gradient
|
||||
(make-grey-filled-curve-stencil-list
|
||||
x-coords
|
||||
colors
|
||||
thick
|
||||
'()))
|
||||
;; the actual offset is TODO, hardcoded here
|
||||
3.5
|
||||
Y))
|
||||
#f)))
|
||||
|
||||
#(define (add-gliss m)
|
||||
(case (ly:music-property m 'name)
|
||||
((NoteEvent)
|
||||
(set! (ly:music-property m 'articulations)
|
||||
(append
|
||||
(ly:music-property m 'articulations)
|
||||
(list (make-music 'GlissandoEvent))))
|
||||
m)
|
||||
(else #f)))
|
||||
|
||||
addGliss =
|
||||
#(define-music-function (music)
|
||||
(ly:music?)
|
||||
(map-some-music add-gliss music))
|
||||
|
||||
|
||||
\new Score
|
||||
\with {proportionalNotationDuration = #(ly:make-moment 1 16)}
|
||||
<<
|
||||
\new StaffGroup \with{
|
||||
\override StaffGrouper.staff-staff-spacing =
|
||||
#'((basic-distance . 13)
|
||||
(minimum-distance . 13)
|
||||
(padding . 0)
|
||||
(stretchability . 0))
|
||||
\override StaffGrouper.staffgroup-staff-spacing =
|
||||
#'((basic-distance . 13)
|
||||
(minimum-distance . 13)
|
||||
(padding . 0)
|
||||
(stretchability . 0))
|
||||
}
|
||||
<<
|
||||
|
||||
% uncomment these lines to view harmonics of hl 6
|
||||
% also change systems-per-page to 2 manually above
|
||||
%{
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 6 " "(harm 13) "}
|
||||
shortInstrumentName = #"hl6 (h13) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 17 { \repeat unfold 7 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_6_harm_13.ly"
|
||||
>>
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 6 " "(harm 9) "}
|
||||
shortInstrumentName = #"hl6 (h9) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 17 { \repeat unfold 7 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_6_harm_9.ly"
|
||||
>>
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 6 " "(harm 5) "}
|
||||
shortInstrumentName = #"hl6 (h5) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 17 { \repeat unfold 7 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_6_harm_5.ly"
|
||||
>>
|
||||
%}
|
||||
|
||||
%{~~hl6~~
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 6 " "(harm 1) "}
|
||||
shortInstrumentName = #"hl6 (h1) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 17 { \repeat unfold 7 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_6_harm_1.ly"
|
||||
>>
|
||||
%}
|
||||
>>
|
||||
|
||||
\new StaffGroup \with{
|
||||
\override StaffGrouper.staff-staff-spacing =
|
||||
#'((basic-distance . 9)
|
||||
(minimum-distance . 9)
|
||||
(padding . 0)
|
||||
(stretchability . 0))
|
||||
}
|
||||
<<
|
||||
%~~hl5-start~~
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 5" "(high noise)"}
|
||||
shortInstrumentName = #"hl5 (hn) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 17 { \repeat unfold 7 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_5.ly"
|
||||
>>
|
||||
%~~hl5-end~~
|
||||
|
||||
%{~~hl4~~
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 4 " "(low noise)"}
|
||||
shortInstrumentName = #"hl4 (ln) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 17 { \repeat unfold 7 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_4.ly"
|
||||
>>
|
||||
%}
|
||||
>>
|
||||
>>
|
@ -0,0 +1,298 @@
|
||||
\version "2.19.81"
|
||||
|
||||
% systems-per-page, unfold vars, and strings delimited by tildes
|
||||
% are changed by the Supercollider transcriber
|
||||
|
||||
\paper {
|
||||
#(set-paper-size "a4" 'portrait)
|
||||
top-margin = 1 \cm
|
||||
bottom-margin = 1 \cm
|
||||
left-margin = 2.5 \cm
|
||||
|
||||
top-system-spacing =
|
||||
#'((basic-distance . 25 )
|
||||
(minimum-distance . 25 )
|
||||
(padding . 0 )
|
||||
(stretchability . 0))
|
||||
|
||||
last-bottom-spacing =
|
||||
#'((basic-distance . 15 )
|
||||
(minimum-distance . 15 )
|
||||
(padding . 0 )
|
||||
(stretchability . 0))
|
||||
|
||||
% manually change systems-per-page to 2 if the harmonics of hl 6 are uncommented below
|
||||
systems-per-page = 8
|
||||
|
||||
print-page-number = ##t
|
||||
oddHeaderMarkup = \markup { \on-the-fly #not-first-page "(part - hl 6 - 0111211)" }
|
||||
evenHeaderMarkup = \markup { \on-the-fly #not-first-page "(part - hl 6 - 0111211)" }
|
||||
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 {a lot of tiles (trivial scan)}}
|
||||
subtitle = \markup { \normal-text {0111211}}
|
||||
composer = \markup \left-column {"michael winter" "(cdmx, mx and nashville, usa; 2018)"}
|
||||
piece = \markup { \normal-text {part - hl 6 - 0111211}}
|
||||
tagline = ""
|
||||
}
|
||||
|
||||
#(set-global-staff-size 15)
|
||||
|
||||
\layout {
|
||||
indent = 0.0\cm
|
||||
line-width = 17\cm
|
||||
ragged-last = ##t
|
||||
|
||||
\context {
|
||||
\Score
|
||||
\override BarNumber.extra-offset = #'(0 . 5)
|
||||
\override BarNumber.stencil =
|
||||
#(make-stencil-circler 0.1 0.25 ly:text-interface::print)
|
||||
}
|
||||
\context {
|
||||
\Staff
|
||||
\override StaffSymbol.line-count = #1
|
||||
\override Clef.stencil = #point-stencil
|
||||
\override Clef.space-alist.first-note = #'(extra-space . 1)
|
||||
\remove "Time_signature_engraver"
|
||||
}
|
||||
\context {
|
||||
\Voice
|
||||
\override Glissando.minimum-length = #0
|
||||
\override Glissando.layer = 500
|
||||
\override Glissando.breakable = ##t
|
||||
\override Glissando.bound-details =
|
||||
#'((right
|
||||
(attach-dir . -1)
|
||||
(end-on-accidental . #f)
|
||||
(padding . 0))
|
||||
(right-broken
|
||||
(padding . 0.5))
|
||||
(left-broken
|
||||
(padding . 0.5)
|
||||
(attach-dir . 1))
|
||||
(left
|
||||
(attach-dir . -1)
|
||||
(padding . -0.25)
|
||||
(start-at-dot . #f)))
|
||||
}
|
||||
}
|
||||
|
||||
% this draws a curve and a gradient
|
||||
#(define (make-grey-filled-curve-stencil-list x-coords colors half-thick rl)
|
||||
(if (null? (cdr x-coords))
|
||||
rl
|
||||
(make-grey-filled-curve-stencil-list
|
||||
(cdr x-coords)
|
||||
(cdr colors)
|
||||
half-thick
|
||||
(cons
|
||||
(stencil-with-color
|
||||
(make-filled-box-stencil
|
||||
(interval-widen (cons (car x-coords) (cadr x-coords)) 0.1)
|
||||
(cons (- half-thick) (- 9 (* 10 (car colors)))))
|
||||
(list (car colors) (car colors) (car colors)))
|
||||
rl))))
|
||||
|
||||
% this draws a just a line with a gradient
|
||||
#(define (make-grey-filled-box-stencil-list x-coords colors half-thick rl)
|
||||
(if (null? (cdr x-coords))
|
||||
rl
|
||||
(make-grey-filled-box-stencil-list
|
||||
(cdr x-coords)
|
||||
(cdr colors)
|
||||
half-thick
|
||||
(cons
|
||||
(stencil-with-color
|
||||
(make-filled-box-stencil
|
||||
(interval-widen (cons (car x-coords) (cadr x-coords)) 0.1)
|
||||
(cons (- half-thick) half-thick))
|
||||
(list (car colors) (car colors) (car colors)))
|
||||
rl))))
|
||||
|
||||
#(define my-gliss
|
||||
(lambda (grob)
|
||||
(if (ly:stencil? (ly:line-spanner::print grob))
|
||||
(let* ((stencil (ly:line-spanner::print grob))
|
||||
(X-ext (ly:stencil-extent stencil X))
|
||||
(Y-ext (ly:stencil-extent stencil Y))
|
||||
(Y-length (- (cdr Y-ext) (car Y-ext)))
|
||||
(left-bound-info (ly:grob-property grob 'left-bound-info))
|
||||
(left-Y (assoc-get 'Y left-bound-info))
|
||||
(thick
|
||||
(assoc-get 'thickness (ly:grob-property grob 'details) 0.5))
|
||||
(layout (ly:grob-layout grob))
|
||||
(blot (ly:output-def-lookup layout 'blot-diameter))
|
||||
(right-bound (ly:spanner-bound grob RIGHT))
|
||||
(right-par (ly:grob-parent right-bound X))
|
||||
(stem
|
||||
(if (grob::has-interface right-par 'note-column-interface)
|
||||
(ly:grob-object right-par 'stem)
|
||||
'()))
|
||||
(stem-stencil
|
||||
(if (ly:grob? stem)
|
||||
(ly:grob-property stem 'stencil)
|
||||
#f))
|
||||
(stem-thick
|
||||
(if (ly:stencil? stem-stencil)
|
||||
(interval-length (ly:stencil-extent stem-stencil X))
|
||||
0))
|
||||
(corr-delta-X (- (interval-length X-ext)
|
||||
Y-length
|
||||
blot
|
||||
stem-thick
|
||||
;; mmh, why this value??
|
||||
-0.05))
|
||||
(colors
|
||||
(assoc-get 'colors (ly:grob-property grob 'details)
|
||||
(list 0 .5 .8)))
|
||||
(steps
|
||||
(length colors))
|
||||
(raw-x-coords
|
||||
(iota (1+ (abs steps)) 0 (/ corr-delta-X (abs steps))))
|
||||
(x-coords
|
||||
(map
|
||||
(lambda (e)
|
||||
(+ (car X-ext) Y-length blot e))
|
||||
raw-x-coords)))
|
||||
|
||||
;; create a flat glissando
|
||||
(ly:grob-set-nested-property! grob '(right-bound-info Y) left-Y)
|
||||
|
||||
;; return the stencil of added boxes
|
||||
(ly:stencil-translate-axis
|
||||
(apply
|
||||
ly:stencil-add
|
||||
;; change this to make-grey-filled-box-stencil-list to eleminate curve and just use gradient
|
||||
(make-grey-filled-curve-stencil-list
|
||||
x-coords
|
||||
colors
|
||||
thick
|
||||
'()))
|
||||
;; the actual offset is TODO, hardcoded here
|
||||
3.5
|
||||
Y))
|
||||
#f)))
|
||||
|
||||
#(define (add-gliss m)
|
||||
(case (ly:music-property m 'name)
|
||||
((NoteEvent)
|
||||
(set! (ly:music-property m 'articulations)
|
||||
(append
|
||||
(ly:music-property m 'articulations)
|
||||
(list (make-music 'GlissandoEvent))))
|
||||
m)
|
||||
(else #f)))
|
||||
|
||||
addGliss =
|
||||
#(define-music-function (music)
|
||||
(ly:music?)
|
||||
(map-some-music add-gliss music))
|
||||
|
||||
|
||||
\new Score
|
||||
\with {proportionalNotationDuration = #(ly:make-moment 1 16)}
|
||||
<<
|
||||
\new StaffGroup \with{
|
||||
\override StaffGrouper.staff-staff-spacing =
|
||||
#'((basic-distance . 13)
|
||||
(minimum-distance . 13)
|
||||
(padding . 0)
|
||||
(stretchability . 0))
|
||||
\override StaffGrouper.staffgroup-staff-spacing =
|
||||
#'((basic-distance . 13)
|
||||
(minimum-distance . 13)
|
||||
(padding . 0)
|
||||
(stretchability . 0))
|
||||
}
|
||||
<<
|
||||
|
||||
% uncomment these lines to view harmonics of hl 6
|
||||
% also change systems-per-page to 2 manually above
|
||||
%{
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 6 " "(harm 13) "}
|
||||
shortInstrumentName = #"hl6 (h13) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 33 { \repeat unfold 3 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_6_harm_13.ly"
|
||||
>>
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 6 " "(harm 9) "}
|
||||
shortInstrumentName = #"hl6 (h9) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 33 { \repeat unfold 3 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_6_harm_9.ly"
|
||||
>>
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 6 " "(harm 5) "}
|
||||
shortInstrumentName = #"hl6 (h5) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 33 { \repeat unfold 3 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_6_harm_5.ly"
|
||||
>>
|
||||
%}
|
||||
|
||||
%~~hl6-start~~
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 6 " "(harm 1) "}
|
||||
shortInstrumentName = #"hl6 (h1) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 33 { \repeat unfold 3 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_6_harm_1.ly"
|
||||
>>
|
||||
%~~hl6-end~~
|
||||
>>
|
||||
|
||||
\new StaffGroup \with{
|
||||
\override StaffGrouper.staff-staff-spacing =
|
||||
#'((basic-distance . 9)
|
||||
(minimum-distance . 9)
|
||||
(padding . 0)
|
||||
(stretchability . 0))
|
||||
}
|
||||
<<
|
||||
%{~~hl5~~
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 5" "(high noise)"}
|
||||
shortInstrumentName = #"hl5 (hn) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 33 { \repeat unfold 3 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_5.ly"
|
||||
>>
|
||||
%}
|
||||
|
||||
%{~~hl4~~
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 4 " "(low noise)"}
|
||||
shortInstrumentName = #"hl4 (ln) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 33 { \repeat unfold 3 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_4.ly"
|
||||
>>
|
||||
%}
|
||||
>>
|
||||
>>
|
@ -0,0 +1,259 @@
|
||||
{
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'1 ^0 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'1 ^0 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'1 ^0
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'1 ^0 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'1 ^0 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'1 ^0
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'1 ^0
|
||||
|
|
||||
b'1 ^1 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^0
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'1 ^0
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'1 ^0
|
||||
|
|
||||
b'1 ^1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^0
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'1 ^0
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'1 ^0
|
||||
|
|
||||
b'1 ^1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^0
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'1 ^0
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'1 ^0 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^1 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^0 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'1 ^0
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'1 ^0 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'1 ^0 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'1 ^0
|
||||
|
|
||||
b'1 ^1 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^0
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'1 ^0 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'1 ^0
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'1 ^0 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^1 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^0
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'1 ^0 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^1 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^0
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'1 ^0
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'1 ^0
|
||||
|
|
||||
b'1 ^1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^0 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'1 ^0
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'1 ^0
|
||||
|
|
||||
b'1 ^1 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^0
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'1 ^0
|
||||
|
|
||||
b'1 ^1 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^0
|
||||
|
|
||||
b'1 ^1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^0
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'1 ^0
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'1 ^0 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'1 ^0 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'1 ^0 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'1 ^0 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'1 ^0 \bar "|." \stopStaff \hide b'1}
|
@ -0,0 +1,259 @@
|
||||
{
|
||||
|
|
||||
b'4 ^1 b'2 ^0 b'4 ^1
|
||||
|
|
||||
b'2 ^0 b'4 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'4 ^1 b'2 ^0 b'4 ^1
|
||||
|
|
||||
b'4 ^0 b'4 ^1 b'2 ^0
|
||||
|
|
||||
b'4 ^1 b'2 ^0 b'4 ^1
|
||||
|
|
||||
b'1 ^0 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'4 ^1 b'4 ^0 b'4 ^1 b'4 ^0
|
||||
|
|
||||
b'2 ^1 b'4 ^0 b'4 ^1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'4 b'4 ^0 b'4 ^1 b'4 ^0
|
||||
|
|
||||
b'4 ^1 b'4 ^0 b'2 ^1
|
||||
|
|
||||
b'4 ^0 b'4 ^1 b'4 ^0 b'4 ^1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'4 b'4 ^0 b'4 ^1 b'4 ^0
|
||||
|
|
||||
b'4 ^1 b'4 ^0 b'2 ^1 ~
|
||||
|
|
||||
b'4 b'2 ^0 b'4 ^1
|
||||
|
|
||||
b'4 ^0 b'4 ^1 b'4 ^0 b'4 ^1 ~
|
||||
|
|
||||
b'2 b'4 ^0 b'4 ^1
|
||||
|
|
||||
b'4 ^0 b'4 ^1 b'4 ^0 b'4 ^1 ~
|
||||
|
|
||||
b'4 b'2 ^0 b'4 ^1 ~
|
||||
|
|
||||
b'4 b'2 ^0 b'4 ^1 ~
|
||||
|
|
||||
b'4 b'2 ^0 b'4 ^1
|
||||
|
|
||||
b'4 ^0 b'4 ^1 b'2 ^0 ~
|
||||
|
|
||||
b'4 b'2 ^1 b'4 ^0
|
||||
|
|
||||
b'4 ^1 b'2 ^0 b'4 ^1
|
||||
|
|
||||
b'2 ^0 b'4 ^1 b'4 ^0
|
||||
|
|
||||
b'4 ^1 b'2 ^0 b'4 ^1
|
||||
|
|
||||
b'4 ^0 b'2 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'4 b'2 ^1 b'4 ^0
|
||||
|
|
||||
b'4 ^1 b'2 ^0 b'4 ^1
|
||||
|
|
||||
b'4 ^0 b'4 ^1 b'2 ^0
|
||||
|
|
||||
b'4 ^1 b'2 ^0 b'4 ^1
|
||||
|
|
||||
b'4 ^0 b'2 ^1 b'4 ^0
|
||||
|
|
||||
b'4 ^1 b'2 ^0 b'4 ^1
|
||||
|
|
||||
b'4 ^0 b'4 ^1 b'2 ^0
|
||||
|
|
||||
b'4 ^1 b'2 ^0 b'4 ^1 ~
|
||||
|
|
||||
b'4 b'2 ^0 b'4 ^1 ~
|
||||
|
|
||||
b'4 b'4 ^0 b'4 ^1 b'4 ^0
|
||||
|
|
||||
b'4 ^1 b'4 ^0 b'2 ^1 ~
|
||||
|
|
||||
b'4 b'4 ^0 b'4 ^1 b'4 ^0
|
||||
|
|
||||
b'4 ^1 b'2 ^0 b'4 ^1 ~
|
||||
|
|
||||
b'4 b'4 ^0 b'4 ^1 b'4 ^0
|
||||
|
|
||||
b'4 ^1 b'4 ^0 b'2 ^1 ~
|
||||
|
|
||||
b'4 b'4 ^0 b'4 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'4 b'4 ^1 b'4 ^0 b'4 ^1 ~
|
||||
|
|
||||
b'4 b'4 ^0 b'4 ^1 b'4 ^0
|
||||
|
|
||||
b'2 ^1 b'4 ^0 b'4 ^1
|
||||
|
|
||||
b'4 ^0 b'4 ^1 b'4 ^0 b'4 ^1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'4 b'4 ^0 b'4 ^1 b'4 ^0
|
||||
|
|
||||
b'2 ^1 b'4 ^0 b'4 ^1
|
||||
|
|
||||
b'4 ^0 b'4 ^1 b'4 ^0 b'4 ^1 ~
|
||||
|
|
||||
b'4 b'4 ^0 b'4 ^1 b'4 ^0
|
||||
|
|
||||
b'4 ^1 b'2 ^0 b'4 ^1
|
||||
|
|
||||
b'2 ^0 b'4 ^1 b'4 ^0
|
||||
|
|
||||
b'4 ^1 b'2 ^0 b'4 ^1
|
||||
|
|
||||
b'1 ^0
|
||||
|
|
||||
b'4 ^1 b'2 ^0 b'4 ^1
|
||||
|
|
||||
b'2 ^0 b'4 ^1 b'4 ^0
|
||||
|
|
||||
b'4 ^1 b'2 ^0 b'4 ^1 ~
|
||||
|
|
||||
b'4 b'2 ^0 b'4 ^1 ~
|
||||
|
|
||||
b'4 b'2 ^0 b'4 ^1
|
||||
|
|
||||
b'2 ^0 b'4 ^1 b'4 ^0
|
||||
|
|
||||
b'4 ^1 b'2 ^0 b'4 ^1
|
||||
|
|
||||
b'1 ^0
|
||||
|
|
||||
b'4 ^1 b'2 ^0 b'4 ^1 ~
|
||||
|
|
||||
b'4 b'2 ^0 b'4 ^1
|
||||
|
|
||||
b'4 ^0 b'4 ^1 b'2 ^0
|
||||
|
|
||||
b'4 ^1 b'2 ^0 b'4 ^1 ~
|
||||
|
|
||||
b'4 b'4 ^0 b'4 ^1 b'4 ^0
|
||||
|
|
||||
b'2 ^1 b'4 ^0 b'4 ^1
|
||||
|
|
||||
b'4 ^0 b'4 ^1 b'4 ^0 b'4 ^1 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'4 ^0 b'4 ^1 b'4 ^0 b'4 ^1 ~
|
||||
|
|
||||
b'4 b'4 ^0 b'4 ^1 b'4 ^0
|
||||
|
|
||||
b'4 ^1 b'4 ^0 b'2 ^1
|
||||
|
|
||||
b'4 ^0 b'4 ^1 b'4 ^0 b'4 ^1 ~
|
||||
|
|
||||
b'4 b'4 ^0 b'4 ^1 b'4 ^0
|
||||
|
|
||||
b'4 ^1 b'4 ^0 b'2 ^1 ~
|
||||
|
|
||||
b'4 b'4 ^0 b'4 ^1 b'4 ^0
|
||||
|
|
||||
b'4 ^1 b'2 ^0 b'4 ^1 ~
|
||||
|
|
||||
b'4 b'4 ^0 b'4 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'4 b'4 ^1 b'4 ^0 b'4 ^1 ~
|
||||
|
|
||||
b'2 b'4 ^0 b'4 ^1
|
||||
|
|
||||
b'4 ^0 b'4 ^1 b'4 ^0 b'4 ^1 ~
|
||||
|
|
||||
b'4 b'2 ^0 b'4 ^1
|
||||
|
|
||||
b'4 ^0 b'4 ^1 b'2 ^0
|
||||
|
|
||||
b'4 ^1 b'2 ^0 b'4 ^1
|
||||
|
|
||||
b'4 ^0 b'2 ^1 b'4 ^0
|
||||
|
|
||||
b'4 ^1 b'2 ^0 b'4 ^1 ~
|
||||
|
|
||||
b'4 b'2 ^0 b'4 ^1
|
||||
|
|
||||
b'2 ^0 b'4 ^1 b'4 ^0
|
||||
|
|
||||
b'4 ^1 b'2 ^0 b'4 ^1 ~
|
||||
|
|
||||
b'4 b'2 ^0 b'4 ^1
|
||||
|
|
||||
b'4 ^0 b'4 ^1 b'2 ^0 ~
|
||||
|
|
||||
b'4 b'2 ^1 b'4 ^0
|
||||
|
|
||||
b'4 ^1 b'2 ^0 b'4 ^1
|
||||
|
|
||||
b'4 ^0 b'2 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'4 b'2 ^1 b'4 ^0
|
||||
|
|
||||
b'4 ^1 b'2 ^0 b'4 ^1
|
||||
|
|
||||
b'4 ^0 b'4 ^1 b'2 ^0
|
||||
|
|
||||
b'4 ^1 b'4 ^0 b'4 ^1 b'4 ^0
|
||||
|
|
||||
b'4 ^1 b'4 ^0 b'2 ^1 ~
|
||||
|
|
||||
b'4 b'2 ^0 b'4 ^1
|
||||
|
|
||||
b'4 ^0 b'4 ^1 b'4 ^0 b'4 ^1 ~
|
||||
|
|
||||
b'4 b'2 ^0 b'4 ^1 ~
|
||||
|
|
||||
b'4 b'2 ^0 b'4 ^1 ~
|
||||
|
|
||||
b'4 b'4 ^0 b'4 ^1 b'4 ^0
|
||||
|
|
||||
b'4 ^1 b'4 ^0 b'2 ^1 ~
|
||||
|
|
||||
b'4 b'4 ^0 b'4 ^1 b'4 ^0
|
||||
|
|
||||
b'2 ^1 b'4 ^0 b'4 ^1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'4 b'4 ^0 b'4 ^1 b'4 ^0
|
||||
|
|
||||
b'1 ^1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'4 b'4 ^0 b'4 ^1 b'4 ^0
|
||||
|
|
||||
b'2 ^1 b'4 ^0 b'4 ^1 ~
|
||||
|
|
||||
b'4 b'2 ^0 b'4 ^1
|
||||
|
|
||||
b'2 ^0 b'4 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'4 ^1 b'2 ^0 b'4 ^1
|
||||
|
|
||||
b'1 ^0 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'4 ^1 b'2 ^0 b'4 ^1
|
||||
|
|
||||
b'2 ^0 b'4 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'1 \bar "|." \stopStaff \hide b'1}
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -0,0 +1,298 @@
|
||||
\version "2.19.81"
|
||||
|
||||
% systems-per-page, unfold vars, and strings delimited by tildes
|
||||
% are changed by the Supercollider transcriber
|
||||
|
||||
\paper {
|
||||
#(set-paper-size "a4" 'portrait)
|
||||
top-margin = 1 \cm
|
||||
bottom-margin = 1 \cm
|
||||
left-margin = 2.5 \cm
|
||||
|
||||
top-system-spacing =
|
||||
#'((basic-distance . 25 )
|
||||
(minimum-distance . 25 )
|
||||
(padding . 0 )
|
||||
(stretchability . 0))
|
||||
|
||||
last-bottom-spacing =
|
||||
#'((basic-distance . 15 )
|
||||
(minimum-distance . 15 )
|
||||
(padding . 0 )
|
||||
(stretchability . 0))
|
||||
|
||||
% manually change systems-per-page to 2 if the harmonics of hl 6 are uncommented below
|
||||
systems-per-page = 4
|
||||
|
||||
print-page-number = ##t
|
||||
oddHeaderMarkup = \markup { \on-the-fly #not-first-page "(master score - 2101000)" }
|
||||
evenHeaderMarkup = \markup { \on-the-fly #not-first-page "(master score - 2101000)" }
|
||||
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 {a lot of tiles (trivial scan)}}
|
||||
subtitle = \markup { \normal-text {2101000}}
|
||||
composer = \markup \left-column {"michael winter" "(cdmx, mx and nashville, usa; 2018)"}
|
||||
piece = \markup { \normal-text {master score - 2101000}}
|
||||
tagline = ""
|
||||
}
|
||||
|
||||
#(set-global-staff-size 15)
|
||||
|
||||
\layout {
|
||||
indent = 0.0\cm
|
||||
line-width = 17\cm
|
||||
ragged-last = ##t
|
||||
|
||||
\context {
|
||||
\Score
|
||||
\override BarNumber.extra-offset = #'(0 . 5)
|
||||
\override BarNumber.stencil =
|
||||
#(make-stencil-circler 0.1 0.25 ly:text-interface::print)
|
||||
}
|
||||
\context {
|
||||
\Staff
|
||||
\override StaffSymbol.line-count = #1
|
||||
\override Clef.stencil = #point-stencil
|
||||
\override Clef.space-alist.first-note = #'(extra-space . 1)
|
||||
\remove "Time_signature_engraver"
|
||||
}
|
||||
\context {
|
||||
\Voice
|
||||
\override Glissando.minimum-length = #0
|
||||
\override Glissando.layer = 500
|
||||
\override Glissando.breakable = ##t
|
||||
\override Glissando.bound-details =
|
||||
#'((right
|
||||
(attach-dir . -1)
|
||||
(end-on-accidental . #f)
|
||||
(padding . 0))
|
||||
(right-broken
|
||||
(padding . 0.5))
|
||||
(left-broken
|
||||
(padding . 0.5)
|
||||
(attach-dir . 1))
|
||||
(left
|
||||
(attach-dir . -1)
|
||||
(padding . -0.25)
|
||||
(start-at-dot . #f)))
|
||||
}
|
||||
}
|
||||
|
||||
% this draws a curve and a gradient
|
||||
#(define (make-grey-filled-curve-stencil-list x-coords colors half-thick rl)
|
||||
(if (null? (cdr x-coords))
|
||||
rl
|
||||
(make-grey-filled-curve-stencil-list
|
||||
(cdr x-coords)
|
||||
(cdr colors)
|
||||
half-thick
|
||||
(cons
|
||||
(stencil-with-color
|
||||
(make-filled-box-stencil
|
||||
(interval-widen (cons (car x-coords) (cadr x-coords)) 0.1)
|
||||
(cons (- half-thick) (- 9 (* 10 (car colors)))))
|
||||
(list (car colors) (car colors) (car colors)))
|
||||
rl))))
|
||||
|
||||
% this draws a just a line with a gradient
|
||||
#(define (make-grey-filled-box-stencil-list x-coords colors half-thick rl)
|
||||
(if (null? (cdr x-coords))
|
||||
rl
|
||||
(make-grey-filled-box-stencil-list
|
||||
(cdr x-coords)
|
||||
(cdr colors)
|
||||
half-thick
|
||||
(cons
|
||||
(stencil-with-color
|
||||
(make-filled-box-stencil
|
||||
(interval-widen (cons (car x-coords) (cadr x-coords)) 0.1)
|
||||
(cons (- half-thick) half-thick))
|
||||
(list (car colors) (car colors) (car colors)))
|
||||
rl))))
|
||||
|
||||
#(define my-gliss
|
||||
(lambda (grob)
|
||||
(if (ly:stencil? (ly:line-spanner::print grob))
|
||||
(let* ((stencil (ly:line-spanner::print grob))
|
||||
(X-ext (ly:stencil-extent stencil X))
|
||||
(Y-ext (ly:stencil-extent stencil Y))
|
||||
(Y-length (- (cdr Y-ext) (car Y-ext)))
|
||||
(left-bound-info (ly:grob-property grob 'left-bound-info))
|
||||
(left-Y (assoc-get 'Y left-bound-info))
|
||||
(thick
|
||||
(assoc-get 'thickness (ly:grob-property grob 'details) 0.5))
|
||||
(layout (ly:grob-layout grob))
|
||||
(blot (ly:output-def-lookup layout 'blot-diameter))
|
||||
(right-bound (ly:spanner-bound grob RIGHT))
|
||||
(right-par (ly:grob-parent right-bound X))
|
||||
(stem
|
||||
(if (grob::has-interface right-par 'note-column-interface)
|
||||
(ly:grob-object right-par 'stem)
|
||||
'()))
|
||||
(stem-stencil
|
||||
(if (ly:grob? stem)
|
||||
(ly:grob-property stem 'stencil)
|
||||
#f))
|
||||
(stem-thick
|
||||
(if (ly:stencil? stem-stencil)
|
||||
(interval-length (ly:stencil-extent stem-stencil X))
|
||||
0))
|
||||
(corr-delta-X (- (interval-length X-ext)
|
||||
Y-length
|
||||
blot
|
||||
stem-thick
|
||||
;; mmh, why this value??
|
||||
-0.05))
|
||||
(colors
|
||||
(assoc-get 'colors (ly:grob-property grob 'details)
|
||||
(list 0 .5 .8)))
|
||||
(steps
|
||||
(length colors))
|
||||
(raw-x-coords
|
||||
(iota (1+ (abs steps)) 0 (/ corr-delta-X (abs steps))))
|
||||
(x-coords
|
||||
(map
|
||||
(lambda (e)
|
||||
(+ (car X-ext) Y-length blot e))
|
||||
raw-x-coords)))
|
||||
|
||||
;; create a flat glissando
|
||||
(ly:grob-set-nested-property! grob '(right-bound-info Y) left-Y)
|
||||
|
||||
;; return the stencil of added boxes
|
||||
(ly:stencil-translate-axis
|
||||
(apply
|
||||
ly:stencil-add
|
||||
;; change this to make-grey-filled-box-stencil-list to eleminate curve and just use gradient
|
||||
(make-grey-filled-curve-stencil-list
|
||||
x-coords
|
||||
colors
|
||||
thick
|
||||
'()))
|
||||
;; the actual offset is TODO, hardcoded here
|
||||
3.5
|
||||
Y))
|
||||
#f)))
|
||||
|
||||
#(define (add-gliss m)
|
||||
(case (ly:music-property m 'name)
|
||||
((NoteEvent)
|
||||
(set! (ly:music-property m 'articulations)
|
||||
(append
|
||||
(ly:music-property m 'articulations)
|
||||
(list (make-music 'GlissandoEvent))))
|
||||
m)
|
||||
(else #f)))
|
||||
|
||||
addGliss =
|
||||
#(define-music-function (music)
|
||||
(ly:music?)
|
||||
(map-some-music add-gliss music))
|
||||
|
||||
|
||||
\new Score
|
||||
\with {proportionalNotationDuration = #(ly:make-moment 1 16)}
|
||||
<<
|
||||
\new StaffGroup \with{
|
||||
\override StaffGrouper.staff-staff-spacing =
|
||||
#'((basic-distance . 13)
|
||||
(minimum-distance . 13)
|
||||
(padding . 0)
|
||||
(stretchability . 0))
|
||||
\override StaffGrouper.staffgroup-staff-spacing =
|
||||
#'((basic-distance . 13)
|
||||
(minimum-distance . 13)
|
||||
(padding . 0)
|
||||
(stretchability . 0))
|
||||
}
|
||||
<<
|
||||
|
||||
% uncomment these lines to view harmonics of hl 6
|
||||
% also change systems-per-page to 2 manually above
|
||||
%{
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 6 " "(harm 13) "}
|
||||
shortInstrumentName = #"hl6 (h13) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 33 { \repeat unfold 3 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_6_harm_13.ly"
|
||||
>>
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 6 " "(harm 9) "}
|
||||
shortInstrumentName = #"hl6 (h9) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 33 { \repeat unfold 3 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_6_harm_9.ly"
|
||||
>>
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 6 " "(harm 5) "}
|
||||
shortInstrumentName = #"hl6 (h5) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 33 { \repeat unfold 3 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_6_harm_5.ly"
|
||||
>>
|
||||
%}
|
||||
|
||||
%~~hl6-start~~
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 6 " "(harm 1) "}
|
||||
shortInstrumentName = #"hl6 (h1) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 33 { \repeat unfold 3 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_6_harm_1.ly"
|
||||
>>
|
||||
%~~hl6-end~~
|
||||
>>
|
||||
|
||||
\new StaffGroup \with{
|
||||
\override StaffGrouper.staff-staff-spacing =
|
||||
#'((basic-distance . 9)
|
||||
(minimum-distance . 9)
|
||||
(padding . 0)
|
||||
(stretchability . 0))
|
||||
}
|
||||
<<
|
||||
%~~hl5-start~~
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 5" "(high noise)"}
|
||||
shortInstrumentName = #"hl5 (hn) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 33 { \repeat unfold 3 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_5.ly"
|
||||
>>
|
||||
%~~hl5-end~~
|
||||
|
||||
%~~hl4-start~~
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 4 " "(low noise)"}
|
||||
shortInstrumentName = #"hl4 (ln) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 33 { \repeat unfold 3 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_4.ly"
|
||||
>>
|
||||
%~~hl4-end~~
|
||||
>>
|
||||
>>
|
@ -0,0 +1,298 @@
|
||||
\version "2.19.81"
|
||||
|
||||
% systems-per-page, unfold vars, and strings delimited by tildes
|
||||
% are changed by the Supercollider transcriber
|
||||
|
||||
\paper {
|
||||
#(set-paper-size "a4" 'portrait)
|
||||
top-margin = 1 \cm
|
||||
bottom-margin = 1 \cm
|
||||
left-margin = 2.5 \cm
|
||||
|
||||
top-system-spacing =
|
||||
#'((basic-distance . 25 )
|
||||
(minimum-distance . 25 )
|
||||
(padding . 0 )
|
||||
(stretchability . 0))
|
||||
|
||||
last-bottom-spacing =
|
||||
#'((basic-distance . 15 )
|
||||
(minimum-distance . 15 )
|
||||
(padding . 0 )
|
||||
(stretchability . 0))
|
||||
|
||||
% manually change systems-per-page to 2 if the harmonics of hl 6 are uncommented below
|
||||
systems-per-page = 8
|
||||
|
||||
print-page-number = ##t
|
||||
oddHeaderMarkup = \markup { \on-the-fly #not-first-page "(part - hl 4 - 2101000)" }
|
||||
evenHeaderMarkup = \markup { \on-the-fly #not-first-page "(part - hl 4 - 2101000)" }
|
||||
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 {a lot of tiles (trivial scan)}}
|
||||
subtitle = \markup { \normal-text {2101000}}
|
||||
composer = \markup \left-column {"michael winter" "(cdmx, mx and nashville, usa; 2018)"}
|
||||
piece = \markup { \normal-text {part - hl 4 - 2101000}}
|
||||
tagline = ""
|
||||
}
|
||||
|
||||
#(set-global-staff-size 15)
|
||||
|
||||
\layout {
|
||||
indent = 0.0\cm
|
||||
line-width = 17\cm
|
||||
ragged-last = ##t
|
||||
|
||||
\context {
|
||||
\Score
|
||||
\override BarNumber.extra-offset = #'(0 . 5)
|
||||
\override BarNumber.stencil =
|
||||
#(make-stencil-circler 0.1 0.25 ly:text-interface::print)
|
||||
}
|
||||
\context {
|
||||
\Staff
|
||||
\override StaffSymbol.line-count = #1
|
||||
\override Clef.stencil = #point-stencil
|
||||
\override Clef.space-alist.first-note = #'(extra-space . 1)
|
||||
\remove "Time_signature_engraver"
|
||||
}
|
||||
\context {
|
||||
\Voice
|
||||
\override Glissando.minimum-length = #0
|
||||
\override Glissando.layer = 500
|
||||
\override Glissando.breakable = ##t
|
||||
\override Glissando.bound-details =
|
||||
#'((right
|
||||
(attach-dir . -1)
|
||||
(end-on-accidental . #f)
|
||||
(padding . 0))
|
||||
(right-broken
|
||||
(padding . 0.5))
|
||||
(left-broken
|
||||
(padding . 0.5)
|
||||
(attach-dir . 1))
|
||||
(left
|
||||
(attach-dir . -1)
|
||||
(padding . -0.25)
|
||||
(start-at-dot . #f)))
|
||||
}
|
||||
}
|
||||
|
||||
% this draws a curve and a gradient
|
||||
#(define (make-grey-filled-curve-stencil-list x-coords colors half-thick rl)
|
||||
(if (null? (cdr x-coords))
|
||||
rl
|
||||
(make-grey-filled-curve-stencil-list
|
||||
(cdr x-coords)
|
||||
(cdr colors)
|
||||
half-thick
|
||||
(cons
|
||||
(stencil-with-color
|
||||
(make-filled-box-stencil
|
||||
(interval-widen (cons (car x-coords) (cadr x-coords)) 0.1)
|
||||
(cons (- half-thick) (- 9 (* 10 (car colors)))))
|
||||
(list (car colors) (car colors) (car colors)))
|
||||
rl))))
|
||||
|
||||
% this draws a just a line with a gradient
|
||||
#(define (make-grey-filled-box-stencil-list x-coords colors half-thick rl)
|
||||
(if (null? (cdr x-coords))
|
||||
rl
|
||||
(make-grey-filled-box-stencil-list
|
||||
(cdr x-coords)
|
||||
(cdr colors)
|
||||
half-thick
|
||||
(cons
|
||||
(stencil-with-color
|
||||
(make-filled-box-stencil
|
||||
(interval-widen (cons (car x-coords) (cadr x-coords)) 0.1)
|
||||
(cons (- half-thick) half-thick))
|
||||
(list (car colors) (car colors) (car colors)))
|
||||
rl))))
|
||||
|
||||
#(define my-gliss
|
||||
(lambda (grob)
|
||||
(if (ly:stencil? (ly:line-spanner::print grob))
|
||||
(let* ((stencil (ly:line-spanner::print grob))
|
||||
(X-ext (ly:stencil-extent stencil X))
|
||||
(Y-ext (ly:stencil-extent stencil Y))
|
||||
(Y-length (- (cdr Y-ext) (car Y-ext)))
|
||||
(left-bound-info (ly:grob-property grob 'left-bound-info))
|
||||
(left-Y (assoc-get 'Y left-bound-info))
|
||||
(thick
|
||||
(assoc-get 'thickness (ly:grob-property grob 'details) 0.5))
|
||||
(layout (ly:grob-layout grob))
|
||||
(blot (ly:output-def-lookup layout 'blot-diameter))
|
||||
(right-bound (ly:spanner-bound grob RIGHT))
|
||||
(right-par (ly:grob-parent right-bound X))
|
||||
(stem
|
||||
(if (grob::has-interface right-par 'note-column-interface)
|
||||
(ly:grob-object right-par 'stem)
|
||||
'()))
|
||||
(stem-stencil
|
||||
(if (ly:grob? stem)
|
||||
(ly:grob-property stem 'stencil)
|
||||
#f))
|
||||
(stem-thick
|
||||
(if (ly:stencil? stem-stencil)
|
||||
(interval-length (ly:stencil-extent stem-stencil X))
|
||||
0))
|
||||
(corr-delta-X (- (interval-length X-ext)
|
||||
Y-length
|
||||
blot
|
||||
stem-thick
|
||||
;; mmh, why this value??
|
||||
-0.05))
|
||||
(colors
|
||||
(assoc-get 'colors (ly:grob-property grob 'details)
|
||||
(list 0 .5 .8)))
|
||||
(steps
|
||||
(length colors))
|
||||
(raw-x-coords
|
||||
(iota (1+ (abs steps)) 0 (/ corr-delta-X (abs steps))))
|
||||
(x-coords
|
||||
(map
|
||||
(lambda (e)
|
||||
(+ (car X-ext) Y-length blot e))
|
||||
raw-x-coords)))
|
||||
|
||||
;; create a flat glissando
|
||||
(ly:grob-set-nested-property! grob '(right-bound-info Y) left-Y)
|
||||
|
||||
;; return the stencil of added boxes
|
||||
(ly:stencil-translate-axis
|
||||
(apply
|
||||
ly:stencil-add
|
||||
;; change this to make-grey-filled-box-stencil-list to eleminate curve and just use gradient
|
||||
(make-grey-filled-curve-stencil-list
|
||||
x-coords
|
||||
colors
|
||||
thick
|
||||
'()))
|
||||
;; the actual offset is TODO, hardcoded here
|
||||
3.5
|
||||
Y))
|
||||
#f)))
|
||||
|
||||
#(define (add-gliss m)
|
||||
(case (ly:music-property m 'name)
|
||||
((NoteEvent)
|
||||
(set! (ly:music-property m 'articulations)
|
||||
(append
|
||||
(ly:music-property m 'articulations)
|
||||
(list (make-music 'GlissandoEvent))))
|
||||
m)
|
||||
(else #f)))
|
||||
|
||||
addGliss =
|
||||
#(define-music-function (music)
|
||||
(ly:music?)
|
||||
(map-some-music add-gliss music))
|
||||
|
||||
|
||||
\new Score
|
||||
\with {proportionalNotationDuration = #(ly:make-moment 1 16)}
|
||||
<<
|
||||
\new StaffGroup \with{
|
||||
\override StaffGrouper.staff-staff-spacing =
|
||||
#'((basic-distance . 13)
|
||||
(minimum-distance . 13)
|
||||
(padding . 0)
|
||||
(stretchability . 0))
|
||||
\override StaffGrouper.staffgroup-staff-spacing =
|
||||
#'((basic-distance . 13)
|
||||
(minimum-distance . 13)
|
||||
(padding . 0)
|
||||
(stretchability . 0))
|
||||
}
|
||||
<<
|
||||
|
||||
% uncomment these lines to view harmonics of hl 6
|
||||
% also change systems-per-page to 2 manually above
|
||||
%{
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 6 " "(harm 13) "}
|
||||
shortInstrumentName = #"hl6 (h13) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 17 { \repeat unfold 7 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_6_harm_13.ly"
|
||||
>>
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 6 " "(harm 9) "}
|
||||
shortInstrumentName = #"hl6 (h9) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 17 { \repeat unfold 7 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_6_harm_9.ly"
|
||||
>>
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 6 " "(harm 5) "}
|
||||
shortInstrumentName = #"hl6 (h5) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 17 { \repeat unfold 7 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_6_harm_5.ly"
|
||||
>>
|
||||
%}
|
||||
|
||||
%{~~hl6~~
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 6 " "(harm 1) "}
|
||||
shortInstrumentName = #"hl6 (h1) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 17 { \repeat unfold 7 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_6_harm_1.ly"
|
||||
>>
|
||||
%}
|
||||
>>
|
||||
|
||||
\new StaffGroup \with{
|
||||
\override StaffGrouper.staff-staff-spacing =
|
||||
#'((basic-distance . 9)
|
||||
(minimum-distance . 9)
|
||||
(padding . 0)
|
||||
(stretchability . 0))
|
||||
}
|
||||
<<
|
||||
%{~~hl5~~
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 5" "(high noise)"}
|
||||
shortInstrumentName = #"hl5 (hn) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 17 { \repeat unfold 7 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_5.ly"
|
||||
>>
|
||||
%}
|
||||
|
||||
%~~hl4-start~~
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 4 " "(low noise)"}
|
||||
shortInstrumentName = #"hl4 (ln) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 17 { \repeat unfold 7 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_4.ly"
|
||||
>>
|
||||
%~~hl4-end~~
|
||||
>>
|
||||
>>
|
@ -0,0 +1,298 @@
|
||||
\version "2.19.81"
|
||||
|
||||
% systems-per-page, unfold vars, and strings delimited by tildes
|
||||
% are changed by the Supercollider transcriber
|
||||
|
||||
\paper {
|
||||
#(set-paper-size "a4" 'portrait)
|
||||
top-margin = 1 \cm
|
||||
bottom-margin = 1 \cm
|
||||
left-margin = 2.5 \cm
|
||||
|
||||
top-system-spacing =
|
||||
#'((basic-distance . 25 )
|
||||
(minimum-distance . 25 )
|
||||
(padding . 0 )
|
||||
(stretchability . 0))
|
||||
|
||||
last-bottom-spacing =
|
||||
#'((basic-distance . 15 )
|
||||
(minimum-distance . 15 )
|
||||
(padding . 0 )
|
||||
(stretchability . 0))
|
||||
|
||||
% manually change systems-per-page to 2 if the harmonics of hl 6 are uncommented below
|
||||
systems-per-page = 8
|
||||
|
||||
print-page-number = ##t
|
||||
oddHeaderMarkup = \markup { \on-the-fly #not-first-page "(part - hl 5 - 2101000)" }
|
||||
evenHeaderMarkup = \markup { \on-the-fly #not-first-page "(part - hl 5 - 2101000)" }
|
||||
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 {a lot of tiles (trivial scan)}}
|
||||
subtitle = \markup { \normal-text {2101000}}
|
||||
composer = \markup \left-column {"michael winter" "(cdmx, mx and nashville, usa; 2018)"}
|
||||
piece = \markup { \normal-text {part - hl 5 - 2101000}}
|
||||
tagline = ""
|
||||
}
|
||||
|
||||
#(set-global-staff-size 15)
|
||||
|
||||
\layout {
|
||||
indent = 0.0\cm
|
||||
line-width = 17\cm
|
||||
ragged-last = ##t
|
||||
|
||||
\context {
|
||||
\Score
|
||||
\override BarNumber.extra-offset = #'(0 . 5)
|
||||
\override BarNumber.stencil =
|
||||
#(make-stencil-circler 0.1 0.25 ly:text-interface::print)
|
||||
}
|
||||
\context {
|
||||
\Staff
|
||||
\override StaffSymbol.line-count = #1
|
||||
\override Clef.stencil = #point-stencil
|
||||
\override Clef.space-alist.first-note = #'(extra-space . 1)
|
||||
\remove "Time_signature_engraver"
|
||||
}
|
||||
\context {
|
||||
\Voice
|
||||
\override Glissando.minimum-length = #0
|
||||
\override Glissando.layer = 500
|
||||
\override Glissando.breakable = ##t
|
||||
\override Glissando.bound-details =
|
||||
#'((right
|
||||
(attach-dir . -1)
|
||||
(end-on-accidental . #f)
|
||||
(padding . 0))
|
||||
(right-broken
|
||||
(padding . 0.5))
|
||||
(left-broken
|
||||
(padding . 0.5)
|
||||
(attach-dir . 1))
|
||||
(left
|
||||
(attach-dir . -1)
|
||||
(padding . -0.25)
|
||||
(start-at-dot . #f)))
|
||||
}
|
||||
}
|
||||
|
||||
% this draws a curve and a gradient
|
||||
#(define (make-grey-filled-curve-stencil-list x-coords colors half-thick rl)
|
||||
(if (null? (cdr x-coords))
|
||||
rl
|
||||
(make-grey-filled-curve-stencil-list
|
||||
(cdr x-coords)
|
||||
(cdr colors)
|
||||
half-thick
|
||||
(cons
|
||||
(stencil-with-color
|
||||
(make-filled-box-stencil
|
||||
(interval-widen (cons (car x-coords) (cadr x-coords)) 0.1)
|
||||
(cons (- half-thick) (- 9 (* 10 (car colors)))))
|
||||
(list (car colors) (car colors) (car colors)))
|
||||
rl))))
|
||||
|
||||
% this draws a just a line with a gradient
|
||||
#(define (make-grey-filled-box-stencil-list x-coords colors half-thick rl)
|
||||
(if (null? (cdr x-coords))
|
||||
rl
|
||||
(make-grey-filled-box-stencil-list
|
||||
(cdr x-coords)
|
||||
(cdr colors)
|
||||
half-thick
|
||||
(cons
|
||||
(stencil-with-color
|
||||
(make-filled-box-stencil
|
||||
(interval-widen (cons (car x-coords) (cadr x-coords)) 0.1)
|
||||
(cons (- half-thick) half-thick))
|
||||
(list (car colors) (car colors) (car colors)))
|
||||
rl))))
|
||||
|
||||
#(define my-gliss
|
||||
(lambda (grob)
|
||||
(if (ly:stencil? (ly:line-spanner::print grob))
|
||||
(let* ((stencil (ly:line-spanner::print grob))
|
||||
(X-ext (ly:stencil-extent stencil X))
|
||||
(Y-ext (ly:stencil-extent stencil Y))
|
||||
(Y-length (- (cdr Y-ext) (car Y-ext)))
|
||||
(left-bound-info (ly:grob-property grob 'left-bound-info))
|
||||
(left-Y (assoc-get 'Y left-bound-info))
|
||||
(thick
|
||||
(assoc-get 'thickness (ly:grob-property grob 'details) 0.5))
|
||||
(layout (ly:grob-layout grob))
|
||||
(blot (ly:output-def-lookup layout 'blot-diameter))
|
||||
(right-bound (ly:spanner-bound grob RIGHT))
|
||||
(right-par (ly:grob-parent right-bound X))
|
||||
(stem
|
||||
(if (grob::has-interface right-par 'note-column-interface)
|
||||
(ly:grob-object right-par 'stem)
|
||||
'()))
|
||||
(stem-stencil
|
||||
(if (ly:grob? stem)
|
||||
(ly:grob-property stem 'stencil)
|
||||
#f))
|
||||
(stem-thick
|
||||
(if (ly:stencil? stem-stencil)
|
||||
(interval-length (ly:stencil-extent stem-stencil X))
|
||||
0))
|
||||
(corr-delta-X (- (interval-length X-ext)
|
||||
Y-length
|
||||
blot
|
||||
stem-thick
|
||||
;; mmh, why this value??
|
||||
-0.05))
|
||||
(colors
|
||||
(assoc-get 'colors (ly:grob-property grob 'details)
|
||||
(list 0 .5 .8)))
|
||||
(steps
|
||||
(length colors))
|
||||
(raw-x-coords
|
||||
(iota (1+ (abs steps)) 0 (/ corr-delta-X (abs steps))))
|
||||
(x-coords
|
||||
(map
|
||||
(lambda (e)
|
||||
(+ (car X-ext) Y-length blot e))
|
||||
raw-x-coords)))
|
||||
|
||||
;; create a flat glissando
|
||||
(ly:grob-set-nested-property! grob '(right-bound-info Y) left-Y)
|
||||
|
||||
;; return the stencil of added boxes
|
||||
(ly:stencil-translate-axis
|
||||
(apply
|
||||
ly:stencil-add
|
||||
;; change this to make-grey-filled-box-stencil-list to eleminate curve and just use gradient
|
||||
(make-grey-filled-curve-stencil-list
|
||||
x-coords
|
||||
colors
|
||||
thick
|
||||
'()))
|
||||
;; the actual offset is TODO, hardcoded here
|
||||
3.5
|
||||
Y))
|
||||
#f)))
|
||||
|
||||
#(define (add-gliss m)
|
||||
(case (ly:music-property m 'name)
|
||||
((NoteEvent)
|
||||
(set! (ly:music-property m 'articulations)
|
||||
(append
|
||||
(ly:music-property m 'articulations)
|
||||
(list (make-music 'GlissandoEvent))))
|
||||
m)
|
||||
(else #f)))
|
||||
|
||||
addGliss =
|
||||
#(define-music-function (music)
|
||||
(ly:music?)
|
||||
(map-some-music add-gliss music))
|
||||
|
||||
|
||||
\new Score
|
||||
\with {proportionalNotationDuration = #(ly:make-moment 1 16)}
|
||||
<<
|
||||
\new StaffGroup \with{
|
||||
\override StaffGrouper.staff-staff-spacing =
|
||||
#'((basic-distance . 13)
|
||||
(minimum-distance . 13)
|
||||
(padding . 0)
|
||||
(stretchability . 0))
|
||||
\override StaffGrouper.staffgroup-staff-spacing =
|
||||
#'((basic-distance . 13)
|
||||
(minimum-distance . 13)
|
||||
(padding . 0)
|
||||
(stretchability . 0))
|
||||
}
|
||||
<<
|
||||
|
||||
% uncomment these lines to view harmonics of hl 6
|
||||
% also change systems-per-page to 2 manually above
|
||||
%{
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 6 " "(harm 13) "}
|
||||
shortInstrumentName = #"hl6 (h13) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 17 { \repeat unfold 7 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_6_harm_13.ly"
|
||||
>>
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 6 " "(harm 9) "}
|
||||
shortInstrumentName = #"hl6 (h9) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 17 { \repeat unfold 7 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_6_harm_9.ly"
|
||||
>>
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 6 " "(harm 5) "}
|
||||
shortInstrumentName = #"hl6 (h5) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 17 { \repeat unfold 7 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_6_harm_5.ly"
|
||||
>>
|
||||
%}
|
||||
|
||||
%{~~hl6~~
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 6 " "(harm 1) "}
|
||||
shortInstrumentName = #"hl6 (h1) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 17 { \repeat unfold 7 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_6_harm_1.ly"
|
||||
>>
|
||||
%}
|
||||
>>
|
||||
|
||||
\new StaffGroup \with{
|
||||
\override StaffGrouper.staff-staff-spacing =
|
||||
#'((basic-distance . 9)
|
||||
(minimum-distance . 9)
|
||||
(padding . 0)
|
||||
(stretchability . 0))
|
||||
}
|
||||
<<
|
||||
%~~hl5-start~~
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 5" "(high noise)"}
|
||||
shortInstrumentName = #"hl5 (hn) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 17 { \repeat unfold 7 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_5.ly"
|
||||
>>
|
||||
%~~hl5-end~~
|
||||
|
||||
%{~~hl4~~
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 4 " "(low noise)"}
|
||||
shortInstrumentName = #"hl4 (ln) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 17 { \repeat unfold 7 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_4.ly"
|
||||
>>
|
||||
%}
|
||||
>>
|
||||
>>
|
@ -0,0 +1,298 @@
|
||||
\version "2.19.81"
|
||||
|
||||
% systems-per-page, unfold vars, and strings delimited by tildes
|
||||
% are changed by the Supercollider transcriber
|
||||
|
||||
\paper {
|
||||
#(set-paper-size "a4" 'portrait)
|
||||
top-margin = 1 \cm
|
||||
bottom-margin = 1 \cm
|
||||
left-margin = 2.5 \cm
|
||||
|
||||
top-system-spacing =
|
||||
#'((basic-distance . 25 )
|
||||
(minimum-distance . 25 )
|
||||
(padding . 0 )
|
||||
(stretchability . 0))
|
||||
|
||||
last-bottom-spacing =
|
||||
#'((basic-distance . 15 )
|
||||
(minimum-distance . 15 )
|
||||
(padding . 0 )
|
||||
(stretchability . 0))
|
||||
|
||||
% manually change systems-per-page to 2 if the harmonics of hl 6 are uncommented below
|
||||
systems-per-page = 8
|
||||
|
||||
print-page-number = ##t
|
||||
oddHeaderMarkup = \markup { \on-the-fly #not-first-page "(part - hl 6 - 2101000)" }
|
||||
evenHeaderMarkup = \markup { \on-the-fly #not-first-page "(part - hl 6 - 2101000)" }
|
||||
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 {a lot of tiles (trivial scan)}}
|
||||
subtitle = \markup { \normal-text {2101000}}
|
||||
composer = \markup \left-column {"michael winter" "(cdmx, mx and nashville, usa; 2018)"}
|
||||
piece = \markup { \normal-text {part - hl 6 - 2101000}}
|
||||
tagline = ""
|
||||
}
|
||||
|
||||
#(set-global-staff-size 15)
|
||||
|
||||
\layout {
|
||||
indent = 0.0\cm
|
||||
line-width = 17\cm
|
||||
ragged-last = ##t
|
||||
|
||||
\context {
|
||||
\Score
|
||||
\override BarNumber.extra-offset = #'(0 . 5)
|
||||
\override BarNumber.stencil =
|
||||
#(make-stencil-circler 0.1 0.25 ly:text-interface::print)
|
||||
}
|
||||
\context {
|
||||
\Staff
|
||||
\override StaffSymbol.line-count = #1
|
||||
\override Clef.stencil = #point-stencil
|
||||
\override Clef.space-alist.first-note = #'(extra-space . 1)
|
||||
\remove "Time_signature_engraver"
|
||||
}
|
||||
\context {
|
||||
\Voice
|
||||
\override Glissando.minimum-length = #0
|
||||
\override Glissando.layer = 500
|
||||
\override Glissando.breakable = ##t
|
||||
\override Glissando.bound-details =
|
||||
#'((right
|
||||
(attach-dir . -1)
|
||||
(end-on-accidental . #f)
|
||||
(padding . 0))
|
||||
(right-broken
|
||||
(padding . 0.5))
|
||||
(left-broken
|
||||
(padding . 0.5)
|
||||
(attach-dir . 1))
|
||||
(left
|
||||
(attach-dir . -1)
|
||||
(padding . -0.25)
|
||||
(start-at-dot . #f)))
|
||||
}
|
||||
}
|
||||
|
||||
% this draws a curve and a gradient
|
||||
#(define (make-grey-filled-curve-stencil-list x-coords colors half-thick rl)
|
||||
(if (null? (cdr x-coords))
|
||||
rl
|
||||
(make-grey-filled-curve-stencil-list
|
||||
(cdr x-coords)
|
||||
(cdr colors)
|
||||
half-thick
|
||||
(cons
|
||||
(stencil-with-color
|
||||
(make-filled-box-stencil
|
||||
(interval-widen (cons (car x-coords) (cadr x-coords)) 0.1)
|
||||
(cons (- half-thick) (- 9 (* 10 (car colors)))))
|
||||
(list (car colors) (car colors) (car colors)))
|
||||
rl))))
|
||||
|
||||
% this draws a just a line with a gradient
|
||||
#(define (make-grey-filled-box-stencil-list x-coords colors half-thick rl)
|
||||
(if (null? (cdr x-coords))
|
||||
rl
|
||||
(make-grey-filled-box-stencil-list
|
||||
(cdr x-coords)
|
||||
(cdr colors)
|
||||
half-thick
|
||||
(cons
|
||||
(stencil-with-color
|
||||
(make-filled-box-stencil
|
||||
(interval-widen (cons (car x-coords) (cadr x-coords)) 0.1)
|
||||
(cons (- half-thick) half-thick))
|
||||
(list (car colors) (car colors) (car colors)))
|
||||
rl))))
|
||||
|
||||
#(define my-gliss
|
||||
(lambda (grob)
|
||||
(if (ly:stencil? (ly:line-spanner::print grob))
|
||||
(let* ((stencil (ly:line-spanner::print grob))
|
||||
(X-ext (ly:stencil-extent stencil X))
|
||||
(Y-ext (ly:stencil-extent stencil Y))
|
||||
(Y-length (- (cdr Y-ext) (car Y-ext)))
|
||||
(left-bound-info (ly:grob-property grob 'left-bound-info))
|
||||
(left-Y (assoc-get 'Y left-bound-info))
|
||||
(thick
|
||||
(assoc-get 'thickness (ly:grob-property grob 'details) 0.5))
|
||||
(layout (ly:grob-layout grob))
|
||||
(blot (ly:output-def-lookup layout 'blot-diameter))
|
||||
(right-bound (ly:spanner-bound grob RIGHT))
|
||||
(right-par (ly:grob-parent right-bound X))
|
||||
(stem
|
||||
(if (grob::has-interface right-par 'note-column-interface)
|
||||
(ly:grob-object right-par 'stem)
|
||||
'()))
|
||||
(stem-stencil
|
||||
(if (ly:grob? stem)
|
||||
(ly:grob-property stem 'stencil)
|
||||
#f))
|
||||
(stem-thick
|
||||
(if (ly:stencil? stem-stencil)
|
||||
(interval-length (ly:stencil-extent stem-stencil X))
|
||||
0))
|
||||
(corr-delta-X (- (interval-length X-ext)
|
||||
Y-length
|
||||
blot
|
||||
stem-thick
|
||||
;; mmh, why this value??
|
||||
-0.05))
|
||||
(colors
|
||||
(assoc-get 'colors (ly:grob-property grob 'details)
|
||||
(list 0 .5 .8)))
|
||||
(steps
|
||||
(length colors))
|
||||
(raw-x-coords
|
||||
(iota (1+ (abs steps)) 0 (/ corr-delta-X (abs steps))))
|
||||
(x-coords
|
||||
(map
|
||||
(lambda (e)
|
||||
(+ (car X-ext) Y-length blot e))
|
||||
raw-x-coords)))
|
||||
|
||||
;; create a flat glissando
|
||||
(ly:grob-set-nested-property! grob '(right-bound-info Y) left-Y)
|
||||
|
||||
;; return the stencil of added boxes
|
||||
(ly:stencil-translate-axis
|
||||
(apply
|
||||
ly:stencil-add
|
||||
;; change this to make-grey-filled-box-stencil-list to eleminate curve and just use gradient
|
||||
(make-grey-filled-curve-stencil-list
|
||||
x-coords
|
||||
colors
|
||||
thick
|
||||
'()))
|
||||
;; the actual offset is TODO, hardcoded here
|
||||
3.5
|
||||
Y))
|
||||
#f)))
|
||||
|
||||
#(define (add-gliss m)
|
||||
(case (ly:music-property m 'name)
|
||||
((NoteEvent)
|
||||
(set! (ly:music-property m 'articulations)
|
||||
(append
|
||||
(ly:music-property m 'articulations)
|
||||
(list (make-music 'GlissandoEvent))))
|
||||
m)
|
||||
(else #f)))
|
||||
|
||||
addGliss =
|
||||
#(define-music-function (music)
|
||||
(ly:music?)
|
||||
(map-some-music add-gliss music))
|
||||
|
||||
|
||||
\new Score
|
||||
\with {proportionalNotationDuration = #(ly:make-moment 1 16)}
|
||||
<<
|
||||
\new StaffGroup \with{
|
||||
\override StaffGrouper.staff-staff-spacing =
|
||||
#'((basic-distance . 13)
|
||||
(minimum-distance . 13)
|
||||
(padding . 0)
|
||||
(stretchability . 0))
|
||||
\override StaffGrouper.staffgroup-staff-spacing =
|
||||
#'((basic-distance . 13)
|
||||
(minimum-distance . 13)
|
||||
(padding . 0)
|
||||
(stretchability . 0))
|
||||
}
|
||||
<<
|
||||
|
||||
% uncomment these lines to view harmonics of hl 6
|
||||
% also change systems-per-page to 2 manually above
|
||||
%{
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 6 " "(harm 13) "}
|
||||
shortInstrumentName = #"hl6 (h13) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 33 { \repeat unfold 3 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_6_harm_13.ly"
|
||||
>>
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 6 " "(harm 9) "}
|
||||
shortInstrumentName = #"hl6 (h9) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 33 { \repeat unfold 3 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_6_harm_9.ly"
|
||||
>>
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 6 " "(harm 5) "}
|
||||
shortInstrumentName = #"hl6 (h5) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 33 { \repeat unfold 3 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_6_harm_5.ly"
|
||||
>>
|
||||
%}
|
||||
|
||||
%~~hl6-start~~
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 6 " "(harm 1) "}
|
||||
shortInstrumentName = #"hl6 (h1) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 33 { \repeat unfold 3 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_6_harm_1.ly"
|
||||
>>
|
||||
%~~hl6-end~~
|
||||
>>
|
||||
|
||||
\new StaffGroup \with{
|
||||
\override StaffGrouper.staff-staff-spacing =
|
||||
#'((basic-distance . 9)
|
||||
(minimum-distance . 9)
|
||||
(padding . 0)
|
||||
(stretchability . 0))
|
||||
}
|
||||
<<
|
||||
%{~~hl5~~
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 5" "(high noise)"}
|
||||
shortInstrumentName = #"hl5 (hn) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 33 { \repeat unfold 3 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_5.ly"
|
||||
>>
|
||||
%}
|
||||
|
||||
%{~~hl4~~
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 4 " "(low noise)"}
|
||||
shortInstrumentName = #"hl4 (ln) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 33 { \repeat unfold 3 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_4.ly"
|
||||
>>
|
||||
%}
|
||||
>>
|
||||
>>
|
@ -0,0 +1,259 @@
|
||||
{
|
||||
|
|
||||
b'1 ^0
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'1 ^0 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^0 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'1 ^0 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'1 ^0 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^0 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^0 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^0
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'1 ^0 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'1 ^0 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^0 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^0
|
||||
|
|
||||
b'1 ^1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^0 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'1 ^0 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'1 ^0 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'1 ^0 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'1 ^0 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^0
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'1 ^0
|
||||
|
|
||||
b'1 ^1 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^0
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'1 ^0 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^0 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'1 ^0
|
||||
|
|
||||
b'1 ^1 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^0
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'1 ^0 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'1 ^0 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'1 ^0 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'1 ^0 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^0 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^0 \bar "|." \stopStaff \hide b'1}
|
@ -0,0 +1,259 @@
|
||||
{
|
||||
|
|
||||
b'4 ^0 b'2. ^1 ~
|
||||
|
|
||||
b'4 b'2 ^0 b'4 ^1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'4 b'2 ^0 b'4 ^1 ~
|
||||
|
|
||||
b'2. b'4 ^0 ~
|
||||
|
|
||||
b'4 b'2. ^1 ~
|
||||
|
|
||||
b'4 b'2 ^0 b'4 ^1
|
||||
|
|
||||
b'4 ^0 b'4 ^1 b'2 ^0
|
||||
|
|
||||
b'4 ^1 b'2 ^0 b'4 ^1
|
||||
|
|
||||
b'1 ^0 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'4 ^1 b'2 ^0 b'4 ^1
|
||||
|
|
||||
b'2 ^0 b'4 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'4 b'4 ^1 b'2 ^0
|
||||
|
|
||||
b'4 ^1 b'2 ^0 b'4 ^1
|
||||
|
|
||||
b'4 ^0 b'2. ^1
|
||||
|
|
||||
b'1 ^0 ~
|
||||
|
|
||||
b'4 b'4 ^1 b'4 ^0 b'4 ^1 ~
|
||||
|
|
||||
b'4 b'4 ^0 b'4 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'2. ^1 b'4 ^0 ~
|
||||
|
|
||||
b'4 b'2. ^1
|
||||
|
|
||||
b'1 ^0 ~
|
||||
|
|
||||
b'4 b'4 ^1 b'2 ^0
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'4 ^0 b'4 ^1 b'4 ^0 b'4 ^1 ~
|
||||
|
|
||||
b'4 b'4 ^0 b'4 ^1 b'4 ^0
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'2 ^0 b'4 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'4 b'4 ^1 b'2 ^0
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'4 ^0 b'2. ^1 ~
|
||||
|
|
||||
b'4 b'2 ^0 b'4 ^1
|
||||
|
|
||||
b'2 ^0 b'4 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'4 b'4 ^1 b'2 ^0
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'2 ^0 b'4 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'4 b'4 ^1 b'2 ^0
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'4 ^0 b'4 ^1 b'2 ^0
|
||||
|
|
||||
b'4 ^1 b'2 ^0 b'4 ^1 ~
|
||||
|
|
||||
b'2. b'4 ^0 ~
|
||||
|
|
||||
b'4 b'2. ^1
|
||||
|
|
||||
b'1 ^0
|
||||
|
|
||||
b'2. ^1 b'4 ^0 ~
|
||||
|
|
||||
b'4 b'2. ^1
|
||||
|
|
||||
b'1 ^0 ~
|
||||
|
|
||||
b'4 b'2. ^1
|
||||
|
|
||||
b'1 ^0
|
||||
|
|
||||
b'2. ^1 b'4 ^0 ~
|
||||
|
|
||||
b'4 b'2. ^1 ~
|
||||
|
|
||||
b'4 b'2 ^0 b'4 ^1
|
||||
|
|
||||
b'2 ^0 b'4 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'4 b'4 ^1 b'2 ^0
|
||||
|
|
||||
b'4 ^1 b'2 ^0 b'4 ^1
|
||||
|
|
||||
b'4 ^0 b'4 ^1 b'2 ^0
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'2 ^0 b'4 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'4 b'4 ^1 b'2 ^0
|
||||
|
|
||||
b'4 ^1 b'2 ^0 b'4 ^1 ~
|
||||
|
|
||||
b'2. b'4 ^0 ~
|
||||
|
|
||||
b'4 b'2. ^1 ~
|
||||
|
|
||||
b'4 b'2 ^0 b'4 ^1
|
||||
|
|
||||
b'4 ^0 b'2. ^1 ~
|
||||
|
|
||||
b'4 b'2 ^0 b'4 ^1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'4 ^0 b'4 ^1 b'2 ^0 ~
|
||||
|
|
||||
b'4 b'4 ^1 b'2 ^0 ~
|
||||
|
|
||||
b'2 b'4 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'2 b'4 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'4 b'4 ^1 b'2 ^0
|
||||
|
|
||||
b'4 ^1 b'2 ^0 b'4 ^1
|
||||
|
|
||||
b'1 ^0 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'4 b'2. ^1
|
||||
|
|
||||
b'4 ^0 b'2. ^1 ~
|
||||
|
|
||||
b'2. b'4 ^0
|
||||
|
|
||||
b'2. ^1 b'4 ^0 ~
|
||||
|
|
||||
b'4 b'2. ^1
|
||||
|
|
||||
b'1 ^0 ~
|
||||
|
|
||||
b'4 b'4 ^1 b'4 ^0 b'4 ^1 ~
|
||||
|
|
||||
b'4 b'4 ^0 b'4 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'4 b'2. ^1
|
||||
|
|
||||
b'4 ^0 b'2. ^1 ~
|
||||
|
|
||||
b'2. b'4 ^0
|
||||
|
|
||||
b'2. ^1 b'4 ^0 ~
|
||||
|
|
||||
b'4 b'4 ^1 b'2 ^0
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'4 ^0 b'4 ^1 b'4 ^0 b'4 ^1 ~
|
||||
|
|
||||
b'4 b'4 ^0 b'4 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'4 b'4 ^1 b'2 ^0 ~
|
||||
|
|
||||
b'4 b'4 ^1 b'2 ^0 ~
|
||||
|
|
||||
b'2 b'4 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'2 b'4 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'4 b'2. ^1 ~
|
||||
|
|
||||
b'4 b'2 ^0 b'4 ^1
|
||||
|
|
||||
b'2 ^0 b'4 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'4 b'4 ^1 b'2 ^0
|
||||
|
|
||||
b'4 ^1 b'4 ^0 b'4 ^1 b'4 ^0
|
||||
|
|
||||
b'4 ^1 b'4 ^0 b'4 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'4 b'4 ^1 b'4 ^0 b'4 ^1
|
||||
|
|
||||
b'4 ^0 b'4 ^1 b'4 ^0 b'4 ^1
|
||||
|
|
||||
b'4 ^0 b'4 ^1 b'2 ^0
|
||||
|
|
||||
b'4 ^1 b'2 ^0 b'4 ^1 ~
|
||||
|
|
||||
b'2. b'4 ^0 ~
|
||||
|
|
||||
b'4 b'2. ^1 ~
|
||||
|
|
||||
b'4 b'4 ^0 b'4 ^1 b'4 ^0
|
||||
|
|
||||
b'4 ^1 b'4 ^0 b'4 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'4 b'4 ^1 b'4 ^0 b'4 ^1
|
||||
|
|
||||
b'4 ^0 b'4 ^1 b'4 ^0 b'4 ^1
|
||||
|
|
||||
b'4 ^0 b'2. ^1
|
||||
|
|
||||
b'1 ^0
|
||||
|
|
||||
b'2. ^1 b'4 ^0 ~
|
||||
|
|
||||
b'4 b'2. ^1
|
||||
|
|
||||
b'1 ^0 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'4 b'4 ^1 b'2 ^0
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'2 ^0 b'4 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'4 b'4 ^1 b'2 ^0
|
||||
|
|
||||
b'1 ^1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^0 \bar "|." \stopStaff \hide b'1}
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -0,0 +1,298 @@
|
||||
\version "2.19.81"
|
||||
|
||||
% systems-per-page, unfold vars, and strings delimited by tildes
|
||||
% are changed by the Supercollider transcriber
|
||||
|
||||
\paper {
|
||||
#(set-paper-size "a4" 'portrait)
|
||||
top-margin = 1 \cm
|
||||
bottom-margin = 1 \cm
|
||||
left-margin = 2.5 \cm
|
||||
|
||||
top-system-spacing =
|
||||
#'((basic-distance . 25 )
|
||||
(minimum-distance . 25 )
|
||||
(padding . 0 )
|
||||
(stretchability . 0))
|
||||
|
||||
last-bottom-spacing =
|
||||
#'((basic-distance . 15 )
|
||||
(minimum-distance . 15 )
|
||||
(padding . 0 )
|
||||
(stretchability . 0))
|
||||
|
||||
% manually change systems-per-page to 2 if the harmonics of hl 6 are uncommented below
|
||||
systems-per-page = 4
|
||||
|
||||
print-page-number = ##t
|
||||
oddHeaderMarkup = \markup { \on-the-fly #not-first-page "(master score - 2321101)" }
|
||||
evenHeaderMarkup = \markup { \on-the-fly #not-first-page "(master score - 2321101)" }
|
||||
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 {a lot of tiles (trivial scan)}}
|
||||
subtitle = \markup { \normal-text {2321101}}
|
||||
composer = \markup \left-column {"michael winter" "(cdmx, mx and nashville, usa; 2018)"}
|
||||
piece = \markup { \normal-text {master score - 2321101}}
|
||||
tagline = ""
|
||||
}
|
||||
|
||||
#(set-global-staff-size 15)
|
||||
|
||||
\layout {
|
||||
indent = 0.0\cm
|
||||
line-width = 17\cm
|
||||
ragged-last = ##t
|
||||
|
||||
\context {
|
||||
\Score
|
||||
\override BarNumber.extra-offset = #'(0 . 5)
|
||||
\override BarNumber.stencil =
|
||||
#(make-stencil-circler 0.1 0.25 ly:text-interface::print)
|
||||
}
|
||||
\context {
|
||||
\Staff
|
||||
\override StaffSymbol.line-count = #1
|
||||
\override Clef.stencil = #point-stencil
|
||||
\override Clef.space-alist.first-note = #'(extra-space . 1)
|
||||
\remove "Time_signature_engraver"
|
||||
}
|
||||
\context {
|
||||
\Voice
|
||||
\override Glissando.minimum-length = #0
|
||||
\override Glissando.layer = 500
|
||||
\override Glissando.breakable = ##t
|
||||
\override Glissando.bound-details =
|
||||
#'((right
|
||||
(attach-dir . -1)
|
||||
(end-on-accidental . #f)
|
||||
(padding . 0))
|
||||
(right-broken
|
||||
(padding . 0.5))
|
||||
(left-broken
|
||||
(padding . 0.5)
|
||||
(attach-dir . 1))
|
||||
(left
|
||||
(attach-dir . -1)
|
||||
(padding . -0.25)
|
||||
(start-at-dot . #f)))
|
||||
}
|
||||
}
|
||||
|
||||
% this draws a curve and a gradient
|
||||
#(define (make-grey-filled-curve-stencil-list x-coords colors half-thick rl)
|
||||
(if (null? (cdr x-coords))
|
||||
rl
|
||||
(make-grey-filled-curve-stencil-list
|
||||
(cdr x-coords)
|
||||
(cdr colors)
|
||||
half-thick
|
||||
(cons
|
||||
(stencil-with-color
|
||||
(make-filled-box-stencil
|
||||
(interval-widen (cons (car x-coords) (cadr x-coords)) 0.1)
|
||||
(cons (- half-thick) (- 9 (* 10 (car colors)))))
|
||||
(list (car colors) (car colors) (car colors)))
|
||||
rl))))
|
||||
|
||||
% this draws a just a line with a gradient
|
||||
#(define (make-grey-filled-box-stencil-list x-coords colors half-thick rl)
|
||||
(if (null? (cdr x-coords))
|
||||
rl
|
||||
(make-grey-filled-box-stencil-list
|
||||
(cdr x-coords)
|
||||
(cdr colors)
|
||||
half-thick
|
||||
(cons
|
||||
(stencil-with-color
|
||||
(make-filled-box-stencil
|
||||
(interval-widen (cons (car x-coords) (cadr x-coords)) 0.1)
|
||||
(cons (- half-thick) half-thick))
|
||||
(list (car colors) (car colors) (car colors)))
|
||||
rl))))
|
||||
|
||||
#(define my-gliss
|
||||
(lambda (grob)
|
||||
(if (ly:stencil? (ly:line-spanner::print grob))
|
||||
(let* ((stencil (ly:line-spanner::print grob))
|
||||
(X-ext (ly:stencil-extent stencil X))
|
||||
(Y-ext (ly:stencil-extent stencil Y))
|
||||
(Y-length (- (cdr Y-ext) (car Y-ext)))
|
||||
(left-bound-info (ly:grob-property grob 'left-bound-info))
|
||||
(left-Y (assoc-get 'Y left-bound-info))
|
||||
(thick
|
||||
(assoc-get 'thickness (ly:grob-property grob 'details) 0.5))
|
||||
(layout (ly:grob-layout grob))
|
||||
(blot (ly:output-def-lookup layout 'blot-diameter))
|
||||
(right-bound (ly:spanner-bound grob RIGHT))
|
||||
(right-par (ly:grob-parent right-bound X))
|
||||
(stem
|
||||
(if (grob::has-interface right-par 'note-column-interface)
|
||||
(ly:grob-object right-par 'stem)
|
||||
'()))
|
||||
(stem-stencil
|
||||
(if (ly:grob? stem)
|
||||
(ly:grob-property stem 'stencil)
|
||||
#f))
|
||||
(stem-thick
|
||||
(if (ly:stencil? stem-stencil)
|
||||
(interval-length (ly:stencil-extent stem-stencil X))
|
||||
0))
|
||||
(corr-delta-X (- (interval-length X-ext)
|
||||
Y-length
|
||||
blot
|
||||
stem-thick
|
||||
;; mmh, why this value??
|
||||
-0.05))
|
||||
(colors
|
||||
(assoc-get 'colors (ly:grob-property grob 'details)
|
||||
(list 0 .5 .8)))
|
||||
(steps
|
||||
(length colors))
|
||||
(raw-x-coords
|
||||
(iota (1+ (abs steps)) 0 (/ corr-delta-X (abs steps))))
|
||||
(x-coords
|
||||
(map
|
||||
(lambda (e)
|
||||
(+ (car X-ext) Y-length blot e))
|
||||
raw-x-coords)))
|
||||
|
||||
;; create a flat glissando
|
||||
(ly:grob-set-nested-property! grob '(right-bound-info Y) left-Y)
|
||||
|
||||
;; return the stencil of added boxes
|
||||
(ly:stencil-translate-axis
|
||||
(apply
|
||||
ly:stencil-add
|
||||
;; change this to make-grey-filled-box-stencil-list to eleminate curve and just use gradient
|
||||
(make-grey-filled-curve-stencil-list
|
||||
x-coords
|
||||
colors
|
||||
thick
|
||||
'()))
|
||||
;; the actual offset is TODO, hardcoded here
|
||||
3.5
|
||||
Y))
|
||||
#f)))
|
||||
|
||||
#(define (add-gliss m)
|
||||
(case (ly:music-property m 'name)
|
||||
((NoteEvent)
|
||||
(set! (ly:music-property m 'articulations)
|
||||
(append
|
||||
(ly:music-property m 'articulations)
|
||||
(list (make-music 'GlissandoEvent))))
|
||||
m)
|
||||
(else #f)))
|
||||
|
||||
addGliss =
|
||||
#(define-music-function (music)
|
||||
(ly:music?)
|
||||
(map-some-music add-gliss music))
|
||||
|
||||
|
||||
\new Score
|
||||
\with {proportionalNotationDuration = #(ly:make-moment 1 16)}
|
||||
<<
|
||||
\new StaffGroup \with{
|
||||
\override StaffGrouper.staff-staff-spacing =
|
||||
#'((basic-distance . 13)
|
||||
(minimum-distance . 13)
|
||||
(padding . 0)
|
||||
(stretchability . 0))
|
||||
\override StaffGrouper.staffgroup-staff-spacing =
|
||||
#'((basic-distance . 13)
|
||||
(minimum-distance . 13)
|
||||
(padding . 0)
|
||||
(stretchability . 0))
|
||||
}
|
||||
<<
|
||||
|
||||
% uncomment these lines to view harmonics of hl 6
|
||||
% also change systems-per-page to 2 manually above
|
||||
%{
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 6 " "(harm 13) "}
|
||||
shortInstrumentName = #"hl6 (h13) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 33 { \repeat unfold 3 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_6_harm_13.ly"
|
||||
>>
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 6 " "(harm 9) "}
|
||||
shortInstrumentName = #"hl6 (h9) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 33 { \repeat unfold 3 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_6_harm_9.ly"
|
||||
>>
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 6 " "(harm 5) "}
|
||||
shortInstrumentName = #"hl6 (h5) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 33 { \repeat unfold 3 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_6_harm_5.ly"
|
||||
>>
|
||||
%}
|
||||
|
||||
%~~hl6-start~~
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 6 " "(harm 1) "}
|
||||
shortInstrumentName = #"hl6 (h1) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 33 { \repeat unfold 3 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_6_harm_1.ly"
|
||||
>>
|
||||
%~~hl6-end~~
|
||||
>>
|
||||
|
||||
\new StaffGroup \with{
|
||||
\override StaffGrouper.staff-staff-spacing =
|
||||
#'((basic-distance . 9)
|
||||
(minimum-distance . 9)
|
||||
(padding . 0)
|
||||
(stretchability . 0))
|
||||
}
|
||||
<<
|
||||
%~~hl5-start~~
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 5" "(high noise)"}
|
||||
shortInstrumentName = #"hl5 (hn) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 33 { \repeat unfold 3 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_5.ly"
|
||||
>>
|
||||
%~~hl5-end~~
|
||||
|
||||
%~~hl4-start~~
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 4 " "(low noise)"}
|
||||
shortInstrumentName = #"hl4 (ln) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 33 { \repeat unfold 3 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_4.ly"
|
||||
>>
|
||||
%~~hl4-end~~
|
||||
>>
|
||||
>>
|
@ -0,0 +1,298 @@
|
||||
\version "2.19.81"
|
||||
|
||||
% systems-per-page, unfold vars, and strings delimited by tildes
|
||||
% are changed by the Supercollider transcriber
|
||||
|
||||
\paper {
|
||||
#(set-paper-size "a4" 'portrait)
|
||||
top-margin = 1 \cm
|
||||
bottom-margin = 1 \cm
|
||||
left-margin = 2.5 \cm
|
||||
|
||||
top-system-spacing =
|
||||
#'((basic-distance . 25 )
|
||||
(minimum-distance . 25 )
|
||||
(padding . 0 )
|
||||
(stretchability . 0))
|
||||
|
||||
last-bottom-spacing =
|
||||
#'((basic-distance . 15 )
|
||||
(minimum-distance . 15 )
|
||||
(padding . 0 )
|
||||
(stretchability . 0))
|
||||
|
||||
% manually change systems-per-page to 2 if the harmonics of hl 6 are uncommented below
|
||||
systems-per-page = 8
|
||||
|
||||
print-page-number = ##t
|
||||
oddHeaderMarkup = \markup { \on-the-fly #not-first-page "(part - hl 4 - 2321101)" }
|
||||
evenHeaderMarkup = \markup { \on-the-fly #not-first-page "(part - hl 4 - 2321101)" }
|
||||
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 {a lot of tiles (trivial scan)}}
|
||||
subtitle = \markup { \normal-text {2321101}}
|
||||
composer = \markup \left-column {"michael winter" "(cdmx, mx and nashville, usa; 2018)"}
|
||||
piece = \markup { \normal-text {part - hl 4 - 2321101}}
|
||||
tagline = ""
|
||||
}
|
||||
|
||||
#(set-global-staff-size 15)
|
||||
|
||||
\layout {
|
||||
indent = 0.0\cm
|
||||
line-width = 17\cm
|
||||
ragged-last = ##t
|
||||
|
||||
\context {
|
||||
\Score
|
||||
\override BarNumber.extra-offset = #'(0 . 5)
|
||||
\override BarNumber.stencil =
|
||||
#(make-stencil-circler 0.1 0.25 ly:text-interface::print)
|
||||
}
|
||||
\context {
|
||||
\Staff
|
||||
\override StaffSymbol.line-count = #1
|
||||
\override Clef.stencil = #point-stencil
|
||||
\override Clef.space-alist.first-note = #'(extra-space . 1)
|
||||
\remove "Time_signature_engraver"
|
||||
}
|
||||
\context {
|
||||
\Voice
|
||||
\override Glissando.minimum-length = #0
|
||||
\override Glissando.layer = 500
|
||||
\override Glissando.breakable = ##t
|
||||
\override Glissando.bound-details =
|
||||
#'((right
|
||||
(attach-dir . -1)
|
||||
(end-on-accidental . #f)
|
||||
(padding . 0))
|
||||
(right-broken
|
||||
(padding . 0.5))
|
||||
(left-broken
|
||||
(padding . 0.5)
|
||||
(attach-dir . 1))
|
||||
(left
|
||||
(attach-dir . -1)
|
||||
(padding . -0.25)
|
||||
(start-at-dot . #f)))
|
||||
}
|
||||
}
|
||||
|
||||
% this draws a curve and a gradient
|
||||
#(define (make-grey-filled-curve-stencil-list x-coords colors half-thick rl)
|
||||
(if (null? (cdr x-coords))
|
||||
rl
|
||||
(make-grey-filled-curve-stencil-list
|
||||
(cdr x-coords)
|
||||
(cdr colors)
|
||||
half-thick
|
||||
(cons
|
||||
(stencil-with-color
|
||||
(make-filled-box-stencil
|
||||
(interval-widen (cons (car x-coords) (cadr x-coords)) 0.1)
|
||||
(cons (- half-thick) (- 9 (* 10 (car colors)))))
|
||||
(list (car colors) (car colors) (car colors)))
|
||||
rl))))
|
||||
|
||||
% this draws a just a line with a gradient
|
||||
#(define (make-grey-filled-box-stencil-list x-coords colors half-thick rl)
|
||||
(if (null? (cdr x-coords))
|
||||
rl
|
||||
(make-grey-filled-box-stencil-list
|
||||
(cdr x-coords)
|
||||
(cdr colors)
|
||||
half-thick
|
||||
(cons
|
||||
(stencil-with-color
|
||||
(make-filled-box-stencil
|
||||
(interval-widen (cons (car x-coords) (cadr x-coords)) 0.1)
|
||||
(cons (- half-thick) half-thick))
|
||||
(list (car colors) (car colors) (car colors)))
|
||||
rl))))
|
||||
|
||||
#(define my-gliss
|
||||
(lambda (grob)
|
||||
(if (ly:stencil? (ly:line-spanner::print grob))
|
||||
(let* ((stencil (ly:line-spanner::print grob))
|
||||
(X-ext (ly:stencil-extent stencil X))
|
||||
(Y-ext (ly:stencil-extent stencil Y))
|
||||
(Y-length (- (cdr Y-ext) (car Y-ext)))
|
||||
(left-bound-info (ly:grob-property grob 'left-bound-info))
|
||||
(left-Y (assoc-get 'Y left-bound-info))
|
||||
(thick
|
||||
(assoc-get 'thickness (ly:grob-property grob 'details) 0.5))
|
||||
(layout (ly:grob-layout grob))
|
||||
(blot (ly:output-def-lookup layout 'blot-diameter))
|
||||
(right-bound (ly:spanner-bound grob RIGHT))
|
||||
(right-par (ly:grob-parent right-bound X))
|
||||
(stem
|
||||
(if (grob::has-interface right-par 'note-column-interface)
|
||||
(ly:grob-object right-par 'stem)
|
||||
'()))
|
||||
(stem-stencil
|
||||
(if (ly:grob? stem)
|
||||
(ly:grob-property stem 'stencil)
|
||||
#f))
|
||||
(stem-thick
|
||||
(if (ly:stencil? stem-stencil)
|
||||
(interval-length (ly:stencil-extent stem-stencil X))
|
||||
0))
|
||||
(corr-delta-X (- (interval-length X-ext)
|
||||
Y-length
|
||||
blot
|
||||
stem-thick
|
||||
;; mmh, why this value??
|
||||
-0.05))
|
||||
(colors
|
||||
(assoc-get 'colors (ly:grob-property grob 'details)
|
||||
(list 0 .5 .8)))
|
||||
(steps
|
||||
(length colors))
|
||||
(raw-x-coords
|
||||
(iota (1+ (abs steps)) 0 (/ corr-delta-X (abs steps))))
|
||||
(x-coords
|
||||
(map
|
||||
(lambda (e)
|
||||
(+ (car X-ext) Y-length blot e))
|
||||
raw-x-coords)))
|
||||
|
||||
;; create a flat glissando
|
||||
(ly:grob-set-nested-property! grob '(right-bound-info Y) left-Y)
|
||||
|
||||
;; return the stencil of added boxes
|
||||
(ly:stencil-translate-axis
|
||||
(apply
|
||||
ly:stencil-add
|
||||
;; change this to make-grey-filled-box-stencil-list to eleminate curve and just use gradient
|
||||
(make-grey-filled-curve-stencil-list
|
||||
x-coords
|
||||
colors
|
||||
thick
|
||||
'()))
|
||||
;; the actual offset is TODO, hardcoded here
|
||||
3.5
|
||||
Y))
|
||||
#f)))
|
||||
|
||||
#(define (add-gliss m)
|
||||
(case (ly:music-property m 'name)
|
||||
((NoteEvent)
|
||||
(set! (ly:music-property m 'articulations)
|
||||
(append
|
||||
(ly:music-property m 'articulations)
|
||||
(list (make-music 'GlissandoEvent))))
|
||||
m)
|
||||
(else #f)))
|
||||
|
||||
addGliss =
|
||||
#(define-music-function (music)
|
||||
(ly:music?)
|
||||
(map-some-music add-gliss music))
|
||||
|
||||
|
||||
\new Score
|
||||
\with {proportionalNotationDuration = #(ly:make-moment 1 16)}
|
||||
<<
|
||||
\new StaffGroup \with{
|
||||
\override StaffGrouper.staff-staff-spacing =
|
||||
#'((basic-distance . 13)
|
||||
(minimum-distance . 13)
|
||||
(padding . 0)
|
||||
(stretchability . 0))
|
||||
\override StaffGrouper.staffgroup-staff-spacing =
|
||||
#'((basic-distance . 13)
|
||||
(minimum-distance . 13)
|
||||
(padding . 0)
|
||||
(stretchability . 0))
|
||||
}
|
||||
<<
|
||||
|
||||
% uncomment these lines to view harmonics of hl 6
|
||||
% also change systems-per-page to 2 manually above
|
||||
%{
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 6 " "(harm 13) "}
|
||||
shortInstrumentName = #"hl6 (h13) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 17 { \repeat unfold 7 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_6_harm_13.ly"
|
||||
>>
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 6 " "(harm 9) "}
|
||||
shortInstrumentName = #"hl6 (h9) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 17 { \repeat unfold 7 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_6_harm_9.ly"
|
||||
>>
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 6 " "(harm 5) "}
|
||||
shortInstrumentName = #"hl6 (h5) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 17 { \repeat unfold 7 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_6_harm_5.ly"
|
||||
>>
|
||||
%}
|
||||
|
||||
%{~~hl6~~
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 6 " "(harm 1) "}
|
||||
shortInstrumentName = #"hl6 (h1) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 17 { \repeat unfold 7 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_6_harm_1.ly"
|
||||
>>
|
||||
%}
|
||||
>>
|
||||
|
||||
\new StaffGroup \with{
|
||||
\override StaffGrouper.staff-staff-spacing =
|
||||
#'((basic-distance . 9)
|
||||
(minimum-distance . 9)
|
||||
(padding . 0)
|
||||
(stretchability . 0))
|
||||
}
|
||||
<<
|
||||
%{~~hl5~~
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 5" "(high noise)"}
|
||||
shortInstrumentName = #"hl5 (hn) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 17 { \repeat unfold 7 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_5.ly"
|
||||
>>
|
||||
%}
|
||||
|
||||
%~~hl4-start~~
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 4 " "(low noise)"}
|
||||
shortInstrumentName = #"hl4 (ln) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 17 { \repeat unfold 7 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_4.ly"
|
||||
>>
|
||||
%~~hl4-end~~
|
||||
>>
|
||||
>>
|
@ -0,0 +1,298 @@
|
||||
\version "2.19.81"
|
||||
|
||||
% systems-per-page, unfold vars, and strings delimited by tildes
|
||||
% are changed by the Supercollider transcriber
|
||||
|
||||
\paper {
|
||||
#(set-paper-size "a4" 'portrait)
|
||||
top-margin = 1 \cm
|
||||
bottom-margin = 1 \cm
|
||||
left-margin = 2.5 \cm
|
||||
|
||||
top-system-spacing =
|
||||
#'((basic-distance . 25 )
|
||||
(minimum-distance . 25 )
|
||||
(padding . 0 )
|
||||
(stretchability . 0))
|
||||
|
||||
last-bottom-spacing =
|
||||
#'((basic-distance . 15 )
|
||||
(minimum-distance . 15 )
|
||||
(padding . 0 )
|
||||
(stretchability . 0))
|
||||
|
||||
% manually change systems-per-page to 2 if the harmonics of hl 6 are uncommented below
|
||||
systems-per-page = 8
|
||||
|
||||
print-page-number = ##t
|
||||
oddHeaderMarkup = \markup { \on-the-fly #not-first-page "(part - hl 5 - 2321101)" }
|
||||
evenHeaderMarkup = \markup { \on-the-fly #not-first-page "(part - hl 5 - 2321101)" }
|
||||
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 {a lot of tiles (trivial scan)}}
|
||||
subtitle = \markup { \normal-text {2321101}}
|
||||
composer = \markup \left-column {"michael winter" "(cdmx, mx and nashville, usa; 2018)"}
|
||||
piece = \markup { \normal-text {part - hl 5 - 2321101}}
|
||||
tagline = ""
|
||||
}
|
||||
|
||||
#(set-global-staff-size 15)
|
||||
|
||||
\layout {
|
||||
indent = 0.0\cm
|
||||
line-width = 17\cm
|
||||
ragged-last = ##t
|
||||
|
||||
\context {
|
||||
\Score
|
||||
\override BarNumber.extra-offset = #'(0 . 5)
|
||||
\override BarNumber.stencil =
|
||||
#(make-stencil-circler 0.1 0.25 ly:text-interface::print)
|
||||
}
|
||||
\context {
|
||||
\Staff
|
||||
\override StaffSymbol.line-count = #1
|
||||
\override Clef.stencil = #point-stencil
|
||||
\override Clef.space-alist.first-note = #'(extra-space . 1)
|
||||
\remove "Time_signature_engraver"
|
||||
}
|
||||
\context {
|
||||
\Voice
|
||||
\override Glissando.minimum-length = #0
|
||||
\override Glissando.layer = 500
|
||||
\override Glissando.breakable = ##t
|
||||
\override Glissando.bound-details =
|
||||
#'((right
|
||||
(attach-dir . -1)
|
||||
(end-on-accidental . #f)
|
||||
(padding . 0))
|
||||
(right-broken
|
||||
(padding . 0.5))
|
||||
(left-broken
|
||||
(padding . 0.5)
|
||||
(attach-dir . 1))
|
||||
(left
|
||||
(attach-dir . -1)
|
||||
(padding . -0.25)
|
||||
(start-at-dot . #f)))
|
||||
}
|
||||
}
|
||||
|
||||
% this draws a curve and a gradient
|
||||
#(define (make-grey-filled-curve-stencil-list x-coords colors half-thick rl)
|
||||
(if (null? (cdr x-coords))
|
||||
rl
|
||||
(make-grey-filled-curve-stencil-list
|
||||
(cdr x-coords)
|
||||
(cdr colors)
|
||||
half-thick
|
||||
(cons
|
||||
(stencil-with-color
|
||||
(make-filled-box-stencil
|
||||
(interval-widen (cons (car x-coords) (cadr x-coords)) 0.1)
|
||||
(cons (- half-thick) (- 9 (* 10 (car colors)))))
|
||||
(list (car colors) (car colors) (car colors)))
|
||||
rl))))
|
||||
|
||||
% this draws a just a line with a gradient
|
||||
#(define (make-grey-filled-box-stencil-list x-coords colors half-thick rl)
|
||||
(if (null? (cdr x-coords))
|
||||
rl
|
||||
(make-grey-filled-box-stencil-list
|
||||
(cdr x-coords)
|
||||
(cdr colors)
|
||||
half-thick
|
||||
(cons
|
||||
(stencil-with-color
|
||||
(make-filled-box-stencil
|
||||
(interval-widen (cons (car x-coords) (cadr x-coords)) 0.1)
|
||||
(cons (- half-thick) half-thick))
|
||||
(list (car colors) (car colors) (car colors)))
|
||||
rl))))
|
||||
|
||||
#(define my-gliss
|
||||
(lambda (grob)
|
||||
(if (ly:stencil? (ly:line-spanner::print grob))
|
||||
(let* ((stencil (ly:line-spanner::print grob))
|
||||
(X-ext (ly:stencil-extent stencil X))
|
||||
(Y-ext (ly:stencil-extent stencil Y))
|
||||
(Y-length (- (cdr Y-ext) (car Y-ext)))
|
||||
(left-bound-info (ly:grob-property grob 'left-bound-info))
|
||||
(left-Y (assoc-get 'Y left-bound-info))
|
||||
(thick
|
||||
(assoc-get 'thickness (ly:grob-property grob 'details) 0.5))
|
||||
(layout (ly:grob-layout grob))
|
||||
(blot (ly:output-def-lookup layout 'blot-diameter))
|
||||
(right-bound (ly:spanner-bound grob RIGHT))
|
||||
(right-par (ly:grob-parent right-bound X))
|
||||
(stem
|
||||
(if (grob::has-interface right-par 'note-column-interface)
|
||||
(ly:grob-object right-par 'stem)
|
||||
'()))
|
||||
(stem-stencil
|
||||
(if (ly:grob? stem)
|
||||
(ly:grob-property stem 'stencil)
|
||||
#f))
|
||||
(stem-thick
|
||||
(if (ly:stencil? stem-stencil)
|
||||
(interval-length (ly:stencil-extent stem-stencil X))
|
||||
0))
|
||||
(corr-delta-X (- (interval-length X-ext)
|
||||
Y-length
|
||||
blot
|
||||
stem-thick
|
||||
;; mmh, why this value??
|
||||
-0.05))
|
||||
(colors
|
||||
(assoc-get 'colors (ly:grob-property grob 'details)
|
||||
(list 0 .5 .8)))
|
||||
(steps
|
||||
(length colors))
|
||||
(raw-x-coords
|
||||
(iota (1+ (abs steps)) 0 (/ corr-delta-X (abs steps))))
|
||||
(x-coords
|
||||
(map
|
||||
(lambda (e)
|
||||
(+ (car X-ext) Y-length blot e))
|
||||
raw-x-coords)))
|
||||
|
||||
;; create a flat glissando
|
||||
(ly:grob-set-nested-property! grob '(right-bound-info Y) left-Y)
|
||||
|
||||
;; return the stencil of added boxes
|
||||
(ly:stencil-translate-axis
|
||||
(apply
|
||||
ly:stencil-add
|
||||
;; change this to make-grey-filled-box-stencil-list to eleminate curve and just use gradient
|
||||
(make-grey-filled-curve-stencil-list
|
||||
x-coords
|
||||
colors
|
||||
thick
|
||||
'()))
|
||||
;; the actual offset is TODO, hardcoded here
|
||||
3.5
|
||||
Y))
|
||||
#f)))
|
||||
|
||||
#(define (add-gliss m)
|
||||
(case (ly:music-property m 'name)
|
||||
((NoteEvent)
|
||||
(set! (ly:music-property m 'articulations)
|
||||
(append
|
||||
(ly:music-property m 'articulations)
|
||||
(list (make-music 'GlissandoEvent))))
|
||||
m)
|
||||
(else #f)))
|
||||
|
||||
addGliss =
|
||||
#(define-music-function (music)
|
||||
(ly:music?)
|
||||
(map-some-music add-gliss music))
|
||||
|
||||
|
||||
\new Score
|
||||
\with {proportionalNotationDuration = #(ly:make-moment 1 16)}
|
||||
<<
|
||||
\new StaffGroup \with{
|
||||
\override StaffGrouper.staff-staff-spacing =
|
||||
#'((basic-distance . 13)
|
||||
(minimum-distance . 13)
|
||||
(padding . 0)
|
||||
(stretchability . 0))
|
||||
\override StaffGrouper.staffgroup-staff-spacing =
|
||||
#'((basic-distance . 13)
|
||||
(minimum-distance . 13)
|
||||
(padding . 0)
|
||||
(stretchability . 0))
|
||||
}
|
||||
<<
|
||||
|
||||
% uncomment these lines to view harmonics of hl 6
|
||||
% also change systems-per-page to 2 manually above
|
||||
%{
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 6 " "(harm 13) "}
|
||||
shortInstrumentName = #"hl6 (h13) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 17 { \repeat unfold 7 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_6_harm_13.ly"
|
||||
>>
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 6 " "(harm 9) "}
|
||||
shortInstrumentName = #"hl6 (h9) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 17 { \repeat unfold 7 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_6_harm_9.ly"
|
||||
>>
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 6 " "(harm 5) "}
|
||||
shortInstrumentName = #"hl6 (h5) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 17 { \repeat unfold 7 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_6_harm_5.ly"
|
||||
>>
|
||||
%}
|
||||
|
||||
%{~~hl6~~
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 6 " "(harm 1) "}
|
||||
shortInstrumentName = #"hl6 (h1) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 17 { \repeat unfold 7 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_6_harm_1.ly"
|
||||
>>
|
||||
%}
|
||||
>>
|
||||
|
||||
\new StaffGroup \with{
|
||||
\override StaffGrouper.staff-staff-spacing =
|
||||
#'((basic-distance . 9)
|
||||
(minimum-distance . 9)
|
||||
(padding . 0)
|
||||
(stretchability . 0))
|
||||
}
|
||||
<<
|
||||
%~~hl5-start~~
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 5" "(high noise)"}
|
||||
shortInstrumentName = #"hl5 (hn) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 17 { \repeat unfold 7 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_5.ly"
|
||||
>>
|
||||
%~~hl5-end~~
|
||||
|
||||
%{~~hl4~~
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 4 " "(low noise)"}
|
||||
shortInstrumentName = #"hl4 (ln) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 17 { \repeat unfold 7 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_4.ly"
|
||||
>>
|
||||
%}
|
||||
>>
|
||||
>>
|
@ -0,0 +1,298 @@
|
||||
\version "2.19.81"
|
||||
|
||||
% systems-per-page, unfold vars, and strings delimited by tildes
|
||||
% are changed by the Supercollider transcriber
|
||||
|
||||
\paper {
|
||||
#(set-paper-size "a4" 'portrait)
|
||||
top-margin = 1 \cm
|
||||
bottom-margin = 1 \cm
|
||||
left-margin = 2.5 \cm
|
||||
|
||||
top-system-spacing =
|
||||
#'((basic-distance . 25 )
|
||||
(minimum-distance . 25 )
|
||||
(padding . 0 )
|
||||
(stretchability . 0))
|
||||
|
||||
last-bottom-spacing =
|
||||
#'((basic-distance . 15 )
|
||||
(minimum-distance . 15 )
|
||||
(padding . 0 )
|
||||
(stretchability . 0))
|
||||
|
||||
% manually change systems-per-page to 2 if the harmonics of hl 6 are uncommented below
|
||||
systems-per-page = 8
|
||||
|
||||
print-page-number = ##t
|
||||
oddHeaderMarkup = \markup { \on-the-fly #not-first-page "(part - hl 6 - 2321101)" }
|
||||
evenHeaderMarkup = \markup { \on-the-fly #not-first-page "(part - hl 6 - 2321101)" }
|
||||
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 {a lot of tiles (trivial scan)}}
|
||||
subtitle = \markup { \normal-text {2321101}}
|
||||
composer = \markup \left-column {"michael winter" "(cdmx, mx and nashville, usa; 2018)"}
|
||||
piece = \markup { \normal-text {part - hl 6 - 2321101}}
|
||||
tagline = ""
|
||||
}
|
||||
|
||||
#(set-global-staff-size 15)
|
||||
|
||||
\layout {
|
||||
indent = 0.0\cm
|
||||
line-width = 17\cm
|
||||
ragged-last = ##t
|
||||
|
||||
\context {
|
||||
\Score
|
||||
\override BarNumber.extra-offset = #'(0 . 5)
|
||||
\override BarNumber.stencil =
|
||||
#(make-stencil-circler 0.1 0.25 ly:text-interface::print)
|
||||
}
|
||||
\context {
|
||||
\Staff
|
||||
\override StaffSymbol.line-count = #1
|
||||
\override Clef.stencil = #point-stencil
|
||||
\override Clef.space-alist.first-note = #'(extra-space . 1)
|
||||
\remove "Time_signature_engraver"
|
||||
}
|
||||
\context {
|
||||
\Voice
|
||||
\override Glissando.minimum-length = #0
|
||||
\override Glissando.layer = 500
|
||||
\override Glissando.breakable = ##t
|
||||
\override Glissando.bound-details =
|
||||
#'((right
|
||||
(attach-dir . -1)
|
||||
(end-on-accidental . #f)
|
||||
(padding . 0))
|
||||
(right-broken
|
||||
(padding . 0.5))
|
||||
(left-broken
|
||||
(padding . 0.5)
|
||||
(attach-dir . 1))
|
||||
(left
|
||||
(attach-dir . -1)
|
||||
(padding . -0.25)
|
||||
(start-at-dot . #f)))
|
||||
}
|
||||
}
|
||||
|
||||
% this draws a curve and a gradient
|
||||
#(define (make-grey-filled-curve-stencil-list x-coords colors half-thick rl)
|
||||
(if (null? (cdr x-coords))
|
||||
rl
|
||||
(make-grey-filled-curve-stencil-list
|
||||
(cdr x-coords)
|
||||
(cdr colors)
|
||||
half-thick
|
||||
(cons
|
||||
(stencil-with-color
|
||||
(make-filled-box-stencil
|
||||
(interval-widen (cons (car x-coords) (cadr x-coords)) 0.1)
|
||||
(cons (- half-thick) (- 9 (* 10 (car colors)))))
|
||||
(list (car colors) (car colors) (car colors)))
|
||||
rl))))
|
||||
|
||||
% this draws a just a line with a gradient
|
||||
#(define (make-grey-filled-box-stencil-list x-coords colors half-thick rl)
|
||||
(if (null? (cdr x-coords))
|
||||
rl
|
||||
(make-grey-filled-box-stencil-list
|
||||
(cdr x-coords)
|
||||
(cdr colors)
|
||||
half-thick
|
||||
(cons
|
||||
(stencil-with-color
|
||||
(make-filled-box-stencil
|
||||
(interval-widen (cons (car x-coords) (cadr x-coords)) 0.1)
|
||||
(cons (- half-thick) half-thick))
|
||||
(list (car colors) (car colors) (car colors)))
|
||||
rl))))
|
||||
|
||||
#(define my-gliss
|
||||
(lambda (grob)
|
||||
(if (ly:stencil? (ly:line-spanner::print grob))
|
||||
(let* ((stencil (ly:line-spanner::print grob))
|
||||
(X-ext (ly:stencil-extent stencil X))
|
||||
(Y-ext (ly:stencil-extent stencil Y))
|
||||
(Y-length (- (cdr Y-ext) (car Y-ext)))
|
||||
(left-bound-info (ly:grob-property grob 'left-bound-info))
|
||||
(left-Y (assoc-get 'Y left-bound-info))
|
||||
(thick
|
||||
(assoc-get 'thickness (ly:grob-property grob 'details) 0.5))
|
||||
(layout (ly:grob-layout grob))
|
||||
(blot (ly:output-def-lookup layout 'blot-diameter))
|
||||
(right-bound (ly:spanner-bound grob RIGHT))
|
||||
(right-par (ly:grob-parent right-bound X))
|
||||
(stem
|
||||
(if (grob::has-interface right-par 'note-column-interface)
|
||||
(ly:grob-object right-par 'stem)
|
||||
'()))
|
||||
(stem-stencil
|
||||
(if (ly:grob? stem)
|
||||
(ly:grob-property stem 'stencil)
|
||||
#f))
|
||||
(stem-thick
|
||||
(if (ly:stencil? stem-stencil)
|
||||
(interval-length (ly:stencil-extent stem-stencil X))
|
||||
0))
|
||||
(corr-delta-X (- (interval-length X-ext)
|
||||
Y-length
|
||||
blot
|
||||
stem-thick
|
||||
;; mmh, why this value??
|
||||
-0.05))
|
||||
(colors
|
||||
(assoc-get 'colors (ly:grob-property grob 'details)
|
||||
(list 0 .5 .8)))
|
||||
(steps
|
||||
(length colors))
|
||||
(raw-x-coords
|
||||
(iota (1+ (abs steps)) 0 (/ corr-delta-X (abs steps))))
|
||||
(x-coords
|
||||
(map
|
||||
(lambda (e)
|
||||
(+ (car X-ext) Y-length blot e))
|
||||
raw-x-coords)))
|
||||
|
||||
;; create a flat glissando
|
||||
(ly:grob-set-nested-property! grob '(right-bound-info Y) left-Y)
|
||||
|
||||
;; return the stencil of added boxes
|
||||
(ly:stencil-translate-axis
|
||||
(apply
|
||||
ly:stencil-add
|
||||
;; change this to make-grey-filled-box-stencil-list to eleminate curve and just use gradient
|
||||
(make-grey-filled-curve-stencil-list
|
||||
x-coords
|
||||
colors
|
||||
thick
|
||||
'()))
|
||||
;; the actual offset is TODO, hardcoded here
|
||||
3.5
|
||||
Y))
|
||||
#f)))
|
||||
|
||||
#(define (add-gliss m)
|
||||
(case (ly:music-property m 'name)
|
||||
((NoteEvent)
|
||||
(set! (ly:music-property m 'articulations)
|
||||
(append
|
||||
(ly:music-property m 'articulations)
|
||||
(list (make-music 'GlissandoEvent))))
|
||||
m)
|
||||
(else #f)))
|
||||
|
||||
addGliss =
|
||||
#(define-music-function (music)
|
||||
(ly:music?)
|
||||
(map-some-music add-gliss music))
|
||||
|
||||
|
||||
\new Score
|
||||
\with {proportionalNotationDuration = #(ly:make-moment 1 16)}
|
||||
<<
|
||||
\new StaffGroup \with{
|
||||
\override StaffGrouper.staff-staff-spacing =
|
||||
#'((basic-distance . 13)
|
||||
(minimum-distance . 13)
|
||||
(padding . 0)
|
||||
(stretchability . 0))
|
||||
\override StaffGrouper.staffgroup-staff-spacing =
|
||||
#'((basic-distance . 13)
|
||||
(minimum-distance . 13)
|
||||
(padding . 0)
|
||||
(stretchability . 0))
|
||||
}
|
||||
<<
|
||||
|
||||
% uncomment these lines to view harmonics of hl 6
|
||||
% also change systems-per-page to 2 manually above
|
||||
%{
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 6 " "(harm 13) "}
|
||||
shortInstrumentName = #"hl6 (h13) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 33 { \repeat unfold 3 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_6_harm_13.ly"
|
||||
>>
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 6 " "(harm 9) "}
|
||||
shortInstrumentName = #"hl6 (h9) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 33 { \repeat unfold 3 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_6_harm_9.ly"
|
||||
>>
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 6 " "(harm 5) "}
|
||||
shortInstrumentName = #"hl6 (h5) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 33 { \repeat unfold 3 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_6_harm_5.ly"
|
||||
>>
|
||||
%}
|
||||
|
||||
%~~hl6-start~~
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 6 " "(harm 1) "}
|
||||
shortInstrumentName = #"hl6 (h1) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 33 { \repeat unfold 3 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_6_harm_1.ly"
|
||||
>>
|
||||
%~~hl6-end~~
|
||||
>>
|
||||
|
||||
\new StaffGroup \with{
|
||||
\override StaffGrouper.staff-staff-spacing =
|
||||
#'((basic-distance . 9)
|
||||
(minimum-distance . 9)
|
||||
(padding . 0)
|
||||
(stretchability . 0))
|
||||
}
|
||||
<<
|
||||
%{~~hl5~~
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 5" "(high noise)"}
|
||||
shortInstrumentName = #"hl5 (hn) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 33 { \repeat unfold 3 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_5.ly"
|
||||
>>
|
||||
%}
|
||||
|
||||
%{~~hl4~~
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 4 " "(low noise)"}
|
||||
shortInstrumentName = #"hl4 (ln) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 33 { \repeat unfold 3 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_4.ly"
|
||||
>>
|
||||
%}
|
||||
>>
|
||||
>>
|
@ -0,0 +1,259 @@
|
||||
{
|
||||
|
|
||||
b'1 ^1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^0 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^1 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^0 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^1 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^0 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^1 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^0 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^1 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^0 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^0 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'1 ^0 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'1 ^0 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^0 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'1 ^0 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'1 ^0
|
||||
|
|
||||
b'1 ^1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^0 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'1 ^0
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'1 ^0
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'1 ^0 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'1 ^0
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'1 ^0
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'1 ^0
|
||||
|
|
||||
b'1 ^1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^0
|
||||
|
|
||||
b'1 ^1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^0 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'1 ^0
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'1 ^0
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'1 ^0 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'1 ^0
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'1 ^0
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'1 ^0
|
||||
|
|
||||
b'1 ^1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^0 ~
|
||||
|
|
||||
b'1 \bar "|." \stopStaff \hide b'1}
|
@ -0,0 +1,259 @@
|
||||
{
|
||||
|
|
||||
b'1 ^1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^0 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'4 b'2 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'4 b'2 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'4 b'2 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'4 b'2 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'4 b'2 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'4 b'2 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'4 b'2 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'4 b'2 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'4 b'2. ^1 ~
|
||||
|
|
||||
b'2. b'4 ^0 ~
|
||||
|
|
||||
b'4 b'2. ^1 ~
|
||||
|
|
||||
b'2. b'4 ^0 ~
|
||||
|
|
||||
b'4 b'4 ^1 b'2 ^0 ~
|
||||
|
|
||||
b'2 b'4 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'4 b'4 ^1 b'2 ^0 ~
|
||||
|
|
||||
b'2 b'4 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'4 b'2. ^1 ~
|
||||
|
|
||||
b'2. b'4 ^0 ~
|
||||
|
|
||||
b'4 b'2. ^1 ~
|
||||
|
|
||||
b'2. b'4 ^0 ~
|
||||
|
|
||||
b'4 b'4 ^1 b'2 ^0 ~
|
||||
|
|
||||
b'2 b'4 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'4 b'4 ^1 b'2 ^0 ~
|
||||
|
|
||||
b'2 b'4 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'4 b'2. ^1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'2. b'4 ^0 ~
|
||||
|
|
||||
b'4 b'4 ^1 b'2 ^0 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'2 b'4 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'4 b'4 ^1 b'2 ^0 ~
|
||||
|
|
||||
b'4 b'4 ^1 b'4 ^0 b'4 ^1 ~
|
||||
|
|
||||
b'4 b'4 ^0 b'4 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'2 b'4 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'4 b'2. ^1
|
||||
|
|
||||
b'4 ^0 b'4 ^1 b'4 ^0 b'4 ^1 ~
|
||||
|
|
||||
b'4 b'4 ^0 b'4 ^1 b'4 ^0
|
||||
|
|
||||
b'2. ^1 b'4 ^0 ~
|
||||
|
|
||||
b'4 b'2. ^1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'2. b'4 ^0 ~
|
||||
|
|
||||
b'4 b'4 ^1 b'2 ^0 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'2 b'4 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'4 b'4 ^1 b'2 ^0 ~
|
||||
|
|
||||
b'4 b'4 ^1 b'4 ^0 b'4 ^1 ~
|
||||
|
|
||||
b'4 b'4 ^0 b'4 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'2 b'4 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'4 b'2. ^1
|
||||
|
|
||||
b'4 ^0 b'4 ^1 b'4 ^0 b'4 ^1 ~
|
||||
|
|
||||
b'4 b'4 ^0 b'4 ^1 b'4 ^0
|
||||
|
|
||||
b'2. ^1 b'4 ^0
|
||||
|
|
||||
b'1 ^1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'2. b'4 ^0 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'2 b'4 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'4 b'2 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'4 b'2 ^1 b'4 ^0
|
||||
|
|
||||
b'4 ^1 b'4 ^0 b'4 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'2 b'4 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'4 b'2 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'4 b'2 ^1 b'4 ^0
|
||||
|
|
||||
b'4 ^1 b'4 ^0 b'4 ^1 b'4 ^0
|
||||
|
|
||||
b'2. ^1 b'4 ^0
|
||||
|
|
||||
b'2. ^1 b'4 ^0
|
||||
|
|
||||
b'2. ^1 b'4 ^0
|
||||
|
|
||||
b'4 ^1 b'4 ^0 b'4 ^1 b'4 ^0
|
||||
|
|
||||
b'2. ^1 b'4 ^0 ~
|
||||
|
|
||||
b'2 b'4 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'2 b'4 ^1 b'4 ^0
|
||||
|
|
||||
b'4 ^1 b'4 ^0 b'4 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'2 b'4 ^1 b'4 ^0
|
||||
|
|
||||
b'2. ^1 b'4 ^0
|
||||
|
|
||||
b'2. ^1 b'4 ^0 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'2 b'4 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'2 b'4 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'2 b'4 ^1 b'4 ^0
|
||||
|
|
||||
b'1 ^1 ~
|
||||
|
|
||||
b'2. b'4 ^0
|
||||
|
|
||||
b'1 ^1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'2. b'4 ^0 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'2 b'4 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'4 b'2 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'4 b'2 ^1 b'4 ^0
|
||||
|
|
||||
b'4 ^1 b'4 ^0 b'4 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'2 b'4 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'4 b'2 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'4 b'2 ^1 b'4 ^0
|
||||
|
|
||||
b'4 ^1 b'4 ^0 b'4 ^1 b'4 ^0
|
||||
|
|
||||
b'2. ^1 b'4 ^0
|
||||
|
|
||||
b'2. ^1 b'4 ^0
|
||||
|
|
||||
b'2. ^1 b'4 ^0
|
||||
|
|
||||
b'4 ^1 b'4 ^0 b'4 ^1 b'4 ^0
|
||||
|
|
||||
b'2. ^1 b'4 ^0 ~
|
||||
|
|
||||
b'2 b'4 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'2 b'4 ^1 b'4 ^0
|
||||
|
|
||||
b'4 ^1 b'4 ^0 b'4 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'2 b'4 ^1 b'4 ^0
|
||||
|
|
||||
b'2. ^1 b'4 ^0
|
||||
|
|
||||
b'2. ^1 b'4 ^0 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'2 b'4 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'2 b'4 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'2 b'4 ^1 b'4 ^0
|
||||
|
|
||||
b'1 ^1 ~
|
||||
|
|
||||
b'2. b'4 ^0 ~
|
||||
|
|
||||
b'1 \bar "|." \stopStaff \hide b'1}
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -0,0 +1,298 @@
|
||||
\version "2.19.81"
|
||||
|
||||
% systems-per-page, unfold vars, and strings delimited by tildes
|
||||
% are changed by the Supercollider transcriber
|
||||
|
||||
\paper {
|
||||
#(set-paper-size "a4" 'portrait)
|
||||
top-margin = 1 \cm
|
||||
bottom-margin = 1 \cm
|
||||
left-margin = 2.5 \cm
|
||||
|
||||
top-system-spacing =
|
||||
#'((basic-distance . 25 )
|
||||
(minimum-distance . 25 )
|
||||
(padding . 0 )
|
||||
(stretchability . 0))
|
||||
|
||||
last-bottom-spacing =
|
||||
#'((basic-distance . 15 )
|
||||
(minimum-distance . 15 )
|
||||
(padding . 0 )
|
||||
(stretchability . 0))
|
||||
|
||||
% manually change systems-per-page to 2 if the harmonics of hl 6 are uncommented below
|
||||
systems-per-page = 4
|
||||
|
||||
print-page-number = ##t
|
||||
oddHeaderMarkup = \markup { \on-the-fly #not-first-page "(master score - 3231310)" }
|
||||
evenHeaderMarkup = \markup { \on-the-fly #not-first-page "(master score - 3231310)" }
|
||||
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 {a lot of tiles (trivial scan)}}
|
||||
subtitle = \markup { \normal-text {3231310}}
|
||||
composer = \markup \left-column {"michael winter" "(cdmx, mx and nashville, usa; 2018)"}
|
||||
piece = \markup { \normal-text {master score - 3231310}}
|
||||
tagline = ""
|
||||
}
|
||||
|
||||
#(set-global-staff-size 15)
|
||||
|
||||
\layout {
|
||||
indent = 0.0\cm
|
||||
line-width = 17\cm
|
||||
ragged-last = ##t
|
||||
|
||||
\context {
|
||||
\Score
|
||||
\override BarNumber.extra-offset = #'(0 . 5)
|
||||
\override BarNumber.stencil =
|
||||
#(make-stencil-circler 0.1 0.25 ly:text-interface::print)
|
||||
}
|
||||
\context {
|
||||
\Staff
|
||||
\override StaffSymbol.line-count = #1
|
||||
\override Clef.stencil = #point-stencil
|
||||
\override Clef.space-alist.first-note = #'(extra-space . 1)
|
||||
\remove "Time_signature_engraver"
|
||||
}
|
||||
\context {
|
||||
\Voice
|
||||
\override Glissando.minimum-length = #0
|
||||
\override Glissando.layer = 500
|
||||
\override Glissando.breakable = ##t
|
||||
\override Glissando.bound-details =
|
||||
#'((right
|
||||
(attach-dir . -1)
|
||||
(end-on-accidental . #f)
|
||||
(padding . 0))
|
||||
(right-broken
|
||||
(padding . 0.5))
|
||||
(left-broken
|
||||
(padding . 0.5)
|
||||
(attach-dir . 1))
|
||||
(left
|
||||
(attach-dir . -1)
|
||||
(padding . -0.25)
|
||||
(start-at-dot . #f)))
|
||||
}
|
||||
}
|
||||
|
||||
% this draws a curve and a gradient
|
||||
#(define (make-grey-filled-curve-stencil-list x-coords colors half-thick rl)
|
||||
(if (null? (cdr x-coords))
|
||||
rl
|
||||
(make-grey-filled-curve-stencil-list
|
||||
(cdr x-coords)
|
||||
(cdr colors)
|
||||
half-thick
|
||||
(cons
|
||||
(stencil-with-color
|
||||
(make-filled-box-stencil
|
||||
(interval-widen (cons (car x-coords) (cadr x-coords)) 0.1)
|
||||
(cons (- half-thick) (- 9 (* 10 (car colors)))))
|
||||
(list (car colors) (car colors) (car colors)))
|
||||
rl))))
|
||||
|
||||
% this draws a just a line with a gradient
|
||||
#(define (make-grey-filled-box-stencil-list x-coords colors half-thick rl)
|
||||
(if (null? (cdr x-coords))
|
||||
rl
|
||||
(make-grey-filled-box-stencil-list
|
||||
(cdr x-coords)
|
||||
(cdr colors)
|
||||
half-thick
|
||||
(cons
|
||||
(stencil-with-color
|
||||
(make-filled-box-stencil
|
||||
(interval-widen (cons (car x-coords) (cadr x-coords)) 0.1)
|
||||
(cons (- half-thick) half-thick))
|
||||
(list (car colors) (car colors) (car colors)))
|
||||
rl))))
|
||||
|
||||
#(define my-gliss
|
||||
(lambda (grob)
|
||||
(if (ly:stencil? (ly:line-spanner::print grob))
|
||||
(let* ((stencil (ly:line-spanner::print grob))
|
||||
(X-ext (ly:stencil-extent stencil X))
|
||||
(Y-ext (ly:stencil-extent stencil Y))
|
||||
(Y-length (- (cdr Y-ext) (car Y-ext)))
|
||||
(left-bound-info (ly:grob-property grob 'left-bound-info))
|
||||
(left-Y (assoc-get 'Y left-bound-info))
|
||||
(thick
|
||||
(assoc-get 'thickness (ly:grob-property grob 'details) 0.5))
|
||||
(layout (ly:grob-layout grob))
|
||||
(blot (ly:output-def-lookup layout 'blot-diameter))
|
||||
(right-bound (ly:spanner-bound grob RIGHT))
|
||||
(right-par (ly:grob-parent right-bound X))
|
||||
(stem
|
||||
(if (grob::has-interface right-par 'note-column-interface)
|
||||
(ly:grob-object right-par 'stem)
|
||||
'()))
|
||||
(stem-stencil
|
||||
(if (ly:grob? stem)
|
||||
(ly:grob-property stem 'stencil)
|
||||
#f))
|
||||
(stem-thick
|
||||
(if (ly:stencil? stem-stencil)
|
||||
(interval-length (ly:stencil-extent stem-stencil X))
|
||||
0))
|
||||
(corr-delta-X (- (interval-length X-ext)
|
||||
Y-length
|
||||
blot
|
||||
stem-thick
|
||||
;; mmh, why this value??
|
||||
-0.05))
|
||||
(colors
|
||||
(assoc-get 'colors (ly:grob-property grob 'details)
|
||||
(list 0 .5 .8)))
|
||||
(steps
|
||||
(length colors))
|
||||
(raw-x-coords
|
||||
(iota (1+ (abs steps)) 0 (/ corr-delta-X (abs steps))))
|
||||
(x-coords
|
||||
(map
|
||||
(lambda (e)
|
||||
(+ (car X-ext) Y-length blot e))
|
||||
raw-x-coords)))
|
||||
|
||||
;; create a flat glissando
|
||||
(ly:grob-set-nested-property! grob '(right-bound-info Y) left-Y)
|
||||
|
||||
;; return the stencil of added boxes
|
||||
(ly:stencil-translate-axis
|
||||
(apply
|
||||
ly:stencil-add
|
||||
;; change this to make-grey-filled-box-stencil-list to eleminate curve and just use gradient
|
||||
(make-grey-filled-curve-stencil-list
|
||||
x-coords
|
||||
colors
|
||||
thick
|
||||
'()))
|
||||
;; the actual offset is TODO, hardcoded here
|
||||
3.5
|
||||
Y))
|
||||
#f)))
|
||||
|
||||
#(define (add-gliss m)
|
||||
(case (ly:music-property m 'name)
|
||||
((NoteEvent)
|
||||
(set! (ly:music-property m 'articulations)
|
||||
(append
|
||||
(ly:music-property m 'articulations)
|
||||
(list (make-music 'GlissandoEvent))))
|
||||
m)
|
||||
(else #f)))
|
||||
|
||||
addGliss =
|
||||
#(define-music-function (music)
|
||||
(ly:music?)
|
||||
(map-some-music add-gliss music))
|
||||
|
||||
|
||||
\new Score
|
||||
\with {proportionalNotationDuration = #(ly:make-moment 1 16)}
|
||||
<<
|
||||
\new StaffGroup \with{
|
||||
\override StaffGrouper.staff-staff-spacing =
|
||||
#'((basic-distance . 13)
|
||||
(minimum-distance . 13)
|
||||
(padding . 0)
|
||||
(stretchability . 0))
|
||||
\override StaffGrouper.staffgroup-staff-spacing =
|
||||
#'((basic-distance . 13)
|
||||
(minimum-distance . 13)
|
||||
(padding . 0)
|
||||
(stretchability . 0))
|
||||
}
|
||||
<<
|
||||
|
||||
% uncomment these lines to view harmonics of hl 6
|
||||
% also change systems-per-page to 2 manually above
|
||||
%{
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 6 " "(harm 13) "}
|
||||
shortInstrumentName = #"hl6 (h13) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 33 { \repeat unfold 3 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_6_harm_13.ly"
|
||||
>>
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 6 " "(harm 9) "}
|
||||
shortInstrumentName = #"hl6 (h9) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 33 { \repeat unfold 3 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_6_harm_9.ly"
|
||||
>>
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 6 " "(harm 5) "}
|
||||
shortInstrumentName = #"hl6 (h5) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 33 { \repeat unfold 3 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_6_harm_5.ly"
|
||||
>>
|
||||
%}
|
||||
|
||||
%~~hl6-start~~
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 6 " "(harm 1) "}
|
||||
shortInstrumentName = #"hl6 (h1) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 33 { \repeat unfold 3 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_6_harm_1.ly"
|
||||
>>
|
||||
%~~hl6-end~~
|
||||
>>
|
||||
|
||||
\new StaffGroup \with{
|
||||
\override StaffGrouper.staff-staff-spacing =
|
||||
#'((basic-distance . 9)
|
||||
(minimum-distance . 9)
|
||||
(padding . 0)
|
||||
(stretchability . 0))
|
||||
}
|
||||
<<
|
||||
%~~hl5-start~~
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 5" "(high noise)"}
|
||||
shortInstrumentName = #"hl5 (hn) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 33 { \repeat unfold 3 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_5.ly"
|
||||
>>
|
||||
%~~hl5-end~~
|
||||
|
||||
%~~hl4-start~~
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 4 " "(low noise)"}
|
||||
shortInstrumentName = #"hl4 (ln) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 33 { \repeat unfold 3 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_4.ly"
|
||||
>>
|
||||
%~~hl4-end~~
|
||||
>>
|
||||
>>
|
@ -0,0 +1,298 @@
|
||||
\version "2.19.81"
|
||||
|
||||
% systems-per-page, unfold vars, and strings delimited by tildes
|
||||
% are changed by the Supercollider transcriber
|
||||
|
||||
\paper {
|
||||
#(set-paper-size "a4" 'portrait)
|
||||
top-margin = 1 \cm
|
||||
bottom-margin = 1 \cm
|
||||
left-margin = 2.5 \cm
|
||||
|
||||
top-system-spacing =
|
||||
#'((basic-distance . 25 )
|
||||
(minimum-distance . 25 )
|
||||
(padding . 0 )
|
||||
(stretchability . 0))
|
||||
|
||||
last-bottom-spacing =
|
||||
#'((basic-distance . 15 )
|
||||
(minimum-distance . 15 )
|
||||
(padding . 0 )
|
||||
(stretchability . 0))
|
||||
|
||||
% manually change systems-per-page to 2 if the harmonics of hl 6 are uncommented below
|
||||
systems-per-page = 8
|
||||
|
||||
print-page-number = ##t
|
||||
oddHeaderMarkup = \markup { \on-the-fly #not-first-page "(part - hl 4 - 3231310)" }
|
||||
evenHeaderMarkup = \markup { \on-the-fly #not-first-page "(part - hl 4 - 3231310)" }
|
||||
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 {a lot of tiles (trivial scan)}}
|
||||
subtitle = \markup { \normal-text {3231310}}
|
||||
composer = \markup \left-column {"michael winter" "(cdmx, mx and nashville, usa; 2018)"}
|
||||
piece = \markup { \normal-text {part - hl 4 - 3231310}}
|
||||
tagline = ""
|
||||
}
|
||||
|
||||
#(set-global-staff-size 15)
|
||||
|
||||
\layout {
|
||||
indent = 0.0\cm
|
||||
line-width = 17\cm
|
||||
ragged-last = ##t
|
||||
|
||||
\context {
|
||||
\Score
|
||||
\override BarNumber.extra-offset = #'(0 . 5)
|
||||
\override BarNumber.stencil =
|
||||
#(make-stencil-circler 0.1 0.25 ly:text-interface::print)
|
||||
}
|
||||
\context {
|
||||
\Staff
|
||||
\override StaffSymbol.line-count = #1
|
||||
\override Clef.stencil = #point-stencil
|
||||
\override Clef.space-alist.first-note = #'(extra-space . 1)
|
||||
\remove "Time_signature_engraver"
|
||||
}
|
||||
\context {
|
||||
\Voice
|
||||
\override Glissando.minimum-length = #0
|
||||
\override Glissando.layer = 500
|
||||
\override Glissando.breakable = ##t
|
||||
\override Glissando.bound-details =
|
||||
#'((right
|
||||
(attach-dir . -1)
|
||||
(end-on-accidental . #f)
|
||||
(padding . 0))
|
||||
(right-broken
|
||||
(padding . 0.5))
|
||||
(left-broken
|
||||
(padding . 0.5)
|
||||
(attach-dir . 1))
|
||||
(left
|
||||
(attach-dir . -1)
|
||||
(padding . -0.25)
|
||||
(start-at-dot . #f)))
|
||||
}
|
||||
}
|
||||
|
||||
% this draws a curve and a gradient
|
||||
#(define (make-grey-filled-curve-stencil-list x-coords colors half-thick rl)
|
||||
(if (null? (cdr x-coords))
|
||||
rl
|
||||
(make-grey-filled-curve-stencil-list
|
||||
(cdr x-coords)
|
||||
(cdr colors)
|
||||
half-thick
|
||||
(cons
|
||||
(stencil-with-color
|
||||
(make-filled-box-stencil
|
||||
(interval-widen (cons (car x-coords) (cadr x-coords)) 0.1)
|
||||
(cons (- half-thick) (- 9 (* 10 (car colors)))))
|
||||
(list (car colors) (car colors) (car colors)))
|
||||
rl))))
|
||||
|
||||
% this draws a just a line with a gradient
|
||||
#(define (make-grey-filled-box-stencil-list x-coords colors half-thick rl)
|
||||
(if (null? (cdr x-coords))
|
||||
rl
|
||||
(make-grey-filled-box-stencil-list
|
||||
(cdr x-coords)
|
||||
(cdr colors)
|
||||
half-thick
|
||||
(cons
|
||||
(stencil-with-color
|
||||
(make-filled-box-stencil
|
||||
(interval-widen (cons (car x-coords) (cadr x-coords)) 0.1)
|
||||
(cons (- half-thick) half-thick))
|
||||
(list (car colors) (car colors) (car colors)))
|
||||
rl))))
|
||||
|
||||
#(define my-gliss
|
||||
(lambda (grob)
|
||||
(if (ly:stencil? (ly:line-spanner::print grob))
|
||||
(let* ((stencil (ly:line-spanner::print grob))
|
||||
(X-ext (ly:stencil-extent stencil X))
|
||||
(Y-ext (ly:stencil-extent stencil Y))
|
||||
(Y-length (- (cdr Y-ext) (car Y-ext)))
|
||||
(left-bound-info (ly:grob-property grob 'left-bound-info))
|
||||
(left-Y (assoc-get 'Y left-bound-info))
|
||||
(thick
|
||||
(assoc-get 'thickness (ly:grob-property grob 'details) 0.5))
|
||||
(layout (ly:grob-layout grob))
|
||||
(blot (ly:output-def-lookup layout 'blot-diameter))
|
||||
(right-bound (ly:spanner-bound grob RIGHT))
|
||||
(right-par (ly:grob-parent right-bound X))
|
||||
(stem
|
||||
(if (grob::has-interface right-par 'note-column-interface)
|
||||
(ly:grob-object right-par 'stem)
|
||||
'()))
|
||||
(stem-stencil
|
||||
(if (ly:grob? stem)
|
||||
(ly:grob-property stem 'stencil)
|
||||
#f))
|
||||
(stem-thick
|
||||
(if (ly:stencil? stem-stencil)
|
||||
(interval-length (ly:stencil-extent stem-stencil X))
|
||||
0))
|
||||
(corr-delta-X (- (interval-length X-ext)
|
||||
Y-length
|
||||
blot
|
||||
stem-thick
|
||||
;; mmh, why this value??
|
||||
-0.05))
|
||||
(colors
|
||||
(assoc-get 'colors (ly:grob-property grob 'details)
|
||||
(list 0 .5 .8)))
|
||||
(steps
|
||||
(length colors))
|
||||
(raw-x-coords
|
||||
(iota (1+ (abs steps)) 0 (/ corr-delta-X (abs steps))))
|
||||
(x-coords
|
||||
(map
|
||||
(lambda (e)
|
||||
(+ (car X-ext) Y-length blot e))
|
||||
raw-x-coords)))
|
||||
|
||||
;; create a flat glissando
|
||||
(ly:grob-set-nested-property! grob '(right-bound-info Y) left-Y)
|
||||
|
||||
;; return the stencil of added boxes
|
||||
(ly:stencil-translate-axis
|
||||
(apply
|
||||
ly:stencil-add
|
||||
;; change this to make-grey-filled-box-stencil-list to eleminate curve and just use gradient
|
||||
(make-grey-filled-curve-stencil-list
|
||||
x-coords
|
||||
colors
|
||||
thick
|
||||
'()))
|
||||
;; the actual offset is TODO, hardcoded here
|
||||
3.5
|
||||
Y))
|
||||
#f)))
|
||||
|
||||
#(define (add-gliss m)
|
||||
(case (ly:music-property m 'name)
|
||||
((NoteEvent)
|
||||
(set! (ly:music-property m 'articulations)
|
||||
(append
|
||||
(ly:music-property m 'articulations)
|
||||
(list (make-music 'GlissandoEvent))))
|
||||
m)
|
||||
(else #f)))
|
||||
|
||||
addGliss =
|
||||
#(define-music-function (music)
|
||||
(ly:music?)
|
||||
(map-some-music add-gliss music))
|
||||
|
||||
|
||||
\new Score
|
||||
\with {proportionalNotationDuration = #(ly:make-moment 1 16)}
|
||||
<<
|
||||
\new StaffGroup \with{
|
||||
\override StaffGrouper.staff-staff-spacing =
|
||||
#'((basic-distance . 13)
|
||||
(minimum-distance . 13)
|
||||
(padding . 0)
|
||||
(stretchability . 0))
|
||||
\override StaffGrouper.staffgroup-staff-spacing =
|
||||
#'((basic-distance . 13)
|
||||
(minimum-distance . 13)
|
||||
(padding . 0)
|
||||
(stretchability . 0))
|
||||
}
|
||||
<<
|
||||
|
||||
% uncomment these lines to view harmonics of hl 6
|
||||
% also change systems-per-page to 2 manually above
|
||||
%{
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 6 " "(harm 13) "}
|
||||
shortInstrumentName = #"hl6 (h13) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 17 { \repeat unfold 7 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_6_harm_13.ly"
|
||||
>>
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 6 " "(harm 9) "}
|
||||
shortInstrumentName = #"hl6 (h9) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 17 { \repeat unfold 7 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_6_harm_9.ly"
|
||||
>>
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 6 " "(harm 5) "}
|
||||
shortInstrumentName = #"hl6 (h5) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 17 { \repeat unfold 7 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_6_harm_5.ly"
|
||||
>>
|
||||
%}
|
||||
|
||||
%{~~hl6~~
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 6 " "(harm 1) "}
|
||||
shortInstrumentName = #"hl6 (h1) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 17 { \repeat unfold 7 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_6_harm_1.ly"
|
||||
>>
|
||||
%}
|
||||
>>
|
||||
|
||||
\new StaffGroup \with{
|
||||
\override StaffGrouper.staff-staff-spacing =
|
||||
#'((basic-distance . 9)
|
||||
(minimum-distance . 9)
|
||||
(padding . 0)
|
||||
(stretchability . 0))
|
||||
}
|
||||
<<
|
||||
%{~~hl5~~
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 5" "(high noise)"}
|
||||
shortInstrumentName = #"hl5 (hn) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 17 { \repeat unfold 7 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_5.ly"
|
||||
>>
|
||||
%}
|
||||
|
||||
%~~hl4-start~~
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 4 " "(low noise)"}
|
||||
shortInstrumentName = #"hl4 (ln) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 17 { \repeat unfold 7 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_4.ly"
|
||||
>>
|
||||
%~~hl4-end~~
|
||||
>>
|
||||
>>
|
@ -0,0 +1,298 @@
|
||||
\version "2.19.81"
|
||||
|
||||
% systems-per-page, unfold vars, and strings delimited by tildes
|
||||
% are changed by the Supercollider transcriber
|
||||
|
||||
\paper {
|
||||
#(set-paper-size "a4" 'portrait)
|
||||
top-margin = 1 \cm
|
||||
bottom-margin = 1 \cm
|
||||
left-margin = 2.5 \cm
|
||||
|
||||
top-system-spacing =
|
||||
#'((basic-distance . 25 )
|
||||
(minimum-distance . 25 )
|
||||
(padding . 0 )
|
||||
(stretchability . 0))
|
||||
|
||||
last-bottom-spacing =
|
||||
#'((basic-distance . 15 )
|
||||
(minimum-distance . 15 )
|
||||
(padding . 0 )
|
||||
(stretchability . 0))
|
||||
|
||||
% manually change systems-per-page to 2 if the harmonics of hl 6 are uncommented below
|
||||
systems-per-page = 8
|
||||
|
||||
print-page-number = ##t
|
||||
oddHeaderMarkup = \markup { \on-the-fly #not-first-page "(part - hl 5 - 3231310)" }
|
||||
evenHeaderMarkup = \markup { \on-the-fly #not-first-page "(part - hl 5 - 3231310)" }
|
||||
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 {a lot of tiles (trivial scan)}}
|
||||
subtitle = \markup { \normal-text {3231310}}
|
||||
composer = \markup \left-column {"michael winter" "(cdmx, mx and nashville, usa; 2018)"}
|
||||
piece = \markup { \normal-text {part - hl 5 - 3231310}}
|
||||
tagline = ""
|
||||
}
|
||||
|
||||
#(set-global-staff-size 15)
|
||||
|
||||
\layout {
|
||||
indent = 0.0\cm
|
||||
line-width = 17\cm
|
||||
ragged-last = ##t
|
||||
|
||||
\context {
|
||||
\Score
|
||||
\override BarNumber.extra-offset = #'(0 . 5)
|
||||
\override BarNumber.stencil =
|
||||
#(make-stencil-circler 0.1 0.25 ly:text-interface::print)
|
||||
}
|
||||
\context {
|
||||
\Staff
|
||||
\override StaffSymbol.line-count = #1
|
||||
\override Clef.stencil = #point-stencil
|
||||
\override Clef.space-alist.first-note = #'(extra-space . 1)
|
||||
\remove "Time_signature_engraver"
|
||||
}
|
||||
\context {
|
||||
\Voice
|
||||
\override Glissando.minimum-length = #0
|
||||
\override Glissando.layer = 500
|
||||
\override Glissando.breakable = ##t
|
||||
\override Glissando.bound-details =
|
||||
#'((right
|
||||
(attach-dir . -1)
|
||||
(end-on-accidental . #f)
|
||||
(padding . 0))
|
||||
(right-broken
|
||||
(padding . 0.5))
|
||||
(left-broken
|
||||
(padding . 0.5)
|
||||
(attach-dir . 1))
|
||||
(left
|
||||
(attach-dir . -1)
|
||||
(padding . -0.25)
|
||||
(start-at-dot . #f)))
|
||||
}
|
||||
}
|
||||
|
||||
% this draws a curve and a gradient
|
||||
#(define (make-grey-filled-curve-stencil-list x-coords colors half-thick rl)
|
||||
(if (null? (cdr x-coords))
|
||||
rl
|
||||
(make-grey-filled-curve-stencil-list
|
||||
(cdr x-coords)
|
||||
(cdr colors)
|
||||
half-thick
|
||||
(cons
|
||||
(stencil-with-color
|
||||
(make-filled-box-stencil
|
||||
(interval-widen (cons (car x-coords) (cadr x-coords)) 0.1)
|
||||
(cons (- half-thick) (- 9 (* 10 (car colors)))))
|
||||
(list (car colors) (car colors) (car colors)))
|
||||
rl))))
|
||||
|
||||
% this draws a just a line with a gradient
|
||||
#(define (make-grey-filled-box-stencil-list x-coords colors half-thick rl)
|
||||
(if (null? (cdr x-coords))
|
||||
rl
|
||||
(make-grey-filled-box-stencil-list
|
||||
(cdr x-coords)
|
||||
(cdr colors)
|
||||
half-thick
|
||||
(cons
|
||||
(stencil-with-color
|
||||
(make-filled-box-stencil
|
||||
(interval-widen (cons (car x-coords) (cadr x-coords)) 0.1)
|
||||
(cons (- half-thick) half-thick))
|
||||
(list (car colors) (car colors) (car colors)))
|
||||
rl))))
|
||||
|
||||
#(define my-gliss
|
||||
(lambda (grob)
|
||||
(if (ly:stencil? (ly:line-spanner::print grob))
|
||||
(let* ((stencil (ly:line-spanner::print grob))
|
||||
(X-ext (ly:stencil-extent stencil X))
|
||||
(Y-ext (ly:stencil-extent stencil Y))
|
||||
(Y-length (- (cdr Y-ext) (car Y-ext)))
|
||||
(left-bound-info (ly:grob-property grob 'left-bound-info))
|
||||
(left-Y (assoc-get 'Y left-bound-info))
|
||||
(thick
|
||||
(assoc-get 'thickness (ly:grob-property grob 'details) 0.5))
|
||||
(layout (ly:grob-layout grob))
|
||||
(blot (ly:output-def-lookup layout 'blot-diameter))
|
||||
(right-bound (ly:spanner-bound grob RIGHT))
|
||||
(right-par (ly:grob-parent right-bound X))
|
||||
(stem
|
||||
(if (grob::has-interface right-par 'note-column-interface)
|
||||
(ly:grob-object right-par 'stem)
|
||||
'()))
|
||||
(stem-stencil
|
||||
(if (ly:grob? stem)
|
||||
(ly:grob-property stem 'stencil)
|
||||
#f))
|
||||
(stem-thick
|
||||
(if (ly:stencil? stem-stencil)
|
||||
(interval-length (ly:stencil-extent stem-stencil X))
|
||||
0))
|
||||
(corr-delta-X (- (interval-length X-ext)
|
||||
Y-length
|
||||
blot
|
||||
stem-thick
|
||||
;; mmh, why this value??
|
||||
-0.05))
|
||||
(colors
|
||||
(assoc-get 'colors (ly:grob-property grob 'details)
|
||||
(list 0 .5 .8)))
|
||||
(steps
|
||||
(length colors))
|
||||
(raw-x-coords
|
||||
(iota (1+ (abs steps)) 0 (/ corr-delta-X (abs steps))))
|
||||
(x-coords
|
||||
(map
|
||||
(lambda (e)
|
||||
(+ (car X-ext) Y-length blot e))
|
||||
raw-x-coords)))
|
||||
|
||||
;; create a flat glissando
|
||||
(ly:grob-set-nested-property! grob '(right-bound-info Y) left-Y)
|
||||
|
||||
;; return the stencil of added boxes
|
||||
(ly:stencil-translate-axis
|
||||
(apply
|
||||
ly:stencil-add
|
||||
;; change this to make-grey-filled-box-stencil-list to eleminate curve and just use gradient
|
||||
(make-grey-filled-curve-stencil-list
|
||||
x-coords
|
||||
colors
|
||||
thick
|
||||
'()))
|
||||
;; the actual offset is TODO, hardcoded here
|
||||
3.5
|
||||
Y))
|
||||
#f)))
|
||||
|
||||
#(define (add-gliss m)
|
||||
(case (ly:music-property m 'name)
|
||||
((NoteEvent)
|
||||
(set! (ly:music-property m 'articulations)
|
||||
(append
|
||||
(ly:music-property m 'articulations)
|
||||
(list (make-music 'GlissandoEvent))))
|
||||
m)
|
||||
(else #f)))
|
||||
|
||||
addGliss =
|
||||
#(define-music-function (music)
|
||||
(ly:music?)
|
||||
(map-some-music add-gliss music))
|
||||
|
||||
|
||||
\new Score
|
||||
\with {proportionalNotationDuration = #(ly:make-moment 1 16)}
|
||||
<<
|
||||
\new StaffGroup \with{
|
||||
\override StaffGrouper.staff-staff-spacing =
|
||||
#'((basic-distance . 13)
|
||||
(minimum-distance . 13)
|
||||
(padding . 0)
|
||||
(stretchability . 0))
|
||||
\override StaffGrouper.staffgroup-staff-spacing =
|
||||
#'((basic-distance . 13)
|
||||
(minimum-distance . 13)
|
||||
(padding . 0)
|
||||
(stretchability . 0))
|
||||
}
|
||||
<<
|
||||
|
||||
% uncomment these lines to view harmonics of hl 6
|
||||
% also change systems-per-page to 2 manually above
|
||||
%{
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 6 " "(harm 13) "}
|
||||
shortInstrumentName = #"hl6 (h13) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 17 { \repeat unfold 7 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_6_harm_13.ly"
|
||||
>>
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 6 " "(harm 9) "}
|
||||
shortInstrumentName = #"hl6 (h9) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 17 { \repeat unfold 7 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_6_harm_9.ly"
|
||||
>>
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 6 " "(harm 5) "}
|
||||
shortInstrumentName = #"hl6 (h5) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 17 { \repeat unfold 7 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_6_harm_5.ly"
|
||||
>>
|
||||
%}
|
||||
|
||||
%{~~hl6~~
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 6 " "(harm 1) "}
|
||||
shortInstrumentName = #"hl6 (h1) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 17 { \repeat unfold 7 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_6_harm_1.ly"
|
||||
>>
|
||||
%}
|
||||
>>
|
||||
|
||||
\new StaffGroup \with{
|
||||
\override StaffGrouper.staff-staff-spacing =
|
||||
#'((basic-distance . 9)
|
||||
(minimum-distance . 9)
|
||||
(padding . 0)
|
||||
(stretchability . 0))
|
||||
}
|
||||
<<
|
||||
%~~hl5-start~~
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 5" "(high noise)"}
|
||||
shortInstrumentName = #"hl5 (hn) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 17 { \repeat unfold 7 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_5.ly"
|
||||
>>
|
||||
%~~hl5-end~~
|
||||
|
||||
%{~~hl4~~
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 4 " "(low noise)"}
|
||||
shortInstrumentName = #"hl4 (ln) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 17 { \repeat unfold 7 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_4.ly"
|
||||
>>
|
||||
%}
|
||||
>>
|
||||
>>
|
@ -0,0 +1,298 @@
|
||||
\version "2.19.81"
|
||||
|
||||
% systems-per-page, unfold vars, and strings delimited by tildes
|
||||
% are changed by the Supercollider transcriber
|
||||
|
||||
\paper {
|
||||
#(set-paper-size "a4" 'portrait)
|
||||
top-margin = 1 \cm
|
||||
bottom-margin = 1 \cm
|
||||
left-margin = 2.5 \cm
|
||||
|
||||
top-system-spacing =
|
||||
#'((basic-distance . 25 )
|
||||
(minimum-distance . 25 )
|
||||
(padding . 0 )
|
||||
(stretchability . 0))
|
||||
|
||||
last-bottom-spacing =
|
||||
#'((basic-distance . 15 )
|
||||
(minimum-distance . 15 )
|
||||
(padding . 0 )
|
||||
(stretchability . 0))
|
||||
|
||||
% manually change systems-per-page to 2 if the harmonics of hl 6 are uncommented below
|
||||
systems-per-page = 8
|
||||
|
||||
print-page-number = ##t
|
||||
oddHeaderMarkup = \markup { \on-the-fly #not-first-page "(part - hl 6 - 3231310)" }
|
||||
evenHeaderMarkup = \markup { \on-the-fly #not-first-page "(part - hl 6 - 3231310)" }
|
||||
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 {a lot of tiles (trivial scan)}}
|
||||
subtitle = \markup { \normal-text {3231310}}
|
||||
composer = \markup \left-column {"michael winter" "(cdmx, mx and nashville, usa; 2018)"}
|
||||
piece = \markup { \normal-text {part - hl 6 - 3231310}}
|
||||
tagline = ""
|
||||
}
|
||||
|
||||
#(set-global-staff-size 15)
|
||||
|
||||
\layout {
|
||||
indent = 0.0\cm
|
||||
line-width = 17\cm
|
||||
ragged-last = ##t
|
||||
|
||||
\context {
|
||||
\Score
|
||||
\override BarNumber.extra-offset = #'(0 . 5)
|
||||
\override BarNumber.stencil =
|
||||
#(make-stencil-circler 0.1 0.25 ly:text-interface::print)
|
||||
}
|
||||
\context {
|
||||
\Staff
|
||||
\override StaffSymbol.line-count = #1
|
||||
\override Clef.stencil = #point-stencil
|
||||
\override Clef.space-alist.first-note = #'(extra-space . 1)
|
||||
\remove "Time_signature_engraver"
|
||||
}
|
||||
\context {
|
||||
\Voice
|
||||
\override Glissando.minimum-length = #0
|
||||
\override Glissando.layer = 500
|
||||
\override Glissando.breakable = ##t
|
||||
\override Glissando.bound-details =
|
||||
#'((right
|
||||
(attach-dir . -1)
|
||||
(end-on-accidental . #f)
|
||||
(padding . 0))
|
||||
(right-broken
|
||||
(padding . 0.5))
|
||||
(left-broken
|
||||
(padding . 0.5)
|
||||
(attach-dir . 1))
|
||||
(left
|
||||
(attach-dir . -1)
|
||||
(padding . -0.25)
|
||||
(start-at-dot . #f)))
|
||||
}
|
||||
}
|
||||
|
||||
% this draws a curve and a gradient
|
||||
#(define (make-grey-filled-curve-stencil-list x-coords colors half-thick rl)
|
||||
(if (null? (cdr x-coords))
|
||||
rl
|
||||
(make-grey-filled-curve-stencil-list
|
||||
(cdr x-coords)
|
||||
(cdr colors)
|
||||
half-thick
|
||||
(cons
|
||||
(stencil-with-color
|
||||
(make-filled-box-stencil
|
||||
(interval-widen (cons (car x-coords) (cadr x-coords)) 0.1)
|
||||
(cons (- half-thick) (- 9 (* 10 (car colors)))))
|
||||
(list (car colors) (car colors) (car colors)))
|
||||
rl))))
|
||||
|
||||
% this draws a just a line with a gradient
|
||||
#(define (make-grey-filled-box-stencil-list x-coords colors half-thick rl)
|
||||
(if (null? (cdr x-coords))
|
||||
rl
|
||||
(make-grey-filled-box-stencil-list
|
||||
(cdr x-coords)
|
||||
(cdr colors)
|
||||
half-thick
|
||||
(cons
|
||||
(stencil-with-color
|
||||
(make-filled-box-stencil
|
||||
(interval-widen (cons (car x-coords) (cadr x-coords)) 0.1)
|
||||
(cons (- half-thick) half-thick))
|
||||
(list (car colors) (car colors) (car colors)))
|
||||
rl))))
|
||||
|
||||
#(define my-gliss
|
||||
(lambda (grob)
|
||||
(if (ly:stencil? (ly:line-spanner::print grob))
|
||||
(let* ((stencil (ly:line-spanner::print grob))
|
||||
(X-ext (ly:stencil-extent stencil X))
|
||||
(Y-ext (ly:stencil-extent stencil Y))
|
||||
(Y-length (- (cdr Y-ext) (car Y-ext)))
|
||||
(left-bound-info (ly:grob-property grob 'left-bound-info))
|
||||
(left-Y (assoc-get 'Y left-bound-info))
|
||||
(thick
|
||||
(assoc-get 'thickness (ly:grob-property grob 'details) 0.5))
|
||||
(layout (ly:grob-layout grob))
|
||||
(blot (ly:output-def-lookup layout 'blot-diameter))
|
||||
(right-bound (ly:spanner-bound grob RIGHT))
|
||||
(right-par (ly:grob-parent right-bound X))
|
||||
(stem
|
||||
(if (grob::has-interface right-par 'note-column-interface)
|
||||
(ly:grob-object right-par 'stem)
|
||||
'()))
|
||||
(stem-stencil
|
||||
(if (ly:grob? stem)
|
||||
(ly:grob-property stem 'stencil)
|
||||
#f))
|
||||
(stem-thick
|
||||
(if (ly:stencil? stem-stencil)
|
||||
(interval-length (ly:stencil-extent stem-stencil X))
|
||||
0))
|
||||
(corr-delta-X (- (interval-length X-ext)
|
||||
Y-length
|
||||
blot
|
||||
stem-thick
|
||||
;; mmh, why this value??
|
||||
-0.05))
|
||||
(colors
|
||||
(assoc-get 'colors (ly:grob-property grob 'details)
|
||||
(list 0 .5 .8)))
|
||||
(steps
|
||||
(length colors))
|
||||
(raw-x-coords
|
||||
(iota (1+ (abs steps)) 0 (/ corr-delta-X (abs steps))))
|
||||
(x-coords
|
||||
(map
|
||||
(lambda (e)
|
||||
(+ (car X-ext) Y-length blot e))
|
||||
raw-x-coords)))
|
||||
|
||||
;; create a flat glissando
|
||||
(ly:grob-set-nested-property! grob '(right-bound-info Y) left-Y)
|
||||
|
||||
;; return the stencil of added boxes
|
||||
(ly:stencil-translate-axis
|
||||
(apply
|
||||
ly:stencil-add
|
||||
;; change this to make-grey-filled-box-stencil-list to eleminate curve and just use gradient
|
||||
(make-grey-filled-curve-stencil-list
|
||||
x-coords
|
||||
colors
|
||||
thick
|
||||
'()))
|
||||
;; the actual offset is TODO, hardcoded here
|
||||
3.5
|
||||
Y))
|
||||
#f)))
|
||||
|
||||
#(define (add-gliss m)
|
||||
(case (ly:music-property m 'name)
|
||||
((NoteEvent)
|
||||
(set! (ly:music-property m 'articulations)
|
||||
(append
|
||||
(ly:music-property m 'articulations)
|
||||
(list (make-music 'GlissandoEvent))))
|
||||
m)
|
||||
(else #f)))
|
||||
|
||||
addGliss =
|
||||
#(define-music-function (music)
|
||||
(ly:music?)
|
||||
(map-some-music add-gliss music))
|
||||
|
||||
|
||||
\new Score
|
||||
\with {proportionalNotationDuration = #(ly:make-moment 1 16)}
|
||||
<<
|
||||
\new StaffGroup \with{
|
||||
\override StaffGrouper.staff-staff-spacing =
|
||||
#'((basic-distance . 13)
|
||||
(minimum-distance . 13)
|
||||
(padding . 0)
|
||||
(stretchability . 0))
|
||||
\override StaffGrouper.staffgroup-staff-spacing =
|
||||
#'((basic-distance . 13)
|
||||
(minimum-distance . 13)
|
||||
(padding . 0)
|
||||
(stretchability . 0))
|
||||
}
|
||||
<<
|
||||
|
||||
% uncomment these lines to view harmonics of hl 6
|
||||
% also change systems-per-page to 2 manually above
|
||||
%{
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 6 " "(harm 13) "}
|
||||
shortInstrumentName = #"hl6 (h13) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 33 { \repeat unfold 3 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_6_harm_13.ly"
|
||||
>>
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 6 " "(harm 9) "}
|
||||
shortInstrumentName = #"hl6 (h9) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 33 { \repeat unfold 3 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_6_harm_9.ly"
|
||||
>>
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 6 " "(harm 5) "}
|
||||
shortInstrumentName = #"hl6 (h5) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 33 { \repeat unfold 3 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_6_harm_5.ly"
|
||||
>>
|
||||
%}
|
||||
|
||||
%~~hl6-start~~
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 6 " "(harm 1) "}
|
||||
shortInstrumentName = #"hl6 (h1) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 33 { \repeat unfold 3 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_6_harm_1.ly"
|
||||
>>
|
||||
%~~hl6-end~~
|
||||
>>
|
||||
|
||||
\new StaffGroup \with{
|
||||
\override StaffGrouper.staff-staff-spacing =
|
||||
#'((basic-distance . 9)
|
||||
(minimum-distance . 9)
|
||||
(padding . 0)
|
||||
(stretchability . 0))
|
||||
}
|
||||
<<
|
||||
%{~~hl5~~
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 5" "(high noise)"}
|
||||
shortInstrumentName = #"hl5 (hn) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 33 { \repeat unfold 3 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_5.ly"
|
||||
>>
|
||||
%}
|
||||
|
||||
%{~~hl4~~
|
||||
\new Staff \with {
|
||||
instrumentName = \markup \center-column {"hl 4 " "(low noise)"}
|
||||
shortInstrumentName = #"hl4 (ln) "
|
||||
}
|
||||
<<
|
||||
\repeat unfold 33 { \repeat unfold 3 { s1 \noBreak } s1 \break }
|
||||
\include "includes/a_lot_of_tiles_trivial_scan_hl_4.ly"
|
||||
>>
|
||||
%}
|
||||
>>
|
||||
>>
|
@ -0,0 +1,259 @@
|
||||
{
|
||||
|
|
||||
b'1 ^0
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'1 ^0
|
||||
|
|
||||
b'1 ^1 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^0
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'1 ^0 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^1 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^0 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^1 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^0
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'1 ^0
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'1 ^0 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'1 ^0
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'1 ^0
|
||||
|
|
||||
b'1 ^1 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^0 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^1 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^0
|
||||
|
|
||||
b'1 ^1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^0 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^1 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^0 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^1 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^0
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'1 ^0 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^1 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^0 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'1 ^0
|
||||
|
|
||||
b'1 ^1 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^0
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'1 ^0
|
||||
|
|
||||
b'1 ^1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^0
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'1 ^0 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'1 ^0 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'1 ^0
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'1 ^0 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'1 ^0
|
||||
|
|
||||
b'1 ^1 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^0
|
||||
|
|
||||
b'1 ^1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^0
|
||||
|
|
||||
b'1 ^1 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^0
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'1 ^0
|
||||
|
|
||||
b'1 ^1 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^0 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'1 ^0 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'1 ^0
|
||||
|
|
||||
b'1 ^1 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^0 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'1 ^0
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'1 ^0
|
||||
|
|
||||
b'1 ^1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^0
|
||||
|
|
||||
b'1 ^1 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^0 ~
|
||||
|
|
||||
b'1 \bar "|." \stopStaff \hide b'1}
|
@ -0,0 +1,259 @@
|
||||
{
|
||||
|
|
||||
b'4 ^0 b'2 ^1 b'4 ^0
|
||||
|
|
||||
b'2. ^1 b'4 ^0 ~
|
||||
|
|
||||
b'4 b'2. ^1
|
||||
|
|
||||
b'4 ^0 b'2 ^1 b'4 ^0
|
||||
|
|
||||
b'4 ^1 b'4 ^0 b'4 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'2. b'4 ^1 ~
|
||||
|
|
||||
b'4 b'2. ^0 ~
|
||||
|
|
||||
b'4 b'4 ^1 b'4 ^0 b'4 ^1 ~
|
||||
|
|
||||
b'4 b'4 ^0 b'4 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'4 b'4 ^1 b'2 ^0 ~
|
||||
|
|
||||
b'2 b'4 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'4 b'4 ^1 b'4 ^0 b'4 ^1
|
||||
|
|
||||
b'4 ^0 b'2 ^1 b'4 ^0
|
||||
|
|
||||
b'4 ^1 b'4 ^0 b'2 ^1 ~
|
||||
|
|
||||
b'2 b'4 ^0 b'4 ^1
|
||||
|
|
||||
b'4 ^0 b'2 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'4 b'2. ^1
|
||||
|
|
||||
b'4 ^0 b'2 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'4 b'2 ^1 b'4 ^0
|
||||
|
|
||||
b'2. ^1 b'4 ^0
|
||||
|
|
||||
b'4 ^1 b'2. ^0 ~
|
||||
|
|
||||
b'4 b'4 ^1 b'4 ^0 b'4 ^1 ~
|
||||
|
|
||||
b'4 b'4 ^0 b'4 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'2. b'4 ^1
|
||||
|
|
||||
b'2 ^0 b'4 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'4 b'4 ^1 b'4 ^0 b'4 ^1 ~
|
||||
|
|
||||
b'4 b'4 ^0 b'4 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'4 b'4 ^1 b'2 ^0
|
||||
|
|
||||
b'2 ^1 b'4 ^0 b'4 ^1
|
||||
|
|
||||
b'4 ^0 b'2 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'4 b'2 ^1 b'4 ^0
|
||||
|
|
||||
b'4 ^1 b'4 ^0 b'2 ^1 ~
|
||||
|
|
||||
b'4 b'2 ^0 b'4 ^1 ~
|
||||
|
|
||||
b'4 b'2 ^0 b'4 ^1 ~
|
||||
|
|
||||
b'4 b'2 ^0 b'4 ^1 ~
|
||||
|
|
||||
b'4 b'2 ^0 b'4 ^1
|
||||
|
|
||||
b'4 ^0 b'2 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'4 b'2 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'4 b'2 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'4 b'2 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'1 ^1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'4 ^0 b'2 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'4 b'2 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'4 b'2 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'4 b'2 ^1 b'4 ^0
|
||||
|
|
||||
b'4 ^1 b'4 ^0 b'4 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'4 b'4 ^1 b'4 ^0 b'4 ^1 ~
|
||||
|
|
||||
b'4 b'4 ^0 b'4 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'4 b'4 ^1 b'4 ^0 b'4 ^1
|
||||
|
|
||||
b'4 ^0 b'2 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'4 b'2 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'4 b'2 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'4 b'2 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'4 b'4 ^1 b'4 ^0 b'4 ^1 ~
|
||||
|
|
||||
b'4 b'4 ^0 b'4 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'4 b'4 ^1 b'4 ^0 b'4 ^1 ~
|
||||
|
|
||||
b'4 b'4 ^0 b'4 ^1 b'4 ^0
|
||||
|
|
||||
b'2 ^1 b'4 ^0 b'4 ^1
|
||||
|
|
||||
b'4 ^0 b'2 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'4 b'4 ^1 b'4 ^0 b'4 ^1 ~
|
||||
|
|
||||
b'4 b'2 ^0 b'4 ^1
|
||||
|
|
||||
b'2 ^0 b'4 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'4 b'4 ^1 b'4 ^0 b'4 ^1
|
||||
|
|
||||
b'4 ^0 b'2 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'4 b'2 ^1 b'4 ^0
|
||||
|
|
||||
b'4 ^1 b'2. ^0 ~
|
||||
|
|
||||
b'4 b'4 ^1 b'4 ^0 b'4 ^1 ~
|
||||
|
|
||||
b'4 b'4 ^0 b'4 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'4 b'2. ^1
|
||||
|
|
||||
b'4 ^0 b'2 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'4 b'2 ^1 b'4 ^0
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'4 ^0 b'2. ^1
|
||||
|
|
||||
b'4 ^0 b'2 ^1 b'4 ^0
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'4 ^0 b'2 ^1 b'4 ^0
|
||||
|
|
||||
b'4 ^1 b'2. ^0 ~
|
||||
|
|
||||
b'4 b'4 ^1 b'4 ^0 b'4 ^1
|
||||
|
|
||||
b'1 ^0
|
||||
|
|
||||
b'4 ^1 b'4 ^0 b'4 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'2 b'4 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'4 b'4 ^1 b'4 ^0 b'4 ^1
|
||||
|
|
||||
b'4 ^0 b'2 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'4 b'2 ^1 b'4 ^0
|
||||
|
|
||||
b'2 ^1 b'4 ^0 b'4 ^1
|
||||
|
|
||||
b'4 ^0 b'2 ^1 b'4 ^0
|
||||
|
|
||||
b'4 ^1 b'2 ^0 b'4 ^1
|
||||
|
|
||||
b'4 ^0 b'4 ^1 b'4 ^0 b'4 ^1 ~
|
||||
|
|
||||
b'4 b'2 ^0 b'4 ^1 ~
|
||||
|
|
||||
b'4 b'4 ^0 b'4 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'4 b'2 ^1 b'4 ^0
|
||||
|
|
||||
b'4 ^1 b'4 ^0 b'2 ^1
|
||||
|
|
||||
b'4 ^0 b'2 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'4 b'2 ^1 b'4 ^0
|
||||
|
|
||||
b'4 ^1 b'4 ^0 b'4 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'4 b'4 ^1 b'2 ^0 ~
|
||||
|
|
||||
b'1 ~
|
||||
|
|
||||
b'4 b'4 ^1 b'4 ^0 b'4 ^1 ~
|
||||
|
|
||||
b'4 b'4 ^0 b'4 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'2. b'4 ^1 ~
|
||||
|
|
||||
b'1
|
||||
|
|
||||
b'4 ^0 b'2 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'4 b'2 ^1 b'4 ^0
|
||||
|
|
||||
b'2. ^1 b'4 ^0 ~
|
||||
|
|
||||
b'4 b'2 ^1 b'4 ^0
|
||||
|
|
||||
b'1 ^1
|
||||
|
|
||||
b'4 ^0 b'2 ^1 b'4 ^0
|
||||
|
|
||||
b'2. ^1 b'4 ^0 ~
|
||||
|
|
||||
b'4 b'4 ^1 b'4 ^0 b'4 ^1
|
||||
|
|
||||
b'1 ^0
|
||||
|
|
||||
b'4 ^1 b'4 ^0 b'4 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'2. b'4 ^1
|
||||
|
|
||||
b'4 ^0 b'2 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'4 b'2 ^1 b'4 ^0
|
||||
|
|
||||
b'4 ^1 b'4 ^0 b'4 ^1 b'4 ^0 ~
|
||||
|
|
||||
b'4 b'4 ^1 b'2 ^0
|
||||
|
|
||||
b'4 ^1 b'4 ^0 b'4 ^1 b'4 ^0
|
||||
|
|
||||
b'4 ^1 b'2 ^0 b'4 ^1
|
||||
|
|
||||
b'4 ^0 b'2 ^1 b'4 ^0
|
||||
|
|
||||
b'4 ^1 b'4 ^0 b'2 ^1
|
||||
|
|
||||
b'1 ^0 \bar "|." \stopStaff \hide b'1}
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -0,0 +1,283 @@
|
||||
(
|
||||
var modelView, transportView, mixerView, guiLayout, playButton, randButton;
|
||||
|
||||
// model / transform
|
||||
modelView = {var transformGrid, transformButtons, layouts, layoutGrid, layoutButtons,
|
||||
fullScreenButton, decoratorButton, transcribeButton, contPlayButton, exportButton, displayGrid, model;
|
||||
|
||||
// sets transform
|
||||
transformGrid = GridLayout();
|
||||
transformButtons = Array.fill2D(7, 4, {arg r, c; Button().states_(
|
||||
[[c.asString, Color.grey, Color.white], [c.asString, Color.white, Color.grey]])});
|
||||
transformButtons.do({arg row, rIndex;
|
||||
row.do({arg button, cIndex;
|
||||
if((rIndex < 5) || (cIndex < 2), {
|
||||
transformGrid.add(button, rIndex, cIndex + 1);
|
||||
button.action = {transformButtons[rIndex].do(
|
||||
{arg b, i; if(button == b, {b.value = 1}, {b.value = 0})});
|
||||
~transform[rIndex] = cIndex; if(rIndex < 4, {~tileMap = ~mapAll.value(6, ~transform)}); ~tileWin.refresh}.inEnvir})});
|
||||
transformGrid.add(if(rIndex < 4,
|
||||
{StaticText().string_("child " ++ rIndex.asString).align_(\center)},
|
||||
{StaticText().string_(["rotation", "mirror", "invert"][rIndex - 4])
|
||||
.align_(\center)}), rIndex, 0)});
|
||||
~transform.do({arg v, rIndex; transformButtons[rIndex][v].value = 1});
|
||||
|
||||
// sets layout
|
||||
layouts = ["depth level 6 only (max depth)", "depth level 5 only", "depth level 4 only", "hierarchical (embedded)",
|
||||
"", "", ""];
|
||||
layoutGrid = GridLayout();
|
||||
layoutButtons = layouts.collect({arg l, i; Button().states_(
|
||||
[[layouts[i], Color.grey, Color.white], [l, Color.white, Color.grey]])});
|
||||
layoutButtons.do({arg button, bIndex; if(bIndex < 4,
|
||||
{layoutGrid.add(button, bIndex, 0);
|
||||
button.action = {layoutButtons.do({arg b; if(button == b, {b.value = 1}, {b.value = 0});
|
||||
~layoutState = bIndex; ~tileWin.refresh})}.inEnvir},
|
||||
{layoutGrid.add(StaticText().string_(""), bIndex, 0)})});
|
||||
layoutButtons[0].value = 1;
|
||||
|
||||
randButton = Button().states_([["random transform", Color.grey, Color.white]]).action_({
|
||||
~transform = Array.fill(7, {arg i; if(i < 5, {4.rand}, {2.rand})});
|
||||
~tileMap = ~mapAll.value(6, ~transform);
|
||||
~tileWin.refresh;
|
||||
transformButtons.do({arg row; row.do({arg button; button.value = 0})});
|
||||
~transform.do({arg v, rIndex; transformButtons[rIndex][v].value = 1})}.inEnvir);
|
||||
|
||||
// sets display
|
||||
fullScreenButton = Button().states_([["fullscreen", Color.grey, Color.white],
|
||||
["fullscreen", Color.white, Color.grey]]).action_({arg button;
|
||||
if(button.value == 0, {~tileWin.endFullScreen}, {~tileWin.fullScreen})}.inEnvir);
|
||||
|
||||
~tileWin.view.keyDownAction = {arg doc, char, mod, unicode, keycode, key;
|
||||
case
|
||||
// <ctrl + f> = enter full screen
|
||||
{mod == 262144 && key == 70} {~tileWin.fullScreen; fullScreenButton.value = 1}
|
||||
// <esc> = exit full screen
|
||||
{mod == 0 && key == 16777216} {~tileWin.endFullScreen; fullScreenButton.value = 0}}.inEnvir;
|
||||
|
||||
decoratorButton = Button().states_([["window decorator", Color.grey, Color.white],
|
||||
["window decorator",Color.white, Color.grey]]).action_({arg button;
|
||||
~tileWin.close;
|
||||
if(button.value == 0, {~launchTileVisualizer.value(false, false)},
|
||||
{~launchTileVisualizer.value(true, false)})}.inEnvir);
|
||||
decoratorButton.value = 1;
|
||||
|
||||
// set continuous play option (disables transform buttons when set)
|
||||
contPlayButton = Button().states_([["continuous play", Color.grey, Color.white],
|
||||
["continuous play", Color.white, Color.grey]]).action_({arg elem;
|
||||
if(elem.value == 0, {~continuousPlay = false;
|
||||
transformButtons.do({arg row; row.do({arg button; button.enabled = true})});
|
||||
randButton.enabled = true}, {
|
||||
transformButtons.do({arg row; row.do({arg button; button.enabled = false})});
|
||||
randButton.enabled = false;
|
||||
if(playButton.value == 0, {
|
||||
fork({
|
||||
~continuousPlay = true;
|
||||
randButton.valueAction = 0;
|
||||
1.wait;
|
||||
playButton.valueAction = 1}, AppClock)})})}.inEnvir);
|
||||
|
||||
// transcribe
|
||||
transcribeButton = Button().states_([["transcribe", Color.grey, Color.white]]).action_({
|
||||
var matrixH4, matrixH5, matrixH6,dataH4, dataH5, dataH6;
|
||||
matrixH4 = ~matricize.value([~tileMap[4]], 4, 0, ~transform);
|
||||
matrixH5 = ~matricize.value([~tileMap[5]], 5, 0, ~transform);
|
||||
matrixH6 = ~matricize.value([~tileMap[6]], 6, 0, ~transform);
|
||||
dataH4 = ~genData.value(matrixH4, ~transform, 1, 0, 1);
|
||||
dataH5 = ~genData.value(matrixH5, ~transform, 1, 0, 4);
|
||||
dataH6 = ~genData.value(matrixH6, ~transform, 4, 0, 16);
|
||||
~transcribe.value(dataH4, 16, "hl_4");
|
||||
~transcribe.value(dataH5, 4, "hl_5");
|
||||
~transcribe.value(dataH6, 1, "hl_6", true)}.inEnvir);
|
||||
|
||||
// export tile image
|
||||
exportButton = Button().states_([["export image", Color.grey, Color.white]]).action_({var img;
|
||||
img = if(~transform[4] % 2 == 0, {Image.new(6000, 3000)}, {Image.new(3000, 6000)});
|
||||
img.draw({~tileDrawFunc.value(img, ~tileMap, ~transform, ~layoutState)});
|
||||
FileDialog({ arg path; img.write(path[0])}, {}, 0, 1)}.inEnvir);
|
||||
|
||||
displayGrid = GridLayout();
|
||||
displayGrid.add(fullScreenButton, 0, 0);
|
||||
displayGrid.add(decoratorButton, 1, 0);
|
||||
5.do({arg i; displayGrid.add(StaticText().string_(""), i + 2, 0)});
|
||||
|
||||
model = GridLayout();
|
||||
model.add(StaticText().string_("transform code"), 0, 0);
|
||||
model.add(transformGrid, 1, 0); model.add(randButton, 2, 0);
|
||||
model.add(StaticText().string_(""), 3, 0); model.add(StaticText().string_(""), 4, 0);
|
||||
model.add(StaticText().string_(""), 0, 1);
|
||||
model.add(StaticText().string_("layout"), 0, 2);
|
||||
model.add(layoutGrid, 1, 2);
|
||||
model.add(StaticText().string_(""), 0, 3);
|
||||
model.add(StaticText().string_("display"), 0, 4);
|
||||
model.add(displayGrid, 1, 4); model.add(contPlayButton, 2, 4); model.add(transcribeButton, 3, 4); model.add(exportButton, 4, 4);
|
||||
model};
|
||||
|
||||
// transport
|
||||
transportView = {
|
||||
arg hash; var clockStringFunc, metronomeStringFunc, metronomeColorFunc,
|
||||
transport, posSlider, startPos = 0, startPosText, pauseButton, clock, metronome;
|
||||
|
||||
// update clock and metronome
|
||||
clockStringFunc = {
|
||||
arg curBeat; var measure, beat;
|
||||
beat = (((curBeat / 2) % 4) + 1).trunc.asString;
|
||||
measure = ((curBeat / 8) + 1).trunc.asString;
|
||||
if(measure.size == 1, {measure = " " ++ measure});
|
||||
if(measure.size == 2, {measure = " " ++ measure});
|
||||
measure ++ ":" ++ beat};
|
||||
metronomeStringFunc = {arg curBeat; case {curBeat % 8 < 1} {"◘"} {curBeat % 2 < 1} {"●"} {true} {" "}};
|
||||
metronomeColorFunc = {arg curBeat; case {curBeat % 32 < 1} {Color.red} {curBeat % 8 < 1} {Color.blue} {true} {Color.black}};
|
||||
|
||||
// get current time and call update clock and metronome
|
||||
OSCFunc({arg msg, time; {
|
||||
if(msg[2] == hash,{
|
||||
if(msg[3] > 0, {clock.string = clockStringFunc.value(msg[3])});
|
||||
metronome.stringColor = metronomeColorFunc.value(msg[3]);
|
||||
metronome.string = metronomeStringFunc.value(msg[3]);
|
||||
// if continuous play, when finished, delete all autogenerated files, reselect a transform, and then start
|
||||
if(msg[3] == 1031, {
|
||||
playButton.valueAction = 0;
|
||||
fork({
|
||||
if(~continuousPlay, {var baseDir;
|
||||
baseDir = ~dir +/+ ".." +/+ "audio" +/+ "transform_" ++ ~transform.join ++ "_audio";
|
||||
File.delete(baseDir +/+ "hl_6_fundamental.wav");
|
||||
File.delete(baseDir +/+ "hl_6_harmonics.wav");
|
||||
File.delete(baseDir +/+ "hl_5_high_noise.wav");
|
||||
File.delete(baseDir +/+ "hl_4_low_noise.wav");
|
||||
File.delete(baseDir);
|
||||
randButton.valueAction = 0;
|
||||
posSlider.valueAction = 0;
|
||||
2.wait;
|
||||
playButton.valueAction = 1
|
||||
})}, AppClock)})})}.inEnvir.defer}.inEnvir,'/tr', s.addr);
|
||||
|
||||
// transport gui items
|
||||
transport = HLayout(
|
||||
// play / stop button
|
||||
playButton = Button().states_([["play", Color.black], ["stop", Color.black, Color.grey]]).action_({arg elem;
|
||||
fork {var cond, baseDir;
|
||||
cond = Condition.new;
|
||||
baseDir = ~dir +/+ ".." +/+ "audio" +/+ "transform_" ++ ~transform.join ++ "_audio";
|
||||
// generate audio files if they do not exist
|
||||
if(File.exists(baseDir +/+ "hl_6_fundamental.wav").not ||
|
||||
File.exists(baseDir +/+ "hl_6_harmonics.wav").not ||
|
||||
File.exists(baseDir +/+ "hl_5_high_noise.wav").not ||
|
||||
File.exists(baseDir +/+ "hl_4_low_noise.wav").not, {
|
||||
var matrixH4, matrixH5, matrixH6, dataH4, dataH5, dataH6,
|
||||
patternH4, patternH5, patternH6Fund, patternH6Harms;
|
||||
matrixH4 = ~matricize.value([~tileMap[4]], 4, 0, ~transform);
|
||||
matrixH5 = ~matricize.value([~tileMap[5]], 5, 0, ~transform);
|
||||
matrixH6 = ~matricize.value([~tileMap[6]], 6, 0, ~transform);
|
||||
dataH4 = ~genData.value(matrixH4, ~transform, 1, 0, 1, 0.5, 1);
|
||||
dataH5 = ~genData.value(matrixH5, ~transform, 1, 0, 4, 0.5, 1);
|
||||
dataH6 = ~genData.value(matrixH6, ~transform, 4, 0, 16);
|
||||
patternH4 = ~genPattern.value(dataH4, "hl_4_low_noise", 16, true, cond); cond.hang;
|
||||
patternH5 = ~genPattern.value(dataH5, "hl_5_high_noise", 4, true, cond); cond.hang;
|
||||
patternH6Fund = ~genPattern.value([dataH6[0]], "hl_6_fundamental", 1, true, cond); cond.hang;
|
||||
patternH6Harms = ~genPattern.value(dataH6[1..3], "hl_6_harmonics", 1, true, cond); cond.hang});
|
||||
|
||||
// load buffers if the transform has changed
|
||||
if(~loadedTransform != ~transform, {var baseDir;
|
||||
baseDir = ~dir +/+ ".." +/+ "audio" +/+ "transform_" ++ ~transform.join ++ "_audio";
|
||||
~buf1 = Buffer.read(s, baseDir +/+ "hl_6_fundamental.wav", action: {cond.unhang}); cond.hang;
|
||||
~buf2 = Buffer.read(s, baseDir +/+ "hl_6_harmonics.wav", action: {cond.unhang}); cond.hang;
|
||||
~buf3 = Buffer.read(s, baseDir +/+ "hl_5_high_noise.wav", action: {cond.unhang}); cond.hang;
|
||||
~buf4 = Buffer.read(s, baseDir +/+ "hl_4_low_noise.wav", action: {cond.unhang}); cond.hang});
|
||||
~loadedTransform = ~transform.deepCopy;
|
||||
|
||||
|
||||
// play / stop functionality (create synth if it does not exist
|
||||
{if(~play == nil, {~play = Synth.new(\play, [\hash, hash, \playRate, 0, \startTrig, 0,
|
||||
\sineBuf1, ~buf1, \sineBuf2, ~buf2, \highNoiseBuf, ~buf3, \lowNoiseBuf, ~buf4])});
|
||||
pauseButton.value = 0;
|
||||
if(elem.value == 0, {
|
||||
clock.string = clockStringFunc.value((startPos * 129).trunc * 8);
|
||||
~play.set(\playRate, 0, \startTrig, 0,
|
||||
\sineBuf1, ~buf1, \sineBuf2, ~buf2, \highNoiseBuf, ~buf3, \lowNoiseBuf, ~buf4);
|
||||
clock.string = clockStringFunc.value((startPos * 129).trunc * 8)},{
|
||||
~play.set(\startPos, startPos, \playRate, 1, \startTrig, 1,
|
||||
\sineBuf1, ~buf1, \sineBuf2, ~buf2, \highNoiseBuf, ~buf3, \lowNoiseBuf, ~buf4)})}.inEnvir.defer}}.inEnvir),
|
||||
|
||||
// pause button
|
||||
pauseButton = Button().states_([["pause", Color.black], ["pause", Color.black, Color.grey]]).action_({arg elem;
|
||||
if(elem.value == 1, {~play.set(\playRate, 0)},{~play.set(\playRate, 1)})}.inEnvir),
|
||||
|
||||
// start position slider
|
||||
StaticText().string_(" start measure:beat"),[
|
||||
posSlider = Slider(bounds: Rect(0, 0, 30, 5)).action_({arg pos; var min, sec;
|
||||
startPosText.string = clockStringFunc.value((pos.value * 129).trunc * 8);
|
||||
startPos = ((pos.value * 129).trunc * 8) / (129 * 8);
|
||||
clock.string = clockStringFunc.value((startPos * 129).trunc * 8)}.inEnvir), stretch: 1],
|
||||
startPosText = StaticText().string_(" 1:1").font_(Font("Monaco", 15)), nil);
|
||||
|
||||
HLayout([VLayout(HLayout(
|
||||
clock = StaticText().string_(" 1:1").font_(Font("Monaco", 200)),
|
||||
StaticText().string_("|").font_(Font("Monaco", 200)),
|
||||
metronome = StaticText().string_("◘").font_(Font("Monaco", 300)).stringColor_(Color.red)), nil, transport),
|
||||
alignment: \top])};
|
||||
|
||||
// mixer
|
||||
mixerView = {arg hash; var masterIndicators, trackIndicators, master, tracks,
|
||||
eVol = [0.8, 0.8, 0.8, 0.8], eMute = [1, 1, 1, 1], ePan = [0, 0, 0, 0],
|
||||
eNames = ["hl 6 (fundamental)", "hl 6 (harmonics)", "hl 5 (high noise)", "hl 4 (low noise)"];
|
||||
|
||||
// init indicators
|
||||
masterIndicators = {LevelIndicator()} ! 2;
|
||||
trackIndicators = {LevelIndicator()} ! 4;
|
||||
|
||||
// get amp values for indicators
|
||||
OSCFunc.new({arg msg; {
|
||||
if(msg[2] == hash, {{arg i;
|
||||
masterIndicators[i].value = msg[3 + i].ampdb.linlin(-60, 0, 0, 1)} ! 2})}.defer},
|
||||
'/masterLevel', s.addr);
|
||||
OSCFunc.new({arg msg; {
|
||||
if(msg[2] == hash, {{arg i;
|
||||
trackIndicators[i].value = msg[3 + i].ampdb.linlin(-60, 0, 0, 1)} ! 4})}.defer},
|
||||
'/trackLevels', s.addr);
|
||||
|
||||
// master faders
|
||||
master = HLayout(
|
||||
VLayout([HLayout(
|
||||
Slider().value_(0.8).action_({arg elem;
|
||||
~play.set(\masterVol, elem.value * 1.25)}.inEnvir),
|
||||
masterIndicators[0], masterIndicators[1]), stretch: 2],
|
||||
Button().states_([["mute", Color.black], ["mute", Color.black, Color.grey]]).action_({arg elem;
|
||||
~play.set(\masterMute, (1 - elem.value).abs)}.inEnvir),
|
||||
StaticText().string_(" master ").align_(\center)), nil);
|
||||
// track faders
|
||||
tracks = {arg part;
|
||||
HLayout(VLayout(HLayout(
|
||||
Slider().value_(0.8).action_({arg elem;
|
||||
eVol[part] = elem.value * 1.25; ~play.set("eVol", eVol)}.inEnvir),
|
||||
trackIndicators[part]),
|
||||
Button().states_([["mute", Color.black], ["mute", Color.black, Color.grey]]).action_({arg elem;
|
||||
eMute[part] = (1 - elem.value).abs; ~play.set("eMute", eMute)}.inEnvir),
|
||||
StaticText().string_("pan").align_(\center),
|
||||
Knob().value_(0.5).action_({arg elem;
|
||||
ePan[part] = elem.value * 2 - 1; ~play.set("ePan", ePan)}.inEnvir),
|
||||
StaticText().string_(eNames[part]).align_(\center)), nil)} ! 4;
|
||||
HLayout(master, nil, *tracks)};
|
||||
|
||||
// all gui
|
||||
guiLayout = {var tabButtonReset, modelViewButton, transportViewButton, mixerViewButton, hash, tabs;
|
||||
tabButtonReset = {modelViewButton.value = 1; transportViewButton.value = 1; mixerViewButton.value = 1};
|
||||
VLayout(HLayout(
|
||||
modelViewButton = Button().states_([["model", Color.white, Color.grey], ["model", Color.black]]).action_(
|
||||
{tabButtonReset.value; modelViewButton.value = 0; tabs.index = 0 }).value_(0),
|
||||
transportViewButton = Button().states_([["transport", Color.white, Color.grey], ["transport", Color.black]]).action_(
|
||||
{tabButtonReset.value; transportViewButton.value = 0; tabs.index = 1 }).value_(1),
|
||||
mixerViewButton = Button().states_([["mixer", Color.white, Color.grey], ["mixer", Color.black]]).action_(
|
||||
{tabButtonReset.value; mixerViewButton.value = 0; tabs.index = 2 }).value_(1)),
|
||||
hash = 10000000.rand;
|
||||
tabs = StackLayout();
|
||||
tabs.add(Window.new.layout_(mixerView.value(hash)));
|
||||
tabs.insert(Window.new.layout_(transportView.value(hash)));
|
||||
tabs.insert(Window.new.layout_(modelView.value(hash)));
|
||||
tabs.index = 0)};
|
||||
|
||||
// launch the gui
|
||||
~launchGui = {var guiWin;
|
||||
guiWin = Window.new("a lot of tiles (trivial scan) - gui", Rect(200, 25, 1000, 450)).front;
|
||||
guiWin.layout = guiLayout.value;
|
||||
guiWin.front}
|
||||
)
|
@ -0,0 +1,32 @@
|
||||
(
|
||||
// MAIN LAUNCH (loads necessary files and definitions)
|
||||
|
||||
var appEnvironment, cond;
|
||||
|
||||
s.boot;
|
||||
|
||||
appEnvironment = Environment.make;
|
||||
appEnvironment.push;
|
||||
|
||||
// load
|
||||
"a_lot_of_tiles_trivial_scan_tiler.scd".loadRelative;
|
||||
"a_lot_of_tiles_trivial_scan_visualizer.scd".loadRelative;
|
||||
"a_lot_of_tiles_trivial_scan_sonifier.scd".loadRelative;
|
||||
"a_lot_of_tiles_trivial_scan_gui.scd".loadRelative;
|
||||
"a_lot_of_tiles_trivial_scan_transcriber.scd".loadRelative;
|
||||
|
||||
// init
|
||||
~dir = thisProcess.nowExecutingPath.dirname;
|
||||
~loadedTransform = nil;
|
||||
~transform = [2, 1, 0, 1, 0, 0, 0];
|
||||
~tileMap = ~mapAll.value(6 /*max depth*/, ~transform);
|
||||
~layoutState = 0;
|
||||
~dur = 0.125;
|
||||
~continuousPlay = false;
|
||||
|
||||
// launch
|
||||
~launchTileVisualizer.value;
|
||||
~launchGui.value;
|
||||
|
||||
appEnvironment.pop;
|
||||
)
|
@ -0,0 +1,71 @@
|
||||
(
|
||||
// synth for hl 6
|
||||
SynthDef(\hl_6_sine, {arg freq, amp = 1, pos = 0;
|
||||
Out.ar(0, Pan2.ar(SinOsc.ar(freq, 0, Lag.kr(amp, 2)), pos))
|
||||
}).store;
|
||||
|
||||
// synth for hl 5
|
||||
SynthDef(\hl_5_high_noise, {arg amp = 1, pos = 0;
|
||||
Out.ar(0, Pan2.ar(HPF.ar(WhiteNoise.ar(Lag.kr(amp * (1 / 128), 0.05)), 5000), pos))
|
||||
}).store;
|
||||
|
||||
// synth for hl 4
|
||||
SynthDef(\hl_4_low_noise, {arg amp = 1, pos = 0;
|
||||
Out.ar(0, Pan2.ar(LPF.ar(WhiteNoise.ar(Lag.kr(amp * (1 / 4), 0.05)), 300), pos))
|
||||
}).store;
|
||||
|
||||
// synth for amp curves for score
|
||||
SynthDef(\lamp, {arg freq, amp = 1;
|
||||
Out.ar(0, Lag.ar(K2A.ar(amp), 2))
|
||||
}).store;
|
||||
|
||||
// synth for playback
|
||||
SynthDef(\play, {arg sinePlayer1, sinePlayer2, highNoisePlayer, lowNoisePlayer,
|
||||
sineBuf1 = 0, sineBuf2 = 1, highNoiseBuf = 2, lowNoiseBuf = 3,
|
||||
eTracks, eTracksPanned, eMaster,
|
||||
eVol = #[0.8, 0.8, 0.8, 0.8], eMute = #[1, 1, 1, 1], ePan = #[0, 0, 0, 0], masterVol = 1, masterMute = 1,
|
||||
playRate = 0, startPos = 0, startTrig = 0, hash;
|
||||
var dStartTrig, phasor, countOff, imp, curBeat;
|
||||
|
||||
countOff = PulseCount.kr(Impulse.kr(4), startTrig) * startTrig;
|
||||
dStartTrig = countOff > 17;
|
||||
phasor = Phasor.ar(dStartTrig, Select.kr(playRate * dStartTrig, [0, BufRateScale.kr(sineBuf1)]),
|
||||
0, BufFrames.kr(sineBuf1), startPos * BufFrames.kr(sineBuf1));
|
||||
curBeat = ((A2K.kr(phasor) / BufFrames.kr(sineBuf1)) * BufDur.kr(sineBuf1) * 4).trunc;
|
||||
curBeat = Select.kr(dStartTrig, [countOff - 18, curBeat]);
|
||||
|
||||
sinePlayer1 = PlayBuf.ar(2, sineBuf1, playRate * dStartTrig, dStartTrig, startPos * BufFrames.kr(sineBuf1));
|
||||
sinePlayer2 = PlayBuf.ar(2, sineBuf2, playRate * dStartTrig, dStartTrig, startPos * BufFrames.kr(sineBuf2));
|
||||
highNoisePlayer = PlayBuf.ar(2, highNoiseBuf, playRate * dStartTrig, dStartTrig, startPos * BufFrames.kr(highNoiseBuf));
|
||||
lowNoisePlayer = PlayBuf.ar(2, lowNoiseBuf, playRate * dStartTrig, dStartTrig, startPos * BufFrames.kr(lowNoiseBuf));
|
||||
|
||||
eTracks = {arg i;
|
||||
[Mix.new(sinePlayer1), Mix.new(sinePlayer2), Mix.new(highNoisePlayer), Mix.new(lowNoisePlayer)][i] * eVol[i] * eMute[i]} ! 4;
|
||||
eTracksPanned = {arg i; Pan2.ar(eTracks[i], ePan[i])} ! 4;
|
||||
eMaster = Mix.new(eTracksPanned) * masterVol * masterMute * dStartTrig.lag;
|
||||
Out.ar(0, eMaster);
|
||||
|
||||
// optional click - uncomment and send to an output not used
|
||||
//Out.ar(2, 10 * BPF.ar(WhiteNoise.ar * EnvGen.kr(Env.perc(0.01, 0.1), curBeat % 2 <= 0), 440 * ((curBeat % 8 <= 0) + 1), 0.02));
|
||||
SendTrig.kr(Changed.kr(curBeat), hash, curBeat);
|
||||
imp = Impulse.kr(10);
|
||||
SendReply.kr(imp, '/masterLevel', [Amplitude.kr(eMaster)], hash);
|
||||
SendReply.kr(imp, '/trackLevels', [Amplitude.kr(eTracks)], hash)}).add;
|
||||
|
||||
// generate audio for playback
|
||||
~genPattern = {arg data, ins, durMult, genAudio = false, cond = nil;
|
||||
var pattern;
|
||||
pattern = Ppar(data.collect({
|
||||
arg seq, p;
|
||||
switch(ins,
|
||||
"hl_6_fundamental", {Pmono(\hl_6_sine, \freq, 31.midicps,
|
||||
\dur, ~dur, \amp, Pseq(seq), \pos, 0)},
|
||||
"hl_6_harmonics", {Pmono(\hl_6_sine, \freq, 31.midicps + ((31.midicps * 4) * (p + 1)),
|
||||
\dur, ~dur, \amp, Pseq(seq * (1 / pow(1 + ((p + 1) * 4), 1))), \pos, 0)},
|
||||
"hl_5_high_noise", {Pmono(\hl_5_high_noise, \dur, ~dur * durMult, \amp, Pseq(seq), \pos, 0)},
|
||||
"hl_4_low_noise", {Pmono(\hl_4_low_noise, \dur, ~dur * durMult, \amp, Pseq(seq), \pos, 0)})}));
|
||||
if(genAudio, {File.mkdir(~dir +/+ ".." +/+ "audio" +/+ "transform_" ++ ~transform.join ++ "_audio");
|
||||
pattern.render(~dir +/+ ".." +/+ "audio" +/+ "transform_" ++ ~transform.join ++ "_audio" +/+ ins ++ ".wav", ~dur * durMult * data[0].size,
|
||||
headerFormat: "WAV", sampleRate: s.sampleRate, action: {if(cond != nil, {cond.unhang})})});
|
||||
pattern};
|
||||
)
|
@ -0,0 +1,69 @@
|
||||
(
|
||||
var substitute, resamp, read, readPos = [0, 0];
|
||||
|
||||
// this function is the tiler
|
||||
// it is essentially the generator of the underlying structure of the piece and all the variations
|
||||
substitute = {arg parent, transform; var s, t, u, v, sub;
|
||||
s = 4.collect({arg i; parent[0] + ((parent[i] - parent[0]) / 2)});
|
||||
t = [parent[2] + ((parent[3] - parent[2]) / 2), parent[2], s[3], s[2]];
|
||||
u = [t[0], s[1], t[0] + ((parent[1] - s[1]) / 2), s[1] + ((parent[1] - s[1]) / 2)];
|
||||
v = [parent[1], parent[3], u[3], u[2]];
|
||||
sub = [s, t, u, v].collect({arg child, i; if(transform[i] == nil, {nil},
|
||||
{4.collect({arg j; child[((j.asDigits(2, 2) + transform[i].asDigits(2, 2)) % 2).convertDigits(2)]})})});
|
||||
sub.removeEvery([nil])};
|
||||
|
||||
// these functions either tile a specific depth (mapDepth) or up to a specific depth (mapAll)
|
||||
~mapDepth = {arg depth, transform; var tiles = [[[0, 0], [2, 0], [0, 1], [2, 1]]];
|
||||
depth.do({arg i; tiles = tiles.collect({arg tile; substitute.value(tile, transform)}).flatten});
|
||||
[tiles]};
|
||||
|
||||
~mapAll = {arg depth, transform; var tiles = Array.fill(depth + 1, {[]});
|
||||
tiles[0].add([[0, 0], [2, 0], [0, 1], [2, 1]]);
|
||||
depth.do({arg i; tiles[i].do({arg tile; tiles[i + 1] = tiles[i + 1].addAll(substitute.value(tile, transform))})});
|
||||
tiles};
|
||||
|
||||
// utility to resample the matrix output by ~matricize
|
||||
resamp = {arg matrixOrig, resampLevel; var mult, matrixNew = [];
|
||||
mult = pow(2, resampLevel);
|
||||
matrixOrig.do({arg rowOrig; var rowNew = [];
|
||||
rowOrig.do({arg elem; mult.do({rowNew = rowNew.add(elem)})});
|
||||
mult.do({matrixNew = matrixNew.add(rowNew)})});
|
||||
matrixNew};
|
||||
|
||||
// function to turn the tile map into a matrix of 1s and 0s by reading blocks of 2 vertical or horizontal tiles
|
||||
~matricize = {
|
||||
arg tileMap, depth = 6, resampLevel = 0, transform;
|
||||
var rotationState = transform[4], mirrorState = transform[5], invertState = transform[6], matrix;
|
||||
matrix = Array.fill2D(pow(2, depth - 1), pow(2, depth), {0});
|
||||
tileMap[tileMap.size-1].do({arg tile; var transpose, xMin, xMax, yMin, yMax;
|
||||
transpose = (tile * pow(2, depth)).flop;
|
||||
xMin = minItem(transpose[0]); xMax = maxItem(transpose[0]);
|
||||
yMin = minItem(transpose[1]); yMax = maxItem(transpose[1]);
|
||||
if(xMin + yMin % 2 == 1, {if(xMax - xMin == 1,
|
||||
{matrix[yMin / 2][xMin / 2] = ((invertState + 1) % 2)}, {matrix[yMin / 2][xMin / 2] = invertState})})});
|
||||
if(resampLevel > 0, {matrix = resamp.value(matrix, resampLevel)});
|
||||
matrix = switch(rotationState, 0, {matrix}, 1, {matrix.flop},
|
||||
2, {matrix.reverse.flop.reverse.flop}, 3, {matrix.reverse.flop});
|
||||
if(mirrorState == 1, {matrix = matrix.flop.reverse.flop});
|
||||
matrix};
|
||||
|
||||
// tape reading model that reads matrix from ~genData function
|
||||
// wordShift and letterShift are only used if readPos is not reset elsewhere.
|
||||
read = {
|
||||
arg matrix, wordLen = 1, wordShift = [0, 1], letterShift = [0, 1], wrap = true;
|
||||
var width = matrix.shape[1], height = matrix.shape[0], startReadPos = readPos, word = [];
|
||||
wordLen.do({arg i;
|
||||
word = word.add(matrix[readPos[0] % height][readPos[1] % width]);
|
||||
readPos = readPos + letterShift});
|
||||
readPos = startReadPos + wordShift; word.convertDigits(2)};
|
||||
|
||||
// read the matrix - this data is ultimately used to generate the piece
|
||||
~genData = {arg matrix, transform, partSize, shift = 0, pad = 16, minScale = 0, maxScale = 1;
|
||||
var width = matrix.shape[1], height = matrix.shape[0], res;
|
||||
readPos = [0, 0];
|
||||
res = partSize.collect({arg p; height.collect({arg i;
|
||||
readPos[0] = i + p + shift;
|
||||
width.collect({arg j; var val = read.value(matrix);
|
||||
minScale + ((maxScale - minScale) * val)});
|
||||
}).flatten.addAll(Array.fill(pad, {0}))})};
|
||||
)
|
@ -0,0 +1,155 @@
|
||||
(
|
||||
~transcribe = {arg data, durMult, subName, drawAmps = false;
|
||||
|
||||
data.do({arg seq, p;
|
||||
fork {var basePath, cond, pattern, ampFilePath, ampSampleRate, ampBuf, amps,
|
||||
lilyFile, lastVal, curTime = 0, lilyString = "";
|
||||
|
||||
basePath = ~dir +/+ ".." +/+ "score" +/+ "transform_" ++ ~transform.join ++ "_score" +/+ "lilypond";
|
||||
|
||||
// writes the template files for the master score and parts
|
||||
if(File.exists(basePath).not, {arg template, writeTemplate;
|
||||
writeTemplate = {arg template, part; var fileAppend, scoreType, systemsPerPage, lileFile, formattedTemplate;
|
||||
fileAppend = switch(part, nil, {"master_score"}, 6, {"part_hl6"}, 5, {"part_hl5"}, 4, {"part_hl4"});
|
||||
scoreType = switch(part, nil, {"master score"}, 6, {"part - hl 6"}, 5, {"part - hl 5"}, 4, {"part - hl 4"});
|
||||
lilyFile = File(basePath +/+ "a_lot_of_tiles_trivial_scan_transform_" ++ ~transform.join
|
||||
++ "_" ++ fileAppend ++ ".ly".standardizePath,"w");
|
||||
formattedTemplate = template.replace("~~score_type~~", scoreType);
|
||||
if(part != nil, {formattedTemplate = formattedTemplate
|
||||
.replace("systems-per-page = 4", "systems-per-page = 8");
|
||||
[4, 5, 6].difference([part]).do({arg p; formattedTemplate = formattedTemplate
|
||||
.replace("%~~hl" ++ p ++ "-start~~", "%{~~hl" ++ p.asString ++ "~~")
|
||||
.replace("%~~hl" ++ p.asString ++ "-end~~", "%}")});
|
||||
if(part != 6, {formattedTemplate = formattedTemplate
|
||||
.replace("unfold 33", "unfold 17").replace("unfold 3", "unfold 7")})});
|
||||
lilyFile.write(formattedTemplate);
|
||||
lilyFile.close};
|
||||
|
||||
File.mkdir(basePath);
|
||||
File.mkdir(basePath +/+ "includes");
|
||||
File.mkdir(basePath +/+ ".." +/+ "pdf");
|
||||
template = File.readAllString(~dir +/+ ".." +/+ "score" +/+ "score_template"
|
||||
+/+ "a_lot_of_tiles_trivial_scan_score_template.ly".standardizePath);
|
||||
template = template.replace("~~transform~~", ~transform.join);
|
||||
|
||||
writeTemplate.value(template, nil);
|
||||
writeTemplate.value(template, 6);
|
||||
writeTemplate.value(template, 5);
|
||||
writeTemplate.value(template, 4);
|
||||
});
|
||||
|
||||
cond = Condition.new;
|
||||
|
||||
// generate pattern and get amplitude values for hl6
|
||||
pattern = Pmono(\lamp, \dur, ~dur * durMult, \amp, Pseq(seq));
|
||||
if(drawAmps, {
|
||||
ampFilePath = basePath +/+ "amp_curve_tmp_hl_6_harm_" ++ (1 + (p * 4)).asString() ++ ".wav";
|
||||
pattern.render(ampFilePath, ~dur * durMult * seq.size, action: {cond.unhang}); cond.hang;
|
||||
ampSampleRate = SoundFile(ampFilePath).sampleRate;
|
||||
Buffer.readChannel(s, ampFilePath, channels: [0], action: {arg ampBuf;
|
||||
ampBuf.loadToFloatArray(action: {arg array; amps = array; cond.unhang})}); cond.hang});
|
||||
|
||||
lilyFile = if(data.size > 1, {lilyFile = subName ++ "_harm_" ++ (1 + (p * 4)).asString()}, {subName});
|
||||
lilyFile = File(basePath +/+ "includes" +/+ "a_lot_of_tiles_trivial_scan_" ++ lilyFile ++ ".ly".standardizePath,"w");
|
||||
|
||||
// main transcribe code which groups data into beats and creates lilypond code accordingly
|
||||
lastVal = nil;
|
||||
seq.collect({arg v; durMult.collect({v})}).flat.clump(4).do({arg beat, i;
|
||||
beat.separate({arg a, b; a != b}).do({arg group; var noteLength, target = 0, colors = "", lilyNote;
|
||||
noteLength = group.size;
|
||||
lilyNote = switch(noteLength, 1, {"b'16 "}, 2, {"b'8 "}, 3, {"b'8. "}, 4, {"b'4 "});
|
||||
|
||||
// lilypond directives to draw amplitude gradients for hl6
|
||||
if(drawAmps, {
|
||||
colors = amps[((ampSampleRate * curTime).asInteger)..((ampSampleRate * (curTime + (noteLength / 8))).asInteger)];
|
||||
target = colors[0];
|
||||
colors = 1 - (colors.resamp0(noteLength * 50));
|
||||
colors = colors.collect({arg color; color.round(0.0001).asString});
|
||||
colors = "\\override Glissando.details.colors = #'" ++ "(" ++ colors.join(" ") ++ ") "});
|
||||
|
||||
// 0 or 1 above every note based on data
|
||||
if(drawAmps.not, {lilyNote = lilyNote ++ "^" ++ group[0].asString ++ " "});
|
||||
|
||||
// ties notes
|
||||
lilyString = lilyString ++ if(group[0] == lastVal, {"~ "}, {""});
|
||||
lilyString = lilyString ++ if((curTime % 2 == 0), {"|"}, {""});
|
||||
lilyString = lilyString ++ colors ++ lilyNote;
|
||||
lilyString = lilyString ++ if(drawAmps && (group[0] != lastVal),
|
||||
{"-\\tweak Y-offset #-5.5 _" ++ (target.trunc(0.1) * 10).asString}, {""});
|
||||
lilyString = lilyString ++ if(drawAmps, {"\n"}, {""});
|
||||
|
||||
lastVal = group[0];
|
||||
curTime = curTime + (noteLength / 8);
|
||||
});
|
||||
});
|
||||
|
||||
// consolidates tied quarters for hl4 and hl5
|
||||
if(drawAmps.not, {
|
||||
lilyString.findRegexp("b'4 \\^(0|1) ~ b'4 \\^(0|1) ~ b'4 \\^(0|1) ~ b'4 \\^(0|1)").clump(5).do(
|
||||
{arg match; lilyString = lilyString.replace(match[0][1], "b'1 ^" ++ match[1][1])});
|
||||
lilyString.findRegexp("b'4 \\^(0|1) ~ b'4 \\^(0|1) ~ b'4 \\^(0|1)").clump(4).do(
|
||||
{arg match; lilyString = lilyString.replace(match[0][1], "b'2. ^" ++ match[1][1])});
|
||||
lilyString.findRegexp("b'4 \\^(0|1) ~ b'4 \\^(0|1)").clump(3).do(
|
||||
{arg match; lilyString = lilyString.replace(match[0][1], "b'2 ^" ++ match[1][1])});
|
||||
lilyString.findRegexp("~ \\|b'(1|2.|2|4) \\^(0|1)").clump(3).do(
|
||||
{arg match; lilyString = lilyString.replace(match[0][1], "~ |b'" ++ match[1][1])})});
|
||||
|
||||
// prettify
|
||||
lilyString = lilyString.replace("|", "\n|\n");
|
||||
lilyString = lilyString.replace("\n~ ", " ~\n");
|
||||
|
||||
// consolidates tied quarters for hl6 (very tricky)
|
||||
if(drawAmps, {var replaceFirst, tmp;
|
||||
replaceFirst = { arg string, find, replace = "", offset = 0;
|
||||
var index, out = "", array = string, findSize = max(find.size, 1);
|
||||
index = array.find(find, offset: offset);
|
||||
out = out ++ array.keep(index) ++ replace;
|
||||
array = array.drop(index + findSize);
|
||||
out ++ array};
|
||||
|
||||
tmp = lilyString;
|
||||
lilyString.split($|).do({arg bar; var beats, groups, offset = 0;
|
||||
beats = bar.split($\n);
|
||||
groups = beats.separate({arg a, b; (a.contains("b'4") && a.contains("~") && b.contains("b'4")).not });
|
||||
groups.do({arg group;
|
||||
if(group.size > 1, {
|
||||
var ampList, noteLength, tweak, tie, replace, find;
|
||||
ampList = group.collect({arg note; note[(note.find("(") + 1)..(note.find(")") - 1)]}).join(" ");
|
||||
noteLength = switch(group.size, 2, {"2 "}, 3, {"2. "}, 4, {"1 "});
|
||||
tweak = if(group[0].contains("tweak"), {group[0][(group[0].find("-\\tweak"))..(group[0].find("#-5.5") + 8)]}, {""});
|
||||
tie = if(group.last.contains("~"), {"~ "}, {" "});
|
||||
replace = "\\override Glissando.details.colors = #'(" ++ ampList ++ ") b'" ++ noteLength ++ tweak ++ tie;
|
||||
find = group.join("\n");
|
||||
tmp = replaceFirst.value(tmp, find, replace, offset)});
|
||||
offset = lilyString.find("|", offset: offset)})});
|
||||
lilyString = tmp});
|
||||
|
||||
|
||||
// final lilypond directives and write files
|
||||
if(drawAmps, {
|
||||
lilyString = "\\override Glissando.stencil = #my-gliss \\addGliss { \\override Glissando.details.thickness = 1.15 " ++ lilyString ++ " }"});
|
||||
lilyString = "{ " ++ lilyString ++ " \\bar \"|.\" \\stopStaff \\hide b'1}";
|
||||
lilyFile.write(lilyString);
|
||||
lilyFile.close;
|
||||
|
||||
// this deletes the tmp files and creates the pdfs on the last call.
|
||||
if(drawAmps, {
|
||||
File.delete(ampFilePath);
|
||||
if(p == 3, {
|
||||
"which lilypond".unixCmd({ arg res1, pid1;
|
||||
if(res1 == 0, {
|
||||
PathName(basePath).files.do({arg path;
|
||||
("lilypond -o " ++ basePath +/+ ".." +/+ "pdf " ++ path.fullPath).unixCmd({ arg res2, pid2;
|
||||
if(res2 != 0, {{var win, text;
|
||||
win = Window.new.front;
|
||||
text = StaticText(win, Rect(10, 10, 300, 200));
|
||||
text.string = "Something went wrong creating the pdfs, \n" ++
|
||||
"but the lilypond files likely generated just fine"}.defer});
|
||||
[\done, res2, pid2].postln})})}, {{var win, text;
|
||||
win = Window.new.front;
|
||||
text = StaticText(win, Rect(10, 10, 300, 200));
|
||||
text.string = "Something went wrong creating the pdfs. \nLikely Lilypond is not installed, \n" ++
|
||||
"but the Lilypond files probably generated just fine."}.defer});
|
||||
[\done, res1, pid1].postln})})})}});
|
||||
};
|
||||
)
|
@ -0,0 +1,76 @@
|
||||
(
|
||||
var normalizeTile, getMasterRect, tileDrawFunc;
|
||||
|
||||
// provide scaled coordinate for the tiles
|
||||
normalizeTile = {arg child, parent;
|
||||
var parentXMin, parentYMin, parentWidth, parentHeight, p1, p2, p3, p4;
|
||||
parentXMin = minItem(parent.slice(nil, 0));
|
||||
parentYMin = minItem(parent.slice(nil, 1));
|
||||
parentWidth = (maxItem(parent.slice(nil, 0)) - parentXMin);
|
||||
parentHeight = (maxItem(parent.slice(nil, 1)) - parentYMin);
|
||||
p1 = [(minItem(child.slice(nil, 0)) - parentXMin) / parentWidth, (minItem(child.slice(nil, 1)) - parentYMin) / parentHeight];
|
||||
p2 = [(maxItem(child.slice(nil, 0)) - parentXMin) / parentWidth, p1[1]];
|
||||
p3 = [p1[0], (maxItem(child.slice(nil, 1)) - parentYMin) / parentHeight];
|
||||
p4 = [p2[0], p3[1]];
|
||||
[p1, p2, p3, p4]};
|
||||
|
||||
// get the master rectangle for the tiling based on orientation
|
||||
getMasterRect = {arg tileWin, rotationState;
|
||||
var rectWidth, rectHeight;
|
||||
case({(rotationState % 2 == 0) && (tileWin.bounds.width <= (tileWin.bounds.height * 2))},{
|
||||
rectWidth = tileWin.bounds.width - 20;
|
||||
rectHeight = rectWidth / 2},
|
||||
{(rotationState % 2 == 0) && (tileWin.bounds.width > (tileWin.bounds.height * 2))},{
|
||||
rectHeight = tileWin.bounds.height - 20;
|
||||
rectWidth = rectHeight * 2},
|
||||
{(rotationState % 2 == 1) && (tileWin.bounds.height <= (tileWin.bounds.width * 2))},{
|
||||
rectWidth = tileWin.bounds.height - 20;
|
||||
rectHeight = rectWidth / 2},
|
||||
{(rotationState % 2 == 1) && (tileWin.bounds.height > (tileWin.bounds.width * 2))},{
|
||||
rectWidth = tileWin.bounds.width - 20;
|
||||
rectHeight = rectWidth / 2});
|
||||
Rect.new((tileWin.bounds.width - rectWidth) / 2, (tileWin.bounds.height - rectHeight) / 2, rectWidth, rectHeight)};
|
||||
|
||||
// draw the tiling
|
||||
~tileDrawFunc = {arg tileWin, tileMap, transform, layoutState;
|
||||
var rotationState = transform[4], mirrorState = transform[5], invertState = transform[6],
|
||||
masterRect, parentRects, depthLevels;
|
||||
|
||||
masterRect = getMasterRect.value(tileWin, rotationState);
|
||||
parentRects = [[masterRect], [], []];
|
||||
|
||||
Pen.width = (masterRect.width + masterRect.width) / 8000;
|
||||
Pen.scale(abs(mirrorState - 1) * 2 - 1, 1);
|
||||
Pen.translate(mirrorState * -1 * tileWin.bounds.width, 0);
|
||||
Pen.rotate(0.5 * rotationState * pi, tileWin.bounds.width / 2, tileWin.bounds.height / 2);
|
||||
|
||||
depthLevels = switch(layoutState, 0, {[6]}, 1, {[5]}, 2, {[4]}, 3, {[4, 5, 6]});
|
||||
depthLevels.do({arg depth, dIndex;
|
||||
tileMap[depth].do({arg childTile, cIndex;
|
||||
var childTileNorm, parentRect, p1, p2, childRect;
|
||||
|
||||
childTileNorm = if(dIndex > 0, {normalizeTile.value(childTile, tileMap[depth - 1][(cIndex / 4).trunc])}, {childTile});
|
||||
parentRect = if(dIndex > 0, {parentRects[dIndex][(cIndex / 4).trunc]}, {parentRects[0][0]});
|
||||
if((layoutState == 3) && (dIndex > 0), {parentRect = parentRect.insetBy(parentRect.width * 0.04 , parentRect.height * 0.04)});
|
||||
|
||||
p1 = Point.new(childTileNorm[0][0] * parentRect.width / if(dIndex > 0, {1}, {2}), childTileNorm[0][1] * parentRect.height);
|
||||
p2 = Point.new(childTileNorm[3][0] * parentRect.width / if(dIndex > 0, {1}, {2}), childTileNorm[3][1] * parentRect.height);
|
||||
|
||||
childRect = Rect.fromPoints(p1, p2).moveBy(parentRect.left, parentRect.top);
|
||||
if((layoutState == 3) && (depth < 6), {parentRects[dIndex + 1] = parentRects[dIndex + 1].add(childRect)});
|
||||
|
||||
if(if(invertState == 0, {abs(p1.x - p2.x) > abs(p1.y - p2.y)}, {abs(p1.x - p2.x) < abs(p1.y - p2.y)}),
|
||||
{Pen.color = Color.white; Pen.fillRect(childRect); Pen.color = Color.black; Pen.strokeRect(childRect)},
|
||||
{Pen.color = Color.black; Pen.fillRect(childRect); Pen.color = Color.white; Pen.strokeRect(childRect)});
|
||||
})})};
|
||||
|
||||
// launch the visualization
|
||||
~launchTileVisualizer = {
|
||||
arg border = true, isLaunch = true;
|
||||
var tileWin;
|
||||
~tileWin = Window("tile", if(isLaunch, {Rect(200, 500, 1000, 500)}, {~tileWin.bounds}), true, border);
|
||||
~tileWin.view.background_(Color.gray(0.2));
|
||||
~tileWin.drawFunc = {arg win; ~tileDrawFunc.value(win, ~tileMap, ~transform, ~layoutState)}.inEnvir;
|
||||
~tileWin.front;
|
||||
~tileWin.refresh}
|
||||
)
|
@ -0,0 +1,40 @@
|
||||
(
|
||||
var substitute, mapDepth, dir, tileMap, depth, transform, img;
|
||||
|
||||
substitute = {arg parent, transform; var s, t, u, v, sub;
|
||||
s = 4.collect({arg i; parent[0] + ((parent[i] - parent[0]) / 2)});
|
||||
t = [parent[2] + ((parent[3] - parent[2]) / 2), parent[2], s[3], s[2]];
|
||||
u = [t[0], s[1], t[0] + ((parent[1] - s[1]) / 2), s[1] + ((parent[1] - s[1]) / 2)];
|
||||
v = [parent[1], parent[3], u[3], u[2]];
|
||||
sub = [s, t, u, v].collect({arg child, i; if(transform[i] == nil, {nil},
|
||||
{4.collect({arg j; child[((j.asDigits(2, 2) + transform[i].asDigits(2, 2)) % 2).convertDigits(2)]})})});
|
||||
sub.removeEvery([nil])};
|
||||
|
||||
mapDepth = {arg depth, transform; var tiles = [[[0, 0], [2, 0], [0, 1], [2, 1]]];
|
||||
depth.do({arg i; tiles = tiles.collect({arg tile; substitute.value(tile, transform)}).flatten});
|
||||
[tiles]};
|
||||
|
||||
dir = thisProcess.nowExecutingPath.dirname;
|
||||
|
||||
256.do({arg index;
|
||||
transform = index.asDigits(4, 4);
|
||||
tileMap = mapDepth.value(6, transform);
|
||||
|
||||
img = Image.new(700, 350);
|
||||
img.draw({var rectWidth, rectHeight, xOffset, yOffset;
|
||||
rectWidth = img.bounds.width - 20; rectHeight = rectWidth / 2;
|
||||
xOffset = 10; yOffset = (img.bounds.height - rectHeight) / 2;
|
||||
Pen.width = (rectHeight + rectWidth) / 8000;
|
||||
tileMap[0].do({arg tile, i; var p1, p2, rect;
|
||||
p1 = Point.new(tile[0][0] / 2 * rectWidth, tile[0][1] * rectHeight);
|
||||
p2 = Point.new(tile[3][0] / 2 * rectWidth, tile[3][1] * rectHeight);
|
||||
rect = Rect.fromPoints(p1, p2).moveBy(xOffset, yOffset);
|
||||
if(abs(p1.x - p2.x) > abs(p1.y - p2.y),
|
||||
{Pen.color = Color.white; Pen.fillRect(rect); Pen.color = Color.black; Pen.strokeRect(rect)},
|
||||
{Pen.color = Color.black; Pen.fillRect(rect); Pen.color = Color.white; Pen.strokeRect(rect)});
|
||||
});
|
||||
Pen.color = Color.black; Pen.strokeRect(Rect.new(xOffset, yOffset, rectWidth, rectHeight))});
|
||||
if(File.exists(dir +/+ ".." +/+ "images").not, {File.mkdir(dir +/+ ".." +/+ "images")});
|
||||
img.write(dir +/+ ".." +/+ "images" +/+ transform.join ++ ".png".standardizePath);
|
||||
});
|
||||
)
|
Loading…
Reference in New Issue