Max:数据结构和可能性

17mDataStructuresAndProbability.maxpat
17mDataStructuresAndProbability.maxpat

1. #1:在patcher第一次打开的时候,灰色框(itable物件)内布满了随机的值,这是一组基于XY坐标的数据结构图,滑动横向slider物件(X轴)的同时,纵向slider会显示它相应的Y轴坐标。点击旁边两个信息框,第一个当你X滑动到50的时候,Y会显示为80,100和20那组数据同理。你可以点击并拖动鼠标在itable内画下一组数据结构,如果你想画直线,那么同时按下shift键。

2. A、B、C:使用uzi物件产生itable内所有的点(由send和receive物件实现数据传递)。按下A的按钮,则输出一组X=Y的点;按下B的按钮,则反过来,输入值由0~127转为127~0;按下C的按钮,则产生一组随机值。

3. A:uzi物件可以产生与其引数一样多的bang信息,此例中,uzi 128将产生128次bang。为了保持抓取当前bang的数字,uzi物件最右边的输出口会产生一个计数器(从1开始)─ 这个输出被我们用于创建itable物件的索引。在本例中,这个计数器递减1(因此它将从0开始,这也是itable物件范围的第一个值),并被输出为XY轴的值。B例同理,只是反过来而已,它的计算由“!-”物件实现,它的运用:X !-127 = 127 – X。

4. C:使用了random物件创造一组随机值。这里,使用了swap物件(交换它收到的左、右边的值)以颠倒这一组值,因此random物件输出的值被用于Y而不是X。

5. #2:左右抹动slider,你可以在itable上看到抹动的痕迹,这个直方图(Histogram)由histo物件生成,它可以在将收到的数字在itable物件上记录并显示为一个直方图。你可以通过回车键(ASCII 13)清除histo物件和itable物件的数据。子patch─dodrawing里trigger物件复习:t,i,b分别是trigger, int和bang的缩写。

6. D、E:分别将1000次bang到的由0~128的random和drunk值send给histo物件后传输显示至itable物件上。重复点击它们的按钮,我们可以看到random的分布曲线很稳定,而drunk的分布曲线则有更多的隆起。

7. F、G:分别使用minimum和maximum物件从两组random值中选择输出最小和最大值给histo物件。

8. H:取得三个随机数相加后的平均值,然后传递给histo物件,它在itable物件上显示为一个铃形的曲线,因为三个随机数平均值倾向位于数列的中间。这是一个简单的Gaussian分布。

9. 结论:很多不同的程序依靠创造将一组输入转变为一组输出功能的能力。在之前的学习中,我们了解了scale物件如何为我们做这样的事情。但是,如果我们希望手动改变数值的分布,或者运用一个公式来实现数据转化,我们就需要运用一个更复杂的系统。在这一课中,我们看到了table/itable物件完美的实现了这一目的,同时给我们制造或者手动绘制一个转化功能的能力。运用histo物件,我们同样认识到如何创建可用于常规随机技术的分布曲线类型。这些曲线可以同时用来创造或引导出一个我们想要的结果。

本例内新物件:
table:储存并图形化编辑一组数列
itable:位于patcher窗口内的一个table
uzi:发送一组确定数目的bang信息
swap:将两个整数的顺序调换
histo:为收到的数字创建一个直方图
minimum:输出一组数列里最小的数
maximum:输出一组数列最大的数

Be Sociable, Share!

发表评论

电子邮件地址不会被公开。 必填项已用*标注

This site uses Akismet to reduce spam. Learn how your comment data is processed.