标签: openal

在OpenAL中播放声音时收到通知

我在iPhone上使用OpenAL同时播放多个音频样本.

我可以让OpenAL在单个样本播放时通知我吗?

我想避免硬编码样本长度和设置计时器.

iphone audio openal core-audio

6
推荐指数
2
解决办法
8035
查看次数

如何在 iPhone 上使用 OpenAL 播放循环声音

我正在学习有关使用 OpenAL 播放声音的教程。现在一切正常,除了我无法让声音循环播放。我相信我已经使用了AL_LOOPING源代码。现在它只能播放一次,当播放完毕时,应用程序将被阻止(不响应我点击播放按钮)。关于代码有什么问题有什么想法吗?

// start up openAL
// init device and context
-(void)initOpenAL
{
    // Initialization
    mDevice = alcOpenDevice(NULL); // select the "preferred device"
    if (mDevice) {
        // use the device to make a context
        mContext = alcCreateContext(mDevice, NULL);
        // set my context to the currently active one
        alcMakeContextCurrent(mContext);
    }
}


// open the audio file
// returns a big audio ID struct
-(AudioFileID)openAudioFile:(NSString*)filePath
{
    AudioFileID outAFID;
    // use the NSURl instead of a cfurlref cuz it is …
Run Code Online (Sandbox Code Playgroud)

iphone audio loops openal objective-c

5
推荐指数
1
解决办法
4041
查看次数

OpenAL 和 Vista:设备始终是“通用软件”

我正在编写游戏的音频部分,我正在使用 OpenAL。我想使用一些扩展,但测试总是失败:

TRACE: AudioManager - Sound device: 'Generic Software'
TRACE: AudioManager - Enabling OpenAL extensions...
TRACE: AudioManager - Compressor support: NO
TRACE: AudioManager - Reverb support: YES
TRACE: AudioManager - Chorus support: NO
TRACE: AudioManager - Distortion support: NO
TRACE: AudioManager - Echo support: NO
TRACE: AudioManager - Flanger support: NO
TRACE: AudioManager - Frequency shifter support: NO
TRACE: AudioManager - Vocal morpher support: NO
TRACE: AudioManager - Pitch shifter support: NO
TRACE: AudioManager - Ring modulator support: NO
TRACE: …
Run Code Online (Sandbox Code Playgroud)

c++ hardware audio drivers openal

5
推荐指数
1
解决办法
3327
查看次数

适用于iPhone的实时音频循环切换

我正在尝试找到播放音频无缝循环的最佳方式,用户可以在尽可能短的时间内切换到另一个音频,并提供相当数量(30-150)的非常短的循环.OpenAL是否足以满足这一要求,还是需要深入研究音频单元?Apple文档说,对于像仪器这样的实时反馈,Audio Units是正确的选择.

我只想得到社群对此的意见,任何链接和示例项目都将不胜感激.

iphone openal core-audio audiounit

5
推荐指数
1
解决办法
1061
查看次数

OpenAL:alBufferData 返回 AL_INVALID_VALUE,即使输入变量 *看起来* 正常?

因此,我正在构建一个线程 IMA ADPCM 解码器,将音频数据流式传输到 OpenAL (请参阅下面的简短描述),但我遇到了一些麻烦。

我的问题之一是有时我对 alBufferData 的调用:

alBufferData(*bufferID, format, pcmData, sizeInBytes, bitRate);

AL_INVALID_VALUE即使在检查参数时也会返回,例如,如下所示:

bufferID='109770616', format='AL_FORMAT_STEREO16', dataPtr='109754188', sizeInBytes='8164'

有任何线索吗?发生这种情况时,实际播放的声音会有些卡顿,并且错误通常会连续发生约 10 次(在同一声音上)。当我重复启动相同的声音时,通常也会发生这种情况(例如,用轻机枪进行短时间连发射击时......;))

流媒体解码器模块的快速简化浏览

声音的播放方式:

  1. 触发声音播放。
  2. 一个 bufferSize 大小的音频被解码,其余的则排队等待进一步解码。
  3. OpenAL 被触发开始播放声音。

解码/流媒体循环

  1. 对于每个排队等待解码的声音,解码 bufferSize 大小的音频。
  2. 解码后的音频将添加到具有适当 bufferID 的 alBuffer(请参阅上面的调用)中。

audio openal audio-streaming adpcm

5
推荐指数
1
解决办法
5408
查看次数

Openal - alGetError()始终返回AL_INVALID_OPERATION

