This release introduced many new nodes and example compositions, improved usability of the Vuo Editor to make some common tasks more efficient, and added support for Mac OS 10.10 (Yosemite). New features include:

  • Nodes for live video capture
  • Nodes for generating random numbers
  • More nodes for working with lists
  • The ability to create nodes by dragging media files onto a composition
  • The ability to create event-only cables connected to data-and-event ports
  • Input editors for published ports

Changes

Here’s what we’ve done in the last 2.5 months.

Examples

  • Added 40 new example compositions:
    • vuo.data
      • Show Mouse Position
      • Store Mouse Position
    • vuo.image
      • Bulge Checkerboard
      • Compare Kaleidoscopes
      • Enhance Blue
      • Mirror Movie
      • Offset Colors
      • Separate Red Green Blue
      • Tile Movie
    • vuo.layer
      • Change Layer Blend Mode
      • Compare Layer Gradients
    • vuo.leap
      • Highlight Extended Fingers
      • Hold Egg
      • Show Hand Status (replaces old Count Leap Objects example)
    • vuo.list
      • Insert Square
      • Reverse Gradient
      • Shift Squares
      • Shuffle Letters
      • Splice Squares
    • vuo.math
      • Average Random Points
      • Follow Midpoint
      • Scale Audio Input
      • Spread Bars
    • vuo.midi
      • Animate for MIDI Note
      • Show Piano Roll
    • vuo.noise
      • Color Squares Randomly
      • Display Random Images
      • Make Random Sounds
      • Place Spheres Randomly
      • Scribble
    • vuo.point
      • Draw Points along Curve
    • vuo.scene
      • Change Scene Object Blend Mode
    • vuo.select
      • Rotate One Square At A Time
      • Select Gradient
      • Show Arrow Presses
    • vuo.time
      • Rotate on Cue
      • Show Stopwatch
    • vuo.transform
      • Tilt and Orbit Cube
    • vuo.video
      • Show Camera
    • vuo.window
      • Drag with Hand Cursor
  • Simplified the “Draw Curve” example composition.
  • Improved the “Display Leap Hand” example composition.
  • Improved the “Count Down” example composition.
  • Improved performance of the “Play Movies on Cube” example composition.
  • Added node tints to many example compositions.
  • Bundled images and other resources with example compositions (except those meant to illustrate file downloading) so that the compositions can run without an Internet connection.
  • Fixed a bug where many example compositions were missing a drawer on the Render * to Window nodes’ windowProperties ports. (Thanks to @destroythings and @George_Toledo for reporting this problem, and to @destroythings for providing fixed example compositions.)

