电脑 MIDI 播放常用工具推荐

我入坑 MIDI 这段时间,了解到一些在电脑上播放 MIDI 文件需要依赖的一些工具。这些工具对于各位资深玩家可能已经十分熟悉,但对于我这样的新手来说仍需花不少时间才能了解清楚。因此这篇帖子主要向那些刚入坑的朋友推荐一些常用软件,这些软件大多在站内的帖子里被提及过,这里只是起到一个信息汇总的作用,希望能消除一些信息差。

电脑播放 MIDI 文件,一般需要播放器和合成器两类软件。以下分别进行介绍。

合成器

常见的软件合成器按连接方式可分为驱动调用、通过端口调用两种,按合成方式又分为 SoundFont 合成器、VSTi 包装两大类。

合成方式分类

如果是 SoundFont 合成器,需要加载 SF2 等音色库文件作为音源。最常用的比如说 CoolSoft VirtualMIDISynth,可以注册多个虚拟 MIDI 设备;与它类似的有 OmniMIDI,这两个合成器的底层都是 un4seen 的 BASS 库。另外还有基于 FluidSynth 底层的 Qsynth 合成器,它就没有注册驱动,只能通过设置输入端口接收 MIDI 消息(这个软件我在站内有发过:Qsynth 1.0.6 Windows 汉化构建版及编译教程 - MIDI 技术 - TAT)。

VirtualMIDISynth

Qsynth

另一类是 VSTi 类的合成器,需要加载 VSTi 插件作为音源。VSTi 插件原来一般是与宿主软件搭配使用,但通过简单的包装也可以变成通用合成器。比如说 Falcosoft 的 VST MIDI Driver 就可以将 VSTi 包装为 MIDI 驱动,不过只能创建一个虚拟设备需要手动切换插件。而 SAVIHost 可用端口的方式调用 VSTi。部分正版 VSTi 安装时就附带了包装程序,使用和 SAVIHost 类似。

VST MIDI Driver

SAVIHost

SAVIHost

调用方式分类

像是 VirtualMIDISynth 和 VST MIDI Driver 这样的驱动式的合成器通过系统的 WinMM/MME API 进行调用的,大多数播放器都支持手动选择它作为输出设备。部分播放器无法选择,由于 Vista 后系统内置的 MIDI 映射器被弃用,会默认输出到设备 0 也就是系统内置的软件合成器(Microsoft GS Wavetable Synth,简称 MSGS 或 GS Synth)。这个合成器音质很差,为了能正常选择输出设备,可以安装 CoolSoft MIDIMapper 替代系统 MIDI 映射器功能。

MIDIMapper

而若使用 SAVIHost 等通过端口连接的合成器/外壳,需要通过特定软件创建 MIDI 端口作为连接输入、输出的桥梁,如 loopMIDI 等。然而在较新的 Windows 11 上,由于系统为适配 MIDI 2.0 升级 服务,传统的 MIDI 端口软件可能会不稳定甚至失效;建议下载微软官方的 MIDI Settings 应用预览版 和配套的 MIDI 1.0 端口创建工具 来创建 MIDI 端口。

loopMIDI

Windows MIDI Settings

音源选择

有了合成器接下来就是选择音源。SoundFont 音色库常见为 SF2 文件。最经典的是 FluidR3_GM;个人推荐 GeneralUser-GS,因为它在文件体积极小的情况下音质并不明显逊于前者。而 VSTi 一般使用早期完整支持 GM 音色的通用插件,如经典的 Yamaha S-YXG50Roland Sound Canvas VA 等。现在下到的大多是重新打包的破解版,形式是一个 DLL 文件或包含 DLL 的文件夹,可以直接用 VST MIDI Driver 加载或用 SAVIHost 套壳使用。这些音源都可以在网上找到资源。

播放器

播放器方面就较为简单。本站的教程里推荐了 vanBasco’s Karaoke Player,不过该软件早已停更,官方链接也失效了。而我个人比较推荐的是下面几款播放器:

TMIDI Player

该软件提供丰富的控制功能,且支持曾经在日本 MIDI 社区里流行的 WRD 格式歌词文件,可以通过简单绘制功能实现丰富的视觉效果。汉化版站内有提供:Tmidi Player 汉化 - MIDI 技术 - TAT

