将 midi 弯音转换为 0 到 4 对数刻度

Posted

技术标签:

【中文标题】将 midi 弯音转换为 0 到 4 对数刻度【英文标题】:Transform midi pitch bend to 0 to 4 logarithmic scale 【发布时间】:2019-12-05 10:05:47 【问题描述】:

我有 midi 弯音消息,需要从 0 到 16368 之间的线性刻度转换为 0.0 到 4.0 之间的对数刻度。

我知道,当弯音为 12432 时,该值需要为 1.0,而在 16368 时,它应该为 4.0

如何快速编写函数以在这两种比例之间进行转换?

【问题讨论】:

弯音范围是 0 到 16383,因为它是用 14 位编码的。但它应该被解释为一个有符号整数,值 = 8192 表示零弯曲。为什么你的最大值是 16368? 这可能与 AudioKit 的类型转换有关,我会调查一下,但这与我的问题本身无关 MIDI 弯音值已经在对数刻度上,所以这个问题没有多大意义。标题也说 0 到 1,但 16368 应该变成 4? 我更新了我的标题。你是什​​么意思弯音值在对数刻度上?当我将推子向上滑动一半时,输出大约是 16368 的一半,所以这表明它正在输出线性? 【参考方案1】:

我不确定你想要达到什么目标。但是对数有一条垂直渐近线。所以,你应该定义横坐标的左右边界。可能的公式之一:

y = 4 * ln( (x + 1) * (e - 1) / 16368)

【讨论】:

以上是关于将 midi 弯音转换为 0 到 4 对数刻度的主要内容,如果未能解决你的问题,请参考以下文章

如何将颜色代码图例从对数刻度转换为实际值?

iOS 中的 MIDI 合成行为不端 WRT 弯音:忽略 LSB

如何在 c 中正确发送 midi 弯音消息?

如何将 Plotly r 中的色标转换为对数标度

在R中标记对数刻度显示

Python:从 type 0 转换为 type 1 midi