在「生成式艺术和算法创作」系列第二篇中,00 介绍了随机和噪声在算法创作中的应用。
今天我们一起来用 Max/MSP 实现一个半(hu)仙(shuo)算(ba)命(dao)小应用,加深对 Max/MSP 中 random
对象的了解,并且学习如何使用 coll
对象。
名称:麦克斯半仙儿(又名 Random Bullshit)
主要使用的对象:random, coll, route, jit.cellblock, fpic
难度系数:★☆☆☆☆
背景知识
巴纳姆效应(Barnum effect)是 1948 年由心理学家伯特伦·福勒通过试验提出的一种心理学现象,以杂技师巴纳姆的名字命名。巴纳姆效应是一种心理现象,人们会对他们认为是为自己量身订做的一些人格描述,给予高度准确的评价,而这些描述往往十分模糊及普遍,以致能够放诸四海皆准适用于很多人身上。
据说巴纳姆的成功秘诀是:「永远要让每一个观众都感到自己若有所获」。意思如果要让每一个人都能感到对自己个性的描述是准确的,就要去提供一些放之四海而皆准的描述。看手相、算命、占星术及其他伪心理学经常利用这种效应,怎么说都能让你听着有点儿道理。于是有人将十二星座的描述随机排列,发现不同星座的描述基本上可以适用于其他星座。
所以今天我们来实践一下这个想法,看看程序随机给出的星座描述,有没有戳中你 。
任务拆解
这个程序叫麦克斯半仙儿,用户选择自己的星座后,程序给出描述。最后的成果是这样:
首先来拆解需要干的事儿:
- 收集十二星座的简短描述和图标
- 存储文本,方便随机调用
- 12 星座的选择控件
- 显示结果(包括加载默认值)
开始动手前,请复习 Max/MSP 文档中 random, coll, route, jit.cellblock, fpic 等对象的说明。
实现步骤
这个小程序的核心是用 random
对象随机显示 coll
对象中存储的内容。coll
即 collection,用来存储一个列表,列表中每一项都包含 key 和 value(中间用 , 隔开),可以通过 key 获取对应的 value。value 可以是单个值,也可以是以空格分隔的多个值。
在 Max 中新建名字为 blah 的 coll
对象,双击(或者 cmd+点击)打开,填入我们在网上找到的十二星座描述内容,格式如下:
0, 你大方、明朗,全身充滿活力……;
1, 你不但好學、知識豐富,還很……;
2, 嗯,你善於說服別人,還是個……;
……
十二个星座描述的索引是从 0~11,所以在 coll
前用一个 random
对象随机选取其中一个星座的描述,然后从 coll
的左出口输出。因为我们存储的是文本内容(symbol),所以需要用一个 route
对象读取 symbol 内容,并发送到显示区域。
如果不想每次双击打开 coll
查看,可以用 refer 名字
消息连接一个 jit.cellblock
查看 coll
里面的内容。
随机调用的内容准备就绪后,接下来是选择星座的界面:
用 fpic
显示星座图标,在上面覆盖一个 button
对象,将按钮背景设置为透明。然后将按钮连接到 random
对象,读取 coll
的内容。
因为想显示每次选择的星座名称,所以每个按钮连接了一个包含对应星座名称的 message
,点击按钮时可以触发显示在内容区域。其实用 radio group
对象能更好实现,但是它的 UI 不好自定义,就放弃了。
完整的 patch 如下:
后记
程序做好以后,随机生成了几个描述,发到朋友圈,让大家猜这些描述原本对应的是什么星座。
结果是——没有全部猜对的,哈哈哈!应该给撰写星座描述的小编加~
下一期实战见~
- Max/MSP/Jitter 教程 11 - 矩阵混合
- Max/MSP/Jitter 教程 12 - Chromakeying 视频去背景合成
- Max/MSP/Jitter 教程 13 - 列表和矩阵
- Max/MSP/Jitter 教程 14 - 颜色查找表
- Max/MSP/Jitter 教程 15 - 剪刀和胶水
- Max/MSP/Jitter 教程 16 - 矩阵定位
- Max/MSP/Jitter 教程 17 - 图像旋转
- Max/MSP/Jitter 教程18 - 使用已命名的矩阵
- Max/MSP/Jitter 教程19 - 使用已命名矩阵的反馈
友情提示:独自折腾 Max 易患上癔症……不妨入群互助
00 的文集
- HackYourself
- Art & Code
- 产品设计思维训练营
- FabAcademy 创客炼成记
- Make Noise
- 历史大杂烩