简体   繁体   English

用于音频插件的C ++音频库?

[英]Audio library for C++ for audio plugins?

I am interested in creating audio plugins like a compressor or synthesizer VST plugin for example. 我有兴趣创建音频插件,例如压缩器或合成器VST插件。 Though I do want to start with something as simple as a distortion plugin. 虽然我想从一个像失真插件这样简单的东西开始。

And I thought I will use C++ for it. 而且我以为我会用它来使用C ++。

I am wondering which audio library would be a good fit for this case? 我想知道哪个音频库适合这种情况?

My inspirations are the Sonalksis compressor and Reason's Mälstrom for example. 我的灵感是Sonalksis压缩器和Reason的Mälstrom。

I suggest you look at the following resources: 我建议你看看以下资源:

  • Faust generates C++ code (among other languages) from a high level description of dsp processes. Faust从dsp进程的高级描述生成C ++代码(以及其他语言)。 It can output code that uses a number of audio APIs and GUI libraries. 它可以输出使用许多音频API和GUI库的代码。
  • Juce . Juce Already mentioned by @SSteve is a cross platform C++ library with a focus on audio applications. @SSteve已经提到过一个跨平台的C ++库,专注于音频应用程序。
  • STK Is a platform-independent library for sound synthesis and some DSP. STK是一个独立于平台的声音合成库和一些DSP。
  • If you can get your hands on The Audio Programming Book , do it! 如果您能够获得音频编程手册 ,那就去做吧!
  • Another option is to describe your DSP process using PD and then use LibPD to embedd it in your C++ program. 另一个选择是使用PD描述您的DSP过程,然后使用LibPD将其嵌入到您的C ++程序中。 I did this for a musical program that ran on an embedded device, you can see a full tutorial here and the code here . 我这样做是为嵌入式设备上运行一个音乐节目,你可以看到一个完整的教程这里和代码在这里
  • RTAudio and RTMidi has also been very helpful for me. RTAudioRTMidi对我也很有帮助。
  • Another tricky issue regarding audio programming in C++ is inter-thread communication. 关于C ++中的音频编程的另一个棘手问题是线程间通信。 I suggest you read this . 我建议你读这个

Juce不是一个糟糕的开始。

Here are some more that may be of interest: 以下是一些可能感兴趣的内容:

  1. WDL/iPlug, Oli Larkin Edition : This one has a lot of user-contributed routines and controls at the Cockos forum thread for it (a very long thread). WDL / iPlug,Oli Larkin Edition :这个在Cockos论坛帖子中有很多用户贡献的例程和控件(非常长的线程)。 However, if you check the issues, you'll find that the RTAS/AAX plugins have a stability problem on PT; 但是,如果您检查问题,您会发现RTAS / AAX插件在PT上存在稳定性问题; having to do with mutexes. 与互斥量有关。 It boasts a lot of plugins made with it. 它拥有很多用它制作的插件。
  2. RackAFX : This one creates a project template for you, and allows you to define GUI elements. RackAFX :这个为您创建项目模板,并允许您定义GUI元素。 The DSP is all up to you in Win32 C++, but it creates some of the handling code for the GUI. 在Win32 C ++中,DSP完全取决于您,但它为GUI创建了一些处理代码。 Once you have compiled yer plug, it also has a form designer of sorts, to allow you to configure and rearrange the GUI elements. 一旦编译了你的插件,它还有一个表单设计器,允许你配置和重新安排GUI元素。 It doesn't support AAX/RTAS plugins, however. 但是,它不支持AAX / RTAS插件。
  3. SynthEdit : Maybe not one you'd expect to find in a C++ list, but I believe it can emit C++ code - for modifying or for learning. SynthEdit :也许不是你期望在C ++列表中找到的,但我相信它可以发出C ++代码 - 用于修改或学习。 Yes, it does do audio plugins, and not just instruments. 是的,它确实做音频插件,而不仅仅是乐器。
  4. "A Collection of Useful C++ Classes for Digital Signal Processing" is another that implements a lot of useful techniques, and relies on C++ templates a lot; “用于数字信号处理的有用C ++类的集合”是另一个实现了许多有用技术,并且依赖于C ++模板的方法。 but fair warning: Its own programmer thinks its class libraries are hard to read, and horribly designed. 但公平的警告:它自己的程序员认为它的类库难以阅读,而且设计可怕。
  5. Finally, an STK author claims that CLAM, Csound, and SndObj are also currently supported toolkits. 最后, STK作者声称CLAM,Csound和SndObj目前也是受支持的工具包。 Csound is its own language, but CLAM and SndObj have C++ libraries. Csound是它自己的语言,但CLAM和SndObj有C ++库。 I don't know much about them, though. 不过,我对他们了解不多。

BTW: Faust looks interesting, but its website is currently a stub with eg no downloads. BTW:Faust看起来很有趣,但它的网站目前是一个存根,例如没有下载。 However, its SourceForge page is up. 但是,它的SourceForge页面已启动。 On the down side, I don't think it supports VST3 without a third-party hack. 在不利方面,我不认为它没有第三方黑客支持VST3。 On the up side, it is one of the few that supports Linux plugins. 从好的方面来说,它是为数不多的支持Linux插件的产品之一。 FWIW: JUCE charges a lot for a commercial license for just one plugin, and more yet for a license for 2+ commercial plugins. FWIW:JUCE仅针对一个插件为商业许可收取了大量费用,而对于2个以上商业插件的许可则收取更多费用。 It would work fine if the plug is just for you, or is non-profit. 如果插头只适合你,或者是非营利性的,它会正常工作。 It is one of the few mentioned here that supports AAX and RTAS. 它是这里提到的支持AAX和RTAS的少数几个之一。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM