首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MusicDeviceMIDIEvent: iOS5.1上的未知函数

MusicDeviceMIDIEvent: iOS5.1上的未知函数
EN

Stack Overflow用户
提问于 2012-08-12 05:18:33
回答 1查看 784关注 0票数 0

我正在尝试使用MusicSequence来控制一个针对iOS5.1的AUSampler实例

该项目引用了项目编译和运行的CoreAudio和AudioToolbox,但在使用错误的Access Xcode调用MusicDeviceMIDIEvent时出现错误,即“未知函数”AppCode。

我看到接口已经改变了,MusicDeviceMIDIEvent现在存在于AudioUnit框架中的MusicDevice.h中。

如果我试图添加一个包含函数的AudioUnit.framework引用,我会得到'framework not found‘,并且项目构建失败。

SE上的其他问题建议我应该使用CoreAudio和AudioToolbox而不是AudioUnit。

此外,我可以看到示例代码'LoadPresetDemo‘在没有AudioUnit框架的情况下可以正常工作,但我不明白为什么。

任何建议或指示都将非常感谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-12 07:49:49

要使用AudioToolbox.hAPI,您只需将AudioToolBox框架添加到您的项目中,然后在您的项目中导入MusicPlayer:

代码语言:javascript
运行
复制
#import <AudioToolbox/AudioToolbox.h>

如果你看了这个文件,你会发现它包含了使用AUGraphs等的所有必要的部分。如果你需要做一些额外的事情,比如录制或者访问AUGraph输出,那么你将需要导入额外的框架。

我为其他使用MusicPlayer应用程序接口的人发布了一个demo project -你可能会发现它的用处。

更新:

AudioToolbox是一种方便的“瑞士军刀音频”类型的东西。如果你查看AudioToolbox.h,它链接到MusicPlayer.h,这链接到一些核心音频+音频单元的东西。MusicDeviceMIDIEvent是在MusicPlayer.h中定义的,所以如果您在构建设置中包含了AudioToolBox框架,

我这里有一个"LoadPresetDemo“的例子。对于音频,它只包含AudioToolbox和AVFoundation。作为现实检查,我删除了AVFoundation链接,编译并修复了导致的错误-所有这些都与设置音频会话和输出采样率等有关,然后我在模拟器中编译并运行它,它运行得很好。我认为苹果包含了所有这些来演示如何处理进入和离开后台的音频应用程序(参见endInterruptionWithFlags方法)。

不管怎样..。如果您已经链接到AudioToolBox并导入了AudioToolbox.h,那么我不知道出了什么问题... ;-)

代码语言:javascript
运行
复制
#define AUDIO_TOOLBOX_VERSION 1060

#include <Availability.h>
#include <TargetConditionals.h>
#if !defined(__COREAUDIO_USE_FLAT_INCLUDES__)
    #include <AudioToolbox/AudioFile.h>
    #include <AudioToolbox/AudioFileStream.h>
    #include <AudioToolbox/AudioFormat.h>
    #include <AudioToolbox/AudioQueue.h>
    #include <AudioToolbox/AudioServices.h>
    #include <AudioToolbox/AUGraph.h>
    #include <AudioToolbox/AudioConverter.h>
    #include <AudioToolbox/ExtendedAudioFile.h>
    #include <AudioToolbox/MusicPlayer.h>
    #include <AudioToolbox/CAFFile.h>
    #if !TARGET_OS_IPHONE
        #include <AudioToolbox/AudioFileComponent.h>
        #include <AudioToolbox/AudioUnitUtilities.h>
        #include <AudioToolbox/AUMIDIController.h>
        #include <AudioToolbox/CoreAudioClock.h>
    #endif
#else
    #include <AudioConverter.h>
    #include <AudioFile.h>
    #include <AudioFileComponent.h>
    #include <AudioFileStream.h>
    #include <AudioFormat.h>
    #include <AudioQueue.h>
    #include <AudioUnitUtilities.h>
    #include <AUGraph.h>
    #include <AUMIDIController.h>
    #include <CAFFile.h>
    #include <CoreAudioClock.h>
    #include <ExtendedAudioFile.h>
    #include <MusicPlayer.h>
    #include <AudioServices.h>
#endif

代码语言:javascript
运行
复制
// MusicPlayer.h
#include <Availability.h>
#if !defined(__COREAUDIO_USE_FLAT_INCLUDES__)
    #include <CoreAudio/CoreAudioTypes.h>
    #include <AudioUnit/AUComponent.h>
#else
    #include <CoreAudioTypes.h>
    #include <AUComponent.h>
#endif
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11917741

复制
相关文章

相似问题

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