The project was implemented as a modular patch in PlugData, combining MIDI generation and basic synthesis. In order to ensure that the wiring between Logic and PlugData was functional I needed to utilize the most simplistic method possible. Complicated algorithms caused the wiring to crash which will be expanded on in the challenges section.
Clock & Tempo Timing
A tempo controlled clock was implemented using metro, with BPM converted into miliseconds. The step counter provides a repeating structure that drives the sequencing system.
Rythm Density Control
A probabilistic system using [random 100], [<], and [sel 1] determines whether a note is triggered at each step. This allows the user to control how dense or sparse the musical output is.
These paramaters of Clock & Tempo Timing and Rythm Density Control are implemented so that if a songwriter wants to use Pd to inspire a melody or record directly, they can control the speed and amount of notes generated. If for instance, the other sections of the song use high density, they might want to make the density less.
Pitch Generation
Pitch is generated using random processes constrained by the selected scale. Message notes for major and minor were utilized with spigots that control which is selected. The sequence of notes is chosen randomly utilizing a [moses 6] that programs the root note to occur more often so the melody is more musical.
Basic Audio Synthesis
In addition to MIDI output, a simple synthesizer was implemented directly in PlugData using signal-rate (~) objects. The system uses [osc~] to generate a waveform, [mtof] to convert MIDI pitch to frequency, and [vline~] to shape amplitude envelopes. A toggle allows the user to turn the synth output on or off.
From the select, a message connects to [vline~] that controls the shape of the waveform. This sound creates a high frequency sounding echo that can be controlled through a number box.
On Mac
Through Mac's MIDI Studio, IAC Driver is utilized adding a plugdata port. This is imperative to ensuring proper communication between Logic and PlugData.
In Logic
Logic's MIDI input was wired to the IAC Driver so that PlugData and Logic can communicate.
In PlugData
The input and output of MIDI in PlugData was set to port 1 of IAC driver, again ensuring proper communication.
Presentation
Pre-final project descriptions of methodology, project design, and challenges can be found in my presentation, linked below.