Page 1 of 1

Which is the way to go?

Posted: Fri Jan 29, 2016 15:53
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!!!

Re: Which is the way to go?

Posted: Fri Jan 29, 2016 17:47
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.

Re: Which is the way to go?

Posted: Fri Jan 29, 2016 17:57
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.

Re: Which is the way to go?

Posted: Fri Jan 29, 2016 18:10
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.

Re: Which is the way to go?

Posted: Sun Jan 31, 2016 15:42
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.