2015-06-27 41 views
4

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

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

回答

3

在算法上定义knob对象的范围内,则可以将消息发送range <min> <max>到它:

enter image description here

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

0

你也可以使用[knob ](默认范围为0..10..127),然后应用一些偏移量来获得您想要的范围:

eg -2(在左侧旋钮)和-5之间以下将输出值:

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

这有你看到的逻辑在你的补丁,而不是一些黑盒(内[旋钮],做的好处所有的魔力都适合你。 它也可以很容易地应用非线性。