gpt4 book ai didi

python - Music21 Midi 错误 : type object '_io.StringIO' has no attribute 'StringIO' . 如何解决?

转载 作者:太空狗 更新时间:2023-10-30 02:10:19 27 4
gpt4 key购买 nike

所以,我关注了this question为了得到一些声音播放 Music21 ,这是代码:

from music21 import *
import random

def main():

# Set up a detuned piano
# (where each key has a random
# but consistent detuning from 30 cents flat to sharp)
# and play a Bach Chorale on it in real time.


keyDetune = []
for i in range(0, 127):
keyDetune.append(random.randint(-30, 30))

b = corpus.parse('bach/bwv66.6')
for n in b.flat.notes:
n.microtone = keyDetune[n.midi]
sp = midi.realtime.StreamPlayer(b)
sp.play()

return 0

if __name__ == '__main__':

main()

这是回溯:

Traceback (most recent call last):
File "main.py", line 49, in <module>
main()
File "main.py", line 44, in main
sp.play()
File "G:\Development\Python Development\Anaconda3\lib\site-packages\music21\mi
di\realtime.py", line 104, in play
streamStringIOFile = self.getStringIOFile()
File "G:\Development\Python Development\Anaconda3\lib\site-packages\music21\mi
di\realtime.py", line 110, in getStringIOFile
return stringIOModule.StringIO(streamMidiWritten)
AttributeError: type object '_io.StringIO' has no attribute 'StringIO'
Press any key to continue . . .

我在 Windows 7 x64 上运行 Python 3.4 x86(Anaconda 发行版)。我不知道如何解决这个问题(但可能是一些模糊的 Python 2.x 到 Python 3.x 不兼容问题,一如既往)

编辑:

我已经按照答案中的建议编辑了导入,现在我得到了一个 TypeError:

enter image description here

除了使用 Music21“播放一些音频”,您会推荐我做什么? (Fluidsynth 或其他任何东西)。

最佳答案

您可能是对的...我认为错误实际上可能出在 Music21 中,因为它处理导入 StringIO

Python 2 有 StringIO.StringIO,而

Python 3 有 io.StringIO

..但是如果您查看 music21\midi\realtime.py

中的导入语句
try:
import cStringIO as stringIOModule
except ImportError:
try:
import StringIO as stringIOModule
except ImportError:
from io import StringIO as stringIOModule

最后一行是导入 io.StringIO,所以稍后对 stringIOModule.StringIO() 的调用失败了,因为它实际上是在调用 io.StringIO。 StringIO.

我会尝试将导入语句编辑为:

    except ImportError:
import io as stringIOModule

看看是否能解决问题。

关于python - Music21 Midi 错误 : type object '_io.StringIO' has no attribute 'StringIO' . 如何解决?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30797937/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com