I decided to learn a technology that we may use for the installation. I’m inexperienced with Pure Data (PD) so, I decided I’d start.
I’m going to create a timer to get time divisions:

This gives a metronome at 60 BPM. I send this to the multiplier. This then divides the number to give me whole, half, quarter, and 16th notes.
I want the Bass to move between the tonic (I) and subdominant (IV). I’ll keep this simple and do two measures of each. To do this I utilise the modulo (%) operator.

This sketch doesn’t make sound yet. So, we a sound object. For the bass I’ll use a [phasor~].

The “Chord” is sent via an output of 0 or 1 it selects the frequency that I’m looking to play and into the [phasor~]. The right-hand side of the sketch uses a [vline~] to adjust the Amplitude, Decay, Sustain, and Release (ADSR). At the end I send this for output to the DAC.
I wanted to do a melody and do a randomisation of notes in a sub-patch. So, I used the [inlet] and [outlet] objects. I wanted to create the scale notes and just cycle randomly.

The next two patches look similar, but sound different as I swapped the [phasor~] for [osc~] and made the bleeps to be three octaves higher.

This then leads to the final output.

The instruments use reverb (freeverb) where I mix the levels to taste. It’s taken hours to do something I could do in a DAW in minutes. However, I can’t use a DAW with sensors easily.
The final output sounds like:
Is this great? Not compared to using a DAW. The sounds are basic, and the progression limited. However, it’s the beginning of a journey and opens the possibilities of using physical computing and sensors.
Bibliography:
Floss Manuals (1991) Pure Data. Available at: https://archive.flossmanuals.net/pure-data/ (Accessed: 24 November 2023).
Puckette, M (2011) Miller Puckette MUS171 Videos. Available at: http://pd-la.info/pd-media/miller-puckette-mus171-videos/ (Accessed: 25 November 2023).
Really Useful Plugins (2020) Pure Data Tutorials – Rich Synthesis. Available at: https://www.youtube.com/playlist?list=PLqJgTfn3kSMW3AAAl2liJRKd-7DhZwLlq (Accessed: 25 November 2023).