在 Pure Data 中自动设置 KNOB 对象的范围
Set the range of a KNOB object automatically in Pure Data
我有一个 Pure Data 补丁,它读取一些 MIDI 文件并对它们进行分析,然后用一些值创建一个 table。我需要提取此 table 的 MIN 和 MAX 值,然后使用它们来设置 KNOB 对象的范围。例如,假设在分析结果表明 table 的最小值和最大值分别为 3 和 29。现在我必须将这些值作为最小值和最大值范围提供给 KNOB 对象。这可能吗?我知道您可以更改属性的范围,但是 table 中的值每次都会有所不同,因此我需要根据从 table.[=10 中获得的值自动设置旋钮的范围=]
在那个问题上,table 总是在第一个位置有一个 0,所以补丁总是找到这个 0 作为最小值。我怎么能忽略这个 0 值呢?我正在使用对象 list-minmax.
从 table 计算最小值和最大值
要通过算法定义 knob
对象的范围,您可以向它发送消息 range <min> <max>
:
至于table第一位总是0,我不明白为什么会这样。 table 中的任何索引都可以有任何值。也许你不知道在 Pd 中,table 的第一个索引是 0,所以如果你从索引 1 开始向它写入值,那么索引 0 将具有默认值 0.
您也可以在默认范围内使用 [旋钮](例如 0..1
或 0..127
),然后对数字应用一些缩放偏移以获得您想要的范围:
例如以下将输出 -2
(左侧旋钮)和 -5
之间的值:
[knob]
|
[/ 127]
|
[* -3]
|
[- 2]
|
[print]
这样做的好处是您可以在补丁中看到逻辑,而不是有一些黑盒子(在 [旋钮] 内为您完成所有的魔法。
它还可以轻松应用非线性。
我有一个 Pure Data 补丁,它读取一些 MIDI 文件并对它们进行分析,然后用一些值创建一个 table。我需要提取此 table 的 MIN 和 MAX 值,然后使用它们来设置 KNOB 对象的范围。例如,假设在分析结果表明 table 的最小值和最大值分别为 3 和 29。现在我必须将这些值作为最小值和最大值范围提供给 KNOB 对象。这可能吗?我知道您可以更改属性的范围,但是 table 中的值每次都会有所不同,因此我需要根据从 table.[=10 中获得的值自动设置旋钮的范围=]
在那个问题上,table 总是在第一个位置有一个 0,所以补丁总是找到这个 0 作为最小值。我怎么能忽略这个 0 值呢?我正在使用对象 list-minmax.
从 table 计算最小值和最大值要通过算法定义 knob
对象的范围,您可以向它发送消息 range <min> <max>
:
至于table第一位总是0,我不明白为什么会这样。 table 中的任何索引都可以有任何值。也许你不知道在 Pd 中,table 的第一个索引是 0,所以如果你从索引 1 开始向它写入值,那么索引 0 将具有默认值 0.
您也可以在默认范围内使用 [旋钮](例如 0..1
或 0..127
),然后对数字应用一些缩放偏移以获得您想要的范围:
例如以下将输出 -2
(左侧旋钮)和 -5
之间的值:
[knob]
|
[/ 127]
|
[* -3]
|
[- 2]
|
[print]
这样做的好处是您可以在补丁中看到逻辑,而不是有一些黑盒子(在 [旋钮] 内为您完成所有的魔法。 它还可以轻松应用非线性。