21、音乐节奏、动态与表示的技术解析

音乐节奏、动态与表示的技术解析

1. 可变节奏函数的开发与应用

在开发节奏函数时,需要在两个方面加以注意。首先,函数的取值范围必须是现实合理的,节奏值不能为负数,当然也不能为 0,同时通常不应超过 300,且要以每分钟节拍数(BPM)为有意义的单位。其次,节奏设置要与周围的音乐事件相协调,就像图 11.11 所示,节奏曲线在前后事件之间应实现无缝过渡,虽然可以有跳跃,如使用节奏事件时那样,但必须符合音乐逻辑。

可变节奏给 MIDI 事件生成和时间转换带来了困难,因为节奏在整个音符时间间隔内不会保持固定。为解决这个问题,我们采用“离散化”函数的方法,将函数分解成小片段,在短时间内近似准确的节奏,用静态节奏事件来完善节奏事件序列,替代节奏函数。

具体来说,我们要在规则的离散实时时刻对节奏函数进行采样,并将采样的节奏事件替换事件序列中的节奏函数事件。采样是在离散实时进行的,这意味着:
- 使用实时而非全音符时间进行采样。
- 在节奏函数的全音符时间域上,以小的实时间隔进行采样。

增量采样实时 ∆𝑡 应足够小,以使产生的节奏采样值变化看起来是无缝的,与节奏函数的行为相匹配。读者可以从 ∆𝑡 = 50 毫秒开始,根据需要进行调整。

计算 ∆𝜏 的公式为:
∆𝜏 = 𝑓(𝜏) ∗ ∆𝑡 ∗ 𝑏𝑒𝑎𝑡_𝑑𝑢𝑟𝑎𝑡𝑖𝑜𝑛 / (60 * 1000)

以下是采样节奏函数的代码示例:

def sample_tempo(tempo_function_event, delta_ms, beat_d
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值