From 558afa4292aaf58d03601580c1ad1a0cad205122 Mon Sep 17 00:00:00 2001 From: Davide Madrisan Date: Sat, 17 Feb 2024 22:06:42 +0100 Subject: [PATCH] feat: first version of lyscaffold Signed-off-by: Davide Madrisan --- Makefile.am | 4 +- configure.ac | 2 +- {template => lyinit}/Makefile.am | 18 +- {template => lyinit/addons}/translate.sh | 0 lyinit/data/jsbach | 7 + lyinit/lyscaffold.sh | 214 +++++++++++++++ {template => lyinit/templates}/covercolor.ly | 0 .../templates}/covercolor.ly.in | 0 {template => lyinit/templates}/global.ly | 0 lyinit/templates/header.ily | 65 +++++ {template => lyinit/templates}/logo.ly | 0 lyinit/templates/mainfile.ly | 94 +++++++ lyinit/templates/makefile-clean | 4 + lyinit/templates/makefile-clean-parts | 4 + lyinit/templates/makefile-head | 20 ++ lyinit/templates/part-four-voices.ly | 80 ++++++ template/header.ily | 0 template/template.ly | 252 ------------------ 18 files changed, 504 insertions(+), 260 deletions(-) rename {template => lyinit}/Makefile.am (67%) rename {template => lyinit/addons}/translate.sh (100%) create mode 100644 lyinit/data/jsbach create mode 100755 lyinit/lyscaffold.sh rename {template => lyinit/templates}/covercolor.ly (100%) rename {template => lyinit/templates}/covercolor.ly.in (100%) rename {template => lyinit/templates}/global.ly (100%) create mode 100644 lyinit/templates/header.ily rename {template => lyinit/templates}/logo.ly (100%) create mode 100644 lyinit/templates/mainfile.ly create mode 100644 lyinit/templates/makefile-clean create mode 100644 lyinit/templates/makefile-clean-parts create mode 100644 lyinit/templates/makefile-head create mode 100644 lyinit/templates/part-four-voices.ly delete mode 100644 template/header.ily delete mode 100644 template/template.ly diff --git a/Makefile.am b/Makefile.am index 593d536b..3a647cea 100644 --- a/Makefile.am +++ b/Makefile.am @@ -17,7 +17,7 @@ AM_MAKEFLAGS = --no-print-directory -SUBDIRS = src \ - template +SUBDIRS = lyinit \ + src check-local: all diff --git a/configure.ac b/configure.ac index 039f1c89..eee1ef39 100644 --- a/configure.ac +++ b/configure.ac @@ -69,6 +69,7 @@ test -n "$critic_missing" && AC_MSG_ERROR([ AC_CONFIG_FILES([\ Makefile \ + lyinit/Makefile \ src/Makefile \ src/alfredo-casella/Makefile \ src/alfredo-casella/deux-contrastes-op.31/Makefile \ @@ -141,7 +142,6 @@ AC_CONFIG_FILES([\ src/robert-schumann/Makefile \ src/rued-langgaard/Makefile \ src/rued-langgaard/insektarium-BVN134/Makefile \ - template/Makefile ]) AC_OUTPUT diff --git a/template/Makefile.am b/lyinit/Makefile.am similarity index 67% rename from template/Makefile.am rename to lyinit/Makefile.am index 535aad80..2afc7f3a 100644 --- a/template/Makefile.am +++ b/lyinit/Makefile.am @@ -17,10 +17,18 @@ AM_MAKEFLAGS = --no-print-directory -EXTRA_DIST = covercolor.ly.in \ - global.ly \ - logo.ly \ - template.ly \ - translate.sh +EXTRA_DIST = lyscaffold.sh \ + addons/translate.sh \ + data/jsbach \ + templates/covercolor.ly \ + templates/covercolor.ly.in \ + templates/global.ly \ + templates/header.ily \ + templates/logo.ly \ + templates/makefile-clean \ + templates/makefile-clean-parts \ + templates/makefile-head \ + templates/mainfile.ly \ + templates/part-four-voices.ly check-local: all diff --git a/template/translate.sh b/lyinit/addons/translate.sh similarity index 100% rename from template/translate.sh rename to lyinit/addons/translate.sh diff --git a/lyinit/data/jsbach b/lyinit/data/jsbach new file mode 100644 index 00000000..760c856d --- /dev/null +++ b/lyinit/data/jsbach @@ -0,0 +1,7 @@ +composer_firstname='Johann Sebastian' +composer_lastname="Bach" +instruments="For Piano or Harpsichord" +header_composer="Johann Sebastian Bach (1685-1750)" +header_style="Baroque" +mutopiacomposer="BachJS" +mutopiainstrument="Harpsichord, Piano" diff --git a/lyinit/lyscaffold.sh b/lyinit/lyscaffold.sh new file mode 100755 index 00000000..7868d380 --- /dev/null +++ b/lyinit/lyscaffold.sh @@ -0,0 +1,214 @@ +#!/usr/bin/env bash +# A simple scaffolding script for Lilypond partitions. +# Copyright (c) 2024 Davide Madrisan + +PROGNAME="${0##*/}" +PROGPATH="${0%/*}" +REVISION=1 + +die () { echo -e "$PROGNAME: error: $1" 1>&2; exit 1; } + +usage () { + cat <<__EOF +Usage: $PROGNAME -t [-p] + $PROGNAME --help + $PROGNAME --version + +Where: + -c|--composer : the data file for the composer + -d|--targetdir : the directory where to create the partition + -n|--pdfname : the name of the file containing the partition + -o|--opus : opus of the composition + -p|--parts : the partition is splitted into several files + -s|--source : the source of the partition + -t|--title : title of the composition + -y|--year : the date of the composition + |--part4 : 4-voice part to be added to ./parts folder + +Example: + $0 -c $PROGPATH/data/jsbach \\ + --targetdir src/johann-sebastian-bach/partitas/BWV825 \\ + --opus 'BWV 825' \\ + --parts \\ + --title 'Partita I' \\ + --pdfname JS-Bach-BWV830-Partita-1.pdf \\ + --source 'Muzgiz, Moscow' \\ + --year "between 1725 and 1726" \\ + --part4 bach-partita-1-1-praeludium.ly \\ + --part4 bach-partita-1-2-allemande.ly \\ + --part4 bach-partita-1-3-corrente.ly \\ + --part4 bach-partita-1-4-sarabande.ly \\ + --part4 bach-partita-1-5-menuet-1.ly \\ + --part4 bach-partita-1-5-menuet-2.ly \\ + --part4 bach-partita-1-6-giga.ly + +__EOF +} + +help () { + cat <<__EOF +$PROGNAME v$REVISION - a simple scaffolding script for Lilypond partitions +Copyright (C) 2024 Davide Madrisan + +__EOF + + usage +} + +lilypond_version () { + ( set -- $(lilypond --version 2>/dev/null | head -n 1); echo "$3"; ) +} + +ly_opus="Unset --opus" +ly_title="Unset --title" + +ly_parts="false" + +ly_sed () { + [ -n "$1" -a ! -r "$1" ] && die "ly_sed: cannot read input file: $1" + ( + . "$ly_data" + # footer = "Mutopia-2023/04/15" + header_footer="$(date +'%Y/%m/%d')" + # lastupdated = "2023 April 15" + header_lastupdate="$(date +'%Y %B %d')" + + sed "s^@composer_firstname@^${composer_firstname}^g; + s^@composer_lastname@^${composer_lastname}^g; + s^@COMPOSER_LASTNAME@^${composer_lastname^^}^g; + s^@header_composer@^${header_composer}^; + s^@header_date@^${header_date}^; + s^@header_footer@^${header_footer}^; + s^@header_lastupdate@^${header_lastupdate}^; + s^@header_style@^${header_style}^; + s^@instruments@^${instruments}^; + s^@mutopiacomposer@^${mutopiacomposer}^; + s^@mutopiainstrument@^${mutopiainstrument}^; + s^@opus@^${ly_opus}^g; + s^@source@^${ly_source}^g; + s^@title@^${ly_title}^g; + " < "${1:-/dev/stdin}" + ) +} + +ly_parts4_files=() + +while test -n "$1"; do + case "$1" in + --help|-h) help; exit 0 ;; + --version|-V) + echo "$PROGNAME v$REVISION" + exit 0 ;; + --composer|-c) + ly_data="$2"; shift ;; + --opus|-o) + ly_opus="$2"; shift ;; + --parts|-p) + ly_parts="true" ;; + --part4) + ly_parts4_files+=("$2"); shift ;; + --pdfname|-n) + ly_pdfname="$2"; shift ;; + --source|-s) + ly_source="$2"; shift ;; + --targetdir|-d) + ly_targetdir="$2"; shift ;; + --title|-t) + ly_title="$2"; shift ;; + --year|-y) + ly_date="$2"; shift ;; + --*|-*) die "unknown argument: $1" ;; + *) die "unknown option: $1" ;; + esac + shift +done + +[ "$ly_data" ] || die "you must set a --composer" +[ "$ly_date" ] || die "you must set a --year" +[ "$ly_pdfname" ] || die "you must set a --pdfname" +[ "$ly_source" ] || die "you must set a --source" +[ "$ly_targetdir" ] || die "you must set a --targetdir" + +[ -r "$ly_data" ] || die "file not found: $ly_data" + +# remove the .pdf suffix if any +ly_mainfile="${ly_pdfname%\.pdf}" + +LY_STATIC_FILES="\ +covercolor.ly +covercolor.ly.in +global.ly +logo.ly" + +ly_version="$(lilypond_version)" +[ "$ly_version" ] || die "cannot get the Lilyond version" +echo "found Lilypond version $ly_version" + +echo "creating the target folder '$ly_targetdir' ..." +mkdir -p "$ly_targetdir" +[ "$ly_parts" = "true" ] && mkdir -p "$ly_targetdir/parts" + +echo "copying common files ..." +for f in $LY_STATIC_FILES; do + cp -v $PROGPATH/templates/$f "$ly_targetdir" +done + +echo "creating '$ly_targetdir/header.ily' ..." +( + ly_sed < $PROGPATH/templates/header.ily +) > "$ly_targetdir/header.ily" + +echo "creating '$ly_targetdir/${ly_mainfile}.ly'" +( + echo "\\version \"$ly_version\"" + echo + ly_sed < $PROGPATH/templates/mainfile.ly +) > "$ly_targetdir/${ly_mainfile}.ly" + +echo "creating the makefile '$ly_targetdir/Makefile.am' ..." +( + cat $PROGPATH/templates/makefile-head + echo + echo "EXTRA_DIST = ${ly_mainfile}.ly \\" + + set -- $LY_COMMON_FILES + while test -n "$1"; do + [ "$f" = "covercolor.ly" ] && { shift; continue; } + echo -en "\t $1" + [ "$2" ] && echo " \\" || echo "" + shift + done + + echo + echo "all: \$(BUILT_SOURCES) $ly_mainfile" + + echo + if [ "$ly_parts" = "true" ]; then + cat $PROGPATH/templates/makefile-clean-parts + else + cat $PROGPATH/templates/makefile-clean + fi +) > "$ly_targetdir/Makefile.am" + +for p in ${ly_parts4_files[@]}; do + if [ -s "$ly_targetdir/parts/$p" ]; then + echo "WARNING: skip non empty file: $ly_targetdir/parts/$p" + else + echo "creating $ly_targetdir/parts/$p ..." + ( ly_sed < $PROGPATH/templates/part-four-voices.ly ) \ + > "$ly_targetdir/parts/$p" + fi + echo "updating $ly_targetdir/${ly_mainfile}.ly" + echo "\\include \"./parts/$p\"" >> $ly_targetdir/${ly_mainfile}.ly +done + +echo " ++ new project structure" +tree "$ly_targetdir" + +echo " +WARNING: make sure to update + * configure.ac + * the files Makefile.am in $ly_targetdir + * 'date' and 'source' in $ly_targetdir/header.ily +" diff --git a/template/covercolor.ly b/lyinit/templates/covercolor.ly similarity index 100% rename from template/covercolor.ly rename to lyinit/templates/covercolor.ly diff --git a/template/covercolor.ly.in b/lyinit/templates/covercolor.ly.in similarity index 100% rename from template/covercolor.ly.in rename to lyinit/templates/covercolor.ly.in diff --git a/template/global.ly b/lyinit/templates/global.ly similarity index 100% rename from template/global.ly rename to lyinit/templates/global.ly diff --git a/lyinit/templates/header.ily b/lyinit/templates/header.ily new file mode 100644 index 00000000..410dec36 --- /dev/null +++ b/lyinit/templates/header.ily @@ -0,0 +1,65 @@ +\header { + composer = "@header_composer@" + date = "@header_date@" + + footer = "Mutopia-@header_footer@" + + lastupdated = "@header_lastupdate@" + license = "Creative Commons Attribution-ShareAlike 4.0" + maintainerEmail = "d.madrisan@proton.me" + maintainerWeb = "https://github.com/madrisan/open-scores" + + % Extra Mutopia Information + mutopiacomposer = "@mutopiacomposer@" + mutopiacopyright = "Creative Commons Attribution-ShareAlike 4.0" + mutopiainstrument = "@mutopiainstrument@" + mutopiamaintainer = "Davide Madrisan" + mutopiaopus = "@opus@" + mutopiatitle = "@title@" + + opus = "@opus@" + title = "@title@" + source = "@source@" + style = "@header_style@" + + copyright = \markup { + \override #'(font-name . "DejaVu Sans, Bold") + \override #'(baseline-skip . 0) + \right-column { + \with-url #"http://www.MutopiaProject.org" { + \abs-fontsize #9 "Mutopia " + \concat { + \abs-fontsize #12 + \with-color \coverColor "ǀ" + \abs-fontsize #9 "Project " + } + } + } + \override #'(font-name . "DejaVu Sans, Bold") + \override #'(baseline-skip . 0 ) + \center-column { + \abs-fontsize #11.9 + \with-color #grey + \bold { "ǀ" "ǀ" } + } + \override #'(font-name . "DejaVu Sans,sans-serif") + \override #'(baseline-skip . 0) + \column { + \abs-fontsize #8 + \concat { + "Typeset using " \with-url #"http://www.lilypond.org" "LilyPond " ©" 2022-2024 ""by " \maintainer " — " \footer + } + \concat { + \concat { + \abs-fontsize #8 { + \with-url #"http://creativecommons.org/licenses/by-sa/40/" + "Creative Commons Attribution ShareAlike 4.0 International License" + " — free to distribute, modify, and perform" + } + } + \abs-fontsize #13 \with-color \coverColor "ǀ" + } + } + } + tagline = ##f +} diff --git a/template/logo.ly b/lyinit/templates/logo.ly similarity index 100% rename from template/logo.ly rename to lyinit/templates/logo.ly diff --git a/lyinit/templates/mainfile.ly b/lyinit/templates/mainfile.ly new file mode 100644 index 00000000..50f4f1be --- /dev/null +++ b/lyinit/templates/mainfile.ly @@ -0,0 +1,94 @@ +#(ly:set-option 'relative-includes #t) + +\include "./covercolor.ly" + +\header { + tagline = ##f +} + +\paper { + #(set-paper-size "a4") + annotate-spacing = ##f + binding-offset = 0\mm + bottom-margin = 5\mm + first-page-number = 0 + indent = 0.0 + inner-margin = 10\mm +% last-bottom-spacing.padding = #2 + left-margin = 10\mm + line-width = 18.4\cm + markup-system-spacing = + #'((basic-distance . 2) + (minimum-distance . 1) + (padding . 2) + (stretchability . 24)) + outer-margin = 20\mm + print-all-headers = ##t + ragged-last-bottom = ##f + ragged-bottom = ##f + right-margin = 10\mm + system-system-spacing = + #'((basic-distance . 2) + (minimum-distance . 1) + (padding . 2) + (stretchability . 24)) + top-margin = 10\mm + top-markup-spacing.basic-distance = 0 + top-system-spacing.basic-distance = 1 +} + +\bookpart { + \header { + maintainer = "Davide Madrisan" + maintainerEmail = "d.madrisan@proton.me" + } + + \include "./header.ily" + \header { + title = ##f + composer = ##f + } + + \markup { + \with-dimensions #'(0 . 0) #'(0 . 0) + \with-color \coverColor + \filled-box #'(-200 . 200) #'(-200 . 200) #0 + } + \markup { + \fill-line { + \center-column { + \null\null\null\null + \null\null\null\null + \line { \abs-fontsize #30 \bold "@composer_firstname@" } + \null + \line { \abs-fontsize #80 \bold "@composer_lastname@" } + \null + \fill-line { \draw-hline } + \null\null\null + \line { \abs-fontsize #40 \bold "@title@" } + \null\null + \line { \abs-fontsize #20 "@opus@" } + \null\null\null + \null\null\null + \fill-line { \abs-fontsize #20 "For Piano or Harpsichord" } + \null\null\null + \null\null\null + } + } + } + + \include "./logo.ly" + + \markup { + \fill-line { + \center-column { + \null\null\null\null + \fill-line { + \abs-fontsize #10 "Based on: @source@" + } + \null\null + } + } + } +} + diff --git a/lyinit/templates/makefile-clean b/lyinit/templates/makefile-clean new file mode 100644 index 00000000..10828f0e --- /dev/null +++ b/lyinit/templates/makefile-clean @@ -0,0 +1,4 @@ +clean-local: + -rm -f $(BUILT_SOURCES) + -rm -f *.midi + -rm -f *.pdf diff --git a/lyinit/templates/makefile-clean-parts b/lyinit/templates/makefile-clean-parts new file mode 100644 index 00000000..7cc9f4bd --- /dev/null +++ b/lyinit/templates/makefile-clean-parts @@ -0,0 +1,4 @@ +clean-local: + -rm -f $(BUILT_SOURCES) + -rm -f *.midi parts/*.midi + -rm -f *.pdf parts/*.pdf diff --git a/lyinit/templates/makefile-head b/lyinit/templates/makefile-head new file mode 100644 index 00000000..7d3c8b47 --- /dev/null +++ b/lyinit/templates/makefile-head @@ -0,0 +1,20 @@ +## the Free Software Foundation, either version 3 of the License, or +## (at your option) any later version. +## +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with this program. If not, see . + +SUFFIXES = .in +.in:; @echo "Generating $@...";\ + sed "s,@rgb_color@,$(RGB_COLOR),g;" \ + $< > $@ + +%: %.ly + $(LILYPOND) --pdf --output $@ $< + +BUILT_SOURCES = covercolor.ly diff --git a/lyinit/templates/part-four-voices.ly b/lyinit/templates/part-four-voices.ly new file mode 100644 index 00000000..fa2d99c1 --- /dev/null +++ b/lyinit/templates/part-four-voices.ly @@ -0,0 +1,80 @@ +Global = { + \key c \major + \time 4/4 + \include "../global.ly" +} + +staffLower = { \change Staff = "lower" } +staffUpper = { \change Staff = "upper" } + +Soprano = \context Voice = "one" \relative c' { + \voiceOne + \stemNeutral + \override MultiMeasureRest.staff-position = #0 + \override Rest.staff-position = #0 + %1 + | R1 + \fine +} + +Alto = \context Voice = "two" \relative c' { + \voiceTwo + \stemDown + \override Rest.staff-position = #0 + %1 +} + +Tenor = \context Voice = "three" \relative c { + \voiceThree + \stemUp + \override Rest.staff-position = #0 + %1 +} + +Bass = \context Voice = "four" \relative c { + \voiceFour + \stemDown\tieNeutral + \override MultiMeasureRest.staff-position = #0 + \override Rest.staff-position = #0 + %1 + | R1 + \fine +} + +\score { + \new PianoStaff + << + \accidentalStyle Score.piano + \context Staff = "upper" << + \set Staff.midiInstrument = #"acoustic grand" + \Global + \clef treble + \Soprano + \Alto + >> + \context Staff = "lower" << + \set Staff.midiInstrument = #"acoustic grand" + \Global + \clef bass + \Tenor + \Bass + >> + >> + \header { + composer = ##f # "@composer_firstname@ @composer_lastnam@" + opus = ##f # "@opus@" + title = \markup { "MISSING TITLE" } + subtitle = ##f + } + \layout { + \context { + \PianoStaff + \override Parentheses.font-size = #-2 + \override TextScript.font-shape = #'italic + \override TextScript.font-size = #-1 + } + } + \midi { + \tempo 4 = 100 + } +} diff --git a/template/header.ily b/template/header.ily deleted file mode 100644 index e69de29b..00000000 diff --git a/template/template.ly b/template/template.ly deleted file mode 100644 index 8250705c..00000000 --- a/template/template.ly +++ /dev/null @@ -1,252 +0,0 @@ -\version "2.25.12" - -#(ly:set-option 'relative-includes #t) - -\include "./covercolor.ly" - -\header { - tagline = ##f -} - -\paper { - #(set-paper-size "a4") - annotate-spacing = ##f - binding-offset = 0\mm - bottom-margin = 5\mm - first-page-number = 0 - indent = 0.0 - inner-margin = 10\mm -% last-bottom-spacing.padding = #2 - left-margin = 10\mm - line-width = 18.4\cm - markup-system-spacing = - #'((basic-distance . 2) - (minimum-distance . 1) - (padding . 2) - (stretchability . 24)) - outer-margin = 20\mm - print-all-headers = ##t - ragged-last-bottom = ##f - ragged-bottom = ##f - right-margin = 10\mm - %scoreTitleMarkup = \markup { - % \fill-line { - % \if \should-print-all-headers - % \fontsize #3 \bold \smallCaps \fromproperty #'header:title - % } - % - % note: (padding . 0) for closer staves when dynamics are present - system-system-spacing = - #'((basic-distance . 2) - (minimum-distance . 1) - (padding . 2) - (stretchability . 24)) - top-margin = 10\mm - top-markup-spacing.basic-distance = 0 - top-system-spacing.basic-distance = 1 -} -} - -\bookpart { - \header { - maintainer = "Davide Madrisan" - maintainerEmail = "d.madrisan@proton.me" - } - - \include "./header.ily" - \header { - title = ##f - composer = ##f - } - - \markup { - \with-dimensions #'(0 . 0) #'(0 . 0) - \with-color \coverColor - \filled-box #'(-200 . 200) #'(-200 . 200) #0 - } - \markup { - \fill-line { - \center-column { - \null\null\null\null\null - \line { \abs-fontsize #40 \bold "Author's" } - \null - \line { \abs-fontsize #70 \bold "Name" } - \null - \fill-line { \draw-hline } - \null\null\null - \line \abs-fontsize #36 \bold { "The Title" } - \null\null - \line \abs-fontsize #26 \bold { "An Optional Subtitle" } - \null\null\null - \line \abs-fontsize #26 \bold { "Op. N" } - \null\null\null - \line \abs-fontsize #30 \bold { "Pieces numbers if any" } - \null\null\null - \null\null\null - \null\null\null - } - } - } - - \include "./logo.ly" - - \markup { - \fill-line { - \center-column { - \null\null - \fill-line \abs-fontsize #10 { - "Based on the score published by Someone - Somewhere, Year" - } - \null\null - } - } - } -} -\pageBreak - - -Global = { - \key c \minor - \time 3/4 - \include "./global.ly" -} - -staffLower = { \change Staff = "lower" } -staffUpper = { \change Staff = "upper" } - -grayTextColor = #(x11-color "dimgray") - -Sopran = \context Voice = "one" \relative c' { - \voiceOne - \override MultiMeasureRest.staff-position = #0 - \override Rest.staff-position = #0 - \override DynamicText.Y-offset = #-2.4 - \override Hairpin.Y-offset = #-2 - % shows staff change lines but in gray color to reduce visual impact - \showStaffSwitch - \override VoiceFollower.color = \grayTextColor - %1 - \tempo \markup { \bold "Largo" } 4 = 60 - | ees16( f ees d) ees2 - | ees16( f ees d) ees2 - | ees16( f ees d) ees4 c - | d2. - \bar "||" - \break - %5 - | \stemNeutral r8 ees' ees[( c)] c( aes) - | aes16( bes aes g) aes4. fis8 - | \stemUp g8 d' d[( b)] b( g) - | s2. - | s2. - %10 - %\fine -} - -Alto = \context Voice = "two" \relative c' { - \voiceTwo - \override MultiMeasureRest.staff-position = #0 - \override Rest.staff-position = #0 - %1 - | c2. - | c2. - | c2 aes4 - | c8( b16 a) b2 - %5 - | s2. - | ees4~( ees16 f ees d) ees8 ees - | d2 s4 -} - -Tenor = \context Voice = "three" \relative c' { - \voiceThree - \override MultiMeasureRest.staff-position = #0 - \override Rest.staff-position = #0 - %1 - | g4 g2 - | g4 g2 - | g4 g c, - | s2. - %5 - | ees16( f ees d) ees2 - | c4 c,4. c'8 - | b4 s2 -} - -Bass = \context Voice = "four" \relative c { - \voiceFour - \override MultiMeasureRest.staff-position = #0 - \override Rest.staff-position = #0 - %1 - | c2 c4 - | bes2 bes4 - | aes2 f4 - | \stemNeutral g2. - %5 - | \stemDown c2 c,4 - | s2. - | s2. - | s2. - | s2. - %10 - %\fine -} - -centerDynamics = { - %1 - | \once\override Staff.TextScript.extra-offset = #'(-2 . 0) - s4_\markup { \hspace #0.5 \dynamic p } s2 - | s2.*5 - %7 - | s4 s_\markup { ". . ." } s2 -} - -\score { - \new PianoStaff - << - \accidentalStyle Score.piano - \context Staff = "upper" << - \set Staff.midiInstrument = #"acoustic grand" - \Global - \clef treble - \Sopran - \Alto - >> - \context Dynamics << - \Global \centerDynamics - >> - \context Staff = "lower" << - \set Staff.midiInstrument = #"acoustic grand" - \Global - \clef bass - \Tenor - \Bass - >> - >> - \header { - composer = "Krzysztof Penderecki" - arranger = "Arr. Tim Allhof" - opus = ##f % "Op. 1" - title = \markup { "Aria" } - subtitle = \markup { "from" \italic{ "Three pieces in old style" } } - subsubtitle = ##f - } - \layout { - \context { - \PianoStaff - \override Parentheses.font-size = #-2 - \override TextScript.font-shape = #'italic - \override TextScript.font-size = #-1 - - \override StaffGrouper.staff-staff-spacing = #'( - (basic-distance . 0) - (minimum-distance . 12) - (padding . 0)) - % More space between staves in the same PianoStaff - \override StaffGrouper.staff-staff-spacing.minimum-distance = 11 - } - } - \midi { - \tempo 4 = 100 - } -}