【问题标题】:How to write C++ audio processing applications? [closed]如何编写 C++ 音频处理应用程序? [关闭]
【发布时间】:2011-01-24 20:53:24
【问题描述】:

我是一名电子和电信专业的学生,​​即将毕业。我将从事一个涉及我对 DSP、音乐和音频的一般知识的项目。我已经知道所有基本的数学工具以及管理它所需的所有东西,例如 FFT、循环卷积 ecc ecc。

我想学习 C++ 编程基本上有一个原因:它在专业领域非常重要!!!而且我认为它是最常用于编写处理音频的应用程序之一,尤其是在实时处理方面。

好的,在这个简短的介绍之后,我首先想知道,在 c++ 中用于音频处理的最常用的库是哪些?我在网上看的时间更长,但找不到很多工作的东西。 (我在 linux 下使用 eclipse CDT 环境工作)。

然后我想知道是否有好的资源来学习如何编写一些工作代码,例如如何编写一个简单的低通滤波器。基本上现在我不会写实时应用程序,我想从处理 WAV 文件开始,甚至更好的是 MP3 文件,所以基本上是样本向量。

假设现在基本上我想从音频文件中提取波形,并将其保存为缩略图或 PNG 图像。

好的,现在我想这就是我所需要的。

有什么想法、建议、图书馆、书籍、有趣的资源吗?

非常感谢任何形式的回答。

乔瓦尼。

【问题讨论】:

  • 你已经知道哪些编程语言?

标签: c++ linux eclipse waveform audio-processing


【解决方案1】:

查看此link,它将为您提供有关可用(商业和开源)音频编辑软件的一些信息。

一些用c++编写的有趣的开源音频编辑工具,

  1. Audacity
  2. LMMS
  3. Qtractor
  4. Ardour
  5. Rosegarden

用于音频处理的 C++ 库。

  1. SndObj
  2. The Synthesis ToolKit in C++

C++ 代码和链接相关的过滤器和音频处理..

C++ code for Filter,Audio Processing

Code Guru,Low pass filter

【讨论】:

    【解决方案2】:

    我使用BASS 取得了不错的效果(您可以使用 C/C++ API)。

    【讨论】:

    • 听起来不错,但我在存储库中找不到它,如何在我的 karmic koala 发行版上管理它?
    • 啊,对不起,不知怎的,我错过了你在运行 Linux。这里 (un4seen.com/forum/?topic=8682.0) 是您可以下载的官方版本。另外,关于 BASS 的一些注意事项:它不是开源的,并且仅免费用于非商业用途,因此它可能是也可能不是您正在寻找的东西,但值得一试。
    【解决方案3】:

    我建议您使用 C++ 编写自己的 WAVE 文件读取器和写入器,而不依赖外部库。 WAVE 格式相当简单,至少如果您只打算支持最常见的波形文件。

    然后您将可以访问音频数据,您可以在 C++ 中轻松操作这些数据。我建议首先修改音量、通道数来计算音频的统计信息。创建音频波形的 PNG 需要一些更高级的 C++ 技能...

    【讨论】:

    • 好的!很好,一开始可能会很有趣。我怎样才能做到这一点?有教程吗?我知道 WAV 文件的结构,但我不知道如何在 C++ 上打开音频文件,这是正常的文件流打开吗?还是我需要更多的东西?
    • 是普通的文件流。您可以随心所欲地阅读和写作。但我建议您先更好地了解 C++,而不是在不了解该编程语言的一些基础知识的情况下匆忙进入 DSP。您很容易遇到许多问题。你用其他语言编程过吗?
    • 是的,我在 python 上做过,有时也在 java 上做过。我已经使用 matlab 之类的库用 python 编写了一个例程,但这需要太多的内存来绘制波形,因为使用了一个视频库,它可以让视频卡驱动程序工作。我现在只想将波形导出到一个文件中,可能会将两个音频文件混合在一起。
    • 导出波形意味着处理音频信号并将其绘制为位图,然后将位图保存到文件中。所以你的第二个问题是将信号绘制到位图上。我建议您使用一些绘图库,因为自己进行绘图需要大量工作。
    猜你喜欢
    • 2020-09-21
    • 2017-03-19
    • 1970-01-01
    • 1970-01-01
    • 2014-04-01
    • 2010-11-12
    • 1970-01-01
    • 1970-01-01
    • 2011-02-28
    相关资源
    最近更新 更多