MIDI noob в обучении здесь ... Я использую MusicPlayer/MusicSequence/MusicTrack для воспроизведения заметок MIDI на устройствах под управлением iOS. Заметки прекрасно воспроизводятся. Я изо всех сил пытаюсь изменить используемый инструмент. Насколько я могу понять, что это, как это сделать:AudioToolbox MusicPlayer изменение программы не имеет эффекта
-(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. Я в тупик ... Кто-нибудь?