当前位置:  开发笔记 > 编程语言 > 正文

学习使用C++编写音频

如何解决《学习使用C++编写音频》经验,为你挑选了4个好方法。

我的学位是音频工程,但我对编程很新.我想学习如何在编程环境中使用音频,部分原因是我可以通过有趣的项目更好地学习C++.

首先,C++是否适合这种语言?有什么理由我不应该使用它吗?我听说过Soundfile和其他一些图书馆 - 你会推荐什么?

最后,有没有人知道这个主题的任何好的教程?我已经学习了DSP的基础知识 - 我只想编程它!

编辑:我使用Windows.我想玩实时的东西,有点像Max/MSP,但有更多的控制.



1> 小智..:

这实际上取决于你想要做什么样的音频工作.如果你想为游戏实现音频,C++肯定是正确的语言.周围有很多图书馆,OpenAL很棒,免费和多平台.我也使用了DirectSound和Fmod.检查出来,这一切都取决于您的需求.



2> Emile Vrijda..:

如果你决定使用C++,那么The Synthesis Toolkit值得注意.我将它用于一个学校项目,它非常实用,在斯坦福大学开发,跨平台(win,mac和linux),免费和开源.来自维基百科页面的摘录:

STK仪器类的版本已集成到ChucK,Csound,Real-Time Cmix,Max/MSP(作为PeRColate的一部分)和SuperCollider

他们有很多测试代码+网站上有一些教程来开始他们的库.(但你当然必须知道一些C++)

STK有一些用于读/写音频文件(和matlab文件),实时音频/ midi io,一些基本算法(基于matlab的类似功能的用法),...


另一个明显的选择,也许是最常用的学习/测试dsp东西的环境是Matlab(或自由八度,但我以前没用过).在用C++实现它之前,我有时会在Matlab中测试一些东西.


编辑:在过去的一年里,我一直在使用JUCE,这是一个以C++音频编程为中心的非常酷的C++库,尽管它更倾向于像QT这样的东西.他们的一位开发人员(Timur Doumler)在CppCon 2015上与C++和JUCE进行了很好的实时音频讨论,非常值得一试,即使你最终没有使用JUCE:https://youtu.be/boPEO2auJj4


Matlab是我第一次编码经验!如果我没有在Uni的Matlab教授DSP,我现在可能不会在这里(在Stack Overflow上!).我还有一个旧版本 - 也许我应该先玩一下......好主意.

3> jalf..:

C++是正确的语言吗?这完全取决于背景.如果您需要将代码插入另一个应用程序,框架或其他任何内容,您可能必须使用该框架所用的任何语言.

如果你正在制作自己独立的应用程序?可能不是.我建议你选择另一种语言有几个原因:

C++不适合初学者.如果您的目标是通过这些项目学习编程,请使用更适合"边做边学"的语言.C++充满了陷阱和"似乎有用"的东西,直到有一天它们没有.除此之外,还有一个非常复杂的语法和一些非常复杂的习惯用法和技巧,你必须掌握它们来解决几乎任何其他语言都没有问题的语言怪癖,并且你有很好的漏洞和挫折来源,没多大.

C++没有"音频"的概念.C++没有任何支持录制,处理或播放音频,加载或保存音频文件或其他任何东西.大多数现代语言都具有内置于标准语言中的某种形式的音频支持(至少能够加载和播放mp3文件以及其他此类基础知识).在C++中,所有这些都必须通过第三方库和特定于操作系统的代码来完成.

如果你有真正的语言选择,我会说像Python或C#这样的东西.它们更容易学习,开箱即用的功能更多,并且让你在脚下拍摄更加困难.我不会向那些不是经验丰富的程序员的人推荐C++.


请记住,音频处理通常是一个实时的过程,您必须在几毫秒的时间内完成复杂的(FFT)计算,因为您需要排队音频.如果你太晚了,你会听到明显的文物.

4> Chris Lutz..:

查看Audacity。它是用C ++编写的跨平台(Linux,OS X和Windows)开源音频编辑器。我不知道您的GUI技能处于什么水平,但是处理音频工作的代码应该很容易与wxWidgets(GUI)代码区分开。

推荐阅读
凹凸曼00威威_694
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有