web analytics

Max:随机绘制

max10

1. 那个大家伙:
#1:pack物件的七个值分别为:形状左、右、上、下的位置,以及RGB颜色的三个值(0-255间)。一切随机的值均由random物件生成。
#2:与上同理,区别是由于drunk物件的限制作用,所以方块位置及颜色的变化都非常缓慢。
#3:framepoly由于绘制多边形,每一对x/y值代表一个顶点。pack物件内8个值正好给予4对顶点,随机颜色由prepend frpg(foreground RGB)单独生成(在旁边)

2. drunk物件:第一个引数设定随机值的范围,第二个引数设定随机增减数目的范围。

本例内新物件:
random:生成一个随机数字
drunk:在一定变化范围内生成随机数字(Output random numbers in a moving range)

Max:鼠标绘制

max9

1. Window > Clue Window,将打开线索窗口,鼠标悬停会显示你悬停对象的基本信息,这对帮助理解patch(尤其是那些复杂的)非常有帮助。

2. 勾选Options > Segmented Patch Cords将允许我们绘制曲线连接线。但相比之下我更愿意画斜线后,在直线上点击右键选择Route Patch Cords让程序自己生成合适的曲线。

3. 左上角的例子:点击信息框1后改变数字框内数字大小,则结果显示在gate物件的左输出口(输出1);点击信息框2后改变数字框内数字大小,则结果显示在gate物件的右输出口(输出2)。按照说明文档,我自己又添加了3、4号输入、输出口,结果非常完美的分别输出了数据,我感觉这很像一个路由器,或者某种分配器。。

4. 上例正下方的例子:unpack物件分离多个信息框内的数字进入多个数字框,pack物件重组他们并经prepend物件由print物件反应到Max窗口内。

5. unlock这个patch,将鼠标悬停于prepend物件右侧输入口上,可以看到一个蓝色的圆圈,表明这是一个冷输入口(cold inlet),它不产生任何信息;与之相对的,将鼠标悬停于prepend物件左侧输入口上,可以看到一个红色的圆圈,表明这是一个热输入口(hot inlet),它会在接收到信息之后产生输出。也就是说,只有改变左侧数字框内的数字才会产生输出,而改变右边的则不会,你可以自己尝试一下。

6. unpack之后的两个0代表它可以输出两个数字,有多少个0就代表它能输出多少个数字。若需输出小数可以写为0.;如需输出一个符号(一个词),则可以写为s。

7. 跟在prepend之后的“thelist”可以换为任何我们喜欢和易辨别的词组。

8. 右边那个大块头:那块大的空白叫做lcd物件,我们可以在上边用鼠标任意绘制2维图像。同时或分别按下shift和option/alt键在其上拖动鼠标可以绘制出不同的图形,点击上方不同的颜色框,可以改变绘制图案边框的颜色。

9. 分别按下shift和option/alt键在其上拖动鼠标可以绘制出不同的图形,这是由modifiers物件完成的。我们将option/alt的输出乘以2后将它加到shift的输出上,这样做的结果是:单按shift得到值1;单按option/alt得到值2,两个一起按得到值3;如果没有任何modifiers的键被按下,得到值0。这样的信息传送方式非常适于下边gate物件的发挥。

10. 当前鼠标的位置可以由lcd物件的第二个数出口提供,并由unpack物件分离后显示于其下的两个数字框内,同时,这串数字被输出进入了gate物件的右侧数入口内(例子中的红线)。

11. 现在gate物件控制着将会在lcd内产生什么样的图形。在这些环节中鼠标x、y轴的坐标分别通过unpack物件得到,然后绘制出适宜大小的形状。在gate最左边的路线内,坐标轴的值分别被减10、加10后依如下顺序送入pack物件内:x-10 y-10 x+10 y+10,这串数字随后被送入prepend物件内,在这个例子中,我们在四个数字之前发送了framerect命令,四个数字分别代表四边形的左、上、右、下的边界。

12. 其他的两条路线也是同样的原理,frameoval是画椭圆,paintroundrect是画圆角矩形,除了坐标的四个值外,另外两个数字框的参数控制的圆角的圆度。

13. frgb消息框可以定义在lcd里边笔触的颜色。

本例内物件:
gate:将输入转化为精确的输出
pack:将数字和符号结合为一个list
unpack:将一个list打散为单独的信息(message)
prepend:将一个信息(message)置于其他信息最前端
lcd:在patcher窗口内绘图

