2015-09-25 39 views
0

我能靜音輕鬆使用MusicPlayer的MusicTrackSetProperty(T,kSequenceTrackProperty_MuteStatus ...)方法/取消靜音MIDI音軌。但是,我並未圍繞如何啓用/禁用軌道中的特定MIDI通道。音軌中是否有靜音/取消靜音或禁用/啓用屬性?如何在CoreMidi軌道中播放特定頻道?

會像這樣在賽道上水平做,或者我應該以某種方式操縱的MIDI合成器音頻單元?

創建端點沒有我不行,因爲我只獲取發送到合成器,而不是一個回調,我可以看到用於過濾了什麼事情合成器事件的副本。所以,我認爲音頻單位圖中可能會調整一些東西,但究竟是什麼?

有人可能會建議用kMusicSequenceLoadSMF_ChannelsToTracks標誌打開MIDI文件,然後簡單地取消靜音與該通道對應的音軌並將其餘的靜音。我試過這樣做,但實際上,如果沒有kMusicSequenceLoadSMF_ChannelsToTracks標誌,打開MIDI文件時會得到/更少/音軌。奇。也許我應該理解爲什麼是這樣的話,是吧?這是我的MIDI文件:16個軌道,每個包含6個MIDI通道。如果沒有kMusicSequenceLoadSMF_ChannelsToTracks,我會得到16首曲目,其中kMusicSequenceLoadSMF_ChannelsToTracks標誌爲12,不應該是16 * 6曲目嗎?

感謝您的幫助。最適合你。 /周杰倫

回答

1

你在正確的軌道上。據我所知,kMusicSequenceLoadSMF_ChannelsToTracks將結合共同的頻道。因此,如果給出兩個包含來自三個通道的音符的軌道,讓我們假設track1在通道1,2和3上有音符。並且track2在通道3,4和5上有音符。然後使用kMusicSequenceLoadSMF_ChannelsToTracks標誌將使用通道合併音符3從track1和track2到新軌道。使用該方法的曲目總數將爲5。除非你可以證明,否則這可能是一條路。否則,如果您確實需要分離,端點是一種有效的方法。您只需手動發送MIDI事件,而不是建立連接(將軌道指向合成器)。在你的回調中,你應該解析midi並且調用MusicDeviceMIDIEvent來直接觸發合成器。你可以在那裏做你的過濾。

+0

我得去過濾路線,因爲我們聽力的結果,設備正等待每磁道6個通道沿每個通道發送到設備。雖然我很高興知道這次合併,但我總是想知道那裏發生了什麼。 –

相關問題