🥦Python和C++音调音符规划和算法

关键词

Python | C++ | 音符 | 声音 | 全音阶 | 表征 | 音高 | 音程 | 质量 | 情态 | 音调 | 模态 | 连音 | 节拍 | 节奏 | 算法 | 时间 | 时长 | 算子 | 旋律 | 和弦 | MIDI | 消息 | 约束规划 | 移位变换 | 重塑 | 合成 | 音色 | 傅里叶 | 歌曲 | 数字声音

🏈指点迷津 | Brief

🎯要点

  1. 🎯音符表征和代码实现:🖊半音位置和索引之间的转换 | 🖊全音阶音调表征 | 🖊全音阶缓存 | 🖊全音阶音高表征。🎯音程表征和代码实现:🖊音程质量 | 🖊计算开始和结束音高。🎯情态和音调和代码实现:🖊创建情态:全音阶调式、五声音阶、八音调态、全音调态、布鲁斯调式 | 🖊构建模态 | 🖊音调表征 | 🖊生成基于音高的音阶。🎯音符时长代码实现:🖊时间线转换算法 | 🖊节拍时间转换算法 | 🖊全音符时间表征 | 🖊位置和时长算子 | 🖊节拍位置 | 🖊拍号和节奏 | 🖊时间转换算法。🎯音符及其连音代码实现:🖊梁和连音定义 | 🖊反转旋律的算法。🎯和弦代码实现:🖊文本规范构建和弦 | 🖊三级和弦 | 🖊次和弦 | 🖊四和弦 。🎯乐器模型代码实现:🖊演奏记号列表。🎯乐谱表征和代码实现:🖊声音中的嵌套音符 | 🖊节奏、节拍和调号序列 | 🖊基于时间的音符搜索方式:红黑树方式、音程树方式 | 🖊事件和观察者模式更新音程树。🎯MIDI 表征和代码实现:🖊MIDI消息定义 | 🖊乐谱和MIDI文件转换算法 | 🖊音符转换为MIDI文件。🎯音调约束规划 | 🎯音调移位变换 | 🎯旋律反转变换和重塑 | 🎯和声转录 | 🎯逆转旋律。

  2. 🎯音乐合成:🖊节拍自定义:🖊使用底鼓、军鼓和踩镲 | 🖊旋律创建:🖊贝多芬《致爱丽丝》混音版 | 🖊和弦创建:🖊观察音色、和声和时间的细微变化 | 🖊音阶、调和旋律构建 | 🖊全音阶和弦 | 🖊傅里叶变换创建音效 | 🖊 基于音符的音效 | 🖊歌曲编辑。

  3. 🎯Python数字声音合成 | 🎯C++数字声音合成

🍇C++多抽头混响音效

混响与延迟类似,都为声音添加了回声。 不过,它的不同之处在于,延迟会添加一个回声(即使该回声会重复出现,每次都会更安静),而混响会在声音中添加多个回声。 基本上,混响使声音听起来像是在教堂、深洞或小浴室中演奏的。 延迟只会让事情听起来有点回声。

该技术非常简单。 您有一个样本缓冲区来保存最后 N 个样本,然后当您处理传入样本时,您添加来自延迟缓冲区的多个样本,每个样本乘以不同的音量(幅度)并将其添加到传入样本中以获得输出样本。 然后,您还将该传出样本放入循环缓冲区中当前索引处的混响缓冲区中。

这是一些关于如何实现它的伪代码:

在下面的示例代码以及上面的混响处理示例中,以下是所使用的拍子的时间和幅度。幅度以 dB 和幅度的形式给出,因此您可以看到您更喜欢的那个。

 Time (ms) dB Amplitude 79250.0562130230.0707230150.1778340230.0707470170.1412532210.0891662130.2238\begin{array}{lll} \text { Time (ms) } & dB & \text { Amplitude } \\ 79 & -25 & 0.0562 \\ 130 & -23 & 0.0707 \\ 230 & -15 & 0.1778 \\ 340 & -23 & 0.0707 \\ 470 & -17 & 0.1412 \\ 532 & -21 & 0.0891 \\ 662 & -13 & 0.2238 \end{array}

通过更多的努力,您可能会想出一些更好的抽头值来使混响听起来更好。下面的示例代码加载 in.wav,使用上面提到的 Tap 对其进行处理,并将其写出为 out.wav。 与往常一样,波形加载代码对于某些波形格式存在一些问题。

Last updated

Was this helpful?