Built-in Nodes, Types, and Input Editors

  • vuo.audio
    • Renamed the audioSamples ports on the Calculate Loudness, Mix Audio Channels, and Split Audio by Frequency nodes to samples.
    • Added walls to the non-audio ports of the Adjust Loudness and Split Audio by Frequency nodes so they don’t output extraneous events that degrade audio playback.
    • Fixed loud/glitchy audio when extending the drawer of a Send Live Audio node during live coding.
  • vuo.bcf2000
    • Added nodes Receive BCF Faders, Receive BCF Knobs, Receive BCF Foot Controls, Receive BCF Buttons Row 1, Receive BCF Buttons Row 2, Receive BCF Knob Buttons, and Receive BCF Right Buttons.
  • vuo.data
    • Added Hold List and Share List
    • Added Summarize Value.
    • Moved Hold Value into the vuo.data node set.
  • vuo.file
  • vuo.image
    • Added Mirror Image. (Thanks to @mnstri for requesting this feature and providing a reference implementation!)
    • Added Make Kaleidoscope Image.
    • Added Tile Image.
    • Added Bulge Image.
    • Added Offset Image RGB Channels, Split Image RGB Channels, and Combine Image RGB Channels.
    • Added Get List of Images.
    • Made the Blend Image node treat a missing background or foreground image as transparent, so that this node can more easily be used in feedback loops.
    • Renamed Get Image to Fetch Image.
    • Shortened the node class name for Change Wrap Mode.
    • Fixed a bug where the Make Text Image node would output a non-empty image when given empty text. (Thanks to @fRED for reporting this issue!)
  • vuo.keyboard
    • Fixed a crash in the Receive Keyboard Buttons node when the node is set to ignore repeat keys and a modifier key (such as Option or Command) is pressed.
  • vuo.layer
    • Added Change Layer Blending.
    • Added margin ports to the Align Layers to Window node. (Thanks to @ellington for inspiring this feature!)
    • Changed the output of the Copy Layer and Copy Layer with Transforms nodes from a list of layers to a single layer.
    • Fixed a crash when Make Layer with Shadow is given a null image.
    • Fixed a memory leak in the Make Layer with Shadow node. (Thanks to @destroythings for reporting this bug !
    • Fixed a bug where the Copy Layer node would still output copies when one of the input lists was empty.
  • vuo.leap
    • Added Find Hands by Side and Find Hands by Confidence.
    • Added the output port isExtended to the Get Pointable Values node.
    • Added the output ports palmWidth, wristPosition, pinchAmount, grabAmount, timeVisible, isLeftHand, confidence to the Get Hand Values node.
    • Modified the Get Hand Values and Get Pointable Values nodes so they output transforms instead of normals/positions/scales.
    • Merged the stabilizedTipPosition and tipPosition ports of Get Pointable Values into a single Tip Position port that outputs the stabilized position.
    • Changed the pointables output port of Get Hand Values to Fingers.
    • Renamed the Filter nodes to Find.
    • Clarified and updated documentation.
  • vuo.list
    • Added Get First Item in List, Get Last Item in List, and Get Random Item from List.
    • Added Shuffle List, Reverse List, Cut List, and Append Lists.
    • Added Take from List, Insert in List, and Add to List.
    • Fixed a bug in the Cycle through List node where an event to Go To First followed by an event to Go Forward would cause the node to output the second list item instead of the first.
  • vuo.math
    • Added Average.
    • Added Keep Minimum, Keep Maximum, and Keep Average.
    • Added Fit in Range.
    • Added Make Random Value, Make Random List, Make Random Value with Seed, and Make Random List with Seed.
    • Extended the Scale node to work for 2D and 3D points.
    • Merged the integer and real versions of Count within Range and Limit to Range into generic nodes that cover both types.
    • Added default values to the Snap Value node.
    • Shortened the output port names for the Round, Round Up, and Round Down nodes.
    • Made the Count within Range node default to integers instead of reals, and added documentation explaining the difference between the two variants of the node.
    • Fixed the inability to run a composition that contained both a generic version and a Real version of the Calculate Absolute Value node.
    • Fixed a crash in Snap Value when given a spacing of 0.
    • Fixed a crash in Divide with Remainder when dividing by 0.
  • vuo.mesh
    • Fixed the position of the triangle output by the Make Triangle Mesh node so that it’s centered around the origin. (Thanks to @destroythings for reporting this bug!)
    • Fixed a crash in the Make Parametric Mesh node when working with large numbers of rows and columns.
  • vuo.midi
    • Added Track Notes and Track Single Note.
    • Separated the MIDI device port type into MIDI Input Device and MIDI Output Device. Changed the Receive MIDI Events node to only accept a MIDI Input Device, and the Send MIDI Events node to only accept a MIDI Output Device. Split the Get MIDI Device Values and Make MIDI Device from * nodes into separate nodes for input and output devices.
    • Simplified the Filter MIDI Note and Filter MIDI Controller nodes by removing and changing some input ports to streamline the most common usage.
    • Shortened the node class name for Convert Note to Frequency.
  • vuo.noise
    • Added Make Random Value, Make Random Value with Seed, Make Random List, and Make Random List with Seed`.
  • vuo.osc
    • Added support for 64-bit floating point (double) OSC messages.
    • Fixed crashes when live-coding with nodes that input an OSC Message.
    • Fixed a crash when manually firing an event from the Receive OSC Messages node’s trigger port.
    • Fixed a crash in Receive OSC Messages when a malformed message is received.
  • vuo.point
    • Added Merge XY Lists and Merge XYZ Lists.
    • Added nodes to convert between lists of integers, reals, and 2D and 3D points.
    • Merged the Add Points and Subtract Points nodes into the vuo.math Add and Subtract nodes.
  • vuo.scene
    • Added Change 3D Object Blending. (Thanks to @George_Toledo for suggesting this feature!)
    • Added Get List of Scenes.
    • Renamed Get Scene to Fetch Scene.
    • Changed the output of the Copy 3D Object and Copy 3D Object with Transforms nodes from a list of objects to a single object.
    • Fixed a bug where the Copy 3D Object node would still output copies when one of the input lists was empty.
    • Fixed flickering on some GPUs in compositions that use the Explode Object node.
  • vuo.select
    • Added 8-port versions of Select Input, Select Output, and Select Latest (as a stopgap until we implement the ability to dynamically change the number of ports).
  • vuo.shader
    • Renamed Shade with Normal Colors to Shade with Vertex Normals, and improved its documentation.
    • Shortened the node class names for Change Shader for Material and Change All Shaders.
  • vuo.syphon
    • Renamed the Filter nodes to Find.
    • Fixed the inability to run a composition that contained both a Send Image via Syphon node and a Receive Image via Syphon node.
  • vuo.text
    • Renamed the Cut node to Cut Text, and renamed its startIndex port to Start Position.
  • vuo.time
    • Modified the Measure Time node so that when its reset port receives an event, it lets one final event through (with elapsedTime of 0).
    • Fixed the erroneous port action icon on the Fire Periodically node’s seconds port.
  • vuo.transform
    • Added Combine Transforms.
    • Added Get Transform Rotation, Get Transform Quaternion, Get Transform Scale, and Get Transform Translation.
    • Added Get 2D Transform Rotation, Get 2D Transform Scale, and Get 2D Transform Translation.
  • vuo.type
    • Added Convert Frame to Timestamp and Convert Frame to Image.
    • Removed Discard Data from Event type-converter nodes (no longer needed, since you can now create event-only cables from data-and-event output ports).
  • vuo.video (renamed from vuo.movie)
    • Added Receive Live Video, List Video Devices, and Make Video Input.
    • Added output of the current timestamp when playing or decoding movies.
    • Fixed loud, crackling audio output for movies encoded in Linear PCM format (thanks to @pbourke for reporting this!).
    • Fixed some movies looping or crashing when using mirror mode in the Play Movie node.
    • Fixed the inability to load movies from relative paths in exported apps and from HTTP URLs (thanks to @bLackburst for reporting this!).
    • Fixed a crash when using two Play Movie nodes with the same movie file.
    • Fixed crashes when playing movies of certain formats.
    • Fixed a bug in the Play Movie node where changes to playbackRate while a movie was playing did not take effect until after the play port received another event. (Thanks to @pbourke for reporting this issue!)
    • Fixed a crash when playing a movie whose audio is 5.1 surround sound encoded with the Apple Lossless codec.
  • vuo.window
    • Added Change Mouse Cursor.
    • Fixed the Change Window Size node so that it anchors the window at its top-left corner instead of the bottom-left.
    • Fixed a bug where a window snaps back to its original position if the Change Window Aspect Ratio node changes the aspect ratio while the window is being dragged.
  • Removed done ports from all nodes (obviated by the new ability to create event-only cables from data-and-event output ports).
  • Changed the windowProperties port to setWindowProperties on the Render * to Window nodes, so that window properties don’t get re-applied each time the node receives events through other input ports.
  • Improved keywords for searching the Node Library. Added all port names as keywords for the nodes that contain them. Added “input” and “output” as keywords for Receive * and Send * nodes.
  • Renamed URL input ports on several nodes for consistency.
  • Added support for user-relative file paths (e.g., ~/Documents/image.png) in URL input ports (thanks to @bLackburst for requesting this!).
  • Renamed terms ports to values for clarity.
  • Renamed alpha ports to Opacity.
  • Made rendered meshes look better by enabling multisampling for most GPUs. (It was disabled in Vuo 0.8 to prevent incorrect rendering that occurred on some GPUs.)
  • Fixed small memory leaks in several node sets, including vuo.audio, vuo.keyboard, vuo.mesh, vuo.midi, vuo.point, vuo.scene, and vuo.screen.
  • Fixed intermittent crashes when stopping a composition that displays a graphics window.
  • Fixed a bug on Mac OS X 10.9 where, if “Displays have separate spaces” is disabled, multiple windows could not become fullscreen. (Thanks to @pbourke for reporting this problem!)
  • Fixed a bug on Mac OS X 10.7 and 10.8 where multiple windows could not become fullscreen. (Thanks to @mnstri for reporting this problem!)
  • Fixed crashes when running graphics compositions on Mac OS 10.10 (Yosemite). (Thanks to @gautjac, @prackvj, and @mnstri for reporting this problem!)

Vuo Editor

  • Added the ability to drag and drop files onto the canvas to create a Get Image, Get Scene, Play Audio File, Play Movie, or Warp Image with Projection Mesh node. (Thanks to @richardbyers and @cwright for requesting this feature!)
  • Added the ability to drag and drop files onto input editors for URLs. (Thanks to @mnstri and @lov for suggesting this feature!)
  • Added the ability to create event-only cables from data-and-event output ports — hold ⌥ (Option) while dragging a cable, or simply drag a cable from a data-and-event port onto an event-only port.
  • Added the ability to edit constant values in published input ports.
  • Improved the ordering of the Edit menu.
  • Allowed cables to be dragged while the composition is reloading after being edited during live coding.
  • Added a “Show Events” button and a “Zoom to Fit” button to the toolbar. (Thanks to @jte2384 for suggesting this!)
  • Used the native Mac OS X style for the toolbar.
  • Removed the cable directionality indicator — cables are now solid lines.
  • Updated the stateful node indicator bar to match the new cable style.
  • Improved the performance of rendering compositions on the canvas.
  • Fixed bug where dragging a cable outside the window could cause the canvas viewport to move far away from the composition.
  • Better centered the event barrier on event-only trigger ports.
  • Improved formatting of constant flags for port types that previously showed JSON-formatted text.
  • Enabled unsaved compositions to use files with relative paths, if these files are placed on the Desktop.
  • Changed the color of cables to match the tint of the node whose output port they’re connected to. (Thanks to @Pianomatic for suggesting improvements to cable tinting!)
  • Removed the arrow from the display of type-converter nodes. (Thanks to @vade for suggesting that the arrow be reconsidered!)
  • Enabled cables to be drawn “backward”, from an input port to an output port. (Thanks to @Pianomatic for requesting this feature!)
  • Improved the behavior when a node title is deleted. Instead of becoming blank, the title reverts to the default.
  • Added an animation when an event is manually fired, to give feedback that the control-click or menu item selection succeeded.
  • Enabled port values and other information to be preserved in port popovers after the composition is stopped.
  • Improved display of nonprintable characters (e.g., linebreaks) in port popovers.
  • Displayed port names in a more readable format — with spaces rather than camelCase, and starting with an uppercase letter. (Thanks to @vade for suggesting this!)
  • Modified the Node Documentation Panel to show the composition’s description if it has one.
  • Changed the highlighting of ports when dragging a cable to distinguish between connections that do and don’t require a type-converter node.
  • Moved port action triangles to align with the x-height of port labels, instead of the ascender height. (Thanks to @vade for suggesting making this adjustment!)
  • Added information about event dropping to port popovers for trigger ports.
  • Hid port labels on ports whose purpose is evident from the node title.
  • Updated Vuo’s codesigning so that Gatekeeper will allow Vuo to run on Mac OS X 10.9.5 and up.
  • Moved the node preview to the top of the node documentation panel.
  • Added the ability to edit constant values in published input ports. (Thanks to @lov for suggesting this!)
  • Added the ability to modify the slider/spinner range and step when editing constant values in published input ports. (Thanks to @lov for suggesting this!)
  • Added ⌘-D (Command-D) as a shortcut for duplicating nodes. (Thanks to @mnstri and @George_Toledo for suggesting this!)
  • Added a visual indication (antenna) for published ports when the published port sidebars are hidden.
  • Enabled copying text from the Node Documentation Panel.
  • Displayed constant values, instead of empty constant flags, for Transform input ports.
  • Adjusted the green background of the published ports sidebar so it doesn’t clash with the green node tint.
  • Fixed the license information shown in the About box of a composition when run within Vuo Editor.
  • Fixed the “You can’t open the application X because it may be damaged or incomplete” error when renaming an .app file created by exporting a composition.
  • Fixed the toolbar icons appearing in low resolution on Retina displays.
  • Fixed the node interface icon overlapping the typographic descenders at the end of node titles (e.g., Receive Keyboard Typing).
  • Fixed unnecessary composition reloads when editing a Calculate node’s math expression during live coding.
  • Fixed constant flags not being shown for input ports connected to event-only published ports.
  • Fixed a bug where connecting a data-and-event cable to an input port would (correctly) delete a data-and-event cable connected to a published port but would also (incorrectly) delete event-only cables to published ports.
  • Fixed a bug where a drawer could be reverted to a generic type even though its attached node cannot.
  • Fixed a bug where a drawer could become duplicated after changing its attached node to a generic type.
  • Fixed a bug where a port would appear stranded after creating a type converter.
  • Fixed a bug where some cables and constant values would be unnecessarily deleted when changing a port to a generic type.
  • Fixed a bug where the Node Library sometimes did not keep its previous dimensions when the Vuo Editor was restarted.
  • Fixed a bug where searching the Node Library would not show all results for nodes that have spaces in a keyword.
  • Fixed the missing checkmark next to the active document in the Window menu.
  • Fixed a bug where port popovers and Show Events mode missed events that occurred immediately after the composition started.
  • Fixed list input port values sometimes failing to update when a drawer was resized during live coding.
  • Fixed a crash when dragging a cable from a sidebar published output port to an internal output port.
  • Fixed an occasional crash related to feedback detection while dragging a cable.
  • Fixed a bug where Vuo Editor sometimes behaved as though a drag was happening when switching between windows.
  • Fixed a bug where published cables would be in the wrong place immediately after the Node Library was undocked or hidden.
  • Fixed a bug where cables would sometimes be in the wrong place immediately after a type-converter node was added or removed.
  • Fixed a crash when opening a font input editor through an input port’s context menu.
  • Fixed the warning from Apple’s Gatekeeper when trying to open the Vuo Editor or an app exported from Vuo on Mac OS 10.9.5 or later.
  • Fixed a bug where the Vuo Editor would have to be force-quit after trying to run a composition with an outdated or broken 3rd-party node. Now it pops up an error dialog explaining the problem.

Documentation

  • Clarified and updated many parts of the documentation.
  • Published the node documentation on http://doc.vuo.org/.
  • User manual
    • Fixed an extra “the” in a sentence. (Thanks to @prettysg for pointing this out!)
    • Added an explanation of events specifically for people with experience using Quartz Composer.
    • Updated the screenshots with ones taken on Mac OS 10.10 with Retina.

Vuo Compiler

  • Fixed linking unnecessary dependencies into compiled compositions. This significantly reduces the time it takes to build a composition.
  • Fixed files being left in the /tmp directory after compiling a composition that contains generic nodes.
  • Fixed memory leaks of several megabytes that occurred when compiling and linking compositions.
  • Fixed a bug where some nodes would be compiled with the wrong data types for unspecialized generic ports, causing a composition build failure.
  • Fixed “invalid option” warnings printed to console when running an exported app.
  • Fixed bugs when saving and opening compositions containing published ports. Published port names are no longer allowed to contain underscores.

SDK

  • Updated Vuo Framework’s codesigning so that Gatekeeper will allow it to run on Mac OS X 10.9.5 and up.
  • Removed the obsolete RunImageFilter-Cocoa examples which used Vuo’s C++ API (refer to VuoPluginApp instead, which uses Vuo’s Cocoa API).
  • Vuo compiler and runner
    • Improved error handling in the VuoPluginApp example.
    • Modified the Cocoa API so that the global root context for a VuoImageGenerator or VuoImageFilter doesn’t need to be kept unlocked during certain API calls. Also clarified the documentation on GL context locking. (Thanks to @lov for reporting this issue!)
    • Added a section to the API documentation explaining that the Vuo framework contains encryption.
    • Fixed a crash in VuoRunnerCocoa when converting a list of VuoImages to a list of NSImages.
    • Fixed intermittent crashes when using the compiler on multiple threads.
  • Vuo nodes, types, and input editors
    • Added a Qt Creator wizard for creating port types consisting of enums.
    • Removed the need to implement input editors for enum port types. The Vuo Editor automatically creates the input editor.
    • Added the VLV function to easily print values for debugging.
    • Changed the arguments to VuoInputData, VuoInputEvent, VuoOutputData, VuoOutputEvent, and VuoOutputTrigger to allow each to specify a JSON structure of details and to move some of their arguments into the JSON structure.
    • Added the ability to specify a display name for a port.
    • Renamed the VuoList getter and setter functions for brevity.
Version
0.9.0