LilyPond: Извлечение названий высот из музыки

Я использую LilyPond для создания практических партитур и этюдов. Я выяснил, как разрешить ввод заметок в сольфеджио Moveable Do и иметь шаблон (см. Ниже), который поддерживает отображение символов сольфеджио в виде текста под нотами. В настоящее время мне приходится вручную извлекать текст из нотной записи плюс разметка, которая генерирует музыку. Мне удалось частично автоматизировать это с помощью кода python и vim (здесь не показан), но все же в некоторой степени неудовлетворительно.

Мне кажется, что лучшим решением было бы использовать встроенный интерпретатор схемы LilyPond для извлечения названий питча во время обработки файла. Я сделал несколько попыток использовать карту с ly: note-pitchname, но пока безуспешно. Наверное, потому, что я знаю сквот о Scheme, особенно о том, как он используется в скриптах LilyPond.

% Moveable Do as lyrics example

% define some solfege pitchnames 
% (in practice, the full set goes into "english.ly")
pitchnames = #`(
    (do . ,(ly:make-pitch -1 0 NATURAL))
    (re . ,(ly:make-pitch -1 1 NATURAL))
    (mi . ,(ly:make-pitch -1 2 NATURAL))
    )

#(ly:parser-set-note-names parser pitchnames)

% compose as though in C major
mynotes =  \relative do' {\key do \major do2 re4( mi4) }

% transpose to desired key
melody = \transpose do mi  { \mynotes }

% I WANT TO AUTOMATICALLY CREATE THE
% THE PITCHNAMES IN THIS BLOCK
% FROM THE CONTENTS OF \mynotes
solfa = \lyricmode { 
    \set ignoreMelismata = ##t  % one syllable per note
    do re mi 
    \unset ignoreMelismata  % allow normal placement of other lyrics
    }

% Produce score with solfege names as lyrics
\score {
    <<
    \new Voice = "myVoice" { 
        \melody 
    }
    \new Lyrics \lyricsto "myVoice" \solfa
    >>
    }
\version "2.12.3"                 
6
задан Mike Ellis 7 December 2010 в 15:18
поделиться