jjzjj

iphone - 如何使用OpenAL从iOS上的声音时间线中导出声音

我不确定是否可以实现我想要的,但是基本上我有一个代表录音的NSDictionary。这是在什么时间播放什么声音ID的时间线。我有它,以便您可以播放此时间轴/记录,并且效果很好。我想知道是否有这个时间表,如果设备已与iTunes同步,则将其导出为可以保存到计算机的单个声音。因此,基本上,我在问我是否可以获取声音的时间轴,进行播放,并将这些声音拼接成单个声音,然后可以将其导出。我使用OpenAL作为声音框架,声音文件都是CAF。任何帮助或指导表示赞赏。谢谢! 最佳答案 你会需要:对线性PCM音频格式有很好的了解(请参阅Wikipedia

iphone - 无法删除 OpenAL 缓冲区

我正在为iPhone和OpenAL使用XCode4.5。问题是我无法删除声音缓冲区,在我播放声音后:alSourcePlay()。如果我不播放源-缓冲区被删除并且内存被毫无问题地释放。加载声音:alGenBuffers(1,&bufferID);//Loadingawaitingdatablobintobuffer.alBufferData(bufferID,format,outData,size,freq);//GettingsourceIDfromOpenAL.alGenSources(1,&sourceID);//Attacingbuffertosource.alSourcei(

c++ - SFML 未静态链接到 openal32(静态链接到所有其他依赖项)

我使用CMake为MinGW编译了SFML。运行“mingw32-makeinstall”后,所有内容都已构建并安装,没有错误。但是在运行示例时-pong.exe、sound.exe、sound-capture.exe和voip.exe都依赖于openal32.dll。我在配置CMake时指定了SFML_USE_STATIC_LIBS=true,并且示例可执行文件的所有其他依赖项仅基于nativeWindowsdll。谁能解释为什么它动态链接到openal32(但没有别的)?编辑:我刚刚遇到这个线程http://en.sfml-dev.org/forums/index.php?topi

c++ - OpenAL:如何使用线性衰减?

我想控制声源音量随距离淡出的方式,我该怎么做?编辑:我还想知道如何相应地缩放声音坐标系:我不想听到离声源太远的声音:现在我必须更改我的渲染代码缩放坐标以使其按我的意愿工作。Edit2:虽然,一种解决方案是在发送之前乘以我的坐标...但是还有更优雅的方法吗? 最佳答案 这将是alDistanceModel(AL_LINEAR_DISTANCE)或更好的alDistanceModel(AL_LINEAR_DISTANCE_CLAMPED),它将完全关闭远距离源。阅读第3.4.3和3.4.4章here.您还必须为每个源(alSourcef

c++ - OpenAL:如何创建简单的 "Microphone Echo"程序?

所以我想知道从默认麦克风读取数据并输出到默认扬声器的最短(就有效线路而言)开放AL代码是什么?我在VisualStudio2008下的windows7上开发 最佳答案 一个古老的问题,但这里有一个答案。如果我们真的想要简洁,它肯定可以被修剪,但这比100行有效行要少一点:#include//OpenALheaderfiles#include#includeusingstd::list;#defineFREQ22050//Samplerate#defineCAP_SIZE2048//Howmuchtocaptureatatime(af

iOS:将 OpenAL 的变调和管道输出输出到缓冲区

我最近发现在iOS中可以使用OpenAL进行音高转换。我正在查看Hollance的音库播放器。它吸收了15个左右散布在整个范围内的钢琴音符,并通过找出它最接近哪个样本来播放任何音符,并将该样本的音高移动适当的量。这是执行此操作的代码:-(void)noteOn:(int)midiNoteNumbergain:(float)gain{if(!initialized){NSLog(@"SoundBankPlayerisnotinitializedyet");return;}intsourceIndex=[selffindAvailableSource];if(sourceIndex!=-1

ios - 在 iOS 上使用 OpenAL 进行声音捕捉

我正在尝试使用OpenAL在iOS上进行声音捕捉(我正在编写一个跨平台库,这就是我避免使用特定于iOS的方式来录制声音的原因)。开箱即用的OpenAL捕获不起作用,但存在一个已知的解决方法:openanoutputcontextbeforestartingcapture.此解决方案适用于iOS5.0。但是在iOS5.1.1上,解决方法仅对我尝试记录的第一个样本有帮助。(在开始捕获并打开默认输出设备之前,我将AudioSession切换为PlayAndRecord。录制样本后,我关闭设备并将session切换回原来的状态。)对于第二个示例,重新打开输出上下文没有帮助,也没有捕获到声音。是

multithreading - 从后台线程播放 OpenAL 声音

在我的iOS应用程序中,我不想使用OpenAL播放声音。我有AudioManager类,负责声音管理(单例)。所有声源和缓冲区都在创建时初始化(在第一个instance调用时)。因此,要播放声音,我只需要停止之前的声音,清除旧缓冲区(必要源),附加新缓冲区,设置音调和增益,最后播放声音。所有这些操作都在playSound:(AMSound)sound方法中(AMSound是一个简单的枚举)。对于UI效果,我从主线程调用此方法。但是我的应用程序有很多后台工作,有时还伴随着声音效果。我可以直接从后台线程调用playSound:还是应该只在主线程上调用?那么同步声音呢:一个是从主线程创建的,

iphone - AudioToolbox/OpenAL ExtAudioFile 播放压缩音频

我目前正在使用OpenAL播放游戏音乐。它工作正常,除了它不适用于原始WAV文件之外的任何东西。这意味着我最终得到了大约9mb的配乐。我是OpenAL的新手,我直接使用来自Apple示例(https://developer.apple.com/library/ios/#samplecode/MusicCube/Listings/Classes_MyOpenALSupport_h.html%23//apple_ref/doc/uid/DTS40008978-Classes_MyOpenALSupport_h-DontLinkElementID_9)的代码来获取缓冲区数据。问题:有没有办法

ios - OpenAL 源在停止和删除后继续播放

我们的ipad应用程序并行播放一堆OpenAL源,一个用于每个正在进行的触摸。源在touchesMoved时创建和启动,在touchesEnded或touchesCancelled时停止。一切似乎工作正常,除了一个错误,有时一个源似乎在触摸结束后继续播放。这似乎只有在生成大量触摸事件时才会发生。我已经证实,当发生这种情况时,我所有的AL源都已被alSourceStop停止并被alDeleteSources销毁。OpenAL没有报告任何错误。然而声音并没有停止。我开始认为这可能是OpenAL的iOS实现中的错误。有人见过这样的东西吗? 最佳答案