Sound of Life Plugin
Close
This is a short demo of a few settings within the plugin, connected to some Spitfire Labs instruments to show the different possibilities of the MIDI out.

Project Description

The goal of this project is to make a MIDI Plugin that connects the principles of John Conway's 'Game of Life' with sound.

I thought this would be a fun contender for a MIDI Plugin, as it allows users to experiment with the Game of Life as a source for movement in the tones created, but also allows them to connect it to whichever MIDI instrument or output that they want.

The plugin shows an 8x8 grid of cells, the cells can be either 'on' or 'off'. They can be switched by using the mouse the randomise button, and then generations (which affect the state of all of the cells) can be triggered which obey the Game of Life's rules (checking the number of 'on' neighbours that a cell has in order to determine whether it should be on or off in the next generation). Each cell in the grid is assigned a MIDI note number, and when the cell turns on it sends a note on message, and when the cell turns off it sends a note off message.

In order to make the grid activity more lively, I've set it up so that the grid is effectively stitched together at all sides - so that the cells on the right most side are considered directly next to the cells on the left most side and the top is considered next to the bottom as well. This avoids the issue of the cells simply 'crawling' off the grid and making no more sound. Since the sides are stitched together, the activity is more concentrated and famous perpetual patterns in the Game of Life such as the glider are actually perpetual rather than just moving until they are off the screen .

A gif of the Sound of Life plugin. It shows the grid changing according to the rules of the Game of Life, firstly with the famous Glider preset which is a known pattern that will 
              go on forever in the game of life, and then with the user interacting with the mouse and randomising the grid.


The user is given control for:
  • Auto Mode - when on, the generations trigger at a set frequency, when off they have to be manually triggered by the user.
  • Interval - the frequency at which the next generations trigger when the plugin is in 'Auto' mode.
  • Tempo Sync - when this is on and the plugin is in 'Auto' mode, the generations will be triggered by the beats of the DAWs tempo.
  • Velocity - this sets the velocity of the MIDI notes. Planning to develop this to a range setting where note velocities will be set randomly from a range
  • Scale Mapping - by default, the cells in the grid are mapped to MIDI notes chromatically starting from C, so all standard notes will be covered within the total range. However in testing I found that mapping the grid to scale tones opens the plugin up to many more musical applications, so this setting allows the user to map the notes to either a major or minor scale as well as the chromatic scale. The user can also pick the starting tone of the scale.
The preset dropdown at the top of the plugin purposefully only saves the grid state to the preset. This way users can swap between presets on the go whilst triggering generations without worrying about settings like velocity or the interval changing. You can view the code and fork the repo yourself on my GitHub.

Downloads

To download this plugin, you can visit its itch.io page where you can download the plugin for VST3 and Audio Unit formats.