在这里训练的 MIDI 菜鸟...我一直在使用 MusicPlayer/MusicSequence/MusicTrack 在运行 iOS 的设备上播放 MIDI 音符。音符弹得很好。我正在努力改变正在演奏的乐器。据我所知,这是如何做到的:
-(void) setInstrument:(MIDIInstruments) program channel:(int) channel MusicTrack:(MusicTrack*) track time:(float) time {
if(channel < 0 || channel > 15 || program >=MIDI_INSTRUMENT_COUNT || time < 0) {
return;
}
MIDIChannelMessage programChange = { ((UInt8)0xC) << 4 | ((UInt8)channel), ((UInt8)program), 0, 0};
OSStatus result = MusicTrackNewMIDIChannelEvent(*track, time, &programChange);
if(result != noErr) {
[NSException raise:@"Set Instrument" format:@"Failed to set instrument error: %@", [NSError errorWithDomain:NSOSStatusErrorDomain code:result userInfo:nil]];
}
}
在这种情况下,通道为 0 或 1,我在有效乐器枚举范围内尝试了几种乐器,时间为 0.0,MusicTrack 有效,并且有约 30 秒的音符事件。设置通道事件的调用传回 noErr。我被难住了……有人吗?