19、乐谱渲染为 MIDI 文件及可变动态与速度的实现

乐谱渲染为 MIDI 文件及可变动态与速度的实现

1. 乐谱映射到 MIDI 文件

将乐谱转换为 MIDI 文件的目标是设计一种算法,以便使用数字音频工作站(DAW)或其他 MIDI 应用程序在计算机上播放音乐。这涉及分析乐谱的各个组件如何映射到 MIDI 或 MIDI 文件的概念,具体包括以下几个方面:
- 映射问题
- 如何将声部映射到音轨?
- 如何将乐器映射到通道?
- 如何将音符转换为 MIDI 消息?
- 如何在 MIDI 消息中添加音符速度?
- 解决方案 :将每个乐谱的乐器声部映射到一个通道,每个乐器声部的每个声部都有一个与该乐器声部通道关联的唯一 MIDI 音轨。这样可以将通道数量保持在最低限度,因为 MIDI 只有 16 个通道。
- 音符转换过程 :对于每个乐器声部的每个声部,获取该声部中的所有音符,按起始位置排序,然后将它们转换为与每个声部关联的音轨的 MIDI 消息。

2. 时间转换

MIDI 使用与速度无关的时间测量单位“节拍”(ticks)。MIDI 文件有一个全音符时间转换因子“ticks_per_beat”,通常为 480,表示每四分音符的节拍数。MIDI 速度以每四分音符的微秒数来衡量。
- 全音符时间到 MIDI 节拍的转换 :假设以四分音符为节拍,转换公式为 (T = t\times\frac{1}{4}\times tpb = 4\times t\times tpb),其中 (t) 是全音符时间量,(T

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值