In between updating to RDR-0.3.5 and preparing to block out the logic for 0.4, I have taken it upon myself to get busy with other things that either bother me greatly or finally allow me to find patience for. In the past week, I worked on Blender ideas, got closer to decoding the iFRIT algorithm I conceptualized months ago during a fever for our studio app, and achieved other small perma-wins. As you'll come to find out, the idea below is one such bothersome project that needs to be done immediately, or else I will end up returning to it over and over again.
In Blender, the sine math node does a very particular job, and it does that well. That of course is an avenue for smoothly repeating consistent values. When you want to manipulate that, however, is where problems arise. It turns out that no matter how you work around it, all mathematical input or modifications affect the entirety of the wave when there are MANY more cases where having a dynamic sine-like wave generator would be leagues better in a general use case. With the begrudging help of A.I. in the only field it hasn't completely failed (after a steady amount of effort and reconfiguring) to make itself useful in, math, I have an answer (or the beginnings of one) that should solve my problems with this system functionally forever. (I must reiterate that I needed to use A.I. to whip up many, many, MANY equations because as much as I looked beforehand, nothing useful for my specific idea showed up, and I had no idea what terminology to use to help find what I was looking for. Would I have inevitably worked out this equation au naturel? Yeah, but I wouldn't've been able to use Blender for God knows how long, which frustratingly defeats the purpose of creating these short term projects to begin with.)
Introducing the proof of concept that is the Wobbling Wavemaker!
PoC Equations
(Note: If you copy and paste the equations from here, the comparison sign "<" is virtually underlined due to dtext. You're going to have to go in and fix that with the proper symbol by typing "<=")
P = T1+L1+T2+T3+L2+T4 (Length of the waveform)
T1 = 1 (Positive rising slope length)
L1 = 1 (Positive peak length)
T2 = 1 (Positive falling slope length)
T3 = 1 (Negative falling slope length)
L2 = 1 (Negative peak length)
T4 = 1 (Negative rising slope length)
H1 = 1 (Positive amplitude)
H2 = 1 (Negative amplitude)
E1 = 1 (Easing modifier of T1)
E2 = 1 (Easing modifier of T2)
E3 = 1 (Easing modifier of T3)
E4 = 1 (Easing modifier of T4)
y = {0<mod(x,P)<T1:H1*sin(pi/2(mod(x,P)/T1)^E1), T1<mod(x,P)<T1+L1:H1, T1+L1<mod(x,P)<T1+L1+T2:H1*sin(pi/2(1-(mod(x,P)-T1-L1/T1))^E2), T1+L1+T2<mod(x,P)<T1+L1+T2+T3:-H2*sin(pi/2(mod(x,P)-T1-L1-T2/T3)^E3), T1+L1+T2+T3<mod(x,P)<T1+L1+T2+T3+L2:-H2, -H2*sin(pi/2(1-(mod(x,P)-T1-L1-T2-T3-L2/T4))^E4)}
With these equations (which have been converted to Desmos-ready format for playing around with and testing), I believe I could translate this to node format and easily group and recall the ability to change wavelengths, amplitude, and easing of important sections that I see fit, turning a mathematically perfect but obviously artificial loop into something more organic, especially with clever keyframing and whatnot. I could think of a thousand uses with a waveform generator that accepts more user input, and you'll likely see it in action within every one of my future 3D endeavors if it works. I'm not trying to oversell this too hard, as I already assume there will be something that will shove an incredibly resilient wrench in my plans, but using this is the procedural version of taunting an African tribe with your smartphone in the late 2000s to show how much better those devilish whiteys are in comparison.
Update: I got the system working as intended in Blender after initially writing this forum post. Here's just a sneak peak of it in action and the utter shitstorm of node wrangling I had to decode to get it in order. I'll have to draw up a proper flowchart so users can follow at home.

