Recording hours of sample accurate automation data

Baek Santarek's icon

Baek Santarek

10月 15 2024 | 2:59 午後

Hi guys,

I am not sure if this is possible but I really want to give it a chance as this is my long-time dream and I finally feel ready to attempt this.

I want to record 4 hours (I have chosen this amount as a potential maximum based on my experience) of sample accurate automation data with values being written at audio rate (user input automation, LFOs, envelopes, everything...).

Basically, I want to be able to capture any movement of any parameter in my patch with absolute precision so that when played back the results would be truly identical to what I heard at that point in time when recording it. I want totally deterministic results like one can get from audio files but editable. That means I want to be able to skip to a certain point in time and have the automation and modulation values (the precise shape and phase of an LFO at that point in time, for example) adjust accordingly.

There could be hundreds of parameters to be recorded, sometimes even at once.

What would be the best approach to handle this? Is this even possible in Max Msp if we assume the performance of my computer is not a limitation?

I imagine I would need to do some serious performance and data filtering/compression work for this but I have zero experience with this problem and would love to avoid getting stuck and waste my time attempting to develop something that would be pointless in the end.

I have experience with recording CV signals in wav files in a DAW and the results are great. However I need to be able to redraw the recorded signals in real-time and I also want the optimize the performance for large amounts of automation tracks and make sure the whole system is truly deterministic (unlike in all the DAWs I have tested so far where there is always something changing the resulting sound when compared to the intended original) so that is why I am looking to do this in Max Msp.

I hope I am not being too naive.

Please, give me your ideas to get me started.

Thank you!

Baek Santarek's icon

Baek Santarek

10月 20 2024 | 6:43 午後

bump

Anyone having any experience with this?

Roman Thilenius's icon

Roman Thilenius

10月 20 2024 | 7:00 午後

if the resolution of these control signals is low, possibly even an integer range, you could encode multiple of such streams into a single stream so that you have to record only 1/4 of the signals.

beside that, sfrecord~ should be all you need to write arbitrary data (in float32 or float64) with SR to disk.

Baek Santarek's icon

Baek Santarek

10月 21 2024 | 9:14 午後

Thank you Roman, as always!

Could you please expand a bit on the encoding of multiple streams into a single stream? I am not sure I understand how to do that.

Roman Thilenius's icon

Roman Thilenius

10月 22 2024 | 5:21 午前

if you have two control signals of a given integer resolution, say from 0.01 to 1.00 in 100 steps, you could *100 one of them and then sum them.

this process is "undoable" later using simple math. (you can use [trunc~] for int() )

in 64 bit you should be able to do it about 9 times - minus the maximum additional digits your resolution requires.

so you should choose steps which make short numbers. for example not use steps of 1/127 if your range is 128 (that would require the full float lenght), but rather go in steps of 0.005 from 0.005 to 0.640 for that range. (and then 5-640 for the second signal)

now you can write 300 or 400 of such signals into 100 channels and possibly not hit the limit of your system.

Roman Thilenius's icon

Roman Thilenius

10月 22 2024 | 4:48 午後

my example stinks. to retreive perfect accuracy you must stay before the comma of course. whole numbers and signed only.

Baek Santarek's icon

Baek Santarek

10月 22 2024 | 4:56 午後

Roman, this is all excellent food for thought! Thank you!

Just to know that all of that is possible opens doors to me.

Will investigate more as I progress!