【问题标题】:How to generate a real bass guitar sound either in C/C++ or Java?如何在 C/C++ 或 Java 中生成真正的贝斯吉他声音?
【发布时间】:2012-08-05 05:37:02
【问题描述】:

我在互联网上进行了广泛的研究,因为我需要一种方法来从程序中生成真正的贝司声音(如电贝司吉他)。问题是我一直在寻找 MIDI 方法来产生这种声音,但我不确定这是否正确,实际上我对这个主题知之甚少,这是我第一次尝试与从原始编码产生声音相关的任何事情。我一直在寻找不同的 API 来帮助我,其中大多数都是开源的,以查看它们在做什么,但我发现它们非常复杂,学习曲线非常陡峭,文档很少。我也一直在寻找开源程序,如 tuxguitar,用 java 制作,类似于 GuitarPro,所以我可以看到如何产生低音,我还有一些代码要扫描,所以我可以找到我要找的东西,但是我担心不会是我需要或能够做的。所以总结这一切,我的问题是:有没有一种方法可以通过本机代码或任何 API 产生真正的音乐贝司声音,而不必使用 MIDI 或类似的东西,最好在 c/c++ 或 java 中使用? 非常感谢 PS请原谅任何sintaxis或语言错误,我不是说英语的母语。

【问题讨论】:

  • 您好,您是否尝试实现“效果”来产生类似低音的声音?。
  • 最好买几个 Bose 扬声器。
  • 产生真实声音的最简单方法是录制真实声音并重放。试图从一堆频率中产生声音听起来不太自然。

标签: java c++ audio midi bass


【解决方案1】:

MIDI 只是一个控制协议,与声音本身无关。它通常用于合成器控制(注意开/关消息等),仅此而已。

大多数设备中都有一个合成器,可以在通过 MIDI 控制的同时为您产生声音。这是迄今为止最简单的入门方法,但您会发现大多数普通的通用 MIDI 合成器听起来并不那么好。

现在,就产生您所追求的声音而言,您正在谈论编写自己的合成器。没有魔法。没有捷径可走。这是一项艰苦的工作!通常,合成器会使用一组样本,然后对其进行操作。例如,您将有一个用于弹拨的样本,然后是另一个用于吉他声音的样本。这一切都将在ADSR envelope 上进行控制。即使这样,听起来也不会令人惊奇,因为您只是在近似乐器的一小部分特征。

【讨论】:

    【解决方案2】:

    您可以尝试通过midi控制声卡的内置合成器。但是如果你想要好的声音和乐器质量,我建议你了解VST,它是 Steinbergh 的一项技术,其中包括虚拟乐器 (VSTi) 和效果插件。

    因此,本质上,您可以创建或使用与现有商业和免费 VSTi 和 VST 插件一起使用的 VST 主机应用程序。然后,您可以重复使用听起来很棒的可用软件合成器和乐器仿真。正如 Brad 在他的评论中建议的那样,您可以通过 midi 控制主机应用程序。

    虽然我在这里只宣传 VST,但维基百科链接包含来自不同品牌的其他技术的列表,这些技术正在做同样的事情。但你明白了。

    【讨论】:

    • 绝对没有理由在您的应用程序中支持 VST 以满足他的需求。大多数软合成器都有独立版本,对于没有的,有简单的 VST 主机。他可以学习基本的 MIDI 来控制它们。对他而言,学习使用 VST 完全没有意义。
    • @Brad:你说得对,使用简单的主机应用程序可能会更好。
    • 我修改了我的答案。事实上,我只是想向 OP 指出这些技术的存在。
    猜你喜欢
    • 2012-05-27
    • 2012-09-18
    • 2012-05-28
    • 2018-09-18
    • 1970-01-01
    • 2011-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多