我的学位是音频工程,但我对编程很新.我想学习如何在编程环境中使用音频,部分原因是我可以通过有趣的项目更好地学习C++.
首先,C++是否适合这种语言?有什么理由我不应该使用它吗?我听说过Soundfile和其他一些图书馆 - 你会推荐什么?
最后,有没有人知道这个主题的任何好的教程?我已经学习了DSP的基础知识 - 我只想编程它!
编辑:我使用Windows.我想玩实时的东西,有点像Max/MSP,但有更多的控制.
这实际上取决于你想要做什么样的音频工作.如果你想为游戏实现音频,C++肯定是正确的语言.周围有很多图书馆,OpenAL很棒,免费和多平台.我也使用了DirectSound和Fmod.检查出来,这一切都取决于您的需求.
如果你决定使用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
C++是正确的语言吗?这完全取决于背景.如果您需要将代码插入另一个应用程序,框架或其他任何内容,您可能必须使用该框架所用的任何语言.
如果你正在制作自己独立的应用程序?可能不是.我建议你选择另一种语言有几个原因:
C++不适合初学者.如果您的目标是通过这些项目学习编程,请使用更适合"边做边学"的语言.C++充满了陷阱和"似乎有用"的东西,直到有一天它们没有.除此之外,还有一个非常复杂的语法和一些非常复杂的习惯用法和技巧,你必须掌握它们来解决几乎任何其他语言都没有问题的语言怪癖,并且你有很好的漏洞和挫折来源,没多大.
C++没有"音频"的概念.C++没有任何支持录制,处理或播放音频,加载或保存音频文件或其他任何东西.大多数现代语言都具有内置于标准语言中的某种形式的音频支持(至少能够加载和播放mp3文件以及其他此类基础知识).在C++中,所有这些都必须通过第三方库和特定于操作系统的代码来完成.
如果你有真正的语言选择,我会说像Python或C#这样的东西.它们更容易学习,开箱即用的功能更多,并且让你在脚下拍摄更加困难.我不会向那些不是经验丰富的程序员的人推荐C++.
查看Audacity。它是用C ++编写的跨平台(Linux,OS X和Windows)开源音频编辑器。我不知道您的GUI技能处于什么水平,但是处理音频工作的代码应该很容易与wxWidgets(GUI)代码区分开。