DJ 类效果算法的声音拉伸
Sound stretching for DJ like effect algorithm
我正在从事一个项目,包括使用 SoundTouch 和 C# 进行声音拉伸。
作为停止音乐播放时的效果,我想实现一个拉伸算法,就像 DJ 关闭 Vinyl 但 Vinyl 需要几秒钟才能停止旋转,同时音乐仍在播放并且声音会逐渐降低节奏,直到变为零。
我的问题是我真的不知道应该从哪里开始。我考虑过使用某种带有缓和功能的迭代来降低音乐样本块的速度,但对我来说这似乎有点复杂,而且我在弄清楚算法时遇到了问题。
非常感谢任何类型的建议、起点、示例或帮助。
谢谢。
电唱机放慢速度的效果不需要时间延长,因为您不是独立地改变节奏和音调。您只需要通过重新采样音频来减慢播放速度。
在下图中,绿点代表输入音频样本,网格是输出样本时钟,橙色点是生成的输出音频样本。
为了生成输出音频样本,您需要在输入样本值之间进行插值。在图中我使用了线性插值,这是最简单的方法。为了提高音频质量,您可以使用数学上更精确的插值方法,如微分插值(搜索样条绘图技术以获取更多信息),但对于快速减速效果的特定情况,线性插值可能就足够了。
我正在从事一个项目,包括使用 SoundTouch 和 C# 进行声音拉伸。
作为停止音乐播放时的效果,我想实现一个拉伸算法,就像 DJ 关闭 Vinyl 但 Vinyl 需要几秒钟才能停止旋转,同时音乐仍在播放并且声音会逐渐降低节奏,直到变为零。
我的问题是我真的不知道应该从哪里开始。我考虑过使用某种带有缓和功能的迭代来降低音乐样本块的速度,但对我来说这似乎有点复杂,而且我在弄清楚算法时遇到了问题。
非常感谢任何类型的建议、起点、示例或帮助。
谢谢。
电唱机放慢速度的效果不需要时间延长,因为您不是独立地改变节奏和音调。您只需要通过重新采样音频来减慢播放速度。
在下图中,绿点代表输入音频样本,网格是输出样本时钟,橙色点是生成的输出音频样本。
为了生成输出音频样本,您需要在输入样本值之间进行插值。在图中我使用了线性插值,这是最简单的方法。为了提高音频质量,您可以使用数学上更精确的插值方法,如微分插值(搜索样条绘图技术以获取更多信息),但对于快速减速效果的特定情况,线性插值可能就足够了。