我有一个Pure Data补丁,它读取一些MIDI文件并对它们进行分析,然后创建一个包含一些值的表。我需要提取该表的MIN和MAX值,然后使用它们来设置KNOB对象的范围。例如,让我们说在分析结果表明表中的最小值和最大值是3和29.现在我必须给这个值作为最小和最大范围的KNOB对象。这可能吗?我知道您可以更改属性的范围,但表中的值每次都会有所不同,因此我需要根据从表中获得的值自动设置KNOB的范围。
在这种情况下,表在第一个位置上始终为0,因此补丁始终将此0视为最小值。我该如何忽略这个0值?我使用对象list-minmax来计算表中的最小值和最大值。
答案 0 :(得分:3)
要以算法方式定义knob
对象的范围,您可以向其发送消息range <min> <max>
:
对于在第一个位置始终为0的表,我不明白为什么会这样。您可以在表格中的任何索引处获得任何值。也许你不知道在Pd中,表的第一个索引是0,所以如果你从索引1开始向它写入值,那么索引0将具有默认值0。
答案 1 :(得分:0)
你也可以在默认范围内使用[旋钮](例如0..1
或0..127
),然后对数字应用一些scalilng偏移量来获得你想要的范围:
e.g。以下将输出-2
(左侧旋钮)和-5
之间的值:
[knob]
|
[/ 127]
|
[* -3]
|
[- 2]
|
[print]
这样做的好处是你可以看到补丁中的逻辑,而不是有一些黑盒子(在[旋钮]里面为你做了所有的魔术。 它还可以很容易地应用非线性。