The MIDI pond is a generative midi device that spawns roaming circles, which when colliding with each-other will send notes from the C Major scale to a digital midi bus. The Idea of the program is to generate tonally consistent notes and unpredictable intervals. I will outline the evolution of this program with a devlog.
V001 – MIDI ARCHITECTURE
In this first version the goal was just to send midi notes to a digital bus, to be read by Ableton. Notes were sent out with a random() function nested in a collision loop. This was a sloppy integration because every time a collision occurred, a flurry of notes were sent every tick resulting in unusable Midi noise.
V002 – MIDI IMPROVEMENTS
This version was visually identical to the original, but a global hash-set system was added into the collision function, allowing collisions to be tracked more reliably. This way only one note is sent for each collision. The problem now arose with the musicality, The notes being sent were fully random and often dissonant.
V003 – SCALE IMPLEMENTED + QOL FUNCTIONS
Along with the visual overhaul for better readability, The circle class in this version has been improved with a wandering behavior inside of the movement function. This is done by adding a radian direction variable which is randomly nudged to create more natural movement. On top of this,Keyboard controls have been added in this version. 1- spawns circles. 2- removes circles. 3- spawns faster moving, smaller circles. These controls add a layer of interaction to make it easier to use. The note sending function has been improved with an array of note values. The c major scale is now baked into the patch and the notes that are sent are much more audibly pleasing.
V004 – NEW CLASS + NEW MIDI MESSAGE
A square has been added which bounces off of the edges. The X and Y values of the square are being mapped to a midi CC value, the other type of midi data that can be harnessed. These CC values can be assigned to knobs which serve to morph the sound of the connected synth in a dynamic way. To assist with mapping, keys 4 and 5 pause the x and y movement respectively so that mappings can be made in the desired software.
V005 – VISUAL FLARE
In this purely visual update, a polygon class is added with a large number of sides to create a circle. I played with built in perlin noise and sine wave functions to create a wiggling visual effect on the points of the polygon. It is then scaled up until out of view, where it is removed from the arraylist. A side effect of the scaling is the shaking effect wearing off. It gives a cool water drop effect and serves very well as an audio visualizer for the connected synths.
V5 -> Syphon -> TouchDesigner
The final step was making a more captivating visual. I Implemented syphon into my patch, which allowed me to stream straight into TouchDesigner. From there I played around with a feedback node and set up a nice effect. This can be projected, recorded, and modified on the fly.