跳转至内容

Reaktor/教程/应用代数 Reaktor 用户

来自维基教科书,开放世界中的开放书籍

你应该知道什么

[编辑 | 编辑源代码]

代数是使用 Reaktor 时最需要的数学形式。理想情况下,应该了解高中代数,以及至少一些三角函数的周边知识。在 Reaktor 中通常不会遇到需要二次方程之类情况,但总的来说,你应该能够解决单变量线性方程(例如,如果求解 x:)和双变量线性方程(例如,如果求解 y:)。多项式中的项通常不会大于 1 次方(例如,),但你可能会在将线性控制器数据塑造成曲线时遇到它们。

有用公式

[编辑 | 编辑源代码]

将数据从一个范围缩放到另一个范围

[编辑 | 编辑源代码]


  • x = 输入
  • f(x) = 输出
  • m = 输入的最小值
  • M = 输入的最大值
  • m' = 输出的最小值
  • M' = 输出的最大值

例如,假设你有一个 LFO 输出的范围是 -1 到 1。但是,你希望 LFO 输出的范围是 30 到 50。我们可以使用上述公式构建一个函数,将我们的输入从旧范围转换为新范围:我们只需将我们的值代入,然后简化。


注意: 点 ( ) 表示乘法。减去负数与加法相同。

考虑到运算顺序(从优先级最高到最低:括号、指数、乘除、加减),我们看到我们可以通过三个简单的步骤来转换我们的输入

  1. 将 1 加到输入中 -- 这将范围 (-1..1) 转换为 (0..2)。
  2. 将结果乘以 10 -- 这将 (0..2) 的范围缩放到 (0..20)。
  3. 将 30 加到乘法的结果中 -- 这将 (0..20) 的范围转换为 (30..50),我们的目标。

以下是一个更复杂的例子,我们把输入范围为 -300 到 24 的数据转换为范围为 100 到 10000 的数据。


注意: 我们不会化简这个分数,因为 9900 ÷ 324 会得到一个循环小数 (30.55555...)。

因此,我们得到以下步骤:

  1. 将 9900 除以 324 – 这将得到 30.555555...
  2. 将 300 加到输入值 – 这会将范围 (-300..24) 转换为 (0..324)。
  3. 将步骤 1 的结果乘以步骤 2 的结果 – 这会将范围 (0..324) 缩放到 (0..9900)。
  4. 将 100 加到步骤 3 的结果 – 这会将范围 (0..9900) 转换为 (100..10000),这是我们的目标。

如你所见,线性缩放数据就像移动、缩放、再移动一样简单。

MIDI 音高 => 频率 (Hz)

[编辑 | 编辑源代码]


  • = 音高
  • = 频率

频率 (Hz) => MIDI 音高

[编辑 | 编辑源代码]


  • = 频率
  • = 音高
  • = 自然对数

MIDI 音高 A 比 MIDI 音高 B 慢多少倍 (A < B)

[编辑 | 编辑源代码]


  • A = MIDI 音高 A
  • B = MIDI 音高 B
  • f(x) = 输出
华夏公益教科书