准确地将两个音符相互混合
Acurately mixing two notes over each other
我有一个包含许多预录音符(大约 1200 个)的大型音乐库,它们的振幅都一致。
我正在研究将两个音符相互叠加的方法,这样听起来就像两个音符同时演奏的和弦。
不同起音时间的样本:
如您所见,这些样本具有不同的峰值振幅点,这些点需要排列起来才能听起来像人类演奏的和弦。
手动对齐攻击点:
第二张图片显示了通过耳朵手动排列的攻击点,但对于我希望创建许多和弦样本排列的如此大的数据集,这是一种不可行的方法。
我正在考虑一种方法,通过这种方法我可以识别两个音频样本的峰值振幅时间,然后在混合音符以创建和弦时对齐这两个峰值振幅时间。但我不确定如何进行这样的实施。
我正在考虑使用 python 混合解决方案,例如此处 Mixing two audio files together with python 的解决方案,并进行一些调整以将音频样本相互混合。
我正在寻找有关如何识别音频样本中峰值振幅时间的想法,或者如果您对可以实现此想法的其他方式有任何想法,我将非常感兴趣。
万一有人真的对这个问题感兴趣,我已经找到了解决我的问题的方法。有点绕,不过效果很好
为了找到样本的峰值振幅时间,我在这里找到了这个线程:Finding the 'volume' of a .wav at a given time 其中最重要的答案提供了指向名为 AudioFile 的 Scala 库的链接,该库提供了一种通过以下方式查找峰值振幅的方法通过帧缓冲区 windows 中的样本。然而,这个库要求所有文件都采用 .aiff 格式,因此创建了第二个样本库,其中包含所有转换为 .aiff 的旧 .wav 样本。
减少帧缓冲区后 window,我能够确定在哪个帧中找到了最高振幅。将此帧除以音频样本的采样率(已知为 48000),我能够准确地找到峰值振幅的时间。此信息用于创建一个文件,该文件存储样本文件的名称及其峰值振幅时间。
完成后,使用 Pydub 库 http://pydub.com/ 编写了一个 python 脚本,它将两个样本配对,并找出它们的峰值振幅时间的差异 (t)。具有最低峰值振幅时间的样本将从仅包含静音的 .wav 中预先附加长度 (t) 的静音。
然后将这两个样本相互叠加以产生准确混音的和弦!
我有一个包含许多预录音符(大约 1200 个)的大型音乐库,它们的振幅都一致。
我正在研究将两个音符相互叠加的方法,这样听起来就像两个音符同时演奏的和弦。
不同起音时间的样本:
如您所见,这些样本具有不同的峰值振幅点,这些点需要排列起来才能听起来像人类演奏的和弦。
手动对齐攻击点:
第二张图片显示了通过耳朵手动排列的攻击点,但对于我希望创建许多和弦样本排列的如此大的数据集,这是一种不可行的方法。
我正在考虑一种方法,通过这种方法我可以识别两个音频样本的峰值振幅时间,然后在混合音符以创建和弦时对齐这两个峰值振幅时间。但我不确定如何进行这样的实施。
我正在考虑使用 python 混合解决方案,例如此处 Mixing two audio files together with python 的解决方案,并进行一些调整以将音频样本相互混合。
我正在寻找有关如何识别音频样本中峰值振幅时间的想法,或者如果您对可以实现此想法的其他方式有任何想法,我将非常感兴趣。
万一有人真的对这个问题感兴趣,我已经找到了解决我的问题的方法。有点绕,不过效果很好
为了找到样本的峰值振幅时间,我在这里找到了这个线程:Finding the 'volume' of a .wav at a given time 其中最重要的答案提供了指向名为 AudioFile 的 Scala 库的链接,该库提供了一种通过以下方式查找峰值振幅的方法通过帧缓冲区 windows 中的样本。然而,这个库要求所有文件都采用 .aiff 格式,因此创建了第二个样本库,其中包含所有转换为 .aiff 的旧 .wav 样本。
减少帧缓冲区后 window,我能够确定在哪个帧中找到了最高振幅。将此帧除以音频样本的采样率(已知为 48000),我能够准确地找到峰值振幅的时间。此信息用于创建一个文件,该文件存储样本文件的名称及其峰值振幅时间。
完成后,使用 Pydub 库 http://pydub.com/ 编写了一个 python 脚本,它将两个样本配对,并找出它们的峰值振幅时间的差异 (t)。具有最低峰值振幅时间的样本将从仅包含静音的 .wav 中预先附加长度 (t) 的静音。
然后将这两个样本相互叠加以产生准确混音的和弦!