Description
Algorithmic order and mechanical musicality meet here in a single process. The miniature “Pozytywka r30” uses a one-dimensional cellular automaton by Stephen Wolfram, which – much like old music boxes or player pianos – creates rhythmic structures from sequences of tiny impulses. Each sound is the result of the next computational step, and the whole develops without the possibility of shortcuts or predicting the result. The work transforms a mathematical rule into a musical experience, where order and chance resonate together.
Read more
“Music Box r30” is an expanded version of another interactive miniature, simply titled “r30,” which is an addition to Paweł Janicki’s generative installation of the same name. The installation and the original miniature were created for Janicki’s solo exhibition “Point Nemo” in 2020.
The miniature references the mechanisms of music boxes, player pianos, and other similar musical devices, a combination of instruments and mechanical sequencers, controlled by perforated tapes or “discs,” and programming using punched cards (as is known, the latter have a long, pre-electronic tradition of use in the textile industry, dating back to the turn of the 18th/19th century, as carriers of programs controlling the operation of looms—an invention of Joseph-Marie Jacquard).
“Music Box r30” uses a one-dimensional cellular automaton, one of many developed by Steven Wolfram, a researcher of this type of graphical computational systems and the enfant terrible of modern mathematics. The rules by which the automaton operates can be easily changed by the user (all it takes is a few clicks in the appropriate section of the Miniatura graphical interface), but the underlying set of rules corresponds to Wolfram’s r30 automaton. This is a rather unique mechanism, one Wolfram devotes considerable attention to in his book A New Kind of Science. It is a fully-fledged computational system—it can be used to encode information and perform calculations. In other words, r30 is a Turing Machine—characterized by computational irreducibility—behavior in which, to learn the state of the automaton after a certain number of steps (generations), those steps must simply be executed (there is no computational “shortcut” that would allow us to learn the state of the evolving automaton, e.g., after 10,000 steps if the appropriate calculations are not performed in sequence).
Technical documentation
Parameters passed via URL
- gui 0 or 1; default 1; hides/shows the graphical user interface panel
- size width of the “tape” (number of rows representing successive pitches)
- pointer 0 or 1; default 1; hides/shows the mouse cursor
- worker 0 or 1; default 0; allows blocking the browser’s built-in mechanisms that suspend the program when the window is not visible
- lang en or pl; default en; sets the interface language (additional languages can be added)
- synth 0 or 1; default 1; disables/enables the internal sound generator
- ws address; disabled by default; enables and sets the address (usually localhost:9001) for WebSocket communication (allows external control of Miniature and customization)
- xws address; disabled by default; enables and sets the address (usually ws://localhost:9001) with protocol specification for WebSocket communication (allows external control of Miniature and customization)
- midiinport disabled by default; MIDI port number for external control of Miniature (receiving messages)
- midioutport disabled by default; MIDI port number for external control of Miniature (sending messages)
- tpf “ticks per frame”; sets the “note” length expressed in MIDI clock ticks (useful for synchronization with an advanced MIDI system)
- voices sets the number of voices of the internal synthesizer
- lowestkey expressed in MIDI key numbers, the index of the lowest sound
- invert 0 or 1; default 0; inverts the behavior of empty and filled cells (the “invert” toggle)
- continuous 0 or 1; default 1; enables or disables “staccato” mode [staccato=0] (the “continuous” toggle)
- clock 0 or 1; default 1; disables/enables the internal playback control clock
- vol 0.0 … 1.0; sets the initial instrument volume level (global “vol” slider)
- speed sets the initial playback speed (global “speed” slider)
- tuning C c# D d# E F f# G g# A a# B; binary sequence of 12 numbers (0 or 1), where each indicates whether the corresponding pitch in the octave is enabled
Messages passed via WebSocket
Messages to which Miniature responds
- continuous 0 or >0; default 1; enables/disables “staccato” mode [staccato=0] (the “continuous” toggle)
- invert 0 or >0; default 0; inverts the behavior of empty and filled cells (the “invert” toggle)
- speed sets the playback speed (global “speed” slider)
- vol sets the instrument volume level (global “vol” slider)
- key MIDI key (pitch), status (0/1); (tuning) disables/enables a given MIDI note
- rule binary sequence (0/1) of 8 values, setting the rules for the cellular automaton
- randomize sets random states for the automaton cells
- update forces calculation of a new generation of the cellular automaton – a message useful for building custom synchronization mechanisms between Miniature and other applications or devices
Messages sent by Miniature
- ca note pitch (0 … 127) amp (0.0 … 1.0) disabling/enabling a note of specified pitch and volume (amp 0.0 means disabling the note)
- ca flush signals the closing of all played notes
- ca invert inverts the meaning of empty and filled cells (the “invert” toggle)
- ca continuous disabling/enabling the mode of connecting successive filled cells into continuous notes (the “continuous” toggle)
- ca speed change of normalized playback speed (the “speed” slider)
- ca vol change of normalized instrument volume (global “vol” slider)
- ca key pitch (0 … 127) status (0/1); (tuning) change of key state
- ca rule binary sequence (0/1) of 8 values, returning the rules for the cellular automaton
- ca randomize setting random states for automaton cells (the “speed” slider)
- ca update reports calculation of a new state of the cellular automaton (the message can be used to synchronize Miniature with other applications or devices)
- ca tuning list of 12 binary values representing the tuning
MIDI
Messages to which Miniature responds
- CC 010 on any channel enables/disables “staccato” mode [staccato=0] (the “continuous” toggle)
- CC 011 on any channel inverts the behavior of empty and filled cells (the “invert” toggle)
- CC 012 on any channel sets random states for the automaton cells
- CC 013 on any channel sets the playback speed (global “speed” slider)
- CC 014 on any channel change of normalized instrument volume (global “vol” slider)
- CC 020 on any channel disables/enables the cellular automaton state for case 000
- CC 021 on any channel disables/enables the cellular automaton state for case 001
- CC 022 on any channel disables/enables the cellular automaton state for case 010
- CC 023 on any channel disables/enables the cellular automaton state for case 011
- CC 024 on any channel disables/enables the cellular automaton state for case 100
- CC 025 on any channel disables/enables the cellular automaton state for case 101
- CC 026 on any channel disables/enables the cellular automaton state for case 110
- CC 027 on any channel disables/enables the cellular automaton state for case 111
- CC 030 on any channel (tuning) disables/enables (repeated in octaves within the supported range) the C pitch
- CC 031 on any channel (tuning) disables/enables (repeated in octaves within the supported range) the c# pitch
- CC 032 on any channel (tuning) disables/enables (repeated in octaves within the supported range) the D pitch
- CC 033 on any channel (tuning) disables/enables (repeated in octaves within the supported range) the d# pitch
- CC 034 on any channel (tuning) disables/enables (repeated in octaves within the supported range) the E pitch
- CC 035 on any channel (tuning) disables/enables (repeated in octaves within the supported range) the F pitch
- CC 036 on any channel (tuning) disables/enables (repeated in octaves within the supported range) the f# pitch
- CC 037 on any channel (tuning) disables/enables (repeated in octaves within the supported range) the G pitch
- CC 038 on any channel (tuning) disables/enables (repeated in octaves within the supported range) the g# pitch
- CC 039 on any channel (tuning) disables/enables (repeated in octaves within the supported range) the A pitch
- CC 040 on any channel (tuning) disables/enables (repeated in octaves within the supported range) the a# pitch
- CC 041 on any channel (tuning) disables/enables (repeated in octaves within the supported range) the B pitch
- Note Off on any channel (tuning) disables the cell column corresponding to the MIDI pitch parameter
- Note On on any channel (tuning) enables the cell column corresponding to the MIDI pitch parameter
Messages sent by Miniature
- CC 070 on channel 2 enabling/disabling “staccato” mode [staccato=0] (the “continuous” toggle)
- CC 071 on channel 2 inverts the meaning of empty and filled cells (the “invert” toggle)
- CC 072 on channel 2 reports setting random states for automaton cells (the “randomize” toggle)
- CC 073 on channel 2 change of playback speed (the “speed” slider)
- CC 074 on channel 2 change of instrument volume (global “vol” slider)
- CC 080 on channel 2 cellular automaton state for case 000
- CC 081 on channel 2 cellular automaton state for case 001
- CC 082 on channel 2 cellular automaton state for case 010
- CC 083 on channel 2 cellular automaton state for case 011
- CC 084 on channel 2 cellular automaton state for case 100
- CC 085 on channel 2 cellular automaton state for case 101
- CC 086 on channel 2 cellular automaton state for case 110
- CC 087 on channel 2 cellular automaton state for case 111
- CC 090 on channel 2 (tuning) disabling/enabling (repeated in octaves within the supported range) the C pitch
- CC 091 on channel 2 (tuning) disabling/enabling (repeated in octaves within the supported range) the c# pitch
- CC 092 on channel 2 (tuning) disabling/enabling (repeated in octaves within the supported range) the D pitch
- CC 093 on channel 2 (tuning) disabling/enabling (repeated in octaves within the supported range) the d# pitch
- CC 094 on channel 2 (tuning) disabling/enabling (repeated in octaves within the supported range) the E pitch
- CC 095 on channel 2 (tuning) disabling/enabling (repeated in octaves within the supported range) the F pitch
- CC 096 on channel 2 (tuning) disabling/enabling (repeated in octaves within the supported range) the f# pitch
- CC 097 on channel 2 (tuning) disabling/enabling (repeated in octaves within the supported range) the G pitch
- CC 098 on channel 2 (tuning) disabling/enabling (repeated in octaves within the supported range) the g# pitch
- CC 099 on channel 2 (tuning) disabling/enabling (repeated in octaves within the supported range) the A pitch
- CC 100 on channel 2 (tuning) disabling/enabling (repeated in octaves within the supported range) the a# pitch
- CC 101 on channel 2 (tuning) disabling/enabling (repeated in octaves within the supported range) the B pitch
- Note Off on channel 2 (tuning) reports the state of the cell column corresponding to the MIDI pitch parameter
- Note On on channel 2 (tuning) reports the state of the cell column corresponding to the MIDI pitch parameter
Communication with MaxMSP
Messages to which Miniature responds
- continuous 0 or >0; default 1; enables or disables “staccato” mode [staccato=0] (the “continuous” toggle)
- invert 0 or >0; default 0; inverts the behavior of empty and filled cells (the “invert” toggle)
- speed sets the playback speed (global “speed” slider)
- vol sets the instrument volume level (global “vol” slider)
- key MIDI key (pitch), status (0/1); (tuning) disables/enables a given MIDI note
- rule binary sequence (0/1) of 8 values, setting the rules for the cellular automaton
- randomize sets random states for the automaton cells
- update forces calculation of a new generation of the cellular automaton – a message useful for building custom synchronization mechanisms between Miniature and other applications or devices
Messages sent by Miniature
- ca note pitch (0 … 127) amp (0.0 … 1.0) disabling/enabling a note of specified pitch and volume (amp 0.0 means disabling the note)
- ca flush signals the closing of all played notes
- ca invert inverts the meaning of empty and filled cells (the “invert” toggle)
- ca continuous disabling/enabling the mode of connecting successive filled cells into continuous notes (the “continuous” toggle)
- ca speed change of normalized playback speed (the “speed” slider)
- ca vol change of normalized instrument volume (global “vol” slider)
- ca key pitch (0 … 127) status (0/1); (tuning) change of key state
- ca rule binary sequence (0/1) of 8 values, returning the rules for the cellular automaton
- ca randomize setting random states for automaton cells (the “speed” slider)
- ca update reports calculation of a new state of the cellular automaton (the message can be used to synchronize Miniature with other applications or devices)
- ca tuning list of 12 binary values representing the tuning