MIDITrail

本身是一个 MIDI 可视化工具,支持打开本地 MIDI 文件和 MIDI 端口输入两种使用方式。由于同时支持端口输入输出,可以将其作为 MIDI 端口链中的一部分随意组合,颇具可玩性。

foobar2000 + foo_midi

foobar2000 是一个经典的音乐播放软件,以其极高的可自定义性而闻名。软件本体并不支持 MIDI 播放,但搭配上 foo_midi 组件,它就成了一个 MIDI 播放器。foo_midi 支持使用 BASSMIDI、FluidSynth 以及 VSTi 插件等多种合成方式。

Falcosoft Soundfont Midi Player

这是我最推荐的播放器,它的功能可谓极其全面便捷。它支持 MIDI 端口输入输出和以及 WinMM 驱动调用,也就是说可以使用上面提到的任何合成器。然而它甚至不需要依赖外置合成器:它内置的 BASSMIDI 可同时实现 Soundfont 合成和 VSTi 合成,不需要外接任何程序,这种内置合成器的方式可以说既便捷又稳定。不过要确保 VSTi 插件和软件本身同时为 32 位或 64 位,或安装 jBridge,播放器将自动进行版本转换。它还支持录制功能,也就是说可以将使用内置合成器播放的任意音源播放的 MIDI 音乐渲染为正常的音频。


补充一个:

TiMidity++

汉化版链接:TiMidity++ Windows 汉化修改版 - MIDI 技术 - TAT

4 Likes

目前不要用Windows MIDI Service的MIDI1 Loopback,该插件仍处于预览阶段,容易导致服务崩溃重启或卡死。
建议改用MIDI2 Loopback,虽然是MIDI2,但MIDI2向下兼容MIDI1。

1 Like

感谢大佬回复。我使用的一些软件不是很兼容 MIDI 2.0 Loopback,因此我目前主要用 MIDI 1.0 Loopback,还没碰到过太大的问题,也许是我运气好吧 :joy:

2 Likes

我目前正在使用网页MIDI合成器SpessaSynth,这个应用也有本地版,但需要安装nodejs。
应用使用了WebMIDI,可以在几乎所有平台上使用MIDI端口。

2 Likes

厉害!纯 Web 实现的 MIDI 播放?看起来很方便。不知道 MidiShow 以后会不会换用这个合成器。我有台电脑上用 Jazz MIDI 插件播放就没成功过,也不知道是哪个环节出了问题。还有MIDI云那个网站的播放体验堪称痛苦,它会一次性打开我安装的所有 MIDI 设备导致它们之间互相冲突。用上这个应该会好很多。MIDI 就是太古老了,相关的各种技术适配都没跟上,只能靠爱好者发电 :grin:

1 Like

这似乎是Chromium的WebMIDI实现导致的,Chromium会在第一次访问MIDI设备时自动打开所有设备,且不会自动关闭。

1 Like

原来如此,看来还有不少改进空间啊。另外请问大佬 WEBMIDI.js 和 JZZ.js 定位是否重合,两者孰优孰劣呢?

1 Like

WEBMIDI.js本质上是对浏览器WebMIDI API的封装,本身并不具备播放MIDI文件的功能。
而JZZ.js提供了更多的功能,比如MIDI文件播放器、虚拟端口、MIDI2和浏览器扩展Jazz-MIDI等。
两者的共同点是都使用WebMIDI API,而使用WebMIDI需要申请权限才能使用。
另外我并不是什么大佬。

1 Like

谢谢解惑,别太自谦嘛!还有我求教也得显得虚心些吧 :joy: 早睡啊

1 Like

补充一句:Windows MIDI Service的Loopback端口(包括输入和输出)可以被多个应用打开。

This post was flagged by the community and is temporarily hidden.

1 Like

依旧还要重复,技术贴禁止水楼
(另外水了又能得到什么东西呢?在这里)

2606251220tc8

This post was flagged by the community and is temporarily hidden.

This post was flagged by the community and is temporarily hidden.

This post was flagged by the community and is temporarily hidden.

This post was flagged by the community and is temporarily hidden.

This post was flagged by the community and is temporarily hidden.

2607142330