微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在mingus中更改容器的谱号?

如何解决如何在mingus中更改容器的谱号?

在 mingus 中,以下代码创建一个带有高音谱号和 C2 音符的五线谱。

from mingus.containers.bar import Bar
from mingus.containers.track import Track
from mingus.extra.lilypond import *
b = Bar("C")
t = Track(b)
t.add_notes("C-2")
sheet = from_Track(t)
to_png(sheet,"example1")

或者,以下代码创建两个谱表,每个谱表都有一个高音谱号以及一个 C5 和 C2。分别。

from mingus.containers.bar import Bar
from mingus.containers.track import Track
from mingus.containers.composition import Composition
from mingus.extra.lilypond import *
b1 = Bar("C")
b2 = Bar("C")
t1 = Track(b1)
t2 = Track(b2)
t1.add_notes("C-5")
t2.add_notes("C-2")
c = Composition()
c.add_track(t1)
c.add_track(t2)
sheet = from_Composition(c)
to_png(sheet,"example2")

如何强制 mingus/lilypond 在这两个示例中使用低音谱号?

谢谢

解决方法

通读源码,貌似不支持!

我能够编写一个变通方法。它依赖于使用 Instrument 类,其中应该定义 clef 属性。请注意,当您定义 Track() 对象时,您不应该传递Bar() 对象,而应该只传递 Instrument() 对象。

我的方法覆盖了 lilypond 中的默认 from_Track() 函数。它调用 from_Track() 的原始版本,然后确保从此处添加您想要的任何谱号符号: https://lilypond.org/doc/v2.22/Documentation/notation/clef-styles 。这是一个简单的补丁,因此如果您选择了错误的谱号样式,则不会进行错误检查,因此只需确保它有效,否则它将恢复为默认的高音。

这是我的工作:

from mingus.containers.bar import Bar
from mingus.containers.instrument import Instrument
from mingus.containers.track import Track
from mingus.containers.composition import Composition
import mingus.extra.lilypond as lilypond
from_Track_Orig = lilypond.from_Track

def from_Track(track):
    global from_Track_Orig
    result = from_Track_Orig(track)
    if isinstance(result,str) and track.instrument is not None and isinstance(track.instrument.clef,str):
        result = "%s \clef %s %s" % (result[:1],track.instrument.clef.split()[0],result[1:])
    return result
lilypond.from_Track = from_Track

i = Instrument()
i.clef = 'bass'
b1 = Bar("C")
b2 = Bar("C")
t1 = Track()
t1.add_bar(b1)
t2 = Track(i)
t2.add_bar(b2)
t1.add_notes("C-5")
t2.add_notes("C-2")
c = Composition()
c.add_track(t1)
c.add_track(t2)
sheet = lilypond.from_Composition(c)
lilypond.to_png(sheet,"example2")

sheet music with treble and bass clefs

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。