算法创作实战01 - 巴纳姆效应之随机星座实验

在「生成式艺术和算法创作」系列第二篇中,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+点击)打开,填入我们在网上找到的十二星座描述内容,格式如下:

1
2
3
4
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 易患上癔症……不妨入群互助

👇👇👇

kidult00 wechat
扫码关注 00 的公众号
如果文章帮您节省时间或者解答疑问,不妨打个赏 :)