标签: openal

将音频转换为CAF格式,以便使用OpenAL在iPhone上播放

我在CrashLanding示例中使用Apple的SoundEngine示例代码来播放多个音频文件.使用CrashLanding附带的示例caf文件一切正常但是当我尝试使用我自己的样本使用afconvert转换为CAF时,我得到的是一个沉默的石头;)

有没有人有afconvert设置会生成一个能够通过OpenAL播放的CAF文件?

iphone openal core-audio afconvert

71
推荐指数
3
解决办法
6万
查看次数

iOS:Audio Units vs OpenAL vs Core Audio

有人可以向我解释一下OpenAL如何适应iPhone上的声音架构?

似乎有不同级别的API用于处理声音.较高级别的人很容易理解.

但是我的理解变得模糊不清.有Core Audio,Audio Units,OpenAL.

这些之间的联系是什么?openAL是基础,它取决于Core Audio(其中包含作为其低级对象之一的Audio Units)?

XAL似乎没有记录OpenAL,但我可以运行使用其功能的代码.

openal core-audio audiounit ios

34
推荐指数
2
解决办法
1万
查看次数

Android OpenAL?

有没有人为Android构建OpenAL,或者在系统上找到它的共享库?对于任何类型的游戏来说,这似乎是一个显而易见的需求,但它没有任何资源.似乎Android java声音库无法根据我所知道的进行音高变化,因此似乎需要OpenAL.我知道OpenAL Soft可以构建在ALSA之上,但我不确定是否有人这样做,我相信这需要一个月的时间.

如果在没有OpenAL的Android上进行声音操作的某个地方有一个很好的指导,那也没关系.这只是OpenAL的是那种对游戏厂商的一个标准,它会是不错的端口我千行到这个系统,我有点觉得是NDK之前,我荣登网站到它的点看,发现里面几乎没有系统上的共享库访问.

谢谢..我希望我能在不成为Java专家的情况下实际移植.到目前为止真的不喜欢NDK!

audio android openal alsa android-ndk

31
推荐指数
4
解决办法
3万
查看次数

如何在iphone上编写实时准确的音频音序器?

我想在iphone上编写一个简单的音频音序器,但我无法获得准确的时序.最后几天我在iphone上尝试了所有可能的音频技术,从AudioServicesPlaySystemSound和AVAudioPlayer以及OpenAL到AudioQueues.

在我的最后一次尝试中,我尝试了使用openAL的CocosDenshion声音引擎,并允许将声音加载到多个缓冲区中,然后在需要时播放它们.这是基本代码:

在里面:

int channelGroups[1];
channelGroups[0] = 8;
soundEngine = [[CDSoundEngine alloc] init:channelGroups channelGroupTotal:1];

int i=0;
for(NSString *soundName in [NSArray arrayWithObjects:@"base1", @"snare1", @"hihat1", @"dit", @"snare", nil])
{
    [soundEngine loadBuffer:i fileName:soundName fileType:@"wav"];
    i++;
}

[NSTimer scheduledTimerWithTimeInterval:0.14 target:self selector:@selector(drumLoop:) userInfo:nil repeats:YES];
Run Code Online (Sandbox Code Playgroud)

在初始化中,我创建声音引擎,将一些声音加载到不同的缓冲区,然后使用NSTimer建立音序器循环.

音频循环:

- (void)drumLoop:(NSTimer *)timer
{
for(int track=0; track<4; track++)
{
    unsigned char note=pattern[track][step];
    if(note)
        [soundEngine playSound:note-1 channelGroupId:0 pitch:1.0f pan:.5 gain:1.0 loop:NO];
}

if(++step>=16)
    step=0;

}
Run Code Online (Sandbox Code Playgroud)

这就是它,它应该工作,但它的时机是不稳定和不稳定的.一旦发生其他事情(在视图中绘制),它就会失去同步.

