Sound Wall
Teachers upload audio — the children’s own recordings, narration, music, language exercises — and each file is assigned to a lit hold. Children climb freely; touching a hold plays its sound and animates it. The activity ends when every sound has been found.
The engine owns the assignment of sounds to holds and tells SuperCollider which sound to play on each touch, so SuperCollider keeps no mapping that a restart could lose. The files themselves are ordinary samples: the engine loads them with /sample/load before /mode/load.
Mode id: soundwall · Status: draft · Since: 0.2.0 · Spec: Prototype Use Cases, p. 5
Loading
Section titled “Loading”Load this mode with /mode/load and type tags ssi:
NetAddr("127.0.0.1", 57120).sendMsg('/mode/load', "soundwall", "cut", 3);Init parameters
Section titled “Init parameters”Sent in this exact order, immediately after the mode id.
| # | Name | Type | Range / default | Description |
|---|---|---|---|---|
| 1 | playback | s | overlap, cut, ignoredefault cut | What happens when a hold is touched while another sound is playing. overlap — both play. cut — the old one fades out. ignore — the new touch is silent until the current sound ends. cut is the default because overlapping speech is unintelligible. |
| 2 | maxVoices | i | 1 – 8 default 3 | With overlap, the most sounds that play at once; the oldest is cut when exceeded. Ignored otherwise. |
Configured in the engine
Section titled “Configured in the engine”Settings from the use case that never cross the wire. The engine applies them; SuperCollider does not need them, so they are not in the protocol.
| Setting | |
|---|---|
| Number of active holds | How many holds carry a sound. |
| Assignment method | Random or manual placement of sounds on holds, including the simplified Storytelling arrangement. SuperCollider only ever sees the result. |
| Hold colours and animations | Including the animation while a sound plays. |
Messages
Section titled “Messages”/mode/soundwall/trigger
A hold with a sound was touched; play its sound.
is -
holdIdi int32 hold index · 0 – holdCount−1 - The hold touched. SuperCollider pans the sound to its position.
-
keys string - The sample key assigned to that hold. Must already be loaded.
/mode/soundwall/trigger 64 uploads/3b/maria-poem NetAddr("127.0.0.1", 57120).sendMsg('/mode/soundwall/trigger', 64, "uploads/3b/maria-poem"); osc.Send(Osc.ModeSoundwallTrigger, 64, "uploads/3b/maria-poem"); Plays on the content bus. The playback policy decides what happens to anything already playing.
/mode/soundwall/stopped
A hold's sound has finished or been cut off.
ii -
holdIdi int32 hold index · 0 – holdCount−1 - The hold whose sound stopped.
-
completedi int32 0 | 1 - 1 if it played to the end, 0 if the playback policy cut it off.
/mode/soundwall/stopped 64 1 ~osc[\modeSoundwallStopped].value(64, 1); // handler for Osc.ModeSoundwallStopped Tells the engine when to stop the hold's playing animation. Only SuperCollider knows when a sound really ends, especially under the cut policy. Also sent for an ignored touch, with completed 0, so the engine never leaves an animation running.
/mode/soundwall/complete
Every sound on the wall has been discovered.
i -
soundCounti int32 1 – 1024 - How many sounds were found.
/mode/soundwall/complete 12 NetAddr("127.0.0.1", 57120).sendMsg('/mode/soundwall/complete', 12); osc.Send(Osc.ModeSoundwallComplete, 12); Plays a short celebration on the sfx bus once the current sound has finished.