This is piece was programmed entirely in Max/MSP. The mic signals come in, and I wrote a little algorithmic mixer to vary the balance between the two over time. I use tapin~/tapout~ with varying delay times to thicken up the sound, then squash everything with omx.peaklim~. The filtering is done with reson~, fairly straightforward; the hard part was writing the functions that vary their pitch and amplitude and Q over time. Scales are stored in coll objects. New rhythmic patters are intermittently generated and saved to a coll on the fly, allowing for some mid-level recurrence.