首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AudioToolbox MusicPlayer更改程序没有任何影响

AudioToolbox MusicPlayer更改程序没有任何影响
EN

Stack Overflow用户
提问于 2013-11-13 02:12:06
回答 1查看 634关注 0票数 0

在这里训练..。我一直在使用MusicPlayer/MusicSequence/MusicTrack在运行iOS的设备上播放MIDI音符。音符弹得很好。我正在努力改变正在演奏的乐器。据我所知,这是如何做到的:

代码语言:javascript
复制
-(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。我是stumped...Anyone?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-08 01:11:45

我在其他文章中读到过,我可以通过音乐播放器和朋友来生成midi。它提供程序更改。所以,我认为它是支持的。在用尽了所有的理论之后,我转向了AUGraph。我添加了一个在线找到的*.sf2文件,实例化了AUGraph、两个AudioUnits、一个MidiEndpointRef和一个MidiClientRef;根据这个教程

在端点回调中,我不得不在samplerUnit上使用似乎允许程序更改的samplerUnit打开和关闭注释。而在此之前,我只是将便笺事件加载到MusicTrack中,并播放/停止MusicPlayer

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19943936

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档