Max:键盘与鼠标输入

max8

1. 左例:选中最上方checkbox,移动鼠标,连接mousestate物件的四个数字框内数字会随着鼠标的移动和变化,单击鼠标,连接此物件的checkbox将被同时选中。mousestate物件两个绝对位置(物件下方第2、3个输出端口)坐标x、y轴最大值依屏幕分辨率而定,左上角为0、0,右下角为你当前屏幕分辨率。modifier连接的几个checkbox会在你按下Cmd, Control或Option等键的时候被激活。用于过滤无用数据流。

2. 左二例:键盘输入的字母经key物件转换为ASCII值后由number盒子显示为数字,数字再经由itoa物件(可以将整数转化为字母数字符号)转化为字母经print物件返回显示在Max窗口内。尝试键盘上不同的按键,并注意观察Max窗口返回的值。

3. 中例:keyup物件与key物件功能完全一样,除了只有当按下并放开按键后才报告按键信息(report key information)而外。二者配合最有用之处在于,你可以在按下键之后使key物件开启,并在放开键之后用keyup物件使其关闭。

4. 右二例:numkey物件可以记录并累积你输入的数字,并在你按下回车键后输出这串数字。

5. 右例:mousefilter物件:点击鼠标按键后放开,这时才能允许数字或数据通过。用于过滤无用数据流。

6. 下例:跟着帮助文档自己搭建的一个patch,有趣的是*控制那边(右侧按钮),乘以几,速度就是左侧按钮的几分之一。

Max:数字用户界面

07mNumericalUserInterfaces.maxpat
07mNumericalUserInterfaces.maxpat

1. slider是数字信息存储工具。

2. 横向、纵向拖动slider到一定宽度或高度,可以相应将之变为横向或纵向silder。

3. 左侧例子:size数字框限制slider的范围,min限制slider起始的最小值,mult是递增的量,用以扩大当前slider的范围,表现为向右或向左移动slider滑杆时,slider的值根据mult的值递增或递减。

4. 右侧例子:上方数字框为十进制,中左为十六进制(基数-16),中右为midi,注意下方数字框之前并无小三角,这可以显示更长的数字,并且表明它在lock状态下的值是不可编辑的。

5. 通过物件检查器(object inspector)可以改变以上数字物件的属性,在unlock状态下将鼠标悬停于物件左侧后,会出现一个圆形蓝色背景的i,点击它,则可以激活物件检查器,通过它,你还可以改变此物件更多的属性,比如颜色、字体、字体大小等。

6. 你可以尝试着将物件检查器中各种属性拖入一个unlock的patcher中以验证他们的作用。例如左例中size,min,mult等message物件便是由此生成。

Max: 简单数学

max6

(参考文件:06mSimpleMath.maxpat)

1. 点击右边信息框的数字储存这个数字,再点击左边的数字得到计算后结果。如果只点击左边数字而不点击右边的数字,或先点左边数字再点右边数字,则结果仅会显示左边数字。在不点击右边数字的情况下,它的值默认为0(为避免不可能实现的数学表达式,除法和%时默认为1)

2. 能产生bang信息的入口(比如左边的数字)称为热入口(hot inlets),仅能存储信息的入口(比如右边的数字)称为冷入口(cold inlets)。

3. Max中的计算默认基于整数(如例子中第二行第二个例子),若需得到小数结果(浮点),则需使用”+ 0.”告知”+物件”我们需要得到小数(如例子中第二行第三个例子)。

4. 可以使用trigger物件进行强制计算(如例子中第二行第四、五个例子),通过它使右侧入口同样能够输出bang。字母t,b,i,f分别代表trigger的缩写,bang,整数(integer),小数(float)。

5. 例子右下方那个有趣的小patch可以实现一种叫做逆归(recursion)的程序,wiki对于逆归的简单解释是:在计算机编程里,递归指的是一个过程:函数不断引用自身,直到引用的对象已知。它会不断的叠加自身,,额,具体用在什么地方呢?运用你的想象力吧,比如一个计数器?

6. 我自己尝试着做了一个华氏度转摄氏度的小程序(蓝框那堆),然后用mac自带的单位转换widget算了一下,还真没问题~不信你自己算算,第一次尝到一点自动计算的甜头,噢也~