Vuo 1.2.4 is a big update that adds many new features (including 16 requested by the community), fixes numerous bugs (including 24 reported by the community), and improves performance. It’s free for people who purchased Vuo 1.2. Highlights include:

  • New image effects: Sharpen Image, Scramble Image, Make Stained Glass Image, Make CMYK Halftone Image, Make Tileable Image, Split Image HSL Channels, Combine Image HSL Channels
  • New noise nodes and options: Make Spherical Noise Image; the choice of gradient noise, value noise, cellular noise, and dot noise; the choice of a rectangular or triangular grid; the choice of levels (octaves), roughness, and spacing for fractal noise
  • New blur nodes and options: Blur Image Radially, Blur Image Directionally; the choice of Gaussian, linear, box, and disc kernels; adjustable blur quality; and masked blurs
  • New layer layout nodes: Arrange Layers in Row, Arrange Layers in Column, Tile Layer
  • New scene nodes: Find 3D Objects, Copy 3D Object (TRS + Material), Quantize 3D Object, Tile 3D Object
  • New interface with NI mate: Filter Skeleton
  • New audio effects: Bit Crush Audio, Ring Modulate Audio
  • New list utilities: Comb List, Get Items from List, Get Item Ranges from List, Interleave Lists, Deinterleave Lists
  • New text utilities: Change Case, Insert Text, Find Text, Replace Text, Remove HTML
  • New math utilities: Calculate List, Crossfade, Change Speed
  • Enabled sending 32-bit integers and floats via OSC, for compatibility with other applications that receive those OSC data types.
  • Enabled specifying the timestamp for each video/audio frame in the Save to Movie node, for better control of the movie frame times and framerate.
  • Added support for higher color-depth (32bpc) images.
  • Added a section on subcompositions to the Vuo Manual.
  • Enabled Vuo.framework to be inserted into VDMX5 b8.6.0.6.

Vuo 1.2.4 drops support for Mac OS X 10.7. It runs on OS X Mountain Lion 10.8 through macOS Sierra 10.12.

Examples

  • Added new example compositions:
    • Animate Stripe Width
    • Cap Saturation
    • Change Ripple Periodically
    • Change Speed with Mouse
    • Compare Directional Blurs
    • Compare Mix and Ring Modulate
    • Compare Noise Types
    • Crossfade Rectangle Sizes
    • Crush Sine Wave
    • Load Image Asynchronously and Show URL
    • Make Stained Glass Image
    • Quantize Object
    • Reorder Ranges of Items
    • Select Layer from List
    • Separate Hue Saturation Lightness
    • Sharpen Movie
    • Show Arranged Layers
    • Show Arranged Text Layers
    • Show Stabilized Audio Waveform
    • Simulate Motion Blur
    • Simulate Printed Image
    • Spin Watery Sphere
    • Tile Starfield
    • Track Skeleton
    • Unscramble Image
    • Zoom Blur Hue
  • Modified the Show URL Components example to load its image asynchronously.
  • Modified examples that track mouse buttons to react only when the mouse is interacting with the composition’s window.
  • Updated the Make Rugged Terrain example to use the Make Noise Image node, now that it can generate fractal noise.
  • Modified the Display RSS Items example to decode HTML character entities in the Title and Author fields.

Built-in Nodes, Types, and Input Editors

  • Added new nodes:
  • Renamed nodes:
    • Renamed Make Scaled Layer to Make Image Layer (Scaled) and Make Layer to Make Image Layer (Real Size), and similarly for the Make * Layer with Shadow nodes.
    • Clarified the titles of the families of Copy 3D Object / Layer and Combine 3D Object / Layer nodes.
    • Clarified the titles of the family of Are Equal nodes.
  • Added ports:
    • Added a Calculate Samples port to the Make Audio Wave node to fix confusing rules about which ports are supposed to receive events. (Thanks to @alexmitchellmus for reporting this issue!)
    • Added an Is Fullscreen output port to the Get Window Dimensions node. (Thanks to @alexmitchellmus for requesting this feature!)
    • Added an Opacity Image output port and Preserve Opacity input port to the Split Image RGB Channels node. (Thanks to Roger Bolton and @alexmitchellmus for suggesting this feature!)
    • Added a Feedback Blend Mode port to the Blend Image with Feedback node. (Thanks to @alexmitchellmus for suggesting this!)
    • Added a Mask port to the Blur Image node. (Thanks to @jersmi for requesting this feature!)
    • Added Levels, Roughness, and Spacing ports to the Make Noise Image, Frost Image, and Shade with Frosted Glass nodes. (Thanks to @alexmitchellmus for requesting this feature!)
    • Added Type, Grid, Range, and Tile ports to the Make Noise Image node. (Thanks to @alexmitchellmus for requesting these features!)
    • Added an Expand List if Needed port to the Change Item in List node. (Thanks to @MartinusMagneson for suggesting this feature!)
    • Added a Type port for each Data port in the Make Message nodes. (Thanks to @Resolume and @wmackwood for asking about this!)
    • Added a Preserve Physical Size port to the Make Image Layer * (Real Size) nodes to support rendering images at the same physical size on both Retina and non-Retina screens.
    • Added a Multisampling port to the Render Layers to Window and Render Scene to Window nodes.
    • Added a Quality port to the Blur Image node.
    • Added a Sync Amplitude port to the Make Waveform Image node.
    • Replaced the Amplitude port with a Height port on the Make Waveform Image node.
    • Added a Sample Type port to the Sample Color from Image node.
    • Added a Coverage port to Make Checkerboard Image.
    • Added a Model Code output port to Get Audio Input Values and Get Audio Output Values.
    • Added a Phase port to the Curve node.
    • Added an Anchor port to the Make * Layer nodes, and renamed their Center port to Position.
  • Added port value options:
    • Added Texture Coordinate (Gradient) as an option for the Attribute port on the Shade with Vertex Attribute node, and renamed the Texture Coordinate option to Texture Coordinate (Checker). (Thanks to @alexmitchellmus for requesting this!)
    • Added larger options (4095 and 8191) for the Frequency Bins port of the Calculate Amplitudes for Frequencies nodes. (Thanks to @Kewl for suggesting this improvement!)
    • Added support for 32bpc images. (Thanks to @alexmitchellmus for requesting this feature!)
    • Added options for linear, box, and disc kernels for the Shape port on the Blur Image node. (Thanks to @jersmi for requesting this feature!)
    • Enabled the Save to Movie node to receive timestamps along with the input images and audio, for better control over the frame times and framerate of the resulting movie.
    • Added an “auto” option to the Width and Height ports of the Blend Image with Feedback node.
    • Enabled using variables I and J to retrieve the integer index of the current point in the * Expression ports of Make Parametric Points, Make Parametric Point Mesh, and Make Parametric Grid Mesh.
  • Enabled full-screen composition graphics windows to be accessed in macOS Mission Control. (Thanks to @Bodysoulspirit for reporting this issue!)
  • Added more keywords to Allow Changes. (Thanks to @alexmitchellmus for suggesting this!)
  • Enabled the keyboard and mouse nodes to work in a composition with no windows. (Thanks to @jersmi for asking about this!)
  • Improved the performance of the Make Cube node by generating a single object instead of a group with subobjects. (Thanks to @alexmitchellmus for asking about this!)
  • Changed the Fire Periodically node’s Fired port from an event port to a data+event port that outputs the time elapsed.
  • Modified the Receive Mouse Moves node to fire an event with the cursor’s initial position when the composition starts.
  • Modified composition graphics windows to use macOS’s built-in full-screen mode when possible (i.e., when both running on 10.9 or later, and when System Preferences > Mission Control > Displays have separate Spaces is checked).
  • Modified the Summarize Value node to strip HTML from the summary.
  • Modified the Receive Mouse Clicks node to interpret quadruple-clicks (or higher) as triple-clicks instead of ignoring them.
  • Added support for writing fragmented movie files (for recovering a partial movie if the composition crashes) in the Save to Movie node, window recording, and offline movie exporting.
  • Reduced GPU RAM usage when loading 8bpc greyscale and 8bpc palletized images.
  • Modified nodes that create files to replace any colons in the file name with a character that looks the same but doesn’t doesn’t get changed to a slash by macOS.
  • Improved the performance of the Calculate Amplitude for Frequencies node.
  • Restyled the up/down arrows in numerical input editors to make them easier to target with the mouse.
  • Modified the up/down arrows in numerical input editors to be visibly disabled when clicking them would have no effect.
  • Improved the performance of 3D object filter nodes.
  • Modified the image filter nodes and the Render Image to Window node to output/display a null image when they receive one as input, rather than continuing to output/display the last non-null image.
  • Improved the style of the Movie Format input editor.
  • Renamed the Samples port to Channels on nodes where the port’s data type is List of Audio Samples.
  • Modified the display of OSC Message data in port popovers to show the entire list of arguments.
  • Fixed a bug where the Receive Mouse Buttons and Receive Mouse Clicks nodes would fire events when the composition window was resized. (Thanks to @Pianomatic for reporting this problem!)
  • Fixed a bug where Fetch Image downsampled 16bpc images with an alpha channel to 8bpc. (Thanks to @alexmitchellmus for reporting this issue!)
  • Fixed a jagged seam when using the Make Icosphere node with an image shader. (Thanks to @alexmitchellmus for reporting this bug!)
  • Fixed a bug that generated bogus texture coordinates for certain 3D objects (including those made from point meshes) when they were passed through certain 3D object filters (including Add Noise to 3D Object). (Thanks to @Bodysoulspirit for reporting this problem!)
  • Fixed a crash when one of the * Edge ports of the Make Quad Layer node has a cable connected. (Thanks to @alexmitchellmus for reporting this bug!)
  • Fixed a bug in the input editor for the Fragment Shader port of the Make Image with Shadertoy node that scrolled the input editor back to the top when the user scrolled to the bottom. (Thanks to @jersmi for pointing this out!)
  • Fixed a bug where audio devices didn’t work if the system was set to a language where the device name contained non-ASCII characters. (Thanks to @Kewl for reporting this bug!)
  • Fixed crashes when using certain 3D object filters, including Divide 3D Object. (Thanks to @Xavier dev for reporting this bug!)
  • Fixed a bug where Receive Kinect Images would stop outputting images after a live-coding reload. (Thanks to @alexmitchellmus for reporting this bug!)
  • Fixed a bug where Blur Image ignored the input image’s wrap mode. (Thanks to @alexmitchellmus for bringing this to our attention!)
  • Fixed a bug where gradients generated by the Make * Gradient nodes were not smooth on certain GPUs including Intel HD Graphics 3000. (Thanks to @Bodysoulspirit for reporting this bug!)
  • Fixed the 2 gray pixels that appeared in each bottom corner of a composition graphics window.
  • Fixed memory leaks of port values and node instance data during live coding.
  • Fixed a bug where composition graphics windows didn’t accept file drag-and-drop (Receive File Drags) when full-screen.
  • Fixed a memory leak when stopping a composition with a graphics window.
  • Fixed a bug where line segments wink out of existence when the camera moves more than a few units away from the origin.
  • Fixed problems with the Blur Image node’s blur algorithm: the blur not perceptibly increasing beyond a radius of about 10, the blur radius being treated as an integer (fractional part ignored), and the output image having diagonal streaks.
  • Fixed a rare crash upon quitting a composition with a Receive Live Video node.
  • Fixed a bug where the Save Image node would write an image that was too bright when saving to a format that doesn’t support transparency.
  • Fixed a bug that allowed Frost Image node to generate invalid color values if the Brightness port was set too high.
  • Fixed a bug where the Save to Movie node sometimes wouldn’t finish saving the movie before the composition process ended.
  • Fixed incorrect step sizes when using the up/down keys on input editors for ports of type Real.
  • Fixed a bug where the Warp Image with Projection Mesh node was not applying the mesh’s brightness attribute to the image’s RGB channels.
  • Fixed slow performance of the Cut List node when extracting a small subset of a large list.
  • Fixed a low visual contrast between enabled and disabled input editor widgets in Dark Interface.
  • Fixed a crash when attempting to render a Real Size layer with an image that failed to be created, for example the output of Make Text Image when the input text is very large.
  • Fixed a bug where the Play Movie node ignored the value into its Set Time port if the same event went into the URL port.
  • Fixed a bug where the looping mode wasn’t applied to the value of the Set Time port of the Play Movie node.
  • Fixed a bug where the Fetch Image node ignored the EXIF orientation tag of images, causing photos taken by an iPhone in portrait orientation to appear in landscape orientation.
  • Fixed the inconsistent capitalization of labels in input editors.
  • Fixed a crash in Play Movie for certain movies (where the number of actually-decoded audio channels differs from the number that AVFoundation says the movie is supposed to have).
  • Fixed a memory leak when stopping a composition that uses Send Art-Net Messages or Receive Art-Net Messages.
  • Fixed a bug where the vignette from the Make Fisheye Camera node sometimes wouldn’t show up when using Show Back of 3D Object.
  • Fixed inconsistencies in dialogs as compared to other dialogs and macOS conventions.
  • Fixed a bug where Make Image from Channels put the channels in reverse order.
  • Fixed a bug where empty text items in a List of Text port wouldn’t have a bullet point in the port popover.
  • Fixed a bug where occasionally the system’s audio devices wouldn’t be detected.
  • Fixed a bug where the input editor for the OSC Input Device data type sometimes showed duplicates of the same device.
  • Fixed a bug where Receive Mouse Moves would fire events at position (0,0) for inactive windows.
  • Fixed a bug where the Showed Window port of the Render * to Window nodes would fire twice when switching between windowed and fullscreen mode.
  • Added a workaround for an Intel HD Graphics 3000 driver bug, where it would sometimes render images with discontinuities along a diagonal line from the top left to the bottom right of the image.

Vuo Editor

  • Enabled editing the details of published ports of data type 2D Point, 3D Point, and 4D Point. (Thanks to @p8guitar for asking about this!)
  • Changed the placement of nodes and cables pasted with ⌘V. They’re now inserted at the cursor location.
  • Modified constant flags for URL ports to be truncated at the beginning instead of the end.
  • Added a tooltip for URL ports that shows the full (non-truncated) URL.
  • Added a tooltip for Color ports that shows the color’s RGBA values in various formats.
  • Changed the behavior when the user drops a video file onto the canvas. When a protocol is active, a Decode Movie Image node is created. When there’s no protocol, the user gets a menu to choose either Decode Movie Image or Play Movie.
  • Changed the VuoCompositionLoader icon from a generic app icon to a Vuo icon.
  • Fixed a bug that allowed a composition to have a published input port and a published output port with the same name, leading to problems including duplicated subcomopsition ports. (Thanks to @dumski for reporting this bug!)
  • Fixed a bug where drawers attached to offscreen nodes weren’t always copied along with the nodes. (Thanks to @alexmitchellmus for reporting this bug!)
  • Fixed a bug where the error dialog when a composition fails to run was sometimes overly tall. (Thanks to @Bodysoulspirit for reporting this problem!)
  • Fixed a bug that left an extra process running when exporting a movie failed.
  • Fixed warnings (“QTextCursor::setPosition: Position ‘53’ out of range”) when interacting with a window.
  • Fixed a bug where an extra click was required to interact with the canvas after clicking on a toolbar button.
  • Fixed a bug that caused mouse drags to be spuriously initiated on the canvas.
  • Fixed a crash that occurred when the system ran out of disk space.
  • Fixed a sporadic crash when recording a video of a composition.
  • Fixed an occasional crash when toggling Dark Interface.
  • Fixed a sporadic crash when deleting nodes or cables.
  • Fixed crashes when dragging a cable and simultaneously modifying the composition in other ways, such as deleting the cable.
  • Fixed the default filename in the Save Movie dialog that appears after recording a movie.
  • Fixed stray linebreaks in the display of some example compositions’ descriptions.
  • Fixed grainy Vuo file icons in menus on non-Retina displays.
  • Fixed a bug where sheet dialogs displayed over an editor window would prevent interaction with other windows.
  • Fixed an error after dragging a cable away from a type-converter node’s input port to disconnect it and then dragging it onto the input port that that type-converter node is connected to.

Compiler and Runtime

  • Added offlineMotionBlur as an optional published input port on the image generator protocol. (Thanks to @alexmitchellmus for suggesting this!)
  • Enabled compositions to shut down cleanly when quit with Control-C or Activity Monitor.
  • Changed the title of composition windows to match the runner process name when the composition is being run without live coding enabled.
  • Reduced the size of exported apps by omitting the Graphviz dylibs.
  • Reduced the time spent initializing the compiler, especially when the user has subcompositions installed.
  • Enabled the composition’s Quit menu item to automatically kill the composition process if it doesn’t shut down within several seconds.
  • Fixed hangs when running compositions with a lot of nested subcompositions. (Thanks to @MartinusMagneson for reporting this bug!)
  • Fixed a bug where compositions would erroneously enter a macOS App Nap if they contained certain combinations of nodes. (Thanks to @manuel_mitasch for reporting this problem!)
  • Fixed a crash when exporting a movie that contains certain combinations of nodes. (Thanks to Daniel Courville for asking about this!)
  • Fixed a crash when running a composition in the current process, stopping it, running another composition using the same dylib, and stopping it. (Thanks to Ray Cutler for reporting this issue!)
  • Fixed a rare crash involving LLVM code generation.
  • Fixed a bug where the last node in a feedback loop inside a subcomposition could execute too late, allowing side effects of the subcomposition to happen after the subcomposition was supposed to be finished executing.
  • Fixed a bug where a Spin Off Event(s) or Spin Off Value node could be thwarted by the order in which the compiler schedules node executions.
  • Fixed a sporadic hang in compositions with certain structures involving multiple triggers and branching.
  • Fixed a crash when compilation of a 3rd-party generic node fails.
  • Fixed a sporadic crash when opening a composition, running it, and immediately resizing a drawer.
  • Clarified some error messages for failures to compile compositions.

Documentation

  • Added a manual section on subcompositions. (Thanks to @dumski for pointing out the need for this!)
  • Documented the behavior of Send Live Audio when its Send Channels port value doesn’t cover all of the devices channels. (Thanks to @Kewl for asking about this!)
  • Changed “Mac OS X” to “macOS” to adhere to Apple’s new branding guidelines.
  • Improved the documentation of many nodes and node sets.

SDK

  • Enabled Vuo.framework to be inserted into VDMX5 b8.6.0.6.
  • Node API
    • Provided new port details “auto” and “autoSupersedesDefault” for VuoInputData.
  • Runner API
    • Modified the VuoPluginApp example to reduce the time the user has to spend waiting for the first composition to open.
    • Fixed a crash in the RunImageFilter-Qt and RunImageFilter-GLFW examples when they ran a composition with a graphics window.
Version
1.2.4