在Windows上安装pyfluidsynth

时间:2019-01-13 07:20:06

标签: python fluidsynth

我正在尝试在Windows上安装pyfluidsynth。我在命令提示符下使用了pip install pyfluidsynth,但是当我尝试在Python代码中导入fluidsynth时,我得到了:

 ModuleNotFoundError: No module named 'FluidSynth'

几年前,当我尝试安装FluidSynth时(通过使用pip install fluidsynth),另一个绑定包随FluidSynth 0.2一起安装。

有人可以提供具体细节的帮助,如何在Windows上安装pyfluidsynth并使用它?

import FluidSynth

Traceback (most recent call last):
  File "<input>", line 1, in <module>
  File "C:\Program Files\JetBrains\PyCharm 2018.3.2\helpers\pydev\_pydev_bundle\pydev_import_hook.py", line 21, in do_import
    module = self._system_import(name, *args, **kwargs)
ModuleNotFoundError: No module named 'FluidSynth'

3 个答案:

答案 0 :(得分:0)

对于最新的FluidSynth版本,似乎没有可用于ms-windows的预构建二进制文件。 (请注意,现在开发工作已在github上完成; sourceforge网站已过时。)最新的源代码版本为here

但是FluidSynth Wiki具有instructions可以在ms-windows上构建它。

注意:使用pyfluidsynth时需要FluidSynth(更准确地说,是shared library)。参见README

答案 1 :(得分:0)

对我来说,以下工作有效:

  1. 转到以下link并下载预编译的(?)Fluidsynth dll。
  2. 将您的fluidsynth dll目录添加到路径环境变量中。
  3. 在pyfluidsynth软件包中。找到“ fluidsynth.py”文件,然后编辑要查找库“ lib = find_library('fluidsynth')...”的部分,以搜索dll名称,对于64位版本,其名称为“ libfluidsynth64”。
  4. 由于某种原因(可能版本不匹配),不支持函数“ fluid_synth_set_reverb_full”和“ fluid_synth_set_chorus_full”,因此请从“ fluidsynth.py”中注释掉这些行。
  5. 就是这样。保存“ fluidsynth.py”,启动cmd,进入python,然后导入fluidsynth。

我还没有测试Fluidsynth的所有功能,但是使用pretty_midi,我至少可以通过乐器音色来演奏midi。

希望这会有所帮助!

答案 2 :(得分:0)

在 Windows 上安装fluidsynth

从github下载fluidsynth二进制文件:https://github.com/FluidSynth/fluidsynth/releases

将解压后的 zip 文件的 bin 添加到路径中: 例如:C:\Users*Your Username Here**** 解压后的 zip 路径 ***\fluidsynth-2.1.6-win10-x64\bin

下载fluidsynth python 库:python fluidsynth 的存储库是: https://github.com/nwhitehead/pyfluidsynthhttps://github.com/nwhitehead/pyfluidsynth/archive/master.zip

解压后,必须安装:

python setup.py install

解压出来的master.zip有fluidsynth.py 这个python文件就是要“导入”到python代码中的文件。在 test 文件夹中有 example.sf2,用于安装测试:这两个文件的路径需要设置为您自己的位置。

import time
import fluidsynth

fs = fluidsynth.Synth()
fs.start()

sfid = fs.sfload("example.sf2")
fs.program_select(0, sfid, 0, 0)

fs.noteon(0, 60, 30)
fs.noteon(0, 67, 30)
fs.noteon(0, 76, 30)

time.sleep(1.0)

fs.noteoff(0, 60)
fs.noteoff(0, 67)
fs.noteoff(0, 76)

time.sleep(1.0)

fs.delete()

上面的python代码示例播放单个音符。让它工作确认一切正常。