草庐IT

c++ - 给定一些参数,如何计算音频中的样本数?

给定以下参数:Samplesize:16Channelcount:2Codec:audio/pcmByteorder:littleendianSamplerate:11025Sampletype:signedint如何确定N毫秒录制音频的样本数?我是音频处理的新手。编解码器是PCM,所以我猜它是未压缩的音频。我在Windows7Ultimatex64上使用Qt4.8。 最佳答案 /***Convertsmillisecondstosamplesofbuffer.*@parammsthetimeinmilliseconds*@retu

java - 如何用 Java 或 C 监视/采样输出音频?

最近我一直在尝试对我在计算机上播放的音频进行实时可视化(通过任何任意程序,例如Spotify),但我一直在使用SoundFlower将输出音频传输到假线路中。我想知道是否有一种C/C++或Java原生的方法可以让我以类似的方式捕获发送到我的计算机(我使用的是Mac)线路的任何音频我如何捕获一行(即不断填充PCM数据的示例缓冲区)。除了读取线路输出数据外,我不想模拟SoundFlower的其他功能。 最佳答案 我建议查看WavTap的源代码,SoundFlower的一个分支,它只专注于捕获系统的默认音频输出。SoundFlower和W

c++ - 写入8位PCM正弦波wav文件产生泛音

我用C++编写了一个程序来生成800Hz正弦波的.wav文件(1channel,8位,16000Hz采样,32000个样本,所以2秒长),但是当我在Audacity中播放它或检查它的频谱图时,它有泛音。我认为问题在于将正弦波转换为PCM的算法;我不确定将“零”位移放在哪里,例如127、127.5或128等。chardata[32000];for(intj=0;j生成的文件是这样的:output.wav如有必要,这里是cpp文件:wavwriter.cpp谢谢!编辑2:我已将char更改为uint8_tuint8_tdata[32000];for(intj=0;j避免未定义的行为。同样的

c++ - VST乐器多进多出

我想创建一个具有16个MIDI输入和至少16个音频输出的VST乐器。类似于kontakt或halion的做法。有什么想法吗? 最佳答案 正如@leftaroundabout指出的那样,您不太可能需要16个输入和输出,尤其是对于乐器而言。然而,拥有16个MIDI输入和16个音频输出对于鼓机和其他多轨乐器来说非常普遍,用户可能希望单独处理每个声音。一般来说,音频输入对整个乐器来说并不是特别有用。也就是说,您只需像这样实例化您的插件:MyPlugin::MyPlugin(audioMasterCallbackaudioMaster):Au

c++ FFT节拍检测库?

我目前正在四处寻找一个好的全能节拍检测库/C++源代码,因为我发现使用本教程自己编写的节拍检测代码很难获得令人满意的结果:http://www.gamedev.net/reference/programming/features/beatdetection/如果你想让它与任何类型的音乐一起工作,这尤其困难,所以我想知道是否有可用的东西?谢谢! 最佳答案 您可以试试Aubio:http://aubio.org/它似乎在Windows中不起作用(至少对我来说,今天),但它在OS/X中确实起作用

c++ - FFMPEG Seeking 带来音频伪像

我正在使用ffmpeg实现音频解码器。虽然读取音频甚至搜索已经有效,但我想不出一种在搜索后清除缓冲区的方法,因此当应用程序在搜索后立即开始读取音频时,我没有任何伪影。avcodec_flush_buffers似乎对内部缓冲区没有任何影响。所有解码器(mp3、aac、wma等)都会出现此问题,但PCM/WAV(由于音频未压缩,因此不使用内部缓冲区来保存要解码的数据)。代码片段很简单:av_seek_frame(audioFilePack->avContext,audioFilePack->stream,posInTimeFrame,AVSEEK_FLAG_ANY);avcodec_flu

c++ - 通过 M-Audio ProFire 610 输出声音

我的工作任务是创建一个系统,该系统能够将声音定向到我们声卡的不同输出channel。我们正在使用M-AudioProFire610,具有8channel输出并通过FireWire连接。我们还使用MacMini作为我们的主机服务器,我将在Xcode中工作。这是我正在构建的图表:diagramhttp://img121.imageshack.us/img121/7865/diagramy.png起初我认为Java足以完成这个项目,但后来我发现Java无法将声音推送到声卡默认输出channel以外的channel,因此我决定切换到C++。问题是我是一名Web开发人员,我对这种语言没有任何经验

c++ - 在 Windows 7 中管理应用程序音量

如何检索应用程序AudioSession列表(如在Windows音量混合器中)并手动更改一个应用程序(例如Mozilla)的音量(C++、Delphi)?当您开始说话时,Skype会做同样的事情(降低其他应用程序的音量)。提前致谢! 最佳答案 要枚举AudioSession,您必须使用IAudioSessionManager2界面并调用GetSessionEnumerator方法,这将返回一个IAudioSessionEnumerator接口(interface),您必须从这里调用GetSession返回IAudioSessionC

c++ - C++ 和 Qt 中的声音捕获

我想在cpp中从麦克风捕捉一些声音,以便在Qt应用程序中使用它。所以我正在寻找一个可以轻松集成到Qt4项目中的多平台库。 最佳答案 Qt4.6在QtMultimedia中引入了一套新的低级音频API模块。您可以使用QAudioInput从麦克风捕获原始音频。目前,该API实现了Windows、Mac、Linux(支持PULSE和ALSA音频子系统)。对其他平台的支持,包括移动领域的Symbian,目前正在开发中。 关于c++-C++和Qt中的声音捕获,我们在StackOverflow上找

c++ - 音频关闭时线程很慢

我有2个项目。一个是由C++Builder构建的,没有MFC样式。另一个是VC++MFC11。当我创建一个线程并创建一个循环时——假设这个循环将进度条位置加一——通过使用Sleep(10)从1到100它当然适用于C++Builder和C++MFC。现在,Sleep(10)等待10毫秒。好的。但只有当我打开媒体播放器、Winamp或任何其他能产生“声音”的东西时才会出现问题。如果我关闭所有媒体播放器、winamp和其他声音程序,我的线程会慢于10毫秒。它需要50-100毫秒/每个。如果我打开任何音乐,它会按我的预期正常工作。我不知道为什么会这样。我首先想到我在MFCApp中犯了一个错误,