okay.... So I knew that I needed to be able to mix noise sources to crossfade, so the old camera movement system was trash, delete it. but first I'll save the custom camera shake sequences it has, they are stored as 24 FPS animation track .res files. Okay. So I found a new system that is already made called Shaker that has fade in / fade out already, and it is also already made to have multiple sources so it looks like a good basis. But it is using only sine waves and square waves, not recorded data.
So I looked at how it does it, shaker\data\Vector3\ has many types that derive from ShakerTypeBase3D, and it looks like the only method the need is get_value(time:float)->Vector3, okay easy, so I just have to create a custom one of these and drag my animation track in there and then index into it via time, interpolate the result, return it. queue 3 hours of godot animationplayer / animationlibrary / animation track "node paths" shenanigans later and I've got it all working. The built in animation looping doesn't seem to work unless it is inside an AnimationPlayer node and I am bypassing that so I had to implement looping myself with time=fmod(time,track_length)
I got to do work tomorrow morning so I'm going to have to stop here and do the actual transition mixing tomorrow as well as implement a pause menu, so it can have an options menu, so players can turn off the head bob on sprint feature
Also, the only way to work with animation library resources that I've seen, is to create a dummy animation player node, load the library into the player, then the player lets you edit the library, then you can save it and delete the animation player, you can't just edit the library in the inspector when double clicking the resource file...