2016-02-03 3 views
1

Как я могу писать тексты через регулярные промежутки времени, даже если в этом смещении нет соответствующего элемента?music21 Как создать element.lyric, даже если в этом смещении нет заметки или элемента (создать невидимый элемент?)

мне нужно сделать:

myElement.lyric = 'bla bla' 

Могу ли я создавать невидимые элементы?

ответ

0

Ответ прост, если вы хотите иметь текст в «пустых» местах в 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() в место и надеются, что его можно заставить выглядеть так же, как лирика.

+1

Отличный ответ, спасибо Майкл. Да, действительно, мне также было интересно, почему они не появятся в MuseScore или Finale, так что ответит и на мой второй вопрос: они используют разные форматы для текстов. – Nick463