From eb7dd280f6d825375f5acad896cbf715bd7c3eeb Mon Sep 17 00:00:00 2001 From: tucker johnson Date: Sat, 14 Sep 2024 16:59:09 -0400 Subject: [PATCH] init --- .gitignore | 7 + LICENSE.txt | 24 ++++ README.txt | 10 ++ general/aliases.ly | 103 +++++++++++++++ general/info.ly | 11 ++ general/scripts.ly | 25 ++++ general/umbel.ly | 34 +++++ manuscripts/altoSaxophone.ly | 23 ++++ net-clarity.ly | 242 +++++++++++++++++++++++++++++++++++ 9 files changed, 479 insertions(+) create mode 100644 .gitignore create mode 100644 LICENSE.txt create mode 100644 README.txt create mode 100644 general/aliases.ly create mode 100644 general/info.ly create mode 100644 general/scripts.ly create mode 100644 general/umbel.ly create mode 100644 manuscripts/altoSaxophone.ly create mode 100644 net-clarity.ly diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..45e83ea --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ +*.pdf +*.ps +*.midi +*.mid +*.log +*~ +.DS_Store diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 0000000..fdddb29 --- /dev/null +++ b/LICENSE.txt @@ -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 diff --git a/README.txt b/README.txt new file mode 100644 index 0000000..cbf02a5 --- /dev/null +++ b/README.txt @@ -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 index 0000000..d116780 --- /dev/null +++ b/general/aliases.ly @@ -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 index 0000000..fd1cc29 --- /dev/null +++ b/general/info.ly @@ -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 index 0000000..5d9b16e --- /dev/null +++ b/general/scripts.ly @@ -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 index 0000000..506584b --- /dev/null +++ b/general/umbel.ly @@ -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 index 0000000..48cfb24 --- /dev/null +++ b/manuscripts/altoSaxophone.ly @@ -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 index 0000000..06e83c6 --- /dev/null +++ b/net-clarity.ly @@ -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 } +} -- 2.39.5