我是一个初学者,很难使用朱莉娅的PyCall与麻省理工学院的Python音乐模块music21接口。
根据Music21 21的网站,为了用音乐符号显示一段简短的旋律,可以在Python中输入以下内容:
converter.parse("tinynotation: 3/4 c4 d8 f g16 a g f#").show()下面是我在Julia中尝试执行这段代码时所做的工作:
我第一次初始化了music21,它看起来很有效:
@pyimport music21
music21: Certain music21 functions might need these optional packages: matplotlib, scipy; if you run into errors, install them by following the instructions at http://mit.edu/music21/doc/installing/installAdditional.html然后,我尝试在Julia中重新创建上面的Python示例,方法是输入:
Converter.parse(“丁香符号: 3/4 c4 d8 f g16 a g f#").show()
I received this error:
ERROR: UndefVarError: converter not defined
Stacktrace:
[1] eval(::Module, ::Any) at ./boot.jl:235根据rickhg12hs的建议更新1,我尝试了music21.converter.parse("tinynotation: 3/4 c4 d8 f g16 a g f#").show()。
现在,我在' parse ':ERROR: type PyObject没有字段解析堆栈跟踪:1 eval(::模块,:Any)的./boot.jl:235上收到了这条错误消息
这似乎是一个改进,因为它现在在代码链的后面崩溃,在'Parse‘而不是’转换器‘。
更新2-修正了这个问题与点过载有关。基于这个链接,我尝试修改代码如下所示:
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对此解决方案的丑陋和即将修复的更多上下文的回答。
非常感谢!纳库尔
发布于 2018-09-06 05:32:29
我没有安装这个包(我马上就会测试它),但是下面的程序应该可以工作:
@pyimport music21 as m
m.converter[:parse]("tinynotation: 3/4 c4 d8 f g16 a g f#")[:show]() 请注意,在Julia1.0中,可以说是丑陋的(但有系统的) [:fieldname]访问将在我这里的拉请求被合并后不久消失。这种语法的原因是朱莉娅不允许覆盖.访问功能。幸运的是,这种情况在Julia1.0中发生了变化。
https://stackoverflow.com/questions/52196356
复制相似问题