Releases: ossia/score
v3.0.11
New features
-
Added tablet input support to Window device (thanks @hamoid for the idea !) ; pressure, rotation, tilt, z-axis are supported.
- See https://twitter.com/jcelerie/status/1536453369077936128 with a demo with the upcoming granular synth.
-
Experimental and preliminary: add the Network plug-in to the releases. This adds collaborative edition and execution features :-)
- Video example: sharing data over the network with two scores https://vimeo.com/717058479
- Video example: collaborative edition https://vimeo.com/690619179
- There is no documentation yet but one can refer to chap. 9 of the thesis: https://scholar.google.fr/citations?view_op=view_citation&hl=fr&user=v1_52IMAAAAJ&citation_for_view=v1_52IMAAAAJ:4TOpqqG69KYC - there have been some changes since then but the general idea is there.
-
Restrict speed slider to positive values as some processes don't support backwards speed correctly... patches welcome 🍡
-
Allow to add processes to the score by double-clicking them in the preset list
-
Breaking change: LFO's random is now seeded from an outside source [ #1412 ] versus all the LFOs using the same random seed until now.
-
Experimental: add the ability to set a start time point from which transport will always start, by clicking in the top bar.
- When this is set, pause / play will restart from that point as it is mainly to simplify working on a score
Bugfix release
- Fix cracks and noises with the gain process
- Port the WASM build to Qt 6.4: it now supports drag'n'drop !
- Fix some issues found through scrubbing with ASAN, UBSAN and libstdc++'s debug mode
- JSFX controls will now correctly map parameters according to their range
- Fix a potential crash when deleting a GFX object
- Video: do not try to display invalid frames
- ExprTK: fix that varying number of channels as audio input would not work
- Fixes for building with Qt 6.4 and LLVM 15
- Fix that the dataspaces were not respected in control surface (thanks @capital-G for the report!)
- Fix that moving nodes while dezoomed was not applied at the right scale
- JS: implement state.timings() method to get accurate timings. See the updated sine.qml in the library
- Do not redraw waveforms if the pixel zone is too small
- Fix wrong inversion of viewport that had occured by mistake in 3.0.10
v3.0.10
New features
- GFX: the render size can now be configured in the window device tree. If any of the
rendersize
coordinates is 0, the size of the window will be used instead. - JSFX: add support for showing feedback for control changes, for e.g. analysis objects.
- Avnd: support for mapping functions to enable log-like knobs & things like that, as well as for multichannel FFT
- Avnd: QPainterAdapter improvements from @ErkEntonio
Bugfixes
- Fix issue with Faust processes possibly giving loud pops
- Fix that the GUI would refresh much more than necessary, using a lot of CPU
- Many small performance fixes and improvements to the audio engine
- Dead code removal
- Fix a potential crash when closing a document
- Fix sample rate not always being updated with soundfiles when changing the global audio sample rate
- Expressions: fix that some where missing the
fs
variable to access the current sample rate - VST: accept inputs of any type by using convert instead of only handling floats
- Do not try to load sound files that are directories or not readable
- Mapper: make callbacks unique to fix a crash
- Fix various issues related to objects not being able to be removed
- WASM: disable GL as it caused a black screen
- Control surface: Implement adding nodes during execution
v3.0.9
New features
-
Avendish plug-ins: support for FFT input ports
https://twitter.com/jcelerie/status/1517818996661399552 -
Avendish plug-ins: support for soundfile input ports ; @bltzr is using it to cook an upcoming granulator =)
https://twitter.com/jcelerie/status/1516785899413151749 -
Virtual MIDI devices on platform which support it (thanks @RobinMontferme !)
-
Allow GPU nodes to have control outputs, which enables nice things like performing a
computation on the GPU with a compute shader, and getting back the data on the audio processing path:
an example has been done with YoloV5 for object recognition on the GPU: https://vimeo.com/711256381
This object is not yet part of the release but will likely happen soon along with other fun GPU stuff :-) -
Allow to register JS scripts (using the same API than the console) that will show up as actions in the menu:
https://vimeo.com/711841390
Here is an example of such a script which allows to randomize a process: https://github.com/ossia/score-user-library/blob/master/Scripts/Randomize.mjs -
Console: add Score.selectedObject() and Score.selectedObjects() methods to get the current selection in scripts
-
Faust will look for libraries in /packages//library/<faust .lib files here>
This allows to support new Faust add-ons: for instance, the package manager will allow to download https://github.com/alainbonardi/abclib,
a library for sound spatialization and mixed music Faust objects developed by @alainbonardi (thanks !) -
A few new presets in the user library - auto-update isn't implemented yet so do not forget to update ! https://github.com/ossia/score-user-library
-
Add the ability to save presets by click-drag-drop from a little preset's folder icon to the system & project library panes
-
Math expressions: added a new
noise(input, octaves, persistence)
function which provides @Reputeless's Perlin noise implementation
Bugfixes
- Fix VST3 resizing
- Fix VSTs showing duplicated if /usr/lib is a symlink to /usr/lib64 on Linux
- Fix a potential crash when closing a score while inside a nested scenario
- Change Faust to use double-precision processing like everything else
- Performance improvements: use boost::container::vector in more places to reduce the initialization cost
- Allow using alloca in JIT process on Windows
- Fix mapping of data copied through value ports
- Fix for ISF shaders that assumed that they were being rendered on a quad (score used to render them on a single triangle).
This only applies for shaders without any vertex shader defined. - Fix that dropping an invalid video file would crash
- Automation fix for int addresses
- Fixes for Qt 6 support (not finished yet)
- Fixes for GCC 12 (WARNING: it is not supported yet due to https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105683)
- Fix crash when adding an Images process
- Value display: fit in rect for long values
- Fix that smoothing did not work for some inputs
- Fix an issue when dragging the mouse on the step sequencer's right
Various
- Big variant refactor, to use mpark::variant everywhere as std::variant is problematic on macOS
- Internal libpd / Puredata implementation updated to 0.52-2 ; in particular opening and closing Pd UIs seem to work better.
- CI updated to macOS Monterey
- CI for Qt 6 on macOS with Homebrew
v3.0.8
v3.0.7
IMPORTANT KNOWN ISSUE
Due to a release mistake, Faust support was not enabled in this release. 3.0.8 will come out shortly with the fix.
New features
-
A stable plug-in API through Avendish! It took years of work but there is finally an API that is guaranteed to stay stable as long as C++ compilers exist thanks to the entirely declarative paradigm used, all while enabling the back-end to keep evolving to offer continuously improving performance. Documentation is there: https://celtera.github.io/avendish ; support for JIT-compiling these is a work-in-progress and should already work in simple cases. As an added bonus, plug-ins written against this API will also be portable to other environments, such as PureData, Max, VST...
- It allows to write both CPU and experimentally GPU processors
- Entirely custom UIs are possible
- More features will be added over time ; thanks to the reflection-based design it can be done without breaking existing code.
-
The DNSSD implementation will now check that Bonjour (on Windows) and Avahi (on Linux) are running, to prevent slow timeouts when they are not.
Bugfixes
- Multiple MIDI bugfixes (#1384 #1386)
- Fix some eager asserts causing crashes in video process (#1377)
- Fix that setting time signatures was broken (#1383)
- Reallow to change advanced execution settings through the config file
- Fix that the Linux AppImage would sometimes not start on Linux due to GDK woes (https://gitlab.freedesktop.org/xorg/xserver/-/issues/1330)
- Be more lenient when loading a bad scenario and try to recover things a bit
- Fix that the position of comment blocks was not mapped correctly (#1379)
- Fix that nodes would stay selected if clicking on a port
- Lots of work on improving compile times
Thanks to @simonArchipoff for his first contribution and @RobinMontferme for the ongoing MIDI improvements ! :)
v3.0.6
New features
- Added trigger auto-select on user creation (thanks @RobinMontferme !)
- Autoscroll learn dialog on new message (thanks @RobinMontferme !)
- Internal: added support for Avendish as a plug-in format - no plug-ins yet though.
Bugfixes
- Fix some thumbnail memory leaks when resizing the slots when there is a video (thanks @yiids for noticing !)
- Fix the issue where on some Linux distros with some OpenGL hardware, the app would crash on start with some GDK errors
- Reduce the number of repaints & updates in the ui
- [wip] Re-allow editing automation points through the inspector
- Lot of work on improving compile times
- Minor typo fixes
v3.0.5
New features
- Serial protocol is now able to process either text or binary messages, or custom binary streams. Multiple framing options are implemented ; the user also has the option of handling the framing entirely from the script. Here is the documentation: https://ossia.io/score-docs/devices/serial-device.html ; thanks to @thibaudk for work on this !
- Copy-and-paste for MIDI notes (thanks @RobinMontferme)
- Copy-and paste for automation points
- Copy-and paste nodes in nodal view
- Allow to move multiple nodes in nodal view
Bugfixes
- Fix a small regression which sometimes showed an error message when clicking on a cable
- Show entire names for files in library when the file has a dot in the name, e.g.
foo.1.wav
will now show up asfoo.1
, notfoo
. - shmdata: do not copy textures when nothing is being rendered
v3.0.4
New features
- Official Spout and Syphon support for both video input and output :-)
- Ability to connect / disconnect multiple devices at once (thanks @RobinMontferme !)
- Ability to copy-paste parts of the curve in automation curves #1074 #1364
- Spline: double-click on a point now removes it
- (work-in-progress) copy-paste of nodes
- (experimental) Live preview widget in the inspector for video processes
- (experimental) Direct PipeWire audio back-end on Linux. For now score needs to be built from source.
- When quitting the splash screen with "Esc", an empty document will be created as the previous behaviour was confusing.
Changes
- Do not autotrigger things anymore if they do not have any visual trigger enabled. For instance this could happen if copy-pasting the first elements of the score and hitting play, as the first state was considered a root of the score (and this state is being copied). This has proven to be confusing. To keep non-root parts of the score auto-playing on start, simply add a trigger with a "True" condition.
- (experimental) a big part of the audio driver interaction has been rewritten to make things more asynchronous. The dreaded "Audio engine stuck" pop-up should be a thing of the past, but there is the possibility of corner case bugs which may have crept in.
Bugfixes
- Fix scaling of the splash screen with non-integer zoom levels (e.g. 150% zoom). #1241
- Do not submit undo/redo command if clicking on a node without moving it.
- Allow to deselect things in nodal view by clicking in the background.
- Fix issues with broken cable connections when editing at runtime
- Fix that shmdata outputs did not send the framerate info to GStreamer
- Improvements on the inspector UI
- Add a failsafe that will stop score from trying to start with opengl if it crashed during startup.
If the file "failsafe.bit" exists in the score configuration folder, e.g.~/.config/ossia
, then score won't try to start rendering its UI with the GL paint engine. - Many improvements on the library performance.
- Add a timer to update the timebar regularly when GL does not drive the UI (#1357) and fix some other UI bugs when not using OpenGL
- Fix that play-from-here past the end trigger of the root interval did not work
- Allow infinite dezoom. Fixes #444
- Fix that the focus on the score window would be lost on macOS after adding an OSCQuery device, requiring an alt-tab to get focus back.
- MIDI: Do not send undo commands when clicking on a note without moving
- Improvements to auto-scroll
- Improvements to the video inspector
- Fix some remaining live-code issues with the JS process
v3.0.3
New features
- Console: Add Score.readFile(...) to read a data file in JS (#1337 !)
- Official releases on Mac and Linux now build with an updated Harfbuzz (in a hope to solve spurious crashes that look like they have been fixed in recent versions, up to now it used Qt 5.15's bundled version which is out-of-date by a few years). Windows will follow.
- Linux now has subpixel AA by default which gives much crispier fonts on the release (above is without, below is with subpixel AA):
Note that in case of a non-RGB monitor, this can be toggled through the QT_SUBPIXEL_AA_TYPE
environment variable (RGB, BGR, VRGB, None...).
- Exit button on the splash screen (thanks @aklevy and @RobinMontferme !)
- Ctrl-Alt-N shortcut for switching between nodal and timeline view.
- The release should work again on macOS High Sierra (10.13).
Fixes
- Detect and disable OpenGL on llvmpipe systems, which fixes a startup crash on some Linux distros especially when running in VMs.
- Fix that the tempo points could not be changed from the inspector (thanks @featherfurl for reporting !)
- Fix various typos in the source code (thanks @luzpaz !)
- Video: use avformat_seek_file which seems to work better than av_seek_frame to seek in video files.
- Video: take start offset into account.
- OSC: fix that the OSC version (1.0/1.1/Extended) was not being saved
- Fix an error when changing a control after changing a time signature due to the undo/redo command not being completed.
- Fix that the edit dialog would sometimes come up when trying to add a new device.
- Fix a potential issue when reloading after a crash where an OSCQuery device had been created and deleted.
- Fix that the Linux release was building without PortAudio and ALSA support which limited its compatibility greatly.
Also big thanks to @JoaoSvidzinski who helped find many small bugs and issue over the course of three days this week !
v3.0.2
New features & changes
- Improvements to the package manager (thanks @thibaudk who pretty much entirely rewrote it. More to come !).
- Implement auto-scrolling during playback (in the view menu). It will follow either the main interval if nothing is selected or the selected interval otherwise. Please make issues if you see any improvement that could be made !
- Add the ability to scrub intervals through the tempo process's third inlet
- Add new console features, reinstate live scripting from js.
- Video process: implement multiple scale modes (stretch, fit, original size...), in the inspector
Bugfixes
- Fix reloading of shmdata output devices
- Various build fixes when using LTO (thanks to @ycollet for helping evidencing them)
- Make Tempo curve disabled when the ports are used to control speed explicitly. Fixes #1332 (thanks @thibaudk !)
- Fix VST3 plug-in scaling when score has a zoom setting different from 100%. (Issue is not fixed yet for VST2 / LV2).
- Fix cables being offset when the source or target port have different scales.
- Fix readbacks of GPU textures for shmdata and others.
- Refactor and improve camera input, allow to share a single input across multiple nodes.
- Fix that live edition of shaders would disconnect cables.
- Add a trivial fft implementation for when neither KFR or FFTW are available.
- Fix passing multiple positional arguments on the command line, such as
./ossia-score foo.score -platform vnc --autoplay
- Image process: Keep the previous renderer by default for now
- Fix crash when removing an interval while it is the one at the root of the execution
- WIP on fixing texture and device coordinates across GPU backends... a hard task, help wanted.
- Fix that image being dropped on the score were not put in cache, leading to them being reloaded twice for no good reason. Thanks to @josephlarralde for noticing a lot of bugs and issues in there
- Fix files with names such as "foo..wav" not loading (thanks @josephlarralde)
- JIT: Cache factories and fix a serialization bug for copy paste
- Fix video rendering logic by putting the frame pulling in the node instead of the renderer