【发布时间】:2019-11-20 18:31:22
【问题描述】:
我有两个来自音频源的值(0 到 255 之间)。 我正在尝试显示两种不同的 RGB 颜色,一个被中间分割的矩形,这两个不断变化的数字的颜色,颜色随着数字的变化而变化。
感谢您的帮助,我知道这很简单,但我真的卡住了。
祝你有美好的一天。
【问题讨论】:
标签: max-msp-jitter
我有两个来自音频源的值(0 到 255 之间)。 我正在尝试显示两种不同的 RGB 颜色,一个被中间分割的矩形,这两个不断变化的数字的颜色,颜色随着数字的变化而变化。
感谢您的帮助,我知道这很简单,但我真的卡住了。
祝你有美好的一天。
【问题讨论】:
标签: max-msp-jitter
要显示“分割矩形”,我建议并排使用两个 panel 对象。
您可以使用bgcolor(或bgfillcolor)消息后跟四个数字的列表来控制panel对象的颜色,例如:bgcolor 1 0 0 0.5
这些数字对应于红色、绿色、蓝色和 Alpha(不透明度),并且都在 0–1 的范围内。所以bgcolor 1 0 0 0.5 会将panel 的颜色设置为100% 红色和50% 透明。
在您的情况下,您的值是 0–255,因此您需要将它们缩小到 0–1,然后决定您要如何精确地映射它们。例如,如果您希望每个 panel 在值为 255 时为白色,在值为 0 时为黑色,以及介于两者之间的一些灰色阴影,您可以执行以下操作:
value → [scale 0 255 0. 1.] → (bgcolor $1 $1 $1 1) → [panel]
一些注意事项:
scale的最后两个参数必须是浮点数,否则只会输出整数0和1。
消息框的$1 语法被替换为输入。例如,您可以决定只控制颜色的绿色部分:bgcolor 0 $1 0 1。
如果您的值变化非常频繁,您可能希望限制它更新颜色的频率。大多数屏幕的更新速度不会超过每秒 60 次,因此例如每毫秒更改颜色是一种资源浪费。如果您使用snapshot~ 从音频中获取值,则可以使用17 或更高的参数,将值限制为每秒少于 60 次(1000ms / 60 = 16.6...)。或者,您可以使用 speedlim 对象来限制重新计算颜色的频率。
【讨论】: