播放多乐器 MIDI 文件

Posted

技术标签:

【中文标题】播放多乐器 MIDI 文件【英文标题】:play multi-instrument MIDI file 【发布时间】:2012-09-20 17:31:37 【问题描述】:

我一直在使用 MusicPlayerMusicSequence 类来播放 MIDI 文件。但是,我想知道如何为不同的通道指定仪器。 MusicPlayer 对程序更改事件的默认响应是什么?我可以告诉MusicPlayer 对某些通道使用某些采样器吗?还是只有将自己的函数设置为 MIDI Endpoint,然后使用MusicDeviceMIDIEvent() 指定采样器自己处理音符的播放?

【问题讨论】:

【参考方案1】:

您可以为 MusicSequence 中的不同曲目指定不同的乐器。 (MusicTrack API) 我不认为 MusicPlayer 对频道本身做任何事情。您可以指定在加载 MIDI 文件时将通道转换为轨道。

音乐序列加载标志

用于配置 MusicSequenceFileLoad 行为的标志和 MusicSequenceFileLoadData 函数。

枚举 kMusicSequenceLoadSMF_ChannelsToTracks = (1

常量

kMusicSequenceLoadSMF_ChannelsToTracks

If this flag is set the resultant Sequence will contain a tempo track, 1 track for each MIDI Channel that is found in the SMF, 1 track

对于 SysEx 或 MetaEvents - 这将是 LoadSMFWithFlags 调用之后的序列。

Available in OS X v10.3 and later.

Declared in MusicPlayer.h.

【讨论】:

以上是关于播放多乐器 MIDI 文件的主要内容,如果未能解决你的问题,请参考以下文章

播放(不是录制/导出)多个 MIDI 轨道

如何使用 Python 中的长笛乐器从音符制作 MIDI 文件(music21 库)

在音轨播放期间更改乐器 - MIDI/Java

在 React 中播放和操作 MIDI

Java MIDI - ControllerEventListener(如何更改乐器)

如何读取 MIDI 文件、更改其乐器并将其写回?