Breaking changes
- The CHAR type has been removed as we could not find any one using it. It is instead replaced by a much more useful feature in the back-end which will be developed over the next few versions: a MAP type which will allow more advanced communication from / to JS scripts and groups of OSC addresses.
New features
- JS: support for using external libraries as JS modules. For now one has been added to the user library: total-serialism. Two examples have been implemented:
euclidean-melody
andclaves
to show how to use the library to generate randomized musical patterns. Further versions will provide examples that can convert that into MIDI to feed software synths - JS: add support for onValueChanged callbacks on inlets
- JS: add Impulse / Button widget types
- Explorer: Make device disconnected state more visible (#1433).
- UI: add a proper int spinbox widget
- UI: allow to copy the path of an object for remote control (right-click on an object name in the object tree view at the top right)
- JS console / scripting: add a
prompt
function to show an interactive UI prompt to the user. See the script below for an example. - JS console / scripting: allow to create WS and Serial devices from code directly. This has been used to create an script that would automatically create a WS device that matches a specific JSON format (https://github.com/ossia/score-user-library/blob/master/Scripts/ImportWebsocket.mjs).
- JS console / scripting: add a deviceToJson function which converts a given device to json which can be useful for saving presets
- Serial protocol: add the ability to coalesce messages in order to not spam slow serial ports too much. Docs will be updated soon: https://ossia.io/score-docs/devices/serial-device.html
- Serial protocol: add the ability to return data through byte arrays in order to send raw binary data for protocols that need it.
New features (plug-in API)
- Allow to define processes with groups of ports to simplify creating new processes with the same kind of ports duplicated many times (EQ strips, etc)
- Write many plug-in API tests, for instance to make sure that any kind of data can safely be passed between processes
- Add support for more texture formats in Avendish GPU nodes
- Add support for plug-ins that may need to access the ossia device tree to send custom OSC messages directly
Bugfixes
- Fix the default LFO range so that it always gives the full range when connected to another process
- Fix file watcher sometimes stopping working
- JS: many small bugfixes & perf optimizations for sending / receiving messages
- UI: fix bugs with processes that have file choosers in the inspector
- UI: fix bad library path used on start screen for th examples button
- ArtNet: allow more fixture formats to be supported.
- Fix WASM build due to SIMD issues
- Fix that closing scores with processes using compute shaders would crash
- Fix that image node would not work on some OpenGL driver due to using a reserved name for a variable in GLSL 4.5
- VST3: fix that MIDI output did not work. Note that right now only note-on / note-off messages are supported.
- Remote Control: allow simpler websocket message format for triggering parts of the score remotely
- Rework include paths handling. Not finished yet.
- Fix the LFO phase change.
- Fix invalid scaling for double slider
- Usual fixes for build platforms, Xcode 14, Qt 6.4, etc
- Execution: Fix that position changes were not processed when there was no other process than a tempo process in an interval
- Execution: code optimizations