]> git.newer.systems - choruses.git/commitdiff
init
authortucker johnson <tucker@newer.systems>
Sat, 14 Sep 2024 20:59:09 +0000 (16:59 -0400)
committertucker johnson <tucker@newer.systems>
Sat, 14 Sep 2024 20:59:09 +0000 (16:59 -0400)
.gitignore [new file with mode: 0644]
LICENSE.txt [new file with mode: 0644]
README.txt [new file with mode: 0644]
general/aliases.ly [new file with mode: 0644]
general/info.ly [new file with mode: 0644]
general/scripts.ly [new file with mode: 0644]
general/umbel.ly [new file with mode: 0644]
manuscripts/altoSaxophone.ly [new file with mode: 0644]
net-clarity.ly [new file with mode: 0644]

diff --git a/.gitignore b/.gitignore
new file mode 100644 (file)
index 0000000..45e83ea
--- /dev/null
@@ -0,0 +1,7 @@
+*.pdf
+*.ps
+*.midi
+*.mid
+*.log
+*~
+.DS_Store
diff --git a/LICENSE.txt b/LICENSE.txt
new file mode 100644 (file)
index 0000000..fdddb29
--- /dev/null
@@ -0,0 +1,24 @@
+This is free and unencumbered software released into the public domain.
+
+Anyone is free to copy, modify, publish, use, compile, sell, or
+distribute this software, either in source code form or as a compiled
+binary, for any purpose, commercial or non-commercial, and by any
+means.
+
+In jurisdictions that recognize copyright laws, the author or authors
+of this software dedicate any and all copyright interest in the
+software to the public domain. We make this dedication for the benefit
+of the public at large and to the detriment of our heirs and
+successors. We intend this dedication to be an overt act of
+relinquishment in perpetuity of all present and future rights to this
+software under copyright law.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+For more information, please refer to <https://unlicense.org>
diff --git a/README.txt b/README.txt
new file mode 100644 (file)
index 0000000..cbf02a5
--- /dev/null
@@ -0,0 +1,10 @@
+Usage
+
+Required Fonts:
+
+- haydn (https://github.com/OpenLilyPondFonts/haydn)
+- Junicode
+- Syne
+
+The content of this project (music and logos) is protected under copyright, and the underlying source code used to format that content licensed under the Unlicense.
+(Copyright © 2023 Tucker Johnson)
diff --git a/general/aliases.ly b/general/aliases.ly
new file mode 100644 (file)
index 0000000..d116780
--- /dev/null
@@ -0,0 +1,103 @@
+U = \change Staff = "u"
+D = \change Staff = "d"
+
+%spacing
+ds = #2.5
+sods = #3.4
+phds = #3.9
+
+%notation marks
+lsp =  \override TextSpanner.bound-details.left.text = "sp"
+rsp =  \override TextSpanner.bound-details.right.text = " sp"
+lst =  \override TextSpanner.bound-details.left.text = "st"
+rst =  \override TextSpanner.bound-details.right.text = " st"
+lord =  \override TextSpanner.bound-details.left.text = "ord"
+rord =  \override TextSpanner.bound-details.right.text = " ord"
+rit =  \override TextSpanner.bound-details.left.text = \markup { \upright "rit. " }
+ritPoc =  \override TextSpanner.bound-details.left.text = \markup { \upright "ritardando poco a poco " }
+molRit =  \override TextSpanner.bound-details.left.text = \markup { \upright "molto rit. " }
+pocRit =  \override TextSpanner.bound-details.left.text = \markup { \upright "poco rit. " }
+ace =  \override TextSpanner.bound-details.left.text = \markup { \upright "accel. " }
+pocAce =  \override TextSpanner.bound-details.left.text = \markup { \upright "poco accel. " }
+acePoc =  \override TextSpanner.bound-details.left.text = \markup { \upright "accelerando poco a poco " }
+molAce =  \override TextSpanner.bound-details.left.text = \markup { \upright "molto accel. " }
+
+sD = \stemDown
+sU = \stemUp
+sN = \stemNeutral
+
+ffsempre =
+    #(make-dynamic-script (markup #:combine #:transparent "f" "ff" #:combine
+#:transparent "f" #:normal-text #:italic "sempre" ) )
+
+psempre =
+    #(make-dynamic-script (markup #:combine #:transparent "f" "p" #:combine
+#:transparent "f" #:normal-text #:italic "sempre" ) )
+
+ppsempre =
+    #(make-dynamic-script (markup #:combine #:transparent "f" "pp" #:combine
+#:transparent "f" #:normal-text #:italic "sempre" ) )
+
+ppsubito =
+    #(make-dynamic-script (markup #:combine #:transparent "f" "pp" #:combine
+#:transparent "f" #:normal-text #:italic "subito" ) )
+
+psubito =
+    #(make-dynamic-script (markup #:combine #:transparent "f" "p" #:combine
+#:transparent "f" #:normal-text #:italic "subito" ) )
+
+
+
+doubleSeparator = \markup {
+  \left-column {
+  \vcenter \combine
+  \beam #2.0 #0.3 #0.5
+  \raise #0.7 \beam #2.0 #0.3 #0.5
+  }
+  \hspace #98
+  \right-column {
+  \vcenter \combine
+  \beam #2.0 #0.3 #0.5
+  \raise #0.7 \beam #2.0 #0.3 #0.5
+  }
+}
+
+
+buzzSymbol = \markup \path #0.25
+#(let ((x 3/6) (y 2/5))
+  `((moveto ,x ,(- y)) (lineto ,(- x) ,(- y))
+    (lineto ,x ,y) (lineto ,(- x) ,y)))
+
+applyBuzzSymbol = #(grob-transformer 'stencil
+  (lambda (grob orig)
+   (let ((dir (ly:grob-property grob 'direction))
+         (sten (grob-interpret-markup grob buzzSymbol)))
+    (ly:stencil-add orig
+        (ly:stencil-translate-axis sten (* 0.1 dir) Y)))))
+
+applyBuzzuSymbol = #(grob-transformer 'stencil
+  (lambda (grob orig)
+   (let ((dir (ly:grob-property grob 'direction))
+         (sten (grob-interpret-markup grob buzzSymbol)))
+    (ly:stencil-add orig
+        (ly:stencil-translate-axis sten (* 1.6 dir) Y)))))
+
+applyBuzzdSymbol = #(grob-transformer 'stencil
+  (lambda (grob orig)
+   (let ((dir (ly:grob-property grob 'direction))
+         (sten (grob-interpret-markup grob buzzSymbol)))
+    (ly:stencil-add orig
+        (ly:stencil-translate-axis sten (* 1.6 dir) Y)))))
+
+applyBuzzddSymbol = #(grob-transformer 'stencil
+  (lambda (grob orig)
+   (let ((dir (ly:grob-property grob 'direction))
+         (sten (grob-interpret-markup grob buzzSymbol)))
+    (ly:stencil-add orig
+        (ly:stencil-translate-axis sten (* 2.1 dir) Y)))))
+
+
+buzz = \tweak Stem.stencil \applyBuzzSymbol \etc
+buzzu = \tweak Stem.stencil \applyBuzzuSymbol \etc
+buzzd = \tweak Stem.stencil \applyBuzzdSymbol \etc
+buzzdd = \tweak Stem.stencil \applyBuzzddSymbol \etc
diff --git a/general/info.ly b/general/info.ly
new file mode 100644 (file)
index 0000000..fd1cc29
--- /dev/null
@@ -0,0 +1,11 @@
+xtitle = \markup { Choruses }
+xsub = \markup { " " }
+xcomp = \markup { Tucker Johnson }
+xinst = \markup  { alto saxophone and electronics }
+xdur = \markup { \null }
+xcr = \markup \tiny { Copyright Tucker Johnson 2024. All Rights Reserved (ASCAP) }
+oddhead = \markup { \fill-line { \null \center-column { \bold { \xcomp } "  " } \null } }
+evhead = \markup { \fill-line { \null \center-column { \bold { \xtitle } "  " } \null } }
+oddfoot = \markup { \fill-line { \null \center-column { " " \concat { " - " \fromproperty #'page:page-number-string " - " } } \null } }
+evfoot = \markup { \fill-line { \null \center-column { " " \concat { " - " \fromproperty #'page:page-number-string " - " } } \null } }
+finfoot = \markup { \fill-line { \null \center-column { " " \concat { " - " \fromproperty #'page:page-number-string " - " } \small \typewriter { "February 1st, 2022 - Rochester, New York" } } \null } }
diff --git a/general/scripts.ly b/general/scripts.ly
new file mode 100644 (file)
index 0000000..5d9b16e
--- /dev/null
@@ -0,0 +1,25 @@
+to-internal-ts =
+#(define-scheme-function
+  (top partial bottom)
+  (integer? rational? integer?)
+  (let
+   ((internal-ts
+     (+ (/ top bottom) (* partial (/ 1 bottom)))))
+   (cons (numerator internal-ts) (denominator internal-ts))))
+
+
+fractionalTime =
+#(define-music-function
+  (top partial bottom)
+  (integer? rational? integer?)
+  #{
+    \once \override Staff.TimeSignature.stencil = #ly:text-interface::print
+    \once \override Staff.TimeSignature.text =
+      \markup \override #'(baseline-skip . 0) \center-column \number {
+        \concat  { #(number->string top) \magnify #0.5 \pad-x #-.2 {
+          \translate #'(0 . 1) #(number->string (numerator partial))
+          \translate #'(-1 . 0) \override #'(thickness . 2) \draw-line #'(1 . 2)
+          \translate #'(0 . 0) #(number->string (denominator partial)) }} #(number->string bottom)
+        }
+     \time #(to-internal-ts top partial bottom)
+    #})
diff --git a/general/umbel.ly b/general/umbel.ly
new file mode 100644 (file)
index 0000000..506584b
--- /dev/null
@@ -0,0 +1,34 @@
+xumbel = \markup {
+  \center-column {
+           \path #0.1
+           #'((moveto 0 0)
+           (curveto 1 0.3 3.6 3 4.2 1.6)
+           (moveto 0 0)
+           (curveto -1 0.3 -3.6 3 -4.2 1.6)
+           (moveto 0 0)
+           (curveto 0.9 0.3 2.9 3 3.5 1.7)
+           (moveto 0 0)
+           (curveto -0.9 0.3 -2.9 3 -3.5 1.7)
+           (moveto 0 0)
+           (curveto 0.8 0.3 2.2 3 2.8 1.8)
+           (moveto 0 0)
+           (curveto -0.8 0.3 -2.2 3 -2.8 1.8)
+           (moveto 0 0)
+           (curveto 0.6 0.3 1.5 3 2.1 1.9)
+           (moveto 0 0)
+           (curveto -0.6 0.3 -1.5 3 -2.1 1.9)
+           (moveto 0 0)
+           (curveto 0.4 0.3 0.8 3 1.4 2)
+           (moveto 0 0)
+           (curveto -0.4 0.3 -0.8 3 -1.4 2)
+           (moveto 0 0)
+           (curveto 0.2 0.3 0.5 3 0.7 2.1)
+           (moveto 0 0)
+           (curveto -0.2 0.3 -0.5 3 -0.7 2.1)
+           (moveto 0 0)
+           (lineto 0 2.2))
+           \vspace #-0.035
+           \override #'(height . 0.25) \draw-squiggle-line #1 #'(0 . 5) ##f
+           \vspace #-0.275
+         }
+       }
diff --git a/manuscripts/altoSaxophone.ly b/manuscripts/altoSaxophone.ly
new file mode 100644 (file)
index 0000000..48cfb24
--- /dev/null
@@ -0,0 +1,23 @@
+% root = ../net-clarity.ly
+
+\new Staff \with {
+  instrumentName = \markup { clarinet in \concat { \bold "B" \tiny \flat " " } }
+  shortInstrumentName = \markup { cl }
+  \override DynamicLineSpanner.staff-padding = \sods
+  fontSize = \clarinetFont
+  \override StaffSymbol.staff-space = \clarinetMagstep
+  \consists Text_mark_engraver
+}
+
+\transpose bes c'
+\relative {
+  \compressEmptyMeasures
+  \numericTimeSignature
+  \clef treble
+  \tempo "Allegro energico" 4=104
+  \time 5/4 R1*5/4 | %001
+  \time 4/4 R1*5
+  \time 5/4 R1*5/4 |
+  \time 4/4 R1*13 |
+
+}
diff --git a/net-clarity.ly b/net-clarity.ly
new file mode 100644 (file)
index 0000000..06e83c6
--- /dev/null
@@ -0,0 +1,242 @@
+\version "2.24.3"
+
+\include "general/info.ly"
+\include "general/aliases.ly"
+\include "general/scripts.ly"
+\include "general/umbel.ly"
+
+clarinetFont = #-2
+clarinetMagstep = #(magstep -2)
+
+\paper {
+  line-width = 120
+  first-page-number = -1
+  footnote-separator-markup = \markup { \left-column { \vspace #0.5 \draw-line #'(6 . 0) } }
+  print-page-number = ##f
+  #(set-paper-size "arch a")
+  print-all-headers = ##f
+  top-margin = 0.5\in
+  bottom-margin = 0.5\in
+  left-margin = 0.9\in
+  right-margin = 0.9\in
+  indent = 0.75\in
+  short-indent = 0\cm
+  #(define fonts (set-global-fonts #:music "scorlatti" #:brace "scorlatti" #:roman "Junicode" #:sans "syne"))
+  max-systems-per-page = #10
+  system-system-spacing = #'((basic-distance . 10) (minimum-distance . 8) (padding . 12))
+  score-system-spacing = #'((basic-distance . 2) (minimum-distance . 1) (padding . 0))
+  last-bottom-spacing = #'((basic-distance . 5) (minimum-distance . 5) (padding . 0))
+  tocTitleMarkup = \markup { \hbracket \sans \bold " contents " }
+
+  tocItemMarkup = \markup \fill-line {
+    \fill-with-pattern #1.5 #CENTER .
+    \line {
+      \fromproperty #'toc:indent \fromproperty #'toc:text
+    }
+    \tiny \number \fromproperty #'toc:page
+  }
+
+  oddHeaderMarkup = \markup {
+    \concat { \if \on-page #5 \oddhead }
+    \concat { \if \on-page #7 \oddhead }
+    \concat { \if \on-page #9 \oddhead }
+    \concat { \if \on-page #11 \oddhead }
+    \concat { \if \on-page #13 \oddhead }
+    \concat { \if \on-page #15 \oddhead }
+    \concat { \if \on-page #17 \oddhead }
+    \concat { \if \on-page #19 \oddhead }
+    \concat { \if \on-page #21 \oddhead }
+    \concat { \if \on-page #23 \oddhead }
+    \concat { \if \on-page #25 \oddhead }
+
+  }
+  evenHeaderMarkup = \markup {
+    \concat { \if \on-page #4 \evhead }
+    \concat { \if \on-page #6 \evhead }
+    \concat { \if \on-page #8 \evhead }
+    \concat { \if \on-page #10 \evhead }
+    \concat { \if \on-page #12 \evhead }
+    \concat { \if \on-page #14 \evhead }
+    \concat { \if \on-page #16 \evhead }
+    \concat { \if \on-page #18 \evhead }
+    \concat { \if \on-page #20 \evhead }
+    \concat { \if \on-page #22 \evhead }
+    \concat { \if \on-page #24 \evhead }
+    \concat { \if \on-page #26 \evhead }
+  }
+  oddFooterMarkup = \markup {
+    \concat { \if \on-page #3 \fill-line { \null \xcr \null } }
+    \concat { \if \on-page #5 \oddfoot }
+    \concat { \if \on-page #7 \oddfoot }
+    \concat { \if \on-page #9 \oddfoot }
+    \concat { \if \on-page #11 \oddfoot }
+    \concat { \if \on-page #13 \oddfoot }
+    \concat { \if \on-page #15 \oddfoot }
+    \concat { \if \on-page #17 \oddfoot }
+    \concat { \if \on-page #19 \oddfoot }
+    \concat { \if \on-page #21 \oddfoot }
+    \concat { \if \on-page #23 \oddfoot }
+    \concat { \if \on-page #25 \oddfoot }
+  }
+  evenFooterMarkup = \markup {
+    \concat { \if \on-page #2 \evfoot }
+    \concat { \if \on-page #4 \evfoot }
+    \concat { \if \on-page #6 \evfoot }
+    \concat { \if \on-page #8 \evfoot }
+    \concat { \if \on-page #10 \evfoot }
+    \concat { \if \on-page #12 \evfoot }
+    \concat { \if \on-page #14 \evfoot }
+    \concat { \if \on-page #16 \evfoot }
+    \concat { \if \on-page #18 \evfoot }
+    \concat { \if \on-page #20 \evfoot }
+    \concat { \if \on-page #22 \evfoot }
+    \concat { \if \on-page #24 \evfoot }
+    \concat { \if \on-page #26 \fill-line { \null \tiny \typewriter \longHash \null } }
+  }
+
+}
+
+\book {
+
+  \markuplist { %Outside Cover
+    \fill-line {
+      \line { \null }
+      \center-column {
+       \line { \with-url #"https://newer.systems" \fontsize #1 \hbracket \sans \bold "  https://newer.systems  " }
+      }
+      \line { \null }
+      \line { \null }
+      \line { \null }
+      \line { \null }
+    }
+    \fill-line {
+        \line { \null }
+        \center-column {
+            \line { \null }
+          }
+        \right-column {
+            \vspace #15
+            \line { \fontsize #8 \bold \underline \xtitle }
+           \vspace #-0.1
+            \line { \fontsize #3 \sans \xcomp }
+           \vspace #3
+           \line { \fontsize #2 \sans \concat { "for " \xinst } }
+      }
+    }
+    \vspace #26.25
+    \fill-line {
+      \line { \null }
+      \line { \null }
+      \line { \null }
+      \line { \null }
+      \center-column {
+       \xumbel
+       \vspace #0.3
+         \line { \fontsize #1 \hbracket \sans \bold "  umbel press  " }
+      }
+      \line { \null }
+    }
+  }
+
+  \pageBreak
+  \markup { \vspace #5 }
+
+  \pageBreak
+  \markuplist { %Inside Cover
+    \fill-line {
+        \line { \null }
+        \center-column {
+            \vspace #10
+            \line { \hbracket \fontsize #10 \number 2019/24 }
+            \vspace #4
+            \line { \xcomp  }
+            \vspace #1
+            \line { \fontsize #5 \bold  \xtitle }
+            \line { \italic \xsub }
+            \vspace #4
+          }
+        \right-column {
+            \line { \null }
+      }
+    }
+  }
+
+  \pageBreak
+  \markuplist { %Front Matter
+    \fill-line {
+      \left-column {
+        \line { \bold \xtitle " [2019/24]" }
+        \line { \xinst " | " 10 minutes }
+        \line { \xcomp }
+        \vspace #25
+      }
+      \center-column {
+        \vspace #5
+        \line { \hbracket \bold \sans " program notes "}
+        \vspace #0.2
+          \center-column {
+            \override #'(line-width . 100)
+            \justify {
+              I was struck by the idea of writing \bold "Net Clarity" while listening
+              to my partner, Amber Lucas, practice one of the Reger clarinet sonatas.
+              The work extends a technical approach I employed to compose short
+              keyboard inventions in my recent piece Circumnutation and explores
+              further the structural potentialities of the diatonic set (equivalent to
+              the major scale) and its relationship to the aggregate (the collection of
+              all 12 notes). These (my) technical proclivities notwithstanding, \bold
+              "Net Clarity" also indulges in the diatonic set as a referential
+              collection \char #8211 hinting at other music, without necessarily
+              quoting. Because of its design, the work creates the sensation of a hazy
+              memory \char #8211 remembering music with varying levels of clarity.
+            }
+          }
+        \vspace #3
+        \override #'(thickness . 5)
+        \draw-squiggle-line #0.5 #'(20 . 0) ##t
+      }
+
+      \right-column {
+        \vspace #-0.5
+        \right-column \fontsize #-1 {
+          \line { \fontsize #-2 \typewriter { \shortHash - \subject } }
+          \vspace #-0.4
+          \line { \fontsize #-2 \typewriter { \commitDate } }
+          \vspace #-0.4
+          \line { \fontsize #-2 \typewriter { \branchName } }
+        }
+        \vspace #2
+      }
+    }
+  }
+
+  \pageBreak
+  \header {
+    tagline = "test"
+  }
+
+  \bookpart {
+    \header {
+      title = \markup { \fontsize #1 \xtitle }
+      subtitle = \markup { \medium \italic \xsub }
+      composer = \xcomp
+      poet = \markup { \xinst }
+    }
+    \score {
+      <<
+        \include "manuscripts/altoSaxophone.ly"
+      >>
+      %\midi { }
+      \layout {
+        \context {
+          \Score
+          \override RehearsalMark.break-visibility = #begin-of-line-invisible
+          \override SpacingSpanner.base-shortest-duration = #(ly:make-moment 1/8)
+          \override Hairpin.to-barline = ##f
+        }
+      }
+    }
+  }
+
+  \pageBreak
+  \markup { \null }
+}