<< >>
justin = { main feed , music , code , askjf , social , pubkey };
[ <<< last (older) article | view in index | next (newer) article >>> ]

October 29, 2018
REAPER: AVS's Spiritutal Successor - or - Decanted Youth - Light Creeps In (WIP)

I've been working on REAPER's video rendering/processing pipeline, allowing video processors to access and share memory with JSFX and ReaScripts, and exposing some new APIs for things like FFTs. It's pretty low-level, the JSFX/video processors are responsible for a lot of stupid work like synchronizing with eachother... but: the key thing is that we (REAPER users) can now effectively build things like AVS into the rendering pipeline, combining video and rendered audio and rendering that to video. I find this really awesome and exciting in the way AVS was, and in a way that has been missing for a long time. And now we can render AVS-like stuff directly to YouTube videos.

To explain: why is this like AVS? AVS had two key things that made it really cool:

  • You could build complex things by putting simple things together
  • You could also write complex things in code (making those "simple things" a little less simple).
  • (I'm bad at counting) (ok REAPER doesn't really address this -- AVS was cool because awesome people made tons of awesome presets for it. but REAPER's made for creators, so I guess we don't have to fulfill this one, so two things.)
REAPER does this too -- you can use video material directly, or one of many video processor presets to do basic things. Then you can also do the second thing by coding video processors (or hacking existing ones) to do new things. As an explanation, the effect in the video below is a combination of an existing preset (the spectrum analyzer), and a little bit of code (15 lines or so) which transforms that into polar coordinates (I could save that second bit of code as a preset for re-use later, including on a video file, etc).

The future is awesome. Now if only the present could catch up.



Addendum: I'm irrationally pleased by this bit of video processor code I spent far too long on, for converting HSV (360/1/1) to RGB:
function h6s2i(h) global() ((h -= floor(h*1/6)*6)<3 ? <1 ? 1-h : 0 : h<4 ? h-3 : 1);
function set_hsv(h,s,v) global() (
  h*=1/60; s *= v;
  gfx_set(v-h6s2i(h+2)*s,v-h6s2i(h)*s,v-h6s2i(h-2)*s);
);
Also here's another video from testing that I meant to post earlier:








2 Comments:
Posted by Justin on Mon 29 Oct 2018 at 23:30 from 108.30.215.x
I also like this version, which is smaller/slower, and looks different:

function set_hsv(h,s,v) global() (
h*=$pi/180; s *= v; v-=.5*s;
gfx_set(v+sin(h+$pi*2/3)*s,v+sin(h)*s,v+sin(h-$pi*2/3)*s);
);


Posted by Shenan on Thu 01 Nov 2018 at 11:49 from 104.246.142.x
Nice!


Add comment:
Name:
Human?: (no or yes, patented anti crap stuff here)
Comment:
search : rss : recent comments : Copyright © 2018 Justin Frankel