Vuo 1.2’s biggest new feature is subcompositions: the ability to turn a composition into a reusable node in your Node Library.
This release also makes all-around performance improvements, with large compositions taking less time to start up after you’ve hit the Run button and with complex graphics compositions running more smoothly. And this release adds numerous new nodes, including nodes for beat detection, OSC sending, USB HID, and dates/times.
Changes
Here’s what we’ve done in the last 7 months:
Example Compositions
- New
- “Animate on Schedule”
- “Bounce Dots to the Beat”
- “Display Image Feedback”
- “Flash on Mouse Press”
- “Fly at Warp Speed”
- “Jump Dot to the Beat”
- “Move Dots with Two Mice”
- “Move Icosahedron with SpaceNavigator”
- “Move through Tube with Fisheye”
- “Offset Oscillations”
- “Posterize Movie”
- “Replace Colors In Gradient”
- “Show Bar Chart”
- “Show Dragged Images”
- “Show Elapsed Time”
- “Show Frost Noise”
- “Show Icons and Filenames”
- “Show Noise Image”
- “Show Random Image”
- “Show Random Points”
- “Show Second Ticks”
- “Show Sphere through Warped Plastic”
- “Show Trees with Fisheye”
- “Show URL Components”
- “Toggle Fullscreen”
- Modified
- Updated “Scan Barcodes” and “Rotate in Sequence” to use the new Reached Target port on the
Smooth
nodes, and moved “Rotate in Sequence” into thevuo.motion
node set. - Improved performance of “Show Audio Frequencies”.
- Improved performance of “Scale Audio Input”, and kept its image trail from blurring.
- Simplified “Compare Stereo Types”, now that window size can be specified directly in pixels.
- Removed
Make 2D Transform
andMake 3D Transform
nodes from compositions that no longer need them, now that 2D and 3D Transforms have input editors. - Removed the demonstration of “Top by Bottom Full” mode from “Compare Stero Types”, since it doesn’t fit on a typical non-Retina MacBook display.
- Fixed a bug in “Play Blues Organ” where pressing one key, then pressing another key, then releasing the first key would cut off the note for the second key.
- Fixed an intermittent brief sound upon starting “Play Blues Organ”.
- Fixed flickering in “Select Gradient” when the mouse is dragged in certain directions.
- Updated “Scan Barcodes” and “Rotate in Sequence” to use the new Reached Target port on the
Built-in Nodes, Types, and Input Editors
-
vuo.app
- Added
Launch App
. (Thanks to @AdrienM1 for requesting this node!)
- Added
-
vuo.artnet
- Fixed a bug in
Make Art-Net IP Output
where multiple devices that unicast to the same IP but different universes would be treated as a single device. (Thanks to @zwei-p for reporting this bug!)
- Fixed a bug in
-
vuo.audio
- Added
Detect Beats
. - Added
Are Samples Populated
. - Improved performance of
Calculate Amplitude for Frequencies
. - Allowed
Mix Audio Channels
to be used as a typeconverter node. - Fixed incorrect sample rates output from
Mix Audio Channels
. - Fixed occasional crashes when stopping a composition that contains
Receive Live Audio
. - Fixed clicks caused by the
Adjust Loudness
node during fast changes of loudness and when starting a composition.
- Added
-
vuo.console
- Added “Copy” and “Select All” menu items to the menu shown by
Display Console Window
. - Prevented the console window from automatically scrolling when the user has scrolled up and is not at the end.
- Added “Copy” and “Select All” menu items to the menu shown by
-
vuo.data
- Added
Fetch Data
.
- Added
-
vuo.event
- Added
Allow Changes
. - Added support for more data types in
Changed
. - Removed the unnecessary doors from the
Are All Hit
node’s input ports.
- Added
-
vuo.file
- Added
Create Folder
. - Changed the
List Files
node to treat OS X app bundles as files instead of folders. (Thanks to @Bodysoulspirit for reporting this confusing behavior!) - Changed the output of the
List Files
node from paths to URLs.
- Added
-
vuo.font
- Added a Horizontal Alignment port to
Make Font
. (Thanks to @Bodysoulspirit for suggesting this feature!)
- Added a Horizontal Alignment port to
-
vuo.image
- Added
Make Noise Image
. - Added
Make Random Image
. - Added
Posterize Image
. - Added
Blend Image with Feedback
. - Added
Is Image Populated
. - Added
Radially Offset Image RGB Channels
. - Added Replace Opacity input port to
Vignette Image
. - Sped up the loading of large, fully-opaque images (such as JPEGs) with
Fetch Image
. - Improved performance of nodes that create an Image data value, such as
Fetch Image
. - Fixed a bug where, on some GPUs,
Blend Images
would output black pixels in regions where the background image was expected. (Thanks to @lov for reporting this problem!) - Fixed a bug where
Crop Image Pixels
would not limit the output image’s height to the input image’s. (Thanks to @sean.byrne for reporting this bug!) - Fixed a crash in
Find Barcode in Image
when scanning videos of certain PDF417 barcodes. (Thanks to @gabe for reporting this bug!) - Fixed line numbers for warnings/errors in the code entered into
Make Image with Shadertoy
. - Fixed a crash in
Sample Color from Image
when the point to sample is outside the image’s bounds. - Fixed a bug where
Apply Mask
ignored transparency in the input image. - Fixed a crash when
Fetch Image
received a null URL, for example ifFetch RSS Items
fetched an item that lacked an image. - Fixed the output for Saturation inputs less than -1 in
Adjust Image Colors
. It now clamps at -1, keeping the saturation grayscale.
- Added
-
vuo.layer
- Added
Is Layer Populated
.
- Added
-
vuo.list
- Added
Change Item in List
. - Added
Is List Populated
.
- Added
-
vuo.math
- Added
Scale List
andMultiply Lists
. (Thanks to @lkaser for inspiring these nodes!) - Added
Add Lists
. - Added
Are Not Equal
. - Added
Compare Numbers
. - Added support for random, Perlin noise, simplex noise, and atan2 functions in
Calculate
. - Fixed a crash in
Count within Range
when the Minimum port value is one greater than the Maximum.
- Added
-
vuo.mesh
- Added
Is Mesh Populated
. - Renamed
Make Parametric Mesh
toMake Parametric Grid Mesh
.
- Added
-
vuo.midi
- Added
Filter and Smooth Controller
.
- Added
-
vuo.motion
- Added a Phase port to the
Wave
node. (Thanks to @useful design for suggesting this feature!) - Added a Reached Target port to
Smooth with Duration
,Smooth with Rate
,Smooth with Inertia
, andSmooth with Spring
.
- Added a Phase port to the
-
vuo.mouse
- Improved performance of
Check Mouse Status
. - Avoided firing events from
Receive Mouse Deltas
for deltas that are 0 on both axes. - Fixed a bug where, in a fullscreen composition,
Receive Mouse Clicks
would report the position of the mouse as it was slightly after the click instead of at the moment of the click. (Thanks to @Bodysoulspirit for reporting this bug!)
- Improved performance of
-
vuo.osc
- Added
Send OSC Messages
,Make Message
,List OSC Devices
,Find OSC Inputs by Name
,Find OSC Outputs by Name
,Get OSC Input Values
,Get OSC Output Values
,Make OSC Input
,Make OSC Output
, andMake OSC IP Output
. - Added a
Get Message Values
node with 11 ports. (Thanks to @bboylalu and @zwei-p for asking about this!) - Replaced the
Receive OSC Messages
node’s UDP Port input port with a Device input port.
- Added
-
vuo.point
- Renamed
Measure Distance between Points
toMeasure Distance
. - Renamed
Make Parametric Grid
toMake Parametric Grid Points
. - Improved performance of
Merge XY Lists
andMerge XYZ Lists
.
- Renamed
-
vuo.rss
- Added
Find RSS Items by Title
,Find RSS Items by Author
, andFind RSS Items by Description
. - Added an Image URL port to
Get RSS Item Values
so that images can be downloaded separately from the main feed, reducing the time it takes forFetch RSS Items
to execute. (Thanks to @Bodysoulspirit for asking about this!)
- Added
-
vuo.scene
- Added
Make Fisheye Camera
andMake Targeted Fisheye Camera
(Vuo Pro). - Added
Make Icosphere
,Make Cone
, andMake Torus
. - Added
Make Random Points Object
. - Added
Is Scene Object Populated
. - Added support for meshes created in Blender 2.63 and later in
Fetch Scene
. (Thanks to @MartinusMagneson and @Bodysoulspirit for requesting this feature!) - Added support for FBX 2011, FBX 2012, and FBX 2013 meshes in
Fetch Scene
. - Added ports Rows and Columns to
Make Cube with Materials
. - Improved performance of
Add Noise to 3D Object
andExplode 3D Object
. - Changed how the Transform is interpreted in the
Copy Layer
,Copy Layer with Transform
,Copy 3D Object
, andCopy 3D Object with Transform
nodes. These nodes now respect the transform of the input layer/object in addition to the transform input of the node. - Renamed
Make 3D Grid Lines
toMake 3D Grid Lines Object
andMake 3D Grid Points
toMake 3D Grid Points Object
. - Fixed the inability of
Fetch Scene
to load OBJ files that have multiple spaces in their texture coordinate lines. (Thanks to @ajm for reporting this bug!) - Fixed a bug in
Displace 3D Object with Image
, and other 3D object filters that rely on texture coordinates, where texture coordinates from an old 3D object input could taint a new 3D object input if the new one comes from a node such asMake 3D Grid Points
that doesn’t provide texture coordinates. (Thanks to @Magneson for reporting this problem!) - Fixed a bug where
Make Sphere
andMake 3D Square
would output an invalid scene when Rows and Columns are too small. - Fixed an inconsistency between
Make 3D Square
and similar nodes by making this node output a single-sided object instead of two-sided. - Fixed the handling of the alpha channel (opacity) when Channel is set to anything other than Alpha in the
Displace Object with Image
node. - Fixed
Make Draggable Camera
on Mac OS 10.11. - Fixed a bug in Vuo 1.2.0 alpha 4 where
Make Icosphere
wrapped its texture differently thanMake Sphere
. (Thanks to @alexmitchellmus for reporting this bug!)
- Added
-
vuo.screen
- Avoided an unnecessary slowdown when an event hits
Capture Image of Screen
without changing the screen.
- Avoided an unnecessary slowdown when an event hits
-
vuo.shader
- Added
Shade with Frosted Glass
.
- Added
-
vuo.syphon
- Fixed a crash in some compositions with a
Make Server Description
node connected to the input port of another node. (Thanks to @Magneson for reporting this crash!)
- Fixed a crash in some compositions with a
-
vuo.text
- Added
Is Text Populated
. - Added a Minimum Decimal Places (zero padding) port to
Format Number
, and renamed some of the other ports for clarity. (Thanks to @pbourke for requesting this feature!)
- Added
-
vuo.time
- Added
Schedule
. - Added
Fetch Date-Time
,Get Date-Time Values
,Get Relative Date-Time Values
,Make Date-Time
,Make Relative Date-Time
,Offset Date-Time
,Round Date-Time
,Are Date-Times Equal
,Are Times-of-Day Equal
,Is Time-of-Day After
,Is Time-of-Day Before
,Calculate Elapsed Time
, andFormat Date-Time
. (Thanks to @bLackburst (https://vuo.org/node/198) and @pbourke (https://vuo.org/node/421) for suggesting time nodes!)
- Added
-
vuo.type
- Added
Is Real Nonzero
. - Added more nodes to convert between real numbers and points, and renamed some of the existing nodes.
- Renamed
Convert Integer to Boolean
toIs Integer Nonzero
.
- Added
-
vuo.ui
- Added
Receive File Drags
. (Thanks to @Bodysoulspirit for suggesting this node!)
- Added
-
vuo.url
- Added
Get URL Values
andGet File URL Values
. (Thanks to @architek1 for inspiring this feature!)
- Added
-
vuo.video
- Improved performance of video playback by using AVFoundation for some videos.
- Enabled AAC and MP3 audio tracks on videos to be played.
- Fixed skewed output images from
Receive Live Video
for certain cameras (PAR-corrected Firewire SD). (Thanks to @inadvisable for reporting this bug!) - Fixed a crash when using
List Video Devices
orMake Video Device
with certain UVC USB 2.0 cameras. (Thanks to @dumski for reporting this bug!) - Fixed incorrect colors in the output of
Receive Live Video
for certain cameras, such as Logitech C250 and Microsoft LifeCam Cinema. (Thanks to @MartinusMagneson for reporting this bug!) - Fixed occasional crashes when stopping a composition containing
Receive Live Video
. - Fixed the pause in video playback when
Play Movie
receives a rapid series of events into its Playback Rate input port. - Fixed a bug where editing the Playback Rate port of the
Play Movie
node would not affect the node’s output until another event hit the Play port.
-
vuo.window
- Added
Is Cursor Populated
. - Added a Unit port to
Change Window Size
andChange Window Position
, adding the option to specify the input in pixels instead of points.
- Added
- Added an input editor for 2D and 3D Transform ports.
- Improved performance of graphics nodes (creating shaders, applying 3D object filters, calculating bounds, using cameras, rendering scenes, rendering text).
- Changed the default image wrap mode to clamp in order to eliminate edge artifacts.
- Added a Multisampling (antialiasing) port to
Render Scene to Image
,Render Layers to Image
, andRender Scene to Stereo Images
. - Made the input editor for the Real Regulation type more accommodating of “incorrect” inputs. It can now accept a Minimum that is greater than the Maximum for inverse mapping. If the Minimum and Maximum are edited so that the Default is no longer within range, the Default is clamped.
- Added round, floor, ceil, trunc, fract, clamp, step, smoothstep, and mix functions to
Calculate
,Make Parametric Grid Points
,Make Parametric Grid Mesh
, andMake Parametric Points
. - Added a Noise Amount input port to the
Make Linear Gradient Image
,Make Radial Gradient Image
,Make Linear Gradient Layer
, andMake Radial Gradient Layer
nodes. - Fixed bugs with 3D objects flickering or disappearing on certain GPUs. (Thanks to @Bodysoulspirit for reporting this problem!)
- Fixed incorrect rendering of point meshes with some shaders on certain GPUs. (Thanks to @Bodysoulspirit for reporting this bug!)
- Fixed an intermittent crash when dragging a window from one screen to another. (Thanks to @krezrock for reporting this bug!)
- Fixed a bug where mouse clicks/drags on the composition window’s title bar were not ignored. (Thanks to @alexmitchellmus for reporting this problem!)
- Fixed handling of the Mac OS built-in fullscreen mode in 10.11. (Thanks to @Bodysoulspirit for reporting this problem!)
- Fixed a bug where the Color input editor would grow vertically each time it was reopened. (Thanks to @Magneson for reporting this problem!)
- Fixed occasional crashes when stopping a composition that renders graphics.
- Fixed rendering glitches on some GPUs when compositing linear or radial gradients in 16bpc mode.
- Fixed the incorrect positioning of the Color input editor. It now appears near the port.
- Fixed incorrect scaling for some aspect ratios of grids and layers/objects in
Arrange Layers in Grid
andArrange 3D Objects in Grid
when Scale To Fit is true. - Fixed a crash in compositions with a
Render Layers to Window
orRender Scene to Window
node when trying to quit the composition and put it in fullscreen mode at nearly the same time. - Fixed a bug where the window shown by
Render Layers to Window
orRender Scene to Window
could remain showing after deleting the node if the node had an outgoing cable from its Showed Window port. - Fixed a bug where the window shown by
Render Layers to Window
orRender Scene to Window
would not have focus immediately upon toggling fullscreen mode, causing a system beep for any key presses until the window was clicked to regain focus.
Vuo Editor
- Added a “Move Composition to Node Library” / “Save Composition to Node Library” menu item to turn a composition into a reusable node class (subcomposition).
- Enabled the “Tools > Open User Modules Folder” and “Tools > Open System Modules Folder” menu items to create these folders if they don’t exist. (Thanks to @cwright for suggesting this!)
- Added an optional
offlineFrameRate
input port to the Image Generator protocol, used when exporting a movie. (Thanks to @alexmitchellmus for requesting this feature!) - Enabled changing the image in a running Image Filter composition by dragging an image onto the window.
- Enabled .txt and .csv files to dropped onto a canvas window, creating a
Fetch Data
node. - Improved performance when running compositions by reducing the amount of communication between the composition and the editor.
- In the Export Movie dialog, added the ability to change the shutter angle (Vuo Pro).
- In the Export Movie dialog, added the ability to set custom framerates and image dimensions.
- Collapsed the “Specialize Port” context menu into one level, no submenus, when showing only a few types.
- Improved response time for Node Library searches.
- Made the previews of nodes in the Node Library fit better by omitting drawers.
- Added shortcut keys for changing the canvas transparency.
- Made it more efficient to insert a
Share Value
node by adding a context menu item to the canvas, and by making the constant value on an input port propagate to theShare Value
node’s input port when theShare Value
node gets connected. - Made node placement more convenient when using the Return key in the Node Library. The new node now appears underneath the mouse cursor.
- Enabled zooming to a selection. When “Zoom to Fit” is used while nodes or cables are selected, the canvas is zoomed to fit the selection.
- Changed the behavior of the “Undo” keyboard shortcut to be less confusing when using the Enter key in the Node Library to create nodes. The “Undo” now applies to the canvas, not the search bar.
- Improved readability of the error dialog for missing node classes in a composition.
- Added the
Summarize Value
node as an option when automatically inserting type-converter nodes. - Slightly lightened the canvas color in Dark Interface.
- Improved the formatting of Text data in popovers to make leading/trailing whitespace visible and to avoid interpreting HTML within the text.
- Added a “Tell us what you think” button to the composition window titlebar in the free trial.
- Added a keyboard shortcut to reopen the most recent file.
- Added a “Random Example” menu item.
- Improved the calculation of node width based on the title and ports, making many nodes narrower.
- Changed ‘Pr’ icon text to ‘Pro’ (visible in some menus and dialogs when using the Free Trial or a Standard (non-Pro) license).
- Fixed a bug where relative URLs in a composition would no longer point to the intended files after the composition was saved for the first time.
- Fixed a crash when using the button in the crash dialog to reopen a composition after it had crashed while running in the editor.
- Fixed the coloring of error popovers in Dark Interface.
- Fixed a bug where type-converter nodes whose only outgoing cable was event-only would be collapsed.
- Fixed a bug where, after connecting a data-and-event cable to an event-only. port and then undoing, the cable would appear as event-only.
- Fixed the lack of error handling when trying to open a composition that the user doesn’t have file permission to view.
- Fixed incorrect results when undoing or redoing while dragging a cable by temporarily disabling undo/redo during cable drags.
- Fixed the inability to stop a composition during a live-coding reload.
- Fixed failure in File > Export > Movie when started immediately after installing a new version of Vuo, or after installing or removing 3rd-party nodes (Thanks to @alexmitchellmus for your help troubleshooting this!)
- Fixed the color of bullet points in node descriptions in Dark Interface mode so they contrast with the background.
- Fixed the color of the Show Events toolbar button in dark mode when the window loses focus.
- Fixed an occasional crash when closing many compositions in rapid succession.
- Fixed a bug in Vuo 1.2.0 alpha 4 where changes to the Suggested Min/Max/Step on a composition’s published input port would not be preserved when the composition was turned into a subcomposition. (Thanks to @kingluma for asking about this!)
Documentation
- Clarified the documentation for many nodes.
- Manual
- Updated and expanded the “Common Patterns” section.
- Added information about subcompositions.
- Updated many other parts of the manual.
Vuo Compiler and Runtime
- Added the ability to turn a composition into a reusable node class (subcomposition) that can be used inside of other compositions. (Thanks to the many people who have advocated for this feature, including @mnstri for making a feature request and @George_Toledo for suggesting a feasible route to get basic subcompositions into this Vuo release.)
- Sped up compiling of larger compositions.
- Sped up compiling the first composition after installing a new node class. Third-party node classes are now cached separately from built-in node classes.
- Improved performance of running compositions (memory management, AppKit event loop, exclusive locks on nodes).
- Improved performance when running exported apps by eliminating communication that would normally go from the composition to the runner.
- Reduced the amount of events dropped by compositions, especially in situations where a slower-firing trigger would drop all of its events because it was competing with a fast-firing trigger.
- Fixed the 1-second wait when stopping a composition. (Thanks to @cwright for reporting this bug!)
- Fixed memory leaks of data fired from trigger ports during live-coding reloads.
SDK
- Composition runner API
- Added an option (enabled by default) to exit all running compositions if the runner process dies. (Thanks to @lov for requesting this feature!)
- Enabled a port’s menu items (for enum types) to be accessed from VuoRunner. Added a “menuItems” key to the return value of
VuoRunner::Port::getDetails()
. Replaced-[VuoRunnerCocoa menuItemsForType:]
with a “menuItems” key in the return value of-[VuoRunnerCocoa detailsForPort]
. (Thanks to @lumenav for suggesting this feature!) - Improved performance of VuoRunnerCocoa, VuoImageFilter, and VuoImageGenerator methods that get a composition’s image output as a GL texture. (Thanks to @lov for suggesting specific improvements!)
- Added VuoRunnerCocoa, VuoImageFilter, and VuoImageGenerator methods that get a composition’s image output and let the caller provide the GL texture in which it will be placed. (Thanks to @lov for suggesting this!)
- Disabled, by default, most types of telemetry from the composition to the runner to improve performance. Added “subscribe” functions (e.g.
subscribeToInputPortTelemetry()
) to VuoRunner for enabling specific types of telemetry. - Fixed a crash when running a Vuo composition that displays a window within a host app that has its own NSApplication. The Vuo composition no longer implements its own NSApplication subclass.
- Fixed a bug where the host app’s menu bar would not be restored when a Vuo composition window resigned main status.
- Node and type API
- Gave shaders the ability to capture what’s been rendered so far using the
renderBuffer
uniform. - Added standard comparison functions
<type>_isEqual
and<type>_isLessThan
to applicable types. - Added functions
VuoLog_backtrace
andVuoHeap_addTrace
to help with debugging.
- Gave shaders the ability to capture what’s been rendered so far using the
- Command-line utilities
- Fixed bug that meant that the
vuo-export
command-line utility didn’t copy the composition’s resources if run from a different folder than the composition - Avoided printing the “No Vuo license was found on this system” warning multiple times in
vuo-export movie
.
- Fixed bug that meant that the
Version
1.2.0
Files
Attachment | Size |
---|---|
vuo-1.2.0-sdk.zip | 56.57 MB |
vuo-1.2.0-src.zip | 17.03 MB |
vuo-1.2.0-editor.zip | 72.86 MB |
vuo-1.2.0-manual.pdf | 6.93 MB |
vuo-1.2.0-composition-examples.zip | 7.36 MB |