github ossia/score v3.7.0

latest release: continuous
12 hours ago

Discord Open Collective backers and sponsors GitHub Sponsors

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.7.0 is a feature-packed back-to-school release, with a specific focus on deep bugfix, as well as UX and quality-of-life improvements.

Full Changelog: v3.6.1...v3.7.0

New features and changes

  • AirWindows: mono plug-ins will now be able to be used in polyphonic contexts (e.g. they will be scaled to the number of input channels.
image
  • Array recombiner: add a transposition mode to turn for instance [ r, g, b, r, g, b ] into [ [ r r ] [ g g ] [ b b ] ].
image
  • Audio: initial ADM-OSC support in the Spatialization device.

  • Beat metronome: it now has inlets for every subdivision, and keeps track of the count.

beat-metronome

  • Execution: annotate the code base to ensure that execution things happen in the correct thread.
  • GPU: allow the ossia::geometry class to carry GPU handles in addition of CPU buffers.
  • Interpolator: make the alpha factor minimum lower to enable very, very smooth operation. Thanks @edumeneses for the recommendation!
  • JS: add a Score.createCable(outlet, inlet) function.
  • JS: add a Utils.writeFile(filename, bytes) function.
  • JS: allow to add additional script include paths through SCORE_ADDITIONAL_SCRIPT_INCLUDE_PATHS environment 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 /script OSC address that allows running JS console scripts.
  • Local tree: if sending the OSC message /exit force then 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.

accumulator

  • 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.

array-to-texture

  • 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.

particles-csf-small

  • New process: Counter. Counts the incoming messages. Can optionally loop over a provided max or clip when the max is reached.

counter

  • New process: Easetanbul. Delicately ease from one incoming value to another with the classic easing functions.

easetanbul

  • 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.

value-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!

vsa

  • 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!

bendage

  • 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-remove

  • 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-hotplug

  • 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.
image
  • 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 SCORE_ONNX_FORCE_PROVIDER env var to allow setting the ONNX provider manually. Can be cuda, tensorrt, cpu, directml, coreml.
  • ONNX: many bugfixes to various models implementations.
  • Sound: do not resize the main interval if dropping a sound file. This fixes a bug where dropping a sound in an empty node could have stopped playback due to the sound having a finite duration.
  • Sound: fix that sound would sometimes disappear when changing the used soundfile live.
  • Sound: fix that trying to load invalid audio files could lead to unhandled exceptions.
  • Sound: update drwav to latest version which allows to handle more cases of ACID tags.
  • Spline: fix that it did not loop.
  • Time chooser widget: improvements to range handling.
  • Tooling: various bugfixes and improvements to fetch-sdk.sh.
  • UI: cosmetic adjustments to prevent process to sometimes leak by 1 pixel in the background.
  • UI: do not show the PROJECT / LIBRARY paths in Button UI.
  • UI: fix that the first switch between nodal and temporal mode could lead to a wrong zoom value being saved.
  • UI: improve render performance in execution due to the little green bar constantly causing a repaint of the cables.
  • UI: prevent cables seemingly plugging into nothing when objects are connected in the same interval. They will now be turned into short dashed stubs pointing to the direction of the other part.
  • UI: prevent long labels from overflowing in nodes.
  • UI: various fixes caused by cases where the mouse release event would not be delivered to graphical items, leading the score to possibly end up in an incoherent state.
  • UI: various fixes to drag and drop getting stuck
  • UX: fix that nodes for sound and video did not always have the correct size when switching to nodal view.
  • VST/VST3: fix a crash that occured when dropping a port in a parent interval.
  • VST/VST3: scanner will now also look in .vst / .vst3 in the HOME folder in all platforms.
  • Video: playback bugfixes.

Don't miss a new score release

NewReleases is sending notifications on new releases.