我是一个初学者,在使用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的答案,了解该解决方案的丑陋之处以及即将到来的修复方案。在
非常感谢! 纳库尔
我还没有安装软件包(我稍后会测试它),但以下操作应该可以工作:
请注意,在我的Pull request合并之后,在Julia 1.0中,可以说是丑陋的(但系统的)
[:fieldname]
访问将很快消失。这种语法的原因是Julia不允许重写.
访问功能。幸运的是,在Julia 1.0中发生了变化。在相关问题 更多 >
编程相关推荐