我在pendrive上运行ubuntu 12.04.我安装了openAL,我的主要是:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <iostream>
#include <al.h> 
#include <alc.h>

// Buffers hold sound data.
ALuint Buffer;
using namespace std;
string ErrorCheck(ALenum error)
{
    if(error == AL_INVALID_NAME)
    {
        return "Invalid name";
    }
    else if(error == AL_INVALID_ENUM)
    {
        return " Invalid enum ";
    }
    else if(error == AL_INVALID_VALUE)
    {
        return " Invalid value ";
    }
    else if(error == AL_INVALID_OPERATION)
    {
        return " Invalid operation ";
    }
    else if(error == AL_OUT_OF_MEMORY)
    {
        return " Out of memory like! …
Run Code Online (Sandbox Code Playgroud)

ubuntu openal

5
推荐指数
1
解决办法
2712
查看次数

如何将音频流式传输到 OpenAL Sources 中?

我刚刚开始使用 OpenAL。

我已成功将 WAV 文件加载到其中,并成功播放它们。这很容易。

现在,我需要能够将音乐流式传输到 OpenAL 中,而不是将整个文件加载到其中。虽然这对于声音效果等有好处,但正如您可能知道的那样,对于音乐来说可能非常危险。

问题是,我似乎无法在谷歌上找到与此相关的任何内容。虽然我找到了一些与流 OGG 文件相关的示例,但我更愿意制作一个支持所有音乐文件的系统。

据我了解,OpenAL 应该为此内置函数。但我找不到他们。

所以,我的问题是,如何将音频流式传输到 OpenAL 的缓冲区中,同时删除已播放的部分并导入尚未播放的部分?

如果这是一个无知的问题,我深表歉意。

java audio openal stream lwjgl

5
推荐指数
1
解决办法
3072
查看次数

OpenAL:alSourcePlay() 会阻塞当前线程吗?

我找不到有关此功能的详细说明。我现在想知道的是:

这个函数会阻塞当前线程吗?或者它只是告诉设备开始异步播放音频并立即返回?

audio openal

5
推荐指数
1
解决办法
1524
查看次数

列出所有打开的设备 AL 不起作用

我发现了一些声称使用 openAL 列出音频的所有输出设备的示例,但是我只能让它们列出 OSX(Yosemite、Maverick)上当前选择的设备。我使用的是 mac 并具有默认声卡(内置输出)以及一个播放设备和一些声音花设备。

(注意:在 Windows 上,它列出了所有设备)

我希望s = (char *)alcGetString(NULL, ALC_ALL_DEVICES_SPECIFIER);至少列出默认卡和声花设备。它什么都不返回。

s = (char *)alcGetString(NULL, ALC_DEVICE_SPECIFIER); 返回当前选择的设备。

也许虚拟设备存在一些问题?但是,从 mac 设置中选择 soundflower 作为默认输出首先使其显示为“内置输出”。我们还尝试使用外部 DAC 并得到相同的行为。

所有可用输出设备的列表:内置输出

所有可用输入设备的列表:内置麦克风

默认输出设备:内置输出

默认输入设备:内置麦克风

...

这是代码:

#ifdef __APPLE__
# include <OpenAL/al.h>
# include <OpenAL/alc.h>
#else
# include <AL/al.h>
# include <AL/alc.h>
# include <AL/alext.h>
#endif

#ifndef AL_VERSION_1_1
# ifdef __APPLE__
#  include <OpenAL/altypes.h>
#  include <OpenAL/alctypes.h>
#else
#  include <AL/altypes.h>
#  include <AL/alctypes.h>
# endif
#endif

#include <stdlib.h>
#include <string.h>
#include …
Run Code Online (Sandbox Code Playgroud)

c++ audio openal

5
推荐指数
0
解决办法
3601
查看次数

Python openAL 3D 声音

我刚刚开始使用 python,正在制作音频操作程序。我正在尝试在我的 python 应用程序中使用 openAL 实现 3D 声音,但我只能让它工作

这是我的 3D 声音代码:

from openal.loaders import load_wav_file
from openal.audio import *

sink = SoundSink()   
listener = SoundListener()
SoundSink.activate(sink)
listener.position = (0, 0, 0)
listener.velocity = (0, 0, 0)
listener.orientation = (0, 0, -1, 0, 1, 0)
source = SoundSource()
wavsound = load_wav_file("test.wav")
source.queue(wavsound)
#SoundSink.play(source)
sink.play(source)
Run Code Online (Sandbox Code Playgroud)

代码执行,但不播放声音

python 3d audio openal

5
推荐指数
1
解决办法
4490
查看次数