Released on 2014.10.28
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 @GeorgeToledo 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 theCalculate Loudness
,Mix Audio Channels
, andSplit Audio by Frequency
nodes tosamples
. - Added walls to the non-audio ports of the
Adjust Loudness
andSplit 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.
- Renamed the
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
, andReceive BCF Right Buttons
.
- Added nodes
vuo.data
- Added
Hold List
andShare List
- Added
Summarize Value
. - Moved
Hold Value
into thevuo.data
node set.
- Added
vuo.file
- Added
List Files
. (Thanks to @pbourke for requesting this feature!)
- Added
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
, andCombine 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
toFetch 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!)
- Added
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.
- Fixed a crash in the
vuo.layer
- Added
Change Layer Blending
. - Added
margin
ports to theAlign Layers to Window
node. (Thanks to @ellington for inspiring this feature!) - Changed the output of the
Copy Layer
andCopy 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.
- Added
vuo.leap
- Added
Find Hands by Side
andFind Hands by Confidence
. - Added the output port
isExtended
to theGet Pointable Values
node. - Added the output ports
palmWidth
,wristPosition
,pinchAmount
,grabAmount
,timeVisible
,isLeftHand
,confidence
to theGet Hand Values
node. - Modified the
Get Hand Values
andGet Pointable Values
nodes so they output transforms instead of normals/positions/scales. - Merged the
stabilizedTipPosition
andtipPosition
ports ofGet Pointable Values
into a singleTip Position
port that outputs the stabilized position. - Changed the
pointables
output port ofGet Hand Values
toFingers
. - Renamed the
Filter
nodes toFind
. - Clarified and updated documentation.
- Added
vuo.list
- Added
Get First Item in List
,Get Last Item in List
, andGet Random Item from List
. - Added
Shuffle List
,Reverse List
,Cut List
, andAppend Lists
. - Added
Take from List
,Insert in List
, andAdd to List
. - Fixed a bug in the
Cycle through List
node where an event toGo To First
followed by an event toGo Forward
would cause the node to output the second list item instead of the first.
- Added
vuo.math
- Added
Average
. - Added
Keep Minimum
,Keep Maximum
, andKeep Average
. - Added
Fit in Range
. - Added
Make Random Value
,Make Random List
,Make Random Value with Seed
, andMake 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
andLimit 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
, andRound 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.
- Added
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.
- Fixed the position of the triangle output by the
vuo.midi
- Added
Track Notes
andTrack 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 theSend MIDI Events
node to only accept a MIDI Output Device. Split theGet MIDI Device Values
andMake MIDI Device from *
nodes into separate nodes for input and output devices. - Simplified the
Filter MIDI Note
andFilter 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
.
- Added
vuo.noise
- Added
Make Random Value
,Make
Random Value with Seed,
Make Random List, and
Make Random List with Seed`.
- Added
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
andMerge XYZ Lists
. - Added nodes to convert between lists of integers, reals, and 2D and 3D points.
- Merged the
Add Points
andSubtract Points
nodes into thevuo.math
Add
andSubtract
nodes.
- Added
vuo.scene
- Added
Change 3D Object Blending
. (Thanks to @GeorgeToledo for suggesting this feature!) - Added
Get List of Scenes
. - Renamed
Get Scene
toFetch Scene
. - Changed the output of the
Copy 3D Object
andCopy 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.
- Added
vuo.select
- Added 8-port versions of
Select Input
,Select Output
, andSelect Latest
(as a stopgap until we implement the ability to dynamically change the number of ports).
- Added 8-port versions of
vuo.shader
- Renamed
Shade with Normal Colors
toShade with Vertex Normals
, and improved its documentation. - Shortened the node class names for
Change Shader for Material
andChange All Shaders
.
- Renamed
vuo.syphon
- Renamed the
Filter
nodes toFind
. - Fixed the inability to run a composition that contained both a
Send Image via Syphon
node and aReceive Image via Syphon
node.
- Renamed the
vuo.text
- Renamed the
Cut
node toCut Text
, and renamed itsstartIndex
port toStart Position
.
- Renamed the
vuo.time
- Modified the
Measure Time
node so that when itsreset
port receives an event, it lets one final event through (withelapsedTime
of 0). - Fixed the erroneous port action icon on the
Fire Periodically
node'sseconds
port.
- Modified the
vuo.transform
- Added
Combine Transforms
. - Added
Get Transform Rotation
,Get Transform Quaternion
,Get Transform Scale
, andGet Transform Translation
. - Added
Get 2D Transform Rotation
,Get 2D Transform Scale
, andGet 2D Transform Translation
.
- Added
vuo.type
- Added
Convert Frame to Timestamp
andConvert 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).
- Added
vuo.video
(renamed fromvuo.movie
)- Added
Receive Live Video
,List Video Devices
, andMake 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 toplaybackRate
while a movie was playing did not take effect until after theplay
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.
- Added
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.
- Added
- 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 tosetWindowProperties
on theRender * 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 *
andSend *
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 tovalues
for clarity. - Renamed
alpha
ports toOpacity
. - 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
, andvuo.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
, orWarp 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 @GeorgeToledo 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 toVuoPluginApp
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
, andVuoOutputTrigger
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.