Soviet Life Sequencer
About:
Soviet Life Sequencer (SLS) is a patchable (aka 'codebendable') game module by paper kettle.
Soviet Life Sequencer uses patch points to open the classic game mechanic where stackable tetromino blocks fall and accumulate. It also transforms this system into an instrument for building step sequencer patterns that are remixable by Conway's Game Of Life.
Tetrominos (ie: pieces made of four blocks) fall, and settle into the board. Using the OSC patch point addresses, you can move, rotate, and change the falling tetrominos, control the rate at which they fall, and even engulf them before they reach the bottom of the board.
Additionally, each falling tetromino contains a trigger block for the built-in step sequencer. These triggers (which are slightly darker in color than other blocks) accumulate on the board as tetromino pieces fall, creating sequencer patterns. As soon as the program begins, the step sequencer starts walking left to right, one column at a time, looking for trigger blocks. If the sequencer finds a trigger block, it sends out a value corresponding to the block's height on the board. The values are mapped over a 0.0 to 1.0 range (where the bottom of the board corresponds to 0.0, and the top to 1.0).
Furthermore, the blocks and trigger patterns on the board can be remixed using Conway's Game Of Life. The Conway algorithm runs over the entire board, removing and adding blocks according to the rules of this classic cellular automata. There is also a 'remix mode.' If this mode is enabled, the Conway algorithm will also shuffle the positions of the trigger blocks on the board, effectively remixing the step sequence pattern. (How that works: If a trigger block is removed from the board, it gets put into a queue. When Conway goes to add a new block to the board, it will draw from this queue, placing old trigger blocks in different locations.)
Thus, Soviet Life Sequencer doesn't just open this classic game mechanic via patch points - it also transforms the system into a pattern generator by incorporating a step sequencer, and offers the ability to remix said patterns using a cellular automata algorithm.
It also features various color styles for the board (some include ghostly traces left by Conway's Game of Life), and the option to color the blocks that Conway adds (though the classic Conway black is available too).
Please review the list of Inputs and Outputs for full documentation on this module's capabilities.
Press the 'o' key to toggle an OSC port settings window.
Tips: The step sequencer is one of the more interesting and dynamic data outputs in this one. Try patching it into the pitch of a synthesizer, other games, or back into other parameters of SLS itself!
Soviet Life Sequencer (version 0.8) is released under a Creative Commons BY-SA-NC 3.0 license.
How To Use:
Soviet Life Sequencer is software with a notion of "patch points." To control the system, send values between 0.0 and 1.0 to the OSC addresses corresponding to its Inputs. Additionally, Soviet Life Sequencer sends data out on the OSC addresses corresponding to its Outputs, which can then be patched into other software (or even back into Soviet Life Sequencer itself).
The lowest value sent/listened for is 0.0 and the highest value sent/listened for is 1.0
Using these ranges, Soviet Life Sequencer has a few different types of inputs and outputs:
-
Continuous (Uses all values between 0.0 and 1.0)
-
Trigger (Inputs of this type listen for 1.0 value and ignore all others, and Outputs of this type send a 1.0 when a specified event happens)
-
Toggle Switch (1.0 value is used for the 'on' position, while the 0.0 is used for the 'off' position)
Because Soviet Life Sequencer uses the these (extremely simple) standardized values (where are defined in illucia Signal Standard Version 1.0), it can be patched to communicate with any other software that supports the same standard of data.
Patching is the practice of routing information between (or even within) systems. I also refer to this as routing, connecting, and "codebending." This program uses OSC (http://www.opensoundcontrol.org) to implement patch points in software. For more information, visit the Codebending FAQ
Inputs:
These are the OSC addresses for Soviet Life Sequencer's input patch points.
-
Address: /SLS/SetFallSpeed
Description: Set the rate at which the tetromino pieces fall.
Kind of signal to send to this address: Continuous
-
Address: /SLS/RotateClockwise
Description: Rotates the falling piece, clockwise.
Kind of signal to send to this address: Trigger
-
Address: /SLS/RotateCounterClockwise
Description: Rotates the falling piece, counter clockwise.
Kind of signal to send to this address: Trigger
-
Address: /SLS/MoveLeft
Description: Moves the falling piece left by one cell.
Kind of signal to send to this address: Trigger
-
Address: /SLS/MoveRight
Description: Moves the falling piece right by one cell.
Kind of signal to send to this address: Trigger
-
Address: /SLS/EngulfFallingPiece
Description: Engulfs the currently falling tetromino into the board. Use this to settle pieces before they collide with the bottom of the board.
Kind of signal to send to this address: Trigger
-
Address: /SLS/ChangeFallingPiece
Description: Removes the current falling piece and spawns a new one. Good for getting rid of pesky shapes.
Kind of signal to send to this address: Trigger
-
Address: /SLS/SetSequencerSpeed
Description: Set the rate of the sequencer (how fast it steps from one column to the next).
Kind of signal to send to this address: Continuous
-
Address: /SLS/SetSequencerFirstStep
Description: Set the column that the sequencer uses as its first step. This lets you modify the sequencer's length from its head.
Kind of signal to send to this address: Continuous
-
Address: /SLS/SetSequencerLastStep
Description: Set the column that the sequencer uses as its last step. This lets you modify the sequencer's length from its tail.
Kind of signal to send to this address: Continuous
-
Address: /SLS/AdvanceSequencerOneStep
Description: Manually advances the sequencer one step.
Kind of signal to send to this address: Trigger
-
Address: /SLS/ToggleConway
Description: Turns Conway's Game of Life algorithm on and off.
Kind of signal to send to this address: Toggle Switch
-
Address: /SLS/ToggleConwayRemixer
Description: Turns Conway's Game of Life remixing on and off. If on, Conway will reshuffle sequencer trigger patterns. If off, Conway will remove trigger blocks as it iterates, but will not add any new ones.
Kind of signal to send to this address: Toggle Switch
-
Address: /SLS/SetConwaySpeed
Description: Sets the rate of how often Conway's Game of Life algorithm iterates across all the cells in the board.
Kind of signal to send to this address: Continuous
-
Address: /SLS/ToggleConwayColorEater
Description: Turns 'ColorEater' seeting on and off. If on, blocks added via Conway's Game of Life will be colored to match of recently removed blocks. If off, all blocks added by Conway's Game of Life will be black.
Kind of signal to send to this address: Toggle Switch
-
Address: /SLS/ChangeGraphics
Description: Iterates through different graphics modes. Some include ghost background patterns of cleared/dead blocks.
Kind of signal to send to this address: Trigger
Outputs:
These are the OSC addresses for Soviet Life Sequencer's output patch points.
-
Address: /SLS/SequencerValue
Description: A sequencer walks left to right across the board's columns looking for trigger blocks that have been placed by falling four-pieces. When the sequencer finds a trigger block, it sends a value on this address, between 0.0 and 1.0, depending on the vertical position of the block. Sent out every time the sequencer steps onto a column with trigger blocks. NOTE: Messages sent on this address can contain multiple values per message. If the sequencer finds multiple trigger blocks in a given column, it sends out a list of values. For all practical purposes, this output can be treated the same as any other - just retrieve a single Float value from the OSC message. Additionally, you can check for extra values contained in the message. In a future update, I might standardize a protocol for lists of data in illuciaSignalStandard, but I'm avoiding this now for the sake of broader simplicity.
Kind of signal this address sends out: Continuous
-
Address: /SLS/SequencerAdvancedAStep
Description: The sequencer advanced a single step (useful for generating a pulse clock from the sequencer's speed).
Kind of signal this address sends out: Trigger
-
Address: /SLS/RowCleared
Description: A row was cleared (every column in a row had a block in it, so that row was removed from the board).
Kind of signal this address sends out: Trigger
-
Address: /SLS/PieceCollidedWithAWall
Description: The falling piece hit the left or right wall of the board.
Kind of signal this address sends out: Trigger
-
Address: /SLS/PieceMovedDown
Description: The falling piece moved down one step. This can be used to transmute the fall rate into a trigger clock/metronome
Kind of signal this address sends out: Trigger
-
Address: /SLS/PieceSettled
Description: The falling piece settled after colliding with the bottom of the board.
Kind of signal this address sends out: Trigger
-
Address: /SLS/GameInitialized
Description: Sends a trigger when the game begins (can be useful for initializing values in a patch).
Kind of signal this address sends out: Trigger
Ports:
Use these ports when routing Soviet Life Sequencer's input and output OSC addresses
- Default Input (port that Soviet Life Sequencer listens on): 8802
- Default Output (port that Soviet Life Sequencer sends on): 8803 (via 127.0.0.1 aka localhost)
"Why?!?" / Mission Statement:
Some of the things I aspire to do:
- Explore! Play!
- Ask and provoke questions.
- Transform game mechanics into abstract control structures and modular building blocks.
- Explode systems, unravel software mythologies, open new possibilities.
- Treat systems as play, and games as expressive instruments with unique voices.
Soviet Life Sequencer (version: 0.8) documentation was generated using Soviet Life Sequencer.illuciamodule
illuciaMarkupVersion: 1.0