MusicDeviceMIDIEvent:iOS5.1上的未知功能

时间:2012-08-11 21:18:33

标签: core-audio ios5.1 audiounit

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

该项目引用了项目编译和运行的CoreAudio和AudioToolbox,但调用了带有Bad Access Xcode的MusicDeviceMIDIEvent错误,'未知函数'AppCode。

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

如果我尝试添加对AudioUnit.framework的引用,我理解它包含我得到的'框架未找到AudioUnit'并且项目无法构建。

关于SE的其他问题表明我应该使用CoreAudio和AudioToolbox而不是AudioUnit。

此外,我可以看到示例代码'LoadPresetDemo'在没有AudioUnit框架的情况下运行,但我看不出原因。

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

1 个答案:

答案 0 :(得分:1)

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

#import <AudioToolbox/AudioToolbox.h>

如果查看该文件,您将看到#include包含使用AUGraphs等所需的所有内容。如果您需要执行其他操作,例如记录或访问AUGraph输出,则需要导入其他框架

我为使用MusicPlayer API的其他人发布了demo project - 您可能会发现使用它。

<强>更新

AudioToolbox是一种方便的“瑞士军刀音响”类型的东西。如果您查看AudioToolbox.h,它将链接到MusicPlayer.h,并链接到某些Core Audio + Audio Unit。 MusicDeviceMIDIEvent在MusicPlayer.h中定义,因此如果您在构建设置中包含AudioToolBox Framework,

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

无论如何......如果你已经链接到AudioToolBox并导入了AudioToolbox.h,那我就不知道出了什么问题......; - )

#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

// 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