<p>如果你是说音符间令人不快的咔哒声:那是完全正常的。你知道吗</p>
<p>即使是在专门为生成音乐而设计的编程语言中,如果您简单地将块与在整个持续时间内具有固定振幅的(正弦波)并置,也会出现这种效果。你知道吗</p>
<p>以下是一个音符结束,下一个音符开始时的示意图:</p>
<p><a href="https://i.stack.imgur.com/HHdm5.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/HHdm5.png" alt="enter image description here"/></a></p>
<p>除非第一个节点意外地正好在零处结束,否则您将听到绘制在<code>2</code>处的“跳跃”。你知道吗</p>
<p>为了避免这种情况,您必须实现更好的注释合成。你知道吗</p>
<p>一个简单的解决办法是平稳地增加每个音符的振幅,然后让它平稳地衰减到最后。如果您这样做,两个音符之间的过渡会是什么样子:</p>
<p><a href="https://i.stack.imgur.com/hfxmk.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/hfxmk.png" alt="enter image description here"/></a></p>
<p>此图表由以下公式生成:</p>
<pre><code> if x > 2:
return sin((x-2) * 60) * (1 - exp(-(x-2)**2 / 0.5))
else:
return sin(x * 30) * (1- exp(-(x-2)**2 / 0.5))
</code></pre>
<p>希望您能够认识到导致斜坡上升/衰退的<code>(1 - exp(-(x - tClick) ** 2 / smoothness))</code>“缓和剂”因素。你知道吗</p>
<p>但是你再次看到,音符之间的间隔似乎变大了,如果你试图让不同音符之间的间隔相交,一切都变得相当混乱和复杂,你最好选择一种编程语言或一个已经知道如何正确操作的库。我认为<a href="http://chuck.cs.princeton.edu/release/files/chuck_manual.pdf" rel="nofollow noreferrer">Chuck manual</a>包含了一个相当详细的解释,说明了如何获得越来越好的音调。你知道吗</p>