Julia PyCall运行Music21模块的困难

2024-09-29 05:25:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我是一个初学者,在使用Julia的PyCall与麻省理工学院Python音乐模块music21接口时遇到困难。在

根据Music21的网站,为了用音符显示一段短旋律,可以用Python输入:

converter.parse("tinynotation: 3/4 c4 d8 f g16 a g f#").show()

下面是我在Julia中尝试执行代码的方法:

我首先初始化了music21,它似乎可以工作:

^{pr2}$

然后我尝试在Julia中重新创建上面的Python示例,方法是键入:

在转换器.parse(“旋转方向:3/4 c4 d8 f g16 a g f#”)。显示()

I received this error:
ERROR: UndefVarError: converter not defined
Stacktrace:
 [1] eval(::Module, ::Any) at ./boot.jl:235

更新1 根据rickhg12hs的建议,我尝试了音乐。转换器.parse(“t旋转:3/4 c4 d8 f g16 a g f#”).show()。在

现在我在“Parse”上得到这个错误消息:错误:typepyobject在没有Parse Stacktrace:1eval(::Module,::Any)字段/后备箱。jl:235在

这似乎是一个改进,因为它现在在代码链的后期崩溃了,在“Parse”而不是“Converter”。在

更新2-已修复 这个问题与dot overloading有关。 基于此链接,我尝试将代码修改为如下所示:

music21.converter[:parse]("tinynotation: 3/4 c4 d8 f g16 a g f#")[:show]()

但现在我得到了这个错误

FSPathMakeRef(/Applications/MuseScore 2.app/Contents/MacOS/mscore) failed with error -43.

我发现最后一件事就是下载MuseScore,现在问题就解决了!在

请参阅@crstnbr的答案,了解该解决方案的丑陋之处以及即将到来的修复方案。在

非常感谢! 纳库尔


Tags: 方法代码音乐parseshow错误errorconverter
1条回答
网友
1楼 · 发布于 2024-09-29 05:25:01

我还没有安装软件包(我稍后会测试它),但以下操作应该可以工作:

@pyimport music21 as m
m.converter[:parse]("tinynotation: 3/4 c4 d8 f g16 a g f#")[:show]() 

请注意,在我的Pull request合并之后,在Julia 1.0中,可以说是丑陋的(但系统的)[:fieldname]访问将很快消失。这种语法的原因是Julia不允许重写.访问功能。幸运的是,在Julia 1.0中发生了变化。在

相关问题 更多 >