问题标签 [rtaudio]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1314 浏览

c++ - 如何使用 RtAudio 调整音频平移

我使用 Rtaudio 库,我想实现一个可以控制平移的音频程序(例如,将声音从左声道转移到右声道)。

在我的具体情况下,我使用双工模式(您可以在此处找到示例:双工模式)。这意味着我将麦克风输入连接到扬声器输出。

我应该在输出缓冲区上应用过滤器吗?什么样的过滤器?
谁能帮我?

0 投票
1 回答
157 浏览

c++ - 使用 libpd 时如何处理不能被 64 整除的音频缓冲区大小?

libpd 的 API 只允许一次处理 64 个样本帧中的音频。我过去所做的是将音频设备缓冲区大小设置为可被 64 整除的数字。那里没有问题。

现在,我需要制作一个兼容 ASIO 的 Windows 应用程序。我正在使用 RtAudio。问题是,当我使用 RtAudio API 初始化我的 ASIO 声卡(Roland FA-66)时,它会忽略缓冲区大小参数并选择它自己的一个,它不能被 64 整除。

我想到了一个解决方法。这将发生在音频回调函数中:

  1. 检查缓冲区大小是否不能被 64 整除。如果是:
  2. 告诉 libpd 处理大于所需大小的帧数并将其存储在临时缓冲区中。
  3. 使用 memcpy 将适量的帧从临时缓冲区复制到输出缓冲区。
  4. 使用 memcpy 将额外的样本存储在另一个缓冲区(称为额外)中,并在以下对音频回调的调用中使用它们。

我还没有尝试过,但我认为它会起作用。

但是,我想知道是否有“标准”或“众所周知”的程序来处理这个问题。也许有我不知道的警告或提示?

0 投票
1 回答
2505 浏览

c++ - 对 CoInitialize@4 和 CoUninitialize@0 的未定义引用

我已经在项目中构建并包含了 RtAudio 库,但是当我尝试构建项目本身时,出现错误:

第三条错误信息看起来很可疑,这是什么意思?

'.text.unlikely' 部分中的错误重定位地址 0x17

我无法使用与 Qt 捆绑的 MinGW 构建库,因此我使用相同的主要版本 (4.8) 构建它,是否有可能由于使用不同的次要版本的 GCC 构建库而与 Qt 不兼容?

0 投票
1 回答
1759 浏览

c++ - pocketsphinx 简单示例在基本 c 测试中有效,但在包含在 c++ 项目中时无效

我正在尝试使用 pocketsphinx 构建一个项目。我处于早期状态,我首先尝试了单个 main.c 中文档中的一个简单示例,该示例读取文件并检测单词:works。

现在我试图将它包含到我的 c++ SDL 项目中,通过 RtAudio 从麦克风读取音频数据,但它不起作用。

我得到:

麦克风初始化为:

然后在我的 c++ 类中,我有以下受保护的变量:

在构造函数中我这样做(删除了错误检查以获得更好的可读性):

然后,当用户按下空格时,我将 startNextTime_ 和 spaceDown_ 设置为 true,如果他释放空间,我将 stopNextTime_ 设置为 true。

RtAudio 回调调用该类的方法,该方法执行以下操作(我将整个音频数据从用户按下空间复制到释放到缓冲区中,不确定这是否有必要,但我猜不会伤害):

在上面的 pocketsphinx 错误消息之后,我得到了“no hyp”输出。我一遍又一遍地将它与我的小型测试 c 文件进行比较,唯一的区别是 a)我正在从麦克风而不是文件中读取数据,并且 b)它在线程中运行。

有任何想法吗?

编辑:

这是pocketsphinx日志:

0 投票
1 回答
758 浏览

qt - 如何用 QT 编译 rtaudio?

我需要在 Windows 上安装实时进程库“rtaudio-4.1.1”才能在 C++ projet 中使用它。

我会尝试用 QTCreator 编译 MIT 网站给出的库项目。我打开qt项目RTaudio并点击编译,输出为:

关于该主题的一些研究导致我指责链接器配置,但我不太清楚问题是什么以及如何解决它。:'(

所以,我打电话给你给我一些希望!

提前感谢!=)

0 投票
1 回答
530 浏览

c++ - 结合 libsndfile 和 RtAudio?

所以,我一直在试验 RtAudio 和 libsndfile。

任务似乎很简单:

1.) 使用 libsndfile 将一些样本读入缓冲区(使用 SndfileHandle 类和 readf())

2.) 使用 RtAudio 播放样本

但是,由于某种原因,我得到的只是噪音和大量失真......我试图将样本读取为 16 位 PCM(使用短缓冲区),并使用 RTAUDIO_SINT16 格式来播放它。没有成功...事实上,我尝试了许多不同的组合,只有噪音...

