gpt4 book ai didi

windows-runtime - 在 Windows 应用商店应用程序中播放 MIDI 文件

转载 作者:行者123 更新时间:2023-12-02 01:44:28 25 4
gpt4 key购买 nike

我需要从 Windows 应用商店应用程序播放 MIDI 文件。 (即应用程序本身应该在软件中生成声音——我不想将 MIDI 输出到硬件设备。)

我希望有一些简单的 API/库,我可以在其中传递文件的位置和可能的声音字体,然后调用“播放”函数,但我一直找不到这样的东西。例如FluidSynth看起来像 it will do just this ,但它没有适用于 Windows 应用商店应用的版本。

微软 recently introduced一个新的Windows Runtime API for MIDI ,但这不包括任何处理 MIDI 文件的代码。

开源库 NAudio 确实显然包含用于读取 MIDI 文件的代码,所以我认为我需要实现的是使用 NAudio 打开文件,读取/解析 MIDI 事件,然后通过 Microsoft GS Wavetable Synth 软件设备,通过新的 MIDI 预览 API(实现我自己的调度,以便在正确的时间发送消息)。

更新:Microsoft 的 sample code用于枚举 MIDI 端口的列表会在连接时列出 USB MIDI 设备,但如果没有连接 USB 设备,它会报告“无 MIDI 端口”。

注意示例代码通过将 MidiOutPort::GetDeviceSelector 的返回值传递给 DeviceInformation::FindAllAsync 方法来枚举端口。据我所知,这应该列出所有可用的 MIDI 设备。

但是,在同一台计算机上,在桌面应用程序中发现了 Microsoft synth ,例如通过 DirectMusic 的 EnumPort 方法。

这是否意味着 Windows 应用商店应用程序没有可用的默认软件合成器?我还需要实现自己的合成器吗?

更新 2: 我现在找到了 some comments来自 Microsoft 工作人员确认 WindowsPreview MIDI API 不支持默认软件合成器。

这行得通吗?这是正确的方法吗?是否有我错过的更简单的方法/API/第三方库?

更新 3: 看起来 NAudio 的 WinRT 版本不包含 MIDI 功能,所以看来我将构建 MIDI 音序器和从头开始合成。 (也许在合成器实现中使用 NAudio。)

最佳答案

这是一个老问题,但为了完整起见,我想回答有关可用合成器的部分。 Microsoft 已推出 Microsoft General Midi Wave Table Synth,以通过 nuget 包存储应用程序。它适用于 UWP 中的新 Midi API。您可能还想查看 Leslie Sanford 的 C# Midi 库以获得基本音序器的良好起点。它通过 P/Invoke 使用 Win32 MM 库,但它足以简单地改造新的 Midi Api。

关于windows-runtime - 在 Windows 应用商店应用程序中播放 MIDI 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26528089/

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