2013-12-02 4 views
2

Я хочу создать функцию в Lilypond, которая принимает одну ноту в качестве ввода и возвращает заметку с применением некоторой разметки. В частности, я хочу, чтобы упростить что-то вроде следующего:Как использовать отдельные ноты в музыкальных функциях?

\relative c' { d^\markup{\hspace #2 \smaller +1}-\bendAfter #+1 } 

к чему-то вдоль линий

\relative c' { \bend{d} } 

В настоящее время я следующий фрагмент:

mF = \markup{\hspace #2 \smaller +1} 
bF = \bendAfter #+1 

bendF = #(define-music-function (parser location note) (ly:music?) 
     #{ $note^\mF-\bF #} 
) 

\relative c' { d^\mF-\bF } 
\relative c' { \bendF{d} } 

\version "2.16.2" 

Кажется, что данные тип ly:music? не является правильным, или невозможно сразу добавить разметку, и я получаю не очень описательные ошибки интерпретатора.

Каков наилучший способ достижения этого эффекта?

+0

Привет, вы рассматривали возможность присоединения к списку рассылки LilyPond, где вы можете связаться с другими пользователями и разработчиками LilyPond? Обычно это лучший (и самый быстрый) способ решить проблему или получить ответ. Адрес для входа: lilypond.org/contact.html –

+1

@ gilberto.agostinho.f Спасибо, это было бы, наверное, лучше, но я сейчас работаю над своим «перепалочным» значком :-) И если нет Lilypond вопросы о тех людях, которые могут ответить на них, также не имеют причин для того, чтобы осмотреться здесь ... –

ответ

2

Это может быть не решение, которое вы ищете, но вы можете решить свою проблему, используя функцию события без аргументов вместо музыкальной функции (таким образом, работая над проблемой ly: music?). Попробуйте:

\version "2.17.95" 

mF = \markup{\hspace #2 \smaller +1} 
bF = \bendAfter #+1 

bendF = #(define-event-function 
    (parser location) 
    () 
     #{ 
     ^\mF-\bF 
     #} 
) 

\relative c' { d^\mF-\bF } 
\relative c' { d\bendF } 
Смежные вопросы