我最接近实际播放的是使用 int16_t 作为缓冲区和 RTAUDIO_SINT16。看起来合乎逻辑,对吧?无论如何,它仍然像使用 bitcrusher 一样。尝试了 JACK 和 ALSA,以及缓冲区大小的许多不同组合,但无济于事......

关于如何将这两者结合起来的任何提示?

我使用静态缓冲区可能是一个问题(只是为了实验,当然不会在最终产品中这样做......)?

0 投票
1 回答
412 浏览

android - RtAudio 软件可以在无根用户案例中录制 Android OS 设备的输出音频吗?

我想知道 RtAudio 软件是否可以在无根用户案例中录制 Android OS 设备的输出音频。

RtAudio 位于:http: //www.music.mcgill.ca/~gary/rtaudio/index.html

顺便说一句,我想知道当无根用户使用 RtAudio 软件时,它是否可以录制来自 Android OS 设备的耳机或耳机的输出音频。

我知道 Android 操作系统设备使用 ALSA 或其他定义明确的音频引擎...

谢谢你的帮助。

0 投票
1 回答
1779 浏览

c++ - C++ 未定义对已定义常量的引用

我在 StackOverflow 上阅读了许多关于未定义引用的问题,但似乎没有一个是专门针对在包含的标头中定义的常量的未定义引用。如果我在某处错过了有效的答案,我深表歉意。

我间接使用 MinGW 32bit (4.9.2) 在 Qt (5.5) 中编译 C++。

其中一个包含的文件定义了一个常量,#define但是在构建项目时,编译器会抱怨 .cpp 中存在未定义的引用。

奇怪的是,我尝试测试该常量是否存在于其使用上方的行中,这没有问题。

这是编译器输出:

在 .cpp 的早些时候,有

这又具有

在 mmreg.h 中定义了常量

也许值得注意的是,在 ksmedia.h 中它也被定义了。通过放置(然后删除)#error 指令,我可以看出这个定义已经运行,尽管奇怪的是它没有抛出“重新定义”警告。即似乎没有#ifndef绕过它。

在 .cpp 文件中使用常量

在上面的行中,我通过输入测试了常数

#pragma message: KSDATAFORMAT_SUBTYPE_IEEE_FLOAT这在失败之前成功输出。这是编译器片段

这可能是一个非常愚蠢的错误,但我已经头疼了 2 天了。请问有什么线索吗?

编辑:我已经包含了对 mmreg.h 中的内容的更全面的参考

0 投票
1 回答
373 浏览

c++ - 将 OpenGL 与 RtAudio(或端口音频)同步

我需要使用节拍器将一些绘图与 OpenGL 同步。节拍器是用 libPD 构建的,并用 RtAudio 播放。这两件事都运行良好(分别),但我需要用节拍器的脉冲移动一个物体(一个三角形)。应用程序也必须播放点击。这两个动作必须并行进行(玩和画)。我也应该添加一个midi记录。我的应用程序是 C++。我试图用一个线程运行它,但它不起作用。我试着按照这个解释:如何让我的节拍器在我的程序中录音的同时播放? gui 库是 WxWidgets。线程是通过 Poco::Runnable 以这种方式完成的:

BasicGLpane 是一个 wxGLCanvas。SoundManager类的播放函数如下:

OpenGL绘图方法如下:

线程正在调用以下函数:

之后,这个函数在 Reder 中被调用:

也许我要改变这个对象,现在这并不重要,我的问题是同步。我认为 RtAudio 正在制造问题,因为我成为了 getDeviceCount() 或 RtAudio 的任何其他函数的 EXC_BAD_Acces。这只发生在线程上下文中。使用 Port Audio 会更好吗?很高兴知道我做错了什么,或者是否有其他方法可以解决此问题

0 投票
0 回答
509 浏览

c++ - 如何编译或使用在线下载的库

我不熟悉 C++,但我有一个需要处理它的项目。

我需要使用一个在线可用的库,RtAudio,当然我需要将它导入我的程序中。

我的问题是,我该如何使用/做呢?

这是我对图书馆的理解,我确信我完全错了,但只是为了告诉我我在哪里。

我想我不能使用直接下载的文件,而是将其更改为 lib 文件和 dll 文件(因为我之前使用过其他一些预编译库,它只需要 dll 和 lib 文件[当然也是.h];我知道如何将这些放入 MSVC 2015 并使用它)。

而且我认为为了将库编译成 dll 和 lib 文件,我需要在窗口中的 cmd 中使用以下文件:配置、安装和 makefile.in

我很绝望,因为我之前已经放弃使用另一个库,因为我不知道如何处理这个问题,因此如果有人能提供任何帮助,那就太好了。谢谢。