Skip to content

PraxisLIVE v4.4.0

Compare
Choose a tag to compare
@neilcsmith-net neilcsmith-net released this 29 Aug 18:17
· 227 commits to master since this release

PraxisLIVE v4.4.0 primarily involves under-the-hood changes as we gear up towards PraxisLIVE v5. It also brings some helpful UI improvements and a major change in how containers work.

The bundled JDK in the default installers is still Java 8, although there is an experimental Windows installer with Java 11. There is no macOS bundle with JDK 11 yet due to Processing crashes found in testing. It is possible to use the Zip bundle with a JDK of choice for experimentation.

NB. Use of PraxisLIVE / praxislive without the space is now consistent, and reflected in installation folders and binary names. This should only affect you if you have custom shortcuts to the IDE.

Changes

PraxisCORE runtime

  • Core
    • New base module providing simpler and more robust base root class and other utility classes. The new root implementation is currently used by generic data patches root:data and internal services. These changes will allow for removal and replacement of a lot of remaining legacy v1 code in v5.
    • The container component (core:container) now allows for exposing ports of any child component via its ports property (see IDE improvements below too). This is a map of IDs to relative port addresses. All specific input / output components (eg. audio:container:in) are now deprecated.
      • Known issue - removing a mapped port will disconnect all connections to the port, including those inside the container (the API is missing the ability to find only outside connections at present).
      • Known issue - deleting a container will sometimes leave child components connected. Always delete connections first. Workaround is to save and reload.
    • Added tell(ControlAddress to, ... msg) and tellIn(double seconds, ControlAddress to, msg) for sending messages to other components, and self() and self(String controlID) for getting own address. core:routing:send is now a re-codeable component.
    • Added @Config.Preferred annotation, mirroring Java's BeanInfo terminology for properties that are particularly important to display to "humans". See Graph Editor improvements for one usage. Added this annotation to value of core:variable component.
    • Tidy up and simplify core API. All Value types now use of() for wrapping a native Java type, parse for converting from text, etc. Call has shorter and simpler creation methods, and uses List<Value> for arguments. Many other methods are replaced, with older versions deprecated for removal in v5.
    • Catch errors rather than just exceptions during code context creation. Ensure that amongst other things, an UnsatisfiedLinkError won't take down the component factory service.
    • Functions in the code API that map through to Processing's PApplet have been deprecated. As part of the modularity effort for v5, only video modules will be able to require the Processing module. These can be accessed directly on the PApplet instance (and in v5 by static importing those functions) when it is known Processing is available.
    • Provided new Info builder class for creating ComponentInfo - currently of minimal end-user use until code components allow for info to be customized.
  • Video
    • video:code:p3d - added mappings for all supported Processing hint() values.
    • Deprecated video:gl:send and video:gl:receive - built-in support for Syphon and Spout. In v5 these can be better supported by adding libraries to projects. Prior to that, switch on display of deprecated components in the palette under Options/General/Components.
    • FIX video:code:p3d - now correctly resets hints and sphere detail on code change, which is not handled by the default settings in Processing. Only a problem since v4.3 started reusing the PGraphics3D.

PraxisLIVE IDE

  • Core
    • New table based property editors for array and map based properties. TAB will add new rows automatically, DELETE will remove a row. Copy & paste is supported.
    • Updated base IDE to Apache NetBeans 11.1.
  • Graph editor
    • Added support for showing properties on graph nodes next to related port. Default shows only "preferred" (see above) properties, but options (scene popup) provided to show/hide all. Double-click the value to edit directly. Showing all properties is good for debugging, but adds a little overhead due to syncing and rendering required.
    • Inside a container, a new popup menu option on ports allows adding the port to the container with an ID of choice. To remove or rename a mapping, use the map editor on the ports property.
    • ESC can now be used to go up from a container.
  • Code editor
    • Experimental inline hints from NetBeans 11.1 to show parameter names in method calls. Still some quirks and off by default - enable in the View menu.