易于使用的MIDI音频或通过fluidSynth播放

midi2audio的Python项目详细描述


PyPI versionSupported Python versionsLicense

轻松合成MIDI音频或只是播放它。

它为 FluidSynth合成器 使用并适合于脚本和批处理。相反, 大多数midi处理软件都是基于gui的。

为什么?

首先,fluidsynth有一个cli,使用起来并不那么简单。这个 目标是通过设置一些参数使其尽可能易于使用 隐性的。

fluidsynth -ni sound_font.sf2 input.mid -F output.wav -r 44100

midiplay input.mid
midi2audio input.mid output.wav

其次,我们可以用python编写同样简单的接口脚本。

FluidSynth().midi_to_audio('input.mid', 'output.wav')

不是什么?

请注意,它不是绑定到所有fluidSynth命令的python。如果 需要查看这些软件包:

要求

你至少需要一个声音字体。通常你会手动安装 或者通过包裹管理员。midi2audio查找其默认声音 ~/.fluidsynth/default_sound_font.sf2中的字体。它可以是符号链接或 一个真正的文件。

安装

PIP

你可以通过pip安装这个软件包。

pip install midi2audio

或用于开发(代码更改在不重新安装的情况下生效):

git clone https://github.com/bzamecnik/midi2audio
pip install -e midi2audio

操作系统x

我建议添加支持输出到的非默认libsndfile flac和多种音频格式。否则只有wav,raw和a 几乎没有其他人会得到支持。

对于MacOSX,我们提供了一个脚本 install_fluidsynth_with_soundfonts_osx.sh 使用libsndfile和基本声音自动安装fluidsynth 字体(Fluid R3 GM)和 将其符号链接,以便将其识别为默认的声音字体 模块注意,它是通过pip作为另一个入口点安装的。

install_fluidsynth_with_soundfonts_osx.sh

或手动安装:

brew install fluidsynth --with-libsndfile
mkdir -p ~/.fluidsynth
ln -s /path/to/my/sound_font.sf2 ~/.fluidsynth/default_sound_font.sf2

检查脚本如何安装一些额外的(好但更大)声音 默认情况下未安装的字体。

其他操作系统

检查包管理器并链接所描述的默认声音字体 上面。

用法

基本上,你可以播放一个MIDI文件或合成成音频。 fluidsynth允许非实时合成,比 回放。

请注意,音频格式由音频文件扩展名决定。 libsoundfile支持 很多格式。

Python

from midi2audio import FluidSynth

播放MIDI:

FluidSynth().play_midi('input.mid')

将MIDI合成为音频:

# using the default sound font in 44100 Hz sample rate
fs = FluidSynth()
fs.midi_to_audio('input.mid', 'output.wav')

# FLAC, a lossless codec, is supported as well (and recommended to be used)
fs.midi_to_audio('input.mid', 'output.flac')

更改默认值:

# use a custom sound font
FluidSynth('sound_font.sf2')

# use a custom sample rate
FluidSynth(sample_rate=22050)

命令行界面

提供外壳糖midi2audiomidiplay,而不是 更详细的python -m midi2audio

# play MIDI
$ midiplay input.mid

# synthesize MIDI to audio
$ midi2audio input.mid output.wav

# also to FLAC
$ midi2audio input.mid output.flac

# custom sound font
$ midi2audio -s sound_font.sf2 input.mid output.flac

# custom sample rate
$ midi2audio -r 22050 input.mid output.flac

关于

巨人的肩膀

感谢fluidsynth的作者提供了一个不错的命令行midi 合成器!

支持项目

需要一些有关音频处理、机器的咨询或编码工作 学习还是大数据?通过给我留言 email 或者LinkedIn。或者只是 打个招呼:)。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java使用Eclipse Helios for Web项目   java指定行。作为编译器设置的分隔符?   osm映射中带有osmdroid的java标记   java Android ClassNotFoundException在路径:DexPathList上未找到类   java从j2me调用GWT方法   更新到java 8后的aspectj问题   如何仅从根元素java,com提取文本内容。滴虫软件。是的。html   安卓公司。谷歌。火基。数据库DatabaseException:未能转换java类型的值。将字符串改为长字符串   从java中的方法返回arraylist变量   java如果将引用重新分配给同步块内的锁对象,会是什么?   java下载。使用spring mvc的资源文件中的xlsx文件   java Eclipse提供了什么工具来运行Eclipse中未包含的程序?   spring boot Java泛型如何读取传递给泛型方法的类型上的字段或调用方法   Javacard中的javaecdsa签名