Releases: ossia/score
Continuous
What's Changed
- ui: improve useability of some UI widgets from JS ; add support for vulkan backend for QtQuick in JS by @jcelerier in #1871
- feature/rework nodes ui by @jcelerier in #1874
- feature/better console by @jcelerier in #1876
- ci: add a manual workflow to enable triggering builds with custom CMake options by @jcelerier in #1881
- [commandStack] fix #1879 by @thibaudk in #1883
- [command] add missing CreateTimeSync_Event_State in the CreatinMetaCommand by @thibaudk in #1885
- gfx: work on allowing nodes to pass gpu buffers instead of only textures by @jcelerier in #1882
- ci: update to sdk34 by @jcelerier in #1888
- qt: add support for qquick3d plugins if available by @jcelerier in #1890
- 3rdparty: update libsndfile by @jcelerier in #1893
- modify appimage.yml to avoid building older versions for CI/CD by @edumeneses in #1884
- feature/rework geometry by @jcelerier in #1906
- xwax: implement xwax for DVS timecode input by @jcelerier in #1911
- feature/js ui by @jcelerier in #1709
- spout: work on importing D3D11 textures in a VK context by @jcelerier in #1914
- midi: add support for interpreting and / or sending note on 0 instead of note off by @jcelerier in #1920
- ysfx: allow to use saike version if available by @jcelerier in #1921
- core: add a much more precise timer implementation than Qt timerEvent by @jcelerier in #1913
- Add midi sync objects by @jcelerier in #1918
- objects: add a queue object by @jcelerier in #1929
- arpeggiator: add more controls by @jcelerier in #1925
- ysfx: major improvements by @jcelerier in #1931
- update to sh4lt 0.2.0 by @nicobou in #1928
- feature/default devices by @jcelerier in #1935
- fixes/msvc by @jcelerier in #1938
- avnd: add support for more cases of texture inputs ; add a ArrayToTexture object by @jcelerier in #1943
- feature/background by @jcelerier in #1939
- feature/oauth by @jcelerier in #1944
- feature/audio splitter by @jcelerier in #1945
- feature/scrub tool by @jcelerier in #1947
New Contributors
- @edumeneses made their first contribution in #1884
Full Changelog: v3.7.1...continuous
What's Changed
- ui: improve useability of some UI widgets from JS ; add support for vulkan backend for QtQuick in JS by @jcelerier in #1871
- feature/rework nodes ui by @jcelerier in #1874
- feature/better console by @jcelerier in #1876
- ci: add a manual workflow to enable triggering builds with custom CMake options by @jcelerier in #1881
- [commandStack] fix #1879 by @thibaudk in #1883
- [command] add missing CreateTimeSync_Event_State in the CreatinMetaCommand by @thibaudk in #1885
- gfx: work on allowing nodes to pass gpu buffers instead of only textures by @jcelerier in #1882
- ci: update to sdk34 by @jcelerier in #1888
- qt: add support for qquick3d plugins if available by @jcelerier in #1890
- 3rdparty: update libsndfile by @jcelerier in #1893
- modify appimage.yml to avoid building older versions for CI/CD by @edumeneses in #1884
- feature/rework geometry by @jcelerier in #1906
- xwax: implement xwax for DVS timecode input by @jcelerier in #1911
- feature/js ui by @jcelerier in #1709
- spout: work on importing D3D11 textures in a VK context by @jcelerier in #1914
- midi: add support for interpreting and / or sending note on 0 instead of note off by @jcelerier in #1920
- ysfx: allow to use saike version if available by @jcelerier in #1921
- core: add a much more precise timer implementation than Qt timerEvent by @jcelerier in #1913
- Add midi sync objects by @jcelerier in #1918
- objects: add a queue object by @jcelerier in #1929
- arpeggiator: add more controls by @jcelerier in #1925
- ysfx: major improvements by @jcelerier in #1931
- update to sh4lt 0.2.0 by @nicobou in #1928
- feature/default devices by @jcelerier in #1935
- fixes/msvc by @jcelerier in #1938
- avnd: add support for more cases of texture inputs ; add a ArrayToTexture object by @jcelerier in #1943
- feature/background by @jcelerier in #1939
- feature/oauth by @jcelerier in #1944
- feature/audio splitter by @jcelerier in #1945
- feature/scrub tool by @jcelerier in #1947
New Contributors
- @edumeneses made their first contribution in #1884
Full Changelog: v3.7.1...continuous
What's Changed
- ui: improve useability of some UI widgets from JS ; add support for vulkan backend for QtQuick in JS by @jcelerier in #1871
- feature/rework nodes ui by @jcelerier in #1874
- feature/better console by @jcelerier in #1876
- ci: add a manual workflow to enable triggering builds with custom CMake options by @jcelerier in #1881
- [commandStack] fix #1879 by @thibaudk in #1883
- [command] add missing CreateTimeSync_Event_State in the CreatinMetaCommand by @thibaudk in #1885
- gfx: work on allowing nodes to pass gpu buffers instead of only textures by @jcelerier in #1882
- ci: update to sdk34 by @jcelerier in #1888
- qt: add support for qquick3d plugins if available by @jcelerier in #1890
- 3rdparty: update libsndfile by @jcelerier in #1893
- modify appimage.yml to avoid building older versions for CI/CD by @edumeneses in #1884
- feature/rework geometry by @jcelerier in #1906
- xwax: implement xwax for DVS timecode input by @jcelerier in #1911
- feature/js ui by @jcelerier in #1709
- spout: work on importing D3D11 textures in a VK context by @jcelerier in #1914
- midi: add support for interpreting and / or sending note on 0 instead of note off by @jcelerier in #1920
- ysfx: allow to use saike version if available by @jcelerier in #1921
- core: add a much more precise timer implementation than Qt timerEvent by @jcelerier in #1913
- Add midi sync objects by @jcelerier in #1918
- objects: add a queue object by @jcelerier in #1929
- arpeggiator: add more controls by @jcelerier in #1925
- ysfx: major improvements by @jcelerier in #1931
- update to sh4lt 0.2.0 by @nicobou in #1928
- feature/default devices by @jcelerier in #1935
- fixes/msvc by @jcelerier in #1938
- avnd: add support for more cases of texture inputs ; add a ArrayToTexture object by @jcelerier in #1943
- feature/background by @jcelerier in #1939
- feature/oauth by @jcelerier in #1944
- feature/audio splitter by @jcelerier in #1945
- feature/scrub tool by @jcelerier in #1947
New Contributors
- @edumeneses made their first contribution in #1884
Full Changelog: v3.7.1...continuous
What's Changed
- ui: improve useability of some UI widgets from JS ; add support for vulkan backend for QtQuick in JS by @jcelerier in #1871
- feature/rework nodes ui by @jcelerier in #1874
- feature/better console by @jcelerier in https://github.com/ossia/s...
v3.8.2
ossia score is a sequencer for audio-visual artists, designed to create interactive shows.
Sequence OSC, MIDI, DMX, sound, video and more, between multiple software and hardware. Create interactive and intermedia scores, script and live-code with JavaScript, ISF Shaders, Faust, PureData or C++. Leverage IoT protocols such as CoAP or MQTT, interact with joysticks, Wiimotes, Leapmotions, Web APIs and BLE sensors and integrate programs from a wealth of creative programming languages such as Structure Synth, Context-Free Art and Bytebeat. Load any kind of audio or video format and process visuals through Spout, Syphon, NDI, Shmdata or Sh4lt ; sonify large datasets with CSV and HDF5 support.
ossia score 3.8.2 is a minor bugfix release on top of the large 3.8.1 release.
Full Changelog: v3.8.1...v3.8.2
New features
- Graphics: support for HLG format and ICtCp-encoded videos. Better support for Display P3 and BT.2100.
- Vidéo: Add an "Auto" mode for picking the best tonemapping method for a given input content
Bugfixes
- Graphics: fix a double-uninit issue that could lead to crashes with some objects.
- Render pipeline: initialize blend modes to One instead of Zero in the raster pipeline renderer.
v3.8.1
ossia score is a sequencer for audio-visual artists, designed to create interactive shows.
Sequence OSC, MIDI, DMX, sound, video and more, between multiple software and hardware. Create interactive and intermedia scores, script and live-code with JavaScript, ISF Shaders, Faust, PureData or C++. Leverage IoT protocols such as CoAP or MQTT, interact with joysticks, Wiimotes, Leapmotions, Web APIs and BLE sensors and integrate programs from a wealth of creative programming languages such as Structure Synth, Context-Free Art and Bytebeat. Load any kind of audio or video format and process visuals through Spout, Syphon, NDI, Shmdata or Sh4lt ; sonify large datasets with CSV and HDF5 support.
ossia score 3.8.1 brings major video improvements, video mapping features, HDR support, full backwards playback, and many bug fixes.
Full Changelog: v3.8.0...v3.8.1
New features
- video: massive hardware decoding rework with D3D12 and Vulkan Video backends, thanks to FFMPEG. True zero-copy for Vulkan Video -> Vulkan render pipeline and VideoToolbox -> Metal ; 1 GPU copy otherwise.
- video: finish the implementation for GPU-accelerated rendering of pretty much every useful YUV format in existence: UYVY422, VUYA, XV30, Y210, YUV420, YUV420P10, YUV420P12, YUV422, YUV422P10, YUV422P12, YUV440, YUV444, YUV444P10, YUV444P12, YUVA420, YUVA444, YUVA444P10, YUVA444P12, YUYV422, ...
- time ruler: implement scrubbing by double-clicking and dragging.
- video: added automatic mode to pick the best hardware decoder for a given task.
- video: HDR support for Window output (tested on macOS and Windows).
- video: HDR shaders added to user library: tonemapping, exposure, OETF, etc.
- video: rework of color processing, proper support for full range MPEG, fix Cineform support
- video: hardware-decoded DXV
- video: add a direct synchronous playback option for formats that support it (HAP, DXV and other all-I formats)
- video: add .ts as acceptable extension
- video: add a multi-window output mode to handle multi-projector mapping, with soft-edge blending and warping.
- scenario: allow backwards playback
- process: add a VU meter object for audio visualization
- process: add a video mapper (rect-mapper) object in the user library for mapping multiple textures in one viewport.
- process: add an advanced-text object in the user library for fancy text rendering.
- process: add a presentation object in the user library because what use is a graphics software which isn't even able to render slides.
- isf: initial infrastructure for cubemap textures
- network: add a debug log panel to HTTP, WebSocket, etc.
- js: add Util.environmentVariable(), Util.timestamp(), file info utility functions
- js: add API functions for working with TimeVal
- js: add a positionChanged signal for UIs ; implement Score.scrub(milliseconds)
- js: store a path to allow processes that have local file dependencies to retrieve them ; enables creating advanced QML objects with multiple files.
- js: give access to Util in JSProcessModel
- mapper: add support for adding framing (SLIP, etc.) to stream-based protocols such as TCP
- cli: js: allow to run a script on startup with --script
- gfx: add infrastructure to allow objects to fetch a texture from a previous node instead of being rendered into
- ui: allow to disable the UI updates during execution for low power systems
- core: add SCORE_PRETTIFY_JSON=1 environment variable to save JSON indented
- tools: add a git update tool
Improvements
- ui: improve styling for Qt Quick objects
- ui: make it easier to start a drag from a port which already has a cable
- ui: make port labels clickable
- video: improve thumbnail computations and seeking logic
- video: better heuristics for direct video playback
- video: use software decoding as far as possible for thumbnails
- js: use Basic style for QML UIs to match score style
- js: force update of items on each tick to ensure View3D updates correctly
- create-app: include assets from score file directory in create-app scripts for all platforms. Thanks @ogauthiersat!
- 3rdparty: broad library update
- ci: update to SDK 36 (FFmpeg 8.1)
- msvc: update to VS2026
Bugfixes
- ui: fix that library download check had been moved to opening the settings UI
- ui: fix wrong condition to check whether value input is some binary string
- ui: fix scroll in timeline view scrolling the interior of nodal views
- metal/d3d: fix background texture inverted. Fixes #1968
- exec: fix looping when playing backwards
- scenario: drop on cable: fix crash when a node would be changed in a separate slot upon drag and drop
- video: fix IgnoreTempo property read missing regression. Thanks @ogauthiersat!
- video decoder: add a missing flush
- lfo: fix phase in quantified mode
- lfo: fix phase missing a multiplication by pi
- js: fix state not restoring on graph change
- js: fix using background textures from QML in hidden views
- js: fix a QtQuick3D deletion order issue
- js: fix passing paths that have LIBRARY: or PROJECT: prefixes
- js: GPU node fixes for state handling
- qml: put the ASIO state in a separate thread-safe object to prevent concurrency issues in mapper device
- qml: set simpler environment for Python support
- coremidi: fix observer not being initialized
- core: fix settings crash on close
- core: make the settings children of qApp so that JS engine does not appropriate them
- ports: fix changing between ControlInlet and ValueInlet at runtime for e.g. JS script
- avnd: variable ports: fix missing resize of intermediary buffers
- avnd: increase resiliency against 0 I/O channels ; fix order of calls for channel allocation
- avnd: fix that buffers were only up to 31 bit size, instead of 32. 4GB buffers are now possible if the GPU handles it.
- gfx: prevent a node that has been just removed to be added again as a preview node
- gfx: null check fix in buffer release
- preview: fix gamma blending
- model display: fix that preview had broken
- fft: kfr: fix an issue with deallocation
- linux: fix missing avahi-daemon program warning on some distros. Thanks @ogauthiersat!
- tools: fix missing line feed in mac custom app launcher environment. Thanks @ogauthiersat!
- core: prevent dummy warning with Clang 22 on each COUNTER
v3.8.0
ossia score is a sequencer for audio-visual artists, designed to create interactive shows.
Sequence OSC, MIDI, DMX, sound, video and more, between multiple software and hardware. Create interactive and intermedia scores, script and live-code with JavaScript, ISF Shaders, Faust, PureData or C++. Leverage IoT protocols such as CoAP or MQTT, interact with joysticks, Wiimotes, Leapmotions, Web APIs and BLE sensors and integrate programs from a wealth of creative programming languages such as Structure Synth, Context-Free Art and Bytebeat. Load any kind of audio or video format and process visuals through Spout, Syphon, NDI, Shmdata or Sh4lt ; sonify large datasets with CSV and HDF5 support.
ossia score 3.8.0 is a major release introducing a lot of new features, UX improvements and back-end improvements.
Full Changelog: v3.7.1...v3.8.0
New features
- arpeggiator: add more controls, add a random mode
- array tool: add a way to insert and erase values in the input array at a regular stride
-
ci: add a manual workflow to enable triggering builds with custom CMake options, to enable building customized versions of score with only specific plug-ins
-
code editor: add built-insearch with Ctrl+F
- console: implement completion, persistent history and readline-like shortcuts
- core: add utility functions to detect MDM enrollment
- core: allow loading addons that have runtime dependencies in Documents/ossia/score/support/
- core: change process priority on startup on win32
- cuda: add utility function to check whether it is available
- custom ui: add support for QtWebView if available (needs a source build, we won't ship QtWebEngine as it requires a MSVC Qt build)
- custom ui: allow to override appname/domain/etc with env vars to simplify custom apps
- custom ui: greatly improve the capabilities for creating custom apps on top of ossia score: support QRC files, icons, etc. Add helper scripts and templates to allow people to create their own custom ossia score-based apps.
Examples of custom apps made with ossia: Koaia and LivePose
- custom ui: improve fonts and color palette
- device recorder: allow to set separator in generated CSV file
- devices: add support for QML protocols which require OAuth authentication with Ossia.OAuth (currently requires building from source with QtNetworkAuth support, will be available generally in next release).
- devices: enable adding some devices during execution (Camera, Window, etc.).
- devices: implement a new Default Device kind for cameras, MIDI devices and gamepads, that will select the default device on the user's system. Useful for examples, etc.
- exprtk: add useful math functions: bitwise_and, bitwise_or, bitwise_xor, bitwise_not, bitwise_shiftl, bitwise_shiftr, map, norm, step, lerp, smoothstep, smoothstep5
- ffmpeg: handle gpu decoding of 16-bit float single-channel textures, from e.g. depth cameras
- geometry: Add a raw Raster Pipeline object which allows to render using entirely custom shader, with only a small veneer of isf. e.g. this allows to define what are the vertex inputs / outputs with much greater control than classic ISF shaders. This also allow instanced rendering.
- geometry: Rework geometry in depth, allow geometry and buffer passing in every avnd objects, add support for instancing.
- geometry: allow to have both CPU and GPU buffer handles, automatically convert in-between depending on the needs of objects.
Example: loading geometry from a .obj, piping the positions to a compute shader which samples the geometry and generates random points.
- gfx: add support for Spout in the D3D11, D3D12 and Vulkan backends.
- gfx: add support for Syphon in the Metal backend.
- gfx: allow buffer ports to pass buffers around. White ports can now carry either buffers or textures.
- gfx: compute shader: render single-component textures as white instead of red.
- gfx: implement support of SSBOs as output of Compute Shader process
- icons: add icons for console_on/console_off in icons_16. Thanks @aklevy!
- images: add support for more image formats, including SVG.
- js: Add new API for storing and retrieving state of JS objects across restarts and communicating between UI and execution.
- js: Fully implement custom UI support.
- js: Make sure that engines respect import paths, and change presets to use a qmldir to import JS files, so that we do not hit QTBUG-107204
- js: Whenever possible, load QML files from disk to trigger the disk cache, which will enable much faster loading / reloading on the execution thread
- js: add Device.toValue function, to convert JS values to a simpler representation
- js: add Util.uuid()
- js: add a System object to retrieve general system info
- js: add support for Qt Quick 3D to create 3D UIs easily as well as give access to PBR materials, environment maps, etc.
- js: add support for downloading packages from the Library.* api
- js: allow to have both an execution script and a UI script.
- js: give access to transport object, to connect to play(), stop(), etc.
- js: gpu: allow using texture inlets
- js: major rework: Have a single engine per-thread with distinct QQmlContext instead of one engine per object
- js: more utility functions
- js: new APIs (Library, System, etc)
- js: new api functions: Score.device("foo"); Score.device("Window").window(); Score.save() / Score.load() / Score.saveAs(); Score.documentPlugin(), mainly useful to enable saving custom data from JS into a score.
- layouts: add new layouts displaying all ports vertically when an object is in folded mode.
- led view: add ability to set an explicit size
- library: Add a new Timing category for all the timing-related objects (metronome, MIDI Sync, LTC, etc.)
- lightness computer: add support for custom swizzle to handle uncommon LED formats. Thanks @cbicari for the request!
- mapper: allow to create dummy nodes just to store and retrieve data
- midi: add support for interpreting and / or sending Note ON with a value of 0 instead of note off. Needed for instance for some Novation Launchpad devices.
- midi: handle reloading a midi device across backends / OS through various heuristics
- new process: Add many geometry utilities: Geometry Info to get basic info about an input geometry, Extract attribute / buffer / etc., Create a mesh from multiple buffers, Pointcloud to mesh, Repack attributes to pack or multiple attributes of a geometry into a single buffer.
- new process: Array to Buffer and Buffer to Array, to go easily e.g. from an OSC message to a GPU buffer.
- new processes: add MIDI sync objects to generate and track MIDI Clock and Timecode.
- new process: LTC input.
- new process: Tempo synchronizer. This process will analyze incoming position and speed variations, obtained for instance from timecode, and turn them into real-time speed adjustments to keep smooth playback.
- new process: add a ArrayToTexture object
- new process: add a multi-choice object
- new process: add a node text box to leave comments around
- new process: add a queue object
- new process: add a value mixer object
- new process: add an audio splitter
- new process: add utilities for vec2f/3i/etc.
- new process: introduce StreamDiffusion support (real-time inference of GenAI image workflows), ported to C++ from StreamDiffusion Python code for absolute maximum performance. Requires CUDA.
On a RTX 5090:
SDXL Turbo 1024x1024: stable 26 fps

SD Turbo 512x512: stable 96 fps

SDXS: above 600 fps
function. - JS: add a
Utils.writeFile(filename, bytes)function. - JS: allow to add additional script include paths through
SCORE_ADDITIONAL_SCRIPT_INCLUDE_PATHSenvironment variable. - JS: allow to create processes by
UUID. - JS: allow to introspect all the processes in the library with
Score.availableProcessesAndPresets(). - JS: allow to use
Qt.exit(0)to quit the app programmatically. - Library: allow to scan QML objects with imports that do not have versions (Qt 6 QML).
- Local tree: add a
/scriptOSC address that allows running JS console scripts. - Local tree: if sending the OSC message
/exit forcethen no dialog will be shown to ask the user to save modified scores. This will cause data loss if not careful! - Local tree: properly support processes with variable numbers of ports.
- New process: Accumulator. Statistical tools on incoming values: outputs sum, count, mean, variance, median, kurtosis, min and max.
- New process: Array to texture. Turn a [ R G B A R G B A R G B A ] input array into a video texture useable with shaders.
- New process: Compute Shader. This allows to use compute shader to generate and process images. This is one of the last steps towards a useful GPU-based instancing node for massive particles rendering.
- New process: Counter. Counts the incoming messages. Can optionally loop over a provided max or clip when the max is reached.
- New process: Easetanbul. Delicately ease from one incoming value to another with the classic easing functions.
-
New process: Pulse view. A simple LED that lights up on incoming messages.
-
New process: Repetition Filter. A simple object to filter repeated values, useful for quick debounce. Thanks @edumeneses for the suggestion!
-
New process: Value Filter. A full-blown toolkit to filter incoming values according to multiple criterion: combines noise gate, range filter, repetition filter with a deadzone, hysteresis, clipping, and temporal filter.
- New process: Vertex Shader Art. This allows to create dynamic audio-reactive visuals from vertex shaders, based on the eponymous website. Be sure to update the user library to get the new shaders, imported from the website's github!
- New processes: Bendage, a set of video-bending processes for real-time image destruction: JPeg, Xlippy and Safe Word. They had been developed years ago but sadly forgotten in a
dunggithub repository... More to come!
- New protocol: LSL (Lab Streaming Layer) for integration with scientific hardware and software.
- Object Loader: will now display .ply files in addition of .obj.
- QML: add an OSC packet processor to easily handle OSC packets in custom protocols.
- QML: add support for setting QVector2D / 3D / 4D values.
- Shaders: shaders with a mouse input will now automatically start mapped to the first Window devices mouse.
- Sound: clicking on the waveform will now select it.
- UX: add a shift+delete shortcut to remove a process in the middle of a chain while keeping the connections in the chain alive if the processes before and after are compatible.
- UX: allow to create nodes while dropping into an empty full view.
- UX: allow to drop a process or preset from the library onto a cable to insert it in the middle of a chain, if the first inputs and outputs are compatible. Drop will be indicated by the cable becoming dashed.
- UX: allow to drop a process or preset from the library onto a node to insert it in the middle of a chain, if the first inputs and outputs are compatible. Drop will be indicated by the node border becoming orange. This allows hot-swap behaviour, to easily switch for instance a shader or an audio effect for another live.
- UX: change the visualization of ports when they contain an address, to indicate better whether the address is active or not. It is now indicated by little incoming and outgoing arrows to the left (for inlets) and to the right (for outlets). Propagating audio objects are also indicated.
- UX: dropping multiple processes or files in nodal view will now properly offset them by a few pixels to improve clarity.
- Value display: it is now possible to request the process to log the last N received messages.
- Video: clicking on the thumbnail will now select it.
Bugfixes and improvements
- Algorithms: replace std:: implementations by custom ones to improve speed under ASAN.
- Audio: thorough rework of audio start / stop ; fix the annoying JACK warning when opening a new document.
- Avnd: add an automated RGBA from / to RGB conversion for processes that want to operate on CPU RGB textures.
- Avnd: improve the color handling API to allow more precise skinning of processes.
- Avnd: various small backend improvements especially for handling musical ticks.
- CI: force ffmpeg@7 on macOS homebrew as ffmpeg@8 does not export symbols???ええええええ
- CI: ton of bugfixes and change tracking as usual.
- CLAP: implement more features of the spec, in particular tempo / time signature support.
- CLAP: make flush occur in the exec thread, not the main thread, per the spec.
- Execution: fix a long-lived execution bug where setting the speed too fast could cause an invalid token request to be submitted to processes.
- Execution: many smaller improvements and optimizations.
- FFT: multiple fixes to FFT implementation.
- GPU: various improvements and bug fixes to the render loop.
- ISF and other shaders: fix that the default shader had disappeared, when dropping the process without an existing preset.
- ISF: many backend improvements and simplifications. Deep rework of audio textures handling.
- ISF: remove now-unneeded values from UBOs.
- Library: ensure subcategories are sorted.
- Library: performance optimizations.
- Local tree: bugfixes.
- Metronome: fix a potential division by zero.
- Network: handle cases where socket shutdown throws an exception.
- Nodes: improve default node sizing and allow smaller nodes.
- ONNX: add a SC...
v3.6.1
ossia score is a sequencer for audio-visual artists, designed to create interactive shows.
Sequence OSC, MIDI, DMX, sound, video and more, between multiple software and hardware. Create interactive and intermedia scores, script and live-code with JavaScript, ISF Shaders, Faust, PureData or C++. Leverage IoT protocols such as CoAP or MQTT, interact with joysticks, Wiimotes, Leapmotions, Web APIs and BLE sensors and integrate programs from a wealth of creative programming languages such as Structure Synth, Context-Free Art and Bytebeat. Load any kind of audio or video format and process visuals through Spout, Syphon, NDI, Shmdata or Sh4lt ; sonify large datasets with CSV and HDF5 support.
ossia score 3.6.1 is a series of small bugfixes and improvements after the large 3.6.0 release.
Full Changelog: v3.6.0...v3.6.1
New features
- Audio: add support for the Airwindows audio effects directly as ossia built-ins. Discover a ton of new reverbs, filters, choruses, distortions, limiters, etc. to build a rich sonic palette.
airwindows-2025-08-12_09.05.19.mp4
- 3D primitives: plane can now have varying number of subdivisions.
- JS scripting api: add a new function to allow getting the JSON of the current save file.
- Model display: add support for controlling blending options to enable better particle effects.
- Geometry filter: add support for reading .glsl files from the library directly. Check the new examples by updating the library!
particles-small.mp4
Bugfixes
- Core: fix an execution bug due to concurrency and threading in GPU threads.
v3.6.0
ossia score is a sequencer for audio-visual artists, designed to create interactive shows.
Sequence OSC, MIDI, DMX, sound, video and more, between multiple software and hardware. Create interactive and intermedia scores, script and live-code with JavaScript, ISF Shaders, Faust, PureData or C++. Leverage IoT protocols such as CoAP or MQTT, interact with joysticks, Wiimotes, Leapmotions, Web APIs and BLE sensors and integrate programs from a wealth of creative programming languages such as Structure Synth, Context-Free Art and Bytebeat. Load any kind of audio or video format and process visuals through Spout, Syphon, NDI, Shmdata or Sh4lt ; sonify large datasets with CSV and HDF5 support.
ossia score 3.6.0 is a major release introducing useful new features and objects.
Full Changelog: v3.5.3...v3.6.0
New features and changes
- AI: new model support: FastVLM for video-to-text real-time inference.
- AI: new model support: GAN image generation e.g. with MobileStyleGAN, FBAnimeGAN. More to come!
- AI: new model support: GAN image processing e.g. with AnimeGANv3, DeblurGAN, FSRGan. More to come!
- AI: new model support: LLM inference with Qwen3.
- Audio: add initial support for CLAP plug-ins on Mac, Windows and Linux. Testing and feedback needed!
- Audio: new reverber inspired from vintage Alesis MIDIVerb (BarrVerb, ported from [github.com/ErroneousBosh/BarrVerb](https://github.com/ErroneousBosh/BarrVerb)).
- Avnd: improvements to the available APIs for UI to enable more use-cases with cross-controls interactions.
- Bytebeat: implement a safe mode to try and avoid SIGFPE errors when a division by zero happens due to wrong bytebeat code.
- Core: add xtensor, xsimd and xtl and eigen as official built-in libraries accessible to score addons.
- Core: AI prompt composer.
- Core: AI prompt tweener.
- Core: the codebase now officially requires C++23 to build.
- EGLFS / vkkhrdisplay: allow to exit the app with esc when running without X11 or Wayland for unattended installations.
- Gfx: add support for Shadertoy effects, by drag'n'drop of Shadertoy URLs into a score which will trigger an automated conversion to ISF.
- JIT: port to jitlink which fixes a lot of limitations when JIT-compiling plug-ins.
- Linux: add a
--platformargument to the appimage, to replicate the functionality of the previous Raspberry Pi scripts (ossia-score-eglfs, etc). - LV2: fixes for finding plug-ins in /usr/ with the AppImage.
- Patterns: add support for patterns from drumpatterns.onether.com.
- Processes: new data processing tool: Classifier (based on RapidLib, similar to Wekinator).
- Processes: new data processing tool: Regressor (based on RapidLib, similar to Wekinator).
- Processes: new object: interpolator. From a set of weights and a set of values, provides the linear interpolation of each values. Useful for navigating latent spaces!
- Processes: new object: Nodes, to allow interpolation across multiple states. Features both a "circular node" mode, as well as a Voronoi mode.
- Processes: new objects in the Puara toolkit: Correlation, Compass, Binarize, ERP, Clustering, PCA, Power Band. Thanks @pyandcpp-coder!
- Processes: new objects: Impulse, String, Float, Integer to force the casting of a value type.
- Processes: new objects: Knob, Multislider to have simple UI affordances to control parameters.
- QML UI: add a TextureSource object to allow custom UI to import a texture from the output of a process.
- QML UI: Qt Quick and Qt Quick Controls are now available to use for external UIs with official releases, which allows to make custom software with advanced UIs backed by a given score.
- Script console, mapper device: add objects to allow low-level access to TCP and UDP sockets (#1798) as well as OSC.
- Script editor: syntax highlighting for Faust code.
- SDK: update the platform to LLVM 20, Qt 6.10.
- UI: allow to copy the value of a Value Display easily.
Bugfixes and improvements
- #1720: CMake issues with concurrentqueue on FreeBSD.
- #1831: Missing includes.
- #1833: Sporadic macOS crash when inferring AI models.
- Avnd: processes with file ports will now relativize paths correctly to allow easier project portability across computers.
- Avnd: put message bus things in a thread for GUI objects.
- CI: a few hundred fixes as always.
- Core: use
std::spaneverywhere consistently. - Faust: fix live-coding a synth (#1829).
- Fix missing port count in process library.
- LV2: fixes to Suil and LV2 integration.
- Reworked categories.
- SDK: many bugfixes to features to allow building addons against the score SDK.
- SDK: rework the CI infrastructure to allow repos building score addons to use a shared set of Github actions on [github.com/ossia/actions](https://www.google.com/search?q=https://github.com/ossia/actions).
- UI: improve multi-xy pad rendering.
- UI: improve reliability of script editor GUI.
Some examples of the new features:
gan-demo.mp4
vlm-demo.mp4
regressor-demo.mp4
474301510-dde78b99-f9f9-439f-bd7d-3e627cc69eed.mp4
clap-demo.mp4
shadertoy-demo.mp4
v3.5.3
ossia score is a sequencer for audio-visual artists, designed to create interactive shows.
Sequence OSC, MIDI, DMX, sound, video and more, between multiple software and hardware. Create interactive and intermedia scores, script and live-code with JavaScript, ISF Shaders, Faust, PureData or C++. Leverage IoT protocols such as CoAP or MQTT, interact with joysticks, Wiimotes, Leapmotions, Web APIs and BLE sensors and integrate programs from a wealth of creative programming languages such as Structure Synth, Context-Free Art and Bytebeat. Load any kind of audio or video format and process visuals through Spout, Syphon, NDI, Shmdata or Sh4lt ; sonify large datasets with CSV and HDF5 support.
ossia score 3.5.3 is another series of small bugfixes and improvements after the large 3.5.0 release.
Full Changelog: v3.5.2...v3.5.3
New features and changes
- Audio: Support using the
PIPEWIRE_QUANTUMin addition toPIPEWIRE_LATENCYto set buffer size and sample rate under pipewire. - Linux: add a small independent binary that will run to devise whether the app has all the necessary dynamic libraries available.
- OSC: allow to resolve by using DNS and not just IP addresses; refactor the DNS resolving code across the codebase. (#1689)
- Windows: implement camera resolution enumeration using the most atrocious Win32 API.
- Image node: add a stretch mode port.
- AI models: add EmotionNet support for detecting emotions, DepthAnythingV2 for converting RGB frames into depth frames, and YOLO-segmentation support.
- AI models: better default engine selection.
- Gestures: add many new gesture detection algorithms courtesy of Yash Tiwary, our GSoC student. Thanks @pyandcpp-coder!
Bugfixes
- UI: Fix an UI bug when reloading an item with an XY slider.
- Core: enforce using the same hash function in most places.
- UI: improve rendering performance of cables.
- Presets: fix loading presets of objects that may change ports.
- Core: large cleanup of codebase compiler warnings which had accumulated.
- Packaging: improve support for packaged KFR (#1819).
- Core: update to boost 1.88.
- Mapper: fix a concurrency bug which could have caused crashes when restoring a score which created and removed mapper devices.
- Windows: fix open dialog sometimes having issues (QTBUG-138093).
- Windows: fix that KFR was forced to SSE2.
- Windows / Mac: fix the Window devices being jittery when moved (#1783).
- CSV and audio recorder: ignore quotes in paths as they happen when using the "copy path" feature of Windows 11. (#1598)
- Graphics: fix some textures still being inverted on Metal and D3D11/D3D12.
- macOS: fix to enable running under Xcode frame capture.
- Graphics: allow offscreen renderers to use something else than OpenGL now that it works fine.
- MIDI: replace MIDI Pitch with MIDI Filter which is more powerful.
- Graphics: handle more cases of texture formats in different processes, e.g. support R8 or RGB as input instead of only RGBA in Avendish nodes.
- VST3: fix for some buggy plug-ins which do not follow the spec and do not allow deleting and recreating their IPlugView.
- macOS: fixes for GL rendering (#1807).
- UI: improvements to focus behaviour (#1811).
- Camera: fix #1814.
- UI: improvement to Graphics Combo ui widget.
- Scripting: add Score.availableProcesses() and Score.availableProtocols() for introspection of available features and processes.
- Scrpiting: implement removal of processes.
- Audio: update Miniaudio on macOS and set it as default backend. Fix #1797.
- Core: improvements to the quantization algorithm.
- Core: lots of work to prevent bogus UBSAN warnings on hash functions.
v3.5.2
ossia score 3.5.2 is another series of small bugfixes and improvements after the large 3.5.0 release.
Full Changelog: v3.5.1...v3.5.2
New features and changes
- New process: Deuterium is a drum machine specialized in loading Hydrogen drumkits.
- New process: Kabang is a more controllable drum machine with 8 potential samples, pitch shift, etc.
- New process: Minibang is a basic lo-fi vintage one-sample sampler.
- UI: owners of a mouse with a forward / backward button can now use it to scroll through presets on the preset button of processes.
- UI: double-clicking on a 2D pad will center it.
- Breaking change: the address for key press on Window devices has changed. A key release event has been added, too.
- Core: add an --ui-debug option to enable visualizing the score backend when creating a custom QML UI.
- Core: add a few new API functions to enable building more powerful apps accessing all the devices.
- Packaging: use distro Faust libraries when system libraries are requested.
Bugfixes
- Packaging: various flatpak-related fixes.
- OSCQuery: many compatibility improvements for various kinds of HTTP and mDNS implementations which may not always support all features.
- Graphics: performance optimization: do not render empty passes in unconnected ports, etc.
- Core: fix a deep logic bug which caused weird errors when restoring a document that had cables being edited.
- Graphics: fix auto-repeat blocking key input on Window device.
- Graphics: disable back-face culling on plane primitive.
- Graphics: fix an invalid vertex count issue with some primitive.
- Graphics: fix UV maps on model display with Vulkan.
- Core: UI performance optimization during execution of the score.
- Graphics: fix avnd graphics processes with custom render target size.
- VST: fix that reloading VSTs had broken on Windows and macOS.
- VST: enable -execstack flag on Linux as otherwise with newer glibc this break some proprietary VSTs.





























