Each person places a finger on one of two sensors embedded in a board. A resonant "ping" sounds at their current heart rate to indicate that the sensor is reading their data. Heartbeat data is represented in two forms: BPM (discrete) and IR level (continuous).
Heart rate BPM sets a Max "metro" object that generates a set of impulse profiles (a "click~" and a "noise~") to drive their associated synths. This generates a regular pulse in sync with the participant's heartbeat which powers a synth patch consisting of a modified Karplus Strong and a step sequencer that loops over 8-beat patterns (a "byte"). Because each participant's heart rate is unique, the resultant effect is that of a constantly changing polyrhythm, blending the two rhythms into one.
IR levels modulate various synth parameters including the feedback/damper on the Karplus Strong synth and the coefficients of a nonlinear all-pass filter. This data is scaled in various ways to better map the range of each synth parameter.
Each participant's heartbeat data modulates their associated synth parameters, as well as some parameters of their partner's synth, creating an entangled polyrhythmic system that is synced to their heartbeats. The output from both synth patches is combined in a central reverb unit and routed to the DAC, creating a blended, unified sound.
Open source code
Click here to grab this project's code