据我所知,声音引擎和openAL缓冲区已加载(在初始化代码中),然后准备立即启动alSourcePlay(source);- 所以问题可能出在NSTimer?

现在appstore中有几十个声音序列器应用程序,它们具有准确的计时.当变焦和绘图完成时,Ig"idrum"在180 bpm时具有完美的稳定节拍.所以必须有一个解决方案.

有人有什么想法吗?

在此先感谢您的帮助!

最好的祝福,

Walchy


感谢您的回答.它让我更进一步,但不幸的是没有达到目的.这是我做的:

nextBeat=[[NSDate alloc] initWithTimeIntervalSinceNow:0.1]; …
Run Code Online (Sandbox Code Playgroud)

iphone audio timing openal core-audio

23
推荐指数
3
解决办法
1万
查看次数

OpenAL - 确定最大来源

是否有API允许您定义底层声音硬件允许的最大OpenAL"源"数?

在互联网上搜索,我找到了两条建议:

  • 继续生成OpenAL源,直到出现错误.但是,FreeSL(OpenAL包装器)中有一条说明"非常糟糕,甚至可能导致库崩溃"
  • 假设你只有16; 为什么有人会要求更多?(!)

第二项建议甚至被FreeSL采用.

那么,是否有一个通用的API来定义支持的同时"声音"的数量?

感谢您的时间,

法案

c++ audio openal

18
推荐指数
2
解决办法
7251
查看次数

OpenAL随机停止播放一些声音,只能通过重启修复

应用程序:两个拥有庞大客户群的Cocos2d通用iOS游戏.

问题:几个月前(2011年)报道开始报道,声音会随机切断,只有部分声音会在应用中播放,有些则不会.此问题只能通过设备重新启动来解决.

重要注意事项和细节:

  • SAME代码和SAME声音文件播放时间超过一年,没有此类错误报告.我希望我能确定一个日期,但我相信问题始于iOS更新.

  • 这个bug难以复制.我亲眼看过一次,但我再也没有运气了.然而,我们每天会收到1-2封支持相同问题的电子邮件,其中一些是以糟糕的评论形式出现的.如果我不得不从空中拉出一个数字,我猜我们正在考虑1000的发病率.它似乎在iPad上更常见,但我不确定.

  • 重新启动设备是解决问题的唯一方法.重新启动应用程序什么都不做,删除应用程序并重新安装什么都不做,必须关闭电源并重新打开.

  • 几个星期前试图盲目修复我倾倒了Cocos2d声音引擎并将其中一个应用程序切换到ObjectAL(另一个基于openAL的声音引擎),希望它可能已经解决了问题.它没有,同样的问题正在发生.正如您所注意到的,这两者都只是OpenAL的接口.

  • 使用Apple的推荐方法(https://developer.apple.com/library/ios/#codinghowtos/AudioAndVideo/_index.html )将声音文件本身从wav转换为cafs ,尽管我们也使用了-c 1标志来制作他们是单一渠道.

  • 需要明确的是,该bug与通常的声音问题(静音开关,音量)无关.一部分声音继续正常播放,但在设备断电并重新启动之前,它们永远不会再次播放.

如果有人有我的想法,我会非常感谢你的帮助.我在这里试图修复一个我无法重新创建的持久性错误,这似乎是由我无法控制的东西造成的.

audio openal cocos2d-iphone ios

17
推荐指数
1
解决办法
980
查看次数

用于实时应用的音频/ MIDI C++库

正如我在另一个帖子中已经说过的那样,我正在开发一个与音频实时图形编程相关的项目(类似Pure Data,Max/MSP,Reaktor).

我在互联网上做了一天的研究,寻找一个好的(维护的,文档齐全的,高度可移植的)C++库,用于与音频和MIDI的低级交互,但我仍然无法决定一个库.

我正在考虑PortAudio + PortMIDI(PortMedia),但他们缺少文档(特别是PortMIDI),并且没有官方社区,只有邮件列表(我认为论坛社区非常重要!),同样(或最差)的情况RTAudioRTMidi库.

我也尝试一下:

  • STK,我不喜欢它的文件组织.
  • Juce,我认为它对我来说太过分了,我只需要简单的硬件集成
  • OpenAL,我不了解它的架构,它依赖于ASIO/ALSA/CoreAudio ......?我可以访问MIDI端口吗?

所以...我的问题是:你有任何实时音频/ MIDI的经验吗?你推荐我哪个图书馆?

谢谢

c++ audio midi real-time openal

16
推荐指数
2
解决办法
2万
查看次数

来自socket的"Endless"AudioInputStream

我从Socket创建AudioInputStream时遇到问题.以下是重要部分:

public class SoundStream extends Thread {
    private int port;
    private String IP;
    private Socket socket;

    private SoundObject soundObject;

    private OpenAL openAL;
    private Source source;

    private boolean run = true;

    public SoundStream(int port, String IP, SoundObject soundObject) {
        this.soundObject = soundObject;
        this.port = port;
        this.IP = IP;
    }

    public void run() {
        try {
            this.socket = new Socket(this.IP, this.port);
            this.openAL = new OpenAL();
        } catch (Exception e) {
            e.printStackTrace();
        }
        this.mainCycleMethod();
    }

    private void mainCycleMethod() {
        while (run) {
            this.soundObject.blockAndWait(); …
Run Code Online (Sandbox Code Playgroud)

java sockets audio openal audio-streaming

15
推荐指数
1
解决办法
472
查看次数

使用OpenAL录制音频

我一直在比较C++中提供的各种音频库.我想知道,我有点困难从OpenAL开始.有人可以指出一个示例程序如何使用C++中的OpenAL从麦克风录制.

提前致谢!

c++ audio openal

13
推荐指数
2
解决办法
2万
查看次数

iphone低通滤波器

我正在尝试为iphone应用程序实现一个低通滤波器,在那里我录制一个声音,然后它会被轻微闷声播放; 就像声音来自另一个房间.

我已经研究了音频录制和操作的不同选项,并且发现它有点令人困惑......数字信号处理根本不是一个强点.我主要研究OpenAL,在EFX库中有一个专门做我需要的过滤器,但是iPhone上没有包含EFX.有没有办法使用OpenAL为iPhone复制这种行为?是否有其他选项,如音频单元可以提供解决方案?

谢谢你的帮助

编辑:

所以在Tom的回答和链接之后,我想出了我认为正确的实现.但是,我根本没有得到消声效果,而只是减少音量.这是我目前的(汇总)代码:

使用AVAudioRecorder和以下设置记录文件:

[recordSetting setValue :[NSNumber numberWithInt:kAudioFormatLinearPCM] forKey:AVFormatIDKey];
[recordSetting setValue:[NSNumber numberWithFloat:44100] forKey:AVSampleRateKey];
[recordSetting setValue:[NSNumber numberWithInt: 1] forKey:AVNumberOfChannelsKey];

[recordSetting setValue :[NSNumber numberWithInt:16] forKey:AVLinearPCMBitDepthKey];
[recordSetting setValue :[NSNumber numberWithBool:NO] forKey:AVLinearPCMIsBigEndianKey];
[recordSetting setValue :[NSNumber numberWithBool:NO] forKey:AVLinearPCMIsFloatKey];
Run Code Online (Sandbox Code Playgroud)

然后我读入文件并使用以下代码对其进行转换:

// Read in the file using AudioFileOpenURL
AudioFileID fileID = [self openAudioFile:filePath];

// find out how big the actual audio data is
UInt32 fileSize = [self audioFileSize:fileID];

// allocate the memory to hold the file
SInt16 * outData = (SInt16 *)malloc(fileSize); 

// Read …
Run Code Online (Sandbox Code Playgroud)

iphone signal-processing openal filter

13
推荐指数
2
解决办法
5434
查看次数