Re: In octaves
2008/4/25 Jay Anderson <[EMAIL PROTECTED]>: > To make it work in a relative section always use 0 for the octave up > and -2 for the octave down. I don't really know how to make it work > both inside and outside of a relative section easily. This is my first > dip into some of lilypond's internals and I don't totally understand > how relative sections work here. If anyone knows how to fix that I'd > be very grateful because I have a few other similar functions where I > just assume one way or the other. The best solution I have for now is > to define one function for inside a relative block and one for > outside. Most people use \relative, so I think this is more important to make it work inside \relative. > One thing I'd like to do instead is something like this: > > octaves = #(chord-template #{#}) (or maybe #(chord-template 8) I > don't know which would be preferable.) Oh yes! The second one looks particularly well. > Then you could easily define others: > > thirds = #(chord-template #{#}) (or #(chord-template 3)) > octaves-down = #(chord-template #{#}) (or #(chord-template -8)) > oneFourSix = #(chord-template #{#}) (or possibly #(chord-template 4 > 6)) That would be great; I hope you'll manage to come up with something... Cheers, Valentin ___ lilypond-user mailing list lilypond-user@gnu.org http://lists.gnu.org/mailman/listinfo/lilypond-user
strange problem of variable definition and more error messages
Hi, I just finished typesetting one of my very early piece. I want to ease the writing when every time using Chinese font ile "simfang.ttf", so I put an override font-name line in "mydefs.ly". I have defined lots of things used very often in this file. But the log file says this override is wrong. When I used it from time to time in my input file, it's correct. Please tell me how to do that? BTW, the log file gives a lot of warnings of "cannot find start of (de)crescendo", but all of my \cresc and \dim has corresponding \! signs. There is also a programming error for midi output, which confused me very much! Why? SINCERELY Haipeng \version "2.11.44" \include "mydefs.ly" #(ly:set-option 'point-and-click #f) \header { title = \markup { \override #'(baseline-skip . 2) \center-align { \simfang \bold \fontsize #4 "å°è¡£ç»æ²ââåè°" \bold \fontsize #4 "First Suite" } } composer = \markup { \override #'(baseline-skip . 2) \center-align { \simfang \bold \fontsize #3 "è¡æµ·é¹" \fontsize #3 \bold "Hu Haipeng" } } copyright = "© 1998, All Rights Reserved" tagline = \markup \fill-line { \simfang \fontsize #2 \bold "1998年乿" } } upperI = \relative c'' { \clef treble \key c \major \time 3/8 \tempo 4.=60 g8\(^\allegretto c d | e a g | e d c | e4.\) | g,8\( c d | e a g | e c a | d4.\) | g,8\( c d | e a g | f d e | a,4\) a8\( | b4 c8 | d f e | d a g | c4.\) | c^\rit | | ~ | \bar "|." } lowerI = \relative c { \clef bass \key c \major \time 3/8 c16 e g c g e | c e g c g e | c e g c \clef treble e g | c g e c \clef bass g e | c e g c g e | c e g c g e | a, e' a c a e | g, d' g b g d | c e g c g e | c g' c e c g | e gis b d b gis | f a c d c a | d, f g b g f | b, d f g f d | g, d' f g f d | c e g a g e | c4. | | ~ | \bar "|." } dynamicsI = { s4.*16\mf s4.\dim s4. s4.\! s4. } \score { \new PianoStaff << \set PianoStaff.connectArpeggios = ##t \new Staff = "upper" #(set-accidental-style 'piano 'Score) \upperI \new Dynamics = "dynamics" \dynamicsI \new Staff = "lower" { \lowerI } >> \header { piece = \markup { \override #'(baseline-skip . 2) \center-align { \simfang \fontsize #2 \bold "å奿²Â·åè°ä¸»é¢" \fontsize #2 \bold "Prelude, theme of friendship" } } } \layout { \context { \type "Engraver_group" \name Dynamics \alias Voice \consists "Output_property_engraver" \override VerticalAxisGroup #'minimum-Y-extent = #'(-1 . 1) \override DynamicLineSpanner #'Y-offset = #0 \consists "Script_engraver" \consists "Dynamic_engraver" \consists "Text_engraver" \override TextScript #'font-size = #2 \override TextScript #'font-shape = #'italic \consists "Skip_event_swallow_translator" \consists "Axis_group_engraver" } \context { \PianoStaff \accepts Dynamics } \context { \Score \override Glissando #'breakable = ##t \override TextSpanner #'breakable = ##t \override DynamicSpanner #'breakable = ##t } } } \pageBreak upperII = \relative c'' { \clef treble \key g \minor \time 2/4 \tempo 4=80 g2\(^\andante | bes | c4 bes8 c | d4 f | c4. d8 | c4 a | g4. f8 | d2\) | g2\( | bes | c4 bes8 c | d2 | f4 g8 f | d f c e | d2 ~ | d\) | g4\( g | f d | c d | c a | g f | bes c | d2 ~ | d\) | g,4\( g' | f d | c d | c a | g bes | f8 g a4\upmordent | \grace { a16 } g2^\rit ~ | g\) \bar "|." } lowerII = \relative c' { \clef bass \key g \minor \time 2/4 g4 | f | ees, | d | c | d | g, | d | g | f | ees, | d | bes, | | d | << { d' c } \\ { a2 } >> | g4 | f | ees, | d | g | f | bes | a | g, | f | ees | d | ees | d | g, | g,2 \bar "|." } dynamicsII = { s2*8\mp s2*4\cresc s2*4\!\mf s2*10 s2*5\dim s2\!\p } \score { \new PianoStaff << \set PianoStaff.connectArpeggios = ##t \new Staff = "upper" #(set-accidental-style 'piano 'Score) \upperII \new Dynamics = "dynamics" \dynamicsII \new Staff = "lower" { \lowerII } >> \header { piece = \markup { \override #'(baseline-skip . 2) \center-align { \simfang \fontsize #2 \bold "漫æ¥" \fontsize #2 \bold "Walking" } } } \layout { \context { \type "Engraver_group" \name Dynamics \alias Voice \consists "Output_property_engraver" \override VerticalAxisGroup #'minimum-Y-extent = #'(-1 . 1) \override DynamicLineSpanner #'Y-offset = #0 \consists "Script_engraver" \consists "Dynamic_engraver" \consists "Text_engraver" \override TextScript #'font-size = #2 \override TextScript #'font-shape = #'italic \consists "Skip_event_swallow_translator" \consists "Axis_group_engraver
custom metronome-markup procedure causes weird goops-error
Greetings everybody, a few days ago Neil sent a new snippet to be added in input/new : "Adding text indications to metronome marks". It involved quite a lot of typing, so I tried to come up with a function that would be easier to use. Here's my code; it works quite well on simple examples, but on complex scores it triggers an error I've never seen: "goops-error: no applicable method for #< map (0)>" (see below for the complete message). #(define-markup-command (mvt layout props arg) (markup?) (interpret-markup layout props (markup #:huge #:bold arg))) #(define (string->duration strElt) ;; from LSR snippet 390 ( let*((ptindex (string-index strElt #\. )) (ptnumber 0) (val (string->number (if ptindex (substring strElt 0 ptindex) strElt))) (dur (ly:intlog2 val))) (while ptindex (begin (set! ptnumber (1+ ptnumber)) (set! ptindex (string-index strElt #\. (1+ ptindex) (ly:make-duration dur ptnumber 1 1))) mov = #(define-music-function (parser location text duration count) (string? string? integer?) (define (format-metronome-markup dur count context) (make-line-markup (list (markup #:mvt text #:hspace 1) (make-simple-markup "(") (make-general-align-markup Y DOWN (make-smaller-markup (make-note-by-number-markup (ly:duration-log dur) (ly:duration-dot-count dur) 1))) (make-simple-markup "=") (make-simple-markup (number->string count)) (make-simple-markup ")" (make-music 'ContextSpeccedMusic 'context-type 'Score 'element (make-music 'SequentialMusic 'elements (list (make-music 'PropertySet 'value (ly:duration-length (string->duration duration)) 'symbol 'tempoWholesPerMinute) (make-music 'PropertySet 'value (string->duration duration) 'symbol 'tempoUnitDuration) (make-music 'PropertySet 'value count 'symbol 'tempoUnitCount) \relative { \mov #"Largo" #"2." #140 c1 d \tempo 4 = 120 e } Now for the big message: /usr/local/lilypond/usr/bin/../share/guile/1.8/oop/goops.scm:100:3: In procedure scm-error in expression (scm-error (quote goops-error) #f ...): /usr/local/lilypond/usr/bin/../share/guile/1.8/oop/goops.scm:100:3: No applicable method for #< map (0)> in call (map # #) (element . #) (elements #) (symbol . tempoWholesPerMinute) (value . #))((display-methods #) (name . PropertySet) (types layout-instruction-event general-music) (iterator-ctor . #)) > #) (symbol . tempoUnitDuration) (value . #))((display-methods #) (name . PropertySet) (types layout-instruction-event general-music) (iterator-ctor . #)) > #) (symbol . tempoUnitCount) (value . 48))((display-methods #) (name . PropertySet) (types layout-instruction-event general-music) (iterator-ctor . #)) > ))((display-methods #) (name . SequentialMusic) (length-callback . #) (start-callback . #) (elements-callback . #) (iterator-ctor . #) (types general-music sequential-music)) > ) (context-type . Score))((display-methods # # # # # # # # # #) (name . ContextSpeccedMusic) (iterator-ctor . #) (length-callback . #) (start-callback . #) (types context-specification general-music music-wrapper-music)) > ) Can anyone help me? Cheers, Valentin ___ lilypond-user mailing list lilypond-user@gnu.org http://lists.gnu.org/mailman/listinfo/lilypond-user
Re: custom metronome-markup procedure causes weird goops-error
2008/4/25 Valentin Villenave <[EMAIL PROTECTED]>: > Here's my code; it works quite well on simple examples, but on complex > scores it triggers an error I've never seen: OK, I've fixed it; it actually involved using a different name for the metronomeMarkFormatter procedure: mov = #(define-music-function (parser location texte duration count music) (string? string? integer? ly:music?) (define (format-movement-markup dur count context) (make-line-markup (list (markup #:mvt texte #:hspace 1) (make-simple-markup "(") (make-general-align-markup Y DOWN (make-smaller-markup (make-note-by-number-markup (ly:duration-log dur) (ly:duration-dot-count dur) 1))) (make-simple-markup "=") (make-simple-markup (number->string count)) (make-simple-markup ")" (make-music 'SequentialMusic 'elements (list (make-music 'ContextSpeccedMusic 'context-type 'Score 'element (make-music 'PropertySet 'value format-movement-markup 'symbol 'metronomeMarkFormatter)) (make-music 'ContextSpeccedMusic 'context-type 'Score 'element (make-music 'SequentialMusic 'elements (list (make-music 'PropertySet 'value (ly:duration-length (string->duration duration)) 'symbol 'tempoWholesPerMinute) (make-music 'PropertySet 'value (string->duration duration) 'symbol 'tempoUnitDuration) (make-music 'PropertySet 'value count 'symbol 'tempoUnitCount music (make-music 'ContextSpeccedMusic 'context-type 'Score 'element (make-music 'PropertySet 'value format-metronome-markup 'symbol 'metronomeMarkFormatter) Now it works perfectly -- sorry for the noise! (by the way, if anyone has some clues to clean or optimize my code, feel free to suggest any improvements you can think of) Cheers, Valentin ___ lilypond-user mailing list lilypond-user@gnu.org http://lists.gnu.org/mailman/listinfo/lilypond-user
Re: percussion definition
alistair zaldua skrev: I was curious to know whether it was possible to set up and define a percussion clef from scratch. Read the section about Percussion staves in the manual (section 7.4.3 in stable version) -Rune ___ lilypond-user mailing list lilypond-user@gnu.org http://lists.gnu.org/mailman/listinfo/lilypond-user
introit
I thought I would ask the list's collective knowledge before I begin this, has anyone here any experience with having an introit for a choral piece, say for a mass that begins wtih a quotation of a chant. I can think of several ways to put a single measure, slightly smaller, without time signature or bar lines, and centered before the music begins, and I just wondered how others have gone about this process, that results in something that looks good, both printed, and keeps my lilypond files san(ish) looking. ___ lilypond-user mailing list lilypond-user@gnu.org http://lists.gnu.org/mailman/listinfo/lilypond-user
Re: custom metronome-markup procedure causes weird goops-error
On 25/04/2008, Valentin Villenave <[EMAIL PROTECTED]> wrote: > 2008/4/25 Valentin Villenave <[EMAIL PROTECTED]>: > > > > Here's my code; it works quite well on simple examples, but on complex > > scores it triggers an error I've never seen: > > > OK, I've fixed it; it actually involved using a different name for the > metronomeMarkFormatter procedure: > > mov = > #(define-music-function (parser location texte duration count music) > (string? string? integer? ly:music?) > (define (format-movement-markup dur count context) > (make-line-markup > (list > (markup #:mvt texte #:hspace 1) > > (make-simple-markup "(") > (make-general-align-markup Y DOWN (make-smaller-markup > (make-note-by-number-markup (ly:duration-log dur) > (ly:duration-dot-count dur) > 1))) > (make-simple-markup "=") > (make-simple-markup (number->string count)) > (make-simple-markup ")" > > (make-music 'SequentialMusic 'elements > (list (make-music 'ContextSpeccedMusic > 'context-type 'Score 'element > (make-music 'PropertySet > 'value format-movement-markup > 'symbol 'metronomeMarkFormatter)) > > (make-music 'ContextSpeccedMusic > 'context-type 'Score 'element > (make-music 'SequentialMusic 'elements > (list (make-music 'PropertySet > 'value (ly:duration-length (string->duration duration)) > 'symbol 'tempoWholesPerMinute) > (make-music 'PropertySet > 'value (string->duration duration) > 'symbol 'tempoUnitDuration) > (make-music 'PropertySet > 'value count > 'symbol 'tempoUnitCount > > music > > (make-music 'ContextSpeccedMusic > 'context-type 'Score 'element > > (make-music 'PropertySet > 'value format-metronome-markup > 'symbol 'metronomeMarkFormatter) > > > Now it works perfectly -- sorry for the noise! That's good, but there are two problems with it; one quite serious if you value having MIDI output. First, you haven't set tempoWholesPerMinute properly, unfortunately (it's the same problem I was scratching my head about in the original thread): the combination of the note value and beats per minute needs to be converted to a moment. In the example \mov #"Largo" #"2." #140 your code sets tempoWholesPerMinute to (ly:make-moment 3 4 1 1), ignoring the beats-per-minute value, whereas it should be converted to an integral value, i.e. (ly:make-moment 105 1 0 1) or (ly:make-moment 210 2 0 1). Second, unlike the helper function parse-simple-duration, string->duration doesn't account for durations longer than a semibreve since they can't be directly converted to a number. So, in conclusion, close but no cigar. ;) Regards, Neil ___ lilypond-user mailing list lilypond-user@gnu.org http://lists.gnu.org/mailman/listinfo/lilypond-user
Re: custom metronome-markup procedure causes weird goops-error
2008/4/25 Neil Puttock <[EMAIL PROTECTED]>: > That's good, but there are two problems with it; one quite serious if > you value having MIDI output. I don't, so I don't care :) > First, you haven't set tempoWholesPerMinute properly, unfortunately > (it's the same problem I was scratching my head about in the original > thread): the combination of the note value and beats per minute needs > to be converted to a moment. Yes. We need a string->moment function, as well as a better string->duration. > Second, unlike the helper function parse-simple-duration, > string->duration doesn't account for durations longer than a semibreve > since they can't be directly converted to a number. Ideal answer: oh yes, that is definitely a limitation. Pragmatic answer : hmm, do we really need \breve in metronome marks? > So, in conclusion, close but no cigar. ;) Hey, now it's your turn! The main issue I've been working on was: how to pass the text string as an argument to the metronomeMarkFormatter. Currently, it's a bit dirty (and heavy) but at least it produces a decent graphical output. I don't (yet) understand ly:make-duration and ly:make-moment well enough to improve the MIDI result. I have never been studying maths, programming or science (my studies were about ancient literature), so I'm learning everything from scratch here... Cheers, Valentin ___ lilypond-user mailing list lilypond-user@gnu.org http://lists.gnu.org/mailman/listinfo/lilypond-user
introitus
Okay, so I was a bit mistaken, I've gotten everything done except centering the measure. I thought I could use something simple like indent = #0 line-width=measureLength, but that was a big not. So, is there any way I can accurately (and easily) center a measure horizontally on the page? ___ lilypond-user mailing list lilypond-user@gnu.org http://lists.gnu.org/mailman/listinfo/lilypond-user
Re: introitus
One solution is to typeset it using a centered markup: \markup{\fill-line {\score{\relative { c d e f }\layout{ragged-right=##t /Mats James E. Bailey wrote: Okay, so I was a bit mistaken, I've gotten everything done except centering the measure. I thought I could use something simple like indent = #0 line-width=measureLength, but that was a big not. So, is there any way I can accurately (and easily) center a measure horizontally on the page? ___ lilypond-user mailing list lilypond-user@gnu.org http://lists.gnu.org/mailman/listinfo/lilypond-user -- = Mats Bengtsson Signal Processing School of Electrical Engineering Royal Institute of Technology (KTH) SE-100 44 STOCKHOLM Sweden Phone: (+46) 8 790 8463 Fax: (+46) 8 790 7260 Email: [EMAIL PROTECTED] WWW: http://www.s3.kth.se/~mabe = ___ lilypond-user mailing list lilypond-user@gnu.org http://lists.gnu.org/mailman/listinfo/lilypond-user
Re: introit
You can use a \markup \score construction. Here it is placed in the subsubtitle: http://lsr.dsi.unimi.it/LSR/Snippet?id=250 You could also place it in a separate \markup section between the headers and the real \score. Andrew On Fri, Apr 25, 2008 at 7:16 AM, James E. Bailey <[EMAIL PROTECTED]> wrote: > I thought I would ask the list's collective knowledge before I begin this, > has anyone here any experience with having an introit for a choral piece, > say for a mass that begins wtih a quotation of a chant. I can think of > several ways to put a single measure, slightly smaller, without time > signature or bar lines, and centered before the music begins, and I just > wondered how others have gone about this process, that results in something > that looks good, both printed, and keeps my lilypond files san(ish) looking. > > > ___ > lilypond-user mailing list > lilypond-user@gnu.org > http://lists.gnu.org/mailman/listinfo/lilypond-user > ___ lilypond-user mailing list lilypond-user@gnu.org http://lists.gnu.org/mailman/listinfo/lilypond-user
Re: custom metronome-markup procedure causes weird goops-error
On 25/04/2008, Valentin Villenave <[EMAIL PROTECTED]> wrote: > 2008/4/25 Neil Puttock <[EMAIL PROTECTED]>: > > > > That's good, but there are two problems with it; one quite serious if > > you value having MIDI output. > > > I don't, so I don't care :) > > > > First, you haven't set tempoWholesPerMinute properly, unfortunately > > (it's the same problem I was scratching my head about in the original > > thread): the combination of the note value and beats per minute needs > > to be converted to a moment. > > > > Yes. We need a string->moment function, as well as a better string->duration. Indeed, but in this case what's needed is a (string beat)->moment function. > > Second, unlike the helper function parse-simple-duration, > > string->duration doesn't account for durations longer than a semibreve > > since they can't be directly converted to a number. > > > Ideal answer: oh yes, that is definitely a limitation. > Pragmatic answer : hmm, do we really need \breve in metronome marks? I agree that it's not really a big issue, but on that rare occasion when somebody wants to use \breve or \longa, they'll get a nasty surprise and a failed file. This could be solved easily *if* parse-simple-duration can be made public , so it can be accessed from a .ly file. Then it's just a matter of changing string->duration to the following: #(define (string->duration duration) (let ((parsed (parse-simple-duration duration))) (ly:make-duration (car parsed) (cadr parsed))) ) Then again, there may be a good reason why it's not (define-public ...) already. > > So, in conclusion, close but no cigar. ;) > > > Hey, now it's your turn! The main issue I've been working on was: how > to pass the text string as an argument to the metronomeMarkFormatter. > Currently, it's a bit dirty (and heavy) but at least it produces a > decent graphical output. I don't (yet) understand ly:make-duration and > ly:make-moment well enough to improve the MIDI result. Well, I have been trying to work it out, but I think your scheme knowledge is much greater than mine at the moment (and I'm a bit preoccupied with \sacredHarpHeads; can you suggest any improvements to my code?) If the MIDI problem can be solved, I think this would prove a better snippet than the one I added, since it works under 2.10. Regards, Neil ___ lilypond-user mailing list lilypond-user@gnu.org http://lists.gnu.org/mailman/listinfo/lilypond-user
Re: custom metronome-markup procedure causes weird goops-error
On 25/04/2008, Neil Puttock <[EMAIL PROTECTED]> wrote: > If the MIDI problem can be solved, I think this would prove a better > snippet than the one I added, since it works under 2.10. It's almost too simple; I was thinking up all sorts of outlandish constructs to get the right value, but the answer's right there in ly-syntax-constructors.scm: mov = #(define-music-function (parser location texte duration count music) (string? string? integer? ly:music?) (define (format-movement-markup dur count context) (make-line-markup (list (markup #:mvt texte #:hspace 1) (make-simple-markup "(") (make-general-align-markup Y DOWN (make-smaller-markup (make-note-by-number-markup (ly:duration-log dur) (ly:duration-dot-count dur) 1))) (make-simple-markup "=") (make-simple-markup (number->string count)) (make-simple-markup ")" (make-music 'SequentialMusic 'elements (list (make-music 'ContextSpeccedMusic 'context-type 'Score 'element (make-music 'PropertySet 'value format-movement-markup 'symbol 'metronomeMarkFormatter)) (make-music 'ContextSpeccedMusic 'context-type 'Score 'element (make-music 'SequentialMusic 'elements (list (make-music 'PropertySet 'value (ly:moment-mul (ly:make-moment count 1) (ly:duration-length (string->duration duration))) 'symbol 'tempoWholesPerMinute) (make-music 'PropertySet 'value (string->duration duration) 'symbol 'tempoUnitDuration) (make-music 'PropertySet 'value count 'symbol 'tempoUnitCount music (make-music 'ContextSpeccedMusic 'context-type 'Score 'element (make-music 'PropertySet 'value format-metronome-markup 'symbol 'metronomeMarkFormatter) Regards, Neil ___ lilypond-user mailing list lilypond-user@gnu.org http://lists.gnu.org/mailman/listinfo/lilypond-user
Re: custom metronome-markup procedure causes weird goops-error
2008/4/25 Neil Puttock <[EMAIL PROTECTED]>: > This could be solved easily *if* parse-simple-duration can be made > public , so it can be accessed from a .ly file. Then it's just a > matter of changing string->duration to the following: I think you'd just need to ly:load the relevant file. 2008/4/25 Neil Puttock <[EMAIL PROTECTED]>: > It's almost too simple; I was thinking up all sorts of outlandish > constructs to get the right value, but the answer's right there in > ly-syntax-constructors.scm: Great! Well done! Cheers, Valentin ___ lilypond-user mailing list lilypond-user@gnu.org http://lists.gnu.org/mailman/listinfo/lilypond-user
Re: introitus
Thank you so much! I had no idea I could include a \score block inside a markup Am 25.04.2008 um 16:27 schrieb Mats Bengtsson: One solution is to typeset it using a centered markup: \markup{\fill-line {\score{\relative { c d e f }\layout{ragged- right=##t /Mats James E. Bailey wrote: Okay, so I was a bit mistaken, I've gotten everything done except centering the measure. I thought I could use something simple like indent = #0 line-width=measureLength, but that was a big not. So, is there any way I can accurately (and easily) center a measure horizontally on the page? ___ lilypond-user mailing list lilypond-user@gnu.org http://lists.gnu.org/mailman/listinfo/lilypond-user -- = Mats Bengtsson Signal Processing School of Electrical Engineering Royal Institute of Technology (KTH) SE-100 44 STOCKHOLM Sweden Phone: (+46) 8 790 8463 Fax: (+46) 8 790 7260 Email: [EMAIL PROTECTED] WWW: http://www.s3.kth.se/~mabe = ___ lilypond-user mailing list lilypond-user@gnu.org http://lists.gnu.org/mailman/listinfo/lilypond-user