Exporting an FFGL plugin

New in Vuo 2.0

You can turn your Vuo compositions into FFGL (FreeFrame 1.6+) plugins that can be loaded by many VJ apps on macOS, including Resolume Avenue, Resolume Arena, Magic Music Visuals, VDMX, and Isadora 3.

FFGL plugins exported from Vuo can run only in 64-bit apps. Most macOS apps these days are 64-bit, although some older VJ apps are still 32-bit. You can check your app’s documentation to see if it’s 64-bit or 32-bit.

You can create three kinds of FFGL plugins in Vuo: sources using the image generator protocol, effects using the image filter protocol, and blend modes using the image transition protocol. To learn how to use protocols, see Making compositions fit a mold with protocols.

After exporting an FFGL plugin, you may need to restart your VJ app for the plugin to become available.

Sources

  • In Vuo, go to File > New Composition from Template > Export > FFGL > Source. This creates a composition that conforms to the Image Generator protocol.

  • Add nodes to the composition to make it output a stream of images.

  • Go to File > Export > Mac FFGL Plugin.

Effects

  • In Vuo, go to File > New Composition from Template > Export > FFGL > Effect. This creates a composition that conforms to the Image Filter protocol.

  • Add nodes to the composition to make it alter the input image and output the result.

  • Go to File > Export > Mac FFGL Plugin.

Blend modes

  • In Vuo, go to File > New Composition from Template > Export > FFGL > Blend Mode. This creates a composition that conforms to the Image Transition protocol.

  • Add nodes to the composition to make it combine the input images and output the result.

  • Go to File > Export > Mac FFGL Plugin.

Name

Vuo names the plugin according to the Name field in Edit > Composition Information… under the General tab. Since FFGL limits plugin names to 16 characters, Vuo shortens the name if needed.

Parameters

In addition to the published ports required by the Image Filter or Image Generator protocol, you can create other published input ports to appear as parameters in your VJ app.

You can use the following data types for non-protocol published input ports for FFGL plugins:

Data type Scaled range Shortened name Notes
Real 0 to 1 16 characters
2D Point (0,0) to (1,1) 14 characters
3D Point (0,0,0) to (1,1,1) 14 characters
4D Point (0,0,0,0) to (1,1,1,1) 14 characters
Integer 0 to 1 16 characters
Boolean 16 characters
Text 16 characters
Color 14 characters
Image 16 characters Not supported in Resolume

Since FFGL limits numeric values to the range 0 to 1, Vuo automatically scales parameter values from that range to the range you’ve specified in your composition (by right-clicking on the published input port, going to Edit Details…, and editing Suggested Min and Suggested Max). For example, if you have a Real published input port with Suggested Min -10 and Suggested Max 10, your VJ app will show a slider from 0 to 1. Your composition will get an input value of -10 when the slider is at 0, -5 when the slider is at 0.25, and 10 when the slider is at 1.

Since FFGL limits parameter names to 16 characters, Vuo shortens names if needed. For 2D, 3D, and 4D Point published input ports, Vuo creates a separate parameter for each coordinate (X, Y, Z, or W) and appends a space and the coordinate name to the parameter name. To fit in these 2 extra characters, Vuo shortens the rest of the name to 14 characters. Similarly, for Color published input ports, Vuo creates a separate parameter for each channel (R, G, B, or A).

Sharing plugins

You can share FFGL plugins you’ve created in Vuo with other people, even if they don’t have Vuo. To find an FFGL plugin that you’ve exported:

  • In Finder, hold down and go to Go > Library.

  • In that folder, navigate to Graphics > FreeFrame Plug-Ins.

  • Locate the plugin (a .bundle file).

You can send this file to someone else, who can install it in the same location on their computer.

Uninstalling plugins

To uninstall an FFGL plugin that was exported from Vuo, locate the .bundle file as described in the previous section and throw it in the Trash.