Game Of Life Sequencer Bank

Introduction

The Game of Life Sequencer Bank is based on a game of life sequencer screencast produced by Wesen in 2008. To see the original screencast click here. It is a bank of 6 step or drum sequencers that generate patterns based on the basics of Conway’s Game of Life cellular automaton. Each sequencer operates independently of the others, and can be configured in a variety of ways.

The Game of Life Sequencer Bank is written in Java using the Processing, controlP5 and a customized RWMidi library. It should work wherever Java 1.5 is available (Windows, OS X, Linux), though it has only been tested in Windows and Linux. Any problems should be reported here.

For more info please see the video and example audio at the bottom of the page.

Download

Game of Life Sequencer Bank Beta- WINDOWSOSXLINUX

You can check out the source or report an issue here

Documentation

The application is divided into 7 tabs, one tab for each sequencer, and a global options for options affecting all sequencers.

Sequencer Tabs

screenshot

Under the options readout is a dropdown labeled “Sequencer 1″ containing the following options for the sequencer:

  • Midi Output – Sets the MIDI Output that the sequencer will use. If a MIDI port is unavailable for any reason you will not be able to select it.
  • Channel - Set the MIDI Channel of the sequencer. Options are 1-16.
  • Key – Sets the key of the sequencer. In SINGLE_NOTE SEQ_MODE this is the only note that will play. This options is ignored in DRUM_SEQUENCE mode.
  • Scale – The scale/mode from which notes will be selected.
  • Step Size – The size of each step. Values range from 32nd note triplets to Whole Notes.
  • Update Time – Forces the game to update at an interval independent of the sequencer speed. Use this option to generate patterns more quickly. Values range from 32nd note triplets to Whole Notes.
  • Drum Map – The Drum Map to use. The IMPULSE map uses the note values native the Ableton Live’s Impulse drum machine. The ALL_KEYS map starts at C4 and uses each subsequent note until the number of columns is exhausted.
  • Seq Mode – The mode of the sequencer. Modes are as follows:DRUM_SEQUENCE – Steps column at a time t the speed selected in the TIME_BASE option. Outputs the note values of the active notes in that column. Notes are selected based on the row and which drum map was used.STEP_SEQUENCE – Steps cell at a time, left to right top to bottom at the speed selected in the TIME_BASE option. Outputs a midi note for each on cell. Notes are selected based on an algorithm using the key, scale, octave and range.ORIGINAL - Outputs not based on the original Wesen setup. The game is updated at the interval selected in the the TIME_BASE option, and outputs are sent for ALL active cells. Best used with monophonic synths.SINGLE_NOTE – Acts as the step sequencer, but will only output the note selected in the KEY option.

To the left of the sequencer there are several buttons controlling playback.

  • Play – Starts playback of all sequencers.
  • Stop – Stops playback of all sequencers.
  • Tempo – Sets the playback tempo of all sequencers

To the right of the sequencer you have the following options:

  • Cell Matrix – The cell matrix itself is an adjustable 32 x 32 grid of cells that represent on or off states. The game is played in the grid, and the patterns generated are played in various ways depending on the Seq Mode (see Sequencer Options). Clicking on a cell will toggle its on or off state.
  • Active - Toggle representing the on/off state of the sequencer. A sequencer that is turned off will still step, it will just not output any notes.
  • Kill Notes – When this toggle is activated, only one note will play at a time, the last note that the step sequencer saw as on.
  • Random - This button will generate a random pattern in the cell matrix. Clicking multiple times will turn on additional cells.
  • Clear - This button will clear all cells in the Cell Matrix
  • Columns - Change the number of columns in the cell matrix. The maximum number of columns is 32.
  • Rows - Change the number of rows in the cell matrix. The maximum number of rows is 32.
  • Octave - Change the starting octave value of the notes that are generated. Default is 3. Max is 8.
  • Range - Change the octave range when randomizing notes. Default and maximum are 3.
  • Velocity - The velocity of generated notes will reside randomly in the range represented by this slider. The slider has two ends so that notes can be created in any velocity range between 0 and 127.

Options Tab

screenshot2 The following options apply to all sequencers.

  • Midi Sync Port – Which port to use for incoming sync. Has no effect if sync mode is set to ‘internal’
  • Sync Mode – Selects whether to use internal or external sync.

Known Issues

    Performance Problems – its a pretty hefty program, and I’m working on scaling down some of the loops to use fewer cycles. It gets a little better with each release.

Other posts on this topic

20 thoughts on “Game Of Life Sequencer Bank”

  1. Hi Grant,

    Enjoy the website and your work, so thanks! Came across your site trying to find info on syncing processing to a sequencer – i’ve been dabbling with processing (i’m not a programmer btw) and doing similar things with Rwmidi was wondering if your modified version of the library is available at all?

    Thanks,

    Julio

  2. love this!!! just one suggestion: allow a greater than 32×32 grid so you can implement a “Gosper glider gun” pattern, which needs a minimum of 36 cells to operate. otherwise this ROCKS!!!!  :-)

    1. Ha! I didn’t know about the Gosper Gun! I think next revision I make I’ll just increase it to 64. I’ve been meaning to do a version 2.0 with a swing UI instead of controlUI. I should have some extra screen real estate to fit more cells.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>