0

为了让 magenta.music 函数 play_sequence(note_seq,synth=mm.fluidsynth) 播放音符序列并将其显示在我的 jupyter 笔记本上,我已经尝试在 Windows 10 上安装流体合成器和 pyfluidsynth 很多次。

我试图克隆 github 存储库,使用 pip 安装它,但似乎没有任何效果。我检查了 Synth 类是否在我的 fluidsynth.py 脚本上,我发现了它,所以我不知道问题出在哪里。

我得到的错误是这个:


来自原始音高曲线的 2 #MIDI 文件中的 AttributeError Traceback(最近一次调用) 3 file = 'midi ----> 4 midi_pianoroll(file) 5 play_midi(file + '.mid')

in midi_pianoroll(file_prefix) 16 17 # 这是一个播放 NoteSequence 的 colab 实用方法。---> 18 mm.play_sequence(note_seq,synth=mm.fluidsynth) 19 返回 20

~\Anaconda3\lib\site-packages\magenta\music\notebook_utils.py in play_sequence(sequence, synth, sample_rate, colab_ephemeral, **synth_args) 99 **synth_args:传递给合成函数的附加关键字参数。100 """ --> 101 array_of_floats = synth(sequence, sample_rate=sample_rate, **synth_args) 102 103 试试:

~\Anaconda3\lib\site-packages\magenta\music\midi_synth.py in fluidsynth(sequence, sample_rate, sf2_path) 53 """ 54 midi = midi_io.note_sequence_to_pretty_midi(sequence) ---> 55 return midi.fluidsynth(fs =sample_rate, sf2_path=sf2_path)

~\Anaconda3\lib\site-packages\pretty_midi\pretty_midi.py in fluidsynth(self, fs, sf2_path) 916 # 为每个仪器获取合成波形 917 个波形 = [i.fluidsynth(fs=fs, --> 918 sf2_path= sf2_path) for i in self.instruments] 919 # 分配输出波形,#sample = 所有波形的最大长度 920 合成 = np.zeros(np.max([w.shape[0] for w in waves]))

~\Anaconda3\lib\site-packages\pretty_midi\pretty_midi.py in (.0) 916 # 获取每个仪器的合成波形 917 个波形 = [i.fluidsynth(fs=fs, --> 918 sf2_path=sf2_path) for i in self.instruments] 919 # 分配输出波形,#sample = 所有波形的最大长度 920 合成 = np.zeros(np.max([w.shape[0] for w in waves]))

~\Anaconda3\lib\site-packages\pretty_midi\instrument.py in fluidsynth(self, fs, sf2_path) 426 427 # 创建流体合成实例 --> 428 fl = fluidsynth.Synth(samplerate=fs) 429 # 加载 soundfont 430 sfid = fl.sfload(sf2_path)

AttributeError:模块“fluidsynth”没有属性“Synth”

4

1 回答 1

0

我现在正在尝试这里的说明: https ://ksvi.mff.cuni.cz/~dingle/2019/prog_1/python_music.html

包在这里: https ://github.com/FluidSynth/fluidsynth/releases/tag/v2.1.0.rc1

于 2020-06-30T15:38:53.180 回答