I already asked some question about \markup and \midi and get some usefull
answer. Here I attached the real code I'm working on.
I would like to generate the midi and I would appreciate some suggestion.
Kieren suggest to separate the layout and midi. Pro: clear and easy to do;
Cons: a bit verbose and difficult to maintain.
Thomas Morley proposed a scheme method to extract the score from the
markup. Pro: it works nicely with some test examples. Cons: complex.
I personally would prefer Kieren solution because I can handle it better.
But maybe organizing the code differently gives better solution....?
* * *
My code looks to me very redundant. For example:
\markup \justify-line {
\score {{ \set Staff.instrumentName = #(nextcount)
\clef bass \override Score.TimeSignature #'stencil = ##f
\cadenzaOn
*\tetrachordOneUp*
\cadenzaOff}
}
\score {{ \set Staff.instrumentName = #(nextcount)
\clef bass \override Score.TimeSignature #'stencil = ##f
\cadenzaOn
*\tetrachordOneDn*
\cadenzaOff}
}
\score {{ \set Staff.instrumentName = #(nextcount)
\clef bass \override Score.TimeSignature #'stencil = ##f
\cadenzaOn
*\tetrachordOneUpDn*
\cadenzaOff}
}
}
This repeats three times the same thing except for referencing different
variables:
\tetrachordOneUp
\tetrachordOneDn
\tetrachordOneUpDn
Is this the correct way to go or is there any way to simplify it?
Thank you, g.
\version "2.19.60"
date = #(strftime "%d-%m-%Y" (localtime (current-time)))
#(define mystring ".")
#(define count 0)
#(define (nextcount) (begin
(set! count (+ 1 count))
(string-append (number->string count) mystring)
)
)
\layout { indent = #0 }
\header
{
title = "Scala maggiore"
subtitle = "Bassi standard"
composer = "Author: gwl"
opus = ""
tagline = \date
}
eccetera =
{
\hideNotes c \stopStaff e-\tweak TextScript.staff-padding #'() -\markup { \italic "ecc." }
}
cf =
#(define-event-function (arg) (number-or-markup?)
#{ _\markup \underline \finger
#(if (number? arg) (number->string arg) arg)
#})
% this is to generate one midi file so that the real the other midi files will start from 1
\score
{
{c}
\midi { }
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
tetrachordOneUp = \fixed c, {c8_3 [d_2 e\cf 3 f_4]}
tetrachordOneDn = \fixed c, {f8_4 [e\cf 3 d_2 c8_3]}
tetrachordOneUpDn = \fixed c, {c8_3 [d_2 e\cf 3] f_4 [e\cf 3 d_2]}
tetrachordTwoUp = \fixed c, {c8_2 [d\cf 4 e\cf 2 f_3]}
tetrachordTwoDn = \fixed c, {f8_3 [e\cf 2 d\cf 4 c_2]}
tetrachordTwoUpDn = \fixed c, {c8_2 [d\cf 4 e\cf 2] f_3 [e\cf 2 d\cf 4]}
cgup = \fixed c, {c8_3 [d_2 e \cf 3 f_4 g_2]}
cgdn = \fixed c, {g8_2 [f_4 e\cf 3 d\cf 2 c_3]}
cgupdn = \fixed c, {c8_3 [d_2 e \cf 3 f_4] g_2 [f_4 e\cf 3 d\cf 2]}
caup = \fixed c, {c8_3 [d_2 e\cf 3 f_4 g_2 a\cf 4]}
cadn = \fixed c, {a\cf 4 [g_2 f_4 e\cf 3 d_2 c_3]}
caupdn = \fixed c, {c8_3 [d_2 e\cf 3 f_4 g_2] a\cf 4 [g_2 f_4 e\cf 3 d_2]}
cbup = \fixed c, {c8_3 [d_2 e\cf 3 f_4 g_2 a\cf 4 b\cf 2]}
cbdn = \fixed c, {b\cf 2 [a\cf 4 g_2 f_4 e\cf 3 d_2 c_3]}
cbupdn = \fixed c, {c8_3 [d_2 e\cf 3 f_4 g_2 a\cf 4] b\cf 2 [a\cf 4 g_2 f_4 e\cf 3 d_2]}
ccup = \fixed c, {c8_3 [d_2 e\cf 3 f_4 g_2 a\cf 4 b\cf 2 c'_3]}
ccdn = \fixed c, {c'_3 [b\cf 2 a\cf 4 g_2 f_4 e\cf 3 d_2 c_3]}
ccupdn = \fixed c, {c8_3 [d_2 e\cf 3 f_4 g_2 a\cf 4 b\cf 2] c'_3 [b\cf 2 a\cf 4 g_2 f_4 e\cf 3 d_2]}
shiftPattern = \tetrachordOneUp
shiftUpModel = {
\clef bass \override Score.TimeSignature #'stencil = ##f %to hide the time 4/4
\cadenzaOn
\repeat percent 2 {\transpose c c \shiftPattern}
\bar"|"
\repeat percent 2 {\transpose c g \shiftPattern}
\bar"|"
\repeat percent 2 {\transpose c d \shiftPattern}
\eccetera
\cadenzaOff
}
shiftUpUpModel = {
\clef bass \override Score.TimeSignature #'stencil = ##f %to hide the time 4/4
\cadenzaOn
\repeat percent 2 {\transpose c c \shiftPattern}
\bar"|"
\repeat percent 2 {\transpose c d \shiftPattern}
\bar"|"
\repeat percent 2 {\transpose c e \shiftPattern}
\eccetera
\cadenzaOff
}
shiftDnModel = {
\clef bass \override Score.TimeSignature #'stencil = ##f %to hide the time 4/4
\cadenzaOn
\repeat percent 2 {\transpose c c \shiftPattern}
\bar"|"
\repeat percent 2 {\transpose c f \shiftPattern}
\bar"|"
\repeat percent 2 {\transpose c bes, \shiftPattern}
\eccetera
\cadenzaOff
}
shiftDnDnModel = {
\clef bass \override Score.TimeSignature #'stencil = ##f %to hide the time 4/4
\cadenzaOn
\repeat percent 2 {\transpose c c \shiftPattern}
\bar"|"
\repeat percent 2 {\transpose c bes, \shiftPattern}
\bar"|"
\repeat percent 2 {\transpose c aes \shiftPattern}
\eccetera
\cadenzaOff
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\markup "Tetracordo diteggiatura I"
\markup \justify-line {
\score {{ \set Staff.instrumentName = #(nextcount)
\clef bass \override Score.TimeSignature #'stencil = ##f %to hide the time 4/4
\cadenzaOn
\tetrachordOneUp
\cadenzaOff}
}
\score {{ \set Staff.instrumentName = #(nextcount)
\clef bass \override Score.TimeSignature #'stencil = ##f %to hide the time 4/4
\cadenzaOn
\tetrachordOneDn
\cadenzaOff}
}
\score {{ \set Staff.instrumentName = #(nextcount)
\clef bass \override Score.TimeSignature #'stencil = ##f %to hide the time 4/4
\cadenzaOn
\tetrachordOneUpDn
\cadenzaOff}
}
}
\markup "Tetracordo diteggiatura II"
\markup \justify-line {
\score {{ \set Staff.instrumentName = #(nextcount)
\clef bass \override Score.TimeSignature #'stencil = ##f %to hide the time 4/4
\cadenzaOn
\tetrachordTwoUp
\cadenzaOff}
}
\score {{ \set Staff.instrumentName = #(nextcount)
\clef bass \override Score.TimeSignature #'stencil = ##f %to hide the time 4/4
\cadenzaOn
\tetrachordTwoDn
\cadenzaOff}
}
\score {{ \set Staff.instrumentName = #(nextcount)
\clef bass \override Score.TimeSignature #'stencil = ##f %to hide the time 4/4
\cadenzaOn
\tetrachordTwoUpDn
\cadenzaOff}
}
}
\markup "Do Sol"
\markup \justify-line {
\score {{ \set Staff.instrumentName = #(nextcount)
\clef bass \override Score.TimeSignature #'stencil = ##f %to hide the time 4/4
\cadenzaOn
\cgup
\cadenzaOff}
}
\score {{ \set Staff.instrumentName = #(nextcount)
\clef bass \override Score.TimeSignature #'stencil = ##f %to hide the time 4/4
\cadenzaOn
\cgdn
\cadenzaOff}
}
\score {{ \set Staff.instrumentName = #(nextcount)
\clef bass \override Score.TimeSignature #'stencil = ##f %to hide the time 4/4
\cadenzaOn
\cgupdn
\cadenzaOff}
}
}
\markup "Do La"
\markup \justify-line {
\score {{ \set Staff.instrumentName = #(nextcount)
\clef bass \override Score.TimeSignature #'stencil = ##f %to hide the time 4/4
\cadenzaOn
\caup
\cadenzaOff}
}
\score {{ \set Staff.instrumentName = #(nextcount)
\clef bass \override Score.TimeSignature #'stencil = ##f %to hide the time 4/4
\cadenzaOn
\cadn
\cadenzaOff}
}
\score {{ \set Staff.instrumentName = #(nextcount)
\clef bass \override Score.TimeSignature #'stencil = ##f %to hide the time 4/4
\cadenzaOn
\caupdn
\cadenzaOff}
}
}
\markup "Do Si"
\markup \justify-line {
\score {{ \set Staff.instrumentName = #(nextcount)
\clef bass \override Score.TimeSignature #'stencil = ##f %to hide the time 4/4
\cadenzaOn
\cbup
\cadenzaOff}
}
\score {{ \set Staff.instrumentName = #(nextcount)
\clef bass \override Score.TimeSignature #'stencil = ##f %to hide the time 4/4
\cadenzaOn
\cbdn
\cadenzaOff}
}
\score {{ \set Staff.instrumentName = #(nextcount)
\clef bass \override Score.TimeSignature #'stencil = ##f %to hide the time 4/4
\cadenzaOn
\cbupdn
\cadenzaOff}
}
}
\markup "Do Do"
\markup \justify-line {
\score {{ \set Staff.instrumentName = #(nextcount)
\clef bass \override Score.TimeSignature #'stencil = ##f %to hide the time 4/4
\cadenzaOn
\ccup
\cadenzaOff}
}
\score {{ \set Staff.instrumentName = #(nextcount)
\clef bass \override Score.TimeSignature #'stencil = ##f %to hide the time 4/4
\cadenzaOn
\ccdn
\cadenzaOff}
}
\score {{ \set Staff.instrumentName = #(nextcount)
\clef bass \override Score.TimeSignature #'stencil = ##f %to hide the time 4/4
\cadenzaOn
\ccupdn
\cadenzaOff}
}
}
size = 14
\markup "Modelli di esecuzione (esempio con ex 1)"
\markup "Shift up"
\markup \justify-line {
%Shift +1
\score {
{\set Staff.instrumentName = #(nextcount)
\shiftUpModel}
\layout {#(layout-set-staff-size size)}
}
%Shift +2
\score {
{\set Staff.instrumentName = #(nextcount)
\shiftUpUpModel}
\layout {#(layout-set-staff-size size)}
}
}
\markup "Shift Down"
\markup \justify-line {
%Shift -1
\score {
{\set Staff.instrumentName = #(nextcount)
\shiftDnModel}
\layout {#(layout-set-staff-size size)}
}
%Shift -2
\score {
{\set Staff.instrumentName = #(nextcount)
\shiftDnDnModel}
\layout {#(layout-set-staff-size size)}
}
}_______________________________________________
lilypond-user mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/lilypond-user