gpt4 book ai didi

ios - 如何在 CoreMidi 轨道中播放特定 channel ?

转载 作者:行者123 更新时间:2023-11-29 01:37:45 24 4
gpt4 key购买 nike

我可以使用 MusicPlayer 的 MusicTrackSetProperty(t, kSequenceTrackProperty_MuteStatus...) 方法轻松静音/取消静音 midi 音轨。但是,我还没有弄清楚如何启用/禁用轨道中的特定 MIDI channel 。轨道内的 channel 是否有静音/取消静音或禁用/启用属性?

类似的事情会在轨道级别上完成吗?或者我应该以某种方式操纵 midi 合成器音频单元?

创建端点对我没有任何好处,因为我只获得发送到合成器的事件的副本,而不是我可以看到的用于过滤发送到合成器的内容的回调。所以,我认为音频单元图中可能有一些东西可以调整,但到底是什么呢?

有人可能建议使用 kMusicSequenceLoadSMF_ChannelsToTracks 标志打开 midi 文件,然后简单地取消与 channel 对应的轨道的静音并将其余轨道静音。我尝试这样做,但在没有 kMusicSequenceLoadSMF_ChannelsToTracks 标志的情况下打开 midi 文件时,我实际上得到了/less/轨道。奇怪的。也许我应该明白为什么会这样,对吧?这是我的 MIDI 文件:16 个轨道,每个轨道包含 6 个 MIDI channel 。如果没有 kMusicSequenceLoadSMF_ChannelsToTracks,我会得到 16 个轨道,如果使用 kMusicSequenceLoadSMF_ChannelsToTracks 标志,则为 12。难道不应该是 16*6 轨道吗?

感谢您的帮助。给你最好的。/杰伊

最佳答案

您走在正确的轨道上。据我所知,kMusicSequenceLoadSMF_ChannelsToTracks 将合并公共(public) channel 。因此,如果给定两个音轨,每个音轨包含来自三个 channel 的音符,假设音轨 1 在 channel 1、2 和 3 上有音符。而音轨 2 在 channel 3、4 和 5 上有音符。然后使用 kMusicSequenceLoadSMF_ChannelsToTracks 标志将使用 channel 合并音符3 从 track1 和 track2 到一个新的轨道。使用该方法,轨道总数将为 5。这可能是要走的路,除非你能证明不是这样。否则,如果你真的需要把事情分开,端点是一种有效的方法。您只需要手动发送 MIDI 事件而不是建立连接(将轨道指向合成器)。在您的回调中,您应该解析 midi 并调用 MusicDeviceMIDIEvent 以直接触发合成器。您可以在那里进行过滤。

关于ios - 如何在 CoreMidi 轨道中播放特定 channel ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32774660/

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