我正在尝试使用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框架的情况下运行,但我看不出原因。
非常感谢任何建议或指示。
答案 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