<?xml version="1.0" ?>
<ns0:feed xmlns:ns0="http://www.w3.org/2005/Atom">
  <ns0:title>Sonoj News Ticker</ns0:title>
  <ns0:id>tag:news.sonoj.org,2026-06-13:feed</ns0:id>
  <ns0:updated>2026-06-12T19:50:18Z</ns0:updated>
  <ns0:author>
    <ns0:name>Sonoj NewsBot</ns0:name>
  </ns0:author>
  <ns0:generator uri="https://www.sonoj.org/" version="1.0">Sonoj NewsBot</ns0:generator>
  <ns0:link rel="self" href="https://sonoj.org/news/sonojnews.atom.xml" type="application/atom+xml"/>
  <ns0:link rel="alternate" href="https://sonoj.org/news" type="text/html"/>
  <ns0:category term="general"/>
  <ns0:category term="software-release"/>
  <ns0:entry>
    <ns0:title>fluidsynth 2.5.5</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-06-12:tag:github.com,2008:Repository/95304991/v2.5.5</ns0:id>
    <ns0:updated>2026-06-12T19:50:18Z</ns0:updated>
    <ns0:published>2026-06-12T19:50:18Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/FluidSynth/fluidsynth/releases/tag/v2.5.5" type="text/html"/>
    <ns0:summary type="html">&lt;ul&gt;
&lt;li&gt;Fix a build issue on BigEndian architectures (&lt;a class="issue-link js-issue-link" href="https://github.com/FluidSynth/fluidsynth/pull/1783"&gt;#1783&lt;/a&gt;, thanks to &lt;a class="user-mention notranslate" href="https://github.com/thesamesam"&gt;@thesamesam&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Adjust the log level for unimplemented OSAL functions in release builds (&lt;a class="issue-link js-issue-link" href="https://github.com/FluidSynth/fluidsynth/pull/1795"&gt;#1795&lt;/a&gt;, thanks to &lt;a class="user-mention notranslate" href="https://github.com/white-axe"&gt;@white-axe&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>fluidsynth</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>lsp-plugins - Release 1.2.31</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-06-12:tag:github.com,2008:Repository/140602476/1.2.31</ns0:id>
    <ns0:updated>2026-06-12T18:05:55Z</ns0:updated>
    <ns0:published>2026-06-12T18:05:55Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/lsp-plugins/lsp-plugins/releases/tag/1.2.31" type="text/html"/>
    <ns0:summary type="html">&lt;ul&gt;
&lt;li&gt;Added new 'standalone' build feature which now replaces the 'jack' build feature for launching standalone plugins.&lt;/li&gt;
&lt;li&gt;The feature 'jack' is now responsible for building JACK audio backend for standalone plugins.&lt;/li&gt;
&lt;li&gt;Moved all JACK-related code into a separate lsp-audio-jack module.&lt;/li&gt;
&lt;li&gt;Added support of PipeWire audio backend using lsp-audio-pipewire module, new build feature 'pipewire'.&lt;/li&gt;
&lt;li&gt;Updated build system: ASAN, CROSS_COMPILE, DEBUG, DEVEL, PROFILE, STRICT, TEST, TRACE makefile flags replaced with 'asan', 'crosscompile', 'debug', 'devel', 'profile', 'strict', 'test' and 'trace' FEATURE flags.&lt;/li&gt;
&lt;li&gt;Updated makefiles to not to clash with launcher tool on MacOS.&lt;/li&gt;
&lt;li&gt;Some fixes arount CLAP plugin format for better support of MacOS (contributed by Benjamin Zeiss @ GitHub).&lt;/li&gt;
&lt;li&gt;Added previous and next preset selection in the preset window.&lt;/li&gt;
&lt;li&gt;Added possibility to reveal played sample on 'Listen' button press for Sampler, Multisampler and Trigger plugin series.&lt;/li&gt;
&lt;li&gt;Updated behaviour of the AudioSample controller when displaying load status to prevent the UI blinking when switching between samples in the file navigator.&lt;/li&gt;
&lt;li&gt;Extended dynamics range for Gate and Multiband Gate plugin series.&lt;/li&gt;
&lt;li&gt;Improved text rendering in hosts that provide their own implementation of FreeType library (like Ardour) by loading the system version of FreeType library if it is available and has greater version number.&lt;/li&gt;
&lt;li&gt;Some costmetic changes in text lables of the UI for several plugins.&lt;/li&gt;
&lt;li&gt;Re-numbered plugins' parameter labels to start counting parameters with 1 for the following plugins:
&lt;ul&gt;
&lt;li&gt;Artistic Delay;&lt;/li&gt;
&lt;li&gt;Crossover;&lt;/li&gt;
&lt;li&gt;Dynamics Processor;&lt;/li&gt;
&lt;li&gt;Impulse Responses;&lt;/li&gt;
&lt;li&gt;Impulse Reverb;&lt;/li&gt;
&lt;li&gt;Multiband Compressor;&lt;/li&gt;
&lt;li&gt;Multiband Dynamics Processor;&lt;/li&gt;
&lt;li&gt;Multiband Expander;&lt;/li&gt;
&lt;li&gt;Multiband Gate;&lt;/li&gt;
&lt;li&gt;Multiband RingMod Sidechain;&lt;/li&gt;
&lt;li&gt;Room Builder;&lt;/li&gt;
&lt;li&gt;Slap-Back Delay;&lt;/li&gt;
&lt;li&gt;Spectrum Analyzer.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;The auto-play and auto-load features in file navigator have been moved into separate 'UI Behavior' options for Impulse Responses and Impulse Reverb Plugin series.&lt;/li&gt;
&lt;li&gt;The ComboBox and ComboGroup widgets now properly react on the 'ESC' key pressure and hide the dropdown list when it is open.&lt;/li&gt;
&lt;li&gt;Fixed Drag &amp;amp; Drop issue under X11 (contributed by Justin Frankel).&lt;/li&gt;
&lt;li&gt;Fixed endless vertical flip of the image on MacOS (contributed by Hoshino Lina).&lt;/li&gt;
&lt;li&gt;Fixed some bugs in the AudioEnvelope controller that did not allow to fully reset the envelope to defaults.&lt;/li&gt;
&lt;li&gt;Fixed out-of-sync event handling for CLAP and VST2 extra UI run loop under Linux when hiding and showing plugin window.&lt;/li&gt;
&lt;li&gt;Fixed generic UI failure for CLAP: removed normalization for discrete parameters.&lt;/li&gt;
&lt;li&gt;Fixed improper handling of plugin factory initialization/finalization for CLAP plugin format (added support of series of initializations and finalizations as it is allowed by CLAP standard).&lt;/li&gt;
&lt;/ul&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>lsp-plugins</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>signls - v0.8.0</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-06-12:tag:github.com,2008:Repository/808328584/v0.8.0</ns0:id>
    <ns0:updated>2026-06-12T17:13:38Z</ns0:updated>
    <ns0:published>2026-06-12T17:13:38Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/emprcl/signls/releases/tag/v0.8.0" type="text/html"/>
    <ns0:summary type="html">&lt;h2&gt;✨ Features&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Stability improvements on the engine and the save/restore path.&lt;/li&gt;
&lt;li&gt;Config and bank files now follow proper platform conventions: &lt;code&gt;~/.config/emprcl/signls/&lt;/code&gt; on&lt;br /&gt;
Linux/macOS (respecting &lt;code&gt;$XDG_CONFIG_HOME&lt;/code&gt;), &lt;code&gt;%AppData%\emprcl\signls\&lt;/code&gt; on Windows&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--config&lt;/code&gt; and &lt;code&gt;--bank&lt;/code&gt; flags now accept both relative and absolute paths&lt;/li&gt;
&lt;li&gt;Native Linux arm64 build now available (covers 64-bit Raspberry Pi OS)&lt;/li&gt;
&lt;/ul&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>signls</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>drobilla.net - LAD - MDA.lv2 1.2.12</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-06-11:tag:drobilla.net,2026-06-11:/2026/06/11/mda-lv2-1-2-12.html</ns0:id>
    <ns0:updated>2026-06-11T23:31:00Z</ns0:updated>
    <ns0:published>2026-06-11T23:31:00Z</ns0:published>
    <ns0:link rel="alternate" href="https://drobilla.net/2026/06/11/mda-lv2-1-2-12.html" type="text/html"/>
    <ns0:summary type="html">&lt;p&gt;&lt;a href="https://download.drobilla.net/mda-lv2-1.2.12.tar.xz"&gt;MDA.lv2 1.2.12&lt;/a&gt; has been released.  This is a port of the MDA VST plugins to LV2.&lt;/p&gt;
&lt;p&gt;Changes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Avoid over-use of yielding meson options&lt;/li&gt;
&lt;li&gt;Fix build with MSVC 2022&lt;/li&gt;
&lt;li&gt;Fix strict aliasing violation&lt;/li&gt;
&lt;li&gt;Fix use of uninitialized values in TalkBox&lt;/li&gt;
&lt;li&gt;Improve const-correctness&lt;/li&gt;
&lt;li&gt;Remove development symbols from modules by default&lt;/li&gt;
&lt;li&gt;Use a deterministic and more uniform RNG&lt;/li&gt;
&lt;/ul&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>drobilla.net - LAD</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>drobilla.net - LAD - Jalv 1.10.0</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-06-11:tag:drobilla.net,2026-06-11:/2026/06/11/jalv-1-10-0.html</ns0:id>
    <ns0:updated>2026-06-11T23:18:00Z</ns0:updated>
    <ns0:published>2026-06-11T23:18:00Z</ns0:published>
    <ns0:link rel="alternate" href="https://drobilla.net/2026/06/11/jalv-1-10-0.html" type="text/html"/>
    <ns0:summary type="html">&lt;p&gt;&lt;a href="https://download.drobilla.net/jalv-1.10.0.tar.xz"&gt;Jalv 1.10.0&lt;/a&gt; has been released.  Jalv (JAck LV2) is a simple host for LV2 plugins.  It runs a plugin, and exposes the plugin ports to the system, essentially making the plugin an application.  For more information, see &lt;a href="http://drobilla.net/software/jalv"&gt;http://drobilla.net/software/jalv&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Changes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Add block length command-line parameter for PortAudio&lt;/li&gt;
&lt;li&gt;Fix PortAudio backend&lt;/li&gt;
&lt;li&gt;Fix crash with plugins that have non-event inputs&lt;/li&gt;
&lt;li&gt;Fix stale parameter descriptions in man pages&lt;/li&gt;
&lt;li&gt;Fully implement fixedBlockLength and powerOf2BlockLength&lt;/li&gt;
&lt;li&gt;Gracefully handle failure to open audio backend in Gtk interface&lt;/li&gt;
&lt;li&gt;Update meson fallback subproject wrap files&lt;/li&gt;
&lt;/ul&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>drobilla.net - LAD</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>drobilla.net - LAD - Zix 0.8.2</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-06-11:tag:drobilla.net,2026-06-11:/2026/06/11/zix-0-8-2.html</ns0:id>
    <ns0:updated>2026-06-11T22:52:00Z</ns0:updated>
    <ns0:published>2026-06-11T22:52:00Z</ns0:published>
    <ns0:link rel="alternate" href="https://drobilla.net/2026/06/11/zix-0-8-2.html" type="text/html"/>
    <ns0:summary type="html">&lt;p&gt;&lt;a href="https://download.drobilla.net/zix-0.8.2.tar.xz"&gt;Zix 0.8.2&lt;/a&gt; has been released.  Zix is a lightweight C library of portability wrappers and data structures.&lt;/p&gt;
&lt;p&gt;Changes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fix build with configure checks disabled&lt;/li&gt;
&lt;li&gt;Fix handling of invalid ring size parameters&lt;/li&gt;
&lt;li&gt;Fix potential out of bounds access on error&lt;/li&gt;
&lt;/ul&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>drobilla.net - LAD</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>Audacity 4.0.0 Beta 2</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-06-11:tag:github.com,2008:Repository/32921736/Audacity-4.0.0-beta-2</ns0:id>
    <ns0:updated>2026-06-11T14:33:00Z</ns0:updated>
    <ns0:published>2026-06-11T14:33:00Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/audacity/audacity/releases/tag/Audacity-4.0.0-beta-2" type="text/html"/>
    <ns0:summary type="html">&lt;p&gt;Audacity 4 is almost here, and this is the first public beta (beta 1 was internal).&lt;/p&gt;
&lt;p&gt;For the full picture of what to expect, head over to our special page:&lt;br /&gt;
&lt;a href="https://www.audacityteam.org/next/" rel="nofollow"&gt;https://www.audacityteam.org/next/&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;⚠️ This is a beta&lt;/h3&gt;
&lt;p&gt;Expect bugs, rough edges, and features that don't work quite right yet, or aren't there at all.&lt;br /&gt;
Please don't use it for important work, and &lt;strong&gt;keep backups of your projects&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;This is exactly the moment we need your help. If you hit a bug or something feels off, tell us:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Found a bug? &lt;a href="https://github.com/audacity/audacity/issues"&gt;Open an issue&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Want to chat? &lt;a href="https://github.com/audacity/audacity/discussions"&gt;Join the discussion&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>audacity</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>Audacity 3.7.8</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-06-11:tag:github.com,2008:Repository/32921736/Audacity-3.7.8</ns0:id>
    <ns0:updated>2026-06-11T14:32:48Z</ns0:updated>
    <ns0:published>2026-06-11T14:32:48Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/audacity/audacity/releases/tag/Audacity-3.7.8" type="text/html"/>
    <ns0:summary type="html">&lt;p&gt;This is a patch release. It contains the following changes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="issue-link js-issue-link" href="https://github.com/audacity/audacity/pull/10688"&gt;#10688&lt;/a&gt; Fixed an exception thrown when pasting into a newly-created track (Thanks, David Bailes (&lt;a class="user-mention notranslate" href="https://github.com/DavidBailes"&gt;@DavidBailes&lt;/a&gt;)!)&lt;/li&gt;
&lt;li&gt;&lt;a class="issue-link js-issue-link" href="https://github.com/audacity/audacity/pull/10870"&gt;#10870&lt;/a&gt;, &lt;a class="issue-link js-issue-link" href="https://github.com/audacity/audacity/pull/10884"&gt;#10884&lt;/a&gt;, &lt;a class="issue-link js-issue-link" href="https://github.com/audacity/audacity/pull/10775"&gt;#10775&lt;/a&gt;, &lt;a class="issue-link js-issue-link" href="https://github.com/audacity/audacity/pull/10629"&gt;#10629&lt;/a&gt; Fixed tone generation, waveform-scale setting, SetClip Name parameter,&lt;br /&gt;
and clip-boundary command names for scripting and macros (Thank you, David Bailes (&lt;a class="user-mention notranslate" href="https://github.com/DavidBailes"&gt;@DavidBailes&lt;/a&gt;)!)&lt;/li&gt;
&lt;li&gt;&lt;a class="issue-link js-issue-link" href="https://github.com/audacity/audacity/pull/11106"&gt;#11106&lt;/a&gt; Fixed the loading of presets for the Distortion effect (A million thanks, David Bailes (&lt;a class="user-mention notranslate" href="https://github.com/DavidBailes"&gt;@DavidBailes&lt;/a&gt;)!)&lt;/li&gt;
&lt;li&gt;&lt;a class="issue-link js-issue-link" href="https://github.com/audacity/audacity/pull/10947"&gt;#10947&lt;/a&gt; Fixed paste into an empty audio track not preserving the source sample rate (Thanks, Juan Gabriel Colonna (&lt;a class="user-mention notranslate" href="https://github.com/juancolonna"&gt;@juancolonna&lt;/a&gt;)!)&lt;/li&gt;
&lt;li&gt;&lt;a class="issue-link js-issue-link" href="https://github.com/audacity/audacity/pull/10776"&gt;#10776&lt;/a&gt; Allowed AltGr modifier in label and clip name editing (Thanks, Davide Peressoni (&lt;a class="user-mention notranslate" href="https://github.com/DPDmancul"&gt;@DPDmancul&lt;/a&gt;)!)&lt;/li&gt;
&lt;li&gt;&lt;a class="issue-link js-issue-link" href="https://github.com/audacity/audacity/pull/9938"&gt;#9938&lt;/a&gt; Added options to choose where silence is truncated (start/middle/end) (Thanks, Noah Rosenfield (&lt;a class="user-mention notranslate" href="https://github.com/nosenfield"&gt;@nosenfield&lt;/a&gt;)!)&lt;/li&gt;
&lt;li&gt;&lt;a class="issue-link js-issue-link" href="https://github.com/audacity/audacity/pull/9935"&gt;#9935&lt;/a&gt; Added Podcast 2.0 chapters JSON export for label tracks (Thanks, Noah Rosenfield (&lt;a class="user-mention notranslate" href="https://github.com/nosenfield"&gt;@nosenfield&lt;/a&gt;)!)&lt;/li&gt;
&lt;li&gt;&lt;a class="issue-link js-issue-link" href="https://github.com/audacity/audacity/pull/10103"&gt;#10103&lt;/a&gt; Improve UI on HiDPI displays on Linux/wxGTK (Thanks, Ivan A. Melnikov (&lt;a class="user-mention notranslate" href="https://github.com/iv-m"&gt;@iv-m&lt;/a&gt;)!)&lt;/li&gt;
&lt;li&gt;&lt;a class="issue-link js-issue-link" href="https://github.com/audacity/audacity/pull/10099"&gt;#10099&lt;/a&gt; Fixed MixerBoard Mute and Solo button display (Thanks, Ivan A. Melnikov (&lt;a class="user-mention notranslate" href="https://github.com/iv-m"&gt;@iv-m&lt;/a&gt;)!)&lt;/li&gt;
&lt;li&gt;&lt;a class="issue-link js-issue-link" href="https://github.com/audacity/audacity/pull/10681"&gt;#10681&lt;/a&gt; Fixed multichannel FLAC import&lt;/li&gt;
&lt;li&gt;&lt;a class="issue-link js-issue-link" href="https://github.com/audacity/audacity/pull/10999"&gt;#10999&lt;/a&gt; Fixed envelope being broken after joining clips&lt;/li&gt;
&lt;/ul&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>audacity</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>soundscope - v1.9.2</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-06-11:tag:github.com,2008:Repository/1033259976/v1.9.2</ns0:id>
    <ns0:updated>2026-06-11T07:21:22Z</ns0:updated>
    <ns0:published>2026-06-11T07:21:22Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/bananaofhappiness/soundscope/releases/tag/v1.9.2" type="text/html"/>
    <ns0:summary type="html">&lt;h1&gt;Changelog&lt;/h1&gt;
&lt;p&gt;All notable changes to this project will be documented in this file.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;[1.9.2] - 2026-06-09&lt;/h2&gt;
&lt;h3&gt;Fixes&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Fixed&lt;/strong&gt; freeze when directory passed as argument. Set it as the current working directory.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fixed&lt;/strong&gt; FFT scaling, set range to -100..-18 dBFS&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Changes&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Use a filled-area chart rendering mode for the spectrum analyzer and LUFS. Now they look better and the spectrum analyzer doesn't appear noisy.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Known Issues&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Rapidly seeking through an audio file may cause lag, resulting in the playhead being in an incorrect position. Pausing playback and waiting for the playhead to return to the correct spot before resuming usually resolves the issue.&lt;/li&gt;
&lt;li&gt;In some audio files the playhead may gradually drift slightly to the right of the waveform center over time.&lt;/li&gt;
&lt;li&gt;Some files with high sample rate play back normally, but real-time visualization (waveform, spectrum, LUFS) lags significantly behind. For example, this occurs with &lt;code&gt;.wav&lt;/code&gt; files with a sample rate &amp;gt; 48000, while &lt;code&gt;.mp3&lt;/code&gt; files at 92000 play without noticeable lag.&lt;/li&gt;
&lt;/ul&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>soundscope</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>waveform-playlist - WAM 2.0 Plugins, Unified Effects Chain &amp; Faust for dawcore</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-06-11:tag:github.com,2008:Repository/8150190/dawcore-wam-plugins</ns0:id>
    <ns0:updated>2026-06-11T06:43:03Z</ns0:updated>
    <ns0:published>2026-06-11T06:43:03Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/naomiaro/waveform-playlist/releases/tag/dawcore-wam-plugins" type="text/html"/>
    <ns0:summary type="html">&lt;p&gt;Plugin support lands in dawcore: a unified insert-effects chain on &lt;code&gt;&amp;lt;daw-track&amp;gt;&lt;/code&gt; and &lt;code&gt;&amp;lt;daw-editor&amp;gt;&lt;/code&gt;, WAM 2.0 plugin hosting, and Faust DSP — both pre-compiled and compiled live in the browser. Closes the dawcore half of &lt;a class="issue-link js-issue-link" href="https://github.com/naomiaro/waveform-playlist/issues/367"&gt;#367&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;New packages&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;@dawcore/wam&lt;/code&gt; 0.0.1&lt;/strong&gt; — framework-agnostic WAM 2.0 hosting: idempotent host init (&lt;code&gt;ensureWamHost&lt;/code&gt;, offline-context aware), plugin loading with descriptor validation and factory caching, GUI helpers (&lt;code&gt;createWamParameterPanel&lt;/code&gt; fallback for GUI-less plugins), &lt;code&gt;library.json&lt;/code&gt; discovery (&lt;code&gt;fetchWamLibrary&lt;/code&gt;, community-registry compatible), a &lt;code&gt;wam-transport&lt;/code&gt; tempo/bar sync bridge with variable-tempo boundary tracking, and offline cloning for export rendering.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;@dawcore/faust&lt;/code&gt; 0.0.1&lt;/strong&gt; — compile Faust DSP to a live WAM effect in the browser (&lt;code&gt;compileFaustToWam&lt;/code&gt;, wrapping &lt;a href="https://www.npmjs.com/package/@shren/faust2wam" rel="nofollow"&gt;&lt;code&gt;@shren/faust2wam&lt;/code&gt;&lt;/a&gt;); compiler lazy-loads and stays chunk-isolated; Faust compile diagnostics surface unchanged.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Updated packages&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;@dawcore/components&lt;/code&gt; 0.0.24&lt;/strong&gt; — the effects surface on both elements: &lt;code&gt;addEffect&lt;/code&gt; (five &lt;code&gt;native-*&lt;/code&gt; built-ins + &lt;code&gt;registerEffect&lt;/code&gt;), &lt;code&gt;addWamPlugin(url)&lt;/code&gt;, &lt;code&gt;addFaustEffect(dsp)&lt;/code&gt;, &lt;code&gt;openEffectGui&lt;/code&gt;/&lt;code&gt;closeEffectGui&lt;/code&gt;, &lt;code&gt;moveEffect&lt;/code&gt;/&lt;code&gt;setEffectParams&lt;/code&gt;/&lt;code&gt;setEffectBypassed&lt;/code&gt;, chain persistence (&lt;code&gt;getEffectsState&lt;/code&gt;/&lt;code&gt;setEffectsState&lt;/code&gt; with graceful failed-plugin placeholders), offline rendering via &lt;code&gt;exportAudio()&lt;/code&gt;, and typed &lt;code&gt;daw-effect-*&lt;/code&gt; events bubbling track → editor. WAM and Faust are optional peers — zero bundle cost unless used.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;@dawcore/transport&lt;/code&gt; 0.0.13&lt;/strong&gt; — master-bus effects insertion (&lt;code&gt;connectMasterOutput&lt;/code&gt;/&lt;code&gt;disconnectMasterOutput&lt;/code&gt;, parallel-tap safe) and a &lt;code&gt;seek&lt;/code&gt; event. The transport remains plugin-agnostic: it only ever sees AudioNodes.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Try it&lt;/h2&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto"&gt;&lt;pre&gt;pnpm example:dawcore-wam   &lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; localhost:5175&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Load community plugins from &lt;a href="https://www.webaudiomodules.com/" rel="nofollow"&gt;webaudiomodules.com&lt;/a&gt; by URL or from the library picker, open their GUIs, save/restore chains across reloads, export the mix to WAV through the full effect chains, and compile Faust one-liners into live effects. Pre-compiled Faust effects (lowpass, Zita reverb, flanger) are bundled as fixtures.&lt;/p&gt;
&lt;h2&gt;Notes&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Epics: &lt;a class="issue-link js-issue-link" href="https://github.com/naomiaro/waveform-playlist/issues/412"&gt;#412&lt;/a&gt; (unified effects chain), &lt;a class="issue-link js-issue-link" href="https://github.com/naomiaro/waveform-playlist/issues/413"&gt;#413&lt;/a&gt; (WAM 2.0), &lt;a class="issue-link js-issue-link" href="https://github.com/naomiaro/waveform-playlist/issues/414"&gt;#414&lt;/a&gt; (Faust). WCLAP was researched and parked with a revisit plan (&lt;a class="issue-link js-issue-link" href="https://github.com/naomiaro/waveform-playlist/issues/415"&gt;#415&lt;/a&gt;, report in &lt;a class="issue-link js-issue-link" href="https://github.com/naomiaro/waveform-playlist/issues/431"&gt;#431&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;Verified against real community plugins (burns-audio Delay/Distortion) in a live browser, including tempo sync and offline export; WAM 1.0 plugins are rejected with a clear validation error.&lt;/li&gt;
&lt;li&gt;All chain operations are plugin-standard-agnostic by design — entries carry a &lt;code&gt;kind&lt;/code&gt; discriminant, leaving room for future standards (e.g. WCLAP) without API changes.&lt;/li&gt;
&lt;/ul&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>waveform-playlist</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>waveform-playlist - editor.bpm Display-Only + Multi-Entry Tempo-Map Guard (#407)</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-06-11:tag:github.com,2008:Repository/8150190/bpm-tempo-map-guard</ns0:id>
    <ns0:updated>2026-06-11T00:09:12Z</ns0:updated>
    <ns0:published>2026-06-11T00:09:12Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/naomiaro/waveform-playlist/releases/tag/bpm-tempo-map-guard" type="text/html"/>
    <ns0:summary type="html">&lt;p&gt;Fixes &lt;a class="issue-link js-issue-link" href="https://github.com/naomiaro/waveform-playlist/issues/407"&gt;#407&lt;/a&gt; — &lt;code&gt;editor.bpm&lt;/code&gt; silently corrupted variable-tempo sessions by overwriting the tick-0 entry of consumer-installed tempo maps. PR &lt;a class="issue-link js-issue-link" href="https://github.com/naomiaro/waveform-playlist/pull/410"&gt;#410&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Published packages&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Package&lt;/th&gt;
&lt;th&gt;Version&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;@dawcore/components&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;0.0.23&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;@dawcore/transport&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;0.0.12&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;@waveform-playlist/engine&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;13.4.0&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2&gt;What changed&lt;/h2&gt;
&lt;h3&gt;&lt;code&gt;editor.bpm&lt;/code&gt; is display-only when tick callbacks are set (&lt;code&gt;@dawcore/components&lt;/code&gt;)&lt;/h3&gt;
&lt;p&gt;When a consumer provides both &lt;code&gt;secondsToTicks&lt;/code&gt; and &lt;code&gt;ticksToSeconds&lt;/code&gt; callbacks — the editor's "external tempo map is authoritative" signal — assigning &lt;code&gt;editor.bpm&lt;/code&gt; no longer forwards to the engine or adapter. It updates the BPM readout and grid math only. Both clobber points are guarded: the &lt;code&gt;bpm&lt;/code&gt; setter and &lt;code&gt;_buildEngine&lt;/code&gt;'s initial tempo forward, so installing a tempo curve before or after the first track load is equally safe. Without callbacks, &lt;code&gt;editor.bpm&lt;/code&gt; behaves exactly as before.&lt;/p&gt;
&lt;h3&gt;Transport refuses defaulted tick-0 writes on multi-entry maps (&lt;code&gt;@dawcore/transport&lt;/code&gt;)&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;Transport.setTempo(bpm)&lt;/code&gt; with no &lt;code&gt;atTick&lt;/code&gt; now warns and returns &lt;code&gt;false&lt;/code&gt; when the &lt;code&gt;TempoMap&lt;/code&gt; has more than one entry, instead of silently overwriting the curve's tick-0 entry. Pass an explicit &lt;code&gt;atTick: 0&lt;/code&gt; to genuinely modify a multi-entry map. Single-entry maps — the ordinary "change the session tempo" path — are unchanged. New &lt;code&gt;TempoMap.entryCount&lt;/code&gt; getter (always &amp;gt;= 1) backs the check.&lt;/p&gt;
&lt;h3&gt;Engine commits tempo only on adapter acceptance (&lt;code&gt;@waveform-playlist/engine&lt;/code&gt;)&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;PlayoutAdapter.setTempo&lt;/code&gt; is now typed &lt;code&gt;boolean | void&lt;/code&gt;; an explicit &lt;code&gt;false&lt;/code&gt; means refused. &lt;code&gt;PlaylistEngine.setTempo&lt;/code&gt; keeps its prior bpm, skips the clip recompute, and emits no &lt;code&gt;statechange&lt;/code&gt; on refusal — previously a refused write froze &lt;code&gt;engine._bpm&lt;/code&gt; at a phantom value and the no-op guard swallowed same-value retries. Void-returning adapters (e.g. &lt;code&gt;TonePlayoutAdapter&lt;/code&gt;) count as accepted, so existing adapters work unchanged.&lt;/p&gt;
&lt;h2&gt;Example fixes&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;metronome.html&lt;/code&gt;: the tempo slider writes with an explicit tick 0 — a defaulted write is refused after the Accelerando sequence installs a 2-entry map.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;beat-map-grid.html&lt;/code&gt; / &lt;code&gt;automation.html&lt;/code&gt;: comments now document the ordering guarantees and the &lt;code&gt;clearTempos()&lt;/code&gt; dependency.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Tests&lt;/h2&gt;
&lt;p&gt;18 new tests across the three layers (guard refusal/escape-hatch/release, engine refusal/retry/void-adapter, dawcore display-only incl. callbacks-assigned-after-build). Suites: transport 245, engine 199, dawcore 495, playout 234 — all passing.&lt;/p&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>waveform-playlist</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>waveform-playlist - Frozen-Panes Layout for daw-editor (zero-drift controls, vertical scroll, compact track controls)</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-06-10:tag:github.com,2008:Repository/8150190/dawcore-frozen-panes-layout</ns0:id>
    <ns0:updated>2026-06-10T05:57:34Z</ns0:updated>
    <ns0:published>2026-06-10T05:57:34Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/naomiaro/waveform-playlist/releases/tag/dawcore-frozen-panes-layout" type="text/html"/>
    <ns0:summary type="html">&lt;p&gt;Rebuilds &lt;code&gt;&amp;lt;daw-editor&amp;gt;&lt;/code&gt;'s layout as &lt;strong&gt;frozen panes&lt;/strong&gt;, fixing track-controls ↔ track-row alignment that was structural, not incidental. Ships as &lt;code&gt;@dawcore/components@0.0.21&lt;/code&gt;.&lt;/p&gt;
&lt;h2&gt;Fixed (all measured via Playwright on the example pages)&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cumulative 1px-per-track drift&lt;/strong&gt; — &lt;code&gt;.track-row&lt;/code&gt; was content-box (120px style + 1px border = 121px rendered) while &lt;code&gt;daw-track-controls&lt;/code&gt; was border-box (exactly 120px); 7 tracks meant 7px of misalignment. Both now share the same border-box geometry and the beats-grid &lt;code&gt;+1&lt;/code&gt; height compensation is gone. &lt;strong&gt;After: 0px drift on every track, including stereo rows.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Controls clipped at small wave heights&lt;/strong&gt; — the Pan slider was silently cut off by &lt;code&gt;overflow: hidden&lt;/code&gt;. &lt;code&gt;daw-track-controls&lt;/code&gt; is now height-responsive via CSS container queries: Pan drops first, then Vol; name + M/S always visible, nothing ever clipped.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;No vertical scrolling&lt;/strong&gt; — a height-constrained editor used to clip overflow with no scrollbar. &lt;code&gt;.scroll-area&lt;/code&gt; now owns both scroll axes; the ruler band stays pinned and the controls column stays row-locked while scrolling.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Duplicated geometry&lt;/strong&gt; — the hardcoded 30px ruler spacer is gone; one &lt;code&gt;RULER_HEIGHT&lt;/code&gt; constant and one &lt;code&gt;trackHeight&lt;/code&gt; computation feed both columns.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;How it works&lt;/h2&gt;
&lt;div class="snippet-clipboard-content notranslate position-relative overflow-auto"&gt;&lt;pre class="notranslate"&gt;&lt;code&gt;:host (flex column)
├── .header-row: [ruler-gap][ruler-viewport &amp;gt; ruler-content &amp;gt; daw-ruler]   ← pinned
└── .body: [controls-viewport &amp;gt; controls-column][scroll-area (overflow: auto)]
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;A new &lt;code&gt;ScrollSyncController&lt;/code&gt; applies &lt;code&gt;translate3d(-scrollLeft)&lt;/code&gt; to the ruler and &lt;code&gt;translate3d(-scrollTop)&lt;/code&gt; to the controls column on every scroll event — the spreadsheet frozen-panes pattern, with no &lt;code&gt;position: sticky&lt;/code&gt; (avoiding the sticky-in-&lt;code&gt;overflow-x&lt;/code&gt; browser bug documented in &lt;code&gt;ui-components&lt;/code&gt;). It also forwards wheel events from the controls column (vertical) and the ruler band (horizontal scrub), deltaMode-aware, calling &lt;code&gt;preventDefault&lt;/code&gt; only when the container actually moved so page scroll-chaining is preserved.&lt;/p&gt;
&lt;p&gt;Seek-by-clicking-the-ruler still works — the ruler band shares the timeline's x-origin, so the existing &lt;code&gt;PointerHandler&lt;/code&gt; math holds unchanged.&lt;/p&gt;
&lt;h2&gt;Diagnostics&lt;/h2&gt;
&lt;p&gt;Misconfiguration is no longer silent: the controller warns when a sync target is missing while scrolled or when the scroll container disappears from the DOM, and &lt;code&gt;daw-track-controls&lt;/code&gt; warns at runtime if &lt;code&gt;container-type: size&lt;/code&gt; collapsed it because no explicit height was provided.&lt;/p&gt;
&lt;h2&gt;Testing&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;488/488 dawcore unit tests (15 new &lt;code&gt;ScrollSyncController&lt;/code&gt;, 11 new layout/integration, 2 compact-controls)&lt;/li&gt;
&lt;li&gt;Live browser verification: 0px alignment on &lt;code&gt;multiclip&lt;/code&gt; and &lt;code&gt;spectrogram&lt;/code&gt; examples, both-axes scroll sync, pinned ruler, real-mouse ruler seek, compact controls at 60/50/100px rows, wheel forwarding with page-chaining preserved&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;PR: &lt;a class="issue-link js-issue-link" href="https://github.com/naomiaro/waveform-playlist/pull/403"&gt;#403&lt;/a&gt;&lt;/p&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>waveform-playlist</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>DaisySeedProjects - v1.6.0</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-06-10:tag:github.com,2008:Repository/592029137/v1.6.0</ns0:id>
    <ns0:updated>2026-06-10T04:08:11Z</ns0:updated>
    <ns0:published>2026-06-10T04:08:11Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/bkshepherd/DaisySeedProjects/releases/tag/v1.6.0" type="text/html"/>
    <ns0:summary type="html">&lt;h2&gt;What's Changed&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;NAM A2 module by &lt;a class="user-mention notranslate" href="https://github.com/xconverge"&gt;@xconverge&lt;/a&gt; in &lt;a class="issue-link js-issue-link" href="https://github.com/bkshepherd/DaisySeedProjects/pull/94"&gt;#94&lt;/a&gt; (thanks &lt;a class="user-mention notranslate" href="https://github.com/bbenja"&gt;@bbenja&lt;/a&gt; for testing)&lt;/li&gt;
&lt;li&gt;Add optional IR to NAM module by &lt;a class="user-mention notranslate" href="https://github.com/xconverge"&gt;@xconverge&lt;/a&gt; in &lt;a class="issue-link js-issue-link" href="https://github.com/bkshepherd/DaisySeedProjects/pull/96"&gt;#96&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Fix memory leak when switching effects by &lt;a class="user-mention notranslate" href="https://github.com/xconverge"&gt;@xconverge&lt;/a&gt; (thanks to &lt;a class="user-mention notranslate" href="https://github.com/bbenja"&gt;@bbenja&lt;/a&gt;) in &lt;a class="issue-link js-issue-link" href="https://github.com/bkshepherd/DaisySeedProjects/pull/92"&gt;#92&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Fix formatting in midi_keys_module.cpp by &lt;a class="user-mention notranslate" href="https://github.com/valette"&gt;@valette&lt;/a&gt; in &lt;a class="issue-link js-issue-link" href="https://github.com/bkshepherd/DaisySeedProjects/pull/93"&gt;#93&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Add a "Reboot" item to the menu by &lt;a class="user-mention notranslate" href="https://github.com/xconverge"&gt;@xconverge&lt;/a&gt; in &lt;a class="issue-link js-issue-link" href="https://github.com/bkshepherd/DaisySeedProjects/pull/95"&gt;#95&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;New Contributors&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="user-mention notranslate" href="https://github.com/valette"&gt;@valette&lt;/a&gt; made their first contribution in &lt;a class="issue-link js-issue-link" href="https://github.com/bkshepherd/DaisySeedProjects/pull/93"&gt;#93&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Full Changelog&lt;/strong&gt;: &lt;a class="commit-link" href="https://github.com/bkshepherd/DaisySeedProjects/compare/v1.5.5...v1.6.0"&gt;&lt;tt&gt;v1.5.5...v1.6.0&lt;/tt&gt;&lt;/a&gt;&lt;/p&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>DaisySeedProjects</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>waveform-playlist - SoundFont Playback for dawcore + Late-Load API (setSoundFontCache, fromUrl)</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-06-10:tag:github.com,2008:Repository/8150190/dawcore-soundfont</ns0:id>
    <ns0:updated>2026-06-10T03:56:49Z</ns0:updated>
    <ns0:published>2026-06-10T03:56:49Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/naomiaro/waveform-playlist/releases/tag/dawcore-soundfont" type="text/html"/>
    <ns0:summary type="html">&lt;p&gt;SoundFont sample playback for the dawcore web components, plus a late-load/swap API that fixes the silent-PolySynth race in both the React and web-component stacks. Ships PRs &lt;a class="issue-link js-issue-link" href="https://github.com/naomiaro/waveform-playlist/pull/401"&gt;#401&lt;/a&gt; and &lt;a class="issue-link js-issue-link" href="https://github.com/naomiaro/waveform-playlist/pull/402"&gt;#402&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;SoundFont support for dawcore MIDI (&lt;a class="issue-link js-issue-link" href="https://github.com/naomiaro/waveform-playlist/pull/401"&gt;#401&lt;/a&gt;)&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;&amp;lt;daw-editor&amp;gt;&lt;/code&gt; MIDI tracks can now play through SF2 soundfont samples, matching the React stack. Per the adapter-pluggable design (&lt;a class="issue-link js-issue-link" href="https://github.com/naomiaro/waveform-playlist/issues/378"&gt;#378&lt;/a&gt;), no element API was needed — soundfont config lives on the adapter the consumer owns:&lt;/p&gt;
&lt;div class="highlight highlight-source-js notranslate position-relative overflow-auto"&gt;&lt;pre&gt;&lt;span class="pl-k"&gt;const&lt;/span&gt; &lt;span class="pl-s1"&gt;soundFontCache&lt;/span&gt; &lt;span class="pl-c1"&gt;=&lt;/span&gt; &lt;span class="pl-k"&gt;await&lt;/span&gt; &lt;span class="pl-v"&gt;SoundFontCache&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-en"&gt;fromUrl&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-s"&gt;'/media/soundfont/A320U.sf2'&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
&lt;span class="pl-s1"&gt;editor&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-c1"&gt;adapter&lt;/span&gt; &lt;span class="pl-c1"&gt;=&lt;/span&gt; &lt;span class="pl-en"&gt;createToneAdapter&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-kos"&gt;{&lt;/span&gt; &lt;span class="pl-c1"&gt;ppqn&lt;/span&gt;: &lt;span class="pl-c1"&gt;960&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt; soundFontCache &lt;span class="pl-kos"&gt;}&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
&lt;span class="pl-k"&gt;await&lt;/span&gt; &lt;span class="pl-s1"&gt;editor&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-en"&gt;loadMidi&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-s"&gt;'/media/midi/song.mid'&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt; &lt;span class="pl-c"&gt;// GM programs + channel-9 percussion&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;New example: &lt;code&gt;examples/dawcore-tone/soundfont.html&lt;/code&gt;.&lt;/p&gt;
&lt;h2&gt;&lt;code&gt;ToneAdapter.setSoundFontCache(cache | undefined)&lt;/code&gt; (&lt;a class="issue-link js-issue-link" href="https://github.com/naomiaro/waveform-playlist/pull/401"&gt;#401&lt;/a&gt;)&lt;/h2&gt;
&lt;p&gt;Previously the soundfont decision was burned in at track-add time: if the SF2 finished downloading after tracks were set up, MIDI stayed on PolySynth forever. The adapter now exposes &lt;code&gt;setSoundFontCache&lt;/code&gt;, which rebuilds &lt;strong&gt;only&lt;/strong&gt; the MIDI tracks whose effective routing changed — audio tracks keep playing untouched, swap-during-playback resumes mid-clip, per-track failures are isolated (warn + continue), and passing &lt;code&gt;undefined&lt;/code&gt; reverts to PolySynth. The guard compares against what each track was built with (not the previous argument), so the same cache object flipping &lt;code&gt;isLoaded&lt;/code&gt; after a late &lt;code&gt;load()&lt;/code&gt; correctly triggers the upgrade.&lt;/p&gt;
&lt;p&gt;The React provider forwards late &lt;code&gt;soundFontCache&lt;/code&gt; prop changes to the live adapter automatically — without the full engine rebuild this used to cost.&lt;/p&gt;
&lt;h2&gt;API hardening (&lt;a class="issue-link js-issue-link" href="https://github.com/naomiaro/waveform-playlist/pull/402"&gt;#402&lt;/a&gt;)&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;SoundFontCache.fromUrl(url, { context?, signal? })&lt;/code&gt; — static factory that resolves only after fetch + parse, so an unloaded cache can't reach the adapter on the common path. Now the blessed construction path across all docs and examples.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;isToneAdapter(adapter)&lt;/code&gt; — exported type guard narrowing a generic &lt;code&gt;PlayoutAdapter&lt;/code&gt; to &lt;code&gt;ToneAdapter&lt;/code&gt; (structural check; used internally by the browser package and available to web-component consumers).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Drive-by fixes (&lt;a class="issue-link js-issue-link" href="https://github.com/naomiaro/waveform-playlist/pull/401"&gt;#401&lt;/a&gt;)&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;updateTrack&lt;/code&gt; no longer re-adds the audio track after &lt;code&gt;replaceTrackClips&lt;/code&gt; updated it in place (leaked the old ToneTrack and duplicated its Transport events).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;removeTrack&lt;/code&gt; now also removes the companion &lt;code&gt;:midi&lt;/code&gt; playout track for mixed audio+MIDI tracks.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Published packages&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Package&lt;/th&gt;
&lt;th&gt;Version&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;@waveform-playlist/playout&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;12.4.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;@waveform-playlist/browser&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;13.1.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;@waveform-playlist/ui-components&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;13.0.1 (dep refresh)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;@waveform-playlist/recording&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;12.1.1 (dep refresh)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;@waveform-playlist/annotations&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;12.0.1 (dep refresh)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;@waveform-playlist/spectrogram&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;13.0.2 (dep refresh)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Tests: playout 234, browser 198. Docs: React MIDI guide gained a "Loading the SoundFont late" section; all soundfont snippets use &lt;code&gt;fromUrl&lt;/code&gt;.&lt;/p&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>waveform-playlist</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>drobilla.net - LAD - Jalv 1.8.2</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-06-09:tag:drobilla.net,2026-06-08:/2026/06/08/jalv-1-8-2.html</ns0:id>
    <ns0:updated>2026-06-09T03:50:00Z</ns0:updated>
    <ns0:published>2026-06-09T03:50:00Z</ns0:published>
    <ns0:link rel="alternate" href="https://drobilla.net/2026/06/08/jalv-1-8-2.html" type="text/html"/>
    <ns0:summary type="html">&lt;p&gt;&lt;a href="https://download.drobilla.net/jalv-1.8.2.tar.xz"&gt;Jalv 1.8.2&lt;/a&gt; has been released.  Jalv (JAck LV2) is a simple host for LV2 plugins.  It runs a plugin, and exposes the plugin ports to the system, essentially making the plugin an application.  For more information, see &lt;a href="http://drobilla.net/software/jalv"&gt;http://drobilla.net/software/jalv&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Changes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Add log window to Gtk interface&lt;/li&gt;
&lt;li&gt;Add separate menu item for saving current preset&lt;/li&gt;
&lt;li&gt;Clean up on exit from console interface&lt;/li&gt;
&lt;li&gt;Disable delete preset action for non-writable presets&lt;/li&gt;
&lt;li&gt;Fix control output refresh rate&lt;/li&gt;
&lt;li&gt;Fix port controls&lt;/li&gt;
&lt;li&gt;Fix state scratch directory location&lt;/li&gt;
&lt;li&gt;Fix updating message-based parameters when loading presets&lt;/li&gt;
&lt;li&gt;Improve command parsing&lt;/li&gt;
&lt;li&gt;Improve save preset dialog&lt;/li&gt;
&lt;li&gt;Only create a state scratch directory when necessary&lt;/li&gt;
&lt;li&gt;Remove obscure save-as action&lt;/li&gt;
&lt;li&gt;Update string controls when focus leaves entry in Gtk interface&lt;/li&gt;
&lt;/ul&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>drobilla.net - LAD</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>drobilla.net - LAD - Lilv 0.28.0</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-06-09:tag:drobilla.net,2026-06-08:/2026/06/08/lilv-0-28-0.html</ns0:id>
    <ns0:updated>2026-06-09T02:25:00Z</ns0:updated>
    <ns0:published>2026-06-09T02:25:00Z</ns0:published>
    <ns0:link rel="alternate" href="https://drobilla.net/2026/06/08/lilv-0-28-0.html" type="text/html"/>
    <ns0:summary type="html">&lt;p&gt;&lt;a href="https://download.drobilla.net/lilv-0.28.0.tar.xz"&gt;Lilv 0.28.0&lt;/a&gt; has been released.  Lilv is a C library to make the use of LV2 plugins as simple as possible for applications.&lt;/p&gt;
&lt;p&gt;Changes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Add early assertions for non-null parameters in public API&lt;/li&gt;
&lt;li&gt;Add lilv_state_get_bundle_path()&lt;/li&gt;
&lt;li&gt;Always create state files with O_CLOEXEC on glibc &amp;gt;= 2.7&lt;/li&gt;
&lt;li&gt;Clarify relative symbolic link creation when saving state&lt;/li&gt;
&lt;li&gt;Fix build with dynmanifest support&lt;/li&gt;
&lt;li&gt;Fix crash when loading plugin classes on Windows&lt;/li&gt;
&lt;li&gt;Fix potential file loss when saving state with no link directory&lt;/li&gt;
&lt;li&gt;Fix potential iterator leaks and resulting log message flood&lt;/li&gt;
&lt;li&gt;Fix replacing links when saving over state&lt;/li&gt;
&lt;li&gt;Fix test build when no C++ compiler is available&lt;/li&gt;
&lt;li&gt;Improve error handling when writing and deleting state&lt;/li&gt;
&lt;/ul&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>drobilla.net - LAD</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>lilv - v0.28.0</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-06-08:tag:github.com,2008:Repository/66715794/v0.28.0</ns0:id>
    <ns0:updated>2026-06-08T23:54:13Z</ns0:updated>
    <ns0:published>2026-06-08T23:54:13Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/lv2/lilv/releases/tag/v0.28.0" type="text/html"/>
    <ns0:author>
      <ns0:name>lilv</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>MuseScore - v4.7.3: Merge pull request #33585 from miiizen/473-ports</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-06-08:tag:github.com,2008:Repository/4454793/v4.7.3</ns0:id>
    <ns0:updated>2026-06-08T11:31:38Z</ns0:updated>
    <ns0:published>2026-06-08T11:31:38Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/musescore/MuseScore/releases/tag/v4.7.3" type="text/html"/>
    <ns0:summary type="html">&lt;p&gt;Port engraving PRs to 4.7.3&lt;/p&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>MuseScore</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>lilypond - v2.27.1</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-06-06:tag:github.com,2008:Repository/12852427/v2.27.1</ns0:id>
    <ns0:updated>2026-06-06T14:16:48Z</ns0:updated>
    <ns0:published>2026-06-06T14:16:48Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/lilypond/lilypond/releases/tag/v2.27.1" type="text/html"/>
    <ns0:summary type="html">&lt;p&gt;LilyPond 2.27.1&lt;/p&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>lilypond</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>seq66 - Mesonry Opens Doors</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-06-06:tag:github.com,2008:Repository/206158002/0.99.25</ns0:id>
    <ns0:updated>2026-06-06T13:35:35Z</ns0:updated>
    <ns0:published>2026-06-06T13:35:35Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/ahlstromcj/seq66/releases/tag/0.99.25" type="text/html"/>
    <ns0:summary type="html">&lt;p&gt;This release contains some minor feature updates and fixes, and a&lt;br /&gt;
major refactoring of the Seq66 build to use Meson instead of GNU&lt;br /&gt;
Autotools. The source code tree for the Qt GUI has been rearranged&lt;br /&gt;
to separate Qt-helper code from the user-interface code.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Main window.
&lt;ul&gt;
&lt;li&gt;The button in Help / About is now an OK button.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Pattern editor.
&lt;ul&gt;
&lt;li&gt;Added a wrench icon for the pattern-fix button.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Event editor. Added checks on timestamps plus a button to&lt;br /&gt;
increase the pattern size by one measure.&lt;/li&gt;
&lt;li&gt;Fixed more QMouseEvent x()/y() deprecations found by the Meson&lt;br /&gt;
build.&lt;/li&gt;
&lt;li&gt;Build system.
&lt;ul&gt;
&lt;li&gt;Meson is used to manage the build.&lt;/li&gt;
&lt;li&gt;The lib66 library project is used as a Meson subproject.&lt;/li&gt;
&lt;li&gt;The work.sh script provides handy options to apply Meson setup&lt;br /&gt;
and compilation.&lt;/li&gt;
&lt;li&gt;The normal build is made in build/cc. Other build subdirectories&lt;br /&gt;
are clang, cross, portmidi, and debug.&lt;/li&gt;
&lt;li&gt;Windows. The build, and making the NSIS installer, are supported.&lt;br /&gt;
(The old batch-file build script still works.)&lt;/li&gt;
&lt;li&gt;Build info. Uses the /etc/os-release file if available.&lt;/li&gt;
&lt;li&gt;The CLI (seq66cli) and GUI (qseq66) are both built by default.&lt;/li&gt;
&lt;li&gt;JACK Session support is disabled by default, but can be enabled.&lt;/li&gt;
&lt;li&gt;Except for the Qt libraries, the build is a static build.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Documentation updated.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;See NEWS for many more details.&lt;/p&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>seq66</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>ZLEqualizer - 1.2.1</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-06-05:tag:github.com,2008:Repository/729959292/1.2.1</ns0:id>
    <ns0:updated>2026-06-05T13:08:58Z</ns0:updated>
    <ns0:published>2026-06-05T13:08:58Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/ZL-Audio/ZLEqualizer/releases/tag/1.2.1" type="text/html"/>
    <ns0:summary type="html">&lt;p&gt;docs: update changelog [skip ci]&lt;/p&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>ZLEqualizer</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>Noteahead - 3.2.0</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-06-03:tag:github.com,2008:Repository/313720469/3.2.0</ns0:id>
    <ns0:updated>2026-06-03T19:23:40Z</ns0:updated>
    <ns0:published>2026-06-03T19:23:40Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/juzzlin/Noteahead/releases/tag/3.2.0" type="text/html"/>
    <ns0:summary type="html">&lt;p&gt;3.2.0&lt;/p&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>Noteahead</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>rosegarden-official - Rosegarden 26.06</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-06-03:tag:github.com,2008:Repository/352749120/26.06</ns0:id>
    <ns0:updated>2026-06-03T12:22:22Z</ns0:updated>
    <ns0:published>2026-06-03T12:22:22Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/tedfelix/rosegarden-official/releases/tag/26.06" type="text/html"/>
    <ns0:summary type="html">&lt;h1&gt;ROSEGARDEN 26.06 RELEASED&lt;/h1&gt;
&lt;p&gt;The Rosegarden team is proud to announce the release of version 26.06 of Rosegarden, a MIDI sequencer that features a rich understanding of music notation along with basic support for digital audio.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.rosegardenmusic.com/" rel="nofollow"&gt;http://www.rosegardenmusic.com/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Included in this release...&lt;/p&gt;
&lt;h2&gt;Bug Fixes&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;LV2: Fix memory leaks.  Bug #1748.  [&lt;a class="commit-link" href="https://github.com/tedfelix/rosegarden-official/commit/8139069f92b3b348013a09d7f9eef65e51e5d756"&gt;&lt;tt&gt;8139069&lt;/tt&gt;&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;cmake: Set LV2 minimum version to 1.18.0.  [&lt;a class="commit-link" href="https://github.com/tedfelix/rosegarden-official/commit/e78887fc13a4702f5ecee17689ba00d34b5e99c9"&gt;&lt;tt&gt;e78887f&lt;/tt&gt;&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;LV2: Improved handling of GTK2 plugins.  Feature Request #541.  [&lt;a class="commit-link" href="https://github.com/tedfelix/rosegarden-official/commit/6c6b5e39ba6950680f6288598b69b6a0d152892a"&gt;&lt;tt&gt;6c6b5e3&lt;/tt&gt;&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;Fix duplicate menu items in "Set Entry Velocities" window.  Bug #1752.  [&lt;a class="commit-link" href="https://github.com/tedfelix/rosegarden-official/commit/95e52f0e64186ad4f1ecc47e56e7ab6a233cfbc9"&gt;&lt;tt&gt;95e52f0&lt;/tt&gt;&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;Fix empty profile dump with no profiling.  Bug #1755.  [&lt;a class="commit-link" href="https://github.com/tedfelix/rosegarden-official/commit/90d2c00a16f07f9443a728955751ecd23cce1b31"&gt;&lt;tt&gt;90d2c00&lt;/tt&gt;&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;Add missing #include .  Bug #1746  [&lt;a class="commit-link" href="https://github.com/tedfelix/rosegarden-official/commit/b714afbaa4cdf22211ba90a96afd11b1bfcd386b"&gt;&lt;tt&gt;b714afb&lt;/tt&gt;&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;cmake: Make lv2 optional.  Patch #84.  [&lt;a class="commit-link" href="https://github.com/tedfelix/rosegarden-official/commit/c519c57ab2ea45d35d0335271676960d608d3fbe"&gt;&lt;tt&gt;c519c57&lt;/tt&gt;&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;cmake: Rename DISABLE_LILV -&amp;gt; DISABLE_LV2.  [&lt;a class="commit-link" href="https://github.com/tedfelix/rosegarden-official/commit/2d2824cc848c68e3e472c46743dbe9608388ec18"&gt;&lt;tt&gt;2d2824c&lt;/tt&gt;&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;cmake: Add DISABLE_PCH.  [&lt;a class="commit-link" href="https://github.com/tedfelix/rosegarden-official/commit/04e36f6ea4a87730e56347502b600123cc9f6905"&gt;&lt;tt&gt;04e36f6&lt;/tt&gt;&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;cmake: Fix broken CMAKE_BUILD_TYPE.  [&lt;a class="commit-link" href="https://github.com/tedfelix/rosegarden-official/commit/c149ea9a667216b40809d537866ea7c17bdebec3"&gt;&lt;tt&gt;c149ea9&lt;/tt&gt;&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;Matrix: Fixed crash on large horizontal zoom.  Bug #1761.  [&lt;a class="commit-link" href="https://github.com/tedfelix/rosegarden-official/commit/853313edcf08147d96293cf221299847cca41ada"&gt;&lt;tt&gt;853313e&lt;/tt&gt;&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;Matrix: Fixed horizonatal zoom range issue.  Bug #1761.  [&lt;a class="commit-link" href="https://github.com/tedfelix/rosegarden-official/commit/4a34375a33ff139ab606bf30fcd4e09cfd5d9fd5"&gt;&lt;tt&gt;4a34375&lt;/tt&gt;&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;Matrix: Fix vertical zoom range issue.  [&lt;a class="commit-link" href="https://github.com/tedfelix/rosegarden-official/commit/807cd89374d859ab5de285b0a992a9e57f2c4ba5"&gt;&lt;tt&gt;807cd89&lt;/tt&gt;&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;Matrix: Improve HV wheel behavior.  [&lt;a class="commit-link" href="https://github.com/tedfelix/rosegarden-official/commit/0ef1e21debebc5f73f6e0036aa16a0581b91f51b"&gt;&lt;tt&gt;0ef1e21&lt;/tt&gt;&lt;/a&gt;] [&lt;a class="commit-link" href="https://github.com/tedfelix/rosegarden-official/commit/566f98487333463df56271e1759727a2b7cebc79"&gt;&lt;tt&gt;566f984&lt;/tt&gt;&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;Matrix: Fix preview play for tied notes.  Bug #1764.  [&lt;a class="commit-link" href="https://github.com/tedfelix/rosegarden-official/commit/e9ed4f1221953473e80fa1633f8d05ee3e4ea2a7"&gt;&lt;tt&gt;e9ed4f1&lt;/tt&gt;&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;AudioPluginDialog: Improve Editor button behavior.  Editor button is now disabled if JACK isn't up.  An error message is provided via the button's tooltip when it is disabled.  [&lt;a class="commit-link" href="https://github.com/tedfelix/rosegarden-official/commit/fbaa3ec6b158f96fefb239d788bc4718e2b40229"&gt;&lt;tt&gt;fbaa3ec&lt;/tt&gt;&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;MIDI Mixer: Handle changes to the number of devices without closing the window.  [&lt;a class="commit-link" href="https://github.com/tedfelix/rosegarden-official/commit/520641f59cb253e23ff176e2bf3728b0cd1bddd4"&gt;&lt;tt&gt;520641f&lt;/tt&gt;&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;MIDI Mixer: Fix garbage in meters.  [&lt;a class="commit-link" href="https://github.com/tedfelix/rosegarden-official/commit/254e75a45fc2ab8eb92f7afec071926b576ed103"&gt;&lt;tt&gt;254e75a&lt;/tt&gt;&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;MIDI Mixer: Handle changes to the number of controllers.  [&lt;a class="commit-link" href="https://github.com/tedfelix/rosegarden-official/commit/faeb4238be4de7b85bfcaa655a5290b47cd35db2"&gt;&lt;tt&gt;faeb423&lt;/tt&gt;&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;Audio File Manager: Fix unload not working on selected WAV files.  Bug #1766.  [&lt;a class="commit-link" href="https://github.com/tedfelix/rosegarden-official/commit/8626e2ec58794dccc43829153b9fb353fc517521"&gt;&lt;tt&gt;8626e2e&lt;/tt&gt;&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;main window: Fix toolbar tool buttons not responding to tool changes via the context menu.  [&lt;a class="commit-link" href="https://github.com/tedfelix/rosegarden-official/commit/6d33d9d5ed31c28084f9834b3fbc8137a199dfa7"&gt;&lt;tt&gt;6d33d9d&lt;/tt&gt;&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;main window: Fix context menu tool items enabled at the wrong time.  [&lt;a class="commit-link" href="https://github.com/tedfelix/rosegarden-official/commit/212f1ba1280c20d833da49871f80bb4224404505"&gt;&lt;tt&gt;212f1ba&lt;/tt&gt;&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;main window: Disable VU meters on muted and archived tracks.  Bug #1767.  [&lt;a class="commit-link" href="https://github.com/tedfelix/rosegarden-official/commit/1ff36b47e4afe4604e92a03553a92ac476ecc3e9"&gt;&lt;tt&gt;1ff36b4&lt;/tt&gt;&lt;/a&gt;] [&lt;a class="commit-link" href="https://github.com/tedfelix/rosegarden-official/commit/5ed9c5248cfb6eeb1052ab6d4f0d384fd59c0220"&gt;&lt;tt&gt;5ed9c52&lt;/tt&gt;&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;main window: Make rotary tooltip dynamic.  Bug #1768.  [&lt;a class="commit-link" href="https://github.com/tedfelix/rosegarden-official/commit/d39555d401ad9d873758f93a1337c19c0676a36f"&gt;&lt;tt&gt;d39555d&lt;/tt&gt;&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;metronome: Use bar velocity for preview.  [&lt;a class="commit-link" href="https://github.com/tedfelix/rosegarden-official/commit/3f773b79b057635b9b7b9a4a72a6d155ae6a88e7"&gt;&lt;tt&gt;3f773b7&lt;/tt&gt;&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;MusicXML: Fix crash when importing MusicXML.  PR &lt;a class="issue-link js-issue-link" href="https://github.com/tedfelix/rosegarden-official/pull/32"&gt;#32&lt;/a&gt;.  [&lt;a class="commit-link" href="https://github.com/tedfelix/rosegarden-official/commit/92f9b3b426a570727e3e3212abbc2f486707b7d1"&gt;&lt;tt&gt;92f9b3b&lt;/tt&gt;&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;Notation: Fix erasing triplet note.  Bug #1772.  [&lt;a class="commit-link" href="https://github.com/tedfelix/rosegarden-official/commit/5a0d019c45fb38e7df39ef69be6d8d4929a23f47"&gt;&lt;tt&gt;5a0d019&lt;/tt&gt;&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;Tranzport: Disabled support for Frontier Design Group's TranzPort DAW Control.  See README for instructions on re-enabling and let us know if you are using this.  [&lt;a class="commit-link" href="https://github.com/tedfelix/rosegarden-official/commit/44dab8314bb121cbfb64fe6354f0cf8848f92d18"&gt;&lt;tt&gt;44dab83&lt;/tt&gt;&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;Notation: Fix select and delete notes in tuplets.  Bug #1772.  [&lt;a class="commit-link" href="https://github.com/tedfelix/rosegarden-official/commit/ff57686630fe8b18c47c7dc8f176110d366994fd"&gt;&lt;tt&gt;ff57686&lt;/tt&gt;&lt;/a&gt;] [&lt;a class="commit-link" href="https://github.com/tedfelix/rosegarden-official/commit/81541588f70315265e0b36e62d146c527c8aeec2"&gt;&lt;tt&gt;8154158&lt;/tt&gt;&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;Notation: Fix inserting tuplet note at beginning.  Bug #1772.  [&lt;a class="commit-link" href="https://github.com/tedfelix/rosegarden-official/commit/de410d79371ea53053cf526bb2db9b68c136dbf6"&gt;&lt;tt&gt;de410d7&lt;/tt&gt;&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;main window: Fix scroll to follow playback.  When it is off, the display will not scroll.  Turn it on and the display will jump to where the cursor is.  Bug #1774.  [&lt;a class="commit-link" href="https://github.com/tedfelix/rosegarden-official/commit/254f9824cec4b1bd1e6adc7727bccaa9b11e7b69"&gt;&lt;tt&gt;254f982&lt;/tt&gt;&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;examples: Make all channels fixed.  PR &lt;a class="issue-link js-issue-link" href="https://github.com/tedfelix/rosegarden-official/pull/45"&gt;#45&lt;/a&gt;.  [&lt;a class="commit-link" href="https://github.com/tedfelix/rosegarden-official/commit/6b2824a52dbac7c6803a2a4660809aaa2b361154"&gt;&lt;tt&gt;6b2824a&lt;/tt&gt;&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;Notation: Fix beaming a selection that contains a tuplet losing the tuplet.  Bug #1773.  [&lt;a class="commit-link" href="https://github.com/tedfelix/rosegarden-official/commit/80af01978936cce0a7c44a094d3cbfab82d0fbac"&gt;&lt;tt&gt;80af019&lt;/tt&gt;&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;Notation: Improve rendering of mixed beam/tuple group.  Bug #1773.  [&lt;a class="commit-link" href="https://github.com/tedfelix/rosegarden-official/commit/905859fc05402e68d92c0caf63c7398344abe1a7"&gt;&lt;tt&gt;905859f&lt;/tt&gt;&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;Event List Editor: Fix initial selection in event editor.  Bug #1777.  [&lt;a class="commit-link" href="https://github.com/tedfelix/rosegarden-official/commit/af81698a7c5bfc81a4681515652aa2fa96f169bc"&gt;&lt;tt&gt;af81698&lt;/tt&gt;&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;Editors: Remove "Durations" from rescale menu items.  Bug #1771.  [&lt;a class="commit-link" href="https://github.com/tedfelix/rosegarden-official/commit/91a1a718f5b903bb515f060221029f18dee223f9"&gt;&lt;tt&gt;91a1a71&lt;/tt&gt;&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;Event List Editor: Select new event after insert.  [&lt;a class="commit-link" href="https://github.com/tedfelix/rosegarden-official/commit/5131ab73dfc6254fb90c66fccc4bd44a3bfd62dc"&gt;&lt;tt&gt;5131ab7&lt;/tt&gt;&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;Event List Editor: Fix edit not leaving event selected.  [&lt;a class="commit-link" href="https://github.com/tedfelix/rosegarden-official/commit/c6ec410702dadb7280dcacd368c90e96e10cb670"&gt;&lt;tt&gt;c6ec410&lt;/tt&gt;&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;Matrix: Fix matrix velocity can end up 0.  Bug #1777.  [&lt;a class="commit-link" href="https://github.com/tedfelix/rosegarden-official/commit/af83558f8e44ecc10c4d6e4fcedcf7b49dd4b215"&gt;&lt;tt&gt;af83558&lt;/tt&gt;&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;Matrix: Fix unreadable grid dropdown in Native theme.  Bug #1778.  [&lt;a class="commit-link" href="https://github.com/tedfelix/rosegarden-official/commit/6f886727a6bb361fc2557819f7ca65f964356b30"&gt;&lt;tt&gt;6f88672&lt;/tt&gt;&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;Matrix: Fix unreadable quantize dropdown in Native theme.  Bug #1778.  [&lt;a class="commit-link" href="https://github.com/tedfelix/rosegarden-official/commit/29193b7a03ee47f89c8de9daca505b3366fe03e9"&gt;&lt;tt&gt;29193b7&lt;/tt&gt;&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;Notation: Fix crash with Make Triplet (Ctrl+R).  Bug #1781.  [&lt;a class="commit-link" href="https://github.com/tedfelix/rosegarden-official/commit/6bf63b0f3d8b1e612f074bc3c25936f19888d251"&gt;&lt;tt&gt;6bf63b0&lt;/tt&gt;&lt;/a&gt;]&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;New Features&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;rgd: Added support for alternative bank select approaches for synths like the Yamaha TG77 and Oberheim Matrix-1000.  Feature Request #542.  [&lt;a class="commit-link" href="https://github.com/tedfelix/rosegarden-official/commit/b9c94293c585c5ab1434924be3db346bd2d5d731"&gt;&lt;tt&gt;b9c9429&lt;/tt&gt;&lt;/a&gt;] [&lt;a class="commit-link" href="https://github.com/tedfelix/rosegarden-official/commit/5b03a6285cb820ac7b24115f76e3f6b660b779a4"&gt;&lt;tt&gt;5b03a62&lt;/tt&gt;&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;matrix: Remember velocity for each segment.  [&lt;a class="commit-link" href="https://github.com/tedfelix/rosegarden-official/commit/7e3ecfa101ce65daa6b84121e719150c39e799a6"&gt;&lt;tt&gt;7e3ecfa&lt;/tt&gt;&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;main window toolbar: Added metronome button to the transport toolbar.  [&lt;a class="commit-link" href="https://github.com/tedfelix/rosegarden-official/commit/2fcbb1426f5ba9226ea6b33ad6b2627341f7ef75"&gt;&lt;tt&gt;2fcbb14&lt;/tt&gt;&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;main window: Make "End" key jump to the end of the segments on first press, and to the end of the composition on the second press.  [&lt;a class="commit-link" href="https://github.com/tedfelix/rosegarden-official/commit/42ba3c6341134dd367a07090d7e313f0128c760e"&gt;&lt;tt&gt;42ba3c6&lt;/tt&gt;&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;Rulers: Add "Set to Default" to context menu.  Also accessible via middle mouse button in select and move tools.  [&lt;a class="commit-link" href="https://github.com/tedfelix/rosegarden-official/commit/5a2efddfb3104ec7f0caa0e809c0be8e8d399eab"&gt;&lt;tt&gt;5a2efdd&lt;/tt&gt;&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;lilypond: Add warning about too-short durations that will lead to lilypond errors.  PR &lt;a class="issue-link js-issue-link" href="https://github.com/tedfelix/rosegarden-official/pull/44"&gt;#44&lt;/a&gt;.  [&lt;a class="commit-link" href="https://github.com/tedfelix/rosegarden-official/commit/a11a8343f8fbb331fea7472b87891bbd6e9cb6a0"&gt;&lt;tt&gt;a11a834&lt;/tt&gt;&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;Event List Editor: Add Edit &amp;gt; Paste At...  [&lt;a class="commit-link" href="https://github.com/tedfelix/rosegarden-official/commit/b3682ef93c4182224a57005bb3e0909c112e7028"&gt;&lt;tt&gt;b3682ef&lt;/tt&gt;&lt;/a&gt;]&lt;/li&gt;
&lt;/ul&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>rosegarden-official</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>hvcc - v0.16.1</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-06-03:tag:github.com,2008:Repository/343553019/v0.16.1</ns0:id>
    <ns0:updated>2026-06-03T09:37:21Z</ns0:updated>
    <ns0:published>2026-06-03T09:37:21Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/Wasted-Audio/hvcc/releases/tag/v0.16.1" type="text/html"/>
    <ns0:summary type="html">&lt;p&gt;Bugfixes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Allow diacritics in send/receive (&lt;a class="issue-link js-issue-link" href="https://github.com/Wasted-Audio/hvcc/issues/344"&gt;#344&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Resolve absolute nam path (&lt;a class="issue-link js-issue-link" href="https://github.com/Wasted-Audio/hvcc/issues/377"&gt;#377&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Fix issue with Path in jinja2 environment&lt;/li&gt;
&lt;li&gt;Daisy: Don't show warning if board doesn't have display section (&lt;a class="issue-link js-issue-link" href="https://github.com/Wasted-Audio/hvcc/issues/349"&gt;#349&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>hvcc</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>rncbc.org - a.k.a. Rui Nuno Capela - QmidiCtl 1.0.3 - A Mid-Spring'26 Release</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-06-03:2916 at https://www.rncbc.org/drupal</ns0:id>
    <ns0:updated>2026-06-03T06:00:00Z</ns0:updated>
    <ns0:published>2026-06-03T06:00:00Z</ns0:published>
    <ns0:link rel="alternate" href="https://www.rncbc.org/drupal/node/2916" type="text/html"/>
    <ns0:summary type="html">&lt;span class="field field--name-title field--type-string field--label-hidden"&gt;QmidiCtl 1.0.3 - A Mid-Spring'26 Release&lt;/span&gt;

            &lt;div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"&gt;&lt;p&gt;&lt;a href="https://qmidictl.sourceforge.io" name="qmidictl"&gt;&lt;img align="left" hspace="4" src="https://www.rncbc.org/drupal/files/qmidictl.png" title="QmidiCtl" vspace="4" /&gt;&lt;/a&gt;&lt;a href="https://qmidictl.sourceforge.io"&gt;&lt;img align="right" hspace="4" src="https://www.rncbc.org/drupal/files/qmidictl-android-phone-1.png" title="QmidiCtl on an Android (smart)phone" vspace="4" width="320" /&gt;&lt;/a&gt;Hi again!&lt;/p&gt;
&lt;dd&gt;&lt;b&gt;&lt;a href="https://qmidictl.sourceforge.io"&gt;QmidiCtl&lt;/a&gt; 1.0.3&lt;/b&gt; (&lt;i&gt;mid-spring'26&lt;/i&gt;) is out!&lt;/dd&gt;
&lt;p&gt;&lt;a href="https://qmidictl.sourceforge.io"&gt;QmidiCtl&lt;/a&gt; is a MIDI remote controller application that sends MIDI data over the network, using UDP/IP multicast. Inspired by multimidicast (&lt;a href="https://llg.cubic.org/tools"&gt;https://llg.cubic.org/tools&lt;/a&gt;) and designed to be compatible with ipMIDI for Windows (&lt;a href="https://nerds.de"&gt;https://nerds.de&lt;/a&gt;). &lt;a href="https://qmidictl.sourceforge.io"&gt;QmidiCtl&lt;/a&gt; was long ago designed for the &lt;a href="https://www.maemo.org"&gt;Maemo&lt;/a&gt; enabled handheld devices, namely the late &lt;a href="https://wiki.maemo.org/Nokia_N900"&gt;Nokia N900&lt;/a&gt; and promoted to the &lt;a href="https://maemo.org/packages/view/qmidictl/"&gt;Maemo Package&lt;/a&gt; repositories. Nevertheless, QmidiCtl may still be found effective as a regular desktop application and recently as an Android application as well.&lt;/p&gt;
&lt;p&gt;See also: &lt;a href="https://qmidinet.sourceforge.io"&gt;QmidiNet&lt;/a&gt; - A MIDI network gateway via UDP/IP multicast.&lt;/p&gt;
&lt;p&gt;Change-log:
&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;Get rid of CONFIG_WAYLAND build config option; add underlying platform name (eg. xcb, wayland) to Qt version string.&lt;/li&gt;
&lt;li&gt;Bumping into next development cycle (Qt &amp;gt;= 6.11)&lt;/li&gt;
&lt;/ul&gt;
&lt;dt&gt;Website:&lt;/dt&gt;
&lt;dd&gt;&lt;a href="https://qmidictl.sourceforge.io"&gt;https://qmidictl.sourceforge.io&lt;/a&gt;&lt;br /&gt;
  &lt;a href="http://qmidictl.sourceforge.net"&gt;http://qmidictl.sourceforge.net&lt;/a&gt;&lt;/dd&gt;
&lt;dt&gt;Project page:&lt;/dt&gt;
&lt;dd&gt;&lt;a href="https://sourceforge.net/projects/qmidictl"&gt;https://sourceforge.net/projects/qmidictl&lt;/a&gt;&lt;/dd&gt;
&lt;dt&gt;Downloads:&lt;/dt&gt;
&lt;dd&gt;&lt;a href="https://sourceforge.net/projects/qmidictl/files"&gt;https://sourceforge.net/projects/qmidictl/files&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;source tarball:&lt;br /&gt;
  &lt;a href="https://download.sf.net/qmidictl/qmidictl-1.0.3.tar.gz"&gt;&lt;b&gt;qmidictl-1.0.3.tar.gz&lt;/b&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;source package:&lt;br /&gt;
  &lt;a href="https://download.sf.net/qmidictl/qmidictl-1.0.3-6.1.rncbc.suse.src.rpm"&gt;qmidictl-1.0.3-6.1.rncbc.suse.src.rpm&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;binary package:&lt;br /&gt;
  &lt;a href="https://download.sf.net/qmidictl/qmidictl-1.0.3-6.1.rncbc.suse.x86_64.rpm"&gt;qmidictl-1.0.3-6.1.rncbc.suse.x86_64.rpm&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://appimage.org"&gt;AppImage&lt;/a&gt; package:&lt;br /&gt;
  &lt;a href="https://download.sf.net/qmidictl/qmidictl-1.0.3-6.1.x86_64.AppImage"&gt;qmidictl-1.0.3-6.1.x86_64.AppImage&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Android package:&lt;br /&gt;
  &lt;a href="https://download.sf.net/qmidictl/qmidictl-1.0.3-6.1.arm64-v8a.apk"&gt;qmidictl-1.0.3-6.1.arm64-v8a.apk&lt;/a&gt;&lt;br /&gt;
  &lt;a href="https://download.sf.net/qmidictl/qmidictl-1.0.3-6.1.x86_64.apk"&gt;qmidictl-1.0.3-6.1.x86_64.apk&lt;/a&gt;&lt;br /&gt;
  &lt;a href="https://play.google.com/store/apps/details?id=org.rncbc.qmidictl" title="Google Play Store"&gt;&lt;img alt="Get it on Google Play" src="https://www.rncbc.org/drupal/files/google_play_badge.png" /&gt;&lt;/a&gt;&lt;br /&gt;

&lt;/li&gt;&lt;li&gt;&lt;a href="https://build.opensuse.org/"&gt;OBS&lt;/a&gt; packages (&lt;a href="https://www.rncbc.org/drupal/page/repos"&gt;repos&lt;/a&gt;):&lt;br /&gt;
  &lt;a href="https://software.opensuse.org/download.html?project=home:rncbc&amp;amp;package=qmidictl"&gt;&lt;img alt="build result" src="https://build.opensuse.org/projects/home:rncbc/packages/qmidictl/badge.svg?type=default" /&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/dd&gt;
&lt;p&gt;Git repos:
&lt;/p&gt;&lt;dd&gt;
  &lt;a href="https://git.code.sf.net/p/qmidictl/code"&gt;https://git.code.sf.net/p/qmidictl/code&lt;/a&gt;&lt;br /&gt;
  &lt;a href="https://github.com/rncbc/qmidictl.git"&gt;https://github.com/rncbc/qmidictl.git&lt;/a&gt;&lt;br /&gt;
  &lt;a href="https://gitlab.com/rncbc/qmidictl.git"&gt;https://gitlab.com/rncbc/qmidictl.git&lt;/a&gt;&lt;br /&gt;
  &lt;a href="https://codeberg.com/rncbc/qmidictl.git"&gt;https://codeberg.com/rncbc/qmidictl.git&lt;/a&gt;
&lt;/dd&gt;
&lt;p&gt;License:
&lt;/p&gt;&lt;dd&gt;
  &lt;a href="https://qmidictl.sourceforge.io"&gt;QmidiCtl&lt;/a&gt; is free, open-source &lt;a href="https://linuxaudio.org"&gt;Linux Audio&lt;/a&gt; software, distributed under the terms of the &lt;a href="https://www.gnu.org/copyleft/gpl.html"&gt;GNU General Public License&lt;/a&gt; (GPL) version 2 or later.
&lt;/dd&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Enjoy &amp;amp;&amp;amp; Have fun.&lt;/p&gt;
&lt;p&gt;&lt;!--rncbc.org donate buttons--&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="https://paypal.me/rncbc" target="_blank"&gt;&lt;img alt="Donate to rncbc.org using PayPal" border="0" src="https://www.rncbc.org/drupal/files/donate1.png" title="Donate to rncbc.org using PayPal" /&gt;&lt;/a&gt; &lt;a href="https://liberapay.com/rncbc/donate" target="_blank"&gt;&lt;img alt="Donate to rncbc.org using Liberapay" border="0" height="22" src="https://liberapay.com/assets/widgets/donate.svg" title="Donate to rncbc.org using Liberapay" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;!--break--&gt;&lt;/div&gt;
      &lt;span class="field field--name-uid field--type-entity-reference field--label-hidden"&gt;&lt;span&gt;rncbc&lt;/span&gt;&lt;/span&gt;
&lt;span class="field field--name-created field--type-created field--label-hidden"&gt;&lt;time class="datetime" datetime="2026-06-03T06:00:00+00:00" title="Wednesday, 3 June 2026 - 06:00"&gt;Wed, 3 Jun 2026 - 06:00&lt;/time&gt;
&lt;/span&gt;
&lt;section class="field field--name-comment-node-blog field--type-comment field--label-hidden comment-wrapper"&gt;
  
  

      &lt;h2 class="title comment-form__title"&gt;Add new comment&lt;/h2&gt;
    
  
&lt;/section&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>rncbc.org - a.k.a. Rui Nuno Capela</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>rncbc.org - a.k.a. Rui Nuno Capela - QmidiNet 1.0.2 - A Mid-Spring'26 Release</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-06-03:2915 at https://www.rncbc.org/drupal</ns0:id>
    <ns0:updated>2026-06-03T05:00:00Z</ns0:updated>
    <ns0:published>2026-06-03T05:00:00Z</ns0:published>
    <ns0:link rel="alternate" href="https://www.rncbc.org/drupal/node/2915" type="text/html"/>
    <ns0:summary type="html">&lt;span class="field field--name-title field--type-string field--label-hidden"&gt;QmidiNet 1.0.2 - A Mid-Spring'26 Release&lt;/span&gt;

            &lt;div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"&gt;&lt;p&gt;&lt;a href="https://qmidinet.sourceforge.io" name="qmidinet"&gt;&lt;img align="left" hspace="4" src="https://www.rncbc.org/drupal/files/qmidinet.png" title="QmidiNet" vspace="4" /&gt;&lt;/a&gt;Hi everyone!&lt;/p&gt;
&lt;dd&gt;
  &lt;b&gt;&lt;a href="http://qmidinet.sf.net"&gt;QmidiNet&lt;/a&gt; 1.0.2&lt;/b&gt; (&lt;i&gt;mid-spring'26&lt;/i&gt;) is released!
&lt;/dd&gt;
&lt;p&gt;&lt;a href="http://qmidinet.sf.net"&gt;QmidiNet&lt;/a&gt; is a MIDI network gateway application that sends and receives MIDI data (ALSA-MIDI and JACK-MIDI) over the network, using UDP/IP multicast. Inspired by &lt;a href="https://llg.cubic.org/tools/multimidicast"&gt;multimidicast&lt;/a&gt; and designed to be compatible with &lt;a href="https://nerds.de"&gt;ipMIDI&lt;/a&gt; for Windows.&lt;/p&gt;
&lt;p&gt;See also: &lt;a href="https://qmidictl.sourceforge.io"&gt;QmidiCtl&lt;/a&gt; - A MIDI Remote Controller via UDP/IP Multicast.&lt;/p&gt;
&lt;p&gt;Change-log:
&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;Get rid of CONFIG_WAYLAND build config option; add underlying platform name (eg. xcb, wayland) to Qt version string.&lt;/li&gt;
&lt;li&gt;Bumping into next development cycle (Qt &amp;gt;= 6.11)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Website:
&lt;/p&gt;&lt;dd&gt;
  &lt;a href="https://qmidinet.sourceforge.io"&gt;https://qmidinet.sourceforge.io&lt;/a&gt;&lt;br /&gt;
  &lt;a href="http://qmidinet.sourceforge.net"&gt;http://qmidinet.sourceforge.net&lt;/a&gt;
&lt;/dd&gt;
&lt;p&gt;Project page:
&lt;/p&gt;&lt;dd&gt;
  &lt;a href="https://sourceforge.net/projects/qmidinet"&gt;https://sourceforge.net/projects/qmidinet&lt;/a&gt;
&lt;/dd&gt;
&lt;p&gt;Downloads:
&lt;/p&gt;&lt;dd&gt;
  &lt;a href="https://sourceforge.net/projects/qmidinet/files"&gt;https://sourceforge.net/projects/qmidinet/files&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;source tarball:&lt;br /&gt;
  &lt;a href="https://download.sf.net/qmidinet/qmidinet-1.0.2.tar.gz"&gt;&lt;b&gt;qmidinet-1.0.2.tar.gz&lt;/b&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;source package:&lt;br /&gt;
  &lt;a href="https://download.sf.net/qmidinet/qmidinet-1.0.2-3.1.rncbc.suse.src.rpm"&gt;qmidinet-1.0.2-3.1.rncbc.suse.src.rpm&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;binary packages:&lt;br /&gt;
  &lt;a href="https://download.sf.net/qmidinet/qmidinet-1.0.2-3.1.rncbc.suse.x86_64.rpm"&gt;qmidinet-1.0.2-3.1.rncbc.suse.x86_64.rpm&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://appimage.org"&gt;AppImage&lt;/a&gt; package:&lt;br /&gt;
  &lt;a href="https://download.sf.net/qmidinet/qmidinet-1.0.2-3.1.x86_64.AppImage"&gt;qmidinet-1.0.2-3.1.x86_64.AppImage&lt;/a&gt;&lt;/li&gt;
&lt;p&gt;&lt;/p&gt;
&lt;li&gt;&lt;a href="https://build.opensuse.org/"&gt;OBS&lt;/a&gt; packages (&lt;a href="https://www.rncbc.org/drupal/page/repos"&gt;repos&lt;/a&gt;):&lt;br /&gt;
  &lt;a href="https://software.opensuse.org/download.html?project=home:rncbc&amp;amp;package=qmidinet"&gt;&lt;img alt="build result" src="https://build.opensuse.org/projects/home:rncbc/packages/qmidinet/badge.svg?type=default" /&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/dd&gt;
&lt;p&gt;Git repos:
&lt;/p&gt;&lt;dd&gt;
  &lt;a href="https://git.code.sf.net/p/qmidinet/code"&gt;https://git.code.sf.net/p/qmidinet/code&lt;/a&gt;&lt;br /&gt;
  &lt;a href="https://github.com/rncbc/qmidinet.git"&gt;https://github.com/rncbc/qmidinet.git&lt;/a&gt;&lt;br /&gt;
  &lt;a href="https://gitlab.com/rncbc/qmidinet.git"&gt;https://gitlab.com/rncbc/qmidinet.git&lt;/a&gt;&lt;br /&gt;
  &lt;a href="https://codeberg.com/rncbc/qmidinet.git"&gt;https://codeberg.com/rncbc/qmidinet.git&lt;/a&gt;
&lt;/dd&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;License:
&lt;/p&gt;&lt;dd&gt;
  &lt;a href="http://qmidinet.sf.net"&gt;QmidiNet&lt;/a&gt;  is free, open-source &lt;a href="https://linuxaudio.org"&gt;Linux Audio&lt;/a&gt; software, distributed under the terms of the GNU General Public License (&lt;a href="https://www.gnu.org/copyleft/gpl.html"&gt;GPL&lt;/a&gt;) version 2 or later.
&lt;/dd&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;
&lt;p&gt;&lt;!--rncbc.org donate buttons--&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="https://paypal.me/rncbc" target="_blank"&gt;&lt;img alt="Donate to rncbc.org using PayPal" border="0" src="https://www.rncbc.org/drupal/files/donate1.png" title="Donate to rncbc.org using PayPal" /&gt;&lt;/a&gt; &lt;a href="https://liberapay.com/rncbc/donate" target="_blank"&gt;&lt;img alt="Donate to rncbc.org using Liberapay" border="0" height="22" src="https://liberapay.com/assets/widgets/donate.svg" title="Donate to rncbc.org using Liberapay" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;!--break--&gt;&lt;/div&gt;
      &lt;span class="field field--name-uid field--type-entity-reference field--label-hidden"&gt;&lt;span&gt;rncbc&lt;/span&gt;&lt;/span&gt;
&lt;span class="field field--name-created field--type-created field--label-hidden"&gt;&lt;time class="datetime" datetime="2026-06-03T05:00:00+00:00" title="Wednesday, 3 June 2026 - 05:00"&gt;Wed, 3 Jun 2026 - 05:00&lt;/time&gt;
&lt;/span&gt;
&lt;section class="field field--name-comment-node-blog field--type-comment field--label-hidden comment-wrapper"&gt;
  
  

      &lt;h2 class="title comment-form__title"&gt;Add new comment&lt;/h2&gt;
    
  
&lt;/section&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>rncbc.org - a.k.a. Rui Nuno Capela</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>rncbc.org - a.k.a. Rui Nuno Capela - QXGEdit 1.0.2 - A Mid-Spring'26 Release</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-06-02:2914 at https://www.rncbc.org/drupal</ns0:id>
    <ns0:updated>2026-06-02T18:00:00Z</ns0:updated>
    <ns0:published>2026-06-02T18:00:00Z</ns0:published>
    <ns0:link rel="alternate" href="https://www.rncbc.org/drupal/node/2914" type="text/html"/>
    <ns0:summary type="html">&lt;span class="field field--name-title field--type-string field--label-hidden"&gt;QXGEdit 1.0.2 - A Mid-Spring'26 Release&lt;/span&gt;

            &lt;div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"&gt;&lt;p&gt;&lt;a href="https://qxgedit.sourceforge.io" name="qxgedit"&gt;&lt;img align="left" hspace="4" src="https://www.rncbc.org/drupal/files/qxgedit.png" title="QXGEdit" vspace="4" /&gt;&lt;a href="https://qxgedit.sourceforge.io"&gt;&lt;img align="right" hspace="4" src="https://www.rncbc.org/drupal/files/qxgedit-thumb1.png" title="QXGEdit" vspace="4" /&gt;&lt;/a&gt;Hi again!&lt;/a&gt;&lt;/p&gt;
&lt;dd&gt;
  &lt;b&gt;&lt;a href="https://qxgedit.sourceforge.io"&gt;QXGEdit&lt;/a&gt; 1.0.2&lt;/b&gt; (&lt;i&gt;mid-spring'26&lt;/i&gt;) is out!
&lt;/dd&gt;
&lt;p&gt;&lt;a href="https://qxgedit.sourceforge.io"&gt;QXGEdit&lt;/a&gt; is a live XG instrument editor, specialized on editing MIDI System Exclusive files (.syx) for the &lt;a href="https://www.soundonsound.com/reviews/yamaha-db50xg"&gt;Yamaha DB50XG&lt;/a&gt; and thus probably a baseline for many other XG devices.&lt;/p&gt;
&lt;p&gt;Change-log:
&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;Get rid of CONFIG_WAYLAND build config option; add underlying platform name (eg. xcb, wayland) to Qt version string.&lt;/li&gt;
&lt;li&gt;Bumping into next development cycle (Qt &amp;gt;= 6.11)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Website:
&lt;/p&gt;&lt;dd&gt;
  &lt;a href="https://qxgedit.sourceforge.io"&gt;https://qxgedit.sourceforge.io&lt;/a&gt;&lt;br /&gt;
  &lt;a href="http://qxgedit.sourceforge.net"&gt;http://qxgedit.sourceforge.net&lt;/a&gt;
&lt;/dd&gt;
&lt;p&gt;Project page:
&lt;/p&gt;&lt;dd&gt;
  &lt;a href="https://sourceforge.net/projects/qxgedit"&gt;https://sourceforge.net/projects/qxgedit&lt;/a&gt;
&lt;/dd&gt;
&lt;p&gt;Downloads:
&lt;/p&gt;&lt;dd&gt;
  &lt;a href="https://sourceforge.net/projects/qxgedit/files"&gt;https://sourceforge.net/projects/qxgedit/files&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;source tarball:&lt;br /&gt;
  &lt;a href="https://download.sf.net/qxgedit/qxgedit-1.0.2.tar.gz"&gt;&lt;b&gt;qxgedit-1.0.2.tar.gz&lt;/b&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;source package:&lt;br /&gt;
  &lt;a href="https://download.sf.net/qxgedit/qxgedit-1.0.2-3.1.rncbc.suse.src.rpm"&gt;qxgedit-1.0.2-3.1.rncbc.suse.src.rpm&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;binary packages:&lt;br /&gt;
  &lt;a href="https://download.sf.net/qxgedit/qxgedit-1.0.2-3.1.rncbc.suse.x86_64.rpm"&gt;qxgedit-1.0.2-3.1.rncbc.suse.x86_64.rpm&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://appimage.org"&gt;AppImage&lt;/a&gt; package:&lt;br /&gt;
  &lt;a href="https://download.sf.net/qxgedit/qxgedit-1.0.2-3.1.x86_64.AppImage"&gt;qxgedit-1.0.2-3.1.x86_64.AppImage&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/dd&gt;
&lt;p&gt;Git repos:
&lt;/p&gt;&lt;dd&gt;
  &lt;a href="https://git.code.sf.net/p/qxgedit/code"&gt;https://git.code.sf.net/p/qxgedit/code&lt;/a&gt;&lt;br /&gt;
  &lt;a href="https://github.com/rncbc/qxgedit.git"&gt;https://github.com/rncbc/qxgedit.git&lt;/a&gt;&lt;br /&gt;
  &lt;a href="https://gitlab.com/rncbc/qxgedit.git"&gt;https://gitlab.com/rncbc/qxgedit.git&lt;/a&gt;&lt;br /&gt;
  &lt;a href="https://codeberg.com/rncbc/qxgedit.git"&gt;https://codeberg.com/rncbc/qxgedit.git&lt;/a&gt;
&lt;/dd&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;License:
&lt;/p&gt;&lt;dd&gt;
  &lt;a href="https://qxgedit.sourceforge.io"&gt;QXGEdit&lt;/a&gt;  is free, open-source &lt;a href="https://linuxaudio.org"&gt;Linux Audio&lt;/a&gt; software, distributed under the terms of the GNU General Public License (&lt;a href="https://www.gnu.org/copyleft/gpl.html"&gt;GPL&lt;/a&gt;) version 2 or later.
&lt;/dd&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;
&lt;p&gt;&lt;!--rncbc.org donate buttons--&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="https://paypal.me/rncbc" target="_blank"&gt;&lt;img alt="Donate to rncbc.org using PayPal" border="0" src="https://www.rncbc.org/drupal/files/donate1.png" title="Donate to rncbc.org using PayPal" /&gt;&lt;/a&gt; &lt;a href="https://liberapay.com/rncbc/donate" target="_blank"&gt;&lt;img alt="Donate to rncbc.org using Liberapay" border="0" height="22" src="https://liberapay.com/assets/widgets/donate.svg" title="Donate to rncbc.org using Liberapay" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;!--break--&gt;&lt;/div&gt;
      &lt;span class="field field--name-uid field--type-entity-reference field--label-hidden"&gt;&lt;span&gt;rncbc&lt;/span&gt;&lt;/span&gt;
&lt;span class="field field--name-created field--type-created field--label-hidden"&gt;&lt;time class="datetime" datetime="2026-06-02T18:00:00+00:00" title="Tuesday, 2 June 2026 - 18:00"&gt;Tue, 2 Jun 2026 - 18:00&lt;/time&gt;
&lt;/span&gt;
&lt;section class="field field--name-comment-node-blog field--type-comment field--label-hidden comment-wrapper"&gt;
  
  

      &lt;h2 class="title comment-form__title"&gt;Add new comment&lt;/h2&gt;
    
  
&lt;/section&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>rncbc.org - a.k.a. Rui Nuno Capela</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>neural-amp-modeler - Version 0.13.0</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-06-02:tag:github.com,2008:Repository/163906234/v0.13.0</ns0:id>
    <ns0:updated>2026-06-02T12:52:14Z</ns0:updated>
    <ns0:published>2026-06-02T12:52:14Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/sdatkinson/neural-amp-modeler/releases/tag/v0.13.0" type="text/html"/>
    <ns0:summary type="html">&lt;h2&gt;What's Changed&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[FEATURE] Sequential compositional models by &lt;a class="user-mention notranslate" href="https://github.com/sdatkinson"&gt;@sdatkinson&lt;/a&gt; in &lt;a class="issue-link js-issue-link" href="https://github.com/sdatkinson/neural-amp-modeler/pull/596"&gt;#596&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[FEATURE] Support loading WAVE files in 32-bit floating-point by &lt;a class="user-mention notranslate" href="https://github.com/sdatkinson"&gt;@sdatkinson&lt;/a&gt; in &lt;a class="issue-link js-issue-link" href="https://github.com/sdatkinson/neural-amp-modeler/pull/599"&gt;#599&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Add build status badge to README by &lt;a class="user-mention notranslate" href="https://github.com/Khalian"&gt;@Khalian&lt;/a&gt; in &lt;a class="issue-link js-issue-link" href="https://github.com/sdatkinson/neural-amp-modeler/pull/601"&gt;#601&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[FEATURE] New activations by &lt;a class="user-mention notranslate" href="https://github.com/sdatkinson"&gt;@sdatkinson&lt;/a&gt; in &lt;a class="issue-link js-issue-link" href="https://github.com/sdatkinson/neural-amp-modeler/pull/625"&gt;#625&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[FEATURE] WaveNet bottlenecks by &lt;a class="user-mention notranslate" href="https://github.com/sdatkinson"&gt;@sdatkinson&lt;/a&gt; in &lt;a class="issue-link js-issue-link" href="https://github.com/sdatkinson/neural-amp-modeler/pull/626"&gt;#626&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[FEATURE] WaveNet head 1x1 layer by &lt;a class="user-mention notranslate" href="https://github.com/sdatkinson"&gt;@sdatkinson&lt;/a&gt; in &lt;a class="issue-link js-issue-link" href="https://github.com/sdatkinson/neural-amp-modeler/pull/627"&gt;#627&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[FEATURE] WaveNet: Add layer1x1 config with grouped convolutions, able to be inactive by &lt;a class="user-mention notranslate" href="https://github.com/sdatkinson"&gt;@sdatkinson&lt;/a&gt; in &lt;a class="issue-link js-issue-link" href="https://github.com/sdatkinson/neural-amp-modeler/pull/628"&gt;#628&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[FEATURE] WaveNet: FiLMs, grouped convolutions by &lt;a class="user-mention notranslate" href="https://github.com/sdatkinson"&gt;@sdatkinson&lt;/a&gt; in &lt;a class="issue-link js-issue-link" href="https://github.com/sdatkinson/neural-amp-modeler/pull/629"&gt;#629&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[FEATURE] WaveNet: Support conditioning submodule (condition_dsp) by &lt;a class="user-mention notranslate" href="https://github.com/sdatkinson"&gt;@sdatkinson&lt;/a&gt; in &lt;a class="issue-link js-issue-link" href="https://github.com/sdatkinson/neural-amp-modeler/pull/630"&gt;#630&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[BUGFIX] Fix bugs with WaveNet receptive field and tensor shapes when a condition_dsp module is present by &lt;a class="user-mention notranslate" href="https://github.com/sdatkinson"&gt;@sdatkinson&lt;/a&gt; in &lt;a class="issue-link js-issue-link" href="https://github.com/sdatkinson/neural-amp-modeler/pull/632"&gt;#632&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[BUGFIX] Fix graceful shutdown not generating model (Issue &lt;a class="issue-link js-issue-link" href="https://github.com/sdatkinson/neural-amp-modeler/issues/501"&gt;#501&lt;/a&gt;) by &lt;a class="user-mention notranslate" href="https://github.com/sdatkinson"&gt;@sdatkinson&lt;/a&gt; in &lt;a class="issue-link js-issue-link" href="https://github.com/sdatkinson/neural-amp-modeler/pull/612"&gt;#612&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[BUGFIX] Remove "upgrade" button from GUI trainer, replace with a modal alerting user of new version by &lt;a class="user-mention notranslate" href="https://github.com/sdatkinson"&gt;@sdatkinson&lt;/a&gt; in &lt;a class="issue-link js-issue-link" href="https://github.com/sdatkinson/neural-amp-modeler/pull/633"&gt;#633&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Integration tests by &lt;a class="user-mention notranslate" href="https://github.com/sdatkinson"&gt;@sdatkinson&lt;/a&gt; in &lt;a class="issue-link js-issue-link" href="https://github.com/sdatkinson/neural-amp-modeler/pull/634"&gt;#634&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[FEATURE] Support for slimmable WaveNets via channel-slicing. by &lt;a class="user-mention notranslate" href="https://github.com/sdatkinson"&gt;@sdatkinson&lt;/a&gt; in &lt;a class="issue-link js-issue-link" href="https://github.com/sdatkinson/neural-amp-modeler/pull/636"&gt;#636&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[BUGFIX] Fix WaveNet &lt;code&gt;Layer.bottleneck&lt;/code&gt; when using pairing activations by &lt;a class="user-mention notranslate" href="https://github.com/sdatkinson"&gt;@sdatkinson&lt;/a&gt; in &lt;a class="issue-link js-issue-link" href="https://github.com/sdatkinson/neural-amp-modeler/pull/640"&gt;#640&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[FEATURE] Support slimming via channel slicing only at specific allowed channel counts by &lt;a class="user-mention notranslate" href="https://github.com/sdatkinson"&gt;@sdatkinson&lt;/a&gt; in &lt;a class="issue-link js-issue-link" href="https://github.com/sdatkinson/neural-amp-modeler/pull/639"&gt;#639&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[FEATURE] "Boosting mode" for slimmable WaveNet (channel-slicing) by &lt;a class="user-mention notranslate" href="https://github.com/sdatkinson"&gt;@sdatkinson&lt;/a&gt; in &lt;a class="issue-link js-issue-link" href="https://github.com/sdatkinson/neural-amp-modeler/pull/641"&gt;#641&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[FEATURE] Initialization strategies "smallest_and_zeros" and "channel_causal" for channel-slicing slimmable WaveNet by &lt;a class="user-mention notranslate" href="https://github.com/sdatkinson"&gt;@sdatkinson&lt;/a&gt; in &lt;a class="issue-link js-issue-link" href="https://github.com/sdatkinson/neural-amp-modeler/pull/642"&gt;#642&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[BUGFIX] slimmable WaveNet: Export allowed channels by &lt;a class="user-mention notranslate" href="https://github.com/sdatkinson"&gt;@sdatkinson&lt;/a&gt; in &lt;a class="issue-link js-issue-link" href="https://github.com/sdatkinson/neural-amp-modeler/pull/643"&gt;#643&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Rework implementation of boosting for channel-slicing slimmable WaveNet, update model export version to 0.7.0. by &lt;a class="user-mention notranslate" href="https://github.com/sdatkinson"&gt;@sdatkinson&lt;/a&gt; in &lt;a class="issue-link js-issue-link" href="https://github.com/sdatkinson/neural-amp-modeler/pull/644"&gt;#644&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Validate slimmable configuration by &lt;a class="user-mention notranslate" href="https://github.com/sdatkinson"&gt;@sdatkinson&lt;/a&gt; in &lt;a class="issue-link js-issue-link" href="https://github.com/sdatkinson/neural-amp-modeler/pull/646"&gt;#646&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[FEATURE,BREAKING] WaveNet: Support different kernel sizes on different layers of a layer array by &lt;a class="user-mention notranslate" href="https://github.com/sdatkinson"&gt;@sdatkinson&lt;/a&gt; in &lt;a class="issue-link js-issue-link" href="https://github.com/sdatkinson/neural-amp-modeler/pull/648"&gt;#648&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[BREAKING,FEATURE] WaveNet: Support for model head, layer array &lt;code&gt;head_rechannel&lt;/code&gt; with kernel size &amp;gt; 1 by &lt;a class="user-mention notranslate" href="https://github.com/sdatkinson"&gt;@sdatkinson&lt;/a&gt; in &lt;a class="issue-link js-issue-link" href="https://github.com/sdatkinson/neural-amp-modeler/pull/653"&gt;#653&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[SECURITY] Update pytorch_lightning dependency to exclude specific versions by &lt;a class="user-mention notranslate" href="https://github.com/sdatkinson"&gt;@sdatkinson&lt;/a&gt; in &lt;a class="issue-link js-issue-link" href="https://github.com/sdatkinson/neural-amp-modeler/pull/657"&gt;#657&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[FEATURE] Packed WaveNet training by &lt;a class="user-mention notranslate" href="https://github.com/sdatkinson"&gt;@sdatkinson&lt;/a&gt; in &lt;a class="issue-link js-issue-link" href="https://github.com/sdatkinson/neural-amp-modeler/pull/659"&gt;#659&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Clarify packed training slimmable docs by &lt;a class="user-mention notranslate" href="https://github.com/sdatkinson"&gt;@sdatkinson&lt;/a&gt; in &lt;a class="issue-link js-issue-link" href="https://github.com/sdatkinson/neural-amp-modeler/pull/660"&gt;#660&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Update simplified trainers to use A2 by &lt;a class="user-mention notranslate" href="https://github.com/sdatkinson"&gt;@sdatkinson&lt;/a&gt; in &lt;a class="issue-link js-issue-link" href="https://github.com/sdatkinson/neural-amp-modeler/pull/661"&gt;#661&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[FEATURE] Support hooks post model dict formation in &lt;code&gt;.export()&lt;/code&gt; by &lt;a class="user-mention notranslate" href="https://github.com/sdatkinson"&gt;@sdatkinson&lt;/a&gt; in &lt;a class="issue-link js-issue-link" href="https://github.com/sdatkinson/neural-amp-modeler/pull/663"&gt;#663&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[BUGFIX] Add model-data handshake to core training routine by &lt;a class="user-mention notranslate" href="https://github.com/sdatkinson"&gt;@sdatkinson&lt;/a&gt; in &lt;a class="issue-link js-issue-link" href="https://github.com/sdatkinson/neural-amp-modeler/pull/664"&gt;#664&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[FEATURE] Hooks that act jointly on train and validation datasets by &lt;a class="user-mention notranslate" href="https://github.com/sdatkinson"&gt;@sdatkinson&lt;/a&gt; in &lt;a class="issue-link js-issue-link" href="https://github.com/sdatkinson/neural-amp-modeler/pull/665"&gt;#665&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Compensate metadata.loudness when _ScaleOutputHook scales head_scale by &lt;a class="user-mention notranslate" href="https://github.com/woodybury"&gt;@woodybury&lt;/a&gt; in &lt;a class="issue-link js-issue-link" href="https://github.com/sdatkinson/neural-amp-modeler/pull/668"&gt;#668&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Address PR 668 review nits by &lt;a class="user-mention notranslate" href="https://github.com/sdatkinson"&gt;@sdatkinson&lt;/a&gt; in &lt;a class="issue-link js-issue-link" href="https://github.com/sdatkinson/neural-amp-modeler/pull/670"&gt;#670&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Log per-submodel MRSTFT metrics during packed validation by &lt;a class="user-mention notranslate" href="https://github.com/woodybury"&gt;@woodybury&lt;/a&gt; in &lt;a class="issue-link js-issue-link" href="https://github.com/sdatkinson/neural-amp-modeler/pull/669"&gt;#669&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;New Contributors&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="user-mention notranslate" href="https://github.com/Khalian"&gt;@Khalian&lt;/a&gt; made their first contribution in &lt;a class="issue-link js-issue-link" href="https://github.com/sdatkinson/neural-amp-modeler/pull/601"&gt;#601&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Full Changelog&lt;/strong&gt;: &lt;a class="commit-link" href="https://github.com/sdatkinson/neural-amp-modeler/compare/v0.12.2...v0.13.0"&gt;&lt;tt&gt;v0.12.2...v0.13.0&lt;/tt&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Support&lt;/h2&gt;
&lt;p&gt;A2 was developed in partnership with &lt;a href="https://www.tone3000.com" rel="nofollow"&gt;TONE3000&lt;/a&gt;, who contributed research, engineering, and funding. A2 models can be integrated into apps, plugins, and hardware via the &lt;a href="https://tone3000.com/api" rel="nofollow"&gt;TONE3000 API&lt;/a&gt;.&lt;/p&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>neural-amp-modeler</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>rncbc.org - a.k.a. Rui Nuno Capela - QSampler 1.0.2 - A Mid-Spring'26 Release</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-06-02:2913 at https://www.rncbc.org/drupal</ns0:id>
    <ns0:updated>2026-06-02T05:00:00Z</ns0:updated>
    <ns0:published>2026-06-02T05:00:00Z</ns0:published>
    <ns0:link rel="alternate" href="https://www.rncbc.org/drupal/node/2913" type="text/html"/>
    <ns0:summary type="html">&lt;span class="field field--name-title field--type-string field--label-hidden"&gt;QSampler 1.0.2 - A Mid-Spring'26 Release&lt;/span&gt;

            &lt;div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"&gt;&lt;p&gt;&lt;a href="https://qsampler.sourceforge.io" name="qsampler"&gt;&lt;img align="left" hspace="4" src="https://www.rncbc.org/drupal/files/qsampler.png" title="Qsampler" vspace="4" /&gt;&lt;a href="https://qsampler.sourceforge.io"&gt;&lt;img align="right" hspace="4" src="https://www.rncbc.org/drupal/files/qsampler-thumb1.png" title="Qsampler" vspace="4" /&gt;&lt;/a&gt;Hi all!&lt;/a&gt;&lt;/p&gt;
&lt;dd&gt;
  &lt;b&gt;&lt;a href="https://qsampler.sourceforge.io"&gt;Qsampler&lt;/a&gt; 1.0.2&lt;/b&gt; (&lt;i&gt;mid-spring'26&lt;/i&gt;) is out!
&lt;/dd&gt;
&lt;p&gt;&lt;a href="https://qsampler.sourceforge.io"&gt;Qsampler&lt;/a&gt; is a &lt;a href="https://www.linuxsampler.org"&gt;LinuxSampler&lt;/a&gt; GUI front-end application written in C++ around the &lt;a href="https://qt.io"&gt;Qt&lt;/a&gt; framework using Qt Designer.&lt;/p&gt;
&lt;p&gt;Change-log:
&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;Fixed 'mime-info' file to the correct MIME-type icon names.&lt;/li&gt;
&lt;li&gt;Get rid of CONFIG_WAYLAND build config option; add underlying platform name (eg. xcb, wayland) to Qt version string.&lt;/li&gt;
&lt;li&gt;Bumping into next development cycle (Qt &amp;gt;= 6.11)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Website:
&lt;/p&gt;&lt;dd&gt;
  &lt;a href="https://qsampler.sourceforge.io"&gt;https://qsampler.sourceforge.io&lt;/a&gt;&lt;br /&gt;
  &lt;a href="http://qsampler.sourceforge.net"&gt;http://qsampler.sourceforge.net&lt;/a&gt;
&lt;/dd&gt;
&lt;p&gt;Project page:
&lt;/p&gt;&lt;dd&gt;
  &lt;a href="https://sourceforge.net/projects/qsampler"&gt;https://sourceforge.net/projects/qsampler&lt;/a&gt;
&lt;/dd&gt;
&lt;p&gt;Downloads:
&lt;/p&gt;&lt;dd&gt;
  &lt;a href="https://sourceforge.net/projects/qsampler/files"&gt;https://sourceforge.net/projects/qsampler/files&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;source tarballs:&lt;br /&gt;
  &lt;a href="https://download.sf.net/qsampler/qsampler-1.0.2.tar.gz"&gt;&lt;b&gt;qsampler-1.0.2.tar.gz&lt;/b&gt;&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;source packages:&lt;br /&gt;
  &lt;a href="https://download.sf.net/qsampler/qsampler-1.0.2-3.1.rncbc.suse.src.rpm"&gt;qsampler-1.0.2-3.1.rncbc.suse.src.rpm&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;binary packages:&lt;br /&gt;
  &lt;a href="https://download.sf.net/qsampler/qsampler-1.0.2-3.1.rncbc.suse.x86_64.rpm"&gt;qsampler-1.0.2-3.1.rncbc.suse.x86_64.rpm&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="https://appimage.org"&gt;AppImage&lt;/a&gt; package:&lt;br /&gt;
  &lt;a href="https://download.sf.net/qsampler/qsampler-1.0.2-3.1.x86_64.AppImage"&gt;qsampler-1.0.2-3.1.x86_64.AppImage&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/dd&gt;
&lt;p&gt;Git repos:
&lt;/p&gt;&lt;dd&gt;
  &lt;a href="https://git.code.sf.net/p/qsampler/code"&gt;https://git.code.sf.net/p/qsampler/code&lt;/a&gt;&lt;br /&gt;
  &lt;a href="https://github.com/rncbc/qsampler.git"&gt;https://github.com/rncbc/qsampler.git&lt;/a&gt;&lt;br /&gt;
  &lt;a href="https://gitlab.com/rncbc/qsampler.git"&gt;https://gitlab.com/rncbc/qsampler.git&lt;/a&gt;&lt;br /&gt;
  &lt;a href="https://codeberg.com/rncbc/qsampler.git"&gt;https://codeberg.com/rncbc/qsampler.git&lt;/a&gt;
&lt;/dd&gt;
&lt;p&gt;License:
&lt;/p&gt;&lt;dd&gt;
  &lt;a href="https://qsampler.sourceforge.io"&gt;Qsampler&lt;/a&gt;  is free, open-source &lt;a href="https://linuxaudio.org"&gt;Linux Audio&lt;/a&gt; software, distributed under the terms of the GNU General Public License (&lt;a href="https://www.gnu.org/copyleft/gpl.html"&gt;GPL&lt;/a&gt;) version 2 or later.
&lt;/dd&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;
&lt;p&gt;&lt;!--rncbc.org donate buttons--&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="https://paypal.me/rncbc" target="_blank"&gt;&lt;img alt="Donate to rncbc.org using PayPal" border="0" src="https://www.rncbc.org/drupal/files/donate1.png" title="Donate to rncbc.org using PayPal" /&gt;&lt;/a&gt; &lt;a href="https://liberapay.com/rncbc/donate" target="_blank"&gt;&lt;img alt="Donate to rncbc.org using Liberapay" border="0" height="22" src="https://liberapay.com/assets/widgets/donate.svg" title="Donate to rncbc.org using Liberapay" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;!--break--&gt;&lt;/div&gt;
      &lt;span class="field field--name-uid field--type-entity-reference field--label-hidden"&gt;&lt;span&gt;rncbc&lt;/span&gt;&lt;/span&gt;
&lt;span class="field field--name-created field--type-created field--label-hidden"&gt;&lt;time class="datetime" datetime="2026-06-02T05:00:00+00:00" title="Tuesday, 2 June 2026 - 05:00"&gt;Tue, 2 Jun 2026 - 05:00&lt;/time&gt;
&lt;/span&gt;
&lt;section class="field field--name-comment-node-blog field--type-comment field--label-hidden comment-wrapper"&gt;
  
  

      &lt;h2 class="title comment-form__title"&gt;Add new comment&lt;/h2&gt;
    
  
&lt;/section&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>rncbc.org - a.k.a. Rui Nuno Capela</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>rncbc.org - a.k.a. Rui Nuno Capela - Qsynth 1.0.6 - A Mid-Spring'26 Release</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-06-01:2912 at https://www.rncbc.org/drupal</ns0:id>
    <ns0:updated>2026-06-01T17:00:00Z</ns0:updated>
    <ns0:published>2026-06-01T17:00:00Z</ns0:published>
    <ns0:link rel="alternate" href="https://www.rncbc.org/drupal/node/2912" type="text/html"/>
    <ns0:summary type="html">&lt;span class="field field--name-title field--type-string field--label-hidden"&gt;Qsynth 1.0.6 - A Mid-Spring'26 Release&lt;/span&gt;

            &lt;div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"&gt;&lt;p&gt;&lt;a href="https://qsynth.sourceforge.io" name="qsynth"&gt;&lt;img align="left" hspace="4" src="https://www.rncbc.org/drupal/files/qsynth.png" title="Qsynth" vspace="4" /&gt;&lt;/a&gt;&lt;a href="https://qsynth.sourceforge.io"&gt;&lt;img align="right" hspace="4" src="https://www.rncbc.org/drupal/files/qsynth-preflect1.png" title="qsynth" vspace="4" width="320" /&gt;&lt;/a&gt;Hello!&lt;/p&gt;
&lt;dd&gt;
  &lt;b&gt;&lt;a href="http://qsynth.sf.net"&gt;Qsynth&lt;/a&gt; 1.0.6&lt;/b&gt; (&lt;i&gt;mid-spring'26&lt;/i&gt;) is released!
&lt;/dd&gt;
&lt;p&gt;&lt;a href="http://qsynth.sf.net"&gt;Qsynth&lt;/a&gt; is a &lt;a href="https://www.fluidsynth.org"&gt;FluidSynth&lt;/a&gt; GUI front-end application written in C++ around the &lt;a href="https://qt.io"&gt;Qt&lt;/a&gt; framework using Qt Designer.&lt;/p&gt;
&lt;p&gt;Change-log:
&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;Bumping into next development cycle (Qt &amp;gt;= 6.11)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Website:
&lt;/p&gt;&lt;dd&gt;
  &lt;a href="https://qsynth.sourceforge.io"&gt;https://qsynth.sourceforge.io&lt;/a&gt;&lt;br /&gt;
  &lt;a href="http://qsynth.sourceforge.net"&gt;http://qsynth.sourceforge.net&lt;/a&gt;
&lt;/dd&gt;
&lt;p&gt;Project page:
&lt;/p&gt;&lt;dd&gt;
  &lt;a href="https://sourceforge.net/projects/qsynth"&gt;https://sourceforge.net/projects/qsynth&lt;/a&gt;
&lt;/dd&gt;
&lt;p&gt;Downloads:
&lt;/p&gt;&lt;dd&gt;
  &lt;a href="https://sourceforge.net/projects/qsynth/files"&gt;https://sourceforge.net/projects/qsynth/files&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;source tarball:&lt;br /&gt;
  &lt;a href="https://download.sf.net/qsynth/qsynth-1.0.6.tar.gz"&gt;&lt;b&gt;qsynth-1.0.6.tar.gz&lt;/b&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;source package:&lt;br /&gt;
  &lt;a href="https://download.sf.net/qsynth/qsynth-1.0.6-7.1.rncbc.suse.src.rpm"&gt;qsynth-1.0.6-7.1.rncbc.suse.src.rpm&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;binary packages:&lt;br /&gt;
  &lt;a href="https://download.sf.net/qsynth/qsynth-1.0.6-7.1.rncbc.suse.x86_64.rpm"&gt;qsynth-1.0.6-7.1.rncbc.suse.x86_64.rpm&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://appimage.org"&gt;AppImage&lt;/a&gt; package:&lt;br /&gt;
  &lt;a href="https://download.sf.net/qsynth/qsynth-1.0.6-7.1.x86_64.AppImage"&gt;qsynth-1.0.6-7.1.x86_64.AppImage&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://flatpak.org/"&gt;Flatpak&lt;/a&gt; package:&lt;br /&gt;
  &lt;a href="https://flathub.org/apps/details/org.rncbc.qsynth"&gt;https://flathub.org/apps/details/org.rncbc.qsynth&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/dd&gt;
&lt;p&gt;Git repos:
&lt;/p&gt;&lt;dd&gt;
  &lt;a href="https://git.code.sf.net/p/qsynth/code"&gt;https://git.code.sf.net/p/qsynth/code&lt;/a&gt;&lt;br /&gt;
  &lt;a href="https://github.com/rncbc/qsynth.git"&gt;https://github.com/rncbc/qsynth.git&lt;/a&gt;&lt;br /&gt;
  &lt;a href="https://gitlab.com/rncbc/qsynth.git"&gt;https://gitlab.com/rncbc/qsynth.git&lt;/a&gt;&lt;br /&gt;
  &lt;a href="https://codeberg.com/rncbc/qsynth.git"&gt;https://codeberg.com/rncbc/qsynth.git&lt;/a&gt;
&lt;/dd&gt;
&lt;p&gt;License:
&lt;/p&gt;&lt;dd&gt;
  &lt;a href="http://qsynth.sf.net"&gt;Qsynth&lt;/a&gt;  is free, open-source &lt;a href="https://linuxaudio.org"&gt;Linux Audio&lt;/a&gt; software, distributed under the terms of the GNU General Public License (&lt;a href="https://www.gnu.org/copyleft/gpl.html"&gt;GPL&lt;/a&gt;) version 2 or later.
&lt;/dd&gt;
&lt;p&gt;Enjoy &amp;amp;&amp;amp; Have fun!&lt;/p&gt;
&lt;p&gt;&lt;!--rncbc.org donate buttons--&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="https://paypal.me/rncbc" target="_blank"&gt;&lt;img alt="Donate to rncbc.org using PayPal" border="0" src="https://www.rncbc.org/drupal/files/donate1.png" title="Donate to rncbc.org using PayPal" /&gt;&lt;/a&gt; &lt;a href="https://liberapay.com/rncbc/donate" target="_blank"&gt;&lt;img alt="Donate to rncbc.org using Liberapay" border="0" height="22" src="https://liberapay.com/assets/widgets/donate.svg" title="Donate to rncbc.org using Liberapay" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;!--break--&gt;&lt;/div&gt;
      &lt;span class="field field--name-uid field--type-entity-reference field--label-hidden"&gt;&lt;span&gt;rncbc&lt;/span&gt;&lt;/span&gt;
&lt;span class="field field--name-created field--type-created field--label-hidden"&gt;&lt;time class="datetime" datetime="2026-06-01T17:00:00+00:00" title="Monday, 1 June 2026 - 17:00"&gt;Mon, 1 Jun 2026 - 17:00&lt;/time&gt;
&lt;/span&gt;
&lt;section class="field field--name-comment-node-blog field--type-comment field--label-hidden comment-wrapper"&gt;
  
  

      &lt;h2 class="title comment-form__title"&gt;Add new comment&lt;/h2&gt;
    
  
&lt;/section&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>rncbc.org - a.k.a. Rui Nuno Capela</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>xLights - 2026.10 Released</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-06-01:https://xlights.org/?p=4149</ns0:id>
    <ns0:updated>2026-06-01T10:26:53Z</ns0:updated>
    <ns0:published>2026-06-01T10:26:53Z</ns0:published>
    <ns0:link rel="alternate" href="https://xlights.org/2026-10-released/" type="text/html"/>
    <ns0:summary type="html">2026.10 May 31, 2026 -enh (cybercop23) Add State effect on SubModels. Ensure only nodes that are part of the SubModel are lit. Same node-index translation on Faces effect if using Faces effect on a SubModel. -enh (derwin12) Sketch effect path management: multi-select, Delete key, Move Up/Down buttons, per-path description labels, and a description text editor...</ns0:summary>
    <ns0:author>
      <ns0:name>xLights</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>MusicBrainz Picard 3.0.0b4</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-05-31:tag:github.com,2008:Repository/2218679/release-3.0.0b4</ns0:id>
    <ns0:updated>2026-05-31T11:21:34Z</ns0:updated>
    <ns0:published>2026-05-31T11:21:34Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/metabrainz/picard/releases/tag/release-3.0.0b4" type="text/html"/>
    <ns0:summary type="html">&lt;p&gt;&lt;em&gt;Please refer to the &lt;a href="https://picard.musicbrainz.org/downloads/" rel="nofollow"&gt;download page&lt;/a&gt; for official download locations.&lt;/em&gt;&lt;/p&gt;
&lt;h3&gt;Bugfixes&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://tickets.metabrainz.org/browse/PICARD-3300" rel="nofollow"&gt;PICARD-3300&lt;/a&gt; - Fails to launch on macOS: "Expected an instance of Tagger"&lt;/li&gt;
&lt;li&gt;&lt;a href="https://tickets.metabrainz.org/browse/PICARD-3301" rel="nofollow"&gt;PICARD-3301&lt;/a&gt; - Visual glitch in log viewer for multi line output&lt;/li&gt;
&lt;li&gt;&lt;a href="https://tickets.metabrainz.org/browse/PICARD-3304" rel="nofollow"&gt;PICARD-3304&lt;/a&gt; - picard-plugins fails to launch with "Expected an instance of Tagger"&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Improvements&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://tickets.metabrainz.org/browse/PICARD-3303" rel="nofollow"&gt;PICARD-3303&lt;/a&gt; - Add syntax highlighting to Log Detail dialog&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;&lt;/h1&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>picard</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>giada - 1.4.2</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-05-31:tag:github.com,2008:Repository/6603254/1.4.2</ns0:id>
    <ns0:updated>2026-05-31T09:18:44Z</ns0:updated>
    <ns0:published>2026-05-31T09:18:44Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/monocasual/giada/releases/tag/1.4.2" type="text/html"/>
    <ns0:summary type="html">&lt;p&gt;1.4.2&lt;/p&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>giada</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>ZLEqualizer - 1.2.0</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-05-30:tag:github.com,2008:Repository/729959292/1.2.0</ns0:id>
    <ns0:updated>2026-05-30T23:51:12Z</ns0:updated>
    <ns0:published>2026-05-30T23:51:12Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/ZL-Audio/ZLEqualizer/releases/tag/1.2.0" type="text/html"/>
    <ns0:summary type="html">&lt;p&gt;fix(panel::match_fft_panel): reset match analyzer if re-enter&lt;/p&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>ZLEqualizer</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>AV Linux and MX Moksha 25.2 Released!</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-05-30:https://www.bandshed.net/?p=1567</ns0:id>
    <ns0:updated>2026-05-30T22:11:01Z</ns0:updated>
    <ns0:published>2026-05-30T22:11:01Z</ns0:published>
    <ns0:link rel="alternate" href="https://www.bandshed.net/2026/05/30/av-linux-and-mx-moksha-25-2-released/" type="text/html"/>
    <ns0:summary type="html">Well, if this much work was a point release I dread how much work the next full release will be! AV Linux (AVL) and MX Moksha (MXM) 25.2 are ...</ns0:summary>
    <ns0:category term="general"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>NeuralRack v0.3.3 released</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-05-30:tag:github.com,2008:Repository/950004433/v0.3.3</ns0:id>
    <ns0:updated>2026-05-30T13:46:01Z</ns0:updated>
    <ns0:published>2026-05-30T13:46:01Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/brummer10/NeuralRack/releases/tag/v0.3.3" type="text/html"/>
    <ns0:summary type="html">&lt;p&gt;NeuralRack is a Neural Model and Impulse Response File loader for Linux/Windows available as Stand alone application, and in the Clap, LV2 and vst2 plugin format.&lt;/p&gt;
&lt;p&gt;It supports &lt;a href="https://www.tone3000.com/search?tags=103" rel="nofollow"&gt;*.nam files&lt;/a&gt; and, or &lt;a href="https://www.tone3000.com/search?tags=23562" rel="nofollow"&gt;*.json or .aidax files&lt;/a&gt; by using the &lt;a href="https://github.com/mikeoliphant/NeuralAudio"&gt;NeuralAudio&lt;/a&gt; engine.&lt;/p&gt;
&lt;p&gt;For Impulse Response File Convolution it use &lt;a href="https://github.com/HiFi-LoFi/FFTConvolver"&gt;FFTConvolver&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Resampling is done by &lt;a href="https://kokkinizita.linuxaudio.org/linuxaudio/zita-resampler/resampler.html" rel="nofollow"&gt;Libzita-resampler&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;New in this release:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fix support for dpi scale&lt;/li&gt;
&lt;li&gt;Fix stand-alone may crash on wayland&lt;/li&gt;
&lt;li&gt;implement support for NAM outboard models, they could be loaded in the IR module now.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="https://github.com/brummer10/NeuralRack/raw/main/NeuralRack.png?raw=true" rel="noopener noreferrer" target="_blank"&gt;&lt;img alt="NeuralRack" src="https://github.com/brummer10/NeuralRack/raw/main/NeuralRack.png?raw=true" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Neuralrack allow to load up to two model files and run them serial.&lt;br /&gt;
The input/output could be controlled separate for each model.&lt;br /&gt;
For tone sharping a 6 band EQ could be enabled.&lt;br /&gt;
Additional it allow to load up a separate Impulse Response file for each output channel (stereo).&lt;br /&gt;
Neuralrack provide a buffered Mode which introduce a one frame latency when enabled.&lt;br /&gt;
It could move one Neural Model, or the complete processing into a background thread. That will reduce the CPU load when needed.&lt;br /&gt;
The resulting latency will be reported to the host so that it could be compensated.&lt;/p&gt;
&lt;p&gt;To build from source, please use NeuralRack-v0.3.3-src.tar.xz as only that contain the needed submodules.&lt;/p&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>NeuralRack</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>zrythm - Release v2.0.0-alpha.1</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-05-30:tag:github.com,2008:Repository/196362588/v2.0.0-alpha.1</ns0:id>
    <ns0:updated>2026-05-30T13:16:00Z</ns0:updated>
    <ns0:published>2026-05-30T13:16:00Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/zrythm/zrythm/releases/tag/v2.0.0-alpha.1" type="text/html"/>
    <ns0:summary type="html">&lt;p&gt;First official v2 alpha release. Zrythm v2 is a complete rewrite using Qt/QML&lt;br /&gt;
and JUCE, replacing the previous GTK-based UI.&lt;/p&gt;
&lt;p&gt;Added:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Qt/QML-based UI with hardware acceleration (Qt Quick)&lt;/li&gt;
&lt;li&gt;Plugin support via JUCE: VST3, LV2, LADSPA, AudioUnit&lt;/li&gt;
&lt;li&gt;Native plugin support: CLAP&lt;/li&gt;
&lt;li&gt;Tempo map with editable tempo and time signature objects&lt;/li&gt;
&lt;li&gt;ASIO support on Windows&lt;/li&gt;
&lt;li&gt;CPack packaging: AppImage (GNU/Linux), DragNDrop (macOS), InnoSetup (Windows)&lt;/li&gt;
&lt;li&gt;CI pipeline with Clang sanitizers, Valgrind, QML lint, ClangFormat checks&lt;/li&gt;
&lt;li&gt;Unit tests, integration tests, and benchmarks&lt;/li&gt;
&lt;li&gt;Use CPM for dependency management with version pinning&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Changed:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Migrated from GTK to Qt6/QML&lt;/li&gt;
&lt;li&gt;Migrated from Meson to CMake&lt;/li&gt;
&lt;li&gt;Migrated from C to C++23&lt;/li&gt;
&lt;li&gt;Bundled Faust plugins migrated from LV2 to JUCE/VST3&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Removed:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;GTK, Carla, guile dependencies&lt;/li&gt;
&lt;li&gt;Meson build system&lt;/li&gt;
&lt;/ul&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>zrythm</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>Noteahead - 3.1.0</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-05-30:tag:github.com,2008:Repository/313720469/3.1.0</ns0:id>
    <ns0:updated>2026-05-30T11:16:25Z</ns0:updated>
    <ns0:published>2026-05-30T11:16:25Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/juzzlin/Noteahead/releases/tag/3.1.0" type="text/html"/>
    <ns0:summary type="html">&lt;p&gt;3.1.0&lt;/p&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>Noteahead</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>Frescobaldi 4.0.7</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-05-30:tag:github.com,2008:Repository/1302990/v4.0.7</ns0:id>
    <ns0:updated>2026-05-30T05:54:59Z</ns0:updated>
    <ns0:published>2026-05-30T05:54:59Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/frescobaldi/frescobaldi/releases/tag/v4.0.7" type="text/html"/>
    <ns0:summary type="html">&lt;h2&gt;What's Changed&lt;/h2&gt;
&lt;p&gt;macOS packages are available again. Many thanks to &lt;a class="user-mention notranslate" href="https://github.com/walkymatt"&gt;@walkymatt&lt;/a&gt; for providing the new Apple certificate!&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Hatch version bump by &lt;a class="user-mention notranslate" href="https://github.com/fedelibre"&gt;@fedelibre&lt;/a&gt; in &lt;a class="issue-link js-issue-link" href="https://github.com/frescobaldi/frescobaldi/pull/2200"&gt;#2200&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Downgrade PyQt6 to 6.9 for macOS packages + re-enable macOS signing by &lt;a class="user-mention notranslate" href="https://github.com/fedelibre"&gt;@fedelibre&lt;/a&gt; in &lt;a class="issue-link js-issue-link" href="https://github.com/frescobaldi/frescobaldi/pull/2190"&gt;#2190&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Reduce link cache memory usage by &lt;a class="user-mention notranslate" href="https://github.com/bmjcode"&gt;@bmjcode&lt;/a&gt; in &lt;a class="issue-link js-issue-link" href="https://github.com/frescobaldi/frescobaldi/pull/2202"&gt;#2202&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;4.0.7 release by &lt;a class="user-mention notranslate" href="https://github.com/fedelibre"&gt;@fedelibre&lt;/a&gt; in &lt;a class="issue-link js-issue-link" href="https://github.com/frescobaldi/frescobaldi/pull/2210"&gt;#2210&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Some performance optimizations have been added in version 1.0.5 of qpageview, which is bundled in the Windows and macOS packages.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Full Changelog&lt;/strong&gt;: &lt;a class="commit-link" href="https://github.com/frescobaldi/frescobaldi/compare/v4.0.6...v4.0.7"&gt;&lt;tt&gt;v4.0.6...v4.0.7&lt;/tt&gt;&lt;/a&gt;&lt;/p&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>frescobaldi</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>noise-suppression-for-voice - Noise Suppression v1.21 (VST2, VST3, LV2, LADSPA, AU, AUv3)</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-05-29:tag:github.com,2008:Repository/118370558/v1.21</ns0:id>
    <ns0:updated>2026-05-29T19:18:02Z</ns0:updated>
    <ns0:published>2026-05-29T19:18:02Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/werman/noise-suppression-for-voice/releases/tag/v1.21" type="text/html"/>
    <ns0:summary type="html">&lt;h2&gt;Big changes&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Updated rnnoise model;&lt;/li&gt;
&lt;li&gt;Wet/Dry controls;&lt;/li&gt;
&lt;li&gt;Run-time CPU detection, allowing to select between AVX2, SSE, and default paths (performance improvement).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Minor changes&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Updated JUCE to 7.0.12;&lt;/li&gt;
&lt;li&gt;Various fixes;&lt;/li&gt;
&lt;li&gt;Updated README.&lt;/li&gt;
&lt;/ul&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>noise-suppression-for-voice</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>noise-suppression-for-voice - v1.20</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-05-29:tag:github.com,2008:Repository/118370558/v1.20</ns0:id>
    <ns0:updated>2026-05-29T14:54:10Z</ns0:updated>
    <ns0:published>2026-05-29T14:54:10Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/werman/noise-suppression-for-voice/releases/tag/v1.20" type="text/html"/>
    <ns0:summary type="html">&lt;p&gt;build: Disable ladspa plugin by default with MSVC compiler&lt;/p&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>noise-suppression-for-voice</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>picard - release-3.0.0b3</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-05-29:tag:github.com,2008:Repository/2218679/release-3.0.0b3</ns0:id>
    <ns0:updated>2026-05-29T13:58:22Z</ns0:updated>
    <ns0:published>2026-05-29T13:58:22Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/metabrainz/picard/releases/tag/release-3.0.0b3" type="text/html"/>
    <ns0:summary type="html">&lt;p&gt;Release 3.0.0b3&lt;/p&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>picard</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>openwurli - v0.5.1 "SweetDevotion"</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-05-28:tag:github.com,2008:Repository/1160445603/v0.5.1</ns0:id>
    <ns0:updated>2026-05-28T20:29:52Z</ns0:updated>
    <ns0:published>2026-05-28T20:29:52Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/hal0zer0/openwurli/releases/tag/v0.5.1" type="text/html"/>
    <ns0:summary type="html">&lt;p&gt;&lt;strong&gt;Full Changelog&lt;/strong&gt;: &lt;a class="commit-link" href="https://github.com/hal0zer0/openwurli/compare/v0.5.0...v0.5.1"&gt;&lt;tt&gt;v0.5.0...v0.5.1&lt;/tt&gt;&lt;/a&gt;&lt;/p&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>openwurli</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>GuitarMidi-LV2 - v2.1</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-05-28:tag:github.com,2008:Repository/103525500/v2.1</ns0:id>
    <ns0:updated>2026-05-28T13:08:08Z</ns0:updated>
    <ns0:published>2026-05-28T13:08:08Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/geraldmwangi/GuitarMidi-LV2/releases/tag/v2.1" type="text/html"/>
    <ns0:summary type="html">&lt;p&gt;improved readme&lt;/p&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>GuitarMidi-LV2</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>Cable - 0.10.9</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-05-26:tag:github.com,2008:Repository/828356582/0.10.9</ns0:id>
    <ns0:updated>2026-05-26T15:22:27Z</ns0:updated>
    <ns0:published>2026-05-26T15:22:27Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/magillos/Cable/releases/tag/0.10.9" type="text/html"/>
    <ns0:summary type="html">&lt;ul&gt;
&lt;li&gt;seamless theme switching (app restart shouldn't be required any more)&lt;/li&gt;
&lt;li&gt;option to force theme (will use Fusion theme, applies without app restart)&lt;/li&gt;
&lt;li&gt;option to invert monochrome icon colour (applies without app restart)&lt;/li&gt;
&lt;li&gt;monochrome icon applies without app restart&lt;/li&gt;
&lt;li&gt;better app recovery from pipewire restart (when service restarted from within the app)&lt;/li&gt;
&lt;li&gt;added middle click option for tray (does the same as left click, might be useful in Gnome)&lt;/li&gt;
&lt;li&gt;added &lt;code&gt;StartupNotify=false&lt;/code&gt; in .desktop files to combat hourglass in Gnome but it doesn't seem to help; suggestions welcomed&lt;/li&gt;
&lt;/ul&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>Cable</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>gearmulator - 2.2.6: Revert macOS Mach VM backend in dsp56300 submodule</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-05-26:tag:github.com,2008:Repository/385748634/2.2.6</ns0:id>
    <ns0:updated>2026-05-26T13:02:55Z</ns0:updated>
    <ns0:published>2026-05-26T13:02:55Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/dsp56300/gearmulator/releases/tag/2.2.6" type="text/html"/>
    <ns0:summary type="html">&lt;p&gt;EXC_GUARD (DEALLOC_GAP) still triggers with mach_vm_map during&lt;br /&gt;
AU validation. Restore initFallback on macOS until EMU-69 finds&lt;br /&gt;
a working approach.&lt;/p&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>gearmulator</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>hvcc - v0.16.0</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-05-26:tag:github.com,2008:Repository/343553019/v0.16.0</ns0:id>
    <ns0:updated>2026-05-26T10:08:36Z</ns0:updated>
    <ns0:published>2026-05-26T10:08:36Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/Wasted-Audio/hvcc/releases/tag/v0.16.0" type="text/html"/>
    <ns0:summary type="html">&lt;p&gt;Features:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Add theme configuration to pd2gui model&lt;/li&gt;
&lt;li&gt;Add &lt;code&gt;flash_time&lt;/code&gt; to pd2gui Bang parser&lt;/li&gt;
&lt;li&gt;Only parse GUI with &lt;code&gt;--gui&lt;/code&gt; flag&lt;/li&gt;
&lt;li&gt;Port objects from cyclone&lt;/li&gt;
&lt;li&gt;Port &lt;code&gt;pdnam~&lt;/code&gt; external using &lt;code&gt;MicroNAM&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;DPF: support &lt;code&gt;@hv_event&lt;/code&gt; parameters&lt;/li&gt;
&lt;li&gt;DPF: Generate optional NanoVG UI code from &lt;code&gt;pd2gui&lt;/code&gt; parser&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Bugfixes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Skip empty values when restoring tables (&lt;a class="issue-link js-issue-link" href="https://github.com/Wasted-Audio/hvcc/issues/348"&gt;#348&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Only append to table when first value is a float&lt;/li&gt;
&lt;li&gt;Fix parsing multi-array objects (&lt;a class="issue-link js-issue-link" href="https://github.com/Wasted-Audio/hvcc/issues/373"&gt;#373&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;GUI send/receive config for objects in subpatches&lt;/li&gt;
&lt;li&gt;DPF: also send BPM value to &lt;code&gt;__hv_dpf_bpm&lt;/code&gt; when transport is not playing&lt;/li&gt;
&lt;li&gt;Wwise: use latest Windows SDK available locally instead of hardcoded version&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Refactor:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Migrate to Pathlib (note: Generator signature has changed!)&lt;/li&gt;
&lt;li&gt;GUI IR: stable IDs for graphs/canvas/comments; updated float/number fields; use specific GUI IR filename&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Docs:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Versioning&lt;/li&gt;
&lt;/ul&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>hvcc</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>pipewire releases - 1.6.6</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-05-26:https://gitlab.freedesktop.org/pipewire/pipewire/-/releases/1.6.6</ns0:id>
    <ns0:updated>2026-05-26T08:50:07Z</ns0:updated>
    <ns0:published>2026-05-26T08:50:07Z</ns0:published>
    <ns0:link rel="alternate" href="https://gitlab.freedesktop.org/pipewire/pipewire/-/releases/1.6.6" type="text/html"/>
    <ns0:summary type="html">1.6.6</ns0:summary>
    <ns0:author>
      <ns0:name>pipewire releases</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>TeAr - v0.3.0</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-05-25:tag:github.com,2008:Repository/1111597893/v0.3.0</ns0:id>
    <ns0:updated>2026-05-25T15:06:38Z</ns0:updated>
    <ns0:published>2026-05-25T15:06:38Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/odoare/TeAr/releases/tag/v0.3.0" type="text/html"/>
    <ns0:summary type="html">&lt;ul&gt;
&lt;li&gt;new piano component&lt;/li&gt;
&lt;li&gt;block commands ( )&lt;/li&gt;
&lt;li&gt;richer probability with the p command&lt;/li&gt;
&lt;li&gt;arbitrary number of arpeggiators&lt;/li&gt;
&lt;li&gt;MacOS version (needs testing)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Full Changelog&lt;/strong&gt;: &lt;a class="commit-link" href="https://github.com/odoare/TeAr/compare/0.2...v0.3.0"&gt;&lt;tt&gt;0.2...v0.3.0&lt;/tt&gt;&lt;/a&gt;&lt;/p&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>TeAr</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>gearmulator - 2.2.5</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-05-25:tag:github.com,2008:Repository/385748634/2.2.5</ns0:id>
    <ns0:updated>2026-05-25T10:11:23Z</ns0:updated>
    <ns0:published>2026-05-25T10:11:23Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/dsp56300/gearmulator/releases/tag/2.2.5" type="text/html"/>
    <ns0:summary type="html">&lt;p&gt;BUG-10201 Osirus/OsTIrus: show checkmark on current preset in part bu…&lt;/p&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>gearmulator</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>v4.7.2: Merge pull request #33566 from musescore/ci_tx_pull_4.7</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-05-25:tag:github.com,2008:Repository/4454793/v4.7.2</ns0:id>
    <ns0:updated>2026-05-25T08:55:43Z</ns0:updated>
    <ns0:published>2026-05-25T08:55:43Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/musescore/MuseScore/releases/tag/v4.7.2" type="text/html"/>
    <ns0:summary type="html">&lt;p&gt;Update in-repo translations from Transifex&lt;/p&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>MuseScore</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>waveform-playlist - Spectrogram Production Hardening + PR #387/#390 Review Followups</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-05-24:tag:github.com,2008:Repository/8150190/spectrogram-review-followups</ns0:id>
    <ns0:updated>2026-05-24T05:35:48Z</ns0:updated>
    <ns0:published>2026-05-24T05:35:48Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/naomiaro/waveform-playlist/releases/tag/spectrogram-review-followups" type="text/html"/>
    <ns0:summary type="html">&lt;h2&gt;What's new&lt;/h2&gt;
&lt;p&gt;Hardens the spectrogram pipeline based on comprehensive multi-agent reviews of PR &lt;a href="https://github.com/naomiaro/waveform-playlist/pull/387"&gt;#387&lt;/a&gt; and PR &lt;a href="https://github.com/naomiaro/waveform-playlist/pull/390"&gt;#390&lt;/a&gt;. Production error handling, type-design improvements, doc accuracy fixes, and significant test coverage gains.&lt;/p&gt;
&lt;h3&gt;Published&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;@waveform-playlist/core@12.2.0&lt;/code&gt;&lt;/strong&gt; — new &lt;code&gt;SPECTROGRAM_DEFAULTS&lt;/code&gt; and &lt;code&gt;DEFAULT_SPECTROGRAM_COLOR_MAP&lt;/code&gt; exports (single source of truth for spectrogram defaults across both layers)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;@dawcore/spectrogram@0.0.3&lt;/code&gt;&lt;/strong&gt; — new &lt;code&gt;viewport-error&lt;/code&gt; event, &lt;code&gt;generation&lt;/code&gt; field on &lt;code&gt;ViewportReadyDetail&lt;/code&gt;, &lt;code&gt;readonly&lt;/code&gt; on input types, production-grade error handling in the orchestrator + worker pool&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;@dawcore/components@0.0.20&lt;/code&gt;&lt;/strong&gt; — re-dispatches &lt;code&gt;daw-spectrogram-error&lt;/code&gt; from the orchestrator, carries &lt;code&gt;generation&lt;/code&gt; on &lt;code&gt;daw-spectrogram-ready&lt;/code&gt;, warns once when &lt;code&gt;&amp;lt;daw-spectrogram&amp;gt;&lt;/code&gt; can't find its host editor, unifies &lt;code&gt;TrackRenderMode&lt;/code&gt; with &lt;code&gt;RenderMode&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Production error handling&lt;/h3&gt;
&lt;p&gt;The orchestrator's render coordinator was previously a 320-line async pipeline with &lt;strong&gt;zero try/catch&lt;/strong&gt; — every worker rejection became an unhandled promise rejection. The whole class is now wrapped:&lt;/p&gt;
&lt;div class="highlight highlight-source-js notranslate position-relative overflow-auto"&gt;&lt;pre&gt;&lt;span class="pl-s1"&gt;editor&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-en"&gt;addEventListener&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-s"&gt;'daw-spectrogram-error'&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt; &lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-s1"&gt;e&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt; &lt;span class="pl-c1"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="pl-kos"&gt;{&lt;/span&gt;
  &lt;span class="pl-smi"&gt;console&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-en"&gt;error&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-s"&gt;'Track'&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt; &lt;span class="pl-s1"&gt;e&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-c1"&gt;detail&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-c1"&gt;trackId&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt; &lt;span class="pl-s"&gt;'gen'&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt; &lt;span class="pl-s1"&gt;e&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-c1"&gt;detail&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-c1"&gt;generation&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt; &lt;span class="pl-s"&gt;'failed:'&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt; &lt;span class="pl-s1"&gt;e&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-c1"&gt;detail&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-c1"&gt;error&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
&lt;span class="pl-kos"&gt;}&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;viewport-error&lt;/code&gt; event on the orchestrator (re-dispatched as &lt;code&gt;daw-spectrogram-error&lt;/code&gt; on &lt;code&gt;&amp;lt;daw-editor&amp;gt;&lt;/code&gt;) for non-abort failures&lt;/li&gt;
&lt;li&gt;&lt;code&gt;SpectrogramAbortError&lt;/code&gt; is correctly distinguished — abort during a generation bump is normal flow, not surfaced as an error&lt;/li&gt;
&lt;li&gt;One track's failure no longer aborts sibling tracks' renders (per-track try/catch)&lt;/li&gt;
&lt;li&gt;Worker crashes now report which operation failed (was lossy)&lt;/li&gt;
&lt;li&gt;Multi-channel FFT uses &lt;code&gt;Promise.allSettled&lt;/code&gt; so partial failures surface diagnostics for all channels&lt;/li&gt;
&lt;li&gt;Worker pool constructor leak fixed (workers from iterations 0..N-1 were stranded if iteration N threw)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;No more silent black chunks&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;daw-spectrogram&amp;gt;&lt;/code&gt; warns once when mounted outside a &lt;code&gt;&amp;lt;daw-editor&amp;gt;&lt;/code&gt; host&lt;/li&gt;
&lt;li&gt;&lt;code&gt;renderGroup&lt;/code&gt; warns when canvas registration races ahead of clip-audio registration&lt;/li&gt;
&lt;li&gt;&lt;code&gt;registerClip&lt;/code&gt; now triggers a render if canvases for that clip were registered first (the actual race fix — previously canvases stayed black until something else triggered a re-render)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;setDevicePixelRatio&lt;/code&gt; now actually does something (validates, bumps generation, schedules render — was a silent state-only setter)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;setViewport&lt;/code&gt; validates &lt;code&gt;Number.isFinite&lt;/code&gt; + ordering invariants&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;code&gt;generation&lt;/code&gt; field on ready events&lt;/h3&gt;
&lt;div class="highlight highlight-source-js notranslate position-relative overflow-auto"&gt;&lt;pre&gt;&lt;span class="pl-s1"&gt;editor&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-en"&gt;addEventListener&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-s"&gt;'daw-spectrogram-ready'&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt; &lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-s1"&gt;e&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt; &lt;span class="pl-c1"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="pl-kos"&gt;{&lt;/span&gt;
  &lt;span class="pl-smi"&gt;console&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-en"&gt;log&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-s"&gt;'Track'&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt; &lt;span class="pl-s1"&gt;e&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-c1"&gt;detail&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-c1"&gt;trackId&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt; &lt;span class="pl-s"&gt;'rendered at generation'&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt; &lt;span class="pl-s1"&gt;e&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-c1"&gt;detail&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-c1"&gt;generation&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
&lt;span class="pl-kos"&gt;}&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Lets consumers correlate ready events to their own state, dedup if needed, and debug "which render are we seeing?" without instrumentation.&lt;/p&gt;
&lt;h3&gt;Type-design improvements&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Unified &lt;code&gt;TrackRenderMode&lt;/code&gt;&lt;/strong&gt; — dawcore previously had a duplicate that omitted &lt;code&gt;'both'&lt;/code&gt;. Now re-exported from &lt;code&gt;@waveform-playlist/core&lt;/code&gt; as the canonical &lt;code&gt;RenderMode = 'waveform' | 'spectrogram' | 'both' | 'piano-roll'&lt;/code&gt;. Dawcore warns + falls back to &lt;code&gt;'spectrogram'&lt;/code&gt; if &lt;code&gt;'both'&lt;/code&gt; is set (until the both-mode renderer ships).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;SPECTROGRAM_DEFAULTS&lt;/code&gt; consolidated&lt;/strong&gt; — was duplicated 3× (orchestrator constructor, controller &lt;code&gt;LIBRARY_DEFAULTS&lt;/code&gt;, &lt;code&gt;renderGroup&lt;/code&gt; inline). Now one source in &lt;code&gt;@waveform-playlist/core&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;readonly&lt;/code&gt; on every input type&lt;/strong&gt; (Options, ClipRegistration, CanvasRegistration, ViewportState, ViewportBounds) — defensive immutability, zero behavior change.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Compile-time guard for &lt;code&gt;viewportsEqual&lt;/code&gt;&lt;/strong&gt; — adding a new field to &lt;code&gt;ViewportState&lt;/code&gt; now forces an update to the equality helper via &lt;code&gt;satisfies Record&amp;lt;keyof ViewportState, true&amp;gt;&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Test coverage&lt;/h3&gt;
&lt;p&gt;+9 net new tests covering previously-uncovered critical paths:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;setConfig&lt;/code&gt; and &lt;code&gt;setColorMap&lt;/code&gt; dedup-clearing (PR &lt;a class="issue-link js-issue-link" href="https://github.com/naomiaro/waveform-playlist/pull/390"&gt;#390&lt;/a&gt; carry-over)&lt;/li&gt;
&lt;li&gt;Multi-track per-trackId dedup with concrete &lt;code&gt;generation&lt;/code&gt; assertion&lt;/li&gt;
&lt;li&gt;&lt;code&gt;dispose()&lt;/code&gt; during in-flight render (deterministic via deferred-resolve mock)&lt;/li&gt;
&lt;li&gt;Buffer-tier coverage (was only asserting the viewport tier)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;registerClip&lt;/code&gt; pool forwarding assertion&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;daw-spectrogram&amp;gt;&lt;/code&gt; shadow-DOM traversal (light-DOM warn, warn-once dedup, &lt;code&gt;getRootNode().host&lt;/code&gt; through open shadow)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Doc accuracy fixes&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;dawcore-spectrogram/CLAUDE.md&lt;/code&gt; test count was wrong (claimed 145 / "~165 total"; actual 174+ pre-PR). Replaced with "run vitest for the current count" so docs can't drift.&lt;/li&gt;
&lt;li&gt;The two CLAUDE.mds contradicted each other on orchestrator ownership (one said "shared between Lit and React Provider", the other said "not the React Provider"). Aligned to the truth: orchestrator is dawcore-Lit-only today; React Provider keeps its own per-track pipeline; consolidation is a future PR.&lt;/li&gt;
&lt;li&gt;Fixed &lt;code&gt;&amp;lt;daw-spectrogram&amp;gt;&lt;/code&gt; JSDoc + &lt;code&gt;_lastSpectrogramViewport&lt;/code&gt; + &lt;code&gt;_maybeRegisterSpectrogramClipAudio&lt;/code&gt; (the last one contradicted its own implementation).&lt;/li&gt;
&lt;li&gt;Fixed tsup config comment claiming &lt;code&gt;.d.ts&lt;/code&gt; for an ESM-only entry that actually emits &lt;code&gt;.d.mts&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Mid-PR regression caught + fixed&lt;/h3&gt;
&lt;p&gt;Centralizing &lt;code&gt;SPECTROGRAM_DEFAULTS&lt;/code&gt; initially set &lt;code&gt;alpha: 0.5&lt;/code&gt;, but the only consumer (&lt;code&gt;hamming&lt;/code&gt; window) uses &lt;code&gt;alpha ?? 0.54&lt;/code&gt; (canonical Hamming coefficient). The code-quality review caught this — &lt;code&gt;alpha&lt;/code&gt; is window-specific, so it's now omitted from &lt;code&gt;SPECTROGRAM_DEFAULTS&lt;/code&gt; entirely and &lt;code&gt;windowFunctions.ts&lt;/code&gt; owns its 0.54 default. Pre-PR Hamming behavior preserved.&lt;/p&gt;
&lt;h3&gt;Migration&lt;/h3&gt;
&lt;p&gt;Existing consumers reading &lt;code&gt;viewport-ready.detail.trackId&lt;/code&gt; are unaffected (additive change). Consumers branching on &lt;code&gt;TrackRenderMode&lt;/code&gt; in dawcore can now receive &lt;code&gt;'both'&lt;/code&gt; — dawcore warns and falls back.&lt;/p&gt;
&lt;h3&gt;Reviews&lt;/h3&gt;
&lt;p&gt;PR review summaries from the chat:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;PR &lt;a class="issue-link js-issue-link" href="https://github.com/naomiaro/waveform-playlist/pull/387"&gt;#387&lt;/a&gt; reviews: code, tests, comments, types, errors (5 agents)&lt;/li&gt;
&lt;li&gt;PR &lt;a class="issue-link js-issue-link" href="https://github.com/naomiaro/waveform-playlist/pull/390"&gt;#390&lt;/a&gt; reviews: code, tests, comments (3 agents)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Implementation plan: &lt;a href="https://github.com/naomiaro/waveform-playlist/blob/main/docs/plans/2026-05-24-spectrogram-review-fixes.md"&gt;&lt;code&gt;docs/plans/2026-05-24-spectrogram-review-fixes.md&lt;/code&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;PR: &lt;a class="issue-link js-issue-link" href="https://github.com/naomiaro/waveform-playlist/pull/393"&gt;#393&lt;/a&gt;&lt;/p&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>waveform-playlist</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>waveform-playlist - MIDI File Loading for dawcore (editor.loadMidi) + Framework Split</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-05-24:tag:github.com,2008:Repository/8150190/dawcore-load-midi</ns0:id>
    <ns0:updated>2026-05-24T03:56:11Z</ns0:updated>
    <ns0:published>2026-05-24T03:56:11Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/naomiaro/waveform-playlist/releases/tag/dawcore-load-midi" type="text/html"/>
    <ns0:summary type="html">&lt;h2&gt;What's new&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;editor.loadMidi(source, options)&lt;/code&gt; on &lt;code&gt;&amp;lt;daw-editor&amp;gt;&lt;/code&gt; loads a &lt;code&gt;.mid&lt;/code&gt; file (URL or &lt;code&gt;File&lt;/code&gt;) and creates N &lt;code&gt;&amp;lt;daw-track&amp;gt;&lt;/code&gt; elements automatically — one per note-bearing MIDI track. The parser lives in a new framework-agnostic &lt;code&gt;@dawcore/midi&lt;/code&gt; package; &lt;code&gt;@waveform-playlist/midi&lt;/code&gt; becomes a thin React wrapper that re-exports from it. Mirrors the spectrogram split done in PR &lt;a class="issue-link js-issue-link" href="https://github.com/naomiaro/waveform-playlist/pull/387"&gt;#387&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;New packages&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;@dawcore/midi@0.0.1&lt;/code&gt;&lt;/strong&gt; — framework-agnostic MIDI parser. &lt;code&gt;parseMidiFile(buffer, opts?)&lt;/code&gt; and &lt;code&gt;parseMidiUrl(url, opts?, signal?)&lt;/code&gt; (pure functions, no React, no DOM). Houses the &lt;code&gt;MidiLoadOptions&lt;/code&gt; / &lt;code&gt;MidiLoadResult&lt;/code&gt; types used by &lt;code&gt;editor.loadMidi&lt;/code&gt;. Hard-deps &lt;code&gt;@tonejs/midi&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;dawcore (&lt;code&gt;@dawcore/components@0.0.19&lt;/code&gt;)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;New public method:
&lt;div class="highlight highlight-source-ts notranslate position-relative overflow-auto"&gt;&lt;pre&gt;&lt;span class="pl-s1"&gt;editor&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-en"&gt;loadMidi&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-s1"&gt;source&lt;/span&gt;: &lt;span class="pl-s1"&gt;string&lt;/span&gt; &lt;span class="pl-c1"&gt;|&lt;/span&gt; &lt;span class="pl-v"&gt;File&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt; &lt;span class="pl-s1"&gt;options&lt;/span&gt;?: &lt;span class="pl-v"&gt;MidiLoadOptions&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;: &lt;span class="pl-v"&gt;Promise&lt;/span&gt;&lt;span class="pl-c1"&gt;&amp;lt;&lt;/span&gt;&lt;span class="pl-smi"&gt;MidiLoadResult&lt;/span&gt;&lt;span class="pl-c1"&gt;&amp;gt;&lt;/span&gt;

&lt;span class="pl-k"&gt;interface&lt;/span&gt; &lt;span class="pl-smi"&gt;MidiLoadOptions&lt;/span&gt; &lt;span class="pl-kos"&gt;{&lt;/span&gt;
  &lt;span class="pl-c1"&gt;startTime&lt;/span&gt;?: &lt;span class="pl-smi"&gt;number&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;       &lt;span class="pl-c"&gt;// seconds (default 0)&lt;/span&gt;
  &lt;span class="pl-c1"&gt;signal&lt;/span&gt;?: &lt;span class="pl-smi"&gt;AbortSignal&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;     &lt;span class="pl-c"&gt;// forwarded to fetch only&lt;/span&gt;
&lt;span class="pl-kos"&gt;}&lt;/span&gt;

&lt;span class="pl-k"&gt;interface&lt;/span&gt; &lt;span class="pl-smi"&gt;MidiLoadResult&lt;/span&gt; &lt;span class="pl-kos"&gt;{&lt;/span&gt;
  &lt;span class="pl-k"&gt;readonly&lt;/span&gt; &lt;span class="pl-c1"&gt;trackIds&lt;/span&gt;: &lt;span class="pl-k"&gt;readonly&lt;/span&gt; &lt;span class="pl-smi"&gt;string&lt;/span&gt;&lt;span class="pl-kos"&gt;[&lt;/span&gt;&lt;span class="pl-kos"&gt;]&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
  &lt;span class="pl-k"&gt;readonly&lt;/span&gt; &lt;span class="pl-c1"&gt;bpm&lt;/span&gt;: &lt;span class="pl-smi"&gt;number&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
  &lt;span class="pl-k"&gt;readonly&lt;/span&gt; &lt;span class="pl-c1"&gt;timeSignature&lt;/span&gt;: &lt;span class="pl-k"&gt;readonly&lt;/span&gt; &lt;span class="pl-kos"&gt;[&lt;/span&gt;&lt;span class="pl-smi"&gt;number&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt; &lt;span class="pl-smi"&gt;number&lt;/span&gt;&lt;span class="pl-kos"&gt;]&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
  &lt;span class="pl-k"&gt;readonly&lt;/span&gt; &lt;span class="pl-c1"&gt;duration&lt;/span&gt;: &lt;span class="pl-smi"&gt;number&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
  &lt;span class="pl-k"&gt;readonly&lt;/span&gt; &lt;span class="pl-c1"&gt;name&lt;/span&gt;: &lt;span class="pl-smi"&gt;string&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
&lt;span class="pl-kos"&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;Optional peer dep on &lt;code&gt;@dawcore/midi&lt;/code&gt; — &lt;code&gt;loadMidi&lt;/code&gt; dynamic-imports it on first call. Friendly install hint if missing (and the original module-resolution error goes to &lt;code&gt;console.warn&lt;/code&gt; for debuggability).&lt;/li&gt;
&lt;li&gt;Created &lt;code&gt;&amp;lt;daw-track&amp;gt;&lt;/code&gt; elements get &lt;code&gt;render-mode="piano-roll"&lt;/code&gt; automatically; each clip carries the MIDI notes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cleanup-on-failure&lt;/strong&gt; — if any of the N track creations fails, every &lt;code&gt;&amp;lt;daw-track&amp;gt;&lt;/code&gt; appended during the call is removed via &lt;code&gt;.remove()&lt;/code&gt; (both succeeded ones and the elements &lt;code&gt;addTrack&lt;/code&gt; left in the DOM before rejecting). The editor returns to its pre-call state. Uses &lt;code&gt;Promise.allSettled&lt;/code&gt; so cleanup waits for late settlements; tests guard against accidental &lt;code&gt;Promise.all&lt;/code&gt; regressions.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;AbortError&lt;/code&gt; from a cancelled fetch propagates as-is; aborts during the &lt;code&gt;addTrack&lt;/code&gt; phase are a no-op (documented limitation — &lt;code&gt;addTrack&lt;/code&gt; is not yet signal-aware).&lt;/li&gt;
&lt;li&gt;New demo: &lt;code&gt;examples/dawcore-tone/midi-load.html&lt;/code&gt; — URL button + File picker, with AbortError handled gracefully.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;React (&lt;code&gt;@waveform-playlist/midi@13.0.0&lt;/code&gt; — major)&lt;/h3&gt;
&lt;p&gt;Slimmed to the &lt;code&gt;useMidiTracks&lt;/code&gt; React hook. &lt;strong&gt;Breaking dep churn:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The parser moved to &lt;code&gt;@dawcore/midi&lt;/code&gt;. &lt;code&gt;parseMidiFile&lt;/code&gt; / &lt;code&gt;parseMidiUrl&lt;/code&gt; are re-exported from this package, so existing consumers see no API change at the import level — but a new transitive dep (&lt;code&gt;@dawcore/midi&lt;/code&gt;) is installed.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;useMidiTracks&lt;/code&gt; and its types (&lt;code&gt;MidiTrackConfig&lt;/code&gt;, &lt;code&gt;UseMidiTracksOptions&lt;/code&gt;, &lt;code&gt;UseMidiTracksReturn&lt;/code&gt;) are unchanged.&lt;/li&gt;
&lt;li&gt;A &lt;code&gt;parser-parity&lt;/code&gt; smoke test guards against accidental local-copy drift (asserts both packages produce structurally equal output on six inputs: single-track, multi-track, percussion ch9, GM program name, empty, flatten).&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Migration&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;For dawcore consumers:&lt;/strong&gt; add the optional peer dep if you want &lt;code&gt;editor.loadMidi&lt;/code&gt;:&lt;/p&gt;
&lt;div class="snippet-clipboard-content notranslate position-relative overflow-auto"&gt;&lt;pre class="notranslate"&gt;&lt;code&gt;npm install @dawcore/midi
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Then:&lt;/p&gt;
&lt;div class="highlight highlight-text-html-basic notranslate position-relative overflow-auto"&gt;&lt;pre&gt;&lt;span class="pl-kos"&gt;&amp;lt;&lt;/span&gt;&lt;span class="pl-ent"&gt;daw-editor&lt;/span&gt; &lt;span class="pl-c1"&gt;id&lt;/span&gt;="&lt;span class="pl-s"&gt;editor&lt;/span&gt;"&lt;span class="pl-kos"&gt;&amp;gt;&lt;/span&gt;&lt;span class="pl-kos"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="pl-ent"&gt;daw-editor&lt;/span&gt;&lt;span class="pl-kos"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="pl-kos"&gt;&amp;lt;&lt;/span&gt;&lt;span class="pl-ent"&gt;script&lt;/span&gt; &lt;span class="pl-c1"&gt;type&lt;/span&gt;="&lt;span class="pl-s"&gt;module&lt;/span&gt;"&lt;span class="pl-kos"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="pl-k"&gt;import&lt;/span&gt; &lt;span class="pl-s"&gt;'@dawcore/components'&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
  &lt;span class="pl-k"&gt;import&lt;/span&gt; &lt;span class="pl-kos"&gt;{&lt;/span&gt; &lt;span class="pl-s1"&gt;createToneAdapter&lt;/span&gt; &lt;span class="pl-kos"&gt;}&lt;/span&gt; &lt;span class="pl-k"&gt;from&lt;/span&gt; &lt;span class="pl-s"&gt;'@waveform-playlist/playout'&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
  &lt;span class="pl-k"&gt;const&lt;/span&gt; &lt;span class="pl-s1"&gt;editor&lt;/span&gt; &lt;span class="pl-c1"&gt;=&lt;/span&gt; &lt;span class="pl-smi"&gt;document&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-en"&gt;getElementById&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-s"&gt;'editor'&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
  &lt;span class="pl-s1"&gt;editor&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-c1"&gt;adapter&lt;/span&gt; &lt;span class="pl-c1"&gt;=&lt;/span&gt; &lt;span class="pl-en"&gt;createToneAdapter&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-kos"&gt;{&lt;/span&gt; &lt;span class="pl-c1"&gt;ppqn&lt;/span&gt;: &lt;span class="pl-c1"&gt;960&lt;/span&gt; &lt;span class="pl-kos"&gt;}&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;

  &lt;span class="pl-k"&gt;const&lt;/span&gt; &lt;span class="pl-s1"&gt;result&lt;/span&gt; &lt;span class="pl-c1"&gt;=&lt;/span&gt; &lt;span class="pl-k"&gt;await&lt;/span&gt; &lt;span class="pl-s1"&gt;editor&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-en"&gt;loadMidi&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-s"&gt;'/midi/song.mid'&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
  &lt;span class="pl-smi"&gt;console&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-en"&gt;log&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-s"&gt;'Loaded tracks:'&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt; &lt;span class="pl-s1"&gt;result&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-c1"&gt;trackIds&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;

  &lt;span class="pl-c"&gt;// Apply tempo / time signature from the file (caller decides — loadMidi never mutates editor state implicitly)&lt;/span&gt;
  &lt;span class="pl-s1"&gt;editor&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-c1"&gt;bpm&lt;/span&gt; &lt;span class="pl-c1"&gt;=&lt;/span&gt; &lt;span class="pl-s1"&gt;result&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-c1"&gt;bpm&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
  &lt;span class="pl-s1"&gt;editor&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-c1"&gt;timeSignature&lt;/span&gt; &lt;span class="pl-c1"&gt;=&lt;/span&gt; &lt;span class="pl-s1"&gt;result&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-c1"&gt;timeSignature&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
&lt;span class="pl-kos"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="pl-ent"&gt;script&lt;/span&gt;&lt;span class="pl-kos"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;For &lt;code&gt;@waveform-playlist/midi&lt;/code&gt; React consumers:&lt;/strong&gt; no source changes needed. Update the dep, reinstall.&lt;/p&gt;
&lt;h3&gt;Deferred to future versions&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;flatten&lt;/code&gt; option — needs a hidden audio-only track primitive in dawcore&lt;/li&gt;
&lt;li&gt;&lt;code&gt;name&lt;/code&gt; override — ambiguous semantics with multi-track files&lt;/li&gt;
&lt;li&gt;Auto-apply of tempo / time signature — caller does &lt;code&gt;editor.bpm = result.bpm&lt;/code&gt; themselves&lt;/li&gt;
&lt;li&gt;Cancellable &lt;code&gt;addTrack&lt;/code&gt; — &lt;code&gt;signal&lt;/code&gt; only cancels the fetch phase today&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Design + plan docs&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;docs/specs/2026-05-23-dawcore-load-midi-design.md&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;docs/plans/2026-05-23-dawcore-load-midi.md&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;PR: &lt;a class="issue-link js-issue-link" href="https://github.com/naomiaro/waveform-playlist/pull/392"&gt;#392&lt;/a&gt;&lt;/p&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>waveform-playlist</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>gearmulator - 2.2.4</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-05-23:tag:github.com,2008:Repository/385748634/2.2.4</ns0:id>
    <ns0:updated>2026-05-23T18:48:35Z</ns0:updated>
    <ns0:published>2026-05-23T18:48:35Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/dsp56300/gearmulator/releases/tag/2.2.4" type="text/html"/>
    <ns0:summary type="html">&lt;p&gt;Version 2.2.4&lt;/p&gt;
&lt;p&gt;Framework:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;[New] BUG-10179 MIDI Learn: Invert option per mapping. Incoming CC&lt;br /&gt;
values and outgoing feedback can now be inverted (a new&lt;br /&gt;
"Invert" checkbox in the MIDI Learn settings page).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[Imp] Support parsing of ".mid" files that are not really midi but&lt;br /&gt;
raw sysex&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[Imp] ParameterDescriptions: "toText" now accepts an object form&lt;br /&gt;
{format, scale, offset} that synthesises a value list at load&lt;br /&gt;
time. Lets devices with non-7-bit native parameter ranges&lt;br /&gt;
declare native min/max and produce human-readable display text&lt;br /&gt;
without controller-side scaling.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[Fix] BUG-10177 Third-party skins: Plugin-specific settings pages&lt;br /&gt;
(e.g. Voice Expansion) are now loaded from the embedded plugin&lt;br /&gt;
binary when a skin is loaded from disk&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[Fix] BUG-10189 Fix crash on the audio thread when a rate-limited&lt;br /&gt;
parameter is automated by the DAW.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;OsTIrus:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;[New] BUG-10194 Master Tune is now exposed as a public parameter,&lt;br /&gt;
bipolar (signed, +/-64 cents). Available for host automation&lt;/li&gt;
&lt;li&gt;[New] BUG-10184 Patch Manager now supports Multi and Arrangement&lt;br /&gt;
patches alongside Singles. Multi, Arrangement (Multi + 16&lt;br /&gt;
Singles) and Single dumps are detected automatically on file&lt;br /&gt;
import and tagged via the new "Type" category. Arrangement&lt;br /&gt;
loading from Patch Manager switches to Multi mode, applies&lt;br /&gt;
the multi and distributes the 16 referenced Singles into the&lt;br /&gt;
parts. A new "ROM Arrangements" data source exposes factory&lt;br /&gt;
arrangements from Osirus (ABC) ROMs (not available for&lt;br /&gt;
OsTIrus TI ROMs). Arrangements can also be saved to user&lt;br /&gt;
banks via the Save menu. Dropping a Multi or Arrangement onto&lt;br /&gt;
a Part Button prompts for confirmation since the target&lt;br /&gt;
affects more than just that part.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Osirus:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;[New] BUG-10194 Master Tune is now exposed as a public parameter,&lt;br /&gt;
bipolar (signed, +/-64 cents). Available for host automation&lt;/li&gt;
&lt;li&gt;[New] BUG-10184 Patch Manager now supports Multi and Arrangement&lt;br /&gt;
patches alongside Singles. Multi, Arrangement (Multi + 16&lt;br /&gt;
Singles) and Single dumps are detected automatically on file&lt;br /&gt;
import and tagged via the new "Type" category. Arrangement&lt;br /&gt;
loading from Patch Manager switches to Multi mode, applies&lt;br /&gt;
the multi and distributes the 16 referenced Singles into the&lt;br /&gt;
parts. A new "ROM Arrangements" data source exposes factory&lt;br /&gt;
arrangements from Osirus (ABC) ROMs (not available for&lt;br /&gt;
OsTIrus TI ROMs). Arrangements can also be saved to user&lt;br /&gt;
banks via the Save menu. Dropping a Multi or Arrangement onto&lt;br /&gt;
a Part Button prompts for confirmation since the target&lt;br /&gt;
affects more than just that part.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Vavra:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;[Fix] BUG-10172 Voice Expansion: fix audio dropouts and short CPU&lt;br /&gt;
stalls, especially noticeable at small buffer sizes&lt;/li&gt;
&lt;li&gt;[Fix] Fix possible crash during shutdown&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Xenia:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;[Fix] Voice Expansion: lower UC-thread latency, reducing audio&lt;br /&gt;
glitches at small buffer sizes (shared fix with Vavra)&lt;/li&gt;
&lt;/ul&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>gearmulator</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>rncbc.org - a.k.a. Rui Nuno Capela - qpwgraph v1.0.2 - A Mid-Spring'26 Release</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-05-23:2908 at https://www.rncbc.org/drupal</ns0:id>
    <ns0:updated>2026-05-23T17:00:00Z</ns0:updated>
    <ns0:published>2026-05-23T17:00:00Z</ns0:published>
    <ns0:link rel="alternate" href="https://www.rncbc.org/drupal/node/2908" type="text/html"/>
    <ns0:summary type="html">&lt;span class="field field--name-title field--type-string field--label-hidden"&gt;qpwgraph v1.0.2 - A Mid-Spring'26 Release&lt;/span&gt;

            &lt;div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"&gt;&lt;p&gt;&lt;a href="https://gitlab.freedesktop.org/rncbc/qpwgraph" name="qpwgraph"&gt;&lt;img align="left" hspace="4" src="https://www.rncbc.org/drupal/files/qpwgraph.png" title="qpwgraph" vspace="4" /&gt;&lt;/a&gt;&lt;a href="https://gitlab.freedesktop.org/rncbc/qpwgraph"&gt;&lt;img align="right" hspace="8" src="https://www.rncbc.org/drupal/files/qpwgraph_thumbnail-4.png" title="qpwgraph" vspace="4" /&gt;&lt;/a&gt;Hello everybody,&lt;/p&gt;
&lt;dd&gt;
  &lt;b&gt;&lt;a href="https://gitlab.freedesktop.org/rncbc/qpwgraph"&gt;qpwgraph&lt;/a&gt; v1.0.2&lt;/b&gt; (&lt;i&gt;mid-spring'26&lt;/i&gt;) is out!
&lt;/dd&gt;
&lt;p&gt;Change-log:
&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;PipeWire node and port IDs are now shown on hovering tooltips.&lt;/li&gt;
&lt;li&gt;Make sure thumb-view widget background is filled/opaque (ie. not transparent)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Description:
&lt;/p&gt;&lt;dd&gt;
&lt;b&gt;qpwgraph&lt;/b&gt; is a graph manager dedicated to &lt;a href="https://pipewire.org"&gt;PipeWire&lt;/a&gt;, using the &lt;a href="https://qt.io"&gt;Qt C++ framework&lt;/a&gt;, based and pretty much like the same of &lt;a href="https://qjackctl.sourceforge.io"&gt;QjackCtl&lt;/a&gt;.
&lt;/dd&gt;
&lt;p&gt;Project page:
&lt;/p&gt;&lt;dd&gt;
  &lt;a href="https://gitlab.freedesktop.org/rncbc/qpwgraph"&gt;https://gitlab.freedesktop.org/rncbc/qpwgraph&lt;/a&gt;
&lt;/dd&gt;
&lt;p&gt;Downloads:
&lt;/p&gt;&lt;dd&gt;
&lt;ul&gt;
&lt;li&gt;source tarball:&lt;br /&gt;
  &lt;a href="https://www.rncbc.org/archive/qpwgraph-1.0.2.tar.gz"&gt;&lt;b&gt;qpwgraph-1.0.2.tar.gz&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;
  &lt;a href="https://www.rncbc.org/archive/qpwgraph-1.0.2.tar.gz.sig"&gt;qpwgraph-1.0.2.tar.gz.sig&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;source package (openSUSE Tumbleweed):&lt;br /&gt;
  &lt;a href="https://www.rncbc.org/archive/qpwgraph-1.0.2-3.1.src.rpm"&gt;qpwgraph-1.0.2-3.1.src.rpm&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;binary package (openSUSE Tumbleweed):&lt;br /&gt;
  &lt;a href="https://www.rncbc.org/archive/qpwgraph-1.0.2-3.1.x86_64.rpm"&gt;qpwgraph-1.0.2-3.1.x86_64.rpm&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://flatpak.org/"&gt;Flatpak&lt;/a&gt; package:&lt;br /&gt;
  &lt;a href="https://flathub.org/apps/details/org.rncbc.qpwgraph"&gt;https://flathub.org/apps/details/org.rncbc.qpwgraph&lt;/a&gt;&lt;/li&gt;
&lt;p&gt;&lt;/p&gt;
&lt;li&gt;&lt;a href="https://build.opensuse.org/"&gt;OBS&lt;/a&gt; packages (&lt;a href="https://www.rncbc.org/drupal/page/repos"&gt;repos&lt;/a&gt;):&lt;br /&gt;
  &lt;a href="https://software.opensuse.org//download.html?project=home:rncbc&amp;amp;package=qpwgraph"&gt;&lt;img alt="build result" src="https://build.opensuse.org/projects/home:rncbc/packages/qpwgraph/badge.svg?type=default" /&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/dd&gt;
&lt;p&gt;Git repos:
&lt;/p&gt;&lt;dd&gt;
  &lt;a href="https://gitlab.freedesktop.org/rncbc/qpwgraph.git"&gt;https://gitlab.freedesktop.org/rncbc/qpwgraph.git&lt;/a&gt; (official)&lt;br /&gt;
  &lt;a href="https://github.com/rncbc/qpwgraph.git"&gt;https://github.com/rncbc/qpwgraph.git&lt;/a&gt;&lt;br /&gt;
  &lt;a href="https://gitlab.com/rncbc/qpwgraph.git"&gt;https://gitlab.com/rncbc/qpwgraph.git&lt;/a&gt;&lt;br /&gt;
  &lt;a href="https://codeberg.org/rncbc/qpwgraph.git"&gt;https://codeberg.org/rncbc/qpwgraph.git&lt;/a&gt;
&lt;/dd&gt;
&lt;p&gt;License:
&lt;/p&gt;&lt;dd&gt;
  &lt;a href="https://gitlab.freedesktop.org/rncbc/qpwgraph"&gt;qpwgraph&lt;/a&gt; is free, open-source software, distributed under the terms of the GNU General Public License (&lt;a href="https://www.gnu.org/copyleft/gpl.html"&gt;GPL&lt;/a&gt;) version 2 or later.
&lt;/dd&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;
&lt;p&gt;&lt;!--rncbc.org donate buttons--&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="https://paypal.me/rncbc" target="_blank"&gt;&lt;img alt="Donate to rncbc.org using PayPal" border="0" src="https://www.rncbc.org/drupal/files/donate1.png" title="Donate to rncbc.org using PayPal" /&gt;&lt;/a&gt; &lt;a href="https://liberapay.com/rncbc/donate" target="_blank"&gt;&lt;img alt="Donate to rncbc.org using Liberapay" border="0" height="22" src="https://liberapay.com/assets/widgets/donate.svg" title="Donate to rncbc.org using Liberapay" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;!--break--&gt;&lt;/div&gt;
      &lt;span class="field field--name-uid field--type-entity-reference field--label-hidden"&gt;&lt;span&gt;rncbc&lt;/span&gt;&lt;/span&gt;
&lt;span class="field field--name-created field--type-created field--label-hidden"&gt;&lt;time class="datetime" datetime="2026-05-23T17:00:00+00:00" title="Saturday, 23 May 2026 - 17:00"&gt;Sat, 23 May 2026 - 17:00&lt;/time&gt;
&lt;/span&gt;
&lt;section class="field field--name-comment-node-blog field--type-comment field--label-hidden comment-wrapper"&gt;
  
  

      &lt;h2 class="title comment-form__title"&gt;Add new comment&lt;/h2&gt;
    
  
&lt;/section&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>rncbc.org - a.k.a. Rui Nuno Capela</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>OwlPlug 1.33.1</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-05-23:tag:github.com,2008:Repository/116010727/1.33.1</ns0:id>
    <ns0:updated>2026-05-23T15:14:04Z</ns0:updated>
    <ns0:published>2026-05-23T15:14:04Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/DropSnorz/OwlPlug/releases/tag/1.33.1" type="text/html"/>
    <ns0:summary type="html">&lt;h2&gt;What's Changed&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Native loader timeout is now configurable from the Options pane in &lt;a class="issue-link js-issue-link" href="https://github.com/DropSnorz/OwlPlug/pull/478"&gt;#478&lt;/a&gt; (closes &lt;a class="issue-link js-issue-link" href="https://github.com/DropSnorz/OwlPlug/issues/477"&gt;#477&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Plugin view now reports errors encountered during native scans in &lt;a class="issue-link js-issue-link" href="https://github.com/DropSnorz/OwlPlug/pull/478"&gt;#478&lt;/a&gt; (closes &lt;a class="issue-link js-issue-link" href="https://github.com/DropSnorz/OwlPlug/issues/477"&gt;#477&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Fixed thread leak causing the app to hang on exit after scanning in &lt;a class="issue-link js-issue-link" href="https://github.com/DropSnorz/OwlPlug/pull/478"&gt;#478&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Fixed component filtering for plugin tree and flat list views in &lt;a class="issue-link js-issue-link" href="https://github.com/DropSnorz/OwlPlug/pull/478"&gt;#478&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Fixed plugin components not rendering correctly in table view in &lt;a class="issue-link js-issue-link" href="https://github.com/DropSnorz/OwlPlug/pull/478"&gt;#478&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Full Changelog&lt;/strong&gt;: &lt;a class="commit-link" href="https://github.com/DropSnorz/OwlPlug/compare/1.33.0...1.33.1"&gt;&lt;tt&gt;1.33.0...1.33.1&lt;/tt&gt;&lt;/a&gt;&lt;/p&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>OwlPlug</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>waveform-playlist - Spectrogram viewport-ready event dedup</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-05-23:tag:github.com,2008:Repository/8150190/spectrogram-viewport-ready-dedup</ns0:id>
    <ns0:updated>2026-05-23T06:22:23Z</ns0:updated>
    <ns0:published>2026-05-23T06:22:23Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/naomiaro/waveform-playlist/releases/tag/spectrogram-viewport-ready-dedup" type="text/html"/>
    <ns0:summary type="html">&lt;h2&gt;What's fixed&lt;/h2&gt;
&lt;p&gt;Spectrogram &lt;code&gt;daw-spectrogram-ready&lt;/code&gt; events were firing far more often than they should — ascending counts during initial track loading and an extra N events on every Play/Stop click. Two overlapping causes, both addressed defense-in-depth:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;&amp;lt;daw-editor&amp;gt;.updated()&lt;/code&gt;&lt;/strong&gt; runs on every reactive state change (&lt;code&gt;_isPlaying&lt;/code&gt;, &lt;code&gt;_engineTracks&lt;/code&gt;, &lt;code&gt;_selectedTrackId&lt;/code&gt;, …) and unconditionally called &lt;code&gt;_spectrogramController.setViewport(...)&lt;/code&gt; — even when &lt;code&gt;(vs, ve, samplesPerPixel)&lt;/code&gt; were unchanged. Every call bumped the orchestrator's generation, aborted in-flight FFT work, and triggered a render that re-emitted &lt;code&gt;daw-spectrogram-ready&lt;/code&gt; per track.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;SpectrogramOrchestrator.runRender&lt;/code&gt;&lt;/strong&gt; dispatched &lt;code&gt;viewport-ready&lt;/code&gt; for every track in the canvas map on every render. Late &lt;code&gt;registerCanvas&lt;/code&gt; calls during track-by-track loading each scheduled a fresh render, each of which re-emitted for every already-loaded track.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Behavior (3 spectrogram tracks)&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Action&lt;/th&gt;
&lt;th&gt;Before&lt;/th&gt;
&lt;th&gt;After&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Initial load&lt;/td&gt;
&lt;td&gt;10 (ascending)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;3&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Play&lt;/td&gt;
&lt;td&gt;+3&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Stop&lt;/td&gt;
&lt;td&gt;+3&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Color-map change&lt;/td&gt;
&lt;td&gt;+3&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;3&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;Changes&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;@dawcore/spectrogram@0.0.2&lt;/code&gt;&lt;/strong&gt; — Orchestrator dedupes &lt;code&gt;viewport-ready&lt;/code&gt; per &lt;code&gt;(generation, trackId)&lt;/code&gt; (cleared on every generation bump from &lt;code&gt;setViewport&lt;/code&gt; / &lt;code&gt;setConfig&lt;/code&gt; / &lt;code&gt;setColorMap&lt;/code&gt;). &lt;code&gt;setViewport&lt;/code&gt; also short-circuits when called with deep-equal state (no generation bump, no pool abort, no render). Pure internal change — no API surface diff.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;@dawcore/components@0.0.18&lt;/code&gt;&lt;/strong&gt; — &lt;code&gt;&amp;lt;daw-editor&amp;gt;.updated()&lt;/code&gt; caches the last forwarded &lt;code&gt;ViewportState&lt;/code&gt; and skips the controller call entirely when nothing changed.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;@waveform-playlist/spectrogram@13.0.1&lt;/code&gt;&lt;/strong&gt; — Manifest-only republish so the published dep pin updates from &lt;code&gt;@dawcore/spectrogram@0.0.1&lt;/code&gt; to &lt;code&gt;0.0.2&lt;/code&gt;. Without this, React Provider users would stay on the buggy version (pnpm rewrites &lt;code&gt;workspace:*&lt;/code&gt; to the exact current version at publish time, and zerover semver treats &lt;code&gt;^0.0.1&lt;/code&gt; as &lt;code&gt;&amp;gt;=0.0.1 &amp;lt;0.0.2&lt;/code&gt; — neither propagates patch fixes automatically).&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Demo polish&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;examples/dawcore-native/spectrogram.html&lt;/code&gt; and &lt;code&gt;examples/dawcore-tone/spectrogram.html&lt;/code&gt; now log both &lt;code&gt;daw-track-ready&lt;/code&gt; (green) and &lt;code&gt;daw-spectrogram-ready&lt;/code&gt; (red) so it's obvious which event corresponds to which pipeline (peaks vs FFT) and so waveform-only tracks like the Bass are visible in the log too.&lt;/p&gt;
&lt;h3&gt;Pull requests&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="issue-link js-issue-link" href="https://github.com/naomiaro/waveform-playlist/pull/390"&gt;#390&lt;/a&gt; — &lt;code&gt;fix(spectrogram): dedup viewport-ready events per (generation, trackId)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="issue-link js-issue-link" href="https://github.com/naomiaro/waveform-playlist/pull/391"&gt;#391&lt;/a&gt; — &lt;code&gt;docs(readme): list @dawcore/spectrogram package + new dawcore example pages&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;f6acc12f&lt;/code&gt; — &lt;code&gt;chore: version bumps for spectrogram viewport-ready dedup release&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>waveform-playlist</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>waveform-playlist - Spectrogram Render-Mode for dawcore + Framework Split</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-05-23:tag:github.com,2008:Repository/8150190/dawcore-spectrogram</ns0:id>
    <ns0:updated>2026-05-23T02:11:00Z</ns0:updated>
    <ns0:published>2026-05-23T02:11:00Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/naomiaro/waveform-playlist/releases/tag/dawcore-spectrogram" type="text/html"/>
    <ns0:summary type="html">&lt;h2&gt;What's new&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;&amp;lt;daw-track render-mode="spectrogram"&amp;gt;&lt;/code&gt; now renders a per-channel FFT spectrogram inside &lt;code&gt;&amp;lt;daw-editor&amp;gt;&lt;/code&gt;. Computation, Web Worker, and a framework-agnostic &lt;code&gt;SpectrogramOrchestrator&lt;/code&gt; live in the new &lt;code&gt;@dawcore/spectrogram&lt;/code&gt; package — shared between the dawcore Lit element layer and the existing React Provider.&lt;/p&gt;
&lt;h3&gt;New packages&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;@dawcore/spectrogram@0.0.1&lt;/code&gt;&lt;/strong&gt; — framework-agnostic FFT computation, worker, and &lt;code&gt;SpectrogramOrchestrator&lt;/code&gt; class. Viewport classification, 3-tier render (viewport / buffer / remaining), generation-based abort, contiguous chunk grouping, color LUT cache.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;dawcore (&lt;code&gt;@dawcore/components@0.0.17&lt;/code&gt;)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;TrackRenderMode&lt;/code&gt; extended with &lt;code&gt;'spectrogram'&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;daw-spectrogram&amp;gt;&lt;/code&gt; element (Shadow DOM, chunked OffscreenCanvas)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;SpectrogramController&lt;/code&gt; — lazy reactive controller; builds the orchestrator on first canvas registration, disposes when no spectrogram tracks remain&lt;/li&gt;
&lt;li&gt;&lt;code&gt;editor.spectrogramConfig&lt;/code&gt; + &lt;code&gt;editor.spectrogramColorMap&lt;/code&gt; + &lt;code&gt;&amp;lt;daw-track&amp;gt;.spectrogramConfig&lt;/code&gt; properties&lt;/li&gt;
&lt;li&gt;&lt;code&gt;daw-spectrogram-ready&lt;/code&gt; event (&lt;code&gt;DawEventMap['daw-spectrogram-ready']&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight highlight-text-html-basic notranslate position-relative overflow-auto"&gt;&lt;pre&gt;&lt;span class="pl-kos"&gt;&amp;lt;&lt;/span&gt;&lt;span class="pl-ent"&gt;daw-editor&lt;/span&gt; &lt;span class="pl-c1"&gt;id&lt;/span&gt;="&lt;span class="pl-s"&gt;editor&lt;/span&gt;"&lt;span class="pl-kos"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="pl-kos"&gt;&amp;lt;&lt;/span&gt;&lt;span class="pl-ent"&gt;daw-track&lt;/span&gt; &lt;span class="pl-c1"&gt;src&lt;/span&gt;="&lt;span class="pl-s"&gt;kick.opus&lt;/span&gt;" &lt;span class="pl-c1"&gt;render-mode&lt;/span&gt;="&lt;span class="pl-s"&gt;spectrogram&lt;/span&gt;"&lt;span class="pl-kos"&gt;&amp;gt;&lt;/span&gt;&lt;span class="pl-kos"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="pl-ent"&gt;daw-track&lt;/span&gt;&lt;span class="pl-kos"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="pl-kos"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="pl-ent"&gt;daw-editor&lt;/span&gt;&lt;span class="pl-kos"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="pl-kos"&gt;&amp;lt;&lt;/span&gt;&lt;span class="pl-ent"&gt;script&lt;/span&gt; &lt;span class="pl-c1"&gt;type&lt;/span&gt;="&lt;span class="pl-s"&gt;module&lt;/span&gt;"&lt;span class="pl-kos"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="pl-k"&gt;import&lt;/span&gt; &lt;span class="pl-s"&gt;'@dawcore/components'&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
  &lt;span class="pl-k"&gt;import&lt;/span&gt; &lt;span class="pl-kos"&gt;{&lt;/span&gt; &lt;span class="pl-v"&gt;NativePlayoutAdapter&lt;/span&gt; &lt;span class="pl-kos"&gt;}&lt;/span&gt; &lt;span class="pl-k"&gt;from&lt;/span&gt; &lt;span class="pl-s"&gt;'@dawcore/transport'&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
  &lt;span class="pl-k"&gt;const&lt;/span&gt; &lt;span class="pl-s1"&gt;editor&lt;/span&gt; &lt;span class="pl-c1"&gt;=&lt;/span&gt; &lt;span class="pl-smi"&gt;document&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-en"&gt;getElementById&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-s"&gt;'editor'&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
  &lt;span class="pl-s1"&gt;editor&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-c1"&gt;adapter&lt;/span&gt; &lt;span class="pl-c1"&gt;=&lt;/span&gt; &lt;span class="pl-k"&gt;new&lt;/span&gt; &lt;span class="pl-v"&gt;NativePlayoutAdapter&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-k"&gt;new&lt;/span&gt; &lt;span class="pl-v"&gt;AudioContext&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
  &lt;span class="pl-s1"&gt;editor&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-c1"&gt;spectrogramConfig&lt;/span&gt; &lt;span class="pl-c1"&gt;=&lt;/span&gt; &lt;span class="pl-kos"&gt;{&lt;/span&gt; &lt;span class="pl-c1"&gt;fftSize&lt;/span&gt;: &lt;span class="pl-c1"&gt;2048&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt; &lt;span class="pl-c1"&gt;frequencyScale&lt;/span&gt;: &lt;span class="pl-s"&gt;'mel'&lt;/span&gt; &lt;span class="pl-kos"&gt;}&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
  &lt;span class="pl-s1"&gt;editor&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-c1"&gt;spectrogramColorMap&lt;/span&gt; &lt;span class="pl-c1"&gt;=&lt;/span&gt; &lt;span class="pl-s"&gt;'magma'&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
&lt;span class="pl-kos"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="pl-ent"&gt;script&lt;/span&gt;&lt;span class="pl-kos"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Two new demos: &lt;code&gt;examples/dawcore-native/spectrogram.html&lt;/code&gt; and &lt;code&gt;examples/dawcore-tone/spectrogram.html&lt;/code&gt;.&lt;/p&gt;
&lt;h3&gt;React (&lt;code&gt;@waveform-playlist/spectrogram@13.0.0&lt;/code&gt; — major)&lt;/h3&gt;
&lt;p&gt;Slimmed to React Provider + UI only. &lt;strong&gt;Breaking:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Removed package-root re-exports of computation/worker symbols. Import from &lt;code&gt;@dawcore/spectrogram&lt;/code&gt; directly.&lt;/li&gt;
&lt;li&gt;Removed &lt;code&gt;./worker/spectrogram.worker&lt;/code&gt; subpath. Use &lt;code&gt;new URL('@dawcore/spectrogram/worker/spectrogram.worker', import.meta.url)&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;SpectrogramIntegration&lt;/code&gt; reshaped: &lt;code&gt;spectrogramWorkerApi&lt;/code&gt; + &lt;code&gt;registerSpectrogramCanvases&lt;/code&gt;/&lt;code&gt;unregisterSpectrogramCanvases&lt;/code&gt; (batched per channel) → &lt;code&gt;registerSpectrogramCanvas&lt;/code&gt; / &lt;code&gt;unregisterSpectrogramCanvas&lt;/code&gt; (one call per canvas, carries canvas + metadata together).&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Browser (&lt;code&gt;@waveform-playlist/browser@13.0.0&lt;/code&gt; — major) + UI Components (&lt;code&gt;@waveform-playlist/ui-components@13.0.0&lt;/code&gt; — major)&lt;/h3&gt;
&lt;p&gt;Cascading from the context API reshape:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;New type &lt;code&gt;SpectrogramCanvasRegistration&lt;/code&gt; exported from &lt;code&gt;@waveform-playlist/browser&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;SmartChannel&lt;/code&gt; / &lt;code&gt;SpectrogramChannel&lt;/code&gt; props rename: &lt;code&gt;spectrogramWorkerApi&lt;/code&gt; + &lt;code&gt;spectrogramOnCanvasesReady&lt;/code&gt; → &lt;code&gt;spectrogramOnCanvasRegister&lt;/code&gt; + &lt;code&gt;spectrogramOnCanvasUnregister&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Migration&lt;/h3&gt;
&lt;p&gt;External consumers of &lt;code&gt;@waveform-playlist/spectrogram&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight highlight-source-ts notranslate position-relative overflow-auto"&gt;&lt;pre&gt;&lt;span class="pl-c"&gt;// Before&lt;/span&gt;
&lt;span class="pl-k"&gt;import&lt;/span&gt; &lt;span class="pl-kos"&gt;{&lt;/span&gt; &lt;span class="pl-s1"&gt;computeSpectrogram&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt; &lt;span class="pl-s1"&gt;getColorMap&lt;/span&gt; &lt;span class="pl-kos"&gt;}&lt;/span&gt; &lt;span class="pl-k"&gt;from&lt;/span&gt; &lt;span class="pl-s"&gt;'@waveform-playlist/spectrogram'&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
&lt;span class="pl-k"&gt;new&lt;/span&gt; &lt;span class="pl-v"&gt;Worker&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-k"&gt;new&lt;/span&gt; &lt;span class="pl-c1"&gt;URL&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-s"&gt;'@waveform-playlist/spectrogram/worker/spectrogram.worker'&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt; &lt;span class="pl-k"&gt;import&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;meta&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-c1"&gt;url&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;

&lt;span class="pl-c"&gt;// After&lt;/span&gt;
&lt;span class="pl-k"&gt;import&lt;/span&gt; &lt;span class="pl-kos"&gt;{&lt;/span&gt; &lt;span class="pl-s1"&gt;computeSpectrogram&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt; &lt;span class="pl-s1"&gt;getColorMap&lt;/span&gt; &lt;span class="pl-kos"&gt;}&lt;/span&gt; &lt;span class="pl-k"&gt;from&lt;/span&gt; &lt;span class="pl-s"&gt;'@dawcore/spectrogram'&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
&lt;span class="pl-k"&gt;new&lt;/span&gt; &lt;span class="pl-v"&gt;Worker&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-k"&gt;new&lt;/span&gt; &lt;span class="pl-c1"&gt;URL&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-s"&gt;'@dawcore/spectrogram/worker/spectrogram.worker'&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt; &lt;span class="pl-k"&gt;import&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;meta&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-c1"&gt;url&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;External consumers of &lt;code&gt;SpectrogramIntegration&lt;/code&gt; (uncommon — most use the Provider directly):&lt;/p&gt;
&lt;div class="highlight highlight-source-ts notranslate position-relative overflow-auto"&gt;&lt;pre&gt;&lt;span class="pl-c"&gt;// Before&lt;/span&gt;
&lt;span class="pl-s1"&gt;spectrogram&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-c1"&gt;spectrogramWorkerApi&lt;/span&gt;&lt;span class="pl-kos"&gt;?.&lt;/span&gt;&lt;span class="pl-en"&gt;registerCanvas&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-s1"&gt;id&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt; &lt;span class="pl-s1"&gt;canvas&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
&lt;span class="pl-s1"&gt;spectrogram&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-en"&gt;registerSpectrogramCanvases&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-s1"&gt;clipId&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt; &lt;span class="pl-s1"&gt;ch&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt; &lt;span class="pl-s1"&gt;ids&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt; &lt;span class="pl-s1"&gt;widths&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;

&lt;span class="pl-c"&gt;// After&lt;/span&gt;
&lt;span class="pl-s1"&gt;spectrogram&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-en"&gt;registerSpectrogramCanvas&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-kos"&gt;{&lt;/span&gt;
  canvasId&lt;span class="pl-kos"&gt;,&lt;/span&gt; canvas&lt;span class="pl-kos"&gt;,&lt;/span&gt; clipId&lt;span class="pl-kos"&gt;,&lt;/span&gt; channelIndex&lt;span class="pl-kos"&gt;,&lt;/span&gt; chunkIndex&lt;span class="pl-kos"&gt;,&lt;/span&gt; widthPx&lt;span class="pl-kos"&gt;,&lt;/span&gt; heightPx&lt;span class="pl-kos"&gt;,&lt;/span&gt;
&lt;span class="pl-kos"&gt;}&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;The bundled &lt;code&gt;SpectrogramProvider&lt;/code&gt; keeps the same external usage — only internal plumbing changed. React MIR demo unaffected.&lt;/p&gt;
&lt;h2&gt;Testing&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;165 unit tests across &lt;code&gt;@dawcore/spectrogram&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;437 unit tests across &lt;code&gt;@dawcore/components&lt;/code&gt; (incl. new &lt;code&gt;&amp;lt;daw-spectrogram&amp;gt;&lt;/code&gt; + &lt;code&gt;SpectrogramController&lt;/code&gt; suites)&lt;/li&gt;
&lt;li&gt;Playwright e2e for the spectrogram render-mode (&lt;code&gt;e2e/dawcore-spectrogram.spec.ts&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Full PR:&lt;/strong&gt; &lt;a class="issue-link js-issue-link" href="https://github.com/naomiaro/waveform-playlist/pull/387"&gt;#387&lt;/a&gt;&lt;/p&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>waveform-playlist</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>OwlPlug 1.33.0</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-05-21:tag:github.com,2008:Repository/116010727/1.33.0</ns0:id>
    <ns0:updated>2026-05-21T21:14:31Z</ns0:updated>
    <ns0:published>2026-05-21T21:14:31Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/DropSnorz/OwlPlug/releases/tag/1.33.0" type="text/html"/>
    <ns0:summary type="html">&lt;h2&gt;Highlights&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Improve plugin list display performance&lt;/strong&gt; by offloading blocking database and service calls from fx thread in &lt;a class="issue-link js-issue-link" href="https://github.com/DropSnorz/OwlPlug/pull/466"&gt;#466&lt;/a&gt; (closes &lt;a class="issue-link js-issue-link" href="https://github.com/DropSnorz/OwlPlug/issues/454"&gt;#454&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Rework the controller injection pattern and register event publisher for UI subscription. Prepare for &lt;a href="https://github.com/DropSnorz/OwlPlug/issues?q=is%3Aissue%20state%3Aopen%20milestone%3A2.0.0"&gt;2.0.0&lt;/a&gt; in &lt;a class="issue-link js-issue-link" href="https://github.com/DropSnorz/OwlPlug/pull/449"&gt;#449&lt;/a&gt; and &lt;a class="issue-link js-issue-link" href="https://github.com/DropSnorz/OwlPlug/pull/464"&gt;#464&lt;/a&gt; (closes &lt;a class="issue-link js-issue-link" href="https://github.com/DropSnorz/OwlPlug/issues/437"&gt;#437&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Misc and Bugfixes&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Open browser with xdg-open if the desktop action is not supported by &lt;a class="user-mention notranslate" href="https://github.com/Fricofresh"&gt;@Fricofresh&lt;/a&gt; in &lt;a class="issue-link js-issue-link" href="https://github.com/DropSnorz/OwlPlug/pull/460"&gt;#460&lt;/a&gt; (closes &lt;a class="issue-link js-issue-link" href="https://github.com/DropSnorz/OwlPlug/issues/453"&gt;#453&lt;/a&gt;, &lt;a class="issue-link js-issue-link" href="https://github.com/DropSnorz/OwlPlug/issues/330"&gt;#330&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Improve crash report display in &lt;a class="issue-link js-issue-link" href="https://github.com/DropSnorz/OwlPlug/pull/462"&gt;#462&lt;/a&gt; (closes &lt;a class="issue-link js-issue-link" href="https://github.com/DropSnorz/OwlPlug/issues/456"&gt;#456&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Avoid null pointer while extracting plist root dictionary in &lt;a class="issue-link js-issue-link" href="https://github.com/DropSnorz/OwlPlug/pull/463"&gt;#463&lt;/a&gt; (closes &lt;a class="issue-link js-issue-link" href="https://github.com/DropSnorz/OwlPlug/issues/458"&gt;#458&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Default exception handlers for deferred database calls in &lt;a class="issue-link js-issue-link" href="https://github.com/DropSnorz/OwlPlug/pull/469"&gt;#469&lt;/a&gt; (closes &lt;a class="issue-link js-issue-link" href="https://github.com/DropSnorz/OwlPlug/issues/467"&gt;#467&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Fix owlplug scanner packaging on windows builds in &lt;a class="issue-link js-issue-link" href="https://github.com/DropSnorz/OwlPlug/pull/473"&gt;#473&lt;/a&gt; (closes &lt;a class="issue-link js-issue-link" href="https://github.com/DropSnorz/OwlPlug/issues/471"&gt;#471&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Skip invalid daw projects during the scan in &lt;a class="issue-link js-issue-link" href="https://github.com/DropSnorz/OwlPlug/pull/474"&gt;#474&lt;/a&gt; (closes &lt;a class="issue-link js-issue-link" href="https://github.com/DropSnorz/OwlPlug/issues/472"&gt;#472&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Update max length for symlinks and file stats entities in &lt;a class="issue-link js-issue-link" href="https://github.com/DropSnorz/OwlPlug/pull/465"&gt;#465&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Run system file and browser opening asynchronously in &lt;a class="issue-link js-issue-link" href="https://github.com/DropSnorz/OwlPlug/pull/475"&gt;#475&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Dependencies&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;build(deps): bump softprops/action-gh-release from 2.5.0 to 3.0.0 in &lt;a class="issue-link js-issue-link" href="https://github.com/DropSnorz/OwlPlug/pull/457"&gt;#457&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;build(deps): bump actions/upload-artifact from 6 to 7 in &lt;a class="issue-link js-issue-link" href="https://github.com/DropSnorz/OwlPlug/pull/444"&gt;#444&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;build(deps): bump actions/download-artifact from 7 to 8 in &lt;a class="issue-link js-issue-link" href="https://github.com/DropSnorz/OwlPlug/pull/443"&gt;#443&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;New Contributors&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="user-mention notranslate" href="https://github.com/Fricofresh"&gt;@Fricofresh&lt;/a&gt; made their first contribution in &lt;a class="issue-link js-issue-link" href="https://github.com/DropSnorz/OwlPlug/pull/460"&gt;#460&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Full Changelog&lt;/strong&gt;: &lt;a class="commit-link" href="https://github.com/DropSnorz/OwlPlug/compare/1.32.0...1.33.0"&gt;&lt;tt&gt;1.32.0...1.33.0&lt;/tt&gt;&lt;/a&gt;&lt;/p&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>OwlPlug</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>fooyin - v0.10.8</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-05-20:tag:github.com,2008:Repository/505401707/v0.10.8</ns0:id>
    <ns0:updated>2026-05-20T23:04:40Z</ns0:updated>
    <ns0:published>2026-05-20T23:04:40Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/fooyin/fooyin/releases/tag/v0.10.8" type="text/html"/>
    <ns0:summary type="html">&lt;p&gt;Update to 0.10.8&lt;/p&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>fooyin</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>BeatCrafter v9</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-05-20:tag:github.com,2008:Repository/1034919369/v9</ns0:id>
    <ns0:updated>2026-05-20T16:01:26Z</ns0:updated>
    <ns0:published>2026-05-20T16:01:26Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/innermost47/beatcrafter/releases/tag/v9" type="text/html"/>
    <ns0:summary type="html">&lt;h1&gt;🥁 BeatCrafter v9&lt;/h1&gt;
&lt;p&gt;Free live performance VST drum generator. No AI, no subscription, no nonsense.&lt;/p&gt;
&lt;h2&gt;📥 Installation&lt;/h2&gt;
&lt;h3&gt;🪟 Windows&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Download &lt;code&gt;BeatCrafter-Windows-VST3.zip&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Extract to &lt;code&gt;C:\Program Files\Common Files\VST3\&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Rescan plugins in your DAW&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;🐧 Linux&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Download &lt;code&gt;BeatCrafter-Linux-VST3.tar.gz&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Extract to &lt;code&gt;~/.vst3/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Rescan plugins in your DAW&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;🍎 macOS&lt;/h3&gt;
&lt;p&gt;macOS build coming soon.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;🎛️ How it works&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;8 style slots&lt;/strong&gt; — Rock, Metal, Jazz, Funk, Electronic, Hip Hop, Latin, Punk&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Intensity&lt;/strong&gt; — shapes groove density in real time, from skeleton to full arrangement&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Chaos&lt;/strong&gt; — injects ghost notes, fills and random hits that grow wilder as it climbs&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Full MIDI learn&lt;/strong&gt; — map everything to your foot controller or fader&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Works headless&lt;/strong&gt; — no GUI needed during performance&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2&gt;🔗 Resources&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;💬 &lt;a href="/innermost47/beatcrafter/discussions"&gt;Discussions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;🐛 &lt;a href="/innermost47/beatcrafter/issues"&gt;Issues&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;⭐ Star the repo if BeatCrafter is useful to you!&lt;/li&gt;
&lt;/ul&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>beatcrafter</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>BeatCrafter v8</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-05-20:tag:github.com,2008:Repository/1034919369/v8</ns0:id>
    <ns0:updated>2026-05-20T15:49:16Z</ns0:updated>
    <ns0:published>2026-05-20T15:49:16Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/innermost47/beatcrafter/releases/tag/v8" type="text/html"/>
    <ns0:summary type="html">&lt;h1&gt;🥁 BeatCrafter v8&lt;/h1&gt;
&lt;p&gt;Free live performance VST drum generator. No AI, no subscription, no nonsense.&lt;/p&gt;
&lt;h2&gt;📥 Installation&lt;/h2&gt;
&lt;h3&gt;🪟 Windows&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Download &lt;code&gt;BeatCrafter-Windows-VST3.zip&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Extract to &lt;code&gt;C:\Program Files\Common Files\VST3\&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Rescan plugins in your DAW&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;🐧 Linux&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Download &lt;code&gt;BeatCrafter-Linux-VST3.tar.gz&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Extract to &lt;code&gt;~/.vst3/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Rescan plugins in your DAW&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;🍎 macOS&lt;/h3&gt;
&lt;p&gt;macOS build coming soon.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;🎛️ How it works&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;8 style slots&lt;/strong&gt; — Rock, Metal, Jazz, Funk, Electronic, Hip Hop, Latin, Punk&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Intensity&lt;/strong&gt; — shapes groove density in real time, from skeleton to full arrangement&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Chaos&lt;/strong&gt; — injects ghost notes, fills and random hits that grow wilder as it climbs&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Full MIDI learn&lt;/strong&gt; — map everything to your foot controller or fader&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Works headless&lt;/strong&gt; — no GUI needed during performance&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2&gt;🔗 Resources&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;💬 &lt;a href="/innermost47/beatcrafter/discussions"&gt;Discussions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;🐛 &lt;a href="/innermost47/beatcrafter/issues"&gt;Issues&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;⭐ Star the repo if BeatCrafter is useful to you!&lt;/li&gt;
&lt;/ul&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>beatcrafter</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>BeatCrafter v7</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-05-20:tag:github.com,2008:Repository/1034919369/v7</ns0:id>
    <ns0:updated>2026-05-20T14:34:00Z</ns0:updated>
    <ns0:published>2026-05-20T14:34:00Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/innermost47/beatcrafter/releases/tag/v7" type="text/html"/>
    <ns0:summary type="html">&lt;h1&gt;🥁 BeatCrafter v7&lt;/h1&gt;
&lt;p&gt;Free live performance VST drum generator. No AI, no subscription, no nonsense.&lt;/p&gt;
&lt;h2&gt;📥 Installation&lt;/h2&gt;
&lt;h3&gt;🪟 Windows&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Download &lt;code&gt;BeatCrafter-Windows-VST3.zip&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Extract to &lt;code&gt;C:\Program Files\Common Files\VST3\&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Rescan plugins in your DAW&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;🐧 Linux&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Download &lt;code&gt;BeatCrafter-Linux-VST3.tar.gz&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Extract to &lt;code&gt;~/.vst3/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Rescan plugins in your DAW&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;🍎 macOS&lt;/h3&gt;
&lt;p&gt;macOS build coming soon.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;🎛️ How it works&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;8 style slots&lt;/strong&gt; — Rock, Metal, Jazz, Funk, Electronic, Hip Hop, Latin, Punk&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Intensity&lt;/strong&gt; — shapes groove density in real time, from skeleton to full arrangement&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Chaos&lt;/strong&gt; — injects ghost notes, fills and random hits that grow wilder as it climbs&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Full MIDI learn&lt;/strong&gt; — map everything to your foot controller or fader&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Works headless&lt;/strong&gt; — no GUI needed during performance&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2&gt;🔗 Resources&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;💬 &lt;a href="/innermost47/beatcrafter/discussions"&gt;Discussions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;🐛 &lt;a href="/innermost47/beatcrafter/issues"&gt;Issues&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;⭐ Star the repo if BeatCrafter is useful to you!&lt;/li&gt;
&lt;/ul&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>beatcrafter</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>alsa-scarlett-gui - 1.0 beta 9</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-05-20:tag:github.com,2008:Repository/469474871/1.0beta9</ns0:id>
    <ns0:updated>2026-05-20T00:21:24Z</ns0:updated>
    <ns0:published>2026-05-20T00:21:24Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/geoffreybennett/alsa-scarlett-gui/releases/tag/1.0beta9" type="text/html"/>
    <ns0:summary type="html">&lt;p&gt;&lt;strong&gt;Highlights since 0.5:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Configuration window with custom I/O naming, visibility, presets, and stereo linking&lt;/li&gt;
&lt;li&gt;Full DSP window with parametric EQ and compressor (Vocaster)&lt;/li&gt;
&lt;li&gt;Monitor groups and firmware update support (Scarlett Gen 4 16i16, 18i16, 18i20)&lt;/li&gt;
&lt;li&gt;Drag-and-drop stereo linking throughout routing, mixer, and configuration&lt;/li&gt;
&lt;li&gt;Window state persistence, keyboard shortcuts, local configuration storage&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;See &lt;a href="https://github.com/geoffreybennett/alsa-scarlett-gui/blob/1.0beta9/RELEASE-NOTES.md"&gt;RELEASE-NOTES.md&lt;/a&gt; for the full list of changes, known issues, and device support details.&lt;/p&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>alsa-scarlett-gui</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>Home on Libre Arts - ALSA Scarlett GUI 1.0beta9</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-05-20:https://librearts.org/2026/05/alsa-scarlett-gui-1-beta9/</ns0:id>
    <ns0:updated>2026-05-20T00:00:00Z</ns0:updated>
    <ns0:published>2026-05-20T00:00:00Z</ns0:published>
    <ns0:link rel="alternate" href="https://librearts.org/2026/05/alsa-scarlett-gui-1-beta9/" type="text/html"/>
    <ns0:summary type="html">&lt;p&gt;Geoffrey D. Bennett has just released a major update of ALSA Scarlett GUI, a control program for Focusrite&amp;rsquo;s Scarlett, Clarett, and Vocaster audio interfaces.&lt;/p&gt;
&lt;h2 id="dsp-control"&gt;
    &lt;a href="#dsp-control"&gt;
	DSP control
    &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;For Vocaster One and Two, Geoffrey added controls for the built-in DSP that includes a pre-compressor filter, a compressor, and a parametric EQ.&lt;/p&gt;
&lt;p&gt;&lt;img alt="DSP controls" src="alsa-scarlett-gui-vocaster-dsp-controls.webp" /&gt;
&lt;/p&gt;
&lt;p&gt;The controls on the pre-compressor filter and parametric EQ graphs are interactive: you can pick handles and move them around (Q can only be edited numerically though, it seems).&lt;/p&gt;
&lt;p&gt;You can also choose between 12 filter types:&lt;/p&gt;
&lt;p&gt;&lt;img alt="Filter types in DSP controls of ALSA Scarlett GUI" src="alsa-scarlett-gui-vocaster-filter-types.webp" /&gt;
&lt;/p&gt;
&lt;h2 id="configuration"&gt;
    &lt;a href="#configuration"&gt;
	Configuration
    &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;This is another new window where you can toggle the visibility of unused channels, set stereo linking, and give custom names to inputs and outputs.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Configuration window for Vocaster Two in ALSA Scarlett GUI" src="alsa-scarlett-gui-vocaster-configuration.webp" /&gt;
&lt;/p&gt;
&lt;p&gt;In addition, you can set the target level for the Autogain feature.&lt;/p&gt;
&lt;p&gt;For models with larger number of IOs (think Gen4 18i20), this is also where you control monitor groups:&lt;/p&gt;
&lt;p&gt;&lt;img alt="Monitor groups in ALSA Scarlett GUI" src="alsa-scarlett-gui-18i20-monitor-groups.webp" /&gt;
&lt;/p&gt;
&lt;h2 id="routing-window-updates"&gt;
    &lt;a href="#routing-window-updates"&gt;
	Routing window updates
    &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;There have been some improvements here:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Routing lines now display a real-time glow effect that reflects the audio signal level passing through the connection.&lt;/li&gt;
&lt;li&gt;When a routing connection has a hidden port, there&amp;rsquo;s an arrow indicator at the visible end now.&lt;/li&gt;
&lt;li&gt;Adjacent stereo-linked channels are now displayed as a single stereo port.&lt;/li&gt;
&lt;li&gt;On 4th Gen 16i16/18i16/18i20 interfaces with monitor groups configured, the routing window now shows the effective audio routing.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="mixer-window-updates"&gt;
    &lt;a href="#mixer-window-updates"&gt;
	Mixer window updates
    &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;Just like Routing, the Mixer window got its share of UX/UI updates:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Mixer input and output labels now display a real-time horizontal glow bar that reflects the signal level at that port.&lt;/li&gt;
&lt;li&gt;Gain knobs now include a signal level meter inside the dial (except for Gen1 devices that don&amp;rsquo;t support it).&lt;/li&gt;
&lt;li&gt;When channels are stereo-linked, the mixer displays them as a single stereo fader.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="presets"&gt;
    &lt;a href="#presets"&gt;
	Presets
    &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;You can now save and restore presets from the main window.&lt;/p&gt;
&lt;h2 id="firmware-update-changes"&gt;
    &lt;a href="#firmware-update-changes"&gt;
	Firmware update changes
    &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;For the 4gen devices with larger number of IOs, the program now support multi-step firmware upgrade: leapfrog, then ESP, then application.&lt;/p&gt;
&lt;h2 id="device-support"&gt;
    &lt;a href="#device-support"&gt;
	Device support
    &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;The changes mainly affect the &amp;ldquo;big 4gen&amp;rdquo; devices and Vocaster units:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Scarlett Big 4th Gen (16i16, 18i16, 18i20) support now includes hardware identification, monitor groups, input mute, and output volume/mute/dim controls.&lt;/li&gt;
&lt;li&gt;Vocaster interfaces now have dedicated mute controls for speaker and headphone outputs in the main window.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For more detailed info, please see &lt;a href="https://github.com/geoffreybennett/alsa-scarlett-gui/blob/master/RELEASE-NOTES.md" rel="noopener" target="_blank"&gt;release notes&lt;/a&gt;.&lt;/p&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>Home on Libre Arts</ns0:name>
    </ns0:author>
    <ns0:category term="general"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>alsa-scarlett-gui - 1.0 beta 8</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-05-19:tag:github.com,2008:Repository/469474871/1.0beta8</ns0:id>
    <ns0:updated>2026-05-19T19:25:38Z</ns0:updated>
    <ns0:published>2026-05-19T19:25:38Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/geoffreybennett/alsa-scarlett-gui/releases/tag/1.0beta8" type="text/html"/>
    <ns0:summary type="html">&lt;p&gt;First public beta of alsa-scarlett-gui v1.0.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Highlights since 0.5:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Configuration window with custom I/O naming, visibility, presets, and stereo linking&lt;/li&gt;
&lt;li&gt;Full DSP window with parametric EQ and compressor (Vocaster)&lt;/li&gt;
&lt;li&gt;Monitor groups and firmware update support (Scarlett Gen 4 16i16, 18i16, 18i20)&lt;/li&gt;
&lt;li&gt;Drag-and-drop stereo linking throughout routing, mixer, and configuration&lt;/li&gt;
&lt;li&gt;Window state persistence, keyboard shortcuts, local configuration storage&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;See &lt;a href="https://github.com/geoffreybennett/alsa-scarlett-gui/blob/1.0beta8/RELEASE-NOTES.md"&gt;RELEASE-NOTES.md&lt;/a&gt; for the full list of changes, known issues, and device support details.&lt;/p&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>alsa-scarlett-gui</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>Blog - Ardour - Ardour 9.5 released</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-05-19:discourse.ardour.org-topic-113305</ns0:id>
    <ns0:updated>2026-05-19T17:30:10Z</ns0:updated>
    <ns0:published>2026-05-19T17:30:10Z</ns0:published>
    <ns0:link rel="alternate" href="https://discourse.ardour.org/t/ardour-9-5-released/113305" type="text/html"/>
    <ns0:summary type="html">&lt;p&gt;We are pleased to announce the release of Ardour 9.5. The new version comes with new features, quality-of-life improvements, and bugfixes. For this release, we focused on MIDI editing and implemented chord editing and reference (ghost) notes display in pianoroll interfaces.&lt;/p&gt;
&lt;p&gt;For the curious, yes, we did “release” both 9.3 and 9.4 but the binary packages were missing the chord definitions file that is central to one of the major features of this release cycle. Having realized the mistake, we took the opportunity to do a bit more polishing and bug fixing before finally packaging 9.5. Steps have been taken so that anyone who paid for either the 9.3 or 9.4 packages has been marked as paying for 9.5 instead, and their download count reset to zero. If you are such a person and have issues downloading 9.5, contact &lt;a href="mailto:help@ardour.org"&gt;help@ardour.org&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The full release notes are, as usual &lt;a href="https://ardour.org/whatsnew.html"&gt;over here&lt;/a&gt; and you can download this release from &lt;a href="https://ardour.org/download"&gt;the usual place&lt;/a&gt;.&lt;/p&gt;
            &lt;p&gt;&lt;small&gt;4 posts - 4 participants&lt;/small&gt;&lt;/p&gt;
            &lt;p&gt;&lt;a href="https://discourse.ardour.org/t/ardour-9-5-released/113305"&gt;Read full topic&lt;/a&gt;&lt;/p&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>Blog - Ardour</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>xLights - 2026.09 Released</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-05-19:https://xlights.org/?p=4143</ns0:id>
    <ns0:updated>2026-05-19T11:58:51Z</ns0:updated>
    <ns0:published>2026-05-19T11:58:51Z</ns0:published>
    <ns0:link rel="alternate" href="https://xlights.org/2026-09-released/" type="text/html"/>
    <ns0:summary type="html">2026.09 May 9, 2026-enh (dkulp) Controller delete now clears any model&amp;#8217;s &amp;#8220;!ControllerName:…&amp;#8221; start channelso dependent models become unassigned instead of pointing at a missing controller.-enh (scott) Add experimental custom color picker (Preferences &amp;#62; Other) with HSV disc,brightness slider, CSS named-color swatches, recent colors, and hex entry.-enh (cybercop23) &amp;#8220;Paste Effects&amp;#8221; auto-inserts the needed layers when pasting...</ns0:summary>
    <ns0:author>
      <ns0:name>xLights</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>MuseScore Studio 4.7.1 Release</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-05-19:tag:github.com,2008:Repository/4454793/v4.7.1</ns0:id>
    <ns0:updated>2026-05-19T11:36:13Z</ns0:updated>
    <ns0:published>2026-05-19T11:36:13Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/musescore/MuseScore/releases/tag/v4.7.1" type="text/html"/>
    <ns0:summary type="html">&lt;h3&gt;MuseScore Studio 4.7.1 is now available!&lt;/h3&gt;
&lt;p&gt;This update includes critical fixes to improve app stability.&lt;/p&gt;
&lt;p&gt;Learn about all the &lt;a href="https://musescore.org/en/4.7" rel="nofollow"&gt;new features in version 4.7&lt;/a&gt;, including many new engraving tools, significant workflow improvements, helpful new guitar features, and important upgrades to the audio engine.&lt;/p&gt;
&lt;p&gt;For more information, see the &lt;a href="https://github.com/orgs/musescore/projects/113/views/1"&gt;4.7.1 GitHub Project&lt;/a&gt;.&lt;/p&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>MuseScore</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>js80p - v4.0.2</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-05-17:tag:github.com,2008:Repository/597908700/v4.0.2</ns0:id>
    <ns0:updated>2026-05-17T22:22:50Z</ns0:updated>
    <ns0:published>2026-05-17T22:22:50Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/attilammagyar/js80p/releases/tag/v4.0.2" type="text/html"/>
    <ns0:summary type="html">&lt;p&gt;NEWS.txt: prepare v4.0.2&lt;/p&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>js80p</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>jamulus - Release 3.12.1 (r3_12_1)</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-05-17:tag:github.com,2008:Repository/177287710/r3_12_1</ns0:id>
    <ns0:updated>2026-05-17T09:58:15Z</ns0:updated>
    <ns0:published>2026-05-17T09:58:15Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/jamulussoftware/jamulus/releases/tag/r3_12_1" type="text/html"/>
    <ns0:summary type="html">&lt;ul&gt;
&lt;li&gt;Client: Fix occasional spurious version updated message display (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3691"&gt;#3691&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/softins"&gt;@softins&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>jamulus</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>DaisySeedProjects - v1.5.5</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-05-16:tag:github.com,2008:Repository/592029137/v1.5.5</ns0:id>
    <ns0:updated>2026-05-16T16:43:02Z</ns0:updated>
    <ns0:published>2026-05-16T16:43:02Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/bkshepherd/DaisySeedProjects/releases/tag/v1.5.5" type="text/html"/>
    <ns0:summary type="html">&lt;h2&gt;What's Changed&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Crusher module inspired from EHX Mainframe by &lt;a class="user-mention notranslate" href="https://github.com/chattob"&gt;@chattob&lt;/a&gt; in &lt;a class="issue-link js-issue-link" href="https://github.com/bkshepherd/DaisySeedProjects/pull/87"&gt;#87&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Dedicated tape delay module by &lt;a class="user-mention notranslate" href="https://github.com/xconverge"&gt;@xconverge&lt;/a&gt; in &lt;a class="issue-link js-issue-link" href="https://github.com/bkshepherd/DaisySeedProjects/pull/90"&gt;#90&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Add ability to use knobs (hold alternate footswitch to enter alt mode) for more parameters in delay module by &lt;a class="user-mention notranslate" href="https://github.com/xconverge"&gt;@xconverge&lt;/a&gt; in &lt;a class="issue-link js-issue-link" href="https://github.com/bkshepherd/DaisySeedProjects/pull/89"&gt;#89&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Add check for encoder support (funbox/terrarium/etc). by &lt;a class="user-mention notranslate" href="https://github.com/chattob"&gt;@chattob&lt;/a&gt; in &lt;a class="issue-link js-issue-link" href="https://github.com/bkshepherd/DaisySeedProjects/pull/88"&gt;#88&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Add a hash to force QSPI memory reset if persistent data structure changes by &lt;a class="user-mention notranslate" href="https://github.com/chattob"&gt;@chattob&lt;/a&gt; in &lt;a class="issue-link js-issue-link" href="https://github.com/bkshepherd/DaisySeedProjects/pull/85"&gt;#85&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Use enums for parameter indexing by &lt;a class="user-mention notranslate" href="https://github.com/chattob"&gt;@chattob&lt;/a&gt; in &lt;a class="issue-link js-issue-link" href="https://github.com/bkshepherd/DaisySeedProjects/pull/86"&gt;#86&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Full Changelog&lt;/strong&gt;: &lt;a class="commit-link" href="https://github.com/bkshepherd/DaisySeedProjects/compare/v1.5.4...v1.5.5"&gt;&lt;tt&gt;v1.5.4...v1.5.5&lt;/tt&gt;&lt;/a&gt;&lt;/p&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>DaisySeedProjects</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>Cable - 0.10.8</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-05-16:tag:github.com,2008:Repository/828356582/0.10.8</ns0:id>
    <ns0:updated>2026-05-16T13:44:53Z</ns0:updated>
    <ns0:published>2026-05-16T13:44:53Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/magillos/Cable/releases/tag/0.10.8" type="text/html"/>
    <ns0:summary type="html">&lt;ul&gt;
&lt;li&gt;addressed &lt;a class="issue-link js-issue-link" href="https://github.com/magillos/Cable/issues/48"&gt;#48&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;addressed &lt;a class="issue-link js-issue-link" href="https://github.com/magillos/Cable/issues/50"&gt;#50&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;fixed tray icon not showing in some cases (fresh config)&lt;/li&gt;
&lt;li&gt;correctly done labels truncation in Matrix&lt;/li&gt;
&lt;li&gt;fixed Latency Test in flatpak (it now correctly uses bundled jack_delay)&lt;/li&gt;
&lt;li&gt;app should recover nicely after pipewire restart (no need to restart the app)&lt;/li&gt;
&lt;li&gt;dependencies should be fetched from Flathub during installation (added Flathub remote), when installed with &lt;code&gt;flatpak install&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;some further refactoring&lt;/li&gt;
&lt;/ul&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>Cable</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>polyphone - 2.6.0</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-05-15:tag:github.com,2008:Repository/71500601/2.6.0</ns0:id>
    <ns0:updated>2026-05-15T12:28:23Z</ns0:updated>
    <ns0:published>2026-05-15T12:28:23Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/davy7125/polyphone/releases/tag/2.6.0" type="text/html"/>
    <ns0:summary type="html">No content.</ns0:summary>
    <ns0:author>
      <ns0:name>polyphone</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>fooyin - v0.10.7</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-05-15:tag:github.com,2008:Repository/505401707/v0.10.7</ns0:id>
    <ns0:updated>2026-05-15T00:59:18Z</ns0:updated>
    <ns0:published>2026-05-15T00:59:18Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/fooyin/fooyin/releases/tag/v0.10.7" type="text/html"/>
    <ns0:summary type="html">&lt;h2&gt;New Features&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Quick Tagger
&lt;ul&gt;
&lt;li&gt;Add a Quick Tagger plugin for configurable tagging actions (&lt;a href="https://github.com/fooyin/fooyin/issues/836"&gt;#836&lt;/a&gt;, &lt;a href="https://github.com/fooyin/fooyin/pull/1153"&gt;#1153&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Note: The previous rating actions have been depreciated/removed, so shortcuts will need to be reconfigured&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Improvements&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;DSP
&lt;ul&gt;
&lt;li&gt;Add &lt;code&gt;View -&amp;gt; Equaliser&lt;/code&gt; option when an equaliser DSP is present in a chain&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Interface
&lt;ul&gt;
&lt;li&gt;Add track selection support to the Queue Viewer (&lt;a href="https://github.com/fooyin/fooyin/issues/318"&gt;#318&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Add &lt;code&gt;Add to Playlist&lt;/code&gt; context menu actions to track selections, filters, the Library Tree, and the Directory Browser (&lt;a href="https://github.com/fooyin/fooyin/issues/831"&gt;#831&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Reorganise settings page categories and start categories collapsed by default&lt;/li&gt;
&lt;li&gt;Show a placeholder for empty settings categories and simplify single-page category display&lt;/li&gt;
&lt;li&gt;Replace Tab Stack cardinal direction labels with standard directions (&lt;a href="https://github.com/fooyin/fooyin/pull/1156"&gt;#1156&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Add a seekbar and WaveBar setting for whether mouse interaction takes focus (&lt;a href="https://github.com/fooyin/fooyin/issues/769"&gt;#769&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Playlist
&lt;ul&gt;
&lt;li&gt;Add settings to ignore playlist files when adding folders and prevent duplicate entries when loading playlists (&lt;a href="https://github.com/fooyin/fooyin/issues/1160"&gt;#1160&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Remove the playback queue size limit&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;FileOps
&lt;ul&gt;
&lt;li&gt;Move the single-operation confirmation setting to Advanced settings&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Lyrics
&lt;ul&gt;
&lt;li&gt;Improve the layout of font and colour settings&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Scripting
&lt;ul&gt;
&lt;li&gt;Add &lt;code&gt;$isalpha&lt;/code&gt;, &lt;code&gt;$isalnum&lt;/code&gt;, and &lt;code&gt;$isnum&lt;/code&gt; string functions (&lt;a href="https://github.com/fooyin/fooyin/issues/982"&gt;#982&lt;/a&gt;, &lt;a href="https://github.com/fooyin/fooyin/pull/1168"&gt;#1168&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Preserve path separators in path variables (&lt;a href="https://github.com/fooyin/fooyin/issues/777"&gt;#777&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Tag Editor
&lt;ul&gt;
&lt;li&gt;Add enabled and multi-value columns to tag editor fields&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;WaveBar
&lt;ul&gt;
&lt;li&gt;Cache supersampled waveform renders&lt;/li&gt;
&lt;li&gt;Add options to normalise waveforms, use a dB scale, and choose peak display mode&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Fixes&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Audio/Playback
&lt;ul&gt;
&lt;li&gt;Fix Stop After Current follow-up navigation (&lt;a href="https://github.com/fooyin/fooyin/issues/1154"&gt;#1154&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Fix queue follow navigation after queued playback&lt;/li&gt;
&lt;li&gt;Avoid duplicate file size calculations for bounded segments (&lt;a href="https://github.com/fooyin/fooyin/issues/1161"&gt;#1161&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Refine CUE handling in external scans&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Filters
&lt;ul&gt;
&lt;li&gt;Fix filtered &lt;code&gt;All&lt;/code&gt; selections using the whole library instead of matching entries (&lt;a href="https://github.com/fooyin/fooyin/issues/1151"&gt;#1151&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Interface
&lt;ul&gt;
&lt;li&gt;Fix inline editors accepting changes after pressing Escape (&lt;a href="https://github.com/fooyin/fooyin/pull/1170"&gt;#1170&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Fix bottom viewport row selection repaint in tree views&lt;/li&gt;
&lt;li&gt;Sync widget configuration state after applying&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Library/Metadata
&lt;ul&gt;
&lt;li&gt;Fix custom rating text tag settings and rating write mappings (&lt;a href="https://github.com/fooyin/fooyin/issues/1148"&gt;#1148&lt;/a&gt;, &lt;a href="https://github.com/fooyin/fooyin/issues/1150"&gt;#1150&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;PipeWire
&lt;ul&gt;
&lt;li&gt;Sync PipeWire volume and mute state with the system mixer (&lt;a href="https://github.com/fooyin/fooyin/issues/1147"&gt;#1147&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Scrobbling
&lt;ul&gt;
&lt;li&gt;Make the scrobbling threshold independent of the playcount threshold (&lt;a href="https://github.com/fooyin/fooyin/issues/1152"&gt;#1152&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Settings
&lt;ul&gt;
&lt;li&gt;Fix relative positioning of settings categories and category identity across translations&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;VU Meter, WaveBar
&lt;ul&gt;
&lt;li&gt;Always set the active palette for the default highlight colour&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Build/System&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Packaging
&lt;ul&gt;
&lt;li&gt;Target Ubuntu 26.04 and update distro-specific dependencies (&lt;a href="https://github.com/fooyin/fooyin/issues/1171"&gt;#1171&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Translations
&lt;ul&gt;
&lt;li&gt;Update translations and translation sources (&lt;a href="https://github.com/fooyin/fooyin/pull/1164"&gt;#1164&lt;/a&gt;, &lt;a href="https://github.com/fooyin/fooyin/pull/1165"&gt;#1165&lt;/a&gt;, &lt;a href="https://github.com/fooyin/fooyin/pull/1172"&gt;#1172&lt;/a&gt;, &lt;a href="https://github.com/fooyin/fooyin/pull/1173"&gt;#1173&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Contributors&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="user-mention notranslate" href="https://github.com/numerfolt"&gt;@numerfolt&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="user-mention notranslate" href="https://github.com/lstrsrt"&gt;@lstrsrt&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="user-mention notranslate" href="https://github.com/bassstorm"&gt;@bassstorm&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Translators&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="user-mention notranslate" href="https://github.com/numerfolt"&gt;@numerfolt&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="user-mention notranslate" href="https://github.com/khagaroth"&gt;@khagaroth&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;麋麓 BigELK176&lt;/li&gt;
&lt;li&gt;&lt;a class="user-mention notranslate" href="https://github.com/adem4ik"&gt;@adem4ik&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="user-mention notranslate" href="https://github.com/Mustlane"&gt;@Mustlane&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="user-mention notranslate" href="https://github.com/CarterLi"&gt;@CarterLi&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Full Changelog&lt;/strong&gt;: &lt;a class="commit-link" href="https://github.com/fooyin/fooyin/compare/v0.10.6...v0.10.7"&gt;&lt;tt&gt;v0.10.6...v0.10.7&lt;/tt&gt;&lt;/a&gt;&lt;/p&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>fooyin</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>openwurli - v0.5.0 "HereIGo"</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-05-13:tag:github.com,2008:Repository/1160445603/v0.5.0</ns0:id>
    <ns0:updated>2026-05-13T23:55:22Z</ns0:updated>
    <ns0:published>2026-05-13T23:55:22Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/hal0zer0/openwurli/releases/tag/v0.5.0" type="text/html"/>
    <ns0:summary type="html">&lt;p&gt;&lt;strong&gt;Full Changelog&lt;/strong&gt;: &lt;a class="commit-link" href="https://github.com/hal0zer0/openwurli/compare/v0.4.0...v0.5.0"&gt;&lt;tt&gt;v0.4.0...v0.5.0&lt;/tt&gt;&lt;/a&gt;&lt;/p&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>openwurli</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>pipewire releases - 1.6.5</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-05-13:https://gitlab.freedesktop.org/pipewire/pipewire/-/releases/1.6.5</ns0:id>
    <ns0:updated>2026-05-13T15:20:04Z</ns0:updated>
    <ns0:published>2026-05-13T15:20:04Z</ns0:published>
    <ns0:link rel="alternate" href="https://gitlab.freedesktop.org/pipewire/pipewire/-/releases/1.6.5" type="text/html"/>
    <ns0:summary type="html">1.6.5</ns0:summary>
    <ns0:author>
      <ns0:name>pipewire releases</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>fooyin - v0.10.6</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-05-11:tag:github.com,2008:Repository/505401707/v0.10.6</ns0:id>
    <ns0:updated>2026-05-11T20:49:11Z</ns0:updated>
    <ns0:published>2026-05-11T20:49:11Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/fooyin/fooyin/releases/tag/v0.10.6" type="text/html"/>
    <ns0:summary type="html">&lt;h2&gt;Improvements&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Filters
&lt;ul&gt;
&lt;li&gt;Add an option to change cover source preference (&lt;a href="https://github.com/fooyin/fooyin/issues/1021"&gt;#1021&lt;/a&gt;, &lt;a href="https://github.com/fooyin/fooyin/pull/1111"&gt;#1111&lt;/a&gt;, &lt;a href="https://github.com/fooyin/fooyin/issues/1124"&gt;#1124&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Interface
&lt;ul&gt;
&lt;li&gt;Add the Tag Editor as a layout widget (&lt;a href="https://github.com/fooyin/fooyin/pull/1012"&gt;#1012&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Add filter for searching shortcuts and improve the shortcut editor&lt;/li&gt;
&lt;li&gt;Add support for selecting built-in theme icons in Command Button widgets&lt;/li&gt;
&lt;li&gt;Add an unsplit/remove split action for single-child layout widget containers (&lt;a href="https://github.com/fooyin/fooyin/issues/1132"&gt;#1132&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Add an Advanced settings page and move technical settings there&lt;/li&gt;
&lt;li&gt;Move plugin settings pages under the Plugins category&lt;/li&gt;
&lt;li&gt;Make the layout editing context menu configurable&lt;/li&gt;
&lt;li&gt;Save and restore settings dialog page state and expanded categories&lt;/li&gt;
&lt;li&gt;Improve layout editing context menus and menu header appearance&lt;/li&gt;
&lt;li&gt;Split playlist settings into focused pages&lt;/li&gt;
&lt;li&gt;Add a separate action for clearing the current playlist&lt;/li&gt;
&lt;li&gt;Add autocomplete to inline playlist editing (&lt;a href="https://github.com/fooyin/fooyin/issues/1136"&gt;#1136&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Library/Metadata
&lt;ul&gt;
&lt;li&gt;Add configurable rating tag read/write handling for text tags and ID3 POPM frames (&lt;a href="https://github.com/fooyin/fooyin/issues/370"&gt;#370&lt;/a&gt;, &lt;a href="https://github.com/fooyin/fooyin/issues/786"&gt;#786&lt;/a&gt;, &lt;a href="https://github.com/fooyin/fooyin/pull/1120"&gt;#1120&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Add support for multi-chapter files (&lt;a href="https://github.com/fooyin/fooyin/issues/694"&gt;#694&lt;/a&gt;, &lt;a href="https://github.com/fooyin/fooyin/pull/945"&gt;#945&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Lyrics
&lt;ul&gt;
&lt;li&gt;Support finding local lyrics with directory wildcards&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Playlist
&lt;ul&gt;
&lt;li&gt;Add setting to load directory when opening a single file (&lt;a href="https://github.com/fooyin/fooyin/pull/841"&gt;#841&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Scripting
&lt;ul&gt;
&lt;li&gt;Add date and time functions: &lt;code&gt;$year&lt;/code&gt;, &lt;code&gt;$month&lt;/code&gt;, &lt;code&gt;$day_of_month&lt;/code&gt;, &lt;code&gt;$date&lt;/code&gt;, and &lt;code&gt;$time&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Add &lt;code&gt;$meta(field,index)&lt;/code&gt;, &lt;code&gt;$meta_sep&lt;/code&gt;, &lt;code&gt;$meta_test&lt;/code&gt;, and &lt;code&gt;$meta_num&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Fall back to literal search when query syntax is invalid (&lt;a href="https://github.com/fooyin/fooyin/issues/1125"&gt;#1125&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Tag Editor
&lt;ul&gt;
&lt;li&gt;Add support for configuring multivalue separators (&lt;a href="https://github.com/fooyin/fooyin/issues/1141"&gt;#1141&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Fixes&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Audio/Playback
&lt;ul&gt;
&lt;li&gt;Respect current track seekability in playback controls and WaveBar&lt;/li&gt;
&lt;li&gt;Handle seek trimming for all formats in the FFmpeg decoder&lt;/li&gt;
&lt;li&gt;Fix several playback queue issues after session restore (&lt;a href="https://github.com/fooyin/fooyin/pull/1130"&gt;#1130&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Fix potential incorrect shuffle order (&lt;a href="https://github.com/fooyin/fooyin/issues/1127"&gt;#1127&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Discord
&lt;ul&gt;
&lt;li&gt;Support sandboxed IPC socket locations (&lt;a href="https://github.com/fooyin/fooyin/issues/1115"&gt;#1115&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Interface
&lt;ul&gt;
&lt;li&gt;Update the Script Editor track when the selection changes (&lt;a href="https://github.com/fooyin/fooyin/issues/1122"&gt;#1122&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Fix playlist header selection deleting tracks&lt;/li&gt;
&lt;li&gt;Fall back to the default or first playlist when restoring the active playlist fails&lt;/li&gt;
&lt;li&gt;Fix Library Tree sorting and searching when strings contain scripting syntax (&lt;a href="https://github.com/fooyin/fooyin/issues/1117"&gt;#1117&lt;/a&gt;, &lt;a href="https://github.com/fooyin/fooyin/issues/1125"&gt;#1125&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Fix Library Tree row height with multiline titles&lt;/li&gt;
&lt;li&gt;Fix the cursor moving to the first row when adding new rows in extendable tables&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Library/Metadata
&lt;ul&gt;
&lt;li&gt;Fix swapped Encoding and TagType values&lt;/li&gt;
&lt;li&gt;Fix FFmpeg tag decoding issues, including semicolon/slash-separated artists and encoder tool info (&lt;a href="https://github.com/fooyin/fooyin/pull/1137"&gt;#1137&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Fix missing ReplayGain values evaluating as true in scripts (&lt;a href="https://github.com/fooyin/fooyin/issues/1112"&gt;#1112&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Lyrics
&lt;ul&gt;
&lt;li&gt;Fix LRC offset calculation (&lt;a href="https://github.com/fooyin/fooyin/issues/1121"&gt;#1121&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Playlist
&lt;ul&gt;
&lt;li&gt;Fix 'Cursor follows playback' when restoring state on startup&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Scripting
&lt;ul&gt;
&lt;li&gt;Fix &lt;code&gt;NOT&lt;/code&gt; parsing for date range queries (&lt;a href="https://github.com/fooyin/fooyin/issues/1143"&gt;#1143&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Fall back to literal search when query syntax is invalid (&lt;a href="https://github.com/fooyin/fooyin/issues/1125"&gt;#1125&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Fix &lt;code&gt;$rand&lt;/code&gt; bounds (&lt;a href="https://github.com/fooyin/fooyin/pull/1133"&gt;#1133&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Build/System&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Build
&lt;ul&gt;
&lt;li&gt;Add a &lt;code&gt;PFFFT_USE_SIMD&lt;/code&gt; CMake option for the PFFFT library (&lt;a href="https://github.com/fooyin/fooyin/issues/1110"&gt;#1110&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Translations
&lt;ul&gt;
&lt;li&gt;Mark file extension hint labels translatable (&lt;a href="https://github.com/fooyin/fooyin/issues/1108"&gt;#1108&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Update translations and translation sources (&lt;a href="https://github.com/fooyin/fooyin/pull/1134"&gt;#1134&lt;/a&gt;, &lt;a href="https://github.com/fooyin/fooyin/pull/1135"&gt;#1135&lt;/a&gt;, &lt;a href="https://github.com/fooyin/fooyin/pull/1145"&gt;#1145&lt;/a&gt;, &lt;a href="https://github.com/fooyin/fooyin/pull/1146"&gt;#1146&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Contributors&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="user-mention notranslate" href="https://github.com/lstrsrt"&gt;@lstrsrt&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="user-mention notranslate" href="https://github.com/thatguy7"&gt;@thatguy7&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="user-mention notranslate" href="https://github.com/DocMAX"&gt;@DocMAX&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="user-mention notranslate" href="https://github.com/Agecaltin"&gt;@Agecaltin&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Full Changelog&lt;/strong&gt;: &lt;a class="commit-link" href="https://github.com/fooyin/fooyin/compare/v0.10.5...v0.10.6"&gt;&lt;tt&gt;v0.10.5...v0.10.6&lt;/tt&gt;&lt;/a&gt;&lt;/p&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>fooyin</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>Ubuntu Studio’s New Home: What’s Changing and Why</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-05-10:https://ubuntustudio.org/?p=5109</ns0:id>
    <ns0:updated>2026-05-10T02:25:40Z</ns0:updated>
    <ns0:published>2026-05-10T02:25:40Z</ns0:published>
    <ns0:link rel="alternate" href="https://ubuntustudio.org/2026/05/ubuntu-studios-new-home-whats-changing-and-why/" type="text/html"/>
    <ns0:summary type="html">Ubuntu Studio&amp;#8217;s web presence has been spread across several Canonical-hosted systems for a long time: the main website on an old Canonical web server, the Ubuntu Community Help Wiki at help.ubuntu.com/community/UbuntuStudio, and the Ubuntu Developer Wiki at wiki.ubuntu.com/UbuntuStudio. Those platforms served their purpose, but each had become a poor fit... &lt;a class="moretag" href="https://ubuntustudio.org/2026/05/ubuntu-studios-new-home-whats-changing-and-why/"&gt;Continue reading&lt;/a&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>Ubuntu Studio</ns0:name>
    </ns0:author>
    <ns0:category term="general"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>giada - 1.4.1</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-05-09:tag:github.com,2008:Repository/6603254/1.4.1</ns0:id>
    <ns0:updated>2026-05-09T10:10:10Z</ns0:updated>
    <ns0:published>2026-05-09T10:10:10Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/monocasual/giada/releases/tag/1.4.1" type="text/html"/>
    <ns0:summary type="html">&lt;p&gt;1.4.1&lt;/p&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>giada</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>xLights - 2026.08 Released</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-05-08:https://xlights.org/?p=4135</ns0:id>
    <ns0:updated>2026-05-08T21:11:27Z</ns0:updated>
    <ns0:published>2026-05-08T21:11:27Z</ns0:published>
    <ns0:link rel="alternate" href="https://xlights.org/2026-08-released/" type="text/html"/>
    <ns0:summary type="html">2026.08 May 7, 2026 -enh (dkulp) When a JobPool worker thread dies from an unhandled C++ exception, the log now records the exception type, what() message, and the in-flight job name instead of just &amp;#8220;unknown exception&amp;#8221;. Helps diagnose render-thread crashes. -enh (agfazio) Add &amp;#8220;Also add alias to model&amp;#8221; checkbox to the Select Model dialog shown...</ns0:summary>
    <ns0:author>
      <ns0:name>xLights</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>Noteahead - 3.0.0</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-05-08:tag:github.com,2008:Repository/313720469/3.0.0</ns0:id>
    <ns0:updated>2026-05-08T18:44:01Z</ns0:updated>
    <ns0:published>2026-05-08T18:44:01Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/juzzlin/Noteahead/releases/tag/3.0.0" type="text/html"/>
    <ns0:summary type="html">&lt;p&gt;3.0.0&lt;/p&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>Noteahead</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>v4.7.0: Merge pull request #33328 from musescore/ci_tx_pull_4.7</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-05-08:tag:github.com,2008:Repository/4454793/v4.7.0</ns0:id>
    <ns0:updated>2026-05-08T09:24:55Z</ns0:updated>
    <ns0:published>2026-05-08T09:24:55Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/musescore/MuseScore/releases/tag/v4.7.0" type="text/html"/>
    <ns0:summary type="html">&lt;p&gt;Update in-repo translations from Transifex&lt;/p&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>MuseScore</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>ultramaster_kr106 - v2.5.13</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-05-07:tag:github.com,2008:Repository/1170941801/v2.5.13</ns0:id>
    <ns0:updated>2026-05-07T15:55:59Z</ns0:updated>
    <ns0:published>2026-05-07T15:55:59Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/kayrockscreenprinting/ultramaster_kr106/releases/tag/v2.5.13" type="text/html"/>
    <ns0:summary type="html">&lt;p&gt;&lt;strong&gt;Full Changelog&lt;/strong&gt;: &lt;a class="commit-link" href="https://github.com/kayrockscreenprinting/ultramaster_kr106/compare/v2.5.12...v2.5.13"&gt;&lt;tt&gt;v2.5.12...v2.5.13&lt;/tt&gt;&lt;/a&gt;&lt;/p&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>ultramaster_kr106</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>waveform-playlist - Recording Pipeline: Transferable Worklet Buffers + Pause/Resume Correctness</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-05-07:tag:github.com,2008:Repository/8150190/transferable-recording</ns0:id>
    <ns0:updated>2026-05-07T01:19:45Z</ns0:updated>
    <ns0:published>2026-05-07T01:19:45Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/naomiaro/waveform-playlist/releases/tag/transferable-recording" type="text/html"/>
    <ns0:summary type="html">&lt;p&gt;&lt;strong&gt;&lt;code&gt;@waveform-playlist/worklets&lt;/code&gt; 12.2.0&lt;/strong&gt; · &lt;strong&gt;&lt;code&gt;@waveform-playlist/recording&lt;/code&gt; 12.1.0&lt;/strong&gt; · &lt;strong&gt;&lt;code&gt;@dawcore/components&lt;/code&gt; 0.0.16&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;End-to-end correctness pass on the recording pipeline. Inspired by Paul Adenot's &lt;a href="https://blog.paul.cx/post/a-wait-free-spsc-ringbuffer-for-the-web/" rel="nofollow"&gt;wait-free SPSC ringbuffer for the web&lt;/a&gt; — first step toward eliminating allocations on the audio thread without the COOP/COEP prerequisite of a SharedArrayBuffer ring.&lt;/p&gt;
&lt;h2&gt;Worklet&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Transferable buffers&lt;/strong&gt; in &lt;code&gt;recording-processor&lt;/code&gt;. Replaces per-flush &lt;code&gt;Float32Array.slice()&lt;/code&gt; + structured-clone with &lt;code&gt;subarray&lt;/code&gt; views + transferable &lt;code&gt;ArrayBuffer&lt;/code&gt;s, then reallocates after transfer. Saves one memcpy on the audio thread (no slice) and one on the main thread (no clone). At 44.1kHz stereo with ~16ms chunks: ~1.4MB/s of avoided copy plus matching allocation reduction.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Stop handshake&lt;/strong&gt;: &lt;code&gt;stop&lt;/code&gt; command always sends a terminal &lt;code&gt;done: true&lt;/code&gt; message. Receivers &lt;code&gt;await&lt;/code&gt; it before reading chunks — without this, the partial buffer at stop time arrives after the AudioBuffer is built and is silently dropped.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Stop hardening&lt;/strong&gt;: drops buffers and zeros bufferSize after the final flush so a stray &lt;code&gt;resume&lt;/code&gt; after &lt;code&gt;stop&lt;/code&gt; can't write into detached typed-array memory.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Recording hook (&lt;code&gt;useRecording&lt;/code&gt;)&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;pauseRecording&lt;/code&gt; / &lt;code&gt;resumeRecording&lt;/code&gt; now actually message the worklet. Previously they only flipped React state and cancelled the rAF duration counter — the worklet kept capturing through "paused" periods (silent bug).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;stopRecording&lt;/code&gt; is now stop-handshake-aware: awaits the &lt;code&gt;done&lt;/code&gt; ack with a 1s safety timeout, drains the event-loop queue (yields in 5ms ticks until &lt;code&gt;totalSamples&lt;/code&gt; stabilizes for 3 consecutive ticks) so backed-up flush messages get processed before chunks are read.&lt;/li&gt;
&lt;li&gt;Freezes the duration rAF tick at the very top of &lt;code&gt;stopRecording&lt;/code&gt; (&lt;code&gt;isStoppingRef = true&lt;/code&gt; + &lt;code&gt;cancelAnimationFrame&lt;/code&gt;) so the live-preview width doesn't keep growing during the handshake.&lt;/li&gt;
&lt;li&gt;Skips peak gen for in-flight messages once stop is requested — drains the queue faster and prevents the visible "growing past playhead, then trimmed back" effect.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;finally&lt;/code&gt;-block resets &lt;code&gt;isRecording&lt;/code&gt; even when &lt;code&gt;createAudioBuffer&lt;/code&gt; throws — UI no longer gets stuck "recording" on error.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;dawcore&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Spacebar pauses recording.&lt;/strong&gt; New &lt;code&gt;editor.togglePauseRecording()&lt;/code&gt; Audacity-style toggle: pauses both worklet and Transport (when running), restarts Transport on resume only for overdub sessions. Both &lt;code&gt;togglePlayPause()&lt;/code&gt; (spacebar) and &lt;code&gt;&amp;lt;daw-pause-button&amp;gt;&lt;/code&gt; delegate here.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;New events&lt;/strong&gt; &lt;code&gt;daw-recording-pause&lt;/code&gt; / &lt;code&gt;daw-recording-resume&lt;/code&gt; for multi-source visual sync. &lt;code&gt;&amp;lt;daw-pause-button&amp;gt;&lt;/code&gt; listens for these so its &lt;code&gt;data-paused&lt;/code&gt; attribute stays correct regardless of which UI triggered the toggle.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;&amp;lt;daw-stop-button&amp;gt;&lt;/code&gt; chains&lt;/strong&gt; &lt;code&gt;stopRecording().then(stop)&lt;/code&gt; instead of calling them in parallel. Synchronous &lt;code&gt;engine.stop()&lt;/code&gt; was disrupting the worklet's audio thread mid-handshake, causing the terminal &lt;code&gt;done&lt;/code&gt; message to never arrive.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;stopRecording&lt;/code&gt; is async&lt;/strong&gt; (&lt;code&gt;Promise&amp;lt;void&amp;gt;&lt;/code&gt;), with the same drain-loop + 1s safety timeout as the React hook. Skips the await when called from a paused state. &lt;code&gt;try/finally&lt;/code&gt; in &lt;code&gt;_onWorkletMessage&lt;/code&gt; so peak-gen throws don't strand the stop barrier.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;session.stopping&lt;/code&gt; flag&lt;/strong&gt; blocks pause/resume from dispatching events for a session that's about to be deleted (mid-drain race).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;indefinite-playback&lt;/code&gt; attribute&lt;/strong&gt; on &lt;code&gt;&amp;lt;daw-editor&amp;gt;&lt;/code&gt; makes the timeline ruler visible from page load, useful for recording demos that start empty.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Breaking-ish&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;dawcore.RecordingController.stopRecording&lt;/code&gt; and &lt;code&gt;&amp;lt;daw-editor&amp;gt;.stopRecording()&lt;/code&gt; return &lt;code&gt;Promise&amp;lt;void&amp;gt;&lt;/code&gt; instead of &lt;code&gt;void&lt;/code&gt;. Fire-and-forget callers (&lt;code&gt;&amp;lt;daw-stop-button&amp;gt;&lt;/code&gt;) work unchanged.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Demos&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;examples/dawcore-native/record.html&lt;/code&gt; and &lt;code&gt;examples/dawcore-tone/record.html&lt;/code&gt;: timeline visible from start, spacebar pauses, log shows pause/resume events with human-readable latency-skip in milliseconds.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Tests&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;13 new dawcore tests (drain stragglers, peak-gen short-circuit, stopping-flag, stop-button error paths, togglePauseRecording branch matrix).&lt;/li&gt;
&lt;li&gt;New &lt;code&gt;useRecording.test.tsx&lt;/code&gt; (8 tests) — first React-Testing-Library suite in the recording package.&lt;/li&gt;
&lt;li&gt;Total project tests: ~1850, all green.&lt;/li&gt;
&lt;/ul&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>waveform-playlist</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>Cable - 0.10.7</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-05-06:tag:github.com,2008:Repository/828356582/0.10.7</ns0:id>
    <ns0:updated>2026-05-06T17:37:01Z</ns0:updated>
    <ns0:published>2026-05-06T17:37:01Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/magillos/Cable/releases/tag/0.10.7" type="text/html"/>
    <ns0:summary type="html">&lt;p&gt;-fixed latency test in flatpak, so bundled jack_delay is correctly used if not installed&lt;br /&gt;
-flatpak now uses PyQt.BaseApp (much reduced size and better theme handling)&lt;br /&gt;
-addressed &lt;a class="issue-link js-issue-link" href="https://github.com/magillos/Cable/issues/47"&gt;#47&lt;/a&gt;&lt;br /&gt;
-some more cleanup&lt;/p&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>Cable</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>ZLCompressor - 0.5.0</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-05-06:tag:github.com,2008:Repository/842499342/0.5.0</ns0:id>
    <ns0:updated>2026-05-06T12:06:39Z</ns0:updated>
    <ns0:published>2026-05-06T12:06:39Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/ZL-Audio/ZLCompressor/releases/tag/0.5.0" type="text/html"/>
    <ns0:summary type="html">&lt;p&gt;docs: update building instructions [skip ci]&lt;/p&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>ZLCompressor</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>firefly-synth-2 - 2.1.3</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-05-05:tag:github.com,2008:Repository/888569354/v2.1.3</ns0:id>
    <ns0:updated>2026-05-05T21:05:45Z</ns0:updated>
    <ns0:published>2026-05-05T21:05:45Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/sjoerdvankreel/firefly-synth-2/releases/tag/v2.1.3" type="text/html"/>
    <ns0:summary type="html">&lt;ul&gt;
&lt;li&gt;Increase master aux count to 8.&lt;/li&gt;
&lt;li&gt;Add bipolar envelope segments.&lt;/li&gt;
&lt;li&gt;Bugfix: mseg editor screwed up tempo-synced segment lengths.&lt;/li&gt;
&lt;/ul&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>firefly-synth-2</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>soundscope - v1.9.1</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-05-05:tag:github.com,2008:Repository/1033259976/v1.9.1</ns0:id>
    <ns0:updated>2026-05-05T19:34:59Z</ns0:updated>
    <ns0:published>2026-05-05T19:34:59Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/bananaofhappiness/soundscope/releases/tag/v1.9.1" type="text/html"/>
    <ns0:summary type="html">&lt;h1&gt;Changelog&lt;/h1&gt;
&lt;p&gt;All notable changes to this project will be documented in this file.&lt;/p&gt;
&lt;hr /&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; The frequency spectrum visualization may appear noisy. This will be improved in a future versions once ratatui v0.30.1 releases, which adds a filled-area chart rendering mode that will fill the area under the curve.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;h2&gt;[1.9.1] - 2026-05-05&lt;/h2&gt;
&lt;h3&gt;Features&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Added&lt;/strong&gt; support for &lt;code&gt;.toml&lt;/code&gt; theme files. Using &lt;code&gt;.toml&lt;/code&gt; instead of the custom &lt;code&gt;.theme&lt;/code&gt; extension enables syntax highlighting in editors, since the format was always TOML under the hood. It is recommended to rename existing &lt;code&gt;.theme&lt;/code&gt; files to &lt;code&gt;.toml&lt;/code&gt;, although &lt;code&gt;.theme&lt;/code&gt; files are still supported for backwards compatibility.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Changes&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Fixed&lt;/strong&gt; config directory and &lt;code&gt;.current_theme&lt;/code&gt; file being created on startup even when the user hasn't changed the theme from default. Now they are only created once the user actually switches to a non-default theme (&lt;a href="https://github.com/bananaofhappiness/soundscope/issues/64"&gt;#64&lt;/a&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Known Issues&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Rapidly seeking through an audio file may cause lag, resulting in the playhead being in an incorrect position. Pausing playback and waiting for the playhead to return to the correct spot before resuming usually resolves the issue.&lt;/li&gt;
&lt;li&gt;In some audio files the playhead may gradually drift slightly to the right of the waveform center over time.&lt;/li&gt;
&lt;li&gt;Some files with high sample rate play back normally, but real-time visualization (waveform, spectrum, LUFS) lags significantly behind. For example, this occurs with &lt;code&gt;.wav&lt;/code&gt; files with a sample rate &amp;gt; 48000, while &lt;code&gt;.mp3&lt;/code&gt; files at 92000 play without noticeable lag.&lt;/li&gt;
&lt;/ul&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>soundscope</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>GuitarMidi-LV2 - v2.0</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-05-05:tag:github.com,2008:Repository/103525500/v2.0</ns0:id>
    <ns0:updated>2026-05-05T13:32:46Z</ns0:updated>
    <ns0:published>2026-05-05T13:32:46Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/geraldmwangi/GuitarMidi-LV2/releases/tag/v2.0" type="text/html"/>
    <ns0:summary type="html">&lt;p&gt;prepare for release&lt;/p&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>GuitarMidi-LV2</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>DrumGroovePro_v1.0.0</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-05-05:tag:github.com,2008:Repository/1018664591/v1.0.0</ns0:id>
    <ns0:updated>2026-05-05T11:09:39Z</ns0:updated>
    <ns0:published>2026-05-05T11:09:39Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/InToEtherion/DrumGroovePro/releases/tag/v1.0.0" type="text/html"/>
    <ns0:summary type="html">&lt;p&gt;Changes in version V1.0.0&lt;/p&gt;
&lt;p&gt;Fixes:&lt;br /&gt;
1 - Fixed issue where origin mapping was not being rebuild correctly after deleting the .xml&lt;br /&gt;
2 - Fixed issue where a midi dissection part was not added correctly to the timeline.&lt;/p&gt;
&lt;p&gt;New:&lt;/p&gt;
&lt;p&gt;1 - in BAR mode, the Grid BMP and Speed BPM value can be manually typed.&lt;/p&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>DrumGroovePro</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>setBfree - v0.8.15: Fix b_whirl UI manifest</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-05-05:tag:github.com,2008:Repository/5001593/v0.8.15</ns0:id>
    <ns0:updated>2026-05-05T01:30:54Z</ns0:updated>
    <ns0:published>2026-05-05T01:30:54Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/pantherb/setBfree/releases/tag/v0.8.15" type="text/html"/>
    <ns0:summary type="html">&lt;p&gt;Prior to this change REAPER never queried the plugin UI's&lt;br /&gt;
extension data, and the idle interface was not used.&lt;/p&gt;
&lt;p&gt;The GUI worked since b_whirl-configurable.ttl was parsed&lt;br /&gt;
for the plugin's DSP. Other hosts were not affected.&lt;/p&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>setBfree</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>fooyin - v0.10.5</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-05-04:tag:github.com,2008:Repository/505401707/v0.10.5</ns0:id>
    <ns0:updated>2026-05-04T00:51:37Z</ns0:updated>
    <ns0:published>2026-05-04T00:51:37Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/fooyin/fooyin/releases/tag/v0.10.5" type="text/html"/>
    <ns0:summary type="html">&lt;h2&gt;Improvements&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Interface
&lt;ul&gt;
&lt;li&gt;Add support for wildcard artwork directory paths (&lt;a href="https://github.com/fooyin/fooyin/issues/1099"&gt;#1099&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Split playlist and queue context-menu actions into separate configurable actions&lt;/li&gt;
&lt;li&gt;Improve playlist header appearance when artwork is hidden&lt;/li&gt;
&lt;li&gt;Add a playlist preset menu option for opening the preset settings page&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Directory Browser
&lt;ul&gt;
&lt;li&gt;Add search support (&lt;a href="https://github.com/fooyin/fooyin/issues/1106"&gt;#1106&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Make context menu configurable&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Library Tree
&lt;ul&gt;
&lt;li&gt;Add support for right-aligned text with &lt;code&gt;&amp;lt;right&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Add configurable summary node script&lt;/li&gt;
&lt;li&gt;Add &lt;code&gt;%trackcount%&lt;/code&gt;, &lt;code&gt;%childcount%&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Scripting
&lt;ul&gt;
&lt;li&gt;Add support for preserving layout whitespace during evaluation&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Fixes&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Audio/Playback
&lt;ul&gt;
&lt;li&gt;Refresh active stream metadata on track updates so ReplayGain changes apply immediately (&lt;a href="https://github.com/fooyin/fooyin/issues/1102"&gt;#1102&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Interface
&lt;ul&gt;
&lt;li&gt;Fix editable tab middle-click handling&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Library/Metadata
&lt;ul&gt;
&lt;li&gt;Prefer ID3v2.4 &lt;code&gt;TDRC&lt;/code&gt; over &lt;code&gt;TYER&lt;/code&gt; when reading date tags (&lt;a href="https://github.com/fooyin/fooyin/issues/787"&gt;#787&lt;/a&gt;, &lt;a href="https://github.com/fooyin/fooyin/pull/1098"&gt;#1098&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Fix autoplaylist refresh and playlist changesets for custom tag changes (&lt;a href="https://github.com/fooyin/fooyin/issues/1100"&gt;#1100&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Lyrics
&lt;ul&gt;
&lt;li&gt;Avoid stale editor and widget updates after the edited track changes (&lt;a href="https://github.com/fooyin/fooyin/issues/748"&gt;#748&lt;/a&gt;, &lt;a href="https://github.com/fooyin/fooyin/pull/1101"&gt;#1101&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Build/System&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Packaging
&lt;ul&gt;
&lt;li&gt;Add zlib as an explicit dependency and Debian packaging dependency&lt;/li&gt;
&lt;li&gt;Drop Fedora 41 and add 44&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Plugin API
&lt;ul&gt;
&lt;li&gt;Remove the legacy plugin settings API&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Translations
&lt;ul&gt;
&lt;li&gt;Update translations and translation sources (&lt;a href="https://github.com/fooyin/fooyin/pull/1104"&gt;#1104&lt;/a&gt;, &lt;a href="https://github.com/fooyin/fooyin/pull/1105"&gt;#1105&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Contributors&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="user-mention notranslate" href="https://github.com/lstrsrt"&gt;@lstrsrt&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Full Changelog&lt;/strong&gt;: &lt;a class="commit-link" href="https://github.com/fooyin/fooyin/compare/v0.10.4...v0.10.5"&gt;&lt;tt&gt;v0.10.4...v0.10.5&lt;/tt&gt;&lt;/a&gt;&lt;/p&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>fooyin</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>waveform-playlist - MIDI Tracks via Tone Adapter (Piano-Roll)</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-05-03:tag:github.com,2008:Repository/8150190/midi-piano-roll</ns0:id>
    <ns0:updated>2026-05-03T07:29:17Z</ns0:updated>
    <ns0:published>2026-05-03T07:29:17Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/naomiaro/waveform-playlist/releases/tag/midi-piano-roll" type="text/html"/>
    <ns0:summary type="html">&lt;p&gt;&lt;strong&gt;&lt;code&gt;@dawcore/components&lt;/code&gt; 0.0.15&lt;/strong&gt; — programmatic MIDI tracks, rendered as piano-roll, played back via &lt;code&gt;TonePlayoutAdapter&lt;/code&gt;.&lt;/p&gt;
&lt;h2&gt;What's new&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;&amp;lt;daw-piano-roll&amp;gt;&lt;/code&gt;&lt;/strong&gt; — new visual element. Shadow DOM, chunked canvas, virtual scroll. Auto-fits pitch range, velocity → opacity, theme-aware.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;&amp;lt;daw-clip&amp;gt;&lt;/code&gt; MIDI surface&lt;/strong&gt; — &lt;code&gt;midiNotes&lt;/code&gt; JS property + &lt;code&gt;midi-channel&lt;/code&gt; (0-15) and &lt;code&gt;midi-program&lt;/code&gt; (0-127) reflected attributes with validated &lt;code&gt;noAccessor&lt;/code&gt; setters.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;&amp;lt;daw-track render-mode&amp;gt;&lt;/code&gt;&lt;/strong&gt; — &lt;code&gt;'waveform' \| 'piano-roll'&lt;/code&gt; reflected attribute, switches the per-clip renderer.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;editor.addTrack({ midi: { notes, channel?, program? } })&lt;/code&gt;&lt;/strong&gt; — convenience sugar that creates a piano-roll track with one MIDI clip.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CSS theming&lt;/strong&gt; — &lt;code&gt;--daw-piano-roll-note-color&lt;/code&gt;, &lt;code&gt;--daw-piano-roll-selected-note-color&lt;/code&gt;, &lt;code&gt;--daw-piano-roll-background&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Demo&lt;/strong&gt; — &lt;code&gt;examples/dawcore-tone/midi.html&lt;/code&gt; (programmatic C major scale via PolySynth).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Behavior&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;A clip is treated as MIDI iff &lt;code&gt;clip.midiNotes != null&lt;/code&gt;. MIDI clips skip audio fetch + decode + peak generation.&lt;/li&gt;
&lt;li&gt;Trim handles and split-at-playhead are inert on MIDI clips (note slicing deferred to a future engine PR). Move drag works.&lt;/li&gt;
&lt;li&gt;Playback requires the Tone.js adapter — the native &lt;code&gt;Transport&lt;/code&gt; adapter renders piano-roll but is silent for MIDI.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Defensive guarantees&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;MIDI note arrays are validated at the boundary; NaN/Infinity / out-of-range entries are dropped with a &lt;code&gt;console.warn&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Audio→MIDI clip transitions purge stale per-clip caches (&lt;code&gt;_clipBuffers&lt;/code&gt;, &lt;code&gt;_peaksData&lt;/code&gt;, &lt;code&gt;_clipOffsets&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;syncPeaksForChangedClips&lt;/code&gt; filter skips piano-roll tracks (no more "no AudioBuffer" warnings on MIDI tracks).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Out of scope (future)&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;editor.loadMidi(url)&lt;/code&gt; and &lt;code&gt;.mid&lt;/code&gt; file parsing&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.mid&lt;/code&gt; file-drop routing&lt;/li&gt;
&lt;li&gt;Native &lt;code&gt;Transport&lt;/code&gt; MIDI scheduling (PolySynth-equivalent in &lt;code&gt;NativePlayoutAdapter&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;MIDI clip trim/split (needs note-array slicing in &lt;code&gt;@waveform-playlist/engine&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;MIDI clip late-append via &lt;code&gt;_loadAndAppendClip&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Install&lt;/h2&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto"&gt;&lt;pre&gt;npm install @dawcore/components@0.0.15&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;PR: &lt;a class="issue-link js-issue-link" href="https://github.com/naomiaro/waveform-playlist/pull/385"&gt;#385&lt;/a&gt;&lt;/p&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>waveform-playlist</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>jamulus - Release 3.12.0 (r3_12_0)</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-05-02:tag:github.com,2008:Repository/177287710/r3_12_0</ns0:id>
    <ns0:updated>2026-05-02T18:59:31Z</ns0:updated>
    <ns0:published>2026-05-02T18:59:31Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/jamulussoftware/jamulus/releases/tag/r3_12_0" type="text/html"/>
    <ns0:summary type="html">&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;FreeBSD: make -6 option work properly with both IPv6 and IPv4 peers (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3664"&gt;#3664&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/softins"&gt;@softins&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Added missing override specifiers for virtual methods (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3667"&gt;#3667&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/softins"&gt;@softins&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Client+Server: Correct QoS setting for IPv6 (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3622"&gt;#3622&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/rdica"&gt;@rdica&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Tools: Updated checkkeys.pl to flag missing accelerator key in translation (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3635"&gt;#3635&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/softins"&gt;@softins&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Tools: Updated changelog-helper to report skipped PRs (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3639"&gt;#3639&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/softins"&gt;@softins&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Server/Client: Allow registration and display of longer version numbers (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3657"&gt;#3657&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/softins"&gt;@softins&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Extended SRV record support (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3556"&gt;#3556&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/softins"&gt;@softins&lt;/a&gt;, &lt;a class="user-mention notranslate" href="https://github.com/rdica"&gt;@rdica&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Client RPC: Added a jamulusclient/setFaderLevel method to the RPC remote interface (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3571"&gt;#3571&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/corrados"&gt;@corrados&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Client RPC: Added jamulusclient/pollServerList methods and jamulusclient/receivedServerList notification to JSON-RPC interface (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3479"&gt;#3479&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/ann0see"&gt;@ann0see&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Server RPC: Added jamulusserver/setDirectory request (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3533"&gt;#3533&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/pljones"&gt;@pljones&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;iOS/Android: Use compact view as default view on mobile OS for better usability (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3587"&gt;#3587&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/ann0see"&gt;@ann0see&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Added link to privacy policy (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3586"&gt;#3586&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/ann0see"&gt;@ann0see&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Tools: checkkeys.pl now automatically finds the translation directory (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3590"&gt;#3590&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/softins"&gt;@softins&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Tools: updated checkkeys.pl to use XML::LibXML (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3558"&gt;#3558&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/softins"&gt;@softins&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Tools: added improvements to changelog-helper.sh (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3459"&gt;#3459&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/softins"&gt;@softins&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Tools: Added missing Makefile.in files to Opus 1.5.2 distro (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3488"&gt;#3488&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/softins"&gt;@softins&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Translation: Added Japanese translation (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3568"&gt;#3568&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/tsukurun"&gt;@tsukurun&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Translation: Updated Slovak translation (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3650"&gt;#3650&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/jose1711"&gt;@jose1711&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Translations updated from Hosted Weblate (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3540"&gt;#3540&lt;/a&gt;, &lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3453"&gt;#3453&lt;/a&gt;, &lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3441"&gt;#3441&lt;/a&gt;, &lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3388"&gt;#3388&lt;/a&gt;, &lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3652"&gt;#3652&lt;/a&gt;, &lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3638"&gt;#3638&lt;/a&gt;, &lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3620"&gt;#3620&lt;/a&gt;, &lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3656"&gt;#3656&lt;/a&gt;, &lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3663"&gt;#3663&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/weblate"&gt;@weblate&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Client: Added MIDI tab to Settings GUI exposing MIDI parameters. MIDI Learn feature also added (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3502"&gt;#3502&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/ignotus666"&gt;@ignotus666&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Client: Added screen-reader accessibility to server list in the Connect dialog (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3606"&gt;#3606&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/chigkim"&gt;@chigkim&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Client: Bug: Fix missing variables passed to connect dialog (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3578"&gt;#3578&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/ann0see"&gt;@ann0see&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Client: Use the commit time rather than commit id for sort in --showallserver (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3562"&gt;#3562&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/pljones"&gt;@pljones&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Client: Fix sorting of version number in connect dialog with --showallservers (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3557"&gt;#3557&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/softins"&gt;@softins&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Client: Display version for each server in the Connect dialog (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3416"&gt;#3416&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/softins"&gt;@softins&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Client: Added "Sort by Channel" to mixer view (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3418"&gt;#3418&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/pljones"&gt;@pljones&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Client: allocate channel numbers locally and always give user own channel of 0 (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3426"&gt;#3426&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/softins"&gt;@softins&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Client: Apply rate-limiting to Pan change messages to eliminate lag in their effect (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3429"&gt;#3429&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/softins"&gt;@softins&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Client: Added native MIDI support to the ASIO (non-Jack) Windows build (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3431"&gt;#3431&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/softins"&gt;@softins&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Server: Disabled swap memory usage on Linux (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3381"&gt;#3381&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/dtinth"&gt;@dtinth&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Server: The &lt;code&gt;-m&lt;/code&gt;/&lt;code&gt;--htmlstatus&lt;/code&gt; option is considered deprecated and has been replaced by JSON RPC's &lt;code&gt;jamulusserver/getClients&lt;/code&gt; method. The &lt;code&gt;-m&lt;/code&gt; option will be removed in future (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3398"&gt;#3398&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/ann0see"&gt;@ann0see&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Windows: Avoid screensaver or sleeping if connected to a server (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3498"&gt;#3498&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/ann0see"&gt;@ann0see&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Linux: Reorder service initialization to wait for network interface before starting the Server (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3440"&gt;#3440&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/rdica"&gt;@rdica&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;iOS: Fixed GUI issue preventing the connect dialog to show correctly (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3343"&gt;#3343&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/ann0see"&gt;@ann0see&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;iOS: Add notes for iOS compiling documentation (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3594"&gt;#3594&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/ann0see"&gt;@ann0see&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;iOS: Add workaround from QTBUG-129651 for iOS FFMPEG linking (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3581"&gt;#3581&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/ann0see"&gt;@ann0see&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;iOS: Upgrade build for Qt 6 compatibility (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3445"&gt;#3445&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/ann0see"&gt;@ann0see&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;iOS: Return correct operating system version if run as server (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3360"&gt;#3360&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/ann0see"&gt;@ann0see&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;iOS: Added icon to iOS app (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3410"&gt;#3410&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/ann0see"&gt;@ann0see&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;iOS: Fix app hang if the language was changed (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3411"&gt;#3411&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/ann0see"&gt;@ann0see&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;iOS: Fix crash on Qt6 after closing the chat window (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3413"&gt;#3413&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/ann0see"&gt;@ann0see&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Build: Updated bundled Qt6 to version 6.10.1 (iOS 6.7.3) (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3407"&gt;#3407&lt;/a&gt;, &lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3262"&gt;#3262&lt;/a&gt;, &lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3599"&gt;#3599&lt;/a&gt;).&lt;br /&gt;
(contributed by @app/github-actions)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Build: Updated Windows Installer base (NSIS) to version 3.11 (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3483"&gt;#3483&lt;/a&gt;).&lt;br /&gt;
(contributed by @app/github-actions)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Build: Bump maxim-lobanov/setup-xcode from 1.6.0 to 1.7.0 (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3645"&gt;#3645&lt;/a&gt;).&lt;br /&gt;
(contributed by @app/dependabot)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Build: Bump actions/download-artifact from 7 to 8 (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3633"&gt;#3633&lt;/a&gt;).&lt;br /&gt;
(contributed by @app/dependabot)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Build: Bump actions/upload-artifact from 6 to 7 (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3634"&gt;#3634&lt;/a&gt;).&lt;br /&gt;
(contributed by @app/dependabot)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Build: Improvements and ASIO fix for Windows dependencies (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3612"&gt;#3612&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/softins"&gt;@softins&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Build: Windows: Move ASIO to GPL (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3553"&gt;#3553&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/gilgongo"&gt;@gilgongo&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Build: Updated Opus library to v1.5.2 (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3409"&gt;#3409&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/softins"&gt;@softins&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Build: Upgrade Android Runner to Ubuntu 22.04 (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3444"&gt;#3444&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/ann0see"&gt;@ann0see&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Build: Switch Linux ARM builds to be built on arm runners (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3470"&gt;#3470&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/ann0see"&gt;@ann0see&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Build: Provide continued legacy macOS support (but moving Sierra to High Sierra as minimum target) (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3579"&gt;#3579&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/pljones"&gt;@pljones&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Build: Updated the Github build runner for MacOS Legacy to macos-13 (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3436"&gt;#3436&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/softins"&gt;@softins&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Build: Bump ASIO-SDK from asiosdk_2.3.3_2019-06-14 to ASIO-SDK_2.3.4_2025-10-15 (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3617"&gt;#3617&lt;/a&gt;).&lt;br /&gt;
(contributed by @app/github-actions)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Build: Bump Qt6 from 6.10.1 to 6.10.2 (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3616"&gt;#3616&lt;/a&gt;).&lt;br /&gt;
(contributed by @app/github-actions)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Build: Updated create-dmg (macOS) to version 1.2.3 (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3561"&gt;#3561&lt;/a&gt;).&lt;br /&gt;
(contributed by @app/github-actions)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Build: Bump actions/checkout from 4 to 6 (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3566"&gt;#3566&lt;/a&gt;).&lt;br /&gt;
(contributed by @app/dependabot)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Build: Bump github/codeql-action from 3 to 4 (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3549"&gt;#3549&lt;/a&gt;).&lt;br /&gt;
(contributed by @app/dependabot)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Build: Bump actions/cache from 4 to 5 (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3574"&gt;#3574&lt;/a&gt;).&lt;br /&gt;
(contributed by @app/dependabot)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Build: Bump actions/upload-artifact from 4 to 6 (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3576"&gt;#3576&lt;/a&gt;).&lt;br /&gt;
(contributed by @app/dependabot)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Build: Bump actions/download-artifact from 4 to 7 (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3575"&gt;#3575&lt;/a&gt;).&lt;br /&gt;
(contributed by @app/dependabot)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Build: Bump DoozyX/clang-format-lint-action from 0.18.2 to 0.20 (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3490"&gt;#3490&lt;/a&gt;).&lt;br /&gt;
(contributed by @app/dependabot)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Build: Bump DoozyX/clang-format-lint-action from 11b773b1598aa4ae3b32f023701bca5201c3817d to c71d0bf4e21876ebec3e5647491186f8797fde31 (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3368"&gt;#3368&lt;/a&gt;).&lt;br /&gt;
(contributed by @app/dependabot)&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>jamulus</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>fooyin - v0.10.4</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-05-02:tag:github.com,2008:Repository/505401707/v0.10.4</ns0:id>
    <ns0:updated>2026-05-02T11:34:32Z</ns0:updated>
    <ns0:published>2026-05-02T11:34:32Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/fooyin/fooyin/releases/tag/v0.10.4" type="text/html"/>
    <ns0:summary type="html">&lt;p&gt;Update to 0.10.4&lt;/p&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>fooyin</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>shoopdaloop - Tracy binaries for ci builds</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-05-02:tag:github.com,2008:Repository/658452503/build-assets-2</ns0:id>
    <ns0:updated>2026-05-02T09:02:10Z</ns0:updated>
    <ns0:published>2026-05-02T09:02:10Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/SanderVocke/shoopdaloop/releases/tag/build-assets-2" type="text/html"/>
    <ns0:summary type="html">&lt;p&gt;Tracy binaries to be used in ci testing&lt;/p&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>shoopdaloop</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>seq66 - Mitt Igation</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-05-01:tag:github.com,2008:Repository/206158002/0.99.24</ns0:id>
    <ns0:updated>2026-05-01T15:51:26Z</ns0:updated>
    <ns0:published>2026-05-01T15:51:26Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/ahlstromcj/seq66/releases/tag/0.99.24" type="text/html"/>
    <ns0:summary type="html">&lt;p&gt;Release Notes for Seq66 v. 0.99.24 2026-05-01 "Mitt Igation"&lt;/p&gt;
&lt;p&gt;This release contains some minor feature updates and fixes.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Pattern editor.
&lt;ul&gt;
&lt;li&gt;Added the display of a drum-note's name when in drum&lt;br /&gt;
mode and hovering near a drum-note to modify it.&lt;/li&gt;
&lt;li&gt;Added the ability to show hex numbers for the standard&lt;br /&gt;
MIDI controller events.&lt;/li&gt;
&lt;li&gt;Added two buttons, one that toggles showing certain numbers&lt;br /&gt;
between hexadecimal and decimal format, and&lt;br /&gt;
the other toggles showing level numbers to reduce&lt;br /&gt;
clutter.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Event editor.
&lt;ul&gt;
&lt;li&gt;Added the ability to show hex numbers for standard&lt;br /&gt;
MIDI controller events.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Backed autoconf version from 2.72 to 2.71 re issue &lt;a class="issue-link js-issue-link" href="https://github.com/ahlstromcj/seq66/issues/145"&gt;#145&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Fixed some more QMouseEvent x()/y() deprecations found by Clang.&lt;/li&gt;
&lt;li&gt;qseq66.rc.
&lt;ul&gt;
&lt;li&gt;Change auto-rc-save to default to false.&lt;/li&gt;
&lt;li&gt;Added a flag so that the 'rc' file can be saved at&lt;br /&gt;
first run (no existing configuration files) without&lt;br /&gt;
setting auto-rc-save.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Main window.
&lt;ul&gt;
&lt;li&gt;Fixed a random segfault when the "Remap &amp;amp; Restart" pops up&lt;br /&gt;
if a pattern editor is open, the user clicks OK, selects a&lt;br /&gt;
different tune is selected.&lt;/li&gt;
&lt;li&gt;A similar segfault with the "Unavailable port" message.&lt;br /&gt;
The fix is to stop the qseqeditframe64 timer before&lt;br /&gt;
the close() call.&lt;/li&gt;
&lt;li&gt;A similar segfault with the "LFO" dialog. Fixed by no&lt;br /&gt;
longer resetting the MIDI events when the close event&lt;br /&gt;
occurs.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Pattern editor.
&lt;ul&gt;
&lt;li&gt;Mitigated issue &lt;a class="issue-link js-issue-link" href="https://github.com/ahlstromcj/seq66/issues/144"&gt;#144&lt;/a&gt; (painted notes misplaced in time)&lt;br /&gt;
for normal notes and drum notes by adjusting the&lt;br /&gt;
snap point.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Fixed more Qt6 deprecations. QtCreator to use Qt 6 namespaces.&lt;/li&gt;
&lt;li&gt;Added a Windows installer for this release. A user request!&lt;/li&gt;
&lt;li&gt;Documentation updated.&lt;/li&gt;
&lt;li&gt;Moved the LICENSE files to "licenses" sub-directory.&lt;/li&gt;
&lt;/ul&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>seq66</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>rncbc.org - a.k.a. Rui Nuno Capela - Qtractor 1.6.0 - A Spring'26 Release</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-05-01:2900 at https://www.rncbc.org/drupal</ns0:id>
    <ns0:updated>2026-05-01T11:00:00Z</ns0:updated>
    <ns0:published>2026-05-01T11:00:00Z</ns0:published>
    <ns0:link rel="alternate" href="https://www.rncbc.org/drupal/node/2900" type="text/html"/>
    <ns0:summary type="html">&lt;span class="field field--name-title field--type-string field--label-hidden"&gt;Qtractor 1.6.0 - A Spring'26 Release&lt;/span&gt;

            &lt;div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"&gt;&lt;p&gt;&lt;a href="https://qtractor.org" name="qtractor"&gt;&lt;img align="left" hspace="4" src="https://www.rncbc.org/drupal/files/qtractor.png" title="Qtractor" vspace="4" /&gt;&lt;/a&gt;&lt;a href="https://qtractor.org"&gt;&lt;img align="right" hspace="8" src="https://www.rncbc.org/drupal/files/qtractor-preflect21s.png" title="Qtractor" vspace="4" /&gt;&lt;/a&gt;Hi all,&lt;/p&gt;
&lt;dd&gt;
  &lt;b&gt;&lt;a href="https://qtractor.org"&gt;Qtractor&lt;/a&gt; 1.6.0&lt;/b&gt; (&lt;i&gt;spring'26&lt;/i&gt;) is released!
&lt;/dd&gt;
&lt;p&gt;Change-log:
&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;Probable fix to LV2 plug-in UIs in reflecting state/preset changes visually.&lt;/li&gt;
&lt;li&gt;OSC (Open Sound Control) support has been finally introduced, similar to keyboard and MIDI controller shortcuts, it allows the discrete mapping of OSC handlers to any main menu command actions (cf. View/Options.../OSC)&lt;/li&gt;
&lt;li&gt;Fixed move/copy of Audio/MIDI Insert pseudo-plugins to keep their respective send/return connections.&lt;/li&gt;
&lt;li&gt;Improved main session File/Save As... requester dialogs, now taking into a better account the selected file type filters: Default session files (*.qtr), Regular session files (*.qts), Template session files (*.qtt) and Archive/zip session files (*.qtz); drop useless All files (*.*) filter.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Description:
&lt;/p&gt;&lt;dd&gt;
&lt;a href="https://qtractor.org"&gt;Qtractor&lt;/a&gt; is an audio/MIDI multi-track sequencer application written in C++ with the &lt;a href="http://qt.io"&gt;Qt&lt;/a&gt; framework. Target platform is Linux, where the Jack Audio Connection Kit (&lt;a href="https://jackaudio.org"&gt;JACK&lt;/a&gt;) for audio and the Advanced Linux Sound Architecture (&lt;a href="https://www.alsa-project.org"&gt;ALSA&lt;/a&gt;) for MIDI are the main infrastructures to evolve as a fairly-featured Linux desktop audio workstation GUI, specially dedicated to the personal home-studio.&lt;/dd&gt;
&lt;p&gt;Website:
&lt;/p&gt;&lt;dd&gt;
  &lt;a href="https://qtractor.org"&gt;https://qtractor.org&lt;/a&gt;
&lt;/dd&gt;
&lt;p&gt;Project page:
&lt;/p&gt;&lt;dd&gt;
  &lt;a href="https://sourceforge.net/projects/qtractor"&gt;https://sourceforge.net/projects/qtractor&lt;/a&gt;
&lt;/dd&gt;
&lt;p&gt;Downloads:
&lt;/p&gt;&lt;dd&gt;
  &lt;a href="https://sourceforge.net/projects/qtractor/files"&gt;https://sourceforge.net/projects/qtractor/files&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;source tarball:&lt;br /&gt;
  &lt;a href="https://download.sf.net/qtractor/qtractor-1.6.0.tar.gz"&gt;&lt;b&gt;qtractor-1.6.0.tar.gz&lt;/b&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;source package (openSUSE Tumbleweed):&lt;br /&gt;
  &lt;a href="https://download.sf.net/qtractor/qtractor-1.6.0-20.1.rncbc.suse.src.rpm"&gt;qtractor-1.6.0-20.1.rncbc.suse.src.rpm&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;binary package (openSUSE Tumbleweed):&lt;br /&gt;
  &lt;a href="https://download.sf.net/qtractor/qtractor-1.6.0-20.1.rncbc.suse.x86_64.rpm"&gt;qtractor-1.6.0-20.1.rncbc.suse.x86_64.rpm&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://appimage.org"&gt;AppImage&lt;/a&gt; packages:&lt;br /&gt;
  &lt;a href="https://download.sf.net/qtractor/qtractor-1.6.0-20.1.x86_64.AppImage"&gt;qtractor-1.6.0-20.1.x86_64.AppImage&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="https://flatpak.org/"&gt;Flatpak&lt;/a&gt; package:&lt;br /&gt;
  &lt;a href="https://flathub.org/apps/details/org.rncbc.qtractor"&gt;https://flathub.org/apps/details/org.rncbc.qtractor&lt;/a&gt;&lt;/li&gt;
&lt;p&gt;&lt;/p&gt;
&lt;li&gt;&lt;a href="https://build.opensuse.org/"&gt;OBS&lt;/a&gt; packages (&lt;a href="https://www.rncbc.org/drupal/page/repos"&gt;repos&lt;/a&gt;):&lt;br /&gt;
  &lt;a href="https://software.opensuse.org//download.html?project=home:rncbc&amp;amp;package=qtractor"&gt;&lt;img alt="build result" src="https://build.opensuse.org/projects/home:rncbc/packages/qtractor/badge.svg?type=default" /&gt;&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;/dd&gt;
&lt;p&gt;Git repos:
&lt;/p&gt;&lt;dd&gt;
  &lt;a href="https://git.code.sf.net/p/qtractor/code"&gt;https://git.code.sf.net/p/qtractor/code&lt;/a&gt;&lt;br /&gt;
  &lt;a href="https://github.com/rncbc/qtractor.git"&gt;https://github.com/rncbc/qtractor.git&lt;/a&gt;&lt;br /&gt;
  &lt;a href="https://gitlab.com/rncbc/qtractor.git"&gt;https://gitlab.com/rncbc/qtractor.git&lt;/a&gt;&lt;br /&gt;
  &lt;a href="https://codeberg.org/rncbc/qtractor.git"&gt;https://codeberg.org/rncbc/qtractor.git&lt;/a&gt;
&lt;/dd&gt;
&lt;p&gt;Wiki:
&lt;/p&gt;&lt;dd&gt;
  &lt;a href="https://sourceforge.net/p/qtractor/wiki/"&gt;https://sourceforge.net/p/qtractor/wiki/&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;static rendering:&lt;br /&gt;
  &lt;a href="https://qtractor.org/doc"&gt;https://qtractor.org/doc&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;user manual &amp;amp; how-to's:&lt;br /&gt;
  &lt;a href="https://download.sf.net/qtractor/qtractor-manual-and-howtos.epub"&gt;qtractor-manual-and-howtos.epub&lt;/a&gt;&lt;br /&gt;
  &lt;a href="https://download.sf.net/qtractor/qtractor-manual-and-howtos.pdf"&gt;qtractor-manual-and-howtos.pdf&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/dd&gt;
&lt;p&gt;License:
&lt;/p&gt;&lt;dd&gt;
  &lt;a href="https://qtractor.org"&gt;Qtractor&lt;/a&gt; is free, open-source &lt;a href="https://linuxaudio.org"&gt;Linux Audio&lt;/a&gt; software, distributed under the terms of the GNU General Public License (&lt;a href="https://www.gnu.org/copyleft/gpl.html"&gt;GPL&lt;/a&gt;) version 2 or later.
&lt;/dd&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Enjoy &amp;amp;&amp;amp; Keep the fun!&lt;/p&gt;
&lt;p&gt;&lt;!--rncbc.org donate buttons--&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="https://paypal.me/rncbc" target="_blank"&gt;&lt;img alt="Donate to rncbc.org using PayPal" border="0" src="https://www.rncbc.org/drupal/files/donate1.png" title="Donate to rncbc.org using PayPal" /&gt;&lt;/a&gt; &lt;a href="https://liberapay.com/rncbc/donate" target="_blank"&gt;&lt;img alt="Donate to rncbc.org using Liberapay" border="0" height="22" src="https://liberapay.com/assets/widgets/donate.svg" title="Donate to rncbc.org using Liberapay" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;!--break--&gt;&lt;/div&gt;
      &lt;span class="field field--name-uid field--type-entity-reference field--label-hidden"&gt;&lt;span&gt;rncbc&lt;/span&gt;&lt;/span&gt;
&lt;span class="field field--name-created field--type-created field--label-hidden"&gt;&lt;time class="datetime" datetime="2026-05-01T11:00:00+00:00" title="Friday, 1 May 2026 - 11:00"&gt;Fri, 1 May 2026 - 11:00&lt;/time&gt;
&lt;/span&gt;
&lt;section class="field field--name-comment-node-blog field--type-comment field--label-hidden comment-wrapper"&gt;
  
  

      &lt;h2 class="title comment-form__title"&gt;Add new comment&lt;/h2&gt;
    
  
&lt;/section&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>rncbc.org - a.k.a. Rui Nuno Capela</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>Home on Libre Arts - GSoC2026: what to expect</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-05-01:https://librearts.org/2026/04/gsoc2026-projects/</ns0:id>
    <ns0:updated>2026-05-01T00:00:00Z</ns0:updated>
    <ns0:published>2026-05-01T00:00:00Z</ns0:published>
    <ns0:link rel="alternate" href="https://librearts.org/2026/04/gsoc2026-projects/" type="text/html"/>
    <ns0:summary type="html">&lt;p&gt;Google has just published the &lt;a href="https://summerofcode.withgoogle.com/programs/2026/projects" rel="noopener" target="_blank"&gt;list of students&lt;/a&gt; accepted into the Google Summer of Code 2026 program.&lt;/p&gt;
&lt;p&gt;Some of the teams usually participating are off this year: Krita and Inkscape are temporarily out of mentors. Let&amp;rsquo;s take a look at the rest of them.&lt;/p&gt;
&lt;h2 id="gimp"&gt;
    &lt;a href="#gimp"&gt;
	GIMP
    &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;Akascape will completely &lt;a href="https://summerofcode.withgoogle.com/programs/2026/projects/FOTN5k6d" rel="noopener" target="_blank"&gt;revamp the keyboard shortcuts configuration dialog&lt;/a&gt; and add support for importing and exporting presets, as well as support for multiple shortcuts per action.&lt;/p&gt;
&lt;p&gt;blezecon will work on creating an &lt;a href="https://summerofcode.withgoogle.com/programs/2026/projects/vOQmm3B4" rel="noopener" target="_blank"&gt;automated infrastructure&lt;/a&gt; for validating, publishing, and distributing GIMP extensions.&lt;/p&gt;
&lt;p&gt;v4vansh will &lt;a href="https://summerofcode.withgoogle.com/programs/2026/projects/iZpusJ8W" rel="noopener" target="_blank"&gt;update GIMP&amp;rsquo;s text engine&lt;/a&gt; to use HarfBuzz directly to extract font data, so that you have better control over formatting and access to various OpenType features.&lt;/p&gt;
&lt;p&gt;Waris Maqbool will &lt;a href="https://summerofcode.withgoogle.com/programs/2026/projects/93YKgzUh" rel="noopener" target="_blank"&gt;create PSD-compatible&lt;/a&gt; gegl:inner-glow and gegl:bevel operations to use in the PSD importer. They will also port the legacy Sharpen to make it a GEGL meta-operation.&lt;/p&gt;
&lt;h2 id="graphite"&gt;
    &lt;a href="#graphite"&gt;
	Graphite
    &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;This vector/bitmap editor is still relatively unknown, and yet this isn&amp;rsquo;t the first time they are GSoC participants.&lt;/p&gt;

&lt;div style="padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
  
&lt;/div&gt;

&lt;p&gt;∅space will add currently missing &lt;a href="https://summerofcode.withgoogle.com/programs/2026/projects/xmzkZBJD" rel="noopener" target="_blank"&gt;support for SVG features&lt;/a&gt; like gradients, patterns, and a text-on-path. They will also create a fallback system so that currently unsupported (as in editing) features would be rasterized and imported as bitmaps.&lt;/p&gt;
&lt;p&gt;Ayush Amawate will &lt;a href="https://summerofcode.withgoogle.com/programs/2026/projects/PPOJpLlU" rel="noopener" target="_blank"&gt;refactor the on-canvas gizmo code&lt;/a&gt; to remove duplicated code and add reusable gizmos (slider, dial, angle) for shape-drawing tools.&lt;/p&gt;
&lt;p&gt;Bunnyy aims to &lt;a href="https://summerofcode.withgoogle.com/programs/2026/projects/pZMifaTq" rel="noopener" target="_blank"&gt;improve the text functionality&lt;/a&gt;: add a lorem ipsum generator, formatting spans and typographical parameters, text on path, commands to enforce lower-/upper-/title-casing, hyphenation, font fallbacks, flows between text areas, ligatures and vertical typing toggles, and so on.&lt;/p&gt;
&lt;p&gt;Timon Schelling will be adding a &lt;a href="https://summerofcode.withgoogle.com/programs/2026/projects/TQhpRSAt" rel="noopener" target="_blank"&gt;GPU-accelerated brush engine&lt;/a&gt;. The plan is to introduce non-destructive, resolution-independent stroke rendering with support for stylus pressure and tilt.&lt;/p&gt;
&lt;p&gt;Yohei Yamasaki will &lt;a href="https://summerofcode.withgoogle.com/programs/2026/projects/DvRD1zoE" rel="noopener" target="_blank"&gt;refactor Graphite&lt;/a&gt; to create a more generalized graphic representation of paints (colors, gradients, patterns, etc.) as ordinary layers. The net outcome will be dedicated Gradient and Pattern nodes, as well as updated Fill and Stroke nodes.&lt;/p&gt;
&lt;h2 id="synfig"&gt;
    &lt;a href="#synfig"&gt;
	Synfig
    &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;ahmedfathy0-0 will add a lattice-based &lt;a href="https://summerofcode.withgoogle.com/programs/2026/projects/02jc4MOG" rel="noopener" target="_blank"&gt;free-form deformation layer&lt;/a&gt; to enable organic deformations like squash-and-stretch or facial movements.&lt;/p&gt;
&lt;p&gt;Yukta will add &lt;a href="https://summerofcode.withgoogle.com/programs/2026/projects/nDSe18rH" rel="noopener" target="_blank"&gt;per-character text animation&lt;/a&gt; support so that things like a typewriter effect are easy to achieve.&lt;/p&gt;
&lt;h2 id="digikam"&gt;
    &lt;a href="#digikam"&gt;
	Digikam
    &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;Srirupa Datta will add an new interface to the database search engine and &lt;a href="https://summerofcode.withgoogle.com/programs/2026/projects/qyiUD0bH" rel="noopener" target="_blank"&gt;hook up a lightweight LLM&lt;/a&gt; to translate natural-language requests into the right combination of structured filters.&lt;/p&gt;
&lt;h2 id="blender"&gt;
    &lt;a href="#blender"&gt;
	Blender
    &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;Bipin_ will be adding &lt;a href="https://summerofcode.withgoogle.com/programs/2026/projects/IVkxBrR2" rel="noopener" target="_blank"&gt;importing and exporting of OpenTimelineIO&lt;/a&gt; (.otio) files to VSE.&lt;/p&gt;
&lt;p&gt;il4n will &lt;a href="https://summerofcode.withgoogle.com/programs/2026/projects/12otrFZQ" rel="noopener" target="_blank"&gt;add handles to transitions&lt;/a&gt; such as crossfades in the VSE, so that users can move the transitions and change their length.&lt;/p&gt;
&lt;p&gt;Criss-Ivana will port the following &lt;a href="https://summerofcode.withgoogle.com/programs/2026/projects/CN7EtQiK" rel="noopener" target="_blank"&gt;matrix &amp;amp; math utility nodes&lt;/a&gt; into the Compositor: Matrix SVD, Bit Math, Boolean Math, Integer Math, Compare, Float To Int, Hash Value, and Random Value.&lt;/p&gt;
&lt;p&gt;Evan Luo will &lt;a href="https://summerofcode.withgoogle.com/programs/2026/projects/PAbcUvME" rel="noopener" target="_blank"&gt;improve mesh smoothing&lt;/a&gt; by overcome fundamental limitations, such as volume shrinkage, no frequency selectivity, and selection boundary artifacts.&lt;/p&gt;
&lt;p&gt;Henry Jiang will &lt;a href="https://summerofcode.withgoogle.com/programs/2026/projects/c7OJAvyL" rel="noopener" target="_blank"&gt;improve loop editing&lt;/a&gt;: add clone support for Edge Slide, implement edge loop adjustment via spline interpolation, and add loop cut curvature preservation.&lt;/p&gt;
&lt;p&gt;Jerry Wei will &lt;a href="https://summerofcode.withgoogle.com/programs/2026/projects/48scIGRq" rel="noopener" target="_blank"&gt;improve the brush engine&lt;/a&gt;: add brush tip roundness for more brushes, customizable pressure curves for all pressure-sensitive parameters, customizable brush toggling and improved toggle display, etc.&lt;/p&gt;
&lt;p&gt;Owen O&amp;rsquo;Malley will introduce the &lt;a href="https://summerofcode.withgoogle.com/programs/2026/projects/WK7NwHmb" rel="noopener" target="_blank"&gt;MaterialX standard node library&lt;/a&gt; into Blender&amp;rsquo;s shader editor as first-class native nodes.&lt;/p&gt;
&lt;p&gt;Yogeshgouda_Patil will improve &lt;a href="https://summerofcode.withgoogle.com/programs/2026/projects/z1TyuOzu" rel="noopener" target="_blank"&gt;regression test coverage&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="freecad"&gt;
    &lt;a href="#freecad"&gt;
	FreeCAD
    &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;Aymi will be working on bridging the 3rd-party Motion workbench with the FEM workbench to created &lt;a href="https://summerofcode.withgoogle.com/programs/2026/projects/RwPp9Yy0" rel="noopener" target="_blank"&gt;animated multibody dynamics visualizations&lt;/a&gt;. It&amp;rsquo;s going to be a very challenging project, but she has great mentors on her side: long-time FEM contributor Mario Alexis and multi-body dynamics expert Aik-Siong Koh who is behind the assembly solver of FreeCAD and one of the two developers behind &lt;a href="https://mbdfem.com/" rel="noopener" target="_blank"&gt;MbdFEM&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Morten Vajhøj will be &lt;a href="https://summerofcode.withgoogle.com/programs/2026/projects/lne1ugHq" rel="noopener" target="_blank"&gt;overhauling the user experience in the TechDraw workbench&lt;/a&gt;. His focus will be on changing the way you annotate geometry: instead of selecting an object and then choosing the command you will now select what you want to do and then what to apply it to. This will bring TD in line with the rest of FreeCAD. Of course, applicable objects under the cursor will be highlighted, and inapplicable objects will be unavailable for the selected tool.&lt;/p&gt;
&lt;p&gt;Nishendra Singh will attempt to &lt;a href="https://summerofcode.withgoogle.com/programs/2026/projects/VdVDpBZw" rel="noopener" target="_blank"&gt;revive and modernize the Robot workbench&lt;/a&gt;. This is going to be a colossal effort that, I&amp;rsquo;ve no doubt, will have to continue past the GSoC22026 deadline. This project&amp;rsquo;s scope is replacing CSV/DH file imports with URDF imports, exporting the joint &amp;amp; trajectory data, &lt;a href="https://www.orocos.org/kdl.html" rel="noopener" target="_blank"&gt;Orocos KDL&lt;/a&gt; kinematics library refresh (currently years behind the upstream), and updating the documentation.&lt;/p&gt;
&lt;p&gt;Parag Debnath will &lt;a href="https://summerofcode.withgoogle.com/programs/2026/projects/VAc9SHdM" rel="noopener" target="_blank"&gt;integrate the buildingSMART Data Dictionary&lt;/a&gt; into the BIM workbench, so you can search and apply international classification standards from the cloud to selected IFC entities.&lt;/p&gt;
&lt;p&gt;YashSuthar983 will create an initial version of the &lt;a href="https://summerofcode.withgoogle.com/programs/2026/projects/Ls1lJhGB" rel="noopener" target="_blank"&gt;3D parametric sketching workbench&lt;/a&gt; that could be later merged into the existing Sketcher workbench. For that, the student will extend the existing PlaneGCS solver to 3D by adding new primitives and spatial constraints.&lt;/p&gt;
&lt;p&gt;Some of the students have been active in the project recently. Morten Vajhøj has 8 pull requests for the Measure tool merged. For YashSuthar983, 25 pull requests have already been merged (mainly around the core, Sketcher, and the Measure tool), another 5 PRs are open (for Sketcher, the Measure tool, and PartDesign).&lt;/p&gt;
&lt;h2 id="brl-cad-et-al"&gt;
    &lt;a href="#brl-cad-et-al"&gt;
	BRL-CAD et al.
    &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;In the Google Summer of Code program, BRL-CAD is an umbrella organization comprised of OpenSCAD, IfcOpenShell, Bonsai BIM (formerly Blender BIM), and BRL-CAD itself.&lt;/p&gt;
&lt;p&gt;AnshulPatil2005 &lt;a href="https://summerofcode.withgoogle.com/programs/2026/projects/NYc0KwJO" rel="noopener" target="_blank"&gt;will improve&lt;/a&gt; Manifold’s CI and benchmarking by adding missing determinism, sanitizer, and performance regression checks.&lt;/p&gt;
&lt;p&gt;Bidyendu will add an &lt;a href="https://summerofcode.withgoogle.com/programs/2026/projects/Bb5fzRQS" rel="noopener" target="_blank"&gt;optional AI assistant for OpenSCAD&lt;/a&gt; using either locally running models via Ollama or any OpenAI-compatible server, at user&amp;rsquo;s preference. The intention is to give users the ability to use the benefits of AI without compromising privacy.&lt;/p&gt;
&lt;p&gt;RaghavSharma0125 will add an &lt;a href="https://summerofcode.withgoogle.com/programs/2026/projects/xpLHyPVS" rel="noopener" target="_blank"&gt;MCP server to BRL-CAD&lt;/a&gt;, so you can interact with the program through any external MCP client.&lt;/p&gt;
&lt;p&gt;Kanchan Borole will improve the &lt;a href="https://summerofcode.withgoogle.com/programs/2026/projects/3DJH0uIr" rel="noopener" target="_blank"&gt;Geometry Verification and Validation (V&amp;amp;V)&lt;/a&gt; user interface in Arbalest, the Qt-based UI for BRL-CAD.&lt;/p&gt;
&lt;p&gt;MYoder will enhance Bonsai BIM (formerly Blender BIM) with tools for &lt;a href="https://summerofcode.withgoogle.com/programs/2026/projects/3AS3CwxU" rel="noopener" target="_blank"&gt;BIM-type modeling of roadways&lt;/a&gt; using the IFC 4.3 schema. TThe scope of the project is vertical alignments (horizontal already implemented), cross-section profiles, and corridor generation.&lt;/p&gt;
&lt;h2 id="pitivi"&gt;
    &lt;a href="#pitivi"&gt;
	Pitivi
    &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;The video editor has been participating at GSoC for years through the GNOME Foundation org. This year, Michael Calabrese will be &lt;a href="https://summerofcode.withgoogle.com/programs/2026/projects/IS6rBPhP" rel="noopener" target="_blank"&gt;rewriting the timeline ruler in GTK4/Rust&lt;/a&gt; to make it more robust.&lt;/p&gt;
&lt;h2 id="kdenlive"&gt;
    &lt;a href="#kdenlive"&gt;
	Kdenlive
    &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;Yash Bavadiya will &lt;a href="https://summerofcode.withgoogle.com/programs/2026/projects/tGyN2GMO" rel="noopener" target="_blank"&gt;improve the UI&lt;/a&gt; for three parts of the program: create a tabbed per-channel widget for the Curves effect, implement a gradient editor with arbitrary draggable color stops,  and add Bezier handle support on RemapView connector lines with easing presets for the Time Remapping panel.&lt;/p&gt;
&lt;h2 id="mixxx"&gt;
    &lt;a href="#mixxx"&gt;
	Mixxx
    &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;Ayush Sah will &lt;a href="https://summerofcode.withgoogle.com/programs/2026/projects/kEDmkJTi" rel="noopener" target="_blank"&gt;rebuild the LateNight skin&lt;/a&gt; as a 100% native QML interface. This is supposed to reduce the CPU overhead and bring cleaner architecture.&lt;/p&gt;
&lt;p&gt;Priyanshuwu will add &lt;a href="https://summerofcode.withgoogle.com/programs/2026/projects/ZZPd1YLV" rel="noopener" target="_blank"&gt;PipeWire support&lt;/a&gt; so that audio can be freely routed. They will also attempt to achieve ALSA-comparable latency with the new audio backend.&lt;/p&gt;
&lt;h2 id="grame"&gt;
    &lt;a href="#grame"&gt;
	GRAME
    &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;GRAME is not a very well-known org, but if you are into audio, you may have heard of Faust, a functional programming language for sound synthesis and audio processing. There are two very cool GSoC projects this year.&lt;/p&gt;
&lt;p&gt;Blake North will be &lt;a href="https://summerofcode.withgoogle.com/programs/2026/projects/UlSUtgZt" rel="noopener" target="_blank"&gt;integrating Faust into Bespoke Synth&lt;/a&gt;. Essentially, you will be able to edit and run Faust programs in real-time.&lt;/p&gt;
&lt;p&gt;Another student, Mithaniel V., will &lt;a href="https://summerofcode.withgoogle.com/programs/2026/projects/8wYhjpfe" rel="noopener" target="_blank"&gt;integrate Faust into the Godot game engine&lt;/a&gt;. There will be two deliverables: a Faust Godot extension and a command line tool to compile Faust programs into Godot native language statically.&lt;/p&gt;
&lt;h2 id="more-projects"&gt;
    &lt;a href="#more-projects"&gt;
	More projects
    &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;I don&amp;rsquo;t usually cover &lt;a href="https://summerofcode.withgoogle.com/programs/2026/organizations/videolan" rel="noopener" target="_blank"&gt;VLC&lt;/a&gt; and &lt;a href="https://summerofcode.withgoogle.com/programs/2026/organizations/ffmpeg" rel="noopener" target="_blank"&gt;FFmpeg&lt;/a&gt;, but they do have students this year as well.&lt;/p&gt;
&lt;p&gt;If you are interested in astronomy and space exploration, check our &lt;a href="https://summerofcode.withgoogle.com/programs/2026/organizations/openastronomy" rel="noopener" target="_blank"&gt;OpenAstronomy&lt;/a&gt; and &lt;a href="https://summerofcode.withgoogle.com/programs/2026/organizations/librecube-initiative" rel="noopener" target="_blank"&gt;LibreCube&lt;/a&gt; projects.&lt;/p&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>Home on Libre Arts</ns0:name>
    </ns0:author>
    <ns0:category term="general"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>neural-amp-modeler - Version 0.12.3</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-04-30:tag:github.com,2008:Repository/163906234/v0.12.3</ns0:id>
    <ns0:updated>2026-04-30T19:14:48Z</ns0:updated>
    <ns0:published>2026-04-30T19:14:48Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/sdatkinson/neural-amp-modeler/releases/tag/v0.12.3" type="text/html"/>
    <ns0:summary type="html">&lt;p&gt;&lt;em&gt;This release proactively guards against a known security incident in the package's PyTorch Lightning dependency. See &lt;a class="issue-link js-issue-link" href="https://github.com/sdatkinson/neural-amp-modeler/issues/656"&gt;#656&lt;/a&gt; for context.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Full Changelog&lt;/strong&gt;: &lt;a class="commit-link" href="https://github.com/sdatkinson/neural-amp-modeler/compare/v0.12.2...v0.12.3"&gt;&lt;tt&gt;v0.12.2...v0.12.3&lt;/tt&gt;&lt;/a&gt;&lt;/p&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>neural-amp-modeler</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>rncbc.org - a.k.a. Rui Nuno Capela - Vee One Suite 1.4.2 - A Spring'26 Release</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-04-30:2899 at https://www.rncbc.org/drupal</ns0:id>
    <ns0:updated>2026-04-30T19:00:00Z</ns0:updated>
    <ns0:published>2026-04-30T19:00:00Z</ns0:published>
    <ns0:link rel="alternate" href="https://www.rncbc.org/drupal/node/2899" type="text/html"/>
    <ns0:summary type="html">&lt;span class="field field--name-title field--type-string field--label-hidden"&gt;Vee One Suite 1.4.2 - A Spring'26 Release&lt;/span&gt;

            &lt;div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"&gt;&lt;p&gt;&lt;img align="right" hspace="8" src="https://www.rncbc.org/drupal/files/vee-one-suite-21-R5s.png" title="Vee One Suite" vspace="8" /&gt;Hi all,&lt;/p&gt;
&lt;p&gt;The &lt;em&gt;Vee One Suite&lt;/em&gt;, the &lt;em&gt;gang-of-four&lt;/em&gt; &lt;em&gt;old-school&lt;/em&gt; software instruments,&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;&lt;a href="https://www.rncbc.org/drupal/#synthv1"&gt;synthv1&lt;/a&gt;&lt;/b&gt; as a polyphonic subtractive synthesizer;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;a href="https://www.rncbc.org/drupal/#samplv1"&gt;samplv1&lt;/a&gt;&lt;/b&gt; a polyphonic sampler synthesizer;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;a href="https://www.rncbc.org/drupal/#drumkv1"&gt;drumkv1&lt;/a&gt;&lt;/b&gt; as yet another drum-kit sampler;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;a href="https://www.rncbc.org/drupal/#padthv1"&gt;padthv1&lt;/a&gt;&lt;/b&gt; a polyphonic additive synthesizer.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Are here updated to the (northern) &lt;i&gt;Spring'26&lt;/i&gt; season...&lt;/p&gt;
&lt;p&gt;Still delivered in dual form:
&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;a pure stand-alone &lt;a&gt;JACK&lt;/a&gt; client with JACK-session, NSM (&lt;a href="http://non.tuxfamily.org/nsm/"&gt;Non&lt;/a&gt;/&lt;a href="https://new-session-manager.jackaudio.org/"&gt;New&lt;/a&gt; Session Management) and both JACK MIDI and &lt;a href="https://www.alsa-project.org"&gt;ALSA&lt;/a&gt; MIDI input support;&lt;/li&gt;
&lt;li&gt;a &lt;a href="https://lv2plug.in"&gt;LV2&lt;/a&gt; instrument plug-in.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Change-log:
&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;Fixed the opening/loading sample file of an empty element, often requiring a second try to show up correctly on the LV2 Plug-in's GUI (JACK stand-alone was/is fine; applies to &lt;a href="https://www.rncbc.org/drupal/#drumkv1"&gt;drumkv1&lt;/a&gt; only)&lt;/li&gt;
&lt;li&gt;Bumping into next development cycle (Qt &amp;gt;= 6.11)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The &lt;em&gt;Vee One Suite&lt;/em&gt; are free, open-source &lt;a href="https://linuxaudio.org"&gt;Linux Audio&lt;/a&gt; software, distributed under the terms of the GNU General Public License (&lt;a href="https://www.gnu.org/copyleft/gpl.html"&gt;GPL&lt;/a&gt;) version 2 or later.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;&lt;a href="https://synthv1.sourceforge.io" name="synthv1"&gt;&lt;img align="left" hspace="4" src="https://www.rncbc.org/drupal/files/synthv1_32x32.png" title="synthv1" vspace="4" /&gt;synthv1&lt;/a&gt; - an old-school polyphonic synthesizer&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://synthv1.sourceforge.io"&gt;&lt;img align="right" hspace="4" src="https://www.rncbc.org/drupal/files/synthv1-preflect20s.png" title="synthv1" vspace="4" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;dd&gt;&lt;b&gt;&lt;a href="https://synthv1.sourceforge.io"&gt;synthv1&lt;/a&gt; 1.4.2&lt;/b&gt; (&lt;i&gt;spring'26&lt;/i&gt;) is released!&lt;/dd&gt;
&lt;p&gt;&lt;a href="https://synthv1.sourceforge.io"&gt;synthv1&lt;/a&gt; is an old-school all-digital 4-oscillator subtractive polyphonic synthesizer with stereo fx.&lt;/p&gt;
&lt;dd&gt;LV2 URI: http://synthv1.sourceforge.net/lv2&lt;/dd&gt;

&lt;p&gt;
&lt;dt&gt;website:&lt;/dt&gt;
&lt;/p&gt;&lt;dd&gt;&lt;a href="https://synthv1.sourceforge.io"&gt;https://synthv1.sourceforge.io&lt;/a&gt;&lt;br /&gt;
  &lt;a href="http://synthv1.sourceforge.net"&gt;http://synthv1.sourceforge.net&lt;/a&gt;&lt;/dd&gt;

&lt;p&gt;
&lt;dt&gt;project page:&lt;/dt&gt;
&lt;/p&gt;&lt;dd&gt;&lt;a href="https://sourceforge.net/projects/synthv1"&gt;https://sourceforge.net/projects/synthv1&lt;/a&gt;&lt;/dd&gt;

&lt;p&gt;
&lt;dt&gt;downloads:&lt;/dt&gt;
&lt;/p&gt;&lt;dd&gt;&lt;a href="https://sourceforge.net/projects/synthv1/files"&gt;https://sourceforge.net/projects/synthv1/files&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;source tarball:&lt;br /&gt;
  &lt;a href="https://download.sf.net/synthv1/synthv1-1.4.2.tar.gz"&gt;&lt;b&gt;synthv1-1.4.2.tar.gz&lt;/b&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;source package:&lt;br /&gt;
  &lt;a href="https://download.sf.net/synthv1/synthv1-1.4.2-13.1.rncbc.suse.src.rpm"&gt;synthv1-1.4.2-13.1.rncbc.suse.src.rpm&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;binary packages (openSUSE Tumbleweed):&lt;br /&gt;
  &lt;a href="https://download.sf.net/synthv1/synthv1-jack-1.4.2-13.1.rncbc.suse.x86_64.rpm"&gt;synthv1-jack-1.4.2-13.1.rncbc.suse.x86_64.rpm&lt;/a&gt;&lt;br /&gt;
  &lt;a href="https://download.sf.net/synthv1/synthv1-lv2-1.4.2-13.1.rncbc.suse.x86_64.rpm"&gt;synthv1-lv2-1.4.2-13.1.rncbc.suse.x86_64.rpm&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://appimage.org"&gt;AppImage&lt;/a&gt; package (JACK stand-alone only):&lt;br /&gt;
  &lt;a href="https://download.sf.net/synthv1/synthv1-jack-1.4.2-13.1.x86_64.AppImage"&gt;synthv1-jack-1.4.2-13.1.x86_64.AppImage&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/dd&gt;

&lt;p&gt;
&lt;dt&gt;git repos:
&lt;/dt&gt;&lt;dt&gt;
&lt;/dt&gt;&lt;/p&gt;&lt;dd&gt;&lt;a href="https://git.code.sf.net/p/synthv1/code"&gt;https://git.code.sf.net/p/synthv1/code&lt;/a&gt;&lt;br /&gt;
  &lt;a href="https://github.com/rncbc/synthv1.git"&gt;https://github.com/rncbc/synthv1.git&lt;/a&gt;&lt;br /&gt;
  &lt;a href="https://gitlab.com/rncbc/synthv1.git"&gt;https://gitlab.com/rncbc/synthv1.git&lt;/a&gt;&lt;br /&gt;
  &lt;a href="https://codeberg.org/rncbc/synthv1.git"&gt;https://codeberg.org/rncbc/synthv1.git&lt;/a&gt;&lt;/dd&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;&lt;a href="https://samplv1.sourceforge.io" name="samplv1"&gt;&lt;img align="left" hspace="4" src="https://www.rncbc.org/drupal/files/samplv1_32x32.png" title="samplv1" vspace="4" /&gt;samplv1&lt;/a&gt; - an old-school polyphonic sampler&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://samplv1.sourceforge.io"&gt;&lt;img align="right" hspace="4" src="https://www.rncbc.org/drupal/files/samplv1-preflect20s.png" title="samplv1" vspace="4" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;dd&gt;&lt;b&gt;&lt;a href="https://samplv1.sourceforge.io"&gt;samplv1&lt;/a&gt; 1.4.2&lt;/b&gt;  (&lt;i&gt;spring'26&lt;/i&gt;) is released!&lt;/dd&gt;
&lt;p&gt;&lt;a href="https://samplv1.sourceforge.io"&gt;samplv1&lt;/a&gt; is an old-school polyphonic sampler synthesizer with stereo fx.&lt;/p&gt;
&lt;dd&gt;LV2 URI: http://samplv1.sourceforge.net/lv2&lt;/dd&gt;

&lt;p&gt;
&lt;dt&gt;website:&lt;/dt&gt;
&lt;/p&gt;&lt;dd&gt;&lt;a href="https://samplv1.sourceforge.io"&gt;https://samplv1.sourceforge.io&lt;/a&gt;&lt;br /&gt;
  &lt;a href="http://samplv1.sourceforge.net"&gt;http://samplv1.sourceforge.net&lt;/a&gt;&lt;/dd&gt;

&lt;p&gt;
&lt;dt&gt;project page:&lt;/dt&gt;
&lt;/p&gt;&lt;dd&gt;&lt;a href="https://sourceforge.net/projects/samplv1"&gt;https://sourceforge.net/projects/samplv1&lt;/a&gt;&lt;/dd&gt;

&lt;p&gt;
&lt;dt&gt;downloads:&lt;/dt&gt;
&lt;/p&gt;&lt;dd&gt;&lt;a href="https://sourceforge.net/projects/samplv1/files"&gt;https://sourceforge.net/projects/samplv1/files&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;source tarball:&lt;br /&gt;
  &lt;a href="https://download.sf.net/samplv1/samplv1-1.4.2.tar.gz"&gt;&lt;b&gt;samplv1-1.4.2.tar.gz&lt;/b&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;source package:&lt;br /&gt;
  &lt;a href="https://download.sf.net/samplv1/samplv1-1.4.2-13.1.rncbc.suse.src.rpm"&gt;samplv1-1.4.2-13.1.rncbc.suse.src.rpm&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;binary packages (openSUSE Tumbleweed):&lt;br /&gt;
  &lt;a href="https://download.sf.net/samplv1/samplv1-jack-1.4.2-13.1.rncbc.suse.x86_64.rpm"&gt;samplv1-jack-1.4.2-13.1.rncbc.suse.x86_4.rpm&lt;/a&gt;&lt;br /&gt;
  &lt;a href="https://download.sf.net/samplv1/samplv1-lv2-1.4.2-13.1.rncbc.suse.x86_64.rpm"&gt;samplv1-lv2-1.4.2-13.1.rncbc.suse.x86_4.rpm&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://appimage.org"&gt;AppImage&lt;/a&gt; package (JACK stand-alone only):&lt;br /&gt;
  &lt;a href="https://download.sf.net/samplv1/samplv1-jack-1.4.2-13.1.x86_64.AppImage"&gt;samplv1-jack-1.4.2-13.1.x86_64.AppImage&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/dd&gt;

&lt;p&gt;
&lt;dt&gt;git repos:
&lt;/dt&gt;&lt;dt&gt;
&lt;/dt&gt;&lt;/p&gt;&lt;dd&gt;&lt;a href="https://git.code.sf.net/p/samplv1/code"&gt;https://git.code.sf.net/p/samplv1/code&lt;/a&gt;&lt;br /&gt;
  &lt;a href="https://github.com/rncbc/samplv1.git"&gt;https://github.com/rncbc/samplv1.git&lt;/a&gt;&lt;br /&gt;
  &lt;a href="https://gitlab.com/rncbc/samplv1.git"&gt;https://gitlab.com/rncbc/samplv1.git&lt;/a&gt;&lt;br /&gt;
  &lt;a href="https://codeberg.org/rncbc/samplv1.git"&gt;https://codeberg.org/rncbc/samplv1.git&lt;/a&gt;&lt;/dd&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;&lt;a href="https://drumkv1.sourceforge.io" name="drumkv1"&gt;&lt;img align="left" hspace="4" src="https://www.rncbc.org/drupal/files/drumkv1_32x32.png" title="drumkv1" vspace="4" /&gt;drumkv1&lt;/a&gt; - an old-school drum-kit sampler&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://drumkv1.sourceforge.io"&gt;&lt;img align="right" hspace="4" src="https://www.rncbc.org/drupal/files/drumkv1-preflect20s.png" title="drumkv1" vspace="4" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;dd&gt;&lt;b&gt;&lt;a href="https://drumkv1.sourceforge.io"&gt;drumkv1&lt;/a&gt; 1.4.2&lt;/b&gt; (&lt;i&gt;spring'26&lt;/i&gt;) is released!&lt;/dd&gt;
&lt;p&gt;&lt;a href="https://drumkv1.sourceforge.io"&gt;drumkv1&lt;/a&gt; is an old-school drum-kit sampler synthesizer with stereo fx.&lt;/p&gt;
&lt;dd&gt;LV2 URI: http://drumkv1.sourceforge.net/lv2&lt;/dd&gt;

&lt;p&gt;
&lt;dt&gt;website:&lt;/dt&gt;
&lt;/p&gt;&lt;dd&gt;&lt;a href="https://drumkv1.sourceforge.io"&gt;https://drumkv1.sourceforge.io&lt;/a&gt;&lt;br /&gt;
  &lt;a href="http://drumkv1.sourceforge.net"&gt;http://drumkv1.sourceforge.net&lt;/a&gt;&lt;/dd&gt;

&lt;p&gt;
&lt;dt&gt;project page:&lt;/dt&gt;
&lt;/p&gt;&lt;dd&gt;&lt;a href="https://sourceforge.net/projects/drumkv1"&gt;https://sourceforge.net/projects/drumkv1&lt;/a&gt;&lt;/dd&gt;

&lt;p&gt;
&lt;dt&gt;downloads:&lt;/dt&gt;
&lt;/p&gt;&lt;dd&gt;&lt;a href="https://sourceforge.net/projects/drumkv1/files"&gt;https://sourceforge.net/projects/drumkv1/files&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;source tarball:&lt;br /&gt;
  &lt;a href="https://download.sf.net/drumkv1/drumkv1-1.4.2.tar.gz"&gt;&lt;b&gt;drumkv1-1.4.2.tar.gz&lt;/b&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;source package:&lt;br /&gt;
  &lt;a href="https://download.sf.net/drumkv1/drumkv1-1.4.2-13.1.rncbc.suse.src.rpm"&gt;drumkv1-1.4.2-13.1.rncbc.suse.src.rpm&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;binary packages (openSUSE Tumbleweed):&lt;br /&gt;
  &lt;a href="https://download.sf.net/drumkv1/drumkv1-jack-1.4.2-13.1.rncbc.suse.x86_64.rpm"&gt;drumkv1-jack-1.4.2-13.1.rncbc.suse.x86_64.rpm&lt;/a&gt;&lt;br /&gt;
  &lt;a href="https://download.sf.net/drumkv1/drumkv1-lv2-1.4.2-13.1.rncbc.suse.x86_64.rpm"&gt;drumkv1-lv2-1.4.2-13.1.rncbc.suse.x86_64.rpm&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://appimage.org"&gt;AppImage&lt;/a&gt; package (JACK stand-alone only):&lt;br /&gt;
  &lt;a href="https://download.sf.net/drumkv1/drumkv1-jack-1.4.2-13.1.x86_64.AppImage"&gt;drumkv1-jack-1.4.2-13.1.x86_64.AppImage&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/dd&gt;

&lt;p&gt;
&lt;dt&gt;git repos:
&lt;/dt&gt;&lt;dt&gt;
&lt;/dt&gt;&lt;/p&gt;&lt;dd&gt;&lt;a href="https://git.code.sf.net/p/drumkv1/code"&gt;https://git.code.sf.net/p/drumkv1/code&lt;/a&gt;&lt;br /&gt;
  &lt;a href="https://github.com/rncbc/drumkv1.git"&gt;https://github.com/rncbc/drumkv1.git&lt;/a&gt;&lt;br /&gt;
  &lt;a href="https://gitlab.com/rncbc/drumkv1.git"&gt;https://gitlab.com/rncbc/drumkv1.git&lt;/a&gt;&lt;br /&gt;
  &lt;a href="https://codeberg.org/rncbc/drumkv1.git"&gt;https://codeberg.org/rncbc/drumkv1.git&lt;/a&gt;&lt;/dd&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;&lt;a href="https://padthv1.sourceforge.io" name="padthv1"&gt;&lt;img align="left" hspace="4" src="https://www.rncbc.org/drupal/files/padthv1_32x32.png" title="padthv1" vspace="4" /&gt;padthv1&lt;/a&gt; - an old-school polyphonic additive synthesizer&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://padthv1.sourceforge.io"&gt;&lt;img align="right" hspace="4" src="https://www.rncbc.org/drupal/files/padthv1-preflect20s.png" title="padthv1" vspace="4" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;dd&gt;&lt;b&gt;&lt;a href="https://padthv1.sourceforge.io"&gt;padthv1&lt;/a&gt; 1.4.2&lt;/b&gt; (&lt;i&gt;spring'26&lt;/i&gt;) is released!&lt;/dd&gt;
&lt;p&gt;&lt;a href="https://padthv1.sourceforge.io"&gt;padthv1&lt;/a&gt; is an old-school polyphonic additive synthesizer with stereo fx&lt;/p&gt;
&lt;p&gt;&lt;a href="https://padthv1.sourceforge.io"&gt;padthv1&lt;/a&gt; is based on the &lt;a href="http://zynaddsubfx.sourceforge.net/doc/PADsynth/PADsynth.htm"&gt;PADsynth&lt;/a&gt; algorithm by Paul Nasca, as a special variant of additive synthesis.&lt;/p&gt;
&lt;dd&gt;LV2 URI: http://padthv1.sourceforge.net/lv2&lt;/dd&gt;

&lt;p&gt;
&lt;dt&gt;website:&lt;/dt&gt;
&lt;/p&gt;&lt;dd&gt;&lt;a href="https://padthv1.sourceforge.io"&gt;https://padthv1.sourceforge.io&lt;/a&gt;&lt;br /&gt;
  &lt;a href="http://padthv1.sourceforge.net"&gt;http://padthv1.sourceforge.net&lt;/a&gt;&lt;/dd&gt;

&lt;p&gt;
&lt;dt&gt;project page:&lt;/dt&gt;
&lt;/p&gt;&lt;dd&gt;&lt;a href="https://sourceforge.net/projects/padthv1"&gt;https://sourceforge.net/projects/padthv1&lt;/a&gt;&lt;/dd&gt;

&lt;p&gt;
&lt;dt&gt;downloads:&lt;/dt&gt;
&lt;/p&gt;&lt;dd&gt;&lt;a href="https://sourceforge.net/projects/padthv1/files"&gt;https://sourceforge.net/projects/padthv1/files&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;source tarball:&lt;br /&gt;
  &lt;a href="https://download.sf.net/padthv1/padthv1-1.4.2.tar.gz"&gt;&lt;b&gt;padthv1-1.4.2.tar.gz&lt;/b&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;source package:&lt;br /&gt;
  &lt;a href="https://download.sf.net/padthv1/padthv1-1.4.2-13.1.rncbc.suse.src.rpm"&gt;padthv1-1.4.2-13.1.rncbc.suse.src.rpm&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;binary packages (openSUSE Tumbleweed):&lt;br /&gt;
  &lt;a href="https://download.sf.net/padthv1/padthv1-jack-1.4.2-13.1.rncbc.suse.x86_64.rpm"&gt;padthv1-jack-1.4.2-13.1.rncbc.suse.x86_64.rpm&lt;/a&gt;&lt;br /&gt;
  &lt;a href="https://download.sf.net/padthv1/padthv1-lv2-1.4.2-13.1.rncbc.suse.x86_64.rpm"&gt;padthv1-lv2-1.4.2-13.1.rncbc.suse.x86_64.rpm&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://appimage.org"&gt;AppImage&lt;/a&gt; package (JACK stand-alone only):&lt;br /&gt;
  &lt;a href="https://download.sf.net/padthv1/padthv1-jack-1.4.2-13.1.x86_64.AppImage"&gt;padthv1-jack-1.4.2-13.1.x86_64.AppImage&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/dd&gt;

&lt;p&gt;
&lt;dt&gt;git repos:
&lt;/dt&gt;&lt;dt&gt;
&lt;/dt&gt;&lt;/p&gt;&lt;dd&gt;&lt;a href="https://git.code.sf.net/p/padthv1/code"&gt;https://git.code.sf.net/p/padthv1/code&lt;/a&gt;&lt;br /&gt;
  &lt;a href="https://github.com/rncbc/padthv1.git"&gt;https://github.com/rncbc/padthv1.git&lt;/a&gt;&lt;br /&gt;
  &lt;a href="https://gitlab.com/rncbc/padthv1.git"&gt;https://gitlab.com/rncbc/padthv1.git&lt;/a&gt;&lt;br /&gt;
  &lt;a href="https://codeberg.org/rncbc/padthv1.git"&gt;https://codeberg.org/rncbc/padthv1.git&lt;/a&gt;&lt;/dd&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Enjoy &amp;amp;&amp;amp; Have (lot's of) fun.&lt;/p&gt;
&lt;p&gt;&lt;!--rncbc.org donate buttons--&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="https://paypal.me/rncbc" target="_blank"&gt;&lt;img alt="Donate to rncbc.org using PayPal" border="0" src="https://www.rncbc.org/drupal/files/donate1.png" title="Donate to rncbc.org using PayPal" /&gt;&lt;/a&gt; &lt;a href="https://liberapay.com/rncbc/donate" target="_blank"&gt;&lt;img alt="Donate to rncbc.org using Liberapay" border="0" height="22" src="https://liberapay.com/assets/widgets/donate.svg" title="Donate to rncbc.org using Liberapay" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;!--break--&gt;&lt;/div&gt;
      &lt;span class="field field--name-uid field--type-entity-reference field--label-hidden"&gt;&lt;span&gt;rncbc&lt;/span&gt;&lt;/span&gt;
&lt;span class="field field--name-created field--type-created field--label-hidden"&gt;&lt;time class="datetime" datetime="2026-04-30T19:00:00+00:00" title="Thursday, 30 April 2026 - 19:00"&gt;Thu, 30 Apr 2026 - 19:00&lt;/time&gt;
&lt;/span&gt;
&lt;section class="field field--name-comment-node-blog field--type-comment field--label-hidden comment-wrapper"&gt;
  
  

      &lt;h2 class="title comment-form__title"&gt;Add new comment&lt;/h2&gt;
    
  
&lt;/section&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>rncbc.org - a.k.a. Rui Nuno Capela</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>rncbc.org - a.k.a. Rui Nuno Capela - QjackCtl 1.0.6 - A Spring'26 Release</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-04-30:2898 at https://www.rncbc.org/drupal</ns0:id>
    <ns0:updated>2026-04-30T17:00:00Z</ns0:updated>
    <ns0:published>2026-04-30T17:00:00Z</ns0:published>
    <ns0:link rel="alternate" href="https://www.rncbc.org/drupal/node/2898" type="text/html"/>
    <ns0:summary type="html">&lt;span class="field field--name-title field--type-string field--label-hidden"&gt;QjackCtl 1.0.6 - A Spring'26 Release&lt;/span&gt;

            &lt;div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"&gt;&lt;p&gt;&lt;a href="https://qjackctl.sourceforge.io" name="qjackctl"&gt;&lt;img align="left" hspace="4" src="https://www.rncbc.org/drupal/files/qjackctl_32x32.png" title="QjackCtl" vspace="4" /&gt;&lt;/a&gt;&lt;a href="https://qjackctl.sourceforge.io"&gt;&lt;img align="right" hspace="4" src="https://www.rncbc.org/drupal/files/qjackctl-preflect1.png" title="qjackctl" vspace="4" width="320" /&gt;&lt;/a&gt;Hi y'all!&lt;/p&gt;
&lt;dd&gt;
  &lt;b&gt;&lt;a href="http://qjackctl.sf.net"&gt;QjackCtl&lt;/a&gt; 1.0.6&lt;/b&gt; (&lt;i&gt;spring'26&lt;/i&gt;) is released!
&lt;/dd&gt;
&lt;p&gt;&lt;a href="http://qjackctl.sf.net"&gt;QjackCtl&lt;/a&gt; is an aged yet modern, not so &lt;i&gt;simple&lt;/i&gt; anymore, &lt;a href="https://qt.io"&gt;Qt&lt;/a&gt; application to control the &lt;a href="http://jackaudio.org"&gt;JACK&lt;/a&gt; sound server, for the &lt;a href="https://linuxaudio.org"&gt;Linux Audio&lt;/a&gt; infrastructure.&lt;/p&gt;
&lt;p&gt;Change-log:
&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;Graph: make sure thumb-view widget background is filled/opaque (ie. not transparent)&lt;/li&gt;
&lt;li&gt;Fixed JACK metadata properties assignment (aka. pretty-names) vs. native client/port name aliases.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Website:
&lt;/p&gt;&lt;dd&gt;
  &lt;a href="https://qjackctl.sourceforge.io"&gt;https://qjackctl.sourceforge.io&lt;/a&gt;&lt;br /&gt;
  &lt;a href="http://qjackctl.sourceforge.net"&gt;http://qjackctl.sourceforge.net&lt;/a&gt;
&lt;/dd&gt;
&lt;p&gt;Project page:
&lt;/p&gt;&lt;dd&gt;
  &lt;a href="https://sourceforge.net/projects/qjackctl"&gt;https://sourceforge.net/projects/qjackctl&lt;/a&gt;
&lt;/dd&gt;
&lt;p&gt;Downloads:
&lt;/p&gt;&lt;dd&gt;
  &lt;a href="https://sourceforge.net/projects/qjackctl/files"&gt;https://sourceforge.net/projects/qjackctl/files&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;source tarball:&lt;br /&gt;
  &lt;a href="https://download.sf.net/qjackctl/qjackctl-1.0.0.tar.gz"&gt;&lt;b&gt;qjackctl-1.0.6.tar.gz&lt;/b&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;source package:&lt;br /&gt;
  &lt;a href="https://download.sf.net/qjackctl/qjackctl-1.0.6-7.1.rncbc.suse.src.rpm"&gt;qjackctl-1.0.6-7.1.rncbc.suse.src.rpm&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;binary packages:&lt;br /&gt;
  &lt;a href="https://download.sf.net/qjackctl/qjackctl-1.0.6-7.1.rncbc.suse.x86_64.rpm"&gt;qjackctl-1.0.6-7.1.rncbc.suse.x86_64.rpm&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://appimage.org"&gt;AppImage&lt;/a&gt; package:&lt;br /&gt;
  &lt;a href="https://download.sf.net/qjackctl/qjackctl-1.0.6-7.1.x86_64.AppImage"&gt;qjackctl-1.0.6-7.1.x86_64.AppImage&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/dd&gt;
&lt;p&gt;Git repos:
&lt;/p&gt;&lt;dd&gt;
  &lt;a href="https://git.code.sf.net/p/qjackctl/code"&gt;https://git.code.sf.net/p/qjackctl/code&lt;/a&gt;&lt;br /&gt;
  &lt;a href="https://github.com/rncbc/qjackctl.git"&gt;https://github.com/rncbc/qjackctl.git&lt;/a&gt;&lt;br /&gt;
  &lt;a href="https://www.rncbc.org/drupal/&amp;gt;https:/gitlab.com/rncbc/qjackctl.git"&gt;https://gitlab.com/rncbc/qjackctl.git&lt;/a&gt;&lt;br /&gt;
  &lt;a href="https://codeberg.com/rncbc/qjackctl.git"&gt;https://codeberg.com/rncbc/qjackctl.git&lt;/a&gt;
&lt;/dd&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;License:
&lt;/p&gt;&lt;dd&gt;
  &lt;a href="http://qjackctl.sf.net"&gt;QjackCtl&lt;/a&gt;  is free, open-source &lt;a href="https://linuxaudio.org"&gt;Linux Audio&lt;/a&gt; software, distributed under the terms of the GNU General Public License (&lt;a href="https://www.gnu.org/copyleft/gpl.html"&gt;GPL&lt;/a&gt;) version 2 or later.
&lt;/dd&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;
&lt;p&gt;&lt;!--rncbc.org donate buttons--&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="https://paypal.me/rncbc" target="_blank"&gt;&lt;img alt="Donate to rncbc.org using PayPal" border="0" src="https://www.rncbc.org/drupal/files/donate1.png" title="Donate to rncbc.org using PayPal" /&gt;&lt;/a&gt; &lt;a href="https://liberapay.com/rncbc/donate" target="_blank"&gt;&lt;img alt="Donate to rncbc.org using Liberapay" border="0" height="22" src="https://liberapay.com/assets/widgets/donate.svg" title="Donate to rncbc.org using Liberapay" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;!--break--&gt;&lt;/div&gt;
      &lt;span class="field field--name-uid field--type-entity-reference field--label-hidden"&gt;&lt;span&gt;rncbc&lt;/span&gt;&lt;/span&gt;
&lt;span class="field field--name-created field--type-created field--label-hidden"&gt;&lt;time class="datetime" datetime="2026-04-30T17:00:00+00:00" title="Thursday, 30 April 2026 - 17:00"&gt;Thu, 30 Apr 2026 - 17:00&lt;/time&gt;
&lt;/span&gt;
&lt;section class="field field--name-comment-node-blog field--type-comment field--label-hidden comment-wrapper"&gt;
  
  

      &lt;h2 class="title comment-form__title"&gt;Add new comment&lt;/h2&gt;
    
  
&lt;/section&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>rncbc.org - a.k.a. Rui Nuno Capela</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>waveform-playlist - Tone Playhead Lookahead Fix</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-04-30:tag:github.com,2008:Repository/8150190/tone-playhead-lookahead</ns0:id>
    <ns0:updated>2026-04-30T08:12:19Z</ns0:updated>
    <ns0:published>2026-04-30T08:12:19Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/naomiaro/waveform-playlist/releases/tag/tone-playhead-lookahead" type="text/html"/>
    <ns0:summary type="html">&lt;p&gt;Fixes a ~100ms playhead-vs-audio drift when using the Tone.js playout adapter. Native adapter is unaffected. PR &lt;a href="https://github.com/naomiaro/waveform-playlist/pull/384"&gt;#384&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;What changed&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;Tone.Transport.seconds&lt;/code&gt; is the &lt;em&gt;scheduling&lt;/em&gt; position — &lt;code&gt;lookAhead&lt;/code&gt; (default 0.1s) ahead of what the listener actually hears. Tone uses this to give Web Audio scheduling headroom; sources started at &lt;code&gt;Transport.seconds&lt;/code&gt; reach the speaker &lt;code&gt;lookAhead&lt;/code&gt; later. Visual consumers (playhead, progress fill, recording preview) had been positioning DOM elements at the scheduling position, so the playhead led audio by ~100ms with the Tone adapter.&lt;/p&gt;
&lt;p&gt;The fix subtracts &lt;code&gt;engine.lookAhead&lt;/code&gt; (in addition to existing &lt;code&gt;outputLatency&lt;/code&gt;) so all visual elements track audible playback.&lt;/p&gt;
&lt;h2&gt;Highlights&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;engine.lookAhead&lt;/code&gt;&lt;/strong&gt; — new getter on &lt;code&gt;PlaylistEngine&lt;/code&gt; proxies the adapter's lookahead value (Tone ~0.1s, native 0). Consumers no longer need to know which adapter is in use.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dual-ref pattern&lt;/strong&gt; in React — &lt;code&gt;currentTimeRef&lt;/code&gt; stores raw scheduling time, &lt;code&gt;visualTimeRef&lt;/code&gt; stores audible time. Storage stays raw so &lt;code&gt;play()&lt;/code&gt; resumes from the correct position; display gets the audible-time version. New &lt;code&gt;setCurrentTimeRefs()&lt;/code&gt; helper enforces the pairing at every pause/seek/stop/loop site.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;PlayheadProps.visualTimeRef&lt;/code&gt;&lt;/strong&gt; — new optional prop on the &lt;code&gt;&amp;lt;Playhead&amp;gt;&lt;/code&gt; component for custom playheads. Fallback chain preserves backwards compatibility.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Recording live preview&lt;/strong&gt; — strips leading-silence peaks (&lt;code&gt;outputLatency + lookAhead&lt;/code&gt;) so the preview's right edge lands at audible time, matching the playhead. Mirrors &lt;code&gt;useIntegratedRecording&lt;/code&gt;'s finalization compensation.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;audibleLatencySamples()&lt;/code&gt;&lt;/strong&gt; — new helper in &lt;code&gt;@waveform-playlist/core&lt;/code&gt; is the single source of truth for &lt;code&gt;(outputLatency + lookAhead) * sampleRate → samples&lt;/code&gt;. Used by both the recording finalizer and the live preview.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;&amp;lt;daw-editor&amp;gt;&lt;/code&gt;&lt;/strong&gt; — &lt;code&gt;_startPlayhead&lt;/code&gt;/&lt;code&gt;_stopPlayhead&lt;/code&gt; subtract &lt;code&gt;outputLatency + engine.lookAhead&lt;/code&gt;. &lt;code&gt;_currentTime&lt;/code&gt; itself is never overwritten so playback position stays accurate.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Package versions&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Package&lt;/th&gt;
&lt;th&gt;Version&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;@waveform-playlist/core&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;12.0.0 → &lt;strong&gt;12.1.0&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;@waveform-playlist/engine&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;13.1.0 → &lt;strong&gt;13.2.0&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;@waveform-playlist/playout&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;12.2.0 → &lt;strong&gt;12.3.0&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;@waveform-playlist/ui-components&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;12.0.0 → &lt;strong&gt;12.1.0&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;@waveform-playlist/browser&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;12.0.0 → &lt;strong&gt;12.1.0&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;@waveform-playlist/recording&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;12.0.1 → &lt;strong&gt;12.0.2&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;@dawcore/components&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;0.0.13 → &lt;strong&gt;0.0.14&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2&gt;Migration&lt;/h2&gt;
&lt;p&gt;No breaking changes. All additions are opt-in or transparent:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;React consumers: pick up the fix by upgrading &lt;code&gt;@waveform-playlist/browser&lt;/code&gt; and its peer packages. No code changes required.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;daw-editor&amp;gt;&lt;/code&gt; consumers: pick up the fix by upgrading &lt;code&gt;@dawcore/components&lt;/code&gt;. No code changes required.&lt;/li&gt;
&lt;li&gt;Custom playhead authors: pass &lt;code&gt;visualTimeRef&lt;/code&gt; through to the underlying &lt;code&gt;&amp;lt;Playhead&amp;gt;&lt;/code&gt; for perfect alignment with audible output. The playhead falls back to existing behavior if omitted.&lt;/li&gt;
&lt;/ul&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>waveform-playlist</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>waveform-playlist - Programmatic Track &amp; Clip API</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-04-30:tag:github.com,2008:Repository/8150190/programmatic-api</ns0:id>
    <ns0:updated>2026-04-30T06:38:41Z</ns0:updated>
    <ns0:published>2026-04-30T06:38:41Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/naomiaro/waveform-playlist/releases/tag/programmatic-api" type="text/html"/>
    <ns0:summary type="html">&lt;h2&gt;Summary&lt;/h2&gt;
&lt;p&gt;Adds an imperative API on &lt;code&gt;&amp;lt;daw-editor&amp;gt;&lt;/code&gt; for tracks and clips, wires &lt;code&gt;&amp;lt;daw-clip&amp;gt;&lt;/code&gt; lifecycle events so dynamic DOM mutation works alongside the imperative methods, and adds &lt;code&gt;indefinite-playback&lt;/code&gt; so the ruler renders before any audio is loaded.&lt;/p&gt;
&lt;p&gt;Closes &lt;a href="https://github.com/naomiaro/waveform-playlist/issues/381"&gt;#381&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Published Packages&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Package&lt;/th&gt;
&lt;th&gt;Version&lt;/th&gt;
&lt;th&gt;Change&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;@dawcore/components&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.0.13&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Programmatic track/clip API + indefinite-playback + helper refactor&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2&gt;Programmatic API&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Method&lt;/th&gt;
&lt;th&gt;Behavior&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;editor.ready()&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Builds engine eagerly without requiring a track&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;editor.addTrack(config)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Builds and appends a &lt;code&gt;&amp;lt;daw-track&amp;gt;&lt;/code&gt;, returns the element when loaded&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;editor.updateTrack(id, partial)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Mutates reflected attrs on the &lt;code&gt;&amp;lt;daw-track&amp;gt;&lt;/code&gt; (or descriptor + engine for non-DOM tracks)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;editor.removeTrack(id)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Removes via MutationObserver, falls back for non-DOM tracks&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;editor.addClip(trackId, config)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Validates &lt;code&gt;src&lt;/code&gt;, builds and appends a &lt;code&gt;&amp;lt;daw-clip&amp;gt;&lt;/code&gt;, returns the clipId&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;editor.updateClip(trackId, clipId, partial)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Sets reflected props on the &lt;code&gt;&amp;lt;daw-clip&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;editor.removeClip(trackId, clipId)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Removes the &lt;code&gt;&amp;lt;daw-clip&amp;gt;&lt;/code&gt; DOM element&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Both declarative DOM mutation and these methods feed the same load pipeline — descriptors, peaks, and clip buffers populate identically.&lt;/p&gt;
&lt;h2&gt;Declarative DOM parity&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;&amp;lt;daw-clip&amp;gt;&lt;/code&gt; now dispatches &lt;code&gt;daw-clip-connected&lt;/code&gt; (deferred via &lt;code&gt;setTimeout(0)&lt;/code&gt;) and &lt;code&gt;daw-clip-update&lt;/code&gt; (post-render, includes &lt;code&gt;trackId&lt;/code&gt; resolved at dispatch). The editor handles both events plus clip-removal via the existing MutationObserver. Engine clip ids are aligned with &lt;code&gt;&amp;lt;daw-clip&amp;gt;.clipId&lt;/code&gt; so DOM and engine refer to the same id.&lt;/p&gt;
&lt;h2&gt;indefinite-playback for empty editors&lt;/h2&gt;
&lt;p&gt;New boolean attribute. When set, the timeline fills the visible viewport even with no clips. The ruler covers &lt;code&gt;max(naturalDuration, viewportWidth)&lt;/code&gt; so a short clip on an empty editor doesn't shrink the ruler. An empty controls-column placeholder prevents horizontal shift when the first track loads. &lt;code&gt;ViewportController&lt;/code&gt; gains a &lt;code&gt;ResizeObserver&lt;/code&gt; for window-resize support.&lt;/p&gt;
&lt;h2&gt;New Example&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/naomiaro/waveform-playlist/blob/main/examples/dawcore-native/programmatic.html"&gt;&lt;code&gt;examples/dawcore-native/programmatic.html&lt;/code&gt;&lt;/a&gt; — Imperative &lt;code&gt;addTrack&lt;/code&gt; / &lt;code&gt;addClip&lt;/code&gt; / &lt;code&gt;updateClip&lt;/code&gt; / &lt;code&gt;removeClip&lt;/code&gt; plus declarative DOM mutation, side-by-side. Uses &lt;code&gt;indefinite-playback&lt;/code&gt; so the ruler renders from the start.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Usage&lt;/h2&gt;
&lt;div class="highlight highlight-source-js notranslate position-relative overflow-auto"&gt;&lt;pre&gt;&lt;span class="pl-k"&gt;import&lt;/span&gt; &lt;span class="pl-s"&gt;'@dawcore/components'&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
&lt;span class="pl-k"&gt;import&lt;/span&gt; &lt;span class="pl-kos"&gt;{&lt;/span&gt; &lt;span class="pl-v"&gt;NativePlayoutAdapter&lt;/span&gt; &lt;span class="pl-kos"&gt;}&lt;/span&gt; &lt;span class="pl-k"&gt;from&lt;/span&gt; &lt;span class="pl-s"&gt;'@dawcore/transport'&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;

&lt;span class="pl-k"&gt;const&lt;/span&gt; &lt;span class="pl-s1"&gt;editor&lt;/span&gt; &lt;span class="pl-c1"&gt;=&lt;/span&gt; &lt;span class="pl-smi"&gt;document&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-en"&gt;querySelector&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-s"&gt;'daw-editor'&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
&lt;span class="pl-s1"&gt;editor&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-c1"&gt;adapter&lt;/span&gt; &lt;span class="pl-c1"&gt;=&lt;/span&gt; &lt;span class="pl-k"&gt;new&lt;/span&gt; &lt;span class="pl-v"&gt;NativePlayoutAdapter&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-k"&gt;new&lt;/span&gt; &lt;span class="pl-v"&gt;AudioContext&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;

&lt;span class="pl-c"&gt;// Build engine before any track exists — useful for wiring analyzers,&lt;/span&gt;
&lt;span class="pl-c"&gt;// effects, or master taps before content arrives.&lt;/span&gt;
&lt;span class="pl-k"&gt;await&lt;/span&gt; &lt;span class="pl-s1"&gt;editor&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-en"&gt;ready&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;

&lt;span class="pl-c"&gt;// Imperative track creation&lt;/span&gt;
&lt;span class="pl-k"&gt;const&lt;/span&gt; &lt;span class="pl-s1"&gt;track&lt;/span&gt; &lt;span class="pl-c1"&gt;=&lt;/span&gt; &lt;span class="pl-k"&gt;await&lt;/span&gt; &lt;span class="pl-s1"&gt;editor&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-en"&gt;addTrack&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-kos"&gt;{&lt;/span&gt;
  &lt;span class="pl-c1"&gt;name&lt;/span&gt;: &lt;span class="pl-s"&gt;'Drums'&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt;
  &lt;span class="pl-c1"&gt;volume&lt;/span&gt;: &lt;span class="pl-c1"&gt;0.8&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt;
  &lt;span class="pl-c1"&gt;clips&lt;/span&gt;: &lt;span class="pl-kos"&gt;[&lt;/span&gt;&lt;span class="pl-kos"&gt;{&lt;/span&gt; &lt;span class="pl-c1"&gt;src&lt;/span&gt;: &lt;span class="pl-s"&gt;'/audio/drums.opus'&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt; &lt;span class="pl-c1"&gt;start&lt;/span&gt;: &lt;span class="pl-c1"&gt;0&lt;/span&gt; &lt;span class="pl-kos"&gt;}&lt;/span&gt;&lt;span class="pl-kos"&gt;]&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt;
&lt;span class="pl-kos"&gt;}&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;

&lt;span class="pl-c"&gt;// Imperative clip mutation&lt;/span&gt;
&lt;span class="pl-k"&gt;const&lt;/span&gt; &lt;span class="pl-s1"&gt;clipId&lt;/span&gt; &lt;span class="pl-c1"&gt;=&lt;/span&gt; &lt;span class="pl-k"&gt;await&lt;/span&gt; &lt;span class="pl-s1"&gt;editor&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-en"&gt;addClip&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-s1"&gt;track&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-c1"&gt;trackId&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt; &lt;span class="pl-kos"&gt;{&lt;/span&gt;
  &lt;span class="pl-c1"&gt;src&lt;/span&gt;: &lt;span class="pl-s"&gt;'/audio/snare.opus'&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt;
  &lt;span class="pl-c1"&gt;start&lt;/span&gt;: &lt;span class="pl-c1"&gt;4&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt;
&lt;span class="pl-kos"&gt;}&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
&lt;span class="pl-s1"&gt;editor&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-en"&gt;updateClip&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-s1"&gt;track&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-c1"&gt;trackId&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt; &lt;span class="pl-s1"&gt;clipId&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt; &lt;span class="pl-kos"&gt;{&lt;/span&gt; &lt;span class="pl-c1"&gt;start&lt;/span&gt;: &lt;span class="pl-c1"&gt;6&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt; &lt;span class="pl-c1"&gt;gain&lt;/span&gt;: &lt;span class="pl-c1"&gt;0.5&lt;/span&gt; &lt;span class="pl-kos"&gt;}&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
&lt;span class="pl-s1"&gt;editor&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-en"&gt;removeClip&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-s1"&gt;track&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-c1"&gt;trackId&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt; &lt;span class="pl-s1"&gt;clipId&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;

&lt;span class="pl-c"&gt;// indefinite-playback in HTML&lt;/span&gt;
&lt;span class="pl-c"&gt;// &amp;lt;daw-editor timescale indefinite-playback&amp;gt;...&amp;lt;/daw-editor&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2&gt;Internal Refactor&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Extracted &lt;code&gt;_resolvePeaks&lt;/code&gt; and &lt;code&gt;_finalizeAudioClip&lt;/code&gt; helpers to consolidate the per-clip load pipeline previously duplicated between &lt;code&gt;_loadTrack&lt;/code&gt; and &lt;code&gt;_loadAndAppendClip&lt;/code&gt;. &lt;code&gt;_finalizeAudioClip&lt;/code&gt; self-purges its caches on &lt;code&gt;generatePeaks&lt;/code&gt; failure so callers don't leak.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ClipDescriptor&lt;/code&gt; is now a discriminated union: &lt;code&gt;DomClipDescriptor (kind: 'dom', clipId)&lt;/code&gt; | &lt;code&gt;DropClipDescriptor (kind: 'drop')&lt;/code&gt;. Replaces the optional &lt;code&gt;clipId?&lt;/code&gt; field. New exported &lt;code&gt;isDomClip(c)&lt;/code&gt; type predicate.&lt;/li&gt;
&lt;li&gt;Per-clip isolation in &lt;code&gt;_loadTrack&lt;/code&gt;: a single bad clip dispatches &lt;code&gt;daw-clip-error&lt;/code&gt; and skips, rather than aborting the whole track and leaking earlier clips' cache writes.&lt;/li&gt;
&lt;li&gt;Many silent paths now warn (unknown &lt;code&gt;removeTrack&lt;/code&gt;/&lt;code&gt;removeClip&lt;/code&gt;/&lt;code&gt;updateClip&lt;/code&gt; ids, DOM/engine clip-id misalignment, etc.).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Breaking Changes (&lt;code&gt;@dawcore/components&lt;/code&gt; 0.0.x line)&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;ClipConfig.src&lt;/code&gt; is now required.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ClipDescriptor.clipId?&lt;/code&gt; replaced with discriminated union (&lt;code&gt;kind: 'dom' | 'drop'&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Test Plan&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;pnpm typecheck&lt;/code&gt; ✓&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pnpm lint&lt;/code&gt; (0 errors) ✓&lt;/li&gt;
&lt;li&gt;&lt;code&gt;cd packages/dawcore &amp;amp;&amp;amp; npx vitest run&lt;/code&gt; — &lt;strong&gt;374/374 tests pass&lt;/strong&gt; (was 320 before, +54 new test cases)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Documentation&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Spec at &lt;a href="https://github.com/naomiaro/waveform-playlist/blob/main/docs/specs/web-components-migration.md"&gt;&lt;code&gt;docs/specs/web-components-migration.md&lt;/code&gt;&lt;/a&gt; updated with the full &lt;strong&gt;Programmatic Track Mutation&lt;/strong&gt; section.&lt;/li&gt;
&lt;li&gt;README updated with the imperative API summary and a link to the spec.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;PRs&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/naomiaro/waveform-playlist/pull/382"&gt;#382&lt;/a&gt; — programmatic track &amp;amp; clip API + indefinite-playback&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/naomiaro/waveform-playlist/pull/383"&gt;#383&lt;/a&gt; — extract clip-load helpers + discriminated ClipDescriptor&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Deferred&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Engine-side fade application from &lt;code&gt;&amp;lt;daw-clip&amp;gt;&lt;/code&gt; &lt;code&gt;fadeIn&lt;/code&gt;/&lt;code&gt;fadeOut&lt;/code&gt;/&lt;code&gt;fadeType&lt;/code&gt; properties — needs adapter-side investigation to know if &lt;code&gt;Fade&lt;/code&gt; objects are honored by &lt;code&gt;NativePlayoutAdapter&lt;/code&gt; and &lt;code&gt;TonePlayoutAdapter&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>waveform-playlist</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>xLights - 2026.07 Released</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-04-29:https://xlights.org/?p=4127</ns0:id>
    <ns0:updated>2026-04-29T10:15:18Z</ns0:updated>
    <ns0:published>2026-04-29T10:15:18Z</ns0:published>
    <ns0:link rel="alternate" href="https://xlights.org/2026-07-released/" type="text/html"/>
    <ns0:summary type="html">2026.07 April 28, 2026 -enh (MrPierreB) Add node animation playback to SubModels dialog. -enh (dkulp) Media-compatibility &amp;#8220;Convert Now&amp;#8221; now special-cases animated GIFs that were used as Video effects and turns them into normal Pictures effects that properly handle animated GIFs -enh (dkulp) Waveform (macOS 12+): four new &amp;#8220;Stem — Drums / Bass / Other /...</ns0:summary>
    <ns0:author>
      <ns0:name>xLights</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>ZLEqualizer - 1.1.1</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-04-29:tag:github.com,2008:Repository/729959292/1.1.1</ns0:id>
    <ns0:updated>2026-04-29T00:45:04Z</ns0:updated>
    <ns0:published>2026-04-29T00:45:04Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/ZL-Audio/ZLEqualizer/releases/tag/1.1.1" type="text/html"/>
    <ns0:summary type="html">&lt;p&gt;docs: update changelog [skip ci]&lt;/p&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>ZLEqualizer</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>ChartPlayer - Release v0.1.27</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-04-28:tag:github.com,2008:Repository/691799586/v0.1.27</ns0:id>
    <ns0:updated>2026-04-28T16:17:02Z</ns0:updated>
    <ns0:published>2026-04-28T16:17:02Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/mikeoliphant/ChartPlayer/releases/tag/v0.1.27" type="text/html"/>
    <ns0:summary type="html">&lt;ul&gt;
&lt;li&gt;Added button to toggle showing all songs with tag vs just current instrument&lt;/li&gt;
&lt;li&gt;Added some logging to song scanning&lt;/li&gt;
&lt;li&gt;Added song length display&lt;/li&gt;
&lt;li&gt;Play time slider now moves instantly on mouse press&lt;/li&gt;
&lt;/ul&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>ChartPlayer</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>Frescobaldi 4.0.6</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-04-28:tag:github.com,2008:Repository/1302990/v4.0.6</ns0:id>
    <ns0:updated>2026-04-28T12:37:53Z</ns0:updated>
    <ns0:published>2026-04-28T12:37:53Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/frescobaldi/frescobaldi/releases/tag/v4.0.6" type="text/html"/>
    <ns0:summary type="html">&lt;h2&gt;No macOS packages in this release&lt;/h2&gt;
&lt;p&gt;The certificate used to sign the DMG packages for macOS is expired and we cannot currently build and distribute macOS packages. We've &lt;a href="https://lists.nongnu.org/archive/html/lilypond-user/2026-04/msg00104.html" rel="nofollow"&gt;asked for help&lt;/a&gt; and we hope we'll be able to build macOS packages soon.&lt;br /&gt;
In the meanwhile you can install Python and &lt;a href="https://github.com/frescobaldi/frescobaldi/blob/master/PACKAGES.md#briefcase"&gt;build a local package on your computer&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;What's Changed&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Avoid CI failure + version bump by &lt;a class="user-mention notranslate" href="https://github.com/fedelibre"&gt;@fedelibre&lt;/a&gt; in &lt;a class="issue-link js-issue-link" href="https://github.com/frescobaldi/frescobaldi/pull/2155"&gt;#2155&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Add a GitHub Action workflow to build a flatpak package by &lt;a class="user-mention notranslate" href="https://github.com/fedelibre"&gt;@fedelibre&lt;/a&gt; in &lt;a class="issue-link js-issue-link" href="https://github.com/frescobaldi/frescobaldi/pull/2162"&gt;#2162&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Fix redundant Shift modifier in shortcuts for symbol keys by &lt;a class="user-mention notranslate" href="https://github.com/infinitekh"&gt;@infinitekh&lt;/a&gt; in &lt;a class="issue-link js-issue-link" href="https://github.com/frescobaldi/frescobaldi/pull/2161"&gt;#2161&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;flatpak: upgrade to 6.10 KDE runtime by &lt;a class="user-mention notranslate" href="https://github.com/fedelibre"&gt;@fedelibre&lt;/a&gt; in &lt;a class="issue-link js-issue-link" href="https://github.com/frescobaldi/frescobaldi/pull/2166"&gt;#2166&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Check for specific Qt features rather than the overall version by &lt;a class="user-mention notranslate" href="https://github.com/bmjcode"&gt;@bmjcode&lt;/a&gt; in &lt;a class="issue-link js-issue-link" href="https://github.com/frescobaldi/frescobaldi/pull/2171"&gt;#2171&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Use a background thread for music related parsing/computation while editing by &lt;a class="user-mention notranslate" href="https://github.com/bmjcode"&gt;@bmjcode&lt;/a&gt; in &lt;a class="issue-link js-issue-link" href="https://github.com/frescobaldi/frescobaldi/pull/2152"&gt;#2152&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;LilyPond preferences: allow Custom menu in flatpak by &lt;a class="user-mention notranslate" href="https://github.com/fedelibre"&gt;@fedelibre&lt;/a&gt; in &lt;a class="issue-link js-issue-link" href="https://github.com/frescobaldi/frescobaldi/pull/2172"&gt;#2172&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Remove unused weakref imports by &lt;a class="user-mention notranslate" href="https://github.com/bmjcode"&gt;@bmjcode&lt;/a&gt; in &lt;a class="issue-link js-issue-link" href="https://github.com/frescobaldi/frescobaldi/pull/2180"&gt;#2180&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Requires 3.10 as minimum Python version by &lt;a class="user-mention notranslate" href="https://github.com/fedelibre"&gt;@fedelibre&lt;/a&gt; in &lt;a class="issue-link js-issue-link" href="https://github.com/frescobaldi/frescobaldi/pull/2157"&gt;#2157&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Fix a TypeError when downloading LilyPond on older Python versions by &lt;a class="user-mention notranslate" href="https://github.com/bmjcode"&gt;@bmjcode&lt;/a&gt; in &lt;a class="issue-link js-issue-link" href="https://github.com/frescobaldi/frescobaldi/pull/2181"&gt;#2181&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Automatically unconfigure missing LilyPond versions by &lt;a class="user-mention notranslate" href="https://github.com/bmjcode"&gt;@bmjcode&lt;/a&gt; in &lt;a class="issue-link js-issue-link" href="https://github.com/frescobaldi/frescobaldi/pull/2186"&gt;#2186&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Set the Preferences dialog to a more reasonable initial size by &lt;a class="user-mention notranslate" href="https://github.com/bmjcode"&gt;@bmjcode&lt;/a&gt; in &lt;a class="issue-link js-issue-link" href="https://github.com/frescobaldi/frescobaldi/pull/2185"&gt;#2185&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Fix the logic to maintain consecutive array indices in saveinfos() by &lt;a class="user-mention notranslate" href="https://github.com/bmjcode"&gt;@bmjcode&lt;/a&gt; in &lt;a class="issue-link js-issue-link" href="https://github.com/frescobaldi/frescobaldi/pull/2189"&gt;#2189&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Add QoL option to lilypond not found warning by &lt;a class="user-mention notranslate" href="https://github.com/JaumePujantell"&gt;@JaumePujantell&lt;/a&gt; in &lt;a class="issue-link js-issue-link" href="https://github.com/frescobaldi/frescobaldi/pull/2191"&gt;#2191&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Add 2.26.0 to the available LilyPond versions in the Score Wizard by &lt;a class="user-mention notranslate" href="https://github.com/bmjcode"&gt;@bmjcode&lt;/a&gt; in &lt;a class="issue-link js-issue-link" href="https://github.com/frescobaldi/frescobaldi/pull/2195"&gt;#2195&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Rethink (and document) low-DPI options for copy-to-image by &lt;a class="user-mention notranslate" href="https://github.com/bmjcode"&gt;@bmjcode&lt;/a&gt; in &lt;a class="issue-link js-issue-link" href="https://github.com/frescobaldi/frescobaldi/pull/2197"&gt;#2197&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;lilypond.exe is the correct file name by &lt;a class="user-mention notranslate" href="https://github.com/fedelibre"&gt;@fedelibre&lt;/a&gt; in &lt;a class="issue-link js-issue-link" href="https://github.com/frescobaldi/frescobaldi/pull/2192"&gt;#2192&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;4.0.6 release by &lt;a class="user-mention notranslate" href="https://github.com/fedelibre"&gt;@fedelibre&lt;/a&gt; in &lt;a class="issue-link js-issue-link" href="https://github.com/frescobaldi/frescobaldi/pull/2187"&gt;#2187&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;New Contributors&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="user-mention notranslate" href="https://github.com/infinitekh"&gt;@infinitekh&lt;/a&gt; made their first contribution in &lt;a class="issue-link js-issue-link" href="https://github.com/frescobaldi/frescobaldi/pull/2161"&gt;#2161&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="user-mention notranslate" href="https://github.com/JaumePujantell"&gt;@JaumePujantell&lt;/a&gt; made their first contribution in &lt;a class="issue-link js-issue-link" href="https://github.com/frescobaldi/frescobaldi/pull/2191"&gt;#2191&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Full Changelog&lt;/strong&gt;: &lt;a class="commit-link" href="https://github.com/frescobaldi/frescobaldi/compare/v4.0.5...v4.0.6"&gt;&lt;tt&gt;v4.0.5...v4.0.6&lt;/tt&gt;&lt;/a&gt;&lt;/p&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>frescobaldi</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>amsynth - 2.0b1</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-04-27:tag:github.com,2008:Repository/6212471/release-2.0b1</ns0:id>
    <ns0:updated>2026-04-27T14:45:27Z</ns0:updated>
    <ns0:published>2026-04-27T14:45:27Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/amsynth/amsynth/releases/tag/release-2.0b1" type="text/html"/>
    <ns0:summary type="html">&lt;ul&gt;
&lt;li&gt;Ported the GUI from GTK2 to JUCE.&lt;br /&gt;
PACKAGERS TAKE NOTE: build dependencies have changed!&lt;/li&gt;
&lt;li&gt;Added preset selection, saving, and main menu to plug-ins GUIs.&lt;/li&gt;
&lt;li&gt;Added support for fractional UI scaling.&lt;/li&gt;
&lt;li&gt;Added support for LV2 touch extension.&lt;/li&gt;
&lt;li&gt;The lv2-dev package is no longer required; JUCE bundles the LV2 headers.&lt;/li&gt;
&lt;li&gt;Added support for &lt;a href="https://github.com/ODDSound/MTS-ESP"&gt;MTS-ESP&lt;/a&gt; microtuning,&lt;br /&gt;
excluding multi-channel tuning tables.&lt;/li&gt;
&lt;li&gt;Removed support for JACK-Session, which is deprecated and unsupported.&lt;/li&gt;
&lt;li&gt;Replaced &lt;code&gt;--force-device-scale-factor&lt;/code&gt; with &lt;code&gt;--ui-scale&lt;/code&gt; and added &lt;code&gt;ui_scale&lt;/code&gt; to config file.&lt;/li&gt;
&lt;li&gt;Fixed a memory leak in VST effGetChunk handler.&lt;/li&gt;
&lt;li&gt;Fixed parameters not automatable in VST plugin.&lt;/li&gt;
&lt;li&gt;Fixed unintentional distortion on some presets - issue &lt;a class="issue-link js-issue-link" href="https://github.com/amsynth/amsynth/issues/235"&gt;#235&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Fixed values passed to VST audioMasterAutomate.&lt;/li&gt;
&lt;li&gt;Added Visual Studio project to allow building VST for Windows.&lt;/li&gt;
&lt;li&gt;Added Xcode project to allow building AudioUnit &amp;amp; VST for macOS.&lt;/li&gt;
&lt;/ul&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>amsynth</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>waveform-playlist - Master Output Node</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-04-26:tag:github.com,2008:Repository/8150190/master-output-node</ns0:id>
    <ns0:updated>2026-04-26T01:10:15Z</ns0:updated>
    <ns0:published>2026-04-26T01:10:15Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/naomiaro/waveform-playlist/releases/tag/master-output-node" type="text/html"/>
    <ns0:summary type="html">&lt;h2&gt;Summary&lt;/h2&gt;
&lt;p&gt;Exposes &lt;code&gt;masterOutputNode&lt;/code&gt; on both adapters — a serial tap point in the audio signal chain for connecting analyzers, effects, recorders, or any AudioNode.&lt;/p&gt;
&lt;h2&gt;Published Packages&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Package&lt;/th&gt;
&lt;th&gt;Version&lt;/th&gt;
&lt;th&gt;Change&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;@waveform-playlist/engine&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;13.1.0&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Optional &lt;code&gt;masterOutputNode&lt;/code&gt; on &lt;code&gt;PlayoutAdapter&lt;/code&gt; interface&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;@waveform-playlist/playout&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;12.2.0&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Serial &lt;code&gt;Gain&lt;/code&gt; tap node, eager playout creation, &lt;code&gt;masterOutputNode&lt;/code&gt; getter&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;@dawcore/transport&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.0.10&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Transport.masterOutputNode&lt;/code&gt; getter&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2&gt;New Examples&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;examples/dawcore-native/analyser.html&lt;/code&gt; — Spectrum analyser with Native Web Audio&lt;/li&gt;
&lt;li&gt;&lt;code&gt;examples/dawcore-tone/analyser.html&lt;/code&gt; — Spectrum analyser with Tone.js&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Usage&lt;/h2&gt;
&lt;div class="highlight highlight-source-js notranslate position-relative overflow-auto"&gt;&lt;pre&gt;&lt;span class="pl-c"&gt;// Parallel — connect analyser, audio still flows to speakers&lt;/span&gt;
&lt;span class="pl-k"&gt;const&lt;/span&gt; &lt;span class="pl-s1"&gt;analyser&lt;/span&gt; &lt;span class="pl-c1"&gt;=&lt;/span&gt; &lt;span class="pl-s1"&gt;audioContext&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-en"&gt;createAnalyser&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
&lt;span class="pl-s1"&gt;adapter&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-c1"&gt;masterOutputNode&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-en"&gt;connect&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-s1"&gt;analyser&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;

&lt;span class="pl-c"&gt;// Serial — disconnect speakers, route through effect chain&lt;/span&gt;
&lt;span class="pl-s1"&gt;adapter&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-c1"&gt;masterOutputNode&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-en"&gt;disconnect&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-s1"&gt;audioContext&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-c1"&gt;destination&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
&lt;span class="pl-s1"&gt;adapter&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-c1"&gt;masterOutputNode&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-en"&gt;connect&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-s1"&gt;reverb&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
&lt;span class="pl-s1"&gt;reverb&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-en"&gt;connect&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-s1"&gt;audioContext&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-c1"&gt;destination&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2&gt;Signal Chain&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Native:&lt;/strong&gt; &lt;code&gt;masterGain → destination&lt;/code&gt; (masterOutputNode = masterGain)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tone.js:&lt;/strong&gt; &lt;code&gt;masterVolume → [effects] → tap → destination&lt;/code&gt; (masterOutputNode = tap)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Closes part of &lt;a class="issue-link js-issue-link" href="https://github.com/naomiaro/waveform-playlist/issues/378"&gt;#378&lt;/a&gt; (spectrum analyzer output routing)&lt;/p&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>waveform-playlist</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>waveform-playlist - Adapter-Pluggable daw-editor</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-04-25:tag:github.com,2008:Repository/8150190/adapter-pluggability</ns0:id>
    <ns0:updated>2026-04-25T23:37:19Z</ns0:updated>
    <ns0:published>2026-04-25T23:37:19Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/naomiaro/waveform-playlist/releases/tag/adapter-pluggability" type="text/html"/>
    <ns0:summary type="html">&lt;h2&gt;Summary&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;&amp;lt;daw-editor&amp;gt;&lt;/code&gt; is now adapter-agnostic — consumers provide their own &lt;code&gt;PlayoutAdapter&lt;/code&gt; (&lt;code&gt;NativePlayoutAdapter&lt;/code&gt; or &lt;code&gt;TonePlayoutAdapter&lt;/code&gt;). No default adapter or AudioContext created internally.&lt;/p&gt;
&lt;h2&gt;Published Packages&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Package&lt;/th&gt;
&lt;th&gt;Version&lt;/th&gt;
&lt;th&gt;Change&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;@waveform-playlist/engine&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;13.0.0&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Breaking: &lt;code&gt;ppqn&lt;/code&gt; required on &lt;code&gt;PlayoutAdapter&lt;/code&gt;, adapter is source of truth&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;@waveform-playlist/playout&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;12.1.0&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;TonePlayoutAdapter&lt;/code&gt; gains tempo/meter, cross-context worklet bridge&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;@waveform-playlist/worklets&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;12.1.0&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;addRecordingWorkletModule&lt;/code&gt; / &lt;code&gt;addMeterWorkletModule&lt;/code&gt; (SAC pattern)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;@waveform-playlist/recording&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;12.0.1&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Internal: uses new worklet helpers&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;@dawcore/components&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.0.12&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Breaking: &lt;code&gt;adapter&lt;/code&gt; required, &lt;code&gt;transport&lt;/code&gt; getter removed, &lt;code&gt;sample-rate&lt;/code&gt; attribute removed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;@dawcore/transport&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.0.9&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Exposes &lt;code&gt;audioContext&lt;/code&gt; and &lt;code&gt;ppqn&lt;/code&gt; getters&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2&gt;Highlights&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Adapter pluggability&lt;/strong&gt; — choose between Native Web Audio (multi-tempo, multi-meter, metronome) and Tone.js (effects, MIDI synths)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PPQN driven by adapter&lt;/strong&gt; — adapter is the source of truth for tick resolution; &lt;code&gt;setPpqn?()&lt;/code&gt; lets the editor request, adapter decides&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cross-context worklet support (SAC pattern)&lt;/strong&gt; — recording works with both adapters via callback injection for &lt;code&gt;addModule&lt;/code&gt; and optional &lt;code&gt;createAudioWorkletNode&lt;/code&gt;/&lt;code&gt;createMediaStreamSource&lt;/code&gt; on the adapter&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Examples restructured&lt;/strong&gt; — &lt;code&gt;examples/dawcore-native/&lt;/code&gt; and &lt;code&gt;examples/dawcore-tone/&lt;/code&gt; with basic, multiclip, beats-grid, and recording pages&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Independent versioning&lt;/strong&gt; — packages now follow their own semver based on actual changes&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Breaking Changes (dawcore 0.0.x)&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;editor.adapter = new NativePlayoutAdapter(new AudioContext())&lt;/code&gt; required before use&lt;/li&gt;
&lt;li&gt;&lt;code&gt;editor.transport&lt;/code&gt; removed — use &lt;code&gt;adapter.transport&lt;/code&gt; directly&lt;/li&gt;
&lt;li&gt;&lt;code&gt;editor.audioContext&lt;/code&gt; setter removed — context comes from adapter&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sample-rate&lt;/code&gt; attribute removed — rate determined by adapter's AudioContext&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Migration&lt;/h2&gt;
&lt;div class="highlight highlight-source-js notranslate position-relative overflow-auto"&gt;&lt;pre&gt;&lt;span class="pl-c"&gt;// Before&lt;/span&gt;
&lt;span class="pl-k"&gt;import&lt;/span&gt; &lt;span class="pl-s"&gt;'@dawcore/components'&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
&lt;span class="pl-c"&gt;// editor auto-created AudioContext + NativePlayoutAdapter&lt;/span&gt;

&lt;span class="pl-c"&gt;// After&lt;/span&gt;
&lt;span class="pl-k"&gt;import&lt;/span&gt; &lt;span class="pl-s"&gt;'@dawcore/components'&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
&lt;span class="pl-k"&gt;import&lt;/span&gt; &lt;span class="pl-kos"&gt;{&lt;/span&gt; &lt;span class="pl-v"&gt;NativePlayoutAdapter&lt;/span&gt; &lt;span class="pl-kos"&gt;}&lt;/span&gt; &lt;span class="pl-k"&gt;from&lt;/span&gt; &lt;span class="pl-s"&gt;'@dawcore/transport'&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;

&lt;span class="pl-k"&gt;const&lt;/span&gt; &lt;span class="pl-s1"&gt;editor&lt;/span&gt; &lt;span class="pl-c1"&gt;=&lt;/span&gt; &lt;span class="pl-smi"&gt;document&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-en"&gt;querySelector&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-s"&gt;'daw-editor'&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
&lt;span class="pl-s1"&gt;editor&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-c1"&gt;adapter&lt;/span&gt; &lt;span class="pl-c1"&gt;=&lt;/span&gt; &lt;span class="pl-k"&gt;new&lt;/span&gt; &lt;span class="pl-v"&gt;NativePlayoutAdapter&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-k"&gt;new&lt;/span&gt; &lt;span class="pl-v"&gt;AudioContext&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Closes &lt;a class="issue-link js-issue-link" href="https://github.com/naomiaro/waveform-playlist/issues/378"&gt;#378&lt;/a&gt;&lt;/p&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>waveform-playlist</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>v3.0.0: Merge pull request #1496 from jacktrip/dev</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-04-25:tag:github.com,2008:Repository/32189587/v3.0.0</ns0:id>
    <ns0:updated>2026-04-25T23:15:36Z</ns0:updated>
    <ns0:published>2026-04-25T23:15:36Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/jacktrip/jacktrip/releases/tag/v3.0.0" type="text/html"/>
    <ns0:summary type="html">&lt;p&gt;Merge dev to main to include windows deeplink fix in 3.0.0&lt;/p&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>jacktrip</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>alsa-scarlett-gui - 1.0beta7</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-04-25:tag:github.com,2008:Repository/469474871/1.0beta7</ns0:id>
    <ns0:updated>2026-04-25T22:34:53Z</ns0:updated>
    <ns0:published>2026-04-25T22:34:53Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/geoffreybennett/alsa-scarlett-gui/releases/tag/1.0beta7" type="text/html"/>
    <ns0:summary type="html">&lt;p&gt;Add Front Panel tab for brightness and sleep time&lt;/p&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>alsa-scarlett-gui</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>ultramaster_kr106 - v2.5.12</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-04-25:tag:github.com,2008:Repository/1170941801/v2.5.12</ns0:id>
    <ns0:updated>2026-04-25T17:27:12Z</ns0:updated>
    <ns0:published>2026-04-25T17:27:12Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/kayrockscreenprinting/ultramaster_kr106/releases/tag/v2.5.12" type="text/html"/>
    <ns0:summary type="html">&lt;p&gt;&lt;strong&gt;Full Changelog&lt;/strong&gt;: &lt;a class="commit-link" href="https://github.com/kayrockscreenprinting/ultramaster_kr106/compare/v2.5.11...v2.5.12"&gt;&lt;tt&gt;v2.5.11...v2.5.12&lt;/tt&gt;&lt;/a&gt;&lt;/p&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>ultramaster_kr106</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>lilypond - v2.27.0</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-04-25:tag:github.com,2008:Repository/12852427/v2.27.0</ns0:id>
    <ns0:updated>2026-04-25T12:20:01Z</ns0:updated>
    <ns0:published>2026-04-25T12:20:01Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/lilypond/lilypond/releases/tag/v2.27.0" type="text/html"/>
    <ns0:summary type="html">&lt;p&gt;LilyPond 2.27.0&lt;/p&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>lilypond</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>ultramaster_kr106 - v2.5.11</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-04-24:tag:github.com,2008:Repository/1170941801/v2.5.11</ns0:id>
    <ns0:updated>2026-04-24T21:40:51Z</ns0:updated>
    <ns0:published>2026-04-24T21:40:51Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/kayrockscreenprinting/ultramaster_kr106/releases/tag/v2.5.11" type="text/html"/>
    <ns0:summary type="html">&lt;p&gt;&lt;strong&gt;Full Changelog&lt;/strong&gt;: &lt;a class="commit-link" href="https://github.com/kayrockscreenprinting/ultramaster_kr106/compare/v2.5.10...v2.5.11"&gt;&lt;tt&gt;v2.5.10...v2.5.11&lt;/tt&gt;&lt;/a&gt;&lt;/p&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>ultramaster_kr106</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>jamulus - Release 3.12.0rc1 (r3_12_0rc1)</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-04-24:tag:github.com,2008:Repository/177287710/r3_12_0rc1</ns0:id>
    <ns0:updated>2026-04-24T19:55:11Z</ns0:updated>
    <ns0:published>2026-04-24T19:55:11Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/jamulussoftware/jamulus/releases/tag/r3_12_0rc1" type="text/html"/>
    <ns0:summary type="html">&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Client+Server: Correct QoS setting for IPv6 (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3622"&gt;#3622&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/rdica"&gt;@rdica&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Tools: Updated checkkeys.pl to flag missing accelerator key in translation (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3635"&gt;#3635&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/softins"&gt;@softins&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Tools: Updated changelog-helper to report skipped PRs (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3639"&gt;#3639&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/softins"&gt;@softins&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Server/Client: Allow registration and display of longer version numbers (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3657"&gt;#3657&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/softins"&gt;@softins&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Extended SRV record support (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3556"&gt;#3556&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/softins"&gt;@softins&lt;/a&gt;, &lt;a class="user-mention notranslate" href="https://github.com/rdica"&gt;@rdica&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Client RPC: Added a jamulusclient/setFaderLevel method to the RPC remote interface (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3571"&gt;#3571&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/corrados"&gt;@corrados&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Client RPC: Added jamulusclient/pollServerList methods and jamulusclient/receivedServerList notification to JSON-RPC interface (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3479"&gt;#3479&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/ann0see"&gt;@ann0see&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Server RPC: Added jamulusserver/setDirectory request (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3533"&gt;#3533&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/pljones"&gt;@pljones&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;iOS/Android: Use compact view as default view on mobile OS for better usability (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3587"&gt;#3587&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/ann0see"&gt;@ann0see&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Added link to privacy policy (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3586"&gt;#3586&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/ann0see"&gt;@ann0see&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Tools: checkkeys.pl now automatically finds the translation directory (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3590"&gt;#3590&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/softins"&gt;@softins&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Tools: updated checkkeys.pl to use XML::LibXML (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3558"&gt;#3558&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/softins"&gt;@softins&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Tools: added improvements to changelog-helper.sh (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3459"&gt;#3459&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/softins"&gt;@softins&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Tools: Added missing Makefile.in files to Opus 1.5.2 distro (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3488"&gt;#3488&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/softins"&gt;@softins&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Translations updated from Hosted Weblate (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3540"&gt;#3540&lt;/a&gt;, &lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3453"&gt;#3453&lt;/a&gt;, &lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3441"&gt;#3441&lt;/a&gt;, &lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3388"&gt;#3388&lt;/a&gt;, &lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3652"&gt;#3652&lt;/a&gt;, &lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3638"&gt;#3638&lt;/a&gt;, &lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3620"&gt;#3620&lt;/a&gt;, &lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3656"&gt;#3656&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/weblate"&gt;@weblate&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Translation: Added Japanese translation (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3568"&gt;#3568&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/tsukurun"&gt;@tsukurun&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Translation: Updated Slovak translation (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3650"&gt;#3650&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/jose1711"&gt;@jose1711&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Client: Added MIDI tab to Settings GUI exposing MIDI parameters. MIDI Learn feature also added (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3502"&gt;#3502&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/ignotus666"&gt;@ignotus666&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Client: Added screen-reader accessibility to server list in the Connect dialog (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3606"&gt;#3606&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/chigkim"&gt;@chigkim&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Client: Bug: Fix missing variables passed to connect dialog (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3578"&gt;#3578&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/ann0see"&gt;@ann0see&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Client: Use the commit time rather than commit id for sort in --showallserver (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3562"&gt;#3562&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/pljones"&gt;@pljones&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Client: Fix sorting of version number in connect dialog with --showallservers (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3557"&gt;#3557&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/softins"&gt;@softins&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Client: Display version for each server in the Connect dialog (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3416"&gt;#3416&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/softins"&gt;@softins&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Client: Added "Sort by Channel" to mixer view (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3418"&gt;#3418&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/pljones"&gt;@pljones&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Client: allocate channel numbers locally and always give user own channel of 0 (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3426"&gt;#3426&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/softins"&gt;@softins&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Client: Apply rate-limiting to Pan change messages to eliminate lag in their effect (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3429"&gt;#3429&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/softins"&gt;@softins&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Client: Added native MIDI support to the ASIO (non-Jack) Windows build (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3431"&gt;#3431&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/softins"&gt;@softins&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Server: Disabled swap memory usage on Linux (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3381"&gt;#3381&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/dtinth"&gt;@dtinth&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Server: The &lt;code&gt;-m&lt;/code&gt;/&lt;code&gt;--htmlstatus&lt;/code&gt; option is considered deprecated and has been replaced by JSON RPC's &lt;code&gt;jamulusserver/getClients&lt;/code&gt; method. The &lt;code&gt;-m&lt;/code&gt; option will be removed in future (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3398"&gt;#3398&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/ann0see"&gt;@ann0see&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Windows: Avoid screensaver or sleeping if connected to a server (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3498"&gt;#3498&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/ann0see"&gt;@ann0see&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Linux: Reorder service initialization to wait for network interface before starting the Server (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3440"&gt;#3440&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/rdica"&gt;@rdica&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;iOS: Fixed GUI issue preventing the connect dialog to show correctly (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3343"&gt;#3343&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/ann0see"&gt;@ann0see&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;iOS: Add notes for iOS compiling documentation (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3594"&gt;#3594&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/ann0see"&gt;@ann0see&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;iOS: Add workaround from QTBUG-129651 for iOS FFMPEG linking (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3581"&gt;#3581&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/ann0see"&gt;@ann0see&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;iOS: Upgrade build for Qt 6 compatibility (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3445"&gt;#3445&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/ann0see"&gt;@ann0see&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;iOS: Return correct operating system version if run as server (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3360"&gt;#3360&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/ann0see"&gt;@ann0see&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;iOS: Added icon to iOS app (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3410"&gt;#3410&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/ann0see"&gt;@ann0see&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;iOS: Fix app hang if the language was changed (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3411"&gt;#3411&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/ann0see"&gt;@ann0see&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;iOS: Fix crash on Qt6 after closing the chat window (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3413"&gt;#3413&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/ann0see"&gt;@ann0see&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Build: Updated bundled Qt6 to version 6.10.1 (iOS 6.7.3) (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3407"&gt;#3407&lt;/a&gt;, &lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3262"&gt;#3262&lt;/a&gt;, &lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3599"&gt;#3599&lt;/a&gt;).&lt;br /&gt;
(contributed by @app/github-actions)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Build: Updated Windows Installer base (NSIS) to version 3.11 (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3483"&gt;#3483&lt;/a&gt;).&lt;br /&gt;
(contributed by @app/github-actions)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Build: Bump maxim-lobanov/setup-xcode from 1.6.0 to 1.7.0 (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3645"&gt;#3645&lt;/a&gt;).&lt;br /&gt;
(contributed by @app/dependabot)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Build: Bump actions/download-artifact from 7 to 8 (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3633"&gt;#3633&lt;/a&gt;).&lt;br /&gt;
(contributed by @app/dependabot)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Build: Bump actions/upload-artifact from 6 to 7 (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3634"&gt;#3634&lt;/a&gt;).&lt;br /&gt;
(contributed by @app/dependabot)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Build: Improvements and ASIO fix for Windows dependencies (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3612"&gt;#3612&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/softins"&gt;@softins&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Build: Windows: Move ASIO to GPL (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3553"&gt;#3553&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/gilgongo"&gt;@gilgongo&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Build: Updated Opus library to v1.5.2 (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3409"&gt;#3409&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/softins"&gt;@softins&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Build: Upgrade Android Runner to Ubuntu 22.04 (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3444"&gt;#3444&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/ann0see"&gt;@ann0see&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Build: Switch Linux ARM builds to be built on arm runners (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3470"&gt;#3470&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/ann0see"&gt;@ann0see&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Build: Provide continued legacy macOS support (but moving Sierra to High Sierra as minimum target) (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3579"&gt;#3579&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/pljones"&gt;@pljones&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Build: Updated the Github build runner for MacOS Legacy to macos-13 (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3436"&gt;#3436&lt;/a&gt;).&lt;br /&gt;
(contributed by &lt;a class="user-mention notranslate" href="https://github.com/softins"&gt;@softins&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Build: Bump ASIO-SDK from asiosdk_2.3.3_2019-06-14 to ASIO-SDK_2.3.4_2025-10-15 (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3617"&gt;#3617&lt;/a&gt;).&lt;br /&gt;
(contributed by @app/github-actions)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Build: Bump Qt6 from 6.10.1 to 6.10.2 (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3616"&gt;#3616&lt;/a&gt;).&lt;br /&gt;
(contributed by @app/github-actions)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Build: Updated create-dmg (macOS) to version 1.2.3 (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3561"&gt;#3561&lt;/a&gt;).&lt;br /&gt;
(contributed by @app/github-actions)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Build: Bump actions/checkout from 4 to 6 (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3566"&gt;#3566&lt;/a&gt;).&lt;br /&gt;
(contributed by @app/dependabot)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Build: Bump github/codeql-action from 3 to 4 (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3549"&gt;#3549&lt;/a&gt;).&lt;br /&gt;
(contributed by @app/dependabot)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Build: Bump actions/cache from 4 to 5 (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3574"&gt;#3574&lt;/a&gt;).&lt;br /&gt;
(contributed by @app/dependabot)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Build: Bump actions/upload-artifact from 4 to 6 (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3576"&gt;#3576&lt;/a&gt;).&lt;br /&gt;
(contributed by @app/dependabot)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Build: Bump actions/download-artifact from 4 to 7 (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3575"&gt;#3575&lt;/a&gt;).&lt;br /&gt;
(contributed by @app/dependabot)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Build: Bump DoozyX/clang-format-lint-action from 0.18.2 to 0.20 (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3490"&gt;#3490&lt;/a&gt;).&lt;br /&gt;
(contributed by @app/dependabot)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Build: Bump DoozyX/clang-format-lint-action from 11b773b1598aa4ae3b32f023701bca5201c3817d to c71d0bf4e21876ebec3e5647491186f8797fde31 (&lt;a class="issue-link js-issue-link" href="https://github.com/jamulussoftware/jamulus/pull/3368"&gt;#3368&lt;/a&gt;).&lt;br /&gt;
(contributed by @app/dependabot)&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>jamulus</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>Cable - 0.10.6</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-04-24:tag:github.com,2008:Repository/828356582/0.10.6</ns0:id>
    <ns0:updated>2026-04-24T16:47:16Z</ns0:updated>
    <ns0:published>2026-04-24T16:47:16Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/magillos/Cable/releases/tag/0.10.6" type="text/html"/>
    <ns0:summary type="html">&lt;ul&gt;
&lt;li&gt;Added stereo bulking in graph (reverted port connection logic, as bulks can now do it). Mentioned in &lt;a class="issue-link js-issue-link" href="https://github.com/magillos/Cable/issues/38"&gt;#38&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Added optional monochrome icon (enable in settings).&lt;/li&gt;
&lt;li&gt;Added highlight for drag and drop in matrices.&lt;/li&gt;
&lt;li&gt;Fixes: unified connection logic for drag and drop and Connect button in connection manager (Audio tab), fixed rubber band selection being triggered from inside the node (graph), enhanced context menu for bulks (graph), removed bulks from MIDI nodes (graph).&lt;/li&gt;
&lt;/ul&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>Cable</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>Home on Libre Arts - GIMP at LGM2026</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-04-24:https://librearts.org/2026/04/gimp-at-lgm2026/</ns0:id>
    <ns0:updated>2026-04-24T00:00:00Z</ns0:updated>
    <ns0:published>2026-04-24T00:00:00Z</ns0:published>
    <ns0:link rel="alternate" href="https://librearts.org/2026/04/gimp-at-lgm2026/" type="text/html"/>
    <ns0:summary type="html">&lt;p&gt;Yesterday at LGM2026, GIMP&amp;rsquo;s maintainer Jehan Pagès gave a talk about GIMP as a community project and made several interesting announcements.&lt;/p&gt;
&lt;p&gt;This post is going to be quite a bit critical, so before I proceed, here is the obligatory disclaimer: I used to be a GIMP contributor, significantly decreased my participation in late 2021, and officially bowed out in late 2022.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m omitting a lot of things I found less interesting to discuss. You can &lt;a href="https://media.ccc.de/v/lgm-2026-110674-gimp-a-community-free-software" rel="noopener" target="_blank"&gt;watch the whole thing here&lt;/a&gt; and make your own judgments.&lt;/p&gt;
&lt;h2 id="past-organization-attempts"&gt;
    &lt;a href="#past-organization-attempts"&gt;
	Past organization attempts
    &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;During the talk, Jehan mentioned that the project first considered creating some form of a non-profit in 1999 but never acted on that idea. Then Jehan himself nearly created a non-profit for GIMP in 2023, but instead went on to sign a fiscal sponsorship agreement with GNOME Foundation in June 2024.&lt;/p&gt;
&lt;p&gt;Actually, scratch that. He did not exactly mention those last two bits of info: they were listed on the slide but weren&amp;rsquo;t discussed at all.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Non-profit" src="non-profit.webp" /&gt;
&lt;/p&gt;
&lt;p&gt;There&amp;rsquo;s no explanation why Jehan decided against creating the non-profit. Neither is there an explanation what the fiscal sponsorship agreement means.&lt;/p&gt;
&lt;p&gt;I do know one thing the agreement involved — transferring all BTC to GNOME Foundation for GNOME Foundation to immediately sell it and put the fiat money on GIMP&amp;rsquo;s account (they&amp;rsquo;ve been managing GIMP&amp;rsquo;s money since dawn of times). But I know it from tracking the transactions and reading one contributor&amp;rsquo;s comments on Reddit, not from any sort of official announcement, because &lt;a href="https://www.gimp.org/news/2024/11/06/gimp-3-0-RC1-released/#gnome-foundation-fiscal-host-agreement" rel="noopener" target="_blank"&gt;the only official announcement&lt;/a&gt; was very inspecific and hidden in release notes of v3.0RC1.&lt;/p&gt;
&lt;p&gt;By my &lt;a href="https://librearts.org/2025/03/gimp-3-0-released/#project-funding" rel="noopener" target="_blank"&gt;rough calculations from a year ago&lt;/a&gt;, there should be around 2 mil USD on that account after selling all BTC. So what have they been doing with that since early last year?&lt;/p&gt;
&lt;h2 id="committee"&gt;
    &lt;a href="#committee"&gt;
	Committee
    &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;First off, in 2024, the team created a formal committee. It&amp;rsquo;s currently comprised of 9 people:&lt;/p&gt;
&lt;p&gt;&lt;img alt="Committee" src="committee.webp" /&gt;
&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s break it down.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Akkana Peck created some really useful plugins for GIMP back in the day and wrote several extremely good books for beginner GIMP users.&lt;/li&gt;
&lt;li&gt;Aryeom Han is a digital artist and animator, she&amp;rsquo;s 1/2 of &lt;a href="https://film.zemarmot.net/en/" rel="noopener" target="_blank"&gt;Zemarmot animation project&lt;/a&gt; that relies on GIMP for production.&lt;/li&gt;
&lt;li&gt;Jehan Pagès has been the most active developer in the past decade or so and the current GIMP maintainer since 2021.&lt;/li&gt;
&lt;li&gt;Liam Quin has been a great help in supporting users for over two decades now and, since my departure, managing the social media presence (at least partially).&lt;/li&gt;
&lt;li&gt;Michael Natterer is former project maintainer and former lead developer. His involvement severely decreased in the past years after he had to take over family business.&lt;/li&gt;
&lt;li&gt;Michael Schumacher is the guy who has been managing funds on GIMP&amp;rsquo;s end for a very long time and sorting out various organizational things like LGM participation.&lt;/li&gt;
&lt;li&gt;Pat David was an active GIMP educator in 2010s, created the current GIMP&amp;rsquo;s website, and has been maintaining it ever since. He&amp;rsquo;s been keeping a relatively low profile in the project, you probably know him more as the creator of Pixls.us.&lt;/li&gt;
&lt;li&gt;Simon Budig used to be one of the most active contributors in the past (see &lt;a href="https://www.gimp.org/news/2025/11/01/simon-budig-interview-ww2017/" rel="noopener" target="_blank"&gt;this interview&lt;/a&gt; from November 2025). He&amp;rsquo;s been mostly patching things here and there every once in a while for the past 10-15 years and mainly doing user support.&lt;/li&gt;
&lt;li&gt;Ville Pätsi is another former active developer. To the best of my knowledge, he&amp;rsquo;s still around but mostly in the user support role.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So that should give you some idea who the committee members are. Personally, I think the committee&amp;rsquo;s composition is alright. But what do they do?&lt;/p&gt;
&lt;p&gt;Jehan specifically said:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The GIMP committee is only for the funds. It was very important to me that it&amp;rsquo;s not about leading the software, it&amp;rsquo;s about managing the funds to support the software. We don&amp;rsquo;t decide what features go in, it&amp;rsquo;s not our role and it should not be.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I&amp;rsquo;ve seen projects like FreeCAD adopt this kind of role separation and still get a lot of heat from a vocal minority, so I can perfectly understand this sentiment. (Full disclosure: in case of FreeCAD, &lt;a href="https://fpa.freecad.org/handbook/people/roster.html" rel="noopener" target="_blank"&gt;I&amp;rsquo;m very much biased&lt;/a&gt;.) So yes, this planned detachment from making software decisions makes sense to me personally and, hopefully, to you too.&lt;/p&gt;
&lt;p&gt;The committee actually has a &lt;a href="https://gitlab.gnome.org/Teams/GIMP/Committee" rel="noopener" target="_blank"&gt;dedicated project on GNOME&amp;rsquo;s Gitlab server&lt;/a&gt; where they explain a few things. They even use the &lt;a href="https://gitlab.gnome.org/Teams/GIMP/Committee/decisions/-/issues?sort=created_date&amp;amp;state=all&amp;amp;first_page_size=20" rel="noopener" target="_blank"&gt;issue tracker&lt;/a&gt; for decision-making in the open.&lt;/p&gt;
&lt;p&gt;The caveat is that while the committee has been around since approx. June 2024, it was never properly introduced. It got two minor mentions on the main website in release notes (&lt;a href="https://www.gimp.org/news/2024/12/27/gimp-3-0-RC2-released/" rel="noopener" target="_blank"&gt;v3.0RC2&lt;/a&gt; and &lt;a href="https://www.gimp.org/news/2026/03/28/gimp-3-2-2-released/" rel="noopener" target="_blank"&gt;v3.2.2&lt;/a&gt;), and two mentions on developer portal (&lt;a href="https://developer.gimp.org/conferences/lgm/2025-nuremberg_germany/" rel="noopener" target="_blank"&gt;1&lt;/a&gt;, &lt;a href="https://developer.gimp.org/conferences/wilberweek/2025-el_bruc_spain/" rel="noopener" target="_blank"&gt;2&lt;/a&gt;). Imagine a committee managing approx. $2,000,0000 of a FOSS project&amp;rsquo;s money and being nothing but a footnote on that very project&amp;rsquo;s website.&lt;/p&gt;
&lt;p&gt;So, about the things they do&amp;hellip;&lt;/p&gt;
&lt;h2 id="grants"&gt;
    &lt;a href="#grants"&gt;
	Grants
    &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;One of the committee&amp;rsquo;s decisions was to try issuing grants. So far, there have been two test grants issued to Jehan himself and to Øyvind Kolås, the lead GEGL developer of 20+ years.&lt;/p&gt;
&lt;p&gt;Jehan did not specify what the grants were issued for, how much any of them was, whether there was any formal proposal or agreement or any grant review and approval process whatsoever.&lt;/p&gt;
&lt;p&gt;Incidentally, there &lt;em&gt;is&lt;/em&gt; a &lt;a href="https://gitlab.gnome.org/Teams/GIMP/Committee/decisions/-/wikis/Grant-Awarding-Procedure" rel="noopener" target="_blank"&gt;description of the grant awarding procedure&lt;/a&gt;. I found it after asking someone who knew where to look. You now know about it too, likely after reading it here in an arcane blog post at the edge of interwebz.&lt;/p&gt;
&lt;p&gt;Jehan also mentioned that they are waiting for something to be unblocked from the administrative side to continue with the second round of grants. The slide specifically says &amp;ldquo;Currently waiting to be allowed to continue&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Grants" src="grants.webp" /&gt;
&lt;/p&gt;
&lt;p&gt;Taken literally, this &lt;em&gt;could&lt;/em&gt; mean that the committee doesn&amp;rsquo;t have full control over the funds and depends on the GNOME Foundation to take action.&lt;/p&gt;
&lt;p&gt;Again, there is no public information about the relationship between GIMP and GNOME Foundation. We are on the speculation territory here.&lt;/p&gt;
&lt;h2 id="no-ai-policy"&gt;
    &lt;a href="#no-ai-policy"&gt;
	No-AI policy
    &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;Jehan mentioned that the team has adopted a strict No-AI policy. This is a principle thing, and as you probably know from &lt;a href="https://oss-ai-policies.netlify.app/" rel="noopener" target="_blank"&gt;this study&lt;/a&gt;, FOSS projects are all over the spectrum on the use of AI.&lt;/p&gt;
&lt;p&gt;&lt;img alt="No AI" src="no-ai.webp" /&gt;
&lt;/p&gt;
&lt;p&gt;To the best of my knowledge, the formal part of this policy is &lt;a href="https://gitlab.gnome.org/GNOME/gimp/-/commit/a705e0fec3457725611fd28b94a09e539316ca64" rel="noopener" target="_blank"&gt;only mentioned in a Gitlab template&lt;/a&gt; updated in March 2025 and on the &lt;a href="https://developer.gimp.org/core/internship/" rel="noopener" target="_blank"&gt;Internship programs&lt;/a&gt; page at the developers portal.&lt;/p&gt;
&lt;h2 id="the-gsoc-thing"&gt;
    &lt;a href="#the-gsoc-thing"&gt;
	The GSoC thing
    &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;During the talk, Jehan mentioned that the project&amp;rsquo;s participation has been very successful, and 9 out of 10 students from 2022-2025 program installments sticked with the project. He went on to attribute this success to the team looking at people more than at proposals.&lt;/p&gt;
&lt;p&gt;&lt;img alt="GSoC" src="gsoc.webp" /&gt;
&lt;/p&gt;
&lt;p&gt;This is a mostly sensible approach, except his data is all wrong. Let me explain.&lt;/p&gt;
&lt;p&gt;The project indeed had 10 slots from GSoC between 2022 and 2025. However they were filled by 8 different people: both CmykStudent and Idriss Fekir participated twice.&lt;/p&gt;
&lt;p&gt;Here is a quick breakdown.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;CmykStudent successfully completed both 2022 and 2023 projects and went on to become GSoC mentor in the organization in 2024 and is still a very active contributor. Most recently, he&amp;rsquo;s been working on the &lt;a href="https://fosstodon.org/@CmykStudent/116234765959044917" rel="noopener" target="_blank"&gt;CMYK color mode&lt;/a&gt; and a &lt;a href="https://fosstodon.org/@CmykStudent/116455148076446506" rel="noopener" target="_blank"&gt;shape drawing tool&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Idriss Fekir did two good GSoC projects dedicated to the text tool, his involvement extended somewhat after the 2024 project, but he hasn&amp;rsquo;t been active since October 2025. He had 8 commits to the project over the last 12 months.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Shubham did one decent project in 2023, layer autoexpansion support, and stopped at that.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Cheesequake worked on modernizing the GtkTreeView widget and continued contributing past his GSoC project until about 7 months ago.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Varun Samaga B L made 15 commits to GEGL as part of his GSoC project in 2024 and dropped out.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Shivam Shekhar Soy completed his part of working on the new extensions website last year and left the project after the program&amp;rsquo;s end.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Gabriele Barbero worked on the text tool and continues contributing. His latest merged commit from March this year &lt;a href="https://gitlab.gnome.org/GNOME/gimp/-/commit/c6b44907a853e2b373389a736c96292ceb73fbd9" rel="noopener" target="_blank"&gt;fixed&lt;/a&gt; the text tool&amp;rsquo;s overlay positioning when the view is rotated.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Ondřej Míchal implemented GEGL filter explorer and keeps contributing. His most recent patches touch widgets, flatpak builds, and &lt;a href="https://mastodon.social/@martymichal/116286498437051571" rel="noopener" target="_blank"&gt;controllers UI in Preferences&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To sum it up, the statement that 9 out of 10 people sticked with the project is incorrect. There were 8 GSoC students between 2022 and 2025. 5 people continued contributing past their respective GSoC projects, 3 of them are currently active.&lt;/p&gt;
&lt;p&gt;That is still a really good result, plus, as far as I can tell, all 10 GSoC projects in the past years have been successful. I have no idea why this exaggeration was needed when they had a perfectly solid case already.&lt;/p&gt;
&lt;h2 id="summing-it-up"&gt;
    &lt;a href="#summing-it-up"&gt;
	Summing it up
    &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;So what have we learned from this LGM talk and this quick research?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The project has had a committee since at least the first half of 2024. It only makes decisions on spending the available funds.&lt;/li&gt;
&lt;li&gt;GIMP has been in a fiscal sponsorship agreement with GNOME Foundation at least since June 2024, with undisclosed terms.&lt;/li&gt;
&lt;li&gt;The team has been trying to start actually spending money on development, but all we know about it is that two active developers got the grants.&lt;/li&gt;
&lt;li&gt;The second round of grants is blocked on the administrative side, whoever they are, for whatever reason.&lt;/li&gt;
&lt;li&gt;There is no formal explanation what the grant program covers, who is eligible, what the program&amp;rsquo;s budget is, etc. But there is a short formal description of the process, and you can apply for a grant when the grant program resumes.&lt;/li&gt;
&lt;li&gt;The project has had a strict No-AI policy since at least March 2025.&lt;/li&gt;
&lt;li&gt;You have to pay attention to GIMP&amp;rsquo;s announcements of bugfix releases and release candidates. This is where they hide important news announcements about changes in the project management.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="in-conclusion"&gt;
    &lt;a href="#in-conclusion"&gt;
	In conclusion
    &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;I hope that while I&amp;rsquo;m very salty about this talk, you will appreciate that I&amp;rsquo;m also doing my best to stay objective.&lt;/p&gt;
&lt;p&gt;Despite the unfortunate GSoC blunder during the talk and the continuous lack of transparency, the team is finally making the right organizational changes, if at a glacial pace. Let&amp;rsquo;s hope to see more in the coming months/years.&lt;/p&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>Home on Libre Arts</ns0:name>
    </ns0:author>
    <ns0:category term="general"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>Ubuntu Studio 26.04 LTS Released</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-04-23:https://ubuntustudio.org/?p=3514</ns0:id>
    <ns0:updated>2026-04-23T17:23:27Z</ns0:updated>
    <ns0:published>2026-04-23T17:23:27Z</ns0:published>
    <ns0:link rel="alternate" href="https://ubuntustudio.org/2026/04/ubuntu-studio-26-04-lts-released/" type="text/html"/>
    <ns0:summary type="html">The Ubuntu Studio team is pleased to announce Ubuntu Studio 26.04 LTS, code-named &amp;#8220;Resolute Raccoon.&amp;#8221; This marks Ubuntu Studio&amp;#8217;s 38th release. This Long-Term Support (LTS) release is supported for 3 years, through April 2029.An Ubuntu Studio LTS arrives once every two years. This is more than a routine update: it... &lt;a class="moretag" href="https://ubuntustudio.org/2026/04/ubuntu-studio-26-04-lts-released/"&gt;Continue reading&lt;/a&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>Ubuntu Studio</ns0:name>
    </ns0:author>
    <ns0:category term="general"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>MusicBrainz Picard 3.0.0b1</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-04-23:tag:github.com,2008:Repository/2218679/release-3.0.0b1</ns0:id>
    <ns0:updated>2026-04-23T08:59:42Z</ns0:updated>
    <ns0:published>2026-04-23T08:59:42Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/metabrainz/picard/releases/tag/release-3.0.0b1" type="text/html"/>
    <ns0:summary type="html">&lt;p&gt;&lt;em&gt;Please refer to the &lt;a href="https://picard.musicbrainz.org/downloads/" rel="nofollow"&gt;download page&lt;/a&gt; for official download locations.&lt;/em&gt;&lt;/p&gt;
&lt;h3&gt;Bugfixes&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://tickets.metabrainz.org/browse/PICARD-3236" rel="nofollow"&gt;PICARD-3236&lt;/a&gt; - PyJWT~=2.12 requirement too strict and impacts distro packaging&lt;/li&gt;
&lt;li&gt;&lt;a href="https://tickets.metabrainz.org/browse/PICARD-3237" rel="nofollow"&gt;PICARD-3237&lt;/a&gt; - AppStream metadata validation fails due to changed FAQ URL&lt;/li&gt;
&lt;li&gt;&lt;a href="https://tickets.metabrainz.org/browse/PICARD-3238" rel="nofollow"&gt;PICARD-3238&lt;/a&gt; - No longer able to paste text value into multiple tracks&lt;/li&gt;
&lt;li&gt;&lt;a href="https://tickets.metabrainz.org/browse/PICARD-3239" rel="nofollow"&gt;PICARD-3239&lt;/a&gt; - Picard can not remove plugin data on Windows&lt;/li&gt;
&lt;li&gt;&lt;a href="https://tickets.metabrainz.org/browse/PICARD-3246" rel="nofollow"&gt;PICARD-3246&lt;/a&gt; - Genre tag changes on every reload when multiple genres have equal vote counts&lt;/li&gt;
&lt;li&gt;&lt;a href="https://tickets.metabrainz.org/browse/PICARD-3249" rel="nofollow"&gt;PICARD-3249&lt;/a&gt; - Tags not suggested in Edit Tag dialog&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;New Features&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://tickets.metabrainz.org/browse/PICARD-2982" rel="nofollow"&gt;PICARD-2982&lt;/a&gt; - Submit Listens to ListenBrainz using Picard&lt;/li&gt;
&lt;li&gt;&lt;a href="https://tickets.metabrainz.org/browse/PICARD-3250" rel="nofollow"&gt;PICARD-3250&lt;/a&gt; - Support Simplified Chinese to Traditional Chinese plugin in official builds&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Improvements&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://tickets.metabrainz.org/browse/PICARD-292" rel="nofollow"&gt;PICARD-292&lt;/a&gt; - Wizard/configuration tutorial on first run&lt;/li&gt;
&lt;li&gt;&lt;a href="https://tickets.metabrainz.org/browse/PICARD-3199" rel="nofollow"&gt;PICARD-3199&lt;/a&gt; - Detect FLAC &lt;code&gt;unsyncedlyrics&lt;/code&gt; tag&lt;/li&gt;
&lt;li&gt;&lt;a href="https://tickets.metabrainz.org/browse/PICARD-3240" rel="nofollow"&gt;PICARD-3240&lt;/a&gt; - Map &lt;code&gt;syncedlyrics&lt;/code&gt; to &lt;code&gt;WM/Lyrics_Synchronised&lt;/code&gt; for ASF&lt;/li&gt;
&lt;li&gt;&lt;a href="https://tickets.metabrainz.org/browse/PICARD-3244" rel="nofollow"&gt;PICARD-3244&lt;/a&gt; - Fix word-wrap issue regarding the network cache size option setting&lt;/li&gt;
&lt;li&gt;&lt;a href="https://tickets.metabrainz.org/browse/PICARD-3254" rel="nofollow"&gt;PICARD-3254&lt;/a&gt; - Plugins v3 MANIFEST: add support for &lt;code&gt;report_bugs_to&lt;/code&gt; field&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Tasks&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://tickets.metabrainz.org/browse/PICARD-3243" rel="nofollow"&gt;PICARD-3243&lt;/a&gt; - Documentation: Add note about unnecessary spaces in script functions&lt;/li&gt;
&lt;li&gt;&lt;a href="https://tickets.metabrainz.org/browse/PICARD-3247" rel="nofollow"&gt;PICARD-3247&lt;/a&gt; - Update snap build for Picard 3 with Qt6&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;&lt;/h1&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>picard</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>pipewire releases - 1.6.4</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-04-22:https://gitlab.freedesktop.org/pipewire/pipewire/-/releases/1.6.4</ns0:id>
    <ns0:updated>2026-04-22T08:50:08Z</ns0:updated>
    <ns0:published>2026-04-22T08:50:08Z</ns0:published>
    <ns0:link rel="alternate" href="https://gitlab.freedesktop.org/pipewire/pipewire/-/releases/1.6.4" type="text/html"/>
    <ns0:summary type="html">1.6.4</ns0:summary>
    <ns0:author>
      <ns0:name>pipewire releases</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>Noteahead - 2.1.0</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-04-21:tag:github.com,2008:Repository/313720469/2.1.0</ns0:id>
    <ns0:updated>2026-04-21T19:26:31Z</ns0:updated>
    <ns0:published>2026-04-21T19:26:31Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/juzzlin/Noteahead/releases/tag/2.1.0" type="text/html"/>
    <ns0:summary type="html">&lt;p&gt;2.1.0&lt;/p&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>Noteahead</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>LilyPond 2.26.0</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-04-21:tag:github.com,2008:Repository/12852427/v2.26.0</ns0:id>
    <ns0:updated>2026-04-21T18:46:28Z</ns0:updated>
    <ns0:published>2026-04-21T18:46:28Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/lilypond/lilypond/releases/tag/v2.26.0" type="text/html"/>
    <ns0:summary type="html">&lt;p&gt;We are proud to announce the release of GNU LilyPond 2.26.0. LilyPond is a music engraving program devoted to producing the highest-quality sheet music possible. It brings the aesthetics of traditionally engraved music to computer printouts.&lt;/p&gt;
&lt;p&gt;This version includes improvements and fixes since the branching of the previous stable release in October 2022. A list of added features and other user-visible changes can be found at &lt;a href="https://lilypond.org/doc/v2.26/Documentation/changes/" rel="nofollow"&gt;https://lilypond.org/doc/v2.26/Documentation/changes/&lt;/a&gt;. Pre-built binaries are linked from &lt;a href="https://lilypond.org/download.html" rel="nofollow"&gt;https://lilypond.org/download.html&lt;/a&gt; and available from GitLab: &lt;a href="https://gitlab.com/lilypond/lilypond/-/releases/v2.26.0" rel="nofollow"&gt;https://gitlab.com/lilypond/lilypond/-/releases/v2.26.0&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;We dedicate this release to Urs Liska, who passed away in December 2024. Urs was an accomplished pianist, a scholar and award-winning editor, a prolific advocate of real-world use of LilyPond, a contributor to the Frescobaldi project, and one of the initiators of OpenLilyLib. In 2020, he co-organized a Music Engraving Conference at the Mozarteum University in Salzburg, as well as a LilyPond meeting which brought together developers and the wider community. Urs will be remembered as a kind contributor whose enthusiasm for beautiful music engraving inspired others.&lt;/p&gt;
&lt;p&gt;LilyPond 2.26 is brought to you by&lt;/p&gt;
&lt;h6&gt;Main Developers:&lt;/h6&gt;
&lt;p&gt;Colin Campbell, Dan Eble, Jonas Hahnfeld, Phil Holmes, David Kastrup, Werner Lemberg, Han-Wen Nienhuys, Francisco Vila&lt;/p&gt;
&lt;h6&gt;Core Contributors:&lt;/h6&gt;
&lt;p&gt;Joram Berger, Martín Rincón Botero, Peter Chubb, Amir Czwink, Jiří Hon, Masamichi Hosoda, Nicolas Joyard, Michael Käppler, Mark Knoop, Thomas Morley, Lukas-Fabian Moser, Stefan Mueller, Benkő Pál, Mark Polesky, Alen Šiljak, Kim Shrier, Saul James Tobin, Christoph Wagner, John Wheeler, Éric Würbel, Jason Yip, David Zelinsky, Yiyu Zhou&lt;/p&gt;
&lt;h6&gt;Documentation Writers:&lt;/h6&gt;
&lt;p&gt;Simon Albrecht, Alexander Brock, Federico Bruni, Amir Czwink, Patrice Dumas, Derek Erdmann, Luise Flesch, Felix Janda, Thomas Morley, Paolo Prete, Furkan Şimşekli, David Zelinsky&lt;/p&gt;
&lt;h6&gt;Translators:&lt;/h6&gt;
&lt;p&gt;Walter Garcia-Fontes, Jean-Charles Malahieude, Begüm Önal, Gon Solo&lt;/p&gt;
&lt;h6&gt;and numerous other contributors.&lt;/h6&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>lilypond</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>rncbc.org - a.k.a. Rui Nuno Capela - qpwgraph v1.0.1 - A Spring'26 Release</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-04-21:2896 at https://www.rncbc.org/drupal</ns0:id>
    <ns0:updated>2026-04-21T17:00:00Z</ns0:updated>
    <ns0:published>2026-04-21T17:00:00Z</ns0:published>
    <ns0:link rel="alternate" href="https://www.rncbc.org/drupal/node/2896" type="text/html"/>
    <ns0:summary type="html">&lt;span class="field field--name-title field--type-string field--label-hidden"&gt;qpwgraph v1.0.1 - A Spring'26 Release&lt;/span&gt;

            &lt;div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"&gt;&lt;p&gt;&lt;a href="https://gitlab.freedesktop.org/rncbc/qpwgraph" name="qpwgraph"&gt;&lt;img align="left" hspace="4" src="https://www.rncbc.org/drupal/files/qpwgraph.png" title="qpwgraph" vspace="4" /&gt;&lt;/a&gt;&lt;a href="https://gitlab.freedesktop.org/rncbc/qpwgraph"&gt;&lt;img align="right" hspace="8" src="https://www.rncbc.org/drupal/files/qpwgraph_thumbnail-4.png" title="qpwgraph" vspace="4" /&gt;&lt;/a&gt;Hi all,&lt;/p&gt;
&lt;dd&gt;
  &lt;b&gt;&lt;a href="https://gitlab.freedesktop.org/rncbc/qpwgraph"&gt;qpwgraph&lt;/a&gt; v1.0.1&lt;/b&gt; (&lt;i&gt;spring'26&lt;/i&gt;) is released!
&lt;/dd&gt;
&lt;p&gt;Change-log:
&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;Added remote daemon name and modified state labels to the main status-bar.&lt;/li&gt;
&lt;li&gt;Added command line option to connect on a remote PipeWire daemon context, by name (-r, --remote); nb. PIPEWIRE_REMOTE environment variable takes precedence though.&lt;/li&gt;
&lt;li&gt;Separate the singleton/unique application instance setup logic from system-tray icon build option; add PipeWire remote-name, if any, to singleton/unique application instance identifier.&lt;/li&gt;
&lt;li&gt;Settling on all boards to next development cycle (Qt &amp;gt;= 6.11)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Description:
&lt;/p&gt;&lt;dd&gt;
&lt;b&gt;qpwgraph&lt;/b&gt; is a graph manager dedicated to &lt;a href="https://pipewire.org"&gt;PipeWire&lt;/a&gt;, using the &lt;a href="https://qt.io"&gt;Qt C++ framework&lt;/a&gt;, based and pretty much like the same of &lt;a href="https://qjackctl.sourceforge.io"&gt;QjackCtl&lt;/a&gt;.
&lt;/dd&gt;
&lt;p&gt;Project page:
&lt;/p&gt;&lt;dd&gt;
  &lt;a href="https://gitlab.freedesktop.org/rncbc/qpwgraph"&gt;https://gitlab.freedesktop.org/rncbc/qpwgraph&lt;/a&gt;
&lt;/dd&gt;
&lt;p&gt;Downloads:
&lt;/p&gt;&lt;dd&gt;
&lt;ul&gt;
&lt;li&gt;source tarball:&lt;br /&gt;
  &lt;a href="https://www.rncbc.org/archive/qpwgraph-1.0.1.tar.gz"&gt;&lt;b&gt;qpwgraph-1.0.1.tar.gz&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;
  &lt;a href="https://www.rncbc.org/archive/qpwgraph-1.0.1.tar.gz.sig"&gt;qpwgraph-1.0.1.tar.gz.sig&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;source package (openSUSE Tumbleweed):&lt;br /&gt;
  &lt;a href="https://www.rncbc.org/archive/qpwgraph-1.0.1-2.1.src.rpm"&gt;qpwgraph-1.0.1-2.1.src.rpm&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;binary package (openSUSE Tumbleweed):&lt;br /&gt;
  &lt;a href="https://www.rncbc.org/archive/qpwgraph-1.0.1-2.1.x86_64.rpm"&gt;qpwgraph-1.0.1-2.1.x86_64.rpm&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://flatpak.org/"&gt;Flatpak&lt;/a&gt; package:&lt;br /&gt;
  &lt;a href="https://flathub.org/apps/details/org.rncbc.qpwgraph"&gt;https://flathub.org/apps/details/org.rncbc.qpwgraph&lt;/a&gt;&lt;/li&gt;
&lt;p&gt;&lt;/p&gt;
&lt;li&gt;&lt;a href="https://build.opensuse.org/"&gt;OBS&lt;/a&gt; packages (&lt;a href="https://www.rncbc.org/drupal/page/repos"&gt;repos&lt;/a&gt;):&lt;br /&gt;
  &lt;a href="https://software.opensuse.org//download.html?project=home:rncbc&amp;amp;package=qpwgraph"&gt;&lt;img alt="build result" src="https://build.opensuse.org/projects/home:rncbc/packages/qpwgraph/badge.svg?type=default" /&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/dd&gt;
&lt;p&gt;Git repos:
&lt;/p&gt;&lt;dd&gt;
  &lt;a href="https://gitlab.freedesktop.org/rncbc/qpwgraph.git"&gt;https://gitlab.freedesktop.org/rncbc/qpwgraph.git&lt;/a&gt; (official)&lt;br /&gt;
  &lt;a href="https://github.com/rncbc/qpwgraph.git"&gt;https://github.com/rncbc/qpwgraph.git&lt;/a&gt;&lt;br /&gt;
  &lt;a href="https://gitlab.com/rncbc/qpwgraph.git"&gt;https://gitlab.com/rncbc/qpwgraph.git&lt;/a&gt;&lt;br /&gt;
  &lt;a href="https://codeberg.org/rncbc/qpwgraph.git"&gt;https://codeberg.org/rncbc/qpwgraph.git&lt;/a&gt;
&lt;/dd&gt;
&lt;p&gt;License:
&lt;/p&gt;&lt;dd&gt;
  &lt;a href="https://gitlab.freedesktop.org/rncbc/qpwgraph"&gt;qpwgraph&lt;/a&gt; is free, open-source software, distributed under the terms of the GNU General Public License (&lt;a href="https://www.gnu.org/copyleft/gpl.html"&gt;GPL&lt;/a&gt;) version 2 or later.
&lt;/dd&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;
&lt;p&gt;&lt;!--rncbc.org donate buttons--&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="https://paypal.me/rncbc" target="_blank"&gt;&lt;img alt="Donate to rncbc.org using PayPal" border="0" src="https://www.rncbc.org/drupal/files/donate1.png" title="Donate to rncbc.org using PayPal" /&gt;&lt;/a&gt; &lt;a href="https://liberapay.com/rncbc/donate" target="_blank"&gt;&lt;img alt="Donate to rncbc.org using Liberapay" border="0" height="22" src="https://liberapay.com/assets/widgets/donate.svg" title="Donate to rncbc.org using Liberapay" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;!--break--&gt;&lt;/div&gt;
      &lt;span class="field field--name-uid field--type-entity-reference field--label-hidden"&gt;&lt;span&gt;rncbc&lt;/span&gt;&lt;/span&gt;
&lt;span class="field field--name-created field--type-created field--label-hidden"&gt;&lt;time class="datetime" datetime="2026-04-21T17:00:00+00:00" title="Tuesday, 21 April 2026 - 17:00"&gt;Tue, 21 Apr 2026 - 17:00&lt;/time&gt;
&lt;/span&gt;
&lt;section class="field field--name-comment-node-blog field--type-comment field--label-hidden comment-wrapper"&gt;
  
  

      &lt;h2 class="title comment-form__title"&gt;Add new comment&lt;/h2&gt;
    
  
&lt;/section&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>rncbc.org - a.k.a. Rui Nuno Capela</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>ultramaster_kr106 - v2.5.10: PolyBLEP oscillator mode, settings persistence fixes, idle voice CPU fix</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-04-20:tag:github.com,2008:Repository/1170941801/v2.5.10</ns0:id>
    <ns0:updated>2026-04-20T19:54:27Z</ns0:updated>
    <ns0:published>2026-04-20T19:54:27Z</ns0:published>
    <ns0:link rel="alternate" href="https://github.com/kayrockscreenprinting/ultramaster_kr106/releases/tag/v2.5.10" type="text/html"/>
    <ns0:summary type="html">&lt;ul&gt;
&lt;li&gt;Runtime-switchable oscillator: polyBLEP at Nx rate (no upsampling)&lt;br /&gt;
vs wavetable at 1x with half-band upsampling. Toggle in settings menu.&lt;br /&gt;
Default changed to polyBLEP + 2x oversample (lower CPU, comparable quality)&lt;/li&gt;
&lt;li&gt;Fix idle voice loop iterating all 10 voices instead of mActiveVoices,&lt;br /&gt;
wasting CPU on unused voice VCF processing&lt;/li&gt;
&lt;li&gt;Fix scope voice search scanning beyond mActiveVoices&lt;/li&gt;
&lt;li&gt;Fix settings save race: read param values directly instead of cached&lt;br /&gt;
members that lag behind setValueNotifyingHost&lt;/li&gt;
&lt;li&gt;Fix settings load: force-sync all settings params to DSP immediately&lt;br /&gt;
instead of waiting for first processBlock poll&lt;/li&gt;
&lt;li&gt;Save/restore noise and BBD drive levels from variance editor&lt;/li&gt;
&lt;li&gt;render-midi loads oversample and osc mode from settings.json&lt;/li&gt;
&lt;li&gt;WASM defaults to polyBLEP + 2x oversample&lt;/li&gt;
&lt;li&gt;Shared oscillator mix constants (deduplicated from WT header)&lt;/li&gt;
&lt;li&gt;A/B test harness and oscillator render tool in tools/profile&lt;/li&gt;
&lt;li&gt;Fix documentation URLs in README and docs/README&lt;/li&gt;
&lt;/ul&gt;</ns0:summary>
    <ns0:author>
      <ns0:name>ultramaster_kr106</ns0:name>
    </ns0:author>
    <ns0:category term="software-release"/>
  </ns0:entry>
  <ns0:entry>
    <ns0:title>Stefan Westerfeld's blog - New in liquidsfz-0.4.1</ns0:title>
    <ns0:id>tag:news.sonoj.org,2026-04-20:https://blogs.gnome.org/stw/?p=6560</ns0:id>
    <ns0:updated>2026-04-20T10:30:12Z</ns0:updated>
    <ns0:published>2026-04-20T10:30:12Z</ns0:published>
    <ns0:link rel="alternate" href="https://blogs.gnome.org/stw/2026/04/20/new-in-liquidsfz-0-4-1/" type="text/html"/>
    <ns0:summary type="html">I didn&amp;#8217;t have time yet to blog about liquidsfz-0.4.1, which was released two weeks ago, so here is a quick overview of the bigger changes. The .sfz parser was made more robust, which means that broken .sfz files (there are some files out there which load fine in sforzando but have questionable syntax) can be [&amp;#8230;]</ns0:summary>
    <ns0:author>
      <ns0:name>Stefan Westerfeld's blog</ns0:name>
    </ns0:author>
    <ns0:category term="general"/>
  </ns0:entry>
</ns0:feed>
