我的场景是这样的:用户与GUI元素交互,音频回调函数读取UI设置的变量,计算样本并将样本存储在缓冲区(或任何数据结构)中,缓冲区然后由UI读取并绘制波形(在绘制循环中每秒60次)。现在,根据我读过的一些资料(Linux音频开发列表中的一个线程,this和this),我需要某种无需锁定即可同时读取和写入的数据结构,或者,我需要某种跨线程通知系统来传递变量。然而,someexamples我见过使用C++std库中的普通vector,它们从一个线程读取并从另一个线程写入,当我运行程序时,它们运行良好。在哪些情况下我需要使用无锁数据结构来进行这种跨线程通信?如果我添加另一个线程(例如MIDI或
我写了一个小程序,它需要检测声级,如果声级高于设置中的设置,我就写它,我通过portaudio完成声音捕获,通过libvorbis压缩,但是程序的一部分没有完成,我坚持下去,我需要要检测原始pcm数据的声级,我对什么是pcm数据知之甚少,也不知道任何音频分析/处理算法,我们是否有现有的c/c++库可以做到这一点?,或者是一些简单的算法可以是否存在以c/c++实现? 最佳答案 这取决于您如何定义“声级”,这可以像检测峰值一样简单,也可以像遵循有关获取响度级别的行业标准/建议一样复杂。PCM数据通常是有符号值流:8位PCM为0x00..
我想播放实时声音以响应用户交互而没有明显的延迟。为了低延迟,我必须发送小块的pcm数据。我在做什么:QAudioFormatformat;format.setSampleRate(22050);format.setChannelCount(1);format.setSampleSize(16);format.setCodec("audio/pcm");format.setByteOrder(QAudioFormat::LittleEndian);format.setSampleType(QAudioFormat::SignedInt);QAudioDeviceInfoinfo(QAud
MFC中有没有简单播放输入错误ping的基本函数调用?我正在寻找类似于AfxMessageBox()调用的东西,它只是播放发生错误时经常听到的ping。 最佳答案 寻找MessageBeep. 关于c++-使用VisualC++和MFC发出ping声音错误,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/1138930/
我使用NI数据采集模块以48ksps的速度“现场”捕获了数Gb的样本数据。我想根据这些数据创建一个WAV文件。我之前使用MATLAB加载数据,将其标准化为16位PCM范围,然后将其写为WAV文件。然而,MATLAB在文件大小方面犹豫不决,因为它在“内存中”执行所有操作。理想情况下,我会使用C++或C(C#是一个选项)执行此操作,或者如果有现成的实用程序,我会使用它。是否有一种简单的方法(即现有库)获取原始PCM缓冲区、指定采样率、位深度并将其打包到WAV文件中?要处理大型数据集,它需要能够以block的形式附加数据,因为不一定可以将整个数据集读入内存。我知道我可以使用格式规范从头开始做
我正在尝试寻找一些好的C++图形/音频库。我曾尝试搜索该站点,但我能找到的唯一答案是“X库是有史以来最好的库”。它没有给我任何关于图书馆的信息,除了一些链接到一些不起眼的网站和不起眼的图书馆,这些网站也几乎没有关于图书馆的信息。我想要的是让人们告诉我每个图书馆的:效率:库是否运行缓慢,内存少?快速内存高?它会导致我的程序有2GB的文件大小吗?可用性:学习这个库需要多长时间,使用这个库有多难?兼容性:它与其他库兼容吗?它在C和C++中都能工作吗?操作系统:它在什么操作系统上运行?不要将自己局限于可移植库。预警:有没有什么东西让你在学习这个库时绊倒了?沟通方法我是列出每个像素,告诉它渲染外
如果您要编写一个程序来获取麦克风输入,将其反转(通过将1设为0并将0设为1将其设置为异相),然后从扬声器中播放,这会消除声音吗?波浪物理学说,如果波峰与波谷对齐,就会发生破坏性干扰,因此如果不“完全”抵消的话,可以在这里利用它来减少噪音。我可以想象,由于反转音频的复杂性,或者甚至因为反转和播放时间太长,以至于声波已经过去,这将无法工作。如果我必须关联一种语言来执行此操作,那么它必须是c++或java(我至少在这两种语言中都胜任)。 最佳答案 是的,它会抵消声音。这或多或少就是环绕声的工作原理:通过减去左/右声道,在第3个扬声器中播放
关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭5年前。Improvethisquestion我还是个初学者,所以这对我来说将是一个相当高级的项目,但我想现在就开始它并将其作为一个持续的事情(我不打算在2周内完成一个成品,甚至也不是构建我将使用的东西,只是一种学习经验)。我想构建一个合成器用作abletonlive9的vst3插件。我认为第一步是制作输出任意波形并响应midi输入的东西(频率变化注意)和一个基本的GUI模板。然后我会尝试引入不同的波形,然后是更多的振荡器和失谐,然后是声音,然后是滤
有谁知道为什么我的程序会导致我的扬声器输出一些柔和的静电?这些程序本身没有一个可以向任何东西输出声音的元素,但是当我运行我的一些程序时,我可以听到我的扬声器发出静电声。当我运行某些程序时,它甚至变得更响亮。移动扬声器也无济于事,所以它一定是从计算机内部发出的。我不确定还应该写下哪些其他细节,因为这看起来很奇怪。它们是用C++和MSVisualC++编写的OpenGL程序。编辑:似乎在无限循环中交换帧缓冲区会产生噪音,因为当我停止交换时我会安静下来...... 最佳答案 :)您会惊讶地发现扬声器输入从硬盘拾取静电。当您执行某些内存/磁
我想知道是否有人知道如何将mp3音频文件转换为ogg音频文件。我知道您可以在线购买一些程序,但我宁愿拥有自己的小应用程序来转换任意数量的文件。 最佳答案 其实很简单。我不会使用WindowsMediaFormatSDK。仅仅是因为它对这项工作来说太过分了。您需要一个MP3解码器和一个OGG编码器以及一些相关的粘合代码(打开文件、设置编解码器、传输原始音频数据等)对于MP3解码器,我建议您查看liblame库或使用此解码库http://www.codeproject.com/KB/audio-video/madlldlib.aspx作