钢琴声音的跳动和两级衰减

Posted

技术标签:

【中文标题】钢琴声音的跳动和两级衰减【英文标题】:Beating and two-stage decay of the piano sound 【发布时间】:2011-11-15 16:57:00 【问题描述】:

我正在研究数学建模的钢琴合成器。现在我正在使用基于模态的方法,其中声音是由指数衰减的正弦曲线(谐波)的总和形成的。

现在我可以计算正弦曲线的频率(当然要考虑不谐性)。对于初始幅度值,我使用的是从真实钢琴样本中获得的数据,因为它现在更容易。我不关心阶段只是喷射。

我主要关心的是衰减率。为了模拟跳动和两级衰减,我使用了大约相同频率的 2 或 3 个指数(取决于特定音符的弦数)。

对于 3 弦理论的情况,其中一个指数衰减得更快,两个指数衰减速度大致相同,但由于频率略有不同,它们会产生跳动。

该方法在文献中有描述,但没有给出获取实际值的算法。

目前我使用的是我自己创建的简单公式,它们根本不基于任何物理,但经过大量试验和错误后产生了不错的声音。

我的问题是:有没有一种方法可以基于更物理的方法来计算这些衰减率?

关键时刻 - 方法应该在合成本身发生之前产生衰减率的值,因此基于构建系统的方法以及重现此行为的反馈对我不起作用。

【问题讨论】:

如果我正确理解了您的问题:您将(“简单地”)合成一个敲击多个(建模)字符串的敲击 - 每个字符串相对于彼此几乎不会失调(像一架真正的钢琴)。所以...而不是尝试对 3 个字符串的乘积进行建模(在其所有复杂性中),只需对每个字符串进行建模并组合结果。 这行不通。 3 个具有相同衰减率的“弦”加在一起不会产生两级衰减。这不是物理学在这里的工作方式,字符串以非常复杂的方式耦合。所以我要么需要了解如何建立适当的耦合字符串数学模型,要么只需要使用该模型的计算结果。 好的 - 我不熟悉你提到的理论/点燃。我只是想指出,这种效果(部分)是由于不同频率的声音的总和以及它们如何相互抵消/加强而被感知的。祝你好运 - 有趣的主题。 【参考方案1】:

如果您使用多个重叠模式(带有轻微失谐)合成您的弦乐分音,并且您以相同的相位开始您的分音,您自然会得到 2 阶段衰减 - 首先因为您的分音同步而响亮,然后是由于分音不同步而导致的快速衰减。

【讨论】:

是的,问题是我不需要任何殴打,我需要非常特殊的殴打。这可以通过正确计算失谐来实现。

以上是关于钢琴声音的跳动和两级衰减的主要内容,如果未能解决你的问题,请参考以下文章

使用 AVAudioPlayer 播放带有起音/延音(循环)/衰减的声音的最佳方式

Music21 Python 库将只输出钢琴声音

如何在Android中制作可变长度的声音

硬件实现声音信号压缩

[UE4]声音系统概述

在 Xcode(声音)中保持和释放?