đŸ”ŖProbable Beats

Generative Composition in Max

To begin, I created a mind map to brainstorm my generative music system logic. Changes were made once I started to work in Max. I decided to create a playlist-based system that contains several loops to create a composition. These loops would also contain several variations to generate multiple versions of the composition. The basic types I created targeted different layers usual in a composition: Melody, Harmony, Bass, and Drums. Once I created a loop library to fit my needs, I decided that a transport type system provided the information I needed to run my generative logic. I used several counters along custom-built functions and metro objects to calculate BPM, track Measures, track Beat in Measure, and track Absolute Time passed after starting the generator. Using these 3 streams of information I was able to begin building the two generators.

Rule Based – The Rule based generator uses random object to randomly choose a version of my loops in a stack. This random chosen number is also passed on to the second generator for later use. The overall flow is driven by the rule of measure number. Logic: If the score has reached the given measure for the current stack, allow the audio signal to flow through the gate into the master audio stream for the current generator. I am also using score Beat occurrences to control a drunk object routed to an echo effect. I am also triggering a line object to crossfade the section (transition).

Data-Driven – The next part of the composition is data driven. It uses data from the previous generator to select loops in the playlist stack, however the playlist driver moves audio in reverse for serval stacks. Each generation you should hear new solos lines and vocal samples! It is also dependent on score position to start a few playlist objects. Data also drives the line object on the Pendulum effect. The score is eventually stopped by the absolute time of the track with a line object to fade things out nicely.

Overall, the generator creates interesting combinations that vary for each part when clicking start Generator Bang. A strength of my system is that music has a smooth progressive flow. It is also curated for expansion due to the BPM calculator, score position tracking, and playlist use. Other users could easily drag and drop their one sounds to build new generative compositions. A weakness may be that the parameter settings are mostly embedded in functions. To improve user friendliness, I plan to expose functional parameters as inputs neatly in presentation mode.

Last updated