Ответ прост, если вы хотите иметь текст в «пустых» местах в music21
. Просто создайте объект note.Lyric
и поместите его в base.ElementWrapper
. Например:
s = stream.Measure()
n = note.Note()
n.lyric = "Hel-"
s.insert(0, n)
l = note.Lyric('-lo')
ew = base.ElementWrapper(l)
s.insert(1, ew)
Теперь ваш есть поток с запиской с лирическим на такте 1 (смещение 0) и голой лирикой на такте 2 (смещение 1).
Я уже могу угадать ваш следующий вопрос: «Почему он не появляется, когда я показываю его в [Finale/MuseScore/Sibelius/VexFlow/Lilypond]?»
Существует разница между тем, что может быть представлено в music21
и что может быть экспортировано в любом формате. В некоторых форматах, таких как Lilypond или Humdrum, есть возможность помещать тексты непосредственно в партитуру. Некоторые форматы, которые это возможно, поддерживают music21 (я считаю, что Lilypond). Некоторые форматы поддерживают его, но music21 этого не делает. И тогда есть форматы, которые его не поддерживают, например MusicXML. Однако есть некоторые обходные пути, такие как создание отдыха в определенном месте, прикрепление к нему лирики, а затем скрытие остальных. Это то, что делают большинство клиентов MusicXML. И тогда возникает проблема, связанная с тем, что music21
может поддерживать функцию, формат может поддерживать эту функцию, но клиент нотной записи не может (например, music21 поддерживает ossias, также имеет значение MusicXML; Finale также, но Finale не поддерживает импорт или экспорт MusicXML ossias.)
Лучший способ увидеть, что возможно, - создать то, что вы хотите, в своем программном обеспечении для нотации, экспортировать его в musicxml. Импортируйте musicxml в music21 и посмотрите, какие типы объектов music21 представляют эти тексты. Затем экспортируйте обратно с music21 в musicxml и повторно импортируйте в свое программное обеспечение для нотации.
Простите, это не простой ответ. Это одна из самых сложных вещей.
Как работа вокруг - многие люди предпочитают помещать объект TextExpression() в место и надеются, что его можно заставить выглядеть так же, как лирика.
Отличный ответ, спасибо Майкл. Да, действительно, мне также было интересно, почему они не появятся в MuseScore или Finale, так что ответит и на мой второй вопрос: они используют разные форматы для текстов. – Nick463