SoundMat (8) 交互与声音化设计 Interaction and Sonification

声音化设计是 SoundMat 的灵魂。我们已经想好了产品哲学,设计好了结构、外观、传感器、硬件等等,但那些只是基础,是不完美产生的地方。声音化设计,也就是如何将石头、将观众的触摸按压转换为音乐,符合我们想象中的音乐艺术装置,是最棘手,最容易平庸的。

除此之外就是 LED 交互设计,这部分相对来说是锦上添花的,它起到两个功能,提示与反馈。用户通过 LED 的提示,能够明白当前的音乐进行到哪个阶段了,能够感受到当前音乐的氛围;反馈则是在用户与 SoundMat 交互后,除了听觉反馈,还能够得到 LED 的视觉反馈,这能够增加体验感和艺术感。

现实的硬件不是理想情况,会有误差和不精确的地方。在之前的硬件制造中,我们对整体“放置物品感应”的这部分现实效果有了更充分的了解:

我们将在这个条件下完成交互与声音化设计。

1 生成音乐:自由度与反馈感的矛盾

从设计理念开始,我们就不断强调,交互要简单直观,怎么放置都好听,但是依然能感受到参与感/反馈感。

“怎么放都好听 vs 参与感/反馈感”,这其实是一种矛盾。怎么放都好听意味着变化少,系统介入的成分大,而反馈感是来源于我对整个系统施加了某些影响,这是我控制的,不是系统帮助我的。

所以就有了自由度的两端:

推向极端就很好理解了,自由度高到尽头就是乐器。钢琴、吉他,变化极其丰富但是难上手;自由度低到尽头就是混音器,只是控制不同乐器播放与否,很容易无聊。

一个想法是设计不同模式应对不同场景。设计两种模式:

2 控制思路:调控与生成

这部分讨论音乐装置的两种控制思路。

调控是调整已有音乐的声音参数,例如一段音乐的音量、音色、高低频、速度等等。

生成则是对于每个操作都实时生成元素,例如演奏音符、打击乐、和声、音乐片段等等。

在 SoundMat,生成是绝对的主导。用户不是去调整别人已有的音乐,而是自己创造音乐。

3 交互方式:旋转扫描与音池

对于 SoundMat,有两种交互思路。

旋转扫描:有一根虚拟的指针绕圆心旋转,碰到物体就触发音乐生成。一个圆的循环天然形成了一个 Loop,不同的角度就代表了一个 Loop 内的不同时间。放下石头代表了在乐谱中谱写了一个音乐元素。

音池 Sound Pool:一旦物体放下,就会持续触发对应位置的音乐生成机制;物体拿起,则停止。

4 音乐类型简介

SoundMat (2) Philosophy 产品设计哲学 中有简单讨论过适合 SoundMat 的音乐类型。在这里详细阐述一下我们选用的音乐类型。

Ambient / Soundscape:作为公共艺术装置,使用 Ambient 类音乐可以让它成为可以被注意聆听,也可以被忽略的存在。

这里可大致分为两种,一种是音乐元素,一种是声景元素。音乐元素是有特定音高的,是乐器发出的或是电子合成的,受调性系统约束;声景则是在自然中采集的,是声音片段,不受调性约束。

Lo-Fi:Lo-fi 的特征是温暖的、带有颗粒感和不完美质感的声音,可以是 Loop 为基础的音乐风格,强节奏的,非常适合我们的节奏模式(旋转扫描)。同时,Lo-Fi 能提供很强的沉浸感。

Minimal:生成式极简音乐风格的代表音乐家有 Steve Reich 和 Philip Glass。音乐往往只建立在极简单的音乐元素上,例如几个简单的音符、和弦、动机。一个经典技法是相位渐变 (Phasing)与相位步进(Phase-Shifting),通过对相同音乐片段的不同声部使用不同速度,或在乐曲中改变相位,交织出全新的、错落有致的奇妙节奏,最后又重新同步,形成奇妙的听感。一个经典之作是《拍手音乐》(Clapping Music)

5 Ambient 氛围模式设计:声音的叙事

氛围模式想达到的目标是:它的音乐可以被注意聆听,也可以被忽略。无论上面有多少个石头,音乐总是作为一种氛围存在,不会突兀,也不会空虚,就像为环境提供了一种背景色。

在我们的 Ambient Demo 中,形成了基本的雏形。从内到外代表低频到高频,总共八种音乐元素,不同扇区之间没有区别,同一个圆环上石头的数量可以调控该层的音乐内容。

Demo 中对于八种音乐元素的选择是最基础的,只是用五声音阶的 Drone 音、Pad、合成音符、合成雨声、合成水滴声,听起来确实还行,能达到我们目标的及格线。

但问题是,这太普通了吧!这做出来,一会加个低频,一会响点音符,一会加个鸟叫,然后加点铃铛。我玩完之后会觉得不错,然后呢?

我要的是艺术啊,所以我在想,能不能做一种“叙事的环境”,之前的那些元素没有联系,但如果有个环境叙事,里面有一整套连贯的有逻辑的音乐元素,就不普通了吧?

环境叙事让用户在放石头的过程中慢慢展开一个场景。我最想做的环境叙事就是日本寺院。除此之外,宇宙环境也很适合,因为我们的装置的形状刚好就是一组同心圆环。

环境音乐模式——《京都岚山》

底音

Locus Sonus – Locustream – sound map:yamanashi — yamanakako (Japan)

调性:

C 调五声音阶

Ring 0/Ring1:低音

**Ring 2:中低频

Ring 3:竹林火车

Ring 4:天气,雨、雷

Ring 5:【中高频乐音生成】

Ring 6:旋律片段 Loop

Ring 7:事件

特殊 Pattern:

6 Jam Mode – Lo-Fi Loop

和声和鼓点固定循环播放,只调控不生成。
旋律(包括Bass)采用旋转扫描方式生成。

6.1 节拍

方案拍号和弦进行 Loop 长度每个和弦持续SoundMat 一圈32 扇区分辨率每小节分辨率格数量化后每小节分辨率格数
方案 14/44 小节1 小节4 小节8 分音符88
方案 24/48 小节2 小节(重复一次)8 小节4 分音符44
方案 34/48 小节2 小节(重复一次)2 小节16 分音符168
方案 44/44 小节1 小节2 小节16 分音符168

经过对比,选择方案 3。理由:重复和对比的平衡。触发时机相同→重复,触发音不同→对比。

默认速度暂定为 120bpm. (设计为参数可调)

这样,slice 0-15 是每个和弦的第一小节,slice 16-31 是每个和弦的第二小节。

例子:

第 1 小节 — Slice 0–15

拍位1e&a2e&a3e&a4e&a
Slice0123456789101112131415

第 2 小节 — Slice 16–31

拍位1e&a2e&a3e&a4e&a
Slice16171819202122232425262728293031

0° 即为 slice 0,90° 为 slice 8,180° 为 slice 16

后续有处理量化,详见下文。

6.2 Ring 交互设计

Ring 0/1 无角度,开始和结束控制,以及调控全局 Lo-Fi 效果

将 R0/R1 看作一个整体。R0+R1 全部格压力之和(原始 ADC)决定控制状态;单格 threshold(默认 500)判定该格是否有石头。

部署默认与 Mat 页 Calibration 一致:threshold=500、control_sum_min=250、Lo-Fi sum max 1000(重启恢复默认,不持久化)。

Ring 4-6 旋律音

分为不同乐器

前向连奏(废除,不实现)

将一拍分为一组,一组 4 个触发音。每一格只存 一个触发音,扫线命中某格时,不只响这一格,而是从该格起在组内做随机前向连发(所以扫中一格时可能会有 1-4 个音符响起),各音连奏。

连发不得越过当前组末尾。若同环、同组内、当前格下游还有石头,连发在碰到该石之前提前截止。

实际上,可以将前向连奏设计为参数,即最大连奏数,范围 1-4,1即为不连奏。

每小节旋律量化至 8 个八分音符触发位(两倍量化,二合一,八分音符,奇数slice向下合并到偶数,触发时机也合并至偶数,例如 slice1功能上相当于slice0,触发时机也在 slice0处触发)。

Ring 2/3 Bass 旋律音

Bass 声部同样量化至 8 个触发位(两倍量化,二合一,八分音符量化)。

Ring 命名与定位

Ring角色音色
R7(最外)旋律Marimba
R6旋律Lo-Fi 电钢
R5旋律Lo-Fi 电钢
R4旋律Pad-Pluck
R3BassPluck bass
R2(最内)BASSSub bass

6.3 和声/和弦进行

音高记号

数字 1–7 表示当前 key 音阶的音级(首调,不绑定固定音高)。

升降写在数字后:# 升半音,b 降半音。
八度写在最后:^ 升一八度,_ 降一八度,可叠加(^^ / __)。无八度记号 = 第 4 八度。
顺序固定:数字 → 升降 → 八度,例如 1#^。
null = 和上一个相同。

例(C 大调):

记号实际音
1C4
1#C#4
1^C5
1#^C#5
6__A2
4b_E3

转调:改 manifest 的 [music].key,所有记号自动跟着 key 的根音平移。例:1^ 在 C 调下是 C5,key 改成 B 后变为 B4。整首曲子的旋律、bass、和弦 voicing 一致移调。

序号级数 / 和弦循环
12m9 → 513 → 1maj9 → 69
1B2m9 → 2m9/5, 57b9 → 1maj9 → 16, 1#dim
1C2m9 → 59 → 3m7 → 67

和弦 1 播放音

2m9: 2_ · 4_ · 6_ · 1 · 3
513: 5__ · 2_ · 4_ · 7_ · 3
1maj9: 1_ · 3_ · 5_ · 7_ · 2
69: 6__ · 3_ · 5_ · 7_ · 1#

Prototype 先实现和声 1.

6.4 旋律触发音

设计思路:

1,3 拍相同,都为构成音去掉根音,放到旋律里,相邻和弦同一 Ring 就进链接。
BASS 就用根音。

2,4 拍

和声 1 触发音:

和弦 1:2m9

(2 4 6 1^ 3^)

Ring1&2&3&4&
扇区01234567
R73^1^2^3^3^2^1^6
R61^561^1^563^
R563466432
R443234323
R3 bass4_4_6_6_4_4_6_6_
R2 BASS2_2_2_2_2_2_2_2_

和弦 2:513

(5_ 7_ 2 4 6 1^ 3^)

Ring1&2&3&4&
扇区01234567
R73^1^2^3^3^2^1^5
R675677565
R552355327_
R42312237_1
R3 bass4_4_5_5_4_4_5_5_
R2 BASS5__5__5__5__5__5__5__5_

和弦 3:1maj9

(1 3 5 7 2^)

Ring1&2&3&4&
扇区01234567
R72^71^2^2^1^3^5
R676567653
R552355321
R43213317_1
R3 bass3_3_5_5_3_3_5_5_
R2 BASS1_1_1_1_1_1_1_1_

和弦 4:69

(6_ 1# 3 5 7)

Ring1&2&3&4&
扇区01234567
R71#^2^3^2^1#^2^3^1#^
R663566536_
R552355321#
R4321#2321#3
R3 bass3_3_5_5_3_3_5_5_
R2 BASS6__6__6__6__6__6__6__6__

6.5 鼓组

X = 强击,x = 幽灵音/轻击。

Loop A:空

Loop B

乐器1e&a2e&a3e&a4e&a
KickX
Snare
Hi-hatXXXXXXXX

Loop C

乐器1e&a2e&a3e&a4e&a
KickXX
SnareXX
Hi-hatXXXXXXXX

Loop D

乐器1e&a2e&a3e&a4e&a
KickXxxX
SnareXX
Hi-hatXXXXXxXXXx

两种思路:

  1. 固定遍数
    • 方案 1 节拍(4bar):A×1→B×1→C×2→A×2→D×2→A×2
    • 方案 3 节拍(2bar):A×1→B×1→C×2→A×1→D×1→A×1
  2. 根据物体数量决定 ABCD

我们采用固定遍数,A×1→B×1→C×2→A×1→D×2→A×1

结束之后扫描停、和声/鼓不再推进,须清空 R0/R1 才能重开。

和声与鼓组均实时合成(非采样),同扇区多石力度按 1/√N 衰减。

6.6 Jam LED 方案

108 颗灯等距围成一圈,与 32 扇区旋律格对齐。本文只描述亮灭与颜色,不涉及实现。

布局

颜色(RGB 0–255)

名称RGB用于
白255255255空闲呼吸、扫描尾迹
正红255484812 点卡位 #0
淡红255140140东/南/西卡位 #27 #54 #81
R0100108128传输(预览/命中/标记一般不用)
R114811288传输
R28872210低音
R332188148低音
R448152255旋律
R520072168旋律
R621815848旋律
R725510832旋律

方位卡位

固定 LED #0、#27、#54、#81(北/东/南/西)。呼吸周期约 4.6 s(sin(t×1.35))。

逻辑 ↔ 物理对齐(Mat 页 Calibration,默认):sector_offset=4(S→L 逻辑 sector 旋转)、led_offset=101(灯带物理旋转,在 set_buffer 时统一施加)、wire_slice_mirror=开(列镜像,对齐实物顺时针与软件 CW sector)。LED #0 与 slice 0 通过上述 offset 对齐,不再「未测量」。

模式

优先级自上而下;满足上条即采用,不再落入下条。

播放中

扫描(白)

石头标记(R2–R7)

短效

预览(R2–R7 放石)

扫描命中(播放中扫到石头)

播完态不叠预览;未播放时不产生命中闪。

合成顺序

对每一颗 LED 每帧:先定模式基底 → 再叠预览(若有)→ 再叠命中(若有,与基底取更亮)。卡位在播放与播完时仍按红呼吸规则覆盖同索引其它效果。

音色与效果器表

见 Web Demo

src/soundmat/jam/synths


初版触发音(废除)

节拍1234
和弦2m95131maj969
13 4 6 1^ 3^3 4 6 7 3^2 3 6 7 2^3 5 7 1#^ 2
1&2 1^ 2^ 3^ 4^1 2 5 1^ 4^3 4 7 1^ 3^1# 3 6 2^ 3^
21 4 6 1^ 3^4 5 7 2^ 3^2 5 6 7 2^7_ 4 5 7 1#^
2&2 6 1^ 3^ 4^2 3 5 1^ 4^3 4 7 2^ 3^1# 3 6 1#^ 2^
33 4 6 1^ 3^3 4 6 7 3^2 3 6 7 2^3 5 7 1#^ 2
3&5 6 1^ 6 2^1 3 5 1^ 2^1 2 5 6 1^1# 3 5 6 1#^
43 4 6 1^ 1^7_ 2 4 7 1^7_ 1 3 5 76_ 3 6 1#^ 3^
4&1 3 4 3^ 65_ 1 2 4 51 7_ 2 3 55_ 1# 3 6 1#^

表中每五个数字都对应 ring3-ring7 对应节拍的触发音符