4

我有一个 Pure Data 补丁,它读取一些 MIDI 文件并对它们进行分析,然后创建一个包含一些值的表。我需要提取此表的 MIN 和 MAX 值,然后使用它们来设置 KNOB 对象的范围。例如,假设分析结果表明表格中的最小值和最大值分别为 3 和 29。现在我必须将这些值作为最小值和最大值范围提供给 KNOB 对象。这可能吗?我知道你可以更改属性的范围,但是表格中的值每次都会有所不同,所以我需要根据从表格中获得的值自动设置旋钮的范围。

在那个问题上,表格的第一个位置总是有一个 0,所以补丁总是发现这个 0 是最小值。我怎样才能忽略这个 0 值?我正在使用对象 list-minmax 从表中计算最小值和最大值。

4

2 回答 2

3

要通过算法定义knob对象的范围,您可以向它发送消息range <min> <max>

在此处输入图像描述

至于表的第一个位置总是 0,我不明白为什么会这样。您可以在表中的任何索引处具有任何值。也许你不知道在 Pd 中表的第一个索引是 0,所以如果你从索引 1 开始向它写入值,那么索引 0 将具有默认值 0。

于 2015-06-28T20:41:37.657 回答
0

您还可以在默认范围内使用 [knob](例如0..10..127),然后对数字应用一些缩放偏移以获得您想要的范围:

例如,以下将输出-2(左侧的旋钮)和之间的值-5

[knob]
|
[/ 127]
|
[* -3]
|
[- 2]
|
[print]

这样做的好处是您可以在补丁中看到逻辑,而不是使用一些黑盒(在 [knob] 内部为您完成所有魔法。它还可以轻松应用非线性。

于 2015-07-06T11:02:51.300 回答