lilypond-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: define-scheme-function


From: Лысов Дмитрий
Subject: Re: define-scheme-function
Date: Mon, 22 Aug 2022 14:36:55 +0300

Pavel, thank you! Everything worked out. I will add that it should not just be enclosed in curly brackets, but also with spaces { #lyric }.
A byzantine font "ByzantineLily" ("ByzantineMusic" & "EZ"):
https://disk.yandex.ru/d/3olUfp1eHpZFBw
Symbol table:
https://disk.yandex.ru/i/CM0oXkWfqUaNSA
https://disk.yandex.ru/i/2B23RgInek5PDQ
https://disk.yandex.ru/i/lqeCM0C1QMMymQ
Font "Ponomar Unicode": https://sci.ponomar.net/fonts.html
Font "Mezenets Unicode": https://sci.ponomar.net/music.html
Working code:
 
\version "2.22.1"  
 
\header { 
  title = "Сбо́рникъ мелѡди́ческихъ фо́рмꙋлъ зна́меннагѡ роспѣ́ва" 
  composer= "Ште́йнберг Б."
  poet = "Москва̀, ҂вз҃і"
  copyright = "Вѧ́тка, ҂вк҃в"
}
 
\paper {
  #(set-paper-size "a4")
  tagline=##f
  ragged-right = ##t
  myStaffSize = #21
  #(define fonts (make-pango-font-tree
                  "Ponomar Unicode"
                  "Ponomar Unicode"
                  "Ponomar Unicode"
                  (/ myStaffSize 21)))
}
 
\layout {
  indent = 0.0 
  \context {
    \Lyrics 
    \override LyricText #'font-size = #4 
    \override LyricText #'font-name = #"Ponomar Unicode" 
    \override LyricSpace.minimum-distance = #0.8 
  } 
  \context {
     \Score
     \override SpacingSpanner.spacing-increment = 0.5
  }
  \context {
     \KievanVoice
     \stemDown
     fontSize = 1.0
  }
 
\midi {
   \context {
     \Score
     tempoWholesPerMinute = #(ly:make-moment 110 2)
   }
   \context {
     \Staff
     \remove Staff_performer
   }
   \context {
     \Voice
     \remove Staff_performer
   }
}
 
makeScore =
#(define-scheme-function (mark notes lyricdown lyricup) (markup? ly:music? ly:music? ly:music?)
    #{
      \score {
        \header {}
        <<
          \new KievanStaff  = slavonic 
          <<
          \new KievanVoice = "melody" 
            \relative c' {
              \cadenzaOn
              \mark #mark
              #notes
              \bar "k"
            }
          >>
          
        \new Lyrics 
        \lyricsto "melody" 
        { 
          \override LyricText.font-name = #"ByzantineLily" 
          \override LyricText.font-size = #5 
          \override LyricSpace.minimum-distance = #0.8
          #lyricdown }
         
        \new Lyrics \with {alignAboveContext = slavonic} 
        \lyricsto "melody" 
        { 
          \override LyricText.font-name = #"Mezenets Unicode"
          \override LyricText.font-size = #9
          \override LyricSpace.minimum-distance = #2
          #lyricup }
         
        >> 
        \layout { }
        %\midi { }
      }
    #})
 
\markup { \fill-line \huge { "Гла́съ д҃" }}
\markup { \fill-line \huge { "Начальные" }}
\makeScore "Оу҆до́ль [а҃]" {\[(d4 c)\] \[(d e)\] \bar "|" f1 \[(e4 d)\] f2 e d1} \lyricmode {  󰀜󰄂 󰁆 󰀱󰃠󰃠 󰀜󰄁  󰁧󰀢 󰁧󰃡 } \lyricmode { 𜽗 𜽞 𜾒 𜽗 𜽐𜼱 𜽜 𜾆 } 
\makeScore "Оу҆до́ль [в҃]" {d4 c d e \bar "|" d2 e4 d f2 e d1} \lyricmode {  𝁆 𝁑 𝁇 𝁇  𝁇 𝁑    } \lyricmode {  }
\makeScore "Рютка" {d2 d d d4 c d e f2 e1} \lyricmode {     𝁆 𝁑 𝁇 𝁇 󰀅󰀘  } \lyricmode {  }
\makeScore "Возгласка" {g'2 f a1 g2 g g4 f g2 f4 e d2} \lyricmode {       𝁆 𝁑 󰀅󰀘 𝁑 𝁑  } \lyricmode {  }
\markup { \fill-line \huge { "Конечные" }}
\makeScore "Вознос конечный" {e4 d e f g1 g2 f e d e f1 e} \lyricmode {  𝁆 𝁑 𝁇 𝁇      󰀅󰀘   } \lyricmode {  }
 
22.08.2022, 11:57, "Павел" <budanov.pavel@gmail.com>:

Нужно ещё заключить #lyricup и #lyricdown в фигурные скобки (в функции makeScore), как в моём примере. С этим исправлением ваш пример у меня заработал.

21.08.2022 21:02, Лысов Дмитрий пишет:
Я исправил, но все равно что-то не так. Этот вариант кода выдает ошибки:
I fixed it, but there's still something wrong. This version of the code gives errors:

\version "2.22.1"  
makeScore =
#(define-scheme-function (mark notes lyricup lyricdown) (markup? ly:music? ly:music? ly:music?)
    #{
      \score {
        \header {piece = \markup { Название }}
        <<
          \new KievanStaff  = slavonic 
          <<
          \new KievanVoice = "melody" 
            \relative c' {
              \cadenzaOn
              \mark #mark
              #notes
              \bar "|"
            }
          >>
          
        \new Lyrics 
        \lyricsto "melody" 
        #lyricup
         
        \new Lyrics \with {alignAboveContext = slavonic} 
        \lyricsto "melody" 
        #lyricdown
         
        >> 
        \layout { }
        %\midi { }
      }
    #})
 
\markup { \fill-line \huge { "Глас 1" }}
\markup { \fill-line \huge { "Начальные" }}
\makeScore "Удра" {e4 c d f e d c d e d e1} \lyricmode {la la la la} \lyricmode {ta ta ta ta}
 
C:/Users/Asus/AppData/Local/Temp/frescobaldi-m1s83y6n/tmpvpo3he0n/Сборник формул_define-scheme_byz.ly:24:9: error: syntax error, unexpected SCM_TOKEN, expecting \sequential or \simultaneous or << or '{'
#lyricup
C:/Users/Asus/AppData/Local/Temp/frescobaldi-m1s83y6n/tmpvpo3he0n/Сборник формул_define-scheme_byz.ly:28:9: error: syntax error, unexpected SCM_TOKEN, expecting \sequential or \simultaneous or << or '{'
#lyricdown
C:/Users/Asus/AppData/Local/Temp/frescobaldi-m1s83y6n/tmpvpo3he0n/Сборник формул_define-scheme_byz.ly:38:1: error: errors found, ignoring music _expression_
\makeScore "Удра" {e4 c d f e d c d e d e1} \lyricmode {la la la la} \lyricmode {ta ta ta ta}
C:/Users/Asus/AppData/Local/Temp/frescobaldi-m1s83y6n/tmpvpo3he0n/Сборник формул_define-scheme_byz.ly:38:1: error: error in #{ ... #}
\makeScore "Удра" {e4 c d f e d c d e d e1} \lyricmode {la la la la} \lyricmode {ta ta ta ta}
fatal error: failed files: "C:\\Users\\Asus\\AppData\\Local\\Temp\\frescobaldi-m1s83y6n\\tmpvpo3he0n\\Сбо�\x80ник �\x84о�\x80м�\x83л_define-scheme_byz.ly"
Программа завершилась с кодом 1.
 
21.08.2022, 20:14, "Павел" <budanov.pavel@gmail.com>:

Используйте \lyricmode:

\makeScore "Удра" {e4 c d f e d c d e d e1} \lyricmode {a b c d} \lyricmode {e f g hh}

21.08.2022 15:52, Лысов Дмитрий пишет:
\makeScore "Удра" {e4 c d f e d c d e d e1} {a b c d} {e f g hh}

reply via email to

[Prev in Thread] Current Thread [Next in Thread]