Which is the way to go?

FFGL, OSC, GLSL. If you like abbreviations, this is the forum for you
Post Reply
krzysztof@paliga.eu
Met Resolume in a bar the other day
Posts: 1
Joined: Fri Jan 29, 2016 15:25

Which is the way to go?

Post by krzysztof@paliga.eu »

Hi,

Im about to get into writing some plugins for resolume. I was looking for some documentation about how to write plugins and found this forum. As I recon, there are 3 ways to write plugins Flash, Quartz Composer and FreeFrameGL. Is openFramework a 4th "standalone" option, or a variation of FreeFrameGL? I know java, c++, opencv and was hoping I can use my skills to develop some resolume plugins.

The first plugin I want to write should take the final output (from all layers) as input, apply some processing to the image and give some output which has to be send to a device.

The second plugin I want to write should take some external source (camera) as input, apply some processing and and act as a new, additional layer in the resolume main panel.

The third plugin I want to write should take some layer output as input, apply some processing, and send the resulting frames through wifi (as for now) to a external device.

My question is: which of the 3(4?) approaches would be suitable to solve all my requests? Can I use one of them to write all my plugins? If so, which one?

Thanks in advance for any help!!!

Joris
Doesn't Know Jack about VJ'ing or Software Development and Mostly Just Gets Coffee for Everyone
Posts: 5185
Joined: Fri May 22, 2009 11:38

Re: Which is the way to go?

Post by Joris »

Neither Flash or QC can take an image as input in Resolume, so out of those three, FFGL is what you need to look into.

FFGL is a framework that lets you create plugins for a FreeframeGL host. It gives you a set of functions that let you exchange parameter and texture data between your plugin and the host. The framework is based on c++ and OpenGL. FFGL hosts that I currently know of are Resolume, Coge, VDMX and Isadora.

openFrameworks is a framework that lets you create standalone visual applications, based on c++ and OpenGL. It has a huge set of handy functions that take some of the nasty work out of OpenGL programming, but it does not natively run in Resolume.

An FFGL plugin in Resolume can be applied on the clip, layer or composition level. You will receive the output of that comp/layer/clip as a texture and can then further process it. At the end, whatever you draw in your OpenGL context will replace the output of the comp/layer/clip you apply the effect on. Think of it as visual sidechaining.

As long as you want to stay inside of Resolume, FFGL is what you want use. This is what FFGL is designed for.

If your primary interest is getting the output out of Resolume someplace else, you might be better of creating your own app, for instance in openFrameworks. This way you don't have to worry about being a plugin in a host, which may make it difficult to output to external devices. You can then use Spout/Syphon to receive textures from Resolume. Spout (PC) and Syphon (Mac) are a way of sharing textures between applications.

Joris
Doesn't Know Jack about VJ'ing or Software Development and Mostly Just Gets Coffee for Everyone
Posts: 5185
Joined: Fri May 22, 2009 11:38

Re: Which is the way to go?

Post by Joris »

Here is the latest Git repo for FFGL: https://github.com/resolume/ffgl

It has up to date example projects for Xcode and VS2013.

User avatar
Oaktown
Resolume honorary member
Posts: 2834
Joined: Tue May 08, 2012 15:19
Location: Oakland, CA

Re: Which is the way to go?

Post by Oaktown »

It sounds like most of what you're describing can already be done in Resolume Arena 5 without writing any plugins.

l
krzysztof@paliga.eu wrote:The first plugin I want to write should take the final output (from all layers) as input, apply some processing to the image and give some output which has to be send to a device.
You can already do that with the layer router and layer to slice routing in advanced output. Just put the router in the top layer and bring the opacity to 0 then in the advanced output set the slice input to the layer that has the router and uncheck input opacity
krzysztof@paliga.eu wrote:The second plugin I want to write should take some external source (camera) as input, apply some processing and and act as a new, additional layer in the resolume main panel.
You can use the layer router to achieve that.
krzysztof@paliga.eu wrote:The third plugin I want to write should take some layer output as input, apply some processing, and send the resulting frames through wifi (as for now) to a external device.
You can use the layer router with single layer as input + layer to slice routing in advanced output + TCPSyphon/TCPSpout/Airplay/WIFI HDMI/etc..,to achieve that.

keshrath
Met Resolume in a bar the other day
Posts: 13
Joined: Tue Dec 29, 2015 12:37

Re: Which is the way to go?

Post by keshrath »

Hi,
If you want to code in java you can take a look at Processing. (https://processing.org/)
In case you are coding in java you should also take a look at either Spout2 oder Syphon depending on your OS.

Post Reply