Hi all,
I’ll describe what I’m trying to achieve and the problems I’m having. Hopefully it all makes sense.
I’ve created a Max patch that allows me to send source position information as OSC data to REAPER, write this information as automation envelopes, then have it received by spat5.oper in Max. What I’m now trying to do is to capture this information coming back from Reaper as .xml files, using spat5.osc.record~.
My end objective is this: I’m working on a piece for live instrument and pre-recorded multichannel audio. I’ll need a performance patch that enables me to trigger soundfiles at various points. Rather than triggering files with pre-rendered spatialization for a pre-determined array, I’d prefer to trigger multichannel files whose channels correspond to individual sources in Spat5, each of which is spatialized in real-time following meticulous trajectories that I’ve worked out ahead of time. My motivation is to allow for a more flexible transference between performance situations/arrays.
Here is the process I devised as a possible solution:
- The audio files I will eventually trigger during performance from Max are bounces of Reaper multitrack sessions. Each original multitrack session has X number of tracks / instances of OSCar (corresponding to sources in Spat5). That way, while composing, I can spatialize in Max and write the info as envelopes in Reaper.
- I bounce each multitrack session as a multichannel file. A file with X channels will be routed to Spat5 as X number of individual sources.
- After bouncing a mulitrack session, I create a corresponding .xml file of its spatial information, by playing the entire session from Reaper and recording the info received by Max (via OSCar) with spat5.osc.record~.
- Theoretically, I could set up my performance patch so that, when an audio file is triggered, a corresponding .xml file is read simultaneously by spat5.osc.play~, reproducing the spatialization I’d worked out ahead of time.
My Problem:
I apparently don’t understand well enough how spat5.osc.record~ and spat5.osc.play~ work. I have been successful in using the help patches, but unsuccessful once I implement these objects in my own patch. I suspect that the problem has to do with how information is formatted as it is received by spat5.osc.record~. In this object’s help patch, it is receiving info directly from spat5.viewer, formatted as /source/*/aed. In my patch, however, OSC data returning from Reaper via OSCar is not given in triplets but rather individual coordinates. Furthermore, I am working with Cartesian coordinates rather than polar. So when OSC comes back from Reaper, I get individual values for x, y, and z coordinates.
My questions
- How do I record OSC info as it returns to Max from Reaper via OSCar?
- Should I explore a different method to achieve my overall goal (the performance patch I described above), and what would that be?
Thank you to all for your thoughts!
Tim