如何在C/C++或Java中生成真正的低音吉他声音
How to generate a real bass guitar sound either in C/C++ or Java?
我一直在互联网上进行广泛的研究,因为我需要一种从程序中生成真实低音的方法(比如电低音吉他)。问题是,我一直在寻找MIDI的方法来产生这种声音,但我不确定这是否是正确的做法,事实上,我对这个主题没有什么了解,这是我第一次尝试从原始编码中产生声音。我一直在研究不同的API来帮助我,其中大多数是开源的,看看它们在做什么,但我发现它们非常复杂,学习曲线非常陡峭,文档很少。我也一直在寻找开源程序,比如用java制造的tuggitate,这与GuitarPro类似,所以我可以看看它是如何产生低音的,我还有一些代码要扫描,这样我就可以找到我想要的东西,但我担心这不是我需要或能够做的。所以,为了结束这一切,我的问题是:有没有一种方法可以通过本地代码或任何API产生真正的低音,没有必要使用MIDI或类似的东西,最好是在c/c++或java中?非常感谢请原谅任何冒犯或语言错误,我不是英语母语。
MIDI只是一个控制协议,与声音本身无关。它通常用于合成器控制(注意开/关消息等等),但仅此而已
大多数设备都有一个合成器,可以在使用MIDI控制的情况下为您产生声音。这是迄今为止最简单的入门方法,但你会发现大多数普通MIDI合成器听起来都不太好。
现在,就产生你想要的声音而言,你正在谈论编写自己的合成器。没有魔法。没有捷径可走。这是一项艰苦的工作!通常,合成器会使用一组样本,然后对它们进行操作。例如,你会有一个弹拨的样本,然后是另一个吉他声的样本。这一切都将在ADSR信封上进行控制。即便如此,这听起来也不会令人惊叹,因为你只接近了乐器的一小部分特征。
您可以尝试通过midi控制声卡的内置合成器。但如果你想要良好的声音和乐器质量,我建议你学习VST,这是Steinbergh的一项技术,包括虚拟乐器(VSTi)和效果插件。
因此,从本质上讲,您可以创建或使用一个VST主机应用程序,该应用程序可以与现有的商业免费VSTi和VST插件一起使用。然后你可以重复使用可用的软件合成器和乐器模拟,这听起来很神奇。正如Brad在评论中所建议的那样,您可以通过midi控制主机应用程序。
虽然我在这里只宣传VST,但维基百科链接包含了来自不同品牌的其他技术的列表,这些技术正在做同样的事情。但你明白了。
- Xaudio2在更改缓冲区或循环时弹出声音
- 如何更改'a'声音?
- 如何收听Windows当前正在播放的声音?
- 如何在 c++ 中循环中使用频率变化的声音?
- 如何在C++中播放声音?
- 波形音频 - waveOutWrite 发出断断续续的声音
- 如何使用 ALSA API 在应用程序中在单声道和立体声之间切换声音输出?
- 有没有办法毫不拖延地播放声音?
- 在不打开应用程序的情况下在MinGW c++中播放声音(.wav)文件
- SFML c ++ 当包含文件内游戏中发生事件时,如何使用铃声函数为我的游戏创建声音类?
- 如何在QT中飞溅之前播放声音?
- 如何根据物体位置和速度,玩家位置和向前矢量计算左耳和右耳的音量?(3D声音)
- 计时器达到零时如何播放声音?
- 如何在主游戏循环中使用 sfml 只播放一次声音
- 避免在暂停时破坏声音
- 每次播放前都会出现超强的 SDK 声音故障
- Qt - 重新实现QIODevice,实时听到我自己的声音
- 使用MinGW播放声音
- 如何为音频应用程序/插件模拟真空管的声音
- 如何在C/C++或Java中生成真正的低音吉他声音