audiotoolbox를 사용하여 NewMusicSequence에서 MusicSeqence를 만들었습니다. 그런 다음 MusicSequenceNewTrack의 MusicTrack을 만들었습니다. MusicTrackNewMIDINoteEvent에 의해 MusicTrack에 몇 개의 노트를 삽입했습니다. 그리고 MusicSequence를 재생하기 위해 AVMIDIPlayer를 만들었습니다. 그러나 나는 단 하나의 음악 악기로 연주 할 수 있습니다 : 피아노. 내 질문은 만약 MusicTrack을 위해 음악 악기를 바꿀 수 있다면? 예를 들어, 바이올린으로 MusicTrack을 재생하십시오. 가능하다면 어떻게 할 수 있습니까?MusicTrack의 음악 악기를 어떻게 변경합니까?
0
A
답변
0
좋아, 알아 냈어.
var inMessage = MIDIChannelMessage(status: 0xE0, data1: 120, data2: 0, reserved: 0)
MusicTrackNewMIDIChannelEvent(musicTrack!, 0, &inMessage)
// set msb to 120 and lsb to 0
inMessage = MIDIChannelMessage(status: 0xC0, data1: 48, data2: 0, reserved: 0)
MusicTrackNewMIDIChannelEvent(musicTrack!, 0, &inMessage)
// change program to 48
// you changed the instrument to Orchestra Drums
그리고 모든 악기 정보는 CopyInstrumentInfoFromSoundBank에서 가져올 수 있습니다.
MusicTrackNewMIDIChannelEvent에 대한 상태 및 해당 데이터 1 및 데이터 2는 here