Popping to Midi
Patch: Body Set
In stream the osc messages with the muscle activation potential values seperated by source muscle to be processed as sequences of floats. These are each passed to an object (the Pops) which outputs a bang when the pop criteria is satisfied to trigger a drum midi sound. I wanted to catch the onset of pop and send on single message for a single hit per pop rather than generate a flurry of snare hits, but it takes time for a muscle to relax after being contracted. To compensate, each successful pop suppresses the processing of the active muscle’s incoming signal for several milliseconds. This duration can be tuned to the responsiveness of the individual muscles and the competency of the user. In my excersises, I tuned these on a range 120 ms (soleus) to 300ms (trapeziod).
I created a few objects to help segment the task of turning OSC messages into sound.
Pop: generates a bang when the raw signal is higher than a specific threshold
Pop2: generates a bang when the difference between successive signal values is greater than some threshold (sample rate 256 hz)
Pop3: same as Pop2 but measure difference at a rate of 128 hz.
Pop4: like Pop3 with note velocity determined by crossing value.
I experimented with the change in potential over time intervals grater than the same rate to cut down on false pops. The graph of biceps pops above shows possible thresholds for the raw, first order, and first order extended signals.
These objects are designed to accept control inputs to suit the muscle and performer characteristics and goals. If a popper wants to train to get sharper pops, it is easy to raise the activation threshold of Pop2 or Pop3. If the popper want to get consistently strong pops, it would be more useful to train with Pop using a high threshold.
Experimentation has demonstrated that despite these different kinds of signal controls, muscle activation potential is still quite challenging to generate consistently.
Note: this patch also requires use of a midi synthesizer. I’ve been using Simple Synth.
Muscle to Confined States
Instead of confining the muscle activity to triggering notes, we can try to associate ranges of muscle activity. Introducing an object called “bins”, I set two thresholds for the signal, or rather for the natural logarithm of the signal input, and then give sound characteristics to muscles when they are in these different states. Instead of studying sudden changes in muscle activation, this depends on sustained potentials which are expressed in postures and motions.
Besides the bins object, I also used two other little creations: clari and slip. Clari is a simple clarinet synthesizer using the osc~ object to generating the first four odd numbered overtones with decreasing loudness. Listening to out of tune oscillators got painful after a few days of testing, so this helped a little. It would be interesting using other timber constructions for the sound output of these patches. Slip is a modified line object that slides over an input duration (ms) from the current numeric output value and the latest input. This is to help trill and wobble between muscle states.
In the first patch these bins where tuned to different pitches: each muscle being capable of generating silence, one frequency of middle activity and another at a high activity level. With eight muscles being monitored, this gives me 16 pitches to distribute however I liked. Considering the performance challenges, I tuned the muscles’ high activity states to a circle of fifths sequence and their middle activity states to a half tone below the high states, with some fudging for the trapezoids. The results are somewhat cacophonous, in part because muscles are often activated together and the stability position (standing sitting or lying down) gives rise to different patterns of interdependence. One alternation might be to switch the “leading tones” to the high activity range, and set very high thresholds. Also sherperd tones would help with the limited range.
Learning from the tuning process above, I instead used the muscle states to determine the loudness of some given pitch. Tuning the 8 muscles to the 8 notes of the major C scale (starting on C3), I tried to tuned muscles to create harmonious combinations. The resulting “music” is full of parallel fifths, but is easier on the ears.
While both of these systems give a broader range of sound expression through muscle activity, they did not satisfy my interest in sound outputs that would corroborate with the intention expressed in the generative physical postures and motions.
Potential as Frequency Modulation
To better express the “activity” of muscles, the most satisfying Body patch was the most direct: potential as frequency. Given the jitteryness of this biosignal, it produces a lively range of values that are reminiscent of early video game sound cues. Besides those native to Pd, I created an object to make this more fun: PeakKeeper. This object tracks the signal against a downward falling line. When ever the signal surpasses the line, it resets the current value from which the object will continue to fall. The output is a stream of descending values from the last “peak”.
The result could be used to accompany space dramas or oldtime arcade favourites. Using the slip object on one of these signals can also generate sounds very similar to record scratching.
These are just the beginning of what can be done, musically, with these biosignals. Come back some time to see what else I’ve come up with, and how it looks and sounds in action.