This is is the 2nd minor release of the Mixxx 2.4 branch.
Have a look at the CHANGELOG and the Mixxx website for more information:
Mixxx is Free DJ software that gives you everything you need to perform live mixes.
This is is the 2nd minor release of the Mixxx 2.4 branch.
Have a look at the CHANGELOG and the Mixxx website for more information:
MilkyTracker is a Fasttracker II like open source, multi-platform music application for creating .MOD and .XM module files.
release info: https://milkytracker.org/news/2024/11/25/version-1.05
this is a pre-release, please report bugs in this issue
MAC users: feel free to provide us extra builds in this issue
RPI users: feel free to provide us extra builds in this issue and/or improve the build_rpi.sh script
PraxisLIVE is a hybrid visual live programming IDE, rethinking general purpose and creative coding.
This is the first release of PraxisCORE and PraxisLIVE v6.
Version 6 is a substantial rewrite of some key aspects of how PraxisCORE works. Expect some rough edges! Many deprecated and legacy features have been removed. The IDE and core now require minimum Java 21. Networked hubs now use Netty and Ion to provide a more robust and structured communication protocol than was possible with OSC. Key libraries have been updated, including libP5X now based on Processing 4. Runtime dependency management is now based on MiMa rather than Ivy. Much of the project saving and execution has been moved directly into PraxisCORE.
There are a bunch of other useful changes - custom roots can now specify use of table editing rather than the graph editor; containers can filter allowed child types and even specify custom types; annotations no longer require a weight / index parameter - eg. @P int x,y,z; is now legal syntax! Examples and custom components are being updated and added showing the new features.
The most obvious change is the new vector logo, window background actions, and revamped dashboard.
The IDE build system has been moved to Maven, and various IDE modules are also published, allowing use
Power Tab Editor is a cross-platform guitar tablature editor
Thanks to the following contributors who worked on this release:
xdg/powertabeditor.metainfo.xmlPower Tab Editor is a cross-platform guitar tablature editor
Rosegarden is a composition and editing environment based around a MIDI sequencer
The Rosegarden team is proud to announce the release of version 24.06 of Rosegarden, a MIDI sequencer that features a rich understanding of music notation along with basic support for digital audio.
http://www.rosegardenmusic.com/
Included in this release...
Rosegarden is a composition and editing environment based around a MIDI sequencer
The Rosegarden team is proud to announce the release of version 23.12 of Rosegarden, a MIDI sequencer that features a rich understanding of music notation along with basic support for digital audio.
http://www.rosegardenmusic.com/
Included in this release...
Rosegarden is a composition and editing environment based around a MIDI sequencer
The Rosegarden team is proud to announce the release of version 23.06 of Rosegarden, a MIDI sequencer that features a rich understanding of music notation along with basic support for digital audio.
http://www.rosegardenmusic.com/
Included in this release...
Rosegarden is a composition and editing environment based around a MIDI sequencer
The Rosegarden team is proud to announce the release of version 22.12 of Rosegarden, a MIDI sequencer that features a rich understanding of music notation along with basic support for digital audio.
http://www.rosegardenmusic.com/
Included in this release...
Rosegarden is a composition and editing environment based around a MIDI sequencer
The Rosegarden team is proud to announce the release of version 22.12 of Rosegarden, a MIDI sequencer that features a rich understanding of music notation along with basic support for digital audio.
http://www.rosegardenmusic.com/
Included in this release...
RaySession is a GNU/Linux session manager for audio programs, using a varient of NSM
Bug fix release.
Bug Fixes:
Improvments:
Power Tab Editor is a cross-platform guitar tablature editor
This release drops the alpha tag and moves to a normal versioning scheme: future versions will bump the major / minor / patch versions depending on the scope of the changes.
Thanks to the following contributors who worked on this release:
Yabridge is Yet Another way to use both 32-bit and 64-bit Windows VST2 and VST3 plugins on Linux
If you need any help setting up yabridge or if you just want to keep up to date with new releases and important Wine related announcements, then feel free to join the Discord.
These binaries are compiled on Ubuntu 20.04, and should work on any other distro that's newer than that.
To update from an older installation, simply overwrite your current yabridge and yabridgectl files with the ones downloaded below, and then rerun yabridgectl sync to complete the update.
PulseAudio is a sound system for POSIX OSes, meaning that it is a proxy for your sound applications
A bug fix release.
Contributors
Arun Raghavan Georg Chini Igor V. Kovalenko flyingOwl
synthv1 is an old-school all-digital 4-oscillator subtractive polyphonic synthesizer with stereo fx
A Halloween'24 Release
QjackCtl is a simple Qt application to control the JACK sound server daemon
A Autumn'24 Release
ReceiveMIDI is a command-line MIDI message monitor
Util.print function.LibraZiK is digital audio-software studio and related documentation, based on Debian Buster
Hello LibraZiK-ies.
It's time to take stock of what's been new in LibraZiK over the last 7 months. If you've been following the Mastodon account for the project, you've been able to keep up with them as they've come in, and here they are below in summary form (software updates, new software, miscellaneous information...).
Musics made with LibraZiK:: Below are some pieces of music created with LibraZiK that you can listen to while reading this article: tracks by r1 : an 80s pop-electro track: https://mastodon.xyz/@LibraZiK/1117... and https://framapiaf.org/@erwan35/1127... a dance-pop track: https://mastodon.xyz/@LibraZiK/1118... and... Lire LibraZiK news - September 2024
SVGuitar is a JavaScript (TypeScript) SVG guitar chord renderer library
PraxisLIVE is a hybrid visual live programming IDE, rethinking general purpose and creative coding.
The second beta release of PraxisLIVE v6 brings a few updates and bug fixes as we proceed towards a final release.
--add-modules=ALL-DEFAULT in launcher and childZrythm is a featureful and easy to use DAW, written in C using the GTK+3 toolkit.
ZPlugins is a collection of LV2 plugins intended to be bundled with the Zrythm DAW
v0.2.7
Yoshimi is a software audio synthesizer, originally forked from ZynAddSubFX.
And already we have a bugfix release. There were three of them.
The first was a failure to test a headless build and there was a detail we'd forgotten.
The second was not accounting for some less common build environments.
The third was a total surprise. It was a bug in effects that goes back at least 6 years and probably further, but only became obvious with the latest EQ display improvements we had made.
Cardinal is a virtual Eurorack modular synthesizer platform
This release brings a few critical bug-fixes and a few modules updates.
Notably voxglitch which was stuck on older versions due to heavy graphic resource usage.
Changelog:
Modules changes:
Fully-featured audio plugin host, with support for many audio drivers, plugin and sound bank formats.
Functional programming language for signal processing and sound synthesis
faust-2.75.7.tar.gz file to get a complete source folder (in particular, with all the libraries)xattr -rd com.apple.quarantine file command to remove the com.apple.quarantine extended attribute. See the xattr man page for details on how to use that tool. MacOS Monterey is now the minimal version.-mc option in faust2w32max6 and faust2w64max6.FAUST_DTREE_SIZE env variable.FAUST_DTREE environment variable.faust2object for Apple ARM targets.faust2puredata. New -newio option to activate the new model.-uim mode.Helio Workstation is free and open-source music sequencer, designed to be used on all major platforms.
Update change log
DawDreamer is a DAW with Python; VST instruments/effects, parameter automation, and native processors
For macOS builds, macOS 12 (Monterey) is required.
For all platforms Python 3.10 or higher is required (to save space on PyPI).
PluginProcessor:
get_parameter_range(index: int, search_steps: int = 1000, convert: bool = True)convert=True, the output will try to convert the parameter's range of text labels into floats (e.g. "16.2 kHz" will become 16200.0, "440 Hz" will become 440, "50% (-32.0 dB)" will become -32.0, and so on). If convert=False, you'll get the strings instead of the float conversions.FaustProcessor:
opt_level property for LLVM optimization level, defaulting to -1 for backwards compatibility..faust_libraries_path (a str).faust_libraries_paths (a list of str).faust_assets_path (a str).faust_assets_paths (a list of str)boxFFun and sigFFun have been added to the Box API and Signal API.boxVGroup accidentally using boxHGroupDawDreamer is a DAW with Python; VST instruments/effects, parameter automation, and native processors
update version to 0.8.2
DawDreamer is a DAW with Python; VST instruments/effects, parameter automation, and native processors
PluginProcessor:
RTcmix is an digital signal processing and sound synthesis language
This release supports a new advanced feature: The ability to "derive" a MinC struct from another using the 'structbase' keyword. Also bug fixes.
PraxisLIVE is a hybrid visual live programming IDE, rethinking general purpose and creative coding.
This is the first beta release of PraxisCORE and PraxisLIVE v6.
Version 6 is a substantial rewrite of some key aspects of how PraxisCORE works. Expect some rough edges! Many deprecated and legacy features have been removed. The IDE and core now require minimum Java 21. Networked hubs now use Netty and Ion to provide a more robust and structured communication protocol than was possible with OSC. Key libraries have been updated, including libP5X now based on Processing 4. Runtime dependency management is now based on MiMa rather than Ivy. Much of the project saving and execution has been moved directly into PraxisCORE.
There are a bunch of other useful changes - custom roots can now specify use of table editing rather than the graph editor; containers can filter allowed child types and even specify custom types; annotations no longer require a weight / index parameter - eg. @P int x,y,z; is now legal syntax! Examples and custom components are being updated and added to showing the new features.
The most obvious change is the new vector logo, window background actions, and revamped dashboard.
The IDE build system has been moved to Maven, and various IDE modules are also published
ProjectM is an open source MilkDrop
This bugfix release addresses two OpenGL-related issues causing GL errors, and adds some improvements to the vcpkg manifest which were required for adding the projectM library to the official vcpkg ports. This release does not contain any other functional improvements or API changes.
Full Changelog: v4.1.1...v4.1.2
PlugData is a plugin wrapper around PureData featuring a new GUI
Bugfix release for v0.9.0
Functional programming language for signal processing and sound synthesis
faust-2.74.6.tar.gz file to get a complete source folder (in particular, with all the libraries)xattr -rd com.apple.quarantine file command to remove the com.apple.quarantine extended attribute. See the xattr man page for details on how to use that tool. MacOS Monterey is now the minimal version.-mc (multi-channels model) option in faust2max6.mesh2fausttool by Karl Hiner.faust2caconsole (Core Audio + Console architecture).-fx mode with new -fx-size option. Merge Agathe Herrou interval and precision branch.-os (with new 'frame' method) and -it options. New -ec option to separate 'control' and 'compute'.remainder/rint properly compile on Windows.-O3 optimisation level.RTcmix is an digital signal processing and sound synthesis language
Bug fix release.
PlugData is a plugin wrapper around PureData featuring a new GUI
Our biggest release ever! Thanks for everyone who helped!
SpectMorph can analyze samples of musical instruments and combine and morph between.
SpectMorph can analyze samples of musical instruments and combine and morph between.
PlugData is a plugin wrapper around PureData featuring a new GUI
Pre-release version 2 of plugdata v0.9.0
Headlines:
Mixxx is Free DJ software that gives you everything you need to perform live mixes.
Mixxx 2.5-beta
meters.lv2 is a collection of audio-level meters with GUI in LV2 plugin format.
update man page for v0.9.26
fil4.lv2 aka x42-eq is a 4 Band Parametric EQ
update man page for v0.8.9
setBfree is a DSP Tonewheel Organ emulator
finalize changelog v0.8.13
stepseq.lv2 is simple step sequencer for moddevices.com
update man page for v0.6.14
Valhalla Tracker is MIDI sequencing companion written in a C and Python for GNU/Linux audio setups.
one day...
Valhalla Tracker is MIDI sequencing companion written in a C and Python for GNU/Linux audio setups.
boom
Valhalla Tracker is MIDI sequencing companion written in a C and Python for GNU/Linux audio setups.
new icon hehe
Cardinal is a virtual Eurorack modular synthesizer platform
This is a quick bug-fix release that also brings 2 new plugin modules.
Module changes:
Anklang, a digital audio synthesis application for live creation and composition
Development version - may contain bugs or compatibility issues.
include ase/*.hh: fix missing include misc/cirun: use $CITAG, instead of hard coding dist Merge branch 'log2file' # 2024-05-20 Tim Janik f4a6e2d7 * Branch commit log: package.json: add --log2file to synth engine electron/main.js: add --log2file to synth engine ase/utils.hh: include ase/logging.hh ase/main: add --log2file and log info of interest ase/engine.cc: log missing PCM driver as error ase/driver.cc: log driver opening as info ase/logging: add log_setup(), loginf() and logerr() ase/logging: add source files for logging Merge branch 'override-drivers' # 2024-05-20 Tim Janik 80ed0d56 * Branch commit log: ui/Makefile.mk: add --norc when running --js-api doc/Makefile.mk: add --norc when running --class-tree ase/server.cc: ase_{error_blurb|error_from_errno}: always map errno to strerror ase/driver-alsa.cc: always pass ALSA errno back to the caller ase/cxxaux.cc: ignore ptrace_scope when constructing debugger cmd misc/GNUmakefile: allow subdir builds ase/Makefile.mk: utilize GNU Parallel for test execution Use GNU Parallel if available, otherwise xargs. Avoid parallel.moreutils which is incompatible and tends to drop jobs. ase/engine.cc: let main_config.pcm_override, .midi_override override drivers ase/main.cc: add -P and -M ase/main.hh: add pcm_override, midi_override to MainConfig ase/main.cc: implement --list-tests Merge branch 'uselocale' # 2024-05-20 Tim Janik 72514ffd * Branch commit log: ase/strings: provide POSIX-locale strerror() ase/main.cc: apply user locale Merge branch 'npm-updates' # 2024-05-20 Tim Janik 0a4b1af8 * Branch commit log: ui/b/tracklist.js: work around postcss-advanced-variables bugs ui/startup.js: minor package.json, ui/postcss.config.mjs: remove unused postcss-normalize-charset With postcss-import, we stopped adding charset to generated imports. ase/main.cc: document --norc ui/Makefile.mk: fix missing dep on ui/postcss.config.mjs ui/Makefile.mk: make .js files an index.html dependency ui/jsextract.js: leave @charset "UTF-8" to the postcss build step ui/postcss.config.mjs: add postcss, tailwind and css-function configs ui/postcss.js: remove unused in-browser impl of postcss ui/Makefile.mk: properly extract css`` into build files, adjust linting Keep *.js files with extracted css`` snippets around for parallel linintg. package.json: shorten rebuild times ui/Makefile.mk: generate import for dark.scss ui/global.scss: import theme.scss here ui/mixins.scss: remove all color definitions ui/theme.scss: remove all color definitions ui/dark.scss: include theme color definitions ui/theme.scss: move scss variable ui/b/noteboard.vue: use Dom.markdown_to_html() ui/b/databubble.js: use Dom.markdown_to_html() and move scss var ui/jsextract.js: keep the same file extension for extracted files ui/Makefile.mk: merge vue styles, lit styles, stylelint and postcss processing ui/Makefile.mk: use ui/eslintrc.js for linting ui/b/statusbar.js: use Dom.markdown_to_html() ui/stylelintrc.cjs: remove unused setting ui/b/clipview.js: avoid nested scss variable definitions ui/sfc-compile.js: avoid useless dep on sass ui/startup.js: remove browserified.js helper ui/util.js: fix color parsing ui/util.js: remove markdown_to_html() ui/dom.js: add Dom.markdown_to_html() package.json: add @rollup/plugin-terser, remove browserify ui/Makefile.mk: build markdown-it for the web via rollup Get rid of building with browserify which results in a much larger artifact. package.json: add eslint helpers ui/index.html: remove vue-styles.css ui/postcss.js: add tailwind @apply test Makefile.mk: properly clean compile_commands.json .gitignore: ignore /.dir-locals.el package.json: upgrade allmost all packages ui/util.js: remove unused compat code for FF-68 ui/util.js: use LSP friendly comments Merge branch 'sfz-filedialog' # 2024-05-07 Tim Janik 1ca390ce * Branch commit log: ui/b/textinput.js: support file picking for props with extensions ase/api.hh: Property: add name, value, metadata members * Rename Property.get_metadata(), adjust uses * Adjust metadata uses and value notifications ui/b/crawlerdialog.js: minor fixups ui/util.js: extend_property(): prefetch prop.{name|value|metadata} devices/liquidsfz/liquidsfz.cc: add sfz as file extension to .instrument Merge branch 'crawlerdialog' # 2024-05-06 Tim Janik 859b88ed * Branch commit log: ui/b/menubar.js: pass `existing=false` on save-as, default to ~MUSIC ui/b/shell.vue: pass `existing` to b-crawlerdialog, default to ~MUSIC ui/b/crawlerdialog.js: add docs to BCrawlerDialog class ui/b/crawlerdialog.js: add dialog to pick files via resource crawler * Rewrite and merge folderview and filedialog * Fix grid and entry alignment * Split direntry and pathentry * Handle selection of new files, `existing=false` ase/strings: add string_islower(), string_isupper() ui/b/filedialog.vue: remove obsolete file ui/b/folderview.vue: remove obsolete file ui/b/menubar.js: fix load/save dialog titles ui/b/preferencesdialog.vue: show all preference settings ui/little.js: add LitComponent.mkstate() helper for Signal.State ui/tailwind.scss: add spacing to dialog buttons ui/types.d.ts: supress TS warnings about missing _() ui/util.js: inside_display_none(): avoid expensive getComputedStyle ui/kbd.js: support left<->right for data-subfocus="*" ui/kbd.js: add keydown_move_focus_{up|down} ui/kbd.js: add flag to make debugging easier ui/kbd.js: support up/down/left/right focus with data-subfocus="+" ase/api.hh, ase/crawler: in ResourceCrawler.assign() split dirname and basename ase/crawler.hh: fix args ase/crawler.cc: remove debugging printerr ase/crawler.cc: ensure dir URLs end in / ase/api.hh, ase/crawler: rename ResourceCrawler.entries ase/api.hh: ResourceCrawler: add .folder, .files member properties ase/gadget.cc: fix emplace() post condition Merge branch 'member-template' # 2024-04-27 Tim Janik ef130823 * Branch commit log: ui/b/textinput.js: adjust to this.request_update() rename ui/b/propinput.js: adjust to this.request_update() rename ui/b/pianoroll.js: simplify to just use this.clip.all_notes ui/b/piano-ctrl.js: simplify to just use piano_roll.clip.all_notes ui/b/pianoroll.js: listen to wheel events with passive:false ui/b/knob.js: listen to wheel events with passive:false ui/b/clipview.js: simplify to just use this.clip properties ui/b/trackview.js: simplify to just use this.track properties ui/b/app.js: provide App.project and auto update App.project.name ui/b/positionview.js: use App.project with .bpm, .numerator, .denominator ase/api.hh: Project: add bpm, numerator, denominator properties ui/Makefile.mk: alter stamp to rebuild ui/index.html after errors ui/Makefile.mk: include jsonipc/jsonipc.js in linting ui/b/contextmenu.js: force integrate_children() within render_contextmenu() ui/b/trackview.js: fix early this.mcc() invocation ui/wrapper.js: avoid arbitrarily calling freeze_deep() on unknown objects ui/little.js: use tracking_wrappe() for .render() and .updated() ui/index.html: provide module map for ./signal.js and auto-load it ui/signal.js: export Signal, State, Computed, Watcher, tracking_wrapper Introduce JavaScript Signal and provide tracking_wrapper() to utilize dependency tracking for synchronous functions. ui/Makefile.mk: add signal-polyfill.js module to site build files ase/properties.hh: include api.hh ase/api.hh: add include for Member<> package.json: add signal-polyfill ase/clip: add all_notes, end_tick member properties ase/main.cc: let --fatal-warnings set assertion_failed_fatal=true ase/api.hh: expose Emittable.emit_notify() .gitignore: ignore package-lock.json jsonipc/jsonipc.js: maintain $props.promise and allow GC of objects with props jsonipc/jsonipc.hh: generate C++ properties as reactive JS properties This gets rid of getter() and setter() on the JavaScript side and instead provides an object property that supports assignment and readout. jsonipc/jsonipc.hh: determine JavaScript initializer from C++ property type jsonipc/jsonipc.js: add reactive property fetching, support finalizer cleanup callbacks jsonipc/jsonipc.hh: use C++17 to check for Has_setget<> jsonipc/jsonipc.hh: support Member<> fields with set() + get() accessors This uses C++20 concepts to detect the Member<> field. jsonipc/jsonipc.hh: avoid implicit `await` that delays setters, pass all args jsonipc/jsonipc.hh: fix missing `const` ase/project: create Member bpm, numerator, denominator, skip musical_tuning Leave (re-)implementation of musical_tuning (with its enum list) for later when we actually use it. ase/properties.hh: remove unused struct Prop ase/properties, ase/gadget: remove unused PropertyBag ase/{parameter.hh,properties.hh}: move ParameterProperty into properties.hh ase/properties: inline PropertyBag::operator+= ase/parameter.hh: move ParamExtraVals out of Param ase/parameter.cc: maintain "ident=..." in metadata_ alongside cident ase/gadget: add name member property ase/gadget: implement registry to access Member<>s ad parameters * Implement _register_parameter() * Implement requires_accessor(), register_accessor() * Add ExtraVals to _register_parameter() * Implement GadgetImpl::create_properties() from Member * In create_properties(): use dynamic_cast to identify class member list When creating the properties for an instance, walk through the known GadgetClassMemberList entries, test each via dynamic_cast and thus identify all class member lists that match the instance. ase/member: add Member<> to implement member field APIs via simple accessors * FunctionTraits<>: provide ClassType, ReturnType, Arguments * Add Member<> template * Add MemberDetails to capture meta data * Add and test _register_parameter() * Add and test ExtraVals * Pass ExtraVals as _register_parameter(ExtraVals) * In tests, return bool from set() * Add support for Member without data field Note, Member<> do not support initialization from the ctor. In practice, we cannot call a Member<> setter for intiialization, as it may be pointing to an abstract method, implemented by a yet to be initialized derived class. Related: "C++ Properties - a Library Solution", by Lois Goldthwaite https://accu.org/journals/overload/13/65/goldthwaite_255/#d0e143 https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1615.pdf ase/crawler: add documentation to methods ase/driver.cc: docs ase/driver.hh: docs ase/strings.cc: fix typeid_name() tests ase/main.cc: support --test[=testname] ase/cxxaux: return const char* from typeid_name() and string_demangle_cxx() Merge branch 'fix-lint' # 2024-04-27 Tim Janik ad00599f * Branch commit log: ase/combo.cc: fix includes ase/clapdevice.cc: fix includes ase/device.cc: fix includes ui/b/clipview.js: write proper todo comment ase/inifile.cc: write proper todo comment ase/gtk2wrap.cc: write proper todo comment ase/engine.cc: write proper todo comment ase/driver.cc: fix comment ase/driver-alsa.cc: fix cpp cond ase/device.cc: write proper todo comment ase/combo.cc: write proper todo comments ase/clapplugin.cc: fix includes ui/b/positionview.js: write proper todo comments ui/b/propgroup.js: write proper todo comment ase/clapdevice.cc: write proper todo comments Merge branch 'highlight-friendly-css' # 2024-04-27 Tim Janik 60f501a0 * Branch commit log: ui/b/*.js: use css`` method of JsExtract ui/little.js: allow css`` constructs .gitignore: add ignores ui/postcss.js, ui/tailwind.config.mjs: move tailwind config Merge branch 'js-fixes' # 2024-03-27 Tim Janik b13f8b94 * Branch commit log: ui/kbd.js: when changing focus, scrollIntoView() ui/wrapper.js: fix formatting of missing property error ui/b/cliplist.js: use LitElement.weak_this ui/little.js: provide lazily initialized LitElement.weak_this ui/Makefile.mk: first check syntax via eslint, then types package.json: add printf-ts for printf-style formatting in JS Merge branch 'disabled-button-menu-items' # 2024-03-06 Tim Janik db5b11af * Branch commit log: ui/b/menurow.js: update menu item description ui/b/menuitem.js: remove, use instead now This addresses #55 by now keeping a button inside a shadowRoot. ui/b/contextmenu.js: handle .isactive, disabled state, focus assignment ui/b/aboutdialog.js: use startViewTransition() to show dialog with async values ui/eslintrc.cjs: allow & in class attributes of lit elements ui/b/dialog.vue: add floating-dialog styling ui/theme.scss: fix CSS ui/mixins.scss: fix CSS ui/global.scss: fix CSS ui/b/filedialog.vue: fix CSS ui/Makefile.mk: fix dir dependency ase/memory.cc: change TODO comment ase/clapplugin.cc: change TODO comment ui/b/trackview.js: use render_contextmenu() and fix menu flicker ui/b/treeselector-item.vue: fix CSS ui/b/statusbar.js: use tailwind, fix height ui/b/menurow.js: use tailwind ui/b/propgroup.js: fix CSS ui/b/menubar.js: fix CSS ui/b/knob.js: fix CSS ui/b/icon.js: fix CSS ui/b/dialog.vue: fix CSS ui/b/devicepanel.vue: fix CSS ui/b/contextmenu.js: add render_contextmenu() ui/b/clipview.js: fix CSS ui/b/choiceinput.js: fix CSS ui/b/contextmenu.js: properly update buttons on attribute changes ui/b/contextmenu.js: fix CSS ui/dom.js: fix comment misc/version.sh: truncate extra long commit hash characters Merge branch 'menu-item-button' # 2024-03-04 Tim Janik 64cc42bb * Branch commit log: x11test/play-notes.json: fixup icon reference ui/theme.scss: fix duplicate CSS ui/postcss.js: minor fix ui/dom.js: add text_content() ui/b/treeselector.vue: allow get_uri() in ui/b/treeselector-item.vue: allow get_uri() in ui/b/textinput.js: fix missing prop init ui/b/contextmenu.js, menurow.js: fix padding ui/types.d.ts: add document.startViewTransition package.json: update all packages (Electron-29) This updates to Vue-3.4, Electron-29 with Chrome-122, Node-20 and V8-12. ui/Makefile.mk: run stylelint when processing CSS files ui/stylelintrc.cjs: add postcss-scss to stylelint, ignore whitespace diags package.json: add stylelint-config-standard-scss package.json: fix dependency order ui/b/contextmenu.js: treat normal elements like menu items ui/b/trackview.js: use button as menu item ui/b/menurow.js: add some horizontal spacing around rows ui/b/pianoroll.js: use button as menu item ui/b/menubar.js: use button as menu item ui/b/deviceeditor.js: use button as menu item ui/b/choiceinput.js: use button as menu item ui/util.js: remove uinused handler ui/kbd.js: remvoe useless prefix ui/kbd.js: leave focus activation via Enter to the browser ui/kbd.js: allow cycling when arrow keys change focus ui/dom.js: add get_uri, valid_uri, has_uri ui/b/treeselector.vue: use get_uri() ui/b/treeselector-item.vue: use get_uri() ui/b/trackview.js: use get_uri() ui/b/pianoroll.js: use get_uri() ui/b/filedialog.vue: use get_uri() ui/b/choiceinput.js: use get_uri() ui/eslintrc.cjs: permit custom class names next to tailwind ui/b/aboutdialog.js: fix class comment to apply to class ui/b/folderview.vue: remove useless flexbox packing around each file entry Significant CR speed up, flexbox seems slow in Chrome. ui/b/editable.js: fix background color ui/Makefile.mk: remove stale build file $>/ui/global.scss ui/tailwind.scss: split off button-down-within and button-active ui/b/menubar.js: adjust icon layout ui/b/folderview.vue: adjust icon layout ui/b/icon.js: simplify and remove intermediate HTMLElement ui/b/menubar.js: apply button-dim ui/b/playcontrols.js: apply button-down ui/tailwind.scss: split .button-dim .button-down ui/b/playcontrols.js: add .button-dim to push-buttons ui/b/filedialog.vue, ui/b/preferencesdialog.vue: use .button-xl ui/b/editable.js: only cancel valid edits on Escape ui/Makefile.mk: invoke ui/postcss.js directly ui/colors.js: import zcam-js as module ui/Makefile.mk: allow recovery from build errors during live updates ui/Makefile.mk: reassign ui-build and ui-reload rules ui/b/trackview.js: use tailwind for b-editable ui/b/positionview.js: use tailwind for b-editable ui/b/editable.js: simplify, remove shadowRoot, use tailwind ui/tailwind.scss: add text-inherit and :focus-visible styling ui/eslintrc.cjs: remove unsupported start_view_transition global ui/b/aboutdialog.js: use startViewTransition() around closing ui/global.scss: get rid of (now) unused grid helpers ui/b/filedialog.vue: use col-start-* row-start-* ui/b/pianoroll.js: use col-start-* row-start-* ui/b/shell.vue: properly use document.startViewTransition() ui/index.html: sync document.startViewTransition() with Vue for CR and FF Always sync document.startViewTransition() with pending Vue updates, and install a simple handler caller if the browser does not support document.startViewTransition() (like FireFox-123). ui/b/aboutdialog.js: use tailwind styling ui/tailwind.scss: add dialog-header, dialog-footer ui/tailwind.scss: add button-dim, button-xl ui/global.scss: leave buttons to tailwind ui/tailwind.scss: add border-1 ui/tailwind.scss: add hflex, vflex and dialog helpers ui/tailwind.scss: add dflt border color, disable text selection in base layer ui/postcss.js: add "dim" color scheme, a smoothed zinc like color ui/postcss.js: add --tw-border-default-color ui/ch-component.md: add section on "Guidelines for Web Components" ui/util.js: remove unneeded visibility:hidden toggeling This solves the menu-button-stuck-on-outside-click issue described in #55. Merge branch 'tailwindcss' # 2024-03-03 Tim Janik 74673c38 * tailwindcss: ui/global.scss: remove ui/normalize.scss, tailwind does normalization now ui/global.scss: import tailwind.scss ui/tailwind.scss: render tailwind base, component, utility styles ui/eslintrc.js: add tailwindcss recommended warnings ui/Makefile.mk: add tailwind inputs as global.css dependency ui/postcss.js: add tailwindcss, tailwindcss/nesting to processing misc/package.json.in: add prettier, prettier-plugin-tailwindcss for devel misc/package.json.in: add eslint-plugin-tailwindcss misc/package.json.in: install tailwindcss components Merge branch 'pr51/swesterfeld-piano-roll-fixes', closes #51 # 2024-03-03 Tim Janik c5ea11f2 * pr51/swesterfeld-piano-roll-fixes: ui/b/piano-ctrl.js: use higher tool priority for selected notes ui/b/pianoroll.js: draw selected notes over unselected notes ui/b/piano-ctrl.js: support shift cursor up/down (move 1 octave up/down) Merge branch 'pr50/swesterfeld-default-tempo-120-bpm' # 2024-03-03 Tim Janik aac575d4 * pr50/swesterfeld-default-tempo-120-bpm: ase/project.cc: set transport tempo when starting playback ase/project.cc: set default tempo to 120 bpm Merge branch 'color-js' # 2024-03-03 Tim Janik 8e9eb35e * Branch commit log: misc/package.json.in: add colorjs.io ui/colors.js: export hex_from_zcam() and add zcam4() misc/package.json.in: remove unused postcss-color-mod-function ui/postcss.js: remove unused color-mod Merge branch 'proper-package.json' # 2024-03-01 Tim Janik 19e59488 * Branch commit log: doc/copyright.ini: fix package.json path ui/Makefile.mk: adjust paths for the typescript compiler invocation ui/Makefile.mk: adjust paths for the eslint invocation ui/Makefile.mk: adjust paths for the stylelint invocation ui/Makefile.mk: adjust build stamp paths ui/tsconfig.json: use full path to source files Makefile.mk: fix missing CLEANFILES ui/xbcomments.js: use ES6 imports ui/jsextract.js: use ES6 imports ui/Makefile.mk: adjust eslint to run in project root ui/sfc-compile.js: use ES6 imports ui/eslintrc.cjs: add comment about why this is CJS ui/eslintrc.cjs: convert to CJS to be loadable from eslint package.json: use paths relative to project root doc/jsdoc-slashes.cjs: add comment about why this is CJS doc/jsdoc-slashes.cjs: convert to CJS to be loadable from jsdoc doc/jsdoc2md.js: convert to ES6 module ui/Makefile.mk: use node_modules/ in project root x11test/replay.sh: use node_modules/ in project root doc/*: use node_modules/ in project root electron/Makefile.mk: use node_modules/ in project root Makefile.mk: install node_modules/ in project root package.json: move NPM package configuration here misc/package.json.in: use exec in scripts to spare shell wrappers Merge branch 'utf8-for-legacy-filenames' - support legacy filenames via UTF-8 private use area mapping # 2024-02-21 Tim Janik f6ea63f3 * utf8-for-legacy-filenames, closes #49: ui/b/app.js: use displayfs(), displaybasename() ui/b/folderview.vue: import basename, dirname, displayfs, etc ui/b/menubar.js: use displayfs(), dirname() ui/b/filedialog.vue: use displayfs(), displaybasename(), displaydirname() ui/strings.js: add hex basename dirname displayfs isplaybasename displaydirname ui/index.html, ui/eslintrc.js, ui/types.d.ts: add assert() globally ase/project: use encodefs/decodefs for all filenames in the API ase/crawler: use encodefs/decodefs for all filenames in the API ase/websocket: add WebSocketServer::utf8_validate() This exports the websocketpp UTF-8 validation logic. ase/unicode.cc: test encodefs(), decodefs(), displayfs() ase/unicode: add encodefs(), decodefs(), displayfs() ase/tests/benchmarks.cc: use Ase::utf8encode() ase/unicode: rename utf8encode() Change string_from_unicode to utf8encode() to be more consistent. ase/unicode: add utf8decode() ase/unicode.cc: utf8character<>(): support mapping high bytes to 0xEF80..0xEFFF ase/cxxaux: export backtrace_command() with lldb and gdb support Merge branch 'bug-fixes' # 2024-02-21 Tim Janik 7ebcb3eb * bug-fixes: ui/b/trackview.js: fix scale rounding that caused extra UI flicker README.md: link to Roadmap Discussions Feedback & Ideas: #52 ase/combo.cc: fix combo insertion order for devices inserted at end Fixes #24. Merge branch 'pr45/swesterfeld-freeverb-mix' - closes #23 # 2024-02-14 Tim Janik 82fad166 * pr45/swesterfeld-freeverb-mix: devices/freeverb/freeverb.cc: support sample-accurate parameter changes devices/freeverb/freeverb.cc: optimize processing for constant mix case devices/freeverb/freeverb.cc: merge dry/wet parameters into mix parameter See #23. Also add parameter smoothing for mix to avoid clicks when changing/automating the parameter. Merge branch 'pr43/swesterfeld-midi-events-uint-offset' - closes #26 # 2024-02-14 Tim Janik 714ea0c0 * pr43/swesterfeld-midi-events-uint-offset: devices/liquidsfz/liquidsfz.cc: avoid using printf (use printerr instead) ASE: midievent.hh: fix clang tidy problem (add typename) devices/saturation/saturation.cc: midi event frame offsets are now unsigned devices/liquidsfz/liquidsfz.cc: midi event frame offsets are now unsigned devices/blepsynth/blepsynth.cc: midi event frame offsets are now unsigned ASE: midilib.cc: midi event frame offsets are now always positive (#26) ASE: clapplugin.cc: midi event frame offsets are now always positive (#26) ASE: midievent: avoid negative frame offsets in midi events Use unsigned data type for midi event offset, see issue #26. ase/memory.cc: avoid constexpr std::string use that needs clang++-17 Merge branch 'SPEEDUP-UTILS' - extend and speed up internal utils # 2024-02-14 Tim Janik 02e6083c * SPEEDUP-UTILS: ase/memory.cc: use array + string ptr unordered_map for quarks This fixes slowdowns where heavy use of CString lookups turns into a bottleneck. ase/platform.hh: add extern const char *const ase_sharedir; ase/Makefile.mk: add extern char*ase_sharedir; to ase/buildversion*.cc ase/strings.cc: support arrays for string_startswith() and string_endswith() ase/path: add glob() variant that separates dirs and files ase/path.cc: increase file_memread() buffer size to up to 1MB Merge branch 'b-textinput-prop' - add .prop to # 2024-02-12 Tim Janik af7da4af * b-textinput-prop: ui/b/propinput.js: use ui/b/objecteditor.js: use ui/b/textinput.js: move to directly operating on .prop ase/project.cc: add project.default_license preference Merge branch 'fix-non-anklang-dir' - fix loading from non-anklang-dir # 2024-02-11 Tim Janik ab3b8da2 * fix-non-anklang-dir: ase/project.cc: properly halt at root when searching parent dirs ase/path: add and test Path::isroot() .gitignore: remove unused backslash that confuses jj Merge branch 'properties-metadata' - support generic metadata on properties # 2024-02-08 Tim Janik 5f06a6d4 * properties-metadata: devices/saturation/saturation.cc: add "blurb=" prefix and mark translations devices/liquidsfz/liquidsfz.cc: add "blurb=" prefix and mark translations devices/freeverb/freeverb.cc: add "blurb=" prefix and mark translations devices/blepsynth/blepsynth.cc: add "blurb=" prefix and mark translations ase/api.hh: introduce metadata() for properties * Add const this qualifier to parameter APIs. * engine.cc: add "descr=" prefix to property metadata * project.cc: add "descr=" prefix to property metadata ase/strings: add kvpairs_fetch() and kvpairs_assign() Merge branch 'MOUSE-WHEEL' - fix mouse wheel handling in modern Chrome and Firefox # 2024-02-08 Tim Janik 070d91a9 * MOUSE-WHEEL: ui/util.js: remove unused wheel2scrollbars ui/b/pianoroll.js: reinstante hzoom and vzoom adjustments via Ctrl ui/util.js: use Mouse.wheel_delta() ui/b/knob.js: use Mouse.wheel_delta() ui/b/pianoroll.js: properly scroll via deltaY from Mouse.wheel_delta() ui/mouse.js: wheel_delta(): provide .x, .y, .z in pixels ui/b/app.js: defer ZMove handling to mouse.js ui/mouse.js: include ZMove notification handling ui/index.html: start mouse.js early on ui/mouse.js: add event_movement() and wheel_delta() to fix event coords Cross browser normalization of movementX,movementY and deltaX,deltaY is a hot mess, see: https://bugs.chromium.org/p/chromium/issues/detail?id=1092358 https://bugzilla.mozilla.org/show_bug.cgi?id=1392460 https://github.com/w3c/uievents/issues/181 https://github.com/w3c/pointerlock/issues/42 https://github.com/mdn/content/issues/11811 ui/index.html: disable modulepreload, it causes module errors in Firefox-122 Merge branch 'GRID-FILE-BROWSER' - use for file browser # 2024-02-08 Tim Janik 8cfd3299 * GRID-FILE-BROWSER: misc/package.json.in: fix path of rebuild command ui/kbd.js: fix coord check during horizontal focus movement ui/b/folderview.vue: use grid with column flow to fix slow flexbox wrapping ase/websocket.cc: use "CR" as Chrome abbreviation ase/strings.hh: fix spacing ase/clapplugin.cc: fix newline Merge branch 'ATOMIC-STACK' - simple atomic stack based on Loft # 2024-02-08 Tim Janik 765600ad * ATOMIC-STACK: ase/atomics.cc: add atomic_valuestack_test() ase/atomics.hh: add a simple AtomicStack<> with just push, pop, empty ase/loft.hh: reduce includes ase/loft.hh: allow constexpr Loft::Allocator and export allows_read_after_free misc/synsmell.py: escape FI[X]ME misc/synsmell.py: reduce false positives for the separate-body check Merge branch 'SFZ-STRING-PARAM' - pass SFZ instrument as string # 2024-02-08 Tim Janik 789a493e * SFZ-STRING-PARAM: devices/liquidsfz/liquidsfz.cc: pass instrument name as string param via Quark ase/memory.hh: fix missing constexpr for CString::qset() Merge branch 'pr7/swesterfeld-liquidsfz' # 2024-02-08 Tim Janik 55480ad2 * pr7/swesterfeld-liquidsfz: devices/liquidsfz/Makefile.mk: remove -Iexternal/liquidsfz/lib Includes need to be added to ase/Makefile.mk for all tools to pick them up. ase/Makefile.mk: add -Iexternal/liquidsfz/lib ASE: add copyright information to liquidsfz meta includers ASE: compile liquidsfz library code into ase library DEVICES: liquidsfz: prepare code for .sfz file specific parameter handling DEVICES: liquidsfz: add include path to external submodule EXTERNAL: liquidsfz: add swesterfeld/liquidsfz commit from 2023-11-18 15:15:57 git submodule add --name liquidsfz https://github.com/swesterfeld/liquidsfz.git external/liquidsfz git -C external/liquidsfz checkout 590149ea8c83588c17833d7b9b6653f0f6aab6fb DEVICES liquidsfz: port to new parameter API DEVICES: liquidsfz: move SFZ loading to its own thread DEVICES: liquidsfz: add LiquidSFZ device for SFZ support Merge branch 'LIT-DEVICEEDITOR' - port b-deviceeditor to Lit # 2024-02-08 Tim Janik 760b00be * LIT-DEVICEEDITOR: ui/b/deviceeditor.js: point out layout todo ui/b/deviceeditor.js: port logic to lit ui/b/contextmenu.js: support popup with null origin ui/b/deviceeditor.js: convert syntax to valid javascript ui/b/deviceeditor.js: replace deviceeditor.vue Merge branch 'STRING-PROPS' - support String as AudioProcessor property # 2024-02-08 Tim Janik 2aef82b3 * STRING-PROPS: STRING-PROPS: ase/processor: allow temporary String mappings for text parameters ase/memory: add CString::temp_quark_impl() to expose quarks in some cases ase/memory: introduce CString::qset() which can count quark references ase/processor: AudioProcessor: unify IBus+OBus into IOBus Allow non-trivial ~IOBus() execution. ase/sndfile.cc: add libmp3lame to assertion about missing MP3 support ui/b/propinput.js: start text field support ase/parameter.cc: treat is_text() as non-numeric and allow Quark values Merge branch 'branch-check' # 2024-01-26 Tim Janik 9d38b0f8 * branch-check: GITHUB: workflows/testing.yml: update to actions/upload-artifact@v4 GITHUB: workflows/testing.yml: only build & upload docs from tim-janik/anklang GITHUB: workflows/testing.yml: update to actions/cache@v4 GITHUB: workflows/testing.yml: use actions/checkout@v4.1.1, fix annotated tag Upgrade to actions/checkout@v4.1.1 and Fix actions/checkout messing up checkouts of annotated tags; actions/checkout#290 Also fetch submodule upfront. GITHUB: workflows/testing.yml: remove Release-Upload run MISC: Makefile.mk: fix script v2.34 invocation The util script from util-linux 2.34 (focal) has no `-O` option. GITHUB: workflows/testing.yml: add `make branch-check` and check errors in PRs MISC: Makefile.mk: add branch-check rule, $BRANCH_CHECK_EXIT holds error status GITHUB: workflows/testing.yml: disable CI on tag pushes MISC: mknews.sh: show git command line MISC: Makefile.mk: fix missing CLEANDIRS Merge branch 'clang-tidy+synsmell' # 2024-01-25 Tim Janik ceaf5265 * clang-tidy+synsmell: UI: Makefile.mk: ui/lint: add checks with misc/synsmell.py DEVICES: Makefile.mk: devices/lint: add checks with misc/synsmell.py ASE: Makefile.mk: ase/lint: add checks with misc/synsmell.py MISC: synsmell.py: check syntax for code smells, based on regular expressions ASE: Makefile.mk: allow double loop variable tests in mathutils.cc ASE: *.cc: fix clang-tidy warnings DEVICES: saturation/Makefile.mk: remove -Iexternal/pandaresampler/lib DEVICES: blepsynth/Makefile.mk: remove -Iexternal/pandaresampler/lib ASE: Makefile.mk: move -Iexternal/pandaresampler/lib here MISC: Makefile.mk: clang-tidy: strip $PWD MISC: colorize.sh: fix black-on-black coloring MISC: Makefile.mk: fix lint-unused rule MISC: Makefile.mk: fix lint-cppcheck rule MISC: Makefile.mk: clang-tidy: support target specific .CTIDY_FLAGS MISC: Makefile.mk: add clang-tidy-check: false exit status on errors/warnings MISC: Makefile.mk: clang-tidy: skip empty reports during printout MISC: Makefile.mk: clang-tidy: add -march=x86-64-v2 so atomics checks pass Merge branch 'docker-apt-cache' # 2024-01-25 Tim Janik 4dcc915d * docker-apt-cache: MISC: version.sh: shorten the logic GITHUB: workflows/testing.yml: compress lines MISC: cirun: simplify, add -B to trigger build, compress cache MISC: Dockerfile.focal: add /var/cache/apt caching MISC: mkassets.sh: build release assets with clang Merge branch 'reduce-make-deps' # 2024-01-22 Tim Janik 8b6e4a71 * reduce-make-deps: ASE: atomics.cc: add simple AtomicIntrusiveStack test MISC: publish.sh: fix git command quoting MISC: mknews.sh: fix extraneous commit hash output ASE: cxxaux.cc: fix missing unistd.h include for read() MISC: Makefile.mk: add appimagetools/ to CLEANDIRS MISC: mkAppImage.sh, mkdeb.sh: fetch $pkgdir from out/config.sh Makefile.mk: generate config.sh to export pkgdir, etc UI: Makefile.mk: add tscheck/ to CLEANDIRS IMAGES: knobs/Makefile.mk: add images/ to CLEANDIRS MISC: package.json.in: minor fix ASE: Makefile.mk: avoid useless rebuilds Makefile.mk: TAGS: use sed to compress flood of "Warning: ignoring null tag" Makefile.mk: regen TAGS after git changed Makefile.mk: avoid touching ls-tree.lst needlessly Makefile.mk: avoid npm rebuilds on git changes Makefile.mk: avoid needlessly touching package.json Merge branch 'simpler-assert' # 2024-01-22 Tim Janik 25b6611f * simpler-assert: ASE: utils: use diag_prefix() for printouts ASE: backtrace.*: remove old code ASE: cxxaux.hh: add ASE_ASSERT_UNREACHED() and ASE_ASSERT() ASE: cxxaux.hh: add assertion_fatal() and bool assertion_failed_fatal ASE: cxxaux.cc: add assertion_fatal(), handle $ASE_DEBUG assertion debug keys Check and implement "breakpoint", "backtrace" and "fatal-warnings" in $ASE_DEBUG Merge branch 'swesterfeld-move-bleptools-to-dspresearch' # 2024-01-22 Tim Janik a26757d3 * swesterfeld-move-bleptools-to-dspresearch: DEVICES: blepsynth: remove design/test tools (moved to dsp-research repo) Merge branch 'build-fixes' # 2023-12-05 Tim Janik fce55a41 * build-fixes: DOC: Makefile.mk: work around broken heading anchors in pandoc-1.3.9 ASE: Makefile.mk: ase/sndfile.cc requires fully built $>/lib/libsndfile.so Merge branch 'sndfile-1.2.2' - build custom libsndfile # 2023-11-22 Tim Janik 1ca7ebc6 * sndfile-1.2.2: MISC: mkdeb.sh: require libmpg123-0 for installations ASE: Makefile.mk: build and link against our own libsndfile.so ASE: sndfile.cc: check libsndfile header and build config .gitmodules: sort modules EXTERNAL: libsndfile: add libsndfile/libsndfile commit from 2023-10-24 09:47:22 git submodule add --name libsndfile https://github.com/libsndfile/libsndfile.git external/libsndfile git -C external/libsndfile checkout e486f20fd4b1c7490cde84f22635e1c267ae882b MISC: Dockerfile.arch: install mpg123, lame for libsndlfile MISC: Dockerfile.focal: install Vorbis, libmpg123, libmp3lame, update Pandoc Merge branch 'git-shallow' # 2023-11-22 Tim Janik bdb82734 * git-shallow: MISC: mknews.sh: create NEWS in forward order MISC: mknews.sh: handle repos without tags MISC: mkassets.sh: fallback to building in /tmp/anklang.tmp/ MISC: version.sh: support git repos without tags Merge branch 'swesterfeld-blepsynth-sample-accurate', closes #27 # 2023-11-18 Tim Janik 80927e07 * swesterfeld-blepsynth-sample-accurate: DEVICES: blepsynth: treat negative time offsets as time offset 0 events DEVICES: blepsynth: remove debugging code DEVICES: blepsynth: change defaults for 2nd oscillator / mix DEVICES: blepsynth: remove event offset debug checks DEVICES: blepsynth/blepsynth.cc: improve updates for some parameters DEVICES: blepsynth/blepsynth.cc: use new filter version from dsp-research - use better tanh() approximation in filter saturation function DEVICES: blepsynth/blepsynth.cc: set more parameter used flags DEVICES: blepsynth/blepsynth.cc: use switch for parameter updates DEVICES: blepsynth/blepsynth.cc: implement sample accurate event processing Merge branch 'swesterfeld-saturation', closes #28 # 2023-11-18 Tim Janik be928207 * swesterfeld-saturation: DEVICES: saturation: treat negative time offsets as time offset 0 events DEVICES: saturation: remove debugging code DEVICES: saturation: port to new parameter API, support in-block events DEVICES: saturation: update DSP code - process left/right in single SaturationDSP object - parameter smoothing - performance optimizations DEVICES: saturation: add Saturation device Merge branch 'separate-ci-checks' # 2023-11-18 Tim Janik afb2db07 * separate-ci-checks: GITHUB: workflows/testing.yml: avoid make all vs make check races Makefile.mk: ensure all checks are added $(CHECK_TARGETS) Merge branch 'simplify-assertions' # 2023-11-17 Tim Janik b9dcc9b8 * simplify-assertions: ASE: queuemux.hh: avoid inlining fallback method `empty()` ASE: cxxaux: assertion_failed: simplify many call sites by adding noexcept ASE: queuemux.hh: simplify impls by adding noexcept ASE: platform.cc: fix up assertion_failed() call ASE: engine.cc: use ASE_ASSERT_WARN() instead of one-off special macro ASE: cxxaux: assertion_failed: simplify many call sites by using char* ASE: cxxaux.hh: simplify compiler errors by avoiding macro indirections ASE: internal.hh: simplify compiler errors by avoiding macro indirections Merge branch 'fix-multiplexer-iterator' # 2023-11-17 Tim Janik 47565461 * fix-multiplexer-iterator: ASE: queuemux.hh: properly check for more() in iterator equality operator ASE: midievent.cc: show hex dump for unknown events Merge branch 'param-events' # 2023-11-16 Tim Janik 8f23a2df * param-events: DEVICES: blepsynth/blepsynth.cc: port to new Parameter API * Start using install_params() * Rename pid_key_[abcdefg]_, add key prefix * Declare all parameter IDs in an enum * Use ase_gettext() multi arg formatting * Construct AudioProcessor with ProcessorSetup& * Add "toggle" hint for piano key properties * Handle PARAM_VALUE events via apply_event() * Start using midi_event_input() * Port remaining OSC1 and OSC2 parameter references * Adjust and check parameter state *after* processing MIDI events * Adjust parameter ID types DEVICES: freeverb/freeverb.cc: support new param events * Use install_params(ParameterMap) * Construct AudioProcessor with ProcessorSetup& * Use adjust_all_params() and apply_input_events() * Fix MODE hints and param position DEVICES: colorednoise.cc: use adjust_all_params() and apply_input_events() * Port to install_params(ParameterMap) * Construct AudioProcessor with ProcessorSetup& DEVICES: Makefile.mk: include colorednoise.cc in the build ASE: midilib.cc: use midi_event_input() and midi_event_output() ASE: clapplugin.cc: use midi_event_input() ASE: engine: allow atomic frame_counter and block_size access ASE: engine.cc: use midi_event_output() ASE: midievent: rename + rewrite MidiEventReader to read many queues * Base MidiEventReader on QueueMultiplexer<> to turn it into a multiplexing event queue reader * Rename MidiEventReader (former MidiEventRange) ASE: clapplugin.cc: use call_delete<>() ASE: cxxaux.hh: add call_delete<> to quickly create delete callbacks ASE: rename MidiEventOutput (former MidiEventStream) ASE: nativedevice.cc: use AudioProcessor.access_properties() ASE: midilib: construct AudioProcessor with ProcessorSetup& ASE: api.hh, server.cc: add Server.engine_stats() ASE: engine: add AudioEngine.engine_stats() ASE: clapplugin.cc: construct AudioProcessor with ProcessorSetup& ASE: clapplugin: remove unused flags fiels from params ASE: combo: construct AudioProcessor with ProcessorSetup& ASE: processor: implement parameter change events * Introduce AudioParams, t0events, install_params(), apply_event() * Implement AudioParams::dirty() * Implement AudioProcessor.access_properties() * Store aseid_ in each AudioProcessor * Add property weak pointers to AudioParams * Support install_params() with an ordinary map<> * Initialize parameter cache with intial value * Disable Property inflight handling code * Rename MidiEventOutput (former MidiEventStream) * Implement multiplexing MIDI event handling * Atomically modify and swap t0events to pass between threads * Leave new/delete of t0events to the main-thread * Add modify_t0events<>() helper to care about atomic swapping * Rename and rewrite get_event_input() and get_event_output() * Introduce RenderContext for rendering specific variables * midi_event_input(): setup multiplexing event queue reader * midi_event_output(): provide writable MIDI event vector * Implement send_param() * Only set dirty and changed for params with property object * Enqueue PARAMCHANGE notification if params changed * Simplify event processing * Provide apply_input_events() to assign PARAM_CHANGE events * Use uint32_t as parameter id type for processors * Provide adjust_all_params() to call adjust_param() for all params ASE: midievent: support MidiMessage::PARAM_VALUE ASE: midievent: add PARAM_VALUE and make_param_value() ASE: parameter: add ParameterMap and support groups * Make `ident` the first Param() field, adjust callers * Add ParameterMap helper type * Support Param.MinMaxStep as double min,max pair * Catch simple cases of duplicate IDs, ident, label * Assign group to new ParameterMap Params ASE: queuemux: support iterators and assign via std::array ASE: queuemux: add QueueMultiplexer.assign() and support iterator template arg Merge branch 'loft-stl-allocator' # 2023-11-13 Tim Janik 89cc7d6c * loft-stl-allocator: ASE: loft: provide STL allocator adapter Loft::Allocator ASE: utils.cc: allow 3 character "unicode" icons ASE: cxxaux.cc, utils.cc: for --fatal-warnings, call breakpoint() This allows continuations in gdb sessions. ASE: utils.hh: require multiple arguments to ase_gettext() for string_format() Merge branch 'queuemux' # 2023-11-13 Tim Janik e1031e5f * queuemux: ASE: queuemux: integrate QueueMultiplexer ASE: queuemux.cc: start QueueMultiplexer implementation Merge branch 'swesterfeld-flexible-adsr', closes #6 # 2023-11-11 Tim Janik 409e87d3 * swesterfeld-flexible-adsr: DEVICES: blepsynth/blepsynth.cc: cleanup unneccessary initialization DEVICES: blepsynth/blepsynth.cc: introduce flexible ADSR model - volume envelope can now be analog (exponential) or flexible - flexible envelope has adjustable attack/decay/release slope - support changing volume/filter envelope params while note is playing Merge branch 'swesterfeld-blepsynth-sallen-key-filter', closes #10 # 2023-11-01 Tim Janik 441cbca2 * swesterfeld-blepsynth-sallen-key-filter: ASE: resampler2: remove, superseded by pandaresampler DEVICES: blepsynth/blepsynth.cc: reorder parameter groups DEVICES: blepsynth/Makefile.mk: include external/pandaresampler/lib EXTERNAL: pandaresampler: add swesterfeld/pandaresampler commit from 2023-02-14 10:18:45 git submodule add --name pandaresampler https://github.com/swesterfeld/pandaresampler.git external/pandaresampler git -C external/pandaresampler checkout 29097dc786b6d75a9deb12e70ec8960a78f7f8f5 DEVICES: blepsynth: update LadderVCF with drive/reso boost DEVICES: blepsynth: optimize filter code if freq/reso/drive are constant DEVICES: blepsynth: update LadderVCF, setup cutoff frequency range DEVICES: blepsynth: add latency compensation for LadderVCF DEVICES: blepsynth: update LadderVCF to version from dsp-research - oversample LadderVCF with factor 4, too DEVICES: blepsynth: compensate for SKFilter FIR oversampling delay DEVICES: blepsynth: reset filter state on filter type change DEVICES: blepsynth: reset SKFilter state if filter mode changes DEVICES: blepsynth: make cutoff parameter log-scaled DEVICES: blepsynth: rename vcf_ to ladder_filter_; minor cleanups DEVICES: blepsynth: implement midi velocity handling and add master gain DEVICES: blepsynth: smooth drive / reso input for Sallen-Key Filter DEVICES: blepsynth: add Sallen-Key Filter Merge branch 'constrain-parameters' # 2023-11-01 Tim Janik fff51b9e * constrain-parameters: UI: b/databubble.js: fix assertion ASE: processor.cc: use parameter->dconstrain() ASE: parameter: add dconstrain() to convert to double and constrain ASE: processor.cc: use Parameter::construct_hints() ASE: parameter: export construct_hints(), always use "stepped" hint for bools UI: b/propinput.js: give toggles preference over choices ASE: processor.cc: remove unused choices from boolean param ASE: serialize.cc: call jsonvalue_to_string() directly ASE: jsonapi.cc: call jsonobject_to_string() directly JSONIPC: jsonipc.hh: always write null instead of NAN, ±Inf Remove JsonWriteFlags from the (template) API. JSONIPC: Makefile: fix include path to external/rapidjson/ EXTERNAL: rapidjson: update Tencent/rapidjson to 2023-09-28 11:36:59 +0200 git -C external/rapidjson checkout f9d53419e912910fd8fa57d5705fa41425428c35 Among other changes, this provides kWriteNanAndInfNullFlag. ASE: parameter: value_from_text(): yield integers for text inputs of choices Merge branch 'npm-updates' # 2023-11-01 Tim Janik 8d568227 * npm-updates: MISC: package.json.in: update various minor versions Makefile.mk: allow $NPM_INSTALL overrides via config-defaults.mk This allowes e.g.: NPM_INSTALL = pnpm install --prefer-offline Merge branch 'g++-bun-pnpm-ci' # 2023-10-27 Tim Janik 042fd7ab * g++-bun-pnpm-ci: GITHUB: workflows/testing.yml: test Arch builds with g++ MISC: Dockerfile.arch: provide pnpm as JS package manager MISC: Dockerfile.arch: update build comments MISC: Dockerfile.focal: provide bun as JS package manager MISC: cirun: defer check for docker-buildx-plugin until we actually need it Makefile.mk: guard against `prefix := / / ` etc which will confuse `rm -rf` EXTERNAL: websocketpp: update zaphoyd/websocketpp to 2022-05-24 18:42:50 2022 -0500 git -C external/websocketpp/ checkout b9aeec6eaf3d5610503439b4fae3581d9aff08e8 This includes fixes applied after version 0.8.2, in particular it allows g++ to build the sources with C++20 enabled. See: https://github.com/zaphoyd/websocketpp/issues/991 Merge branch 'bun' # 2023-10-24 Tim Janik 63e4292b * bun: Makefile.mk: fix up sharp and electron installations with bun At the moment, we need to call the postinstall scripts manually, see: https://github.com/oven-sh/bun/pull/5077 MISC: config-checks.mk: support bun 1.0.0 as package manager Merge branch 'pnpm' # 2023-10-24 Tim Janik f1b37e40 * pnpm: MISC: config-checks.mk: remove unused NPM_INSTALL Makefile.mk: save XNPM to defaults and use it to install node_modules/ MISC: config-checks.mk: check for pnpn, provide as $(XNPM) UI: Makefile.mk: fetch Lit version directly from node_modules/lit/package.json X11TEST: ereplay.cjs: set timeout to 2500 to allow click durations of 2200ms Merge branch 'package-updates' # 2023-10-24 Tim Janik 1c7da515 * package-updates: MISC: package.json.in: update babel, eslint, rollup, electron, postcss, lit Major version updates: - electron-27.0.2 - icon-gen-4.0.0 - lit-3.0.0 - rollup-4.1.4 - postcss-lab-function-6.0.7 - puppeteer-core-21.4.0 MISC: package.json.in: update to vue-3.3.6 Merge branch 'preferences' and live PCM driver updates # 2023-10-16 Tim Janik c7ece44a * preferences: UI: util.js: call prop->ident() ASE: shorten Parameter method ident() ASE: strings: add fallback to string_option_find(), remove string_option_get() ASE: testing.cc: use string_option_find_value() ASE: processor.cc: use string_option_find() ASE: cxxaux.cc: use ase_fatal_warnings ASE: main: remove feature toggles, use ase_fatal_warnings ASE: utils: export ase_fatal_warnings ASE: utils.cc: base debug key checks on string_option_find_value() ASE: strings: base option search on string_option_find_value() (without malloc) ASE: project: create_properties: use property_bag() and Prop ASE: clapdevice.cc: use parameter_guess_nick() ASE: gadget: add property_bag() and create_properties() UI: b/preferencesdialog.vue: edit everything with Shift+Ctrl+Alt+Click [Close] UI: b/preferencesdialog.vue: fetch + edit only selected PCM + MIDI preferences UI: b/objecteditor.js: fix blurb and descr bubbles UI: index.html, eslintrc.js: allow _("for translation") markup UI: util.js: rename extended Property descr() (abbreviate) UI: b/choiceinput.js: treat choice property as string UI: b/preferencesdialog.vue: special case driver.pcm.devid UI: b/objecteditor.js: rename internal function on xprop UI: b/contextmenu.js: support focus_uri ASE: engine.cc: add preferences for up to 4 MIDI controllers ASE: engine.cc: cache PCM driver live listing for ca half a second ASE: engine: change PCM driver when preferences change ASE: engine.cc: add audio.synth_latency Preference ASE: driver*: allow to query all PcmConfig values from drivers ASE: api.hh, server: remove all old preference handling ASE: api.hh, server: add Server.list_preferences() ASE: properties: add Preference classes and majorly simplify Property impls * Remove obsolete structures and aux constructors * Add getter/setter lister for enumeration types * Add PropertyBag - a helper to simplify property registrations * Add small PropertyImpl based on ParameterProperty * Add generic Preference class, useful for static initialization * Remove property nick guessing * Add global Preference setting list based on Parameter * Implement saving/loading preferences from anklangrc * Auto save preference changes after maybe half a second * Ensure that Preference names follow NCName syntax ASE: defs.hh: add PropertyImpl ASE: api.hh: rename Property.descr() (abbreviate) ASE: api.hh, server: provide access_preference() instead of access_prefs() ASE: api.hh: add constexpr GUIONLY, STORAGE, STANDARD to avoid C++ SIOF ASE: main.cc: save/load preferences unless --norc is given ASE: processor: use Parameter instead of the old ParamInfo ASE: parameter: add Parameter, ParameterProperty and parameter_guess_nick() * Implement Parameter{} with Param{} as initializer * Add constrain, normalize and text conversions * Implement simple ParameterProperty abstract base class * Support callback function to query parameter choices * In set_value: constrain Value according to parameter range * Use variants for flexible initilizers * Treat choice parameters as text * Match choices via normalized Damerau-Levenshtein distance * Add parameter_guess_nick() (former on property_guess_nick). ASE: value.hh: add Value::is_string() ASE: object.cc: allow NCName as event detail, to support preference identifiers ASE: defs.hh: declare Preference ASE: strings: add kvpairs_search() ASE: strings: define and use ASE_STRING_SET_ASCII_ALNUM and _LOWER_ALNUM ASE: unicode.cc: add missing docs ASE: unicode: add string_to_ncname() and string_is_ncname() ASE: levenshtein: compute (un)restricted Damerau-Levenshtein string distances ASE: defs.hh: add F32EPS and F32MAX ASE: memory.hh: declare CStringS ASE: loop: add exec_once() ASE: cxxaux.hh: add ASE_ASSERT_ALWAYS() MISC: package.json.in: reduce wait delay for rebuilds Merge branch 'c++20' # 2023-10-10 Tim Janik 3a7c2d39 * c++20: MISC: mkAppImage.sh: fix $ORIGIN in AnklangSynthEngine-fma, add jackdriver.so MISC: Dockerfile.focal: install latest poxy (again) MISC: Dockerfile.focal: provide libstdc++-10-dev and a recent castxml MISC: config-uname.mk: optimize with clang -march=x86-64-v3 on modern platforms Clang chokes on '-march=haswell -mno-hle', so we use '-march=x86-64-v3' which is close to Haswell, the clang docs say: -march=x86-64: CMOV, CMPXCHG8B, FPU, FXSR, MMX, FXSR, SCE, SSE, SSE2 -march=x86-64-v2: (close to Nehalem) CMPXCHG16B, LAHF-SAHF, POPCNT, SSE3, SSE4.1, SSE4.2, SSSE3 -march=x86-64-v3: (close to Haswell) AVX, AVX2, BMI1, BMI2, F16C, FMA, LZCNT, MOVBE, XSAVE -march=x86-64-v4: AVX512F, AVX512BW, AVX512CD, AVX512DQ, AVX512VL MISC: mkassets.sh: adopt compiler config and fix make V=1 * Support make with V=1 during asset builds * Copy compiler config from config-defaults.mk for mkassets Makefile.mk: ignore leading spaces in config-defaults.mk ASE: properties.hh, processor.hh: remove unused (and conflicting) GroupId ASE: memory.cc: test CString operators ASE: memory.hh: CString: provide operator== and operator<=> to disambiguate JSONIPC: cxxjip.py: switch from C++17 to C++20 README.md, *.mk: switch from C++17 to C++20 ASE: memory.hh: always provide ctor for Block initialization Merge branch 'audio-engine-job-cleanups' # 2023-10-01 Tim Janik 8067acc1 * audio-engine-job-cleanups: ASE: engine.hh: document engine lifetime ASE: engine: remove BorrowedPtr, simplify EngineJobImpl ASE: clapplugin.cc: use main_rt_jobs queue to delete events from audio_thread ASE: clapplugin.cc: rename ClapAudioProcessor ASE: project.cc: do not (auto) destroy all projects during atexit ASE: main.cc: shutdown: unset engine project and handle main loop callbacks ASE: engine: make transport a reference, move job queues into AudioEngine ASE: engine: rename AudioEngineThread Merge branch 'websocket-fix' # 2023-10-01 Tim Janik a5f9ca97 * websocket-fix: ASE: jsonapi.cc: cache socket nickname for use during errors ASE: websocket.cc: avoid exceptions in boost::asio socket.remote_endpoint() ASE: callback.hh: remove (sync) return value handling in JobQueue ASE: jsonapi.cc: wait for main loop callback completion via semaphore Merge branch 'main-rt-jobs' # 2023-09-30 Tim Janik a3f8f290 * main-rt-jobs: ASE: main.cc: fit one RtCallJob into a cache line This becomes possible with RtCall allocating just 4 pointer sizes. Since Loft allocates at cache line boundaries only, this essentially halves the size of an RtCallJob allocation. ASE: callback: shrink struct RtCall by a pointer ASE: loft: fix and test LoftPtr actually running ~T ASE: engine.hh: add comment about main_rt_jobs ASE: main.cc: turn debugging code into real job_queue_tests ASE: main: main_rt_jobs: add main_loop callback queue without invoking malloc() ASE: callback: RtCall: wrap simple callback pointers, without using malloc ASE: cxxaux.hh: add unalias_ptr<> helper ASE: callback.cc: add a small callback list test ASE: callback: add CallbackList - reentrant cb list with configurable arguments ASE: callback: move JobQueue implementation here Merge branch 'fix-warnings' # 2023-09-29 Tim Janik 9c1a0624 * fix-warnings: ASE: track.cc: fix signedness ASE: utils.cc: cosmetic change ASE: project.cc: cosmetic change ASE: nativedevice.cc: fix signedness ASE: midilib.cc: fix signedness ASE: midievent.cc: cosmetic change ASE: internal.hh: cosmetic change ASE: inifile.cc: fix signedness ASE: engine.cc: cosmetic change ASE: compress.cc: fix write check signedness ASE: combo: fix insert position signedness ASE: clapplugin.cc: cosmetic change ASE: device.cc: remove unused code ASE: blob.cc: cosmetic fix MISC: Makefile.mk: clang-tidy: fix missing includes ASE: clapplugin.cc: cosmetic fix ASE: loop.cc: fix typo Merge branch 'bug-fixes' # 2023-09-23 Tim Janik e9015b99 * bug-fixes: GITHUB: workflows/testing.yml: upload dist tarball as isolated smaller artefact GITHUB: workflows/testing.yml: upgrade to actions/upload-artifact@v3.1.3 MISC: *.sh: use '#!/usr/bin/env bash' for bash scripts, fixes #17 Merge branch 'use-git-submodule' # 2023-09-21 Tim Janik 22cf3470 * use-git-submodule: DOC: copyright.ini: apply MPL-2.0 to .gitmodules MISC: Makefile.mk: directly create and reference .dlcache/ for mkassets.sh MISC: Makefile.mk: mkassets: download builds tools before misc/mkassets.sh GITHUB: workflows/testing.yml: use `make mkassets` for release builds .gitignore: ignore .submodule-stamp UI: global.scss, index.html: move AnklangIcons to assets/ UI: Makefile.mk: copy anklangicons-*.tgz files to assets, remove download EXTERNAL: blobs4anklang: add tim-janik/blobs4anklang commit from 2023-09-21 21:04:16 git -C external/blobs4anklang/ checkout 7b0a4a68a1e9efbe68fc9761bef080995f4b4d6b UI: global.scss, index.html: move fork-awesome to assets/ UI: Makefile.mk: copy node_modules/fork-awesome to assets, remove download MISC: package.json.in: install fork-awesome@1.2.0 UI: Makefile.mk: use blobs4anklang/fonts/InterVariable.woff2, remove download EXTERNAL: blobs4anklang: add tim-janik/blobs4anklang commit from 2023-09-21 18:23:36 git submodule add --name blobs4anklang https://github.com/tim-janik/blobs4anklang.git external/blobs4anklang git -C external/blobs4anklang/ checkout 8da35f3914b9668bacc6755a8051a17051b07c3a Makefile.mk: skip `git submodule` in tarball builds Makefile.mk: dist: exclude unused external subdirs from tarball Makefile.mk: include submodule archives in dist tarball ASE: Makefile.mk: use blake3 submodule, remove download rule ASE: compress.cc: use external/blake3/c/blake3.h EXTERNAL: blake3: add BLAKE3-team/BLAKE3 version 1.3.1 git submodule add --name blake3 https://github.com/BLAKE3-team/BLAKE3.git external/blake3 git -C external/blake3/ checkout 1.3.1 ASE: Makefile.mk: use websocketpp submodule, remove download rule EXTERNAL: websocketpp: add zaphoyd/websocketpp version 0.8.2 git submodule add --name websocketpp https://github.com/zaphoyd/websocketpp.git external/websocketpp git -C external/websocketpp/ checkout 0.8.2 ASE: Makefile.mk: use clap submodule, remove download rule EXTERNAL: clap: add free-audio/clap version 1.1.1 git submodule add --name clap https://github.com/free-audio/clap.git external/clap git -C external/clap/ checkout 1.1.1 ASE: Makefile.mk: use rapidjson submodule, remove download rule EXTERNAL: rapidjson: add Tencent/rapidjson commit from 2022-05-24 10:03:13 git submodule add --name rapidjson https://github.com/Tencent/rapidjson.git external/rapidjson git checkout 232389d4f1012dddec4ef84861face2d2ba85709 Makefile.mk: update all submodules before building sources Makefile.mk: remove external/ subdir from ls-tree.lst MISC: mkcopyright.py: ignore dirs passed from `git ls-tree` on the CLI ASE: storage.cc: adjust old link to zlib-ng/minizip-ng/issues/433 ASE: minizip: build against external/minizip-ng/ ASE: Makefile.mk: use minizip-ng submodule, remove download rule EXTERNAL: minizip-ng: add zlib-ng/minizip-ng version 2.9.0 git submodule add --name minizip-ng https://github.com/zlib-ng/minizip-ng.git external/minizip-ng .gitignore: remove entries of files the build is not generating Merge branch 'thin-lto' - improve LTO builds # 2023-09-17 Tim Janik 0e21fc8e * thin-lto: ASE: main.cc: add missing formats to WAV output help MISC: config-uname.mk: when using LTO, enable Thin LTO with clang Thin LTO can result in smaller binaries and better performance. Merge branch 'cirun-docker-caching' - let cirun handle image build and caching # 2023-09-17 Tim Janik 00c05372 * cirun-docker-caching: GITHUB: workflows/testing.yml: use separate steps for docker image builds GITHUB: workflows/testing.yml: make use of cirun which handles docker builds * workflows/testing.yml: use misc/cirun -u 1000 to fix ownership * workflows/testing.yml: fix CIMAKE for Focal-Clang-Tidy * workflows/testing.yml: move nproc out of env variables MISC: cirun.sh: remove, use simpler cirun MISC: gh_delete_assets.sh: remove old helper MISC: Dockerfile.lunar: remove old file MISC: docker_*: remove old helpers MISC: cirun: add docker build, run, chown and caching MISC: cirun: add script to run commands in dockerized environments GITHUB: workflows/testing.yml: use buildx with selective caching GITHUB: workflows/testing.yml: configure and use buildx with selective caching GITHUB: workflows/testing.yml: remove unused actions/upload-artifact GITHUB: workflows/testing.yml: split asset builds into separate job MISC: cirun.sh: add --build, note that --check includes --build MISC: mkassets.sh: fix outdated globs Merge branch 'ci-fixes' # 2023-09-10 Tim Janik 9a7e6280 * ci-fixes: MISC: mkassets.sh: remove unused file generations MISC: dbuild.sh: delete, now unused MISC: cirun.sh: add missing arg to help MISC: publish.sh: remove --draft MISC: publish.sh: determine version from tarball, show progress MISC: publish.sh: use assets/ directory contents if present GITHUB: workflows/testing.yml: use download-artifact@v3 to fetch release assets GITHUB: workflows/testing.yml: make sure to generate PDF docs early on GITHUB: workflows/testing.yml: provide GH_TOKEN for gh in publish.sh GITHUB: workflows/testing.yml: first build docs, then upload docs/ artifact GITHUB: workflows/testing.yml: fix Release-Upload deps, avoid skipped jobs GITHUB: workflows/testing.yml: allow skipped jobs in Ping-IRC GITHUB: workflows/testing.yml: use github expression for negating if GITHUB: workflows/testing.yml: escape exclamation mark for yaml GITHUB: workflows/testing.yml: skip Focal-Clang-Tidy for release tags GITHUB: workflows/testing.yml: uplaod releases via misc/publish.sh GITHUB: workflows/release.yml: remove, releases moved into testing.yml MISC: publish.sh: download artifacts and create a release MISC: cirun.sh: properly dockerize clang-tidy MISC: cirun.sh: support V=1 GITHUB: workflows/testing.yml: run clang-tidy on focal MISC: cirun.sh: use 1000:1000 to chown files for docker containers MISC: mkassets.sh: add missing auto to cp --reflink=auto GITHUB: workflows/testing.yml: fix env syntax for gha GITHUB: workflows/testing.yml: use cirun.sh for all CI jobs GITHUB: workflows/testing.yml: use cirun.sh on Focal for docs MISC: cirun.sh: support $CITAG to determine docker run image MISC: Dockerfile.lunar: install missing clang aliases MISC: cirun.sh: add script that runs all CI stages via docker MISC: Dockerfile.focal: install poxy==0.13.0 Versions poxy>=0.13.1 have problems with python-3.8 on focal. MISC: Dockerfile.focal: install pandoc-3.1.6.2 Using pandoc-3.1.7 seems to have issues with PDF generation, anchors in section titles cause an error and SVG images are not found. .gitignore: minor addition MISC: Dockerfile.focal: add clang-17 aliases MISC: Dockerfile.focal: provide xetex, poxy and clang++-17 GITHUB: workflows/release.yml: upload draft releases for CI tests GITHUB: workflows/release.yml: cache focal docker builds with buildx GITHUB: workflows/testing.yml: fix comment GITHUB: workflows/testing.yml: cache arch docker builds with buildx GITHUB: workflows/testing.yml: cache lunar and jammy docker builds with buildx Merge branch 'release-fixes' # 2023-09-08 Tim Janik d8465fd8 * release-fixes: MISC: mknews.sh: print latest NEWS.md version with `misc/mknews.sh --version` GITHUB: workflows/release.yml: set prerelease:false for annotated tags Fix actions/checkout@v3 and actions/checkout@v4 messing up the annotation of the currently fetched tag, even with fetch-depth:0, see: actions/checkout#290 MISC: mknews.sh: for release tags, copy news section from NEWS.md ">Merge branch 'build-fixes' # 2024-05-21 Tim Janik 998d0890
* Branch commit log:
ase/logging.cc: add missing unistd.h include
package.json: add missing "globals" package (for eslint)
ase/*.cc: fix missing include
ase/*.hh: fix missing include
misc/cirun: use $CITAG, instead of hard coding dist
Merge branch 'log2file' # 2024-05-20 Tim Janik f4a6e2d7
* Branch commit log:
package.json: add --log2file to synth engine
electron/main.js: add --log2file to synth engine
ase/utils.hh: include ase/logging.hh
ase/main: add --log2file and log info of interest
ase/engine.cc: log missing PCM driver as error
ase/driver.cc: log driver opening as info
ase/logging: add log_setup(), loginf() and logerr()
ase/logging: add source files for logging
Merge branch 'override-drivers' # 2024-05-20 Tim Janik 80ed0d56
* Branch commit log:
ui/Makefile.mk: add --norc when running --js-api
doc/Makefile.mk: add --norc when running --class-tree
ase/server.cc: ase_{error_blurb|error_from_errno}: always map errno to strerror
ase/driver-alsa.cc: always pass ALSA errno back to the caller
ase/cxxaux.cc: ignore ptrace_scope when constructing debugger cmd
misc/GNUmakefile: allow subdir builds
ase/Makefile.mk: utilize GNU Parallel for test execution
Use GNU Parallel if available, otherwise xargs.
Avoid parallel.moreutils which is incompatible and tends to drop jobs.
ase/engine.cc: let main_config.pcm_override, .midi_override override drivers
ase/main.cc: add -P and -M
ase/main.hh
zam-plugins is a collection of LV2/LADSPA/VST/JACK audio plugins developed in-house at ZamAudio
Note: First AU release in macOS!
Helio Workstation is free and open-source music sequencer, designed to be used on all major platforms.
Update change log
amsynth is an easy-to-use software subtractive synth
amsynth is an easy-to-use software subtractive synth
Zrythm is a featureful and easy to use DAW, written in C using the GTK+3 toolkit.
v1.0.0-rc.1
Added
- New Windows UWP (RtMidi) MIDI backend
Changed
- Hide "Custom" tab from scale selector
- Include a scale in the default project (A minor)
- Display region link group IDs inside regions instead of link symbol
- Use new Carla discovery API for scanning plugins
- Use pulse mode in greeter progress bar
- Regenerate bundled faust plugins
- Change Zrythm theme priority to APPLICATION instead of USER
Fixed
- Fix segfault when max tracks limit is reached on trial version
- Fix various issues related to linked regions
- Fix multiple plugins in same CLAP binary not being scanned
Removed
- Removed section labels in some context menus
- Remove libguile dependency
- Remove lilv dependency (at runtime)
- Remove reproc dependency
Zrythm is a featureful and easy to use DAW, written in C using the GTK+3 toolkit.
v1.0.0-rc.0
Added
- Add navigation buttons to the initial greeter window
Changed
- Update the whole user manual
- Update Japanese, Dutch, Russian, translations
- INSTALL: update dependencies list
- Use horizontal icons for some elements in track/channel context menus
- Remove EXIF data from images used in the user manual and add a CI check
Fixed
- Fix crash when changing fade positions in the audio editor
Zrythm is a featureful and easy to use DAW, written in C using the GTK+3 toolkit.
v1.0.0-beta.6.7.32
Added
- Add context menu to import files (#4751)
Changed
- Don't rescan hardware ports periodically (instead do it when the engine gets paused on user actions)
- Port chord selector dialog to AdwDialog and hide tabs with unimplemented functionality (#5071)
- Update Portuguese (Brazil), Turkish, Spanish translations
- Update various sections in the user manual
- Hide Scenes tab in the main panel
Fixed
- Added a temporary workaround to VST3 plugins not accepting all notes off (#5062)
- Fix not being able to select RtAudio device ports in preferences (#5033)
- Fix `is_midi` flag not being copied when cloning hardware ports (may fix issue with MIDI controllers not working)
- Re-enable search in the preferences
- Fix being unable to delete MIDI CC bindings
Cardinal is a virtual Eurorack modular synthesizer platform
This is a feature release that updates to VCV Rack 2.4 and adds quite a few new modules, bringing the module count to 1193
settings::darkModeModule updates:
Special note for AU format users: this release breaks backwards compat due to JUCE -> DPF framework change.
You should export your old patches individually, and reload them after updating.
Zrythm is a featureful and easy to use DAW, written in C using the GTK+3 toolkit.
v1.0.0-beta.6.7.1
Added
- Implement ctrl-drag to move the loop range in the timeline (#4815)
- Print libadwaita/libpanel versions in debug info
Changed
- Remove unneeded `volatile` keywords from some variables
- Monitor section tab: use speaker icon from GNOME icon library
- Stretch objects with Ctrl modifier instead of having a separate stretch mode (#5036)
- Change modulator icon to a knob (#5073)
- Don't allow resizing if the hovered object is too narrow (#5070)
- Update Russian, Interlingua, Catalan, Afrikaans, Finnish, Turkish, Polish, Chinese (Simplified), Japanese translations
Zrythm is a featureful and easy to use DAW, written in C using the GTK+3 toolkit.
v1.0.0-beta.6.7
Radium is a music editor with a tracker and sequencer and mixer interface.
automatically when playing song and switching
between blocks. This was only a bug in the offical
binary releases of Radium 7.3.84.
line is a tiny command-line midi sequencer for live coding
What's new
. gacommand generates random amplitudes for each and every note in the playing phrase
. rl, rr commands rotate, one/various positions, left or right, respectively, each note(s)/cc
. Upgrade notes/cc sync process
This release comes with source code files.
For MacOS and Linux binaries: download artifact
ProjectM is an open source MilkDrop
This is a small bug fix release that corrects some issues found in version 4.1.
USE_PTHREADS option for emscripten buildsVirtual Midi keyboard and Midi Live Looper for Jack Audio Connection Kit
Mamba is a Virtual MIDI Keyboard, a 16 Channel Live MIDI Looper and a (multi) MIDI File player for ALSA / Jack Audio Connection Kit
with a fluidsynth interface, supporting Scala Tuning and Keymap files.
Prebuild binary
Mamba.zip
balance.lv2 is an audio-plugin for stereo balance control with optional per channel delay.
closes #5
Zrythm is a featureful and easy to use DAW, written in C using the GTK+3 toolkit.
v1.0.0-beta.6.6.1
Changed
- Change how object resizing works: revert original object(s) on undo (fixes undoing audio stretching not reverting the original audio, #4955)
- Bump required libadwaita/gtk versions to latest stable releases
- Revert to previous fader style (#5054)
Fixed
- Fix track inputs switching to wrong input in the inspector after selecting a different track
- Fix some issues reported by ASAN
- Fix memory leak when loading project files
- Fix home VST2 path being used when scanning DSSI plugins (#5058)
Removed
- Hide MIDI modifier chooser (out of scope for v1, #5053)
Radium is a music editor with a tracker and sequencer and mixer interface.
Guitarix is a virtual guitar amplifier for Linux running with JACK.
Guitarix is a modular, virtual amplifier for Linux.
With Guitarix you can choose different preamp and amp models
and /or could load *.nam files with the Neural Amp Modeler modules,
or load *.json or .aidax files with the RTNeural modules,
to simulate a specific hardware unit.
Combine them with various effects and speaker cabinet emulations
and/or load your own Impulse Response files
to come up with your very own tones.
New in this release:
Guitarix is a virtual guitar amplifier for Linux running with JACK.
This is the long overdone release for guitarix2 version 0.45.0
Guitarix is a modular, virtual amplifier for Linux.
With Guitarix you can choose different preamp and amp models
and /or could load *.nam files with the Neural Amp Modeler module,
to simulate a specific hardware unit.
Combine them with various effects and speaker cabinet emulations
and/or load your own Impulse Response files
to come up with your very own tones.
This release fix various bugs since the last release from May 2, 2022
It also introduce support for the outstanding Neural Amp Moduler
Symphonia is a pure Rust audio decoding and media demuxing library
opt-simd-sse, opt-simd-avx, and opt-simd-neon feature flags, or opt-simd to enable all.symphonia-format-wav crate is now deprecated and superseded by the symphonia-format-riff crate. This new crate is intended to support demuxing of all RIFF-based multimedia formats such as WAVE, AIFF, AVI, etc. As of this release, the symphonia-format-riff crate provides WavReader and AiffReader.Full Changelog: v0.5.3...v0.5.4
RTcmix is an digital signal processing and sound synthesis language
Many bug fixes since previous release.
Improvements to MIDI Output system.
Completion of Minc parser expansion.
Anklang, a digital audio synthesis application for live creation and composition
Development version - may contain bugs or compatibility issues.
# 2024-02-12 Tim Janik af7da4a * b-textinput-prop: ui/b/propinput.js: use ui/b/objecteditor.js: use ui/b/textinput.js: move to directly operating on .prop ase/project.cc: add project.default_license preference Merge branch 'fix-non-anklang-dir' - fix loading from non-anklang-dir # 2024-02-11 Tim Janik ab3b8da * fix-non-anklang-dir: ase/project.cc: properly halt at root when searching parent dirs ase/path: add and test Path::isroot() .gitignore: remove unused backslash that confuses jj Merge branch 'properties-metadata' - support generic metadata on properties # 2024-02-08 Tim Janik 5f06a6d * properties-metadata: devices/saturation/saturation.cc: add "blurb=" prefix and mark translations devices/liquidsfz/liquidsfz.cc: add "blurb=" prefix and mark translations devices/freeverb/freeverb.cc: add "blurb=" prefix and mark translations devices/blepsynth/blepsynth.cc: add "blurb=" prefix and mark translations ase/api.hh: introduce metadata() for properties * Add const this qualifier to parameter APIs. * engine.cc: add "descr=" prefix to property metadata * project.cc: add "descr=" prefix to property metadata ase/strings: add kvpairs_fetch() and kvpairs_assign() Merge branch 'MOUSE-WHEEL' - fix mouse wheel handling in modern Chrome and Firefox # 2024-02-08 Tim Janik 070d91a * MOUSE-WHEEL: ui/util.js: remove unused wheel2scrollbars ui/b/pianoroll.js: reinstante hzoom and vzoom adjustments via Ctrl ui/util.js: use Mouse.wheel_delta() ui/b/knob.js: use Mouse.wheel_delta() ui/b/pianoroll.js: properly scroll via deltaY from Mouse.wheel_delta() ui/mouse.js: wheel_delta(): provide .x, .y, .z in pixels ui/b/app.js: defer ZMove handling to mouse.js ui/mouse.js: include ZMove notification handling ui/index.html: start mouse.js early on ui/mouse.js: add event_movement() and wheel_delta() to fix event coords Cross browser normalization of movementX,movementY and deltaX,deltaY is a hot mess, see: https://bugs.chromium.org/p/chromium/issues/detail?id=1092358 https://bugzilla.mozilla.org/show_bug.cgi?id=1392460 https://github.com/w3c/uievents/issues/181 https://github.com/w3c/pointerlock/issues/42 https://github.com/mdn/content/issues/11811 ui/index.html: disable modulepreload, it causes module errors in Firefox-122 Merge branch 'GRID-FILE-BROWSER' - use for file browser # 2024-02-08 Tim Janik 8cfd329 * GRID-FILE-BROWSER: misc/package.json.in: fix path of rebuild command ui/kbd.js: fix coord check during horizontal focus movement ui/b/folderview.vue: use grid with column flow to fix slow flexbox wrapping ase/websocket.cc: use "CR" as Chrome abbreviation ase/strings.hh: fix spacing ase/clapplugin.cc: fix newline Merge branch 'ATOMIC-STACK' - simple atomic stack based on Loft # 2024-02-08 Tim Janik 765600a * ATOMIC-STACK: ase/atomics.cc: add atomic_valuestack_test() ase/atomics.hh: add a simple AtomicStack<> with just push, pop, empty ase/loft.hh: reduce includes ase/loft.hh: allow constexpr Loft::Allocator and export allows_read_after_free misc/synsmell.py: escape FI[X]ME misc/synsmell.py: reduce false positives for the separate-body check Merge branch 'SFZ-STRING-PARAM' - pass SFZ instrument as string # 2024-02-08 Tim Janik 789a493 * SFZ-STRING-PARAM: devices/liquidsfz/liquidsfz.cc: pass instrument name as string param via Quark ase/memory.hh: fix missing constexpr for CString::qset() Merge branch 'pr7/swesterfeld-liquidsfz' # 2024-02-08 Tim Janik 55480ad * pr7/swesterfeld-liquidsfz: devices/liquidsfz/Makefile.mk: remove -Iexternal/liquidsfz/lib Includes need to be added to ase/Makefile.mk for all tools to pick them up. ase/Makefile.mk: add -Iexternal/liquidsfz/lib ASE: add copyright information to liquidsfz meta includers ASE: compile liquidsfz library code into ase library DEVICES: liquidsfz: prepare code for .sfz file specific parameter handling DEVICES: liquidsfz: add include path to external submodule EXTERNAL: liquidsfz: add swesterfeld/liquidsfz commit from 2023-11-18 15:15:57 git submodule add --name liquidsfz https://github.com/swesterfeld/liquidsfz.git external/liquidsfz git -C external/liquidsfz checkout 590149ea8c83588c17833d7b9b6653f0f6aab6fb DEVICES liquidsfz: port to new parameter API DEVICES: liquidsfz: move SFZ loading to its own thread DEVICES: liquidsfz: add LiquidSFZ device for SFZ support Merge branch 'LIT-DEVICEEDITOR' - port b-deviceeditor to Lit # 2024-02-08 Tim Janik 760b00b * LIT-DEVICEEDITOR: ui/b/deviceeditor.js: point out layout todo ui/b/deviceeditor.js: port logic to lit ui/b/contextmenu.js: support popup with null origin ui/b/deviceeditor.js: convert syntax to valid javascript ui/b/deviceeditor.js: replace deviceeditor.vue Merge branch 'STRING-PROPS' - support String as AudioProcessor property # 2024-02-08 Tim Janik 2aef82b * STRING-PROPS: STRING-PROPS: ase/processor: allow temporary String mappings for text parameters ase/memory: add CString::temp_quark_impl() to expose quarks in some cases ase/memory: introduce CString::qset() which can count quark references ase/processor: AudioProcessor: unify IBus+OBus into IOBus Allow non-trivial ~IOBus() execution. ase/sndfile.cc: add libmp3lame to assertion about missing MP3 support ui/b/propinput.js: start text field support ase/parameter.cc: treat is_text() as non-numeric and allow Quark values Merge branch 'branch-check' # 2024-01-26 Tim Janik 9d38b0f * branch-check: GITHUB: workflows/testing.yml: update to actions/upload-artifact@v4 GITHUB: workflows/testing.yml: only build & upload docs from tim-janik/anklang GITHUB: workflows/testing.yml: update to actions/cache@v4 GITHUB: workflows/testing.yml: use actions/checkout@v4.1.1, fix annotated tag Upgrade to actions/checkout@v4.1.1 and Fix actions/checkout messing up checkouts of annotated tags; actions/checkout#290 Also fetch submodule upfront. GITHUB: workflows/testing.yml: remove Release-Upload run MISC: Makefile.mk: fix script v2.34 invocation The util script from util-linux 2.34 (focal) has no `-O` option. GITHUB: workflows/testing.yml: add `make branch-check` and check errors in PRs MISC: Makefile.mk: add branch-check rule, $BRANCH_CHECK_EXIT holds error status GITHUB: workflows/testing.yml: disable CI on tag pushes MISC: mknews.sh: show git command line MISC: Makefile.mk: fix missing CLEANDIRS Merge branch 'clang-tidy+synsmell' # 2024-01-25 Tim Janik ceaf526 * clang-tidy+synsmell: UI: Makefile.mk: ui/lint: add checks with misc/synsmell.py DEVICES: Makefile.mk: devices/lint: add checks with misc/synsmell.py ASE: Makefile.mk: ase/lint: add checks with misc/synsmell.py MISC: synsmell.py: check syntax for code smells, based on regular expressions ASE: Makefile.mk: allow double loop variable tests in mathutils.cc ASE: *.cc: fix clang-tidy warnings DEVICES: saturation/Makefile.mk: remove -Iexternal/pandaresampler/lib DEVICES: blepsynth/Makefile.mk: remove -Iexternal/pandaresampler/lib ASE: Makefile.mk: move -Iexternal/pandaresampler/lib here MISC: Makefile.mk: clang-tidy: strip $PWD MISC: colorize.sh: fix black-on-black coloring MISC: Makefile.mk: fix lint-unused rule MISC: Makefile.mk: fix lint-cppcheck rule MISC: Makefile.mk: clang-tidy: support target specific .CTIDY_FLAGS MISC: Makefile.mk: add clang-tidy-check: false exit status on errors/warnings MISC: Makefile.mk: clang-tidy: skip empty reports during printout MISC: Makefile.mk: clang-tidy: add -march=x86-64-v2 so atomics checks pass Merge branch 'docker-apt-cache' # 2024-01-25 Tim Janik 4dcc915 * docker-apt-cache: MISC: version.sh: shorten the logic GITHUB: workflows/testing.yml: compress lines MISC: cirun: simplify, add -B to trigger build, compress cache MISC: Dockerfile.focal: add /var/cache/apt caching MISC: mkassets.sh: build release assets with clang Merge branch 'reduce-make-deps' # 2024-01-22 Tim Janik 8b6e4a7 * reduce-make-deps: ASE: atomics.cc: add simple AtomicIntrusiveStack test MISC: publish.sh: fix git command quoting MISC: mknews.sh: fix extraneous commit hash output ASE: cxxaux.cc: fix missing unistd.h include for read() MISC: Makefile.mk: add appimagetools/ to CLEANDIRS MISC: mkAppImage.sh, mkdeb.sh: fetch $pkgdir from out/config.sh Makefile.mk: generate config.sh to export pkgdir, etc UI: Makefile.mk: add tscheck/ to CLEANDIRS IMAGES: knobs/Makefile.mk: add images/ to CLEANDIRS MISC: package.json.in: minor fix ASE: Makefile.mk: avoid useless rebuilds Makefile.mk: TAGS: use sed to compress flood of "Warning: ignoring null tag" Makefile.mk: regen TAGS after git changed Makefile.mk: avoid touching ls-tree.lst needlessly Makefile.mk: avoid npm rebuilds on git changes Makefile.mk: avoid needlessly touching package.json Merge branch 'simpler-assert' # 2024-01-22 Tim Janik 25b6611 * simpler-assert: ASE: utils: use diag_prefix() for printouts ASE: backtrace.*: remove old code ASE: cxxaux.hh: add ASE_ASSERT_UNREACHED() and ASE_ASSERT() ASE: cxxaux.hh: add assertion_fatal() and bool assertion_failed_fatal ASE: cxxaux.cc: add assertion_fatal(), handle $ASE_DEBUG assertion debug keys Check and implement "breakpoint", "backtrace" and "fatal-warnings" in $ASE_DEBUG Merge branch 'swesterfeld-move-bleptools-to-dspresearch' # 2024-01-22 Tim Janik a26757d * swesterfeld-move-bleptools-to-dspresearch: DEVICES: blepsynth: remove design/test tools (moved to dsp-research repo) Merge branch 'build-fixes' # 2023-12-05 Tim Janik fce55a4 * build-fixes: DOC: Makefile.mk: work around broken heading anchors in pandoc-1.3.9 ASE: Makefile.mk: ase/sndfile.cc requires fully built $>/lib/libsndfile.so Merge branch 'sndfile-1.2.2' - build custom libsndfile # 2023-11-22 Tim Janik 1ca7ebc * sndfile-1.2.2: MISC: mkdeb.sh: require libmpg123-0 for installations ASE: Makefile.mk: build and link against our own libsndfile.so ASE: sndfile.cc: check libsndfile header and build config .gitmodules: sort modules EXTERNAL: libsndfile: add libsndfile/libsndfile commit from 2023-10-24 09:47:22 git submodule add --name libsndfile https://github.com/libsndfile/libsndfile.git external/libsndfile git -C external/libsndfile checkout e486f20fd4b1c7490cde84f22635e1c267ae882b MISC: Dockerfile.arch: install mpg123, lame for libsndlfile MISC: Dockerfile.focal: install Vorbis, libmpg123, libmp3lame, update Pandoc Merge branch 'git-shallow' # 2023-11-22 Tim Janik bdb8273 * git-shallow: MISC: mknews.sh: create NEWS in forward order MISC: mknews.sh: handle repos without tags MISC: mkassets.sh: fallback to building in /tmp/anklang.tmp/ MISC: version.sh: support git repos without tags Merge branch 'swesterfeld-blepsynth-sample-accurate', closes #27 # 2023-11-18 Tim Janik 80927e0 * swesterfeld-blepsynth-sample-accurate: DEVICES: blepsynth: treat negative time offsets as time offset 0 events DEVICES: blepsynth: remove debugging code DEVICES: blepsynth: change defaults for 2nd oscillator / mix DEVICES: blepsynth: remove event offset debug checks DEVICES: blepsynth/blepsynth.cc: improve updates for some parameters DEVICES: blepsynth/blepsynth.cc: use new filter version from dsp-research - use better tanh() approximation in filter saturation function DEVICES: blepsynth/blepsynth.cc: set more parameter used flags DEVICES: blepsynth/blepsynth.cc: use switch for parameter updates DEVICES: blepsynth/blepsynth.cc: implement sample accurate event processing Merge branch 'swesterfeld-saturation', closes #28 # 2023-11-18 Tim Janik be92820 * swesterfeld-saturation: DEVICES: saturation: treat negative time offsets as time offset 0 events DEVICES: saturation: remove debugging code DEVICES: saturation: port to new parameter API, support in-block events DEVICES: saturation: update DSP code - process left/right in single SaturationDSP object - parameter smoothing - performance optimizations DEVICES: saturation: add Saturation device Merge branch 'separate-ci-checks' # 2023-11-18 Tim Janik afb2db0 * separate-ci-checks: GITHUB: workflows/testing.yml: avoid make all vs make check races Makefile.mk: ensure all checks are added $(CHECK_TARGETS) Merge branch 'simplify-assertions' # 2023-11-17 Tim Janik b9dcc9b * simplify-assertions: ASE: queuemux.hh: avoid inlining fallback method `empty()` ASE: cxxaux: assertion_failed: simplify many call sites by adding noexcept ASE: queuemux.hh: simplify impls by adding noexcept ASE: platform.cc: fix up assertion_failed() call ASE: engine.cc: use ASE_ASSERT_WARN() instead of one-off special macro ASE: cxxaux: assertion_failed: simplify many call sites by using char* ASE: cxxaux.hh: simplify compiler errors by avoiding macro indirections ASE: internal.hh: simplify compiler errors by avoiding macro indirections Merge branch 'fix-multiplexer-iterator' # 2023-11-17 Tim Janik 4756546 * fix-multiplexer-iterator: ASE: queuemux.hh: properly check for more() in iterator equality operator ASE: midievent.cc: show hex dump for unknown events Merge branch 'param-events' # 2023-11-16 Tim Janik 8f23a2d * param-events: DEVICES: blepsynth/blepsynth.cc: port to new Parameter API * Start using install_params() * Rename pid_key_[abcdefg]_, add key prefix * Declare all parameter IDs in an enum * Use ase_gettext() multi arg formatting * Construct AudioProcessor with ProcessorSetup& * Add "toggle" hint for piano key properties * Handle PARAM_VALUE events via apply_event() * Start using midi_event_input() * Port remaining OSC1 and OSC2 parameter references * Adjust and check parameter state *after* processing MIDI events * Adjust parameter ID types DEVICES: freeverb/freeverb.cc: support new param events * Use install_params(ParameterMap) * Construct AudioProcessor with ProcessorSetup& * Use adjust_all_params() and apply_input_events() * Fix MODE hints and param position DEVICES: colorednoise.cc: use adjust_all_params() and apply_input_events() * Port to install_params(ParameterMap) * Construct AudioProcessor with ProcessorSetup& DEVICES: Makefile.mk: include colorednoise.cc in the build ASE: midilib.cc: use midi_event_input() and midi_event_output() ASE: clapplugin.cc: use midi_event_input() ASE: engine: allow atomic frame_counter and block_size access ASE: engine.cc: use midi_event_output() ASE: midievent: rename + rewrite MidiEventReader to read many queues * Base MidiEventReader on QueueMultiplexer<> to turn it into a multiplexing event queue reader * Rename MidiEventReader (former MidiEventRange) ASE: clapplugin.cc: use call_delete<>() ASE: cxxaux.hh: add call_delete<> to quickly create delete callbacks ASE: rename MidiEventOutput (former MidiEventStream) ASE: nativedevice.cc: use AudioProcessor.access_properties() ASE: midilib: construct AudioProcessor with ProcessorSetup& ASE: api.hh, server.cc: add Server.engine_stats() ASE: engine: add AudioEngine.engine_stats() ASE: clapplugin.cc: construct AudioProcessor with ProcessorSetup& ASE: clapplugin: remove unused flags fiels from params ASE: combo: construct AudioProcessor with ProcessorSetup& ASE: processor: implement parameter change events * Introduce AudioParams, t0events, install_params(), apply_event() * Implement AudioParams::dirty() * Implement AudioProcessor.access_properties() * Store aseid_ in each AudioProcessor * Add property weak pointers to AudioParams * Support install_params() with an ordinary map<> * Initialize parameter cache with intial value * Disable Property inflight handling code * Rename MidiEventOutput (former MidiEventStream) * Implement multiplexing MIDI event handling * Atomically modify and swap t0events to pass between threads * Leave new/delete of t0events to the main-thread * Add modify_t0events<>() helper to care about atomic swapping * Rename and rewrite get_event_input() and get_event_output() * Introduce RenderContext for rendering specific variables * midi_event_input(): setup multiplexing event queue reader * midi_event_output(): provide writable MIDI event vector * Implement send_param() * Only set dirty and changed for params with property object * Enqueue PARAMCHANGE notification if params changed * Simplify event processing * Provide apply_input_events() to assign PARAM_CHANGE events * Use uint32_t as parameter id type for processors * Provide adjust_all_params() to call adjust_param() for all params ASE: midievent: support MidiMessage::PARAM_VALUE ASE: midievent: add PARAM_VALUE and make_param_value() ASE: parameter: add ParameterMap and support groups * Make `ident` the first Param() field, adjust callers * Add ParameterMap helper type * Support Param.MinMaxStep as double min,max pair * Catch simple cases of duplicate IDs, ident, label * Assign group to new ParameterMap Params ASE: queuemux: support iterators and assign via std::array ASE: queuemux: add QueueMultiplexer.assign() and support iterator template arg Merge branch 'loft-stl-allocator' # 2023-11-13 Tim Janik 89cc7d6 * loft-stl-allocator: ASE: loft: provide STL allocator adapter Loft::Allocator ASE: utils.cc: allow 3 character "unicode" icons ASE: cxxaux.cc, utils.cc: for --fatal-warnings, call breakpoint() This allows continuations in gdb sessions. ASE: utils.hh: require multiple arguments to ase_gettext() for string_format() Merge branch 'queuemux' # 2023-11-13 Tim Janik e1031e5 * queuemux: ASE: queuemux: integrate QueueMultiplexer ASE: queuemux.cc: start QueueMultiplexer implementation Merge branch 'swesterfeld-flexible-adsr', closes #6 # 2023-11-11 Tim Janik 409e87d * swesterfeld-flexible-adsr: DEVICES: blepsynth/blepsynth.cc: cleanup unneccessary initialization DEVICES: blepsynth/blepsynth.cc: introduce flexible ADSR model - volume envelope can now be analog (exponential) or flexible - flexible envelope has adjustable attack/decay/release slope - support changing volume/filter envelope params while note is playing Merge branch 'swesterfeld-blepsynth-sallen-key-filter', closes #10 # 2023-11-01 Tim Janik 441cbca * swesterfeld-blepsynth-sallen-key-filter: ASE: resampler2: remove, superseded by pandaresampler DEVICES: blepsynth/blepsynth.cc: reorder parameter groups DEVICES: blepsynth/Makefile.mk: include external/pandaresampler/lib EXTERNAL: pandaresampler: add swesterfeld/pandaresampler commit from 2023-02-14 10:18:45 git submodule add --name pandaresampler https://github.com/swesterfeld/pandaresampler.git external/pandaresampler git -C external/pandaresampler checkout 29097dc786b6d75a9deb12e70ec8960a78f7f8f5 DEVICES: blepsynth: update LadderVCF with drive/reso boost DEVICES: blepsynth: optimize filter code if freq/reso/drive are constant DEVICES: blepsynth: update LadderVCF, setup cutoff frequency range DEVICES: blepsynth: add latency compensation for LadderVCF DEVICES: blepsynth: update LadderVCF to version from dsp-research - oversample LadderVCF with factor 4, too DEVICES: blepsynth: compensate for SKFilter FIR oversampling delay DEVICES: blepsynth: reset filter state on filter type change DEVICES: blepsynth: reset SKFilter state if filter mode changes DEVICES: blepsynth: make cutoff parameter log-scaled DEVICES: blepsynth: rename vcf_ to ladder_filter_; minor cleanups DEVICES: blepsynth: implement midi velocity handling and add master gain DEVICES: blepsynth: smooth drive / reso input for Sallen-Key Filter DEVICES: blepsynth: add Sallen-Key Filter Merge branch 'constrain-parameters' # 2023-11-01 Tim Janik fff51b9 * constrain-parameters: UI: b/databubble.js: fix assertion ASE: processor.cc: use parameter->dconstrain() ASE: parameter: add dconstrain() to convert to double and constrain ASE: processor.cc: use Parameter::construct_hints() ASE: parameter: export construct_hints(), always use "stepped" hint for bools UI: b/propinput.js: give toggles preference over choices ASE: processor.cc: remove unused choices from boolean param ASE: serialize.cc: call jsonvalue_to_string() directly ASE: jsonapi.cc: call jsonobject_to_string() directly JSONIPC: jsonipc.hh: always write null instead of NAN, ±Inf Remove JsonWriteFlags from the (template) API. JSONIPC: Makefile: fix include path to external/rapidjson/ EXTERNAL: rapidjson: update Tencent/rapidjson to 2023-09-28 11:36:59 +0200 git -C external/rapidjson checkout f9d53419e912910fd8fa57d5705fa41425428c35 Among other changes, this provides kWriteNanAndInfNullFlag. ASE: parameter: value_from_text(): yield integers for text inputs of choices Merge branch 'npm-updates' # 2023-11-01 Tim Janik 8d56822 * npm-updates: MISC: package.json.in: update various minor versions Makefile.mk: allow $NPM_INSTALL overrides via config-defaults.mk This allowes e.g.: NPM_INSTALL = pnpm install --prefer-offline Merge branch 'g++-bun-pnpm-ci' # 2023-10-27 Tim Janik 042fd7a * g++-bun-pnpm-ci: GITHUB: workflows/testing.yml: test Arch builds with g++ MISC: Dockerfile.arch: provide pnpm as JS package manager MISC: Dockerfile.arch: update build comments MISC: Dockerfile.focal: provide bun as JS package manager MISC: cirun: defer check for docker-buildx-plugin until we actually need it Makefile.mk: guard against `prefix := / / ` etc which will confuse `rm -rf` EXTERNAL: websocketpp: update zaphoyd/websocketpp to 2022-05-24 18:42:50 2022 -0500 git -C external/websocketpp/ checkout b9aeec6eaf3d5610503439b4fae3581d9aff08e8 This includes fixes applied after version 0.8.2, in particular it allows g++ to build the sources with C++20 enabled. See: https://github.com/zaphoyd/websocketpp/issues/991 Merge branch 'bun' # 2023-10-24 Tim Janik 63e4292 * bun: Makefile.mk: fix up sharp and electron installations with bun At the moment, we need to call the postinstall scripts manually, see: https://github.com/oven-sh/bun/pull/5077 MISC: config-checks.mk: support bun 1.0.0 as package manager Merge branch 'pnpm' # 2023-10-24 Tim Janik f1b37e4 * pnpm: MISC: config-checks.mk: remove unused NPM_INSTALL Makefile.mk: save XNPM to defaults and use it to install node_modules/ MISC: config-checks.mk: check for pnpn, provide as $(XNPM) UI: Makefile.mk: fetch Lit version directly from node_modules/lit/package.json X11TEST: ereplay.cjs: set timeout to 2500 to allow click durations of 2200ms Merge branch 'package-updates' # 2023-10-24 Tim Janik 1c7da51 * package-updates: MISC: package.json.in: update babel, eslint, rollup, electron, postcss, lit Major version updates: - electron-27.0.2 - icon-gen-4.0.0 - lit-3.0.0 - rollup-4.1.4 - postcss-lab-function-6.0.7 - puppeteer-core-21.4.0 MISC: package.json.in: update to vue-3.3.6 Merge branch 'preferences' and live PCM driver updates # 2023-10-16 Tim Janik c7ece44 * preferences: UI: util.js: call prop->ident() ASE: shorten Parameter method ident() ASE: strings: add fallback to string_option_find(), remove string_option_get() ASE: testing.cc: use string_option_find_value() ASE: processor.cc: use string_option_find() ASE: cxxaux.cc: use ase_fatal_warnings ASE: main: remove feature toggles, use ase_fatal_warnings ASE: utils: export ase_fatal_warnings ASE: utils.cc: base debug key checks on string_option_find_value() ASE: strings: base option search on string_option_find_value() (without malloc) ASE: project: create_properties: use property_bag() and Prop ASE: clapdevice.cc: use parameter_guess_nick() ASE: gadget: add property_bag() and create_properties() UI: b/preferencesdialog.vue: edit everything with Shift+Ctrl+Alt+Click [Close] UI: b/preferencesdialog.vue: fetch + edit only selected PCM + MIDI preferences UI: b/objecteditor.js: fix blurb and descr bubbles UI: index.html, eslintrc.js: allow _("for translation") markup UI: util.js: rename extended Property descr() (abbreviate) UI: b/choiceinput.js: treat choice property as string UI: b/preferencesdialog.vue: special case driver.pcm.devid UI: b/objecteditor.js: rename internal function on xprop UI: b/contextmenu.js: support focus_uri ASE: engine.cc: add preferences for up to 4 MIDI controllers ASE: engine.cc: cache PCM driver live listing for ca half a second ASE: engine: change PCM driver when preferences change ASE: engine.cc: add audio.synth_latency Preference ASE: driver*: allow to query all PcmConfig values from drivers ASE: api.hh, server: remove all old preference handling ASE: api.hh, server: add Server.list_preferences() ASE: properties: add Preference classes and majorly simplify Property impls * Remove obsolete structures and aux constructors * Add getter/setter lister for enumeration types * Add PropertyBag - a helper to simplify property registrations * Add small PropertyImpl based on ParameterProperty * Add generic Preference class, useful for static initialization * Remove property nick guessing * Add global Preference setting list based on Parameter * Implement saving/loading preferences from anklangrc * Auto save preference changes after maybe half a second * Ensure that Preference names follow NCName syntax ASE: defs.hh: add PropertyImpl ASE: api.hh: rename Property.descr() (abbreviate) ASE: api.hh, server: provide access_preference() instead of access_prefs() ASE: api.hh: add constexpr GUIONLY, STORAGE, STANDARD to avoid C++ SIOF ASE: main.cc: save/load preferences unless --norc is given ASE: processor: use Parameter instead of the old ParamInfo ASE: parameter: add Parameter, ParameterProperty and parameter_guess_nick() * Implement Parameter{} with Param{} as initializer * Add constrain, normalize and text conversions * Implement simple ParameterProperty abstract base class * Support callback function to query parameter choices * In set_value: constrain Value according to parameter range * Use variants for flexible initilizers * Treat choice parameters as text * Match choices via normalized Damerau-Levenshtein distance * Add parameter_guess_nick() (former on property_guess_nick). ASE: value.hh: add Value::is_string() ASE: object.cc: allow NCName as event detail, to support preference identifiers ASE: defs.hh: declare Preference ASE: strings: add kvpairs_search() ASE: strings: define and use ASE_STRING_SET_ASCII_ALNUM and _LOWER_ALNUM ASE: unicode.cc: add missing docs ASE: unicode: add string_to_ncname() and string_is_ncname() ASE: levenshtein: compute (un)restricted Damerau-Levenshtein string distances ASE: defs.hh: add F32EPS and F32MAX ASE: memory.hh: declare CStringS ASE: loop: add exec_once() ASE: cxxaux.hh: add ASE_ASSERT_ALWAYS() MISC: package.json.in: reduce wait delay for rebuilds Merge branch 'c++20' # 2023-10-10 Tim Janik 3a7c2d3 * c++20: MISC: mkAppImage.sh: fix $ORIGIN in AnklangSynthEngine-fma, add jackdriver.so MISC: Dockerfile.focal: install latest poxy (again) MISC: Dockerfile.focal: provide libstdc++-10-dev and a recent castxml MISC: config-uname.mk: optimize with clang -march=x86-64-v3 on modern platforms Clang chokes on '-march=haswell -mno-hle', so we use '-march=x86-64-v3' which is close to Haswell, the clang docs say: -march=x86-64: CMOV, CMPXCHG8B, FPU, FXSR, MMX, FXSR, SCE, SSE, SSE2 -march=x86-64-v2: (close to Nehalem) CMPXCHG16B, LAHF-SAHF, POPCNT, SSE3, SSE4.1, SSE4.2, SSSE3 -march=x86-64-v3: (close to Haswell) AVX, AVX2, BMI1, BMI2, F16C, FMA, LZCNT, MOVBE, XSAVE -march=x86-64-v4: AVX512F, AVX512BW, AVX512CD, AVX512DQ, AVX512VL MISC: mkassets.sh: adopt compiler config and fix make V=1 * Support make with V=1 during asset builds * Copy compiler config from config-defaults.mk for mkassets Makefile.mk: ignore leading spaces in config-defaults.mk ASE: properties.hh, processor.hh: remove unused (and conflicting) GroupId ASE: memory.cc: test CString operators ASE: memory.hh: CString: provide operator== and operator<=> to disambiguate JSONIPC: cxxjip.py: switch from C++17 to C++20 README.md, *.mk: switch from C++17 to C++20 ASE: memory.hh: always provide ctor for Block initialization Merge branch 'audio-engine-job-cleanups' # 2023-10-01 Tim Janik 8067acc * audio-engine-job-cleanups: ASE: engine.hh: document engine lifetime ASE: engine: remove BorrowedPtr, simplify EngineJobImpl ASE: clapplugin.cc: use main_rt_jobs queue to delete events from audio_thread ASE: clapplugin.cc: rename ClapAudioProcessor ASE: project.cc: do not (auto) destroy all projects during atexit ASE: main.cc: shutdown: unset engine project and handle main loop callbacks ASE: engine: make transport a reference, move job queues into AudioEngine ASE: engine: rename AudioEngineThread Merge branch 'websocket-fix' # 2023-10-01 Tim Janik a5f9ca9 * websocket-fix: ASE: jsonapi.cc: cache socket nickname for use during errors ASE: websocket.cc: avoid exceptions in boost::asio socket.remote_endpoint() ASE: callback.hh: remove (sync) return value handling in JobQueue ASE: jsonapi.cc: wait for main loop callback completion via semaphore Merge branch 'main-rt-jobs' # 2023-09-30 Tim Janik a3f8f29 * main-rt-jobs: ASE: main.cc: fit one RtCallJob into a cache line This becomes possible with RtCall allocating just 4 pointer sizes. Since Loft allocates at cache line boundaries only, this essentially halves the size of an RtCallJob allocation. ASE: callback: shrink struct RtCall by a pointer ASE: loft: fix and test LoftPtr actually running ~T ASE: engine.hh: add comment about main_rt_jobs ASE: main.cc: turn debugging code into real job_queue_tests ASE: main: main_rt_jobs: add main_loop callback queue without invoking malloc() ASE: callback: RtCall: wrap simple callback pointers, without using malloc ASE: cxxaux.hh: add unalias_ptr<> helper ASE: callback.cc: add a small callback list test ASE: callback: add CallbackList - reentrant cb list with configurable arguments ASE: callback: move JobQueue implementation here Merge branch 'fix-warnings' # 2023-09-29 Tim Janik 9c1a062 * fix-warnings: ASE: track.cc: fix signedness ASE: utils.cc: cosmetic change ASE: project.cc: cosmetic change ASE: nativedevice.cc: fix signedness ASE: midilib.cc: fix signedness ASE: midievent.cc: cosmetic change ASE: internal.hh: cosmetic change ASE: inifile.cc: fix signedness ASE: engine.cc: cosmetic change ASE: compress.cc: fix write check signedness ASE: combo: fix insert position signedness ASE: clapplugin.cc: cosmetic change ASE: device.cc: remove unused code ASE: blob.cc: cosmetic fix MISC: Makefile.mk: clang-tidy: fix missing includes ASE: clapplugin.cc: cosmetic fix ASE: loop.cc: fix typo Merge branch 'bug-fixes' # 2023-09-23 Tim Janik e9015b9 * bug-fixes: GITHUB: workflows/testing.yml: upload dist tarball as isolated smaller artefact GITHUB: workflows/testing.yml: upgrade to actions/upload-artifact@v3.1.3 MISC: *.sh: use '#!/usr/bin/env bash' for bash scripts, fixes #17 Merge branch 'use-git-submodule' # 2023-09-21 Tim Janik 22cf347 * use-git-submodule: DOC: copyright.ini: apply MPL-2.0 to .gitmodules MISC: Makefile.mk: directly create and reference .dlcache/ for mkassets.sh MISC: Makefile.mk: mkassets: download builds tools before misc/mkassets.sh GITHUB: workflows/testing.yml: use `make mkassets` for release builds .gitignore: ignore .submodule-stamp UI: global.scss, index.html: move AnklangIcons to assets/ UI: Makefile.mk: copy anklangicons-*.tgz files to assets, remove download EXTERNAL: blobs4anklang: add tim-janik/blobs4anklang commit from 2023-09-21 21:04:16 git -C external/blobs4anklang/ checkout 7b0a4a68a1e9efbe68fc9761bef080995f4b4d6b UI: global.scss, index.html: move fork-awesome to assets/ UI: Makefile.mk: copy node_modules/fork-awesome to assets, remove download MISC: package.json.in: install fork-awesome@1.2.0 UI: Makefile.mk: use blobs4anklang/fonts/InterVariable.woff2, remove download EXTERNAL: blobs4anklang: add tim-janik/blobs4anklang commit from 2023-09-21 18:23:36 git submodule add --name blobs4anklang https://github.com/tim-janik/blobs4anklang.git external/blobs4anklang git -C external/blobs4anklang/ checkout 8da35f3914b9668bacc6755a8051a17051b07c3a Makefile.mk: skip `git submodule` in tarball builds Makefile.mk: dist: exclude unused external subdirs from tarball Makefile.mk: include submodule archives in dist tarball ASE: Makefile.mk: use blake3 submodule, remove download rule ASE: compress.cc: use external/blake3/c/blake3.h EXTERNAL: blake3: add BLAKE3-team/BLAKE3 version 1.3.1 git submodule add --name blake3 https://github.com/BLAKE3-team/BLAKE3.git external/blake3 git -C external/blake3/ checkout 1.3.1 ASE: Makefile.mk: use websocketpp submodule, remove download rule EXTERNAL: websocketpp: add zaphoyd/websocketpp version 0.8.2 git submodule add --name websocketpp https://github.com/zaphoyd/websocketpp.git external/websocketpp git -C external/websocketpp/ checkout 0.8.2 ASE: Makefile.mk: use clap submodule, remove download rule EXTERNAL: clap: add free-audio/clap version 1.1.1 git submodule add --name clap https://github.com/free-audio/clap.git external/clap git -C external/clap/ checkout 1.1.1 ASE: Makefile.mk: use rapidjson submodule, remove download rule EXTERNAL: rapidjson: add Tencent/rapidjson commit from 2022-05-24 10:03:13 git submodule add --name rapidjson https://github.com/Tencent/rapidjson.git external/rapidjson git checkout 232389d4f1012dddec4ef84861face2d2ba85709 Makefile.mk: update all submodules before building sources Makefile.mk: remove external/ subdir from ls-tree.lst MISC: mkcopyright.py: ignore dirs passed from `git ls-tree` on the CLI ASE: storage.cc: adjust old link to zlib-ng/minizip-ng/issues/433 ASE: minizip: build against external/minizip-ng/ ASE: Makefile.mk: use minizip-ng submodule, remove download rule EXTERNAL: minizip-ng: add zlib-ng/minizip-ng version 2.9.0 git submodule add --name minizip-ng https://github.com/zlib-ng/minizip-ng.git external/minizip-ng .gitignore: remove entries of files the build is not generating Merge branch 'thin-lto' - improve LTO builds # 2023-09-17 Tim Janik 0e21fc8 * thin-lto: ASE: main.cc: add missing formats to WAV output help MISC: config-uname.mk: when using LTO, enable Thin LTO with clang Thin LTO can result in smaller binaries and better performance. Merge branch 'cirun-docker-caching' - let cirun handle image build and caching # 2023-09-17 Tim Janik 00c0537 * cirun-docker-caching: GITHUB: workflows/testing.yml: use separate steps for docker image builds GITHUB: workflows/testing.yml: make use of cirun which handles docker builds * workflows/testing.yml: use misc/cirun -u 1000 to fix ownership * workflows/testing.yml: fix CIMAKE for Focal-Clang-Tidy * workflows/testing.yml: move nproc out of env variables MISC: cirun.sh: remove, use simpler cirun MISC: gh_delete_assets.sh: remove old helper MISC: Dockerfile.lunar: remove old file MISC: docker_*: remove old helpers MISC: cirun: add docker build, run, chown and caching MISC: cirun: add script to run commands in dockerized environments GITHUB: workflows/testing.yml: use buildx with selective caching GITHUB: workflows/testing.yml: configure and use buildx with selective caching GITHUB: workflows/testing.yml: remove unused actions/upload-artifact GITHUB: workflows/testing.yml: split asset builds into separate job MISC: cirun.sh: add --build, note that --check includes --build MISC: mkassets.sh: fix outdated globs Merge branch 'ci-fixes' # 2023-09-10 Tim Janik 9a7e628 * ci-fixes: MISC: mkassets.sh: remove unused file generations MISC: dbuild.sh: delete, now unused MISC: cirun.sh: add missing arg to help MISC: publish.sh: remove --draft MISC: publish.sh: determine version from tarball, show progress MISC: publish.sh: use assets/ directory contents if present GITHUB: workflows/testing.yml: use download-artifact@v3 to fetch release assets GITHUB: workflows/testing.yml: make sure to generate PDF docs early on GITHUB: workflows/testing.yml: provide GH_TOKEN for gh in publish.sh GITHUB: workflows/testing.yml: first build docs, then upload docs/ artifact GITHUB: workflows/testing.yml: fix Release-Upload deps, avoid skipped jobs GITHUB: workflows/testing.yml: allow skipped jobs in Ping-IRC GITHUB: workflows/testing.yml: use github expression for negating if GITHUB: workflows/testing.yml: escape exclamation mark for yaml GITHUB: workflows/testing.yml: skip Focal-Clang-Tidy for release tags GITHUB: workflows/testing.yml: uplaod releases via misc/publish.sh GITHUB: workflows/release.yml: remove, releases moved into testing.yml MISC: publish.sh: download artifacts and create a release MISC: cirun.sh: properly dockerize clang-tidy MISC: cirun.sh: support V=1 GITHUB: workflows/testing.yml: run clang-tidy on focal MISC: cirun.sh: use 1000:1000 to chown files for docker containers MISC: mkassets.sh: add missing auto to cp --reflink=auto GITHUB: workflows/testing.yml: fix env syntax for gha GITHUB: workflows/testing.yml: use cirun.sh for all CI jobs GITHUB: workflows/testing.yml: use cirun.sh on Focal for docs MISC: cirun.sh: support $CITAG to determine docker run image MISC: Dockerfile.lunar: install missing clang aliases MISC: cirun.sh: add script that runs all CI stages via docker MISC: Dockerfile.focal: install poxy==0.13.0 Versions poxy>=0.13.1 have problems with python-3.8 on focal. MISC: Dockerfile.focal: install pandoc-3.1.6.2 Using pandoc-3.1.7 seems to have issues with PDF generation, anchors in section titles cause an error and SVG images are not found. .gitignore: minor addition MISC: Dockerfile.focal: add clang-17 aliases MISC: Dockerfile.focal: provide xetex, poxy and clang++-17 GITHUB: workflows/release.yml: upload draft releases for CI tests GITHUB: workflows/release.yml: cache focal docker builds with buildx GITHUB: workflows/testing.yml: fix comment GITHUB: workflows/testing.yml: cache arch docker builds with buildx GITHUB: workflows/testing.yml: cache lunar and jammy docker builds with buildx Merge branch 'release-fixes' # 2023-09-08 Tim Janik d8465fd * release-fixes: MISC: mknews.sh: print latest NEWS.md version with `misc/mknews.sh --version` GITHUB: workflows/release.yml: set prerelease:false for annotated tags Fix actions/checkout@v3 and actions/checkout@v4 messing up the annotation of the currently fetched tag, even with fetch-depth:0, see: actions/checkout#290 MISC: mknews.sh: for release tags, copy news section from NEWS.md ">Merge branch 'pr43/swesterfeld-midi-events-uint-offset' - closes #26 # 2024-02-14 Tim Janik 714ea0c
* pr43/swesterfeld-midi-events-uint-offset:
devices/liquidsfz/liquidsfz.cc: avoid using printf (use printerr instead)
ASE: midievent.hh: fix clang tidy problem (add typename)
devices/saturation/saturation.cc: midi event frame offsets are now unsigned
devices/liquidsfz/liquidsfz.cc: midi event frame offsets are now unsigned
devices/blepsynth/blepsynth.cc: midi event frame offsets are now unsigned
ASE: midilib.cc: midi event frame offsets are now always positive (#26)
ASE: clapplugin.cc: midi event frame offsets are now always positive (#26)
ASE: midievent: avoid negative frame offsets in midi events
Use unsigned data type for midi event offset, see issue #26.
ase/memory.cc: avoid constexpr std::string use that needs clang++-17
Merge branch 'SPEEDUP-UTILS' - extend and speed up internal utils # 2024-02-14 Tim Janik 02e6083
* SPEEDUP-UTILS:
ase/memory.cc: use array + string ptr unordered_map for quarks
This fixes slowdowns where heavy use of CString lookups turns into a bottleneck.
ase/platform.hh: add extern const char *const ase_sharedir;
ase/Makefile.mk: add extern char*ase_sharedir; to ase/buildversion*.cc
ase/strings.cc: support arrays for string_startswith() and string_endswith()
ase/path: add glob() variant that separates dirs and files
ase/path.cc: increase file_memread() buffer size to up to 1MB
Merge branch 'b-textinput-prop' - add .prop to # 2024-02-12
Neothesia is flashy Synthesia-like MIDI file visulisation software
Developer name
Anklang, a digital audio synthesis application for live creation and composition
Development version - may contain bugs or compatibility issues.
for file browser # 2024-02-08 Tim Janik 8cfd329 * GRID-FILE-BROWSER: misc/package.json.in: fix path of rebuild command ui/kbd.js: fix coord check during horizontal focus movement ui/b/folderview.vue: use grid with column flow to fix slow flexbox wrapping ase/websocket.cc: use "CR" as Chrome abbreviation ase/strings.hh: fix spacing ase/clapplugin.cc: fix newline Merge branch 'ATOMIC-STACK' - simple atomic stack based on Loft # 2024-02-08 Tim Janik 765600a * ATOMIC-STACK: ase/atomics.cc: add atomic_valuestack_test() ase/atomics.hh: add a simple AtomicStack<> with just push, pop, empty ase/loft.hh: reduce includes ase/loft.hh: allow constexpr Loft::Allocator and export allows_read_after_free misc/synsmell.py: escape FI[X]ME misc/synsmell.py: reduce false positives for the separate-body check Merge branch 'SFZ-STRING-PARAM' - pass SFZ instrument as string # 2024-02-08 Tim Janik 789a493 * SFZ-STRING-PARAM: devices/liquidsfz/liquidsfz.cc: pass instrument name as string param via Quark ase/memory.hh: fix missing constexpr for CString::qset() Merge branch 'pr7/swesterfeld-liquidsfz' # 2024-02-08 Tim Janik 55480ad * pr7/swesterfeld-liquidsfz: devices/liquidsfz/Makefile.mk: remove -Iexternal/liquidsfz/lib Includes need to be added to ase/Makefile.mk for all tools to pick them up. ase/Makefile.mk: add -Iexternal/liquidsfz/lib ASE: add copyright information to liquidsfz meta includers ASE: compile liquidsfz library code into ase library DEVICES: liquidsfz: prepare code for .sfz file specific parameter handling DEVICES: liquidsfz: add include path to external submodule EXTERNAL: liquidsfz: add swesterfeld/liquidsfz commit from 2023-11-18 15:15:57 git submodule add --name liquidsfz https://github.com/swesterfeld/liquidsfz.git external/liquidsfz git -C external/liquidsfz checkout 590149ea8c83588c17833d7b9b6653f0f6aab6fb DEVICES liquidsfz: port to new parameter API DEVICES: liquidsfz: move SFZ loading to its own thread DEVICES: liquidsfz: add LiquidSFZ device for SFZ support Merge branch 'LIT-DEVICEEDITOR' - port b-deviceeditor to Lit # 2024-02-08 Tim Janik 760b00b * LIT-DEVICEEDITOR: ui/b/deviceeditor.js: point out layout todo ui/b/deviceeditor.js: port logic to lit ui/b/contextmenu.js: support popup with null origin ui/b/deviceeditor.js: convert syntax to valid javascript ui/b/deviceeditor.js: replace deviceeditor.vue Merge branch 'STRING-PROPS' - support String as AudioProcessor property # 2024-02-08 Tim Janik 2aef82b * STRING-PROPS: STRING-PROPS: ase/processor: allow temporary String mappings for text parameters ase/memory: add CString::temp_quark_impl() to expose quarks in some cases ase/memory: introduce CString::qset() which can count quark references ase/processor: AudioProcessor: unify IBus+OBus into IOBus Allow non-trivial ~IOBus() execution. ase/sndfile.cc: add libmp3lame to assertion about missing MP3 support ui/b/propinput.js: start text field support ase/parameter.cc: treat is_text() as non-numeric and allow Quark values Merge branch 'branch-check' # 2024-01-26 Tim Janik 9d38b0f * branch-check: GITHUB: workflows/testing.yml: update to actions/upload-artifact@v4 GITHUB: workflows/testing.yml: only build & upload docs from tim-janik/anklang GITHUB: workflows/testing.yml: update to actions/cache@v4 GITHUB: workflows/testing.yml: use actions/checkout@v4.1.1, fix annotated tag Upgrade to actions/checkout@v4.1.1 and Fix actions/checkout messing up checkouts of annotated tags; actions/checkout#290 Also fetch submodule upfront. GITHUB: workflows/testing.yml: remove Release-Upload run MISC: Makefile.mk: fix script v2.34 invocation The util script from util-linux 2.34 (focal) has no `-O` option. GITHUB: workflows/testing.yml: add `make branch-check` and check errors in PRs MISC: Makefile.mk: add branch-check rule, $BRANCH_CHECK_EXIT holds error status GITHUB: workflows/testing.yml: disable CI on tag pushes MISC: mknews.sh: show git command line MISC: Makefile.mk: fix missing CLEANDIRS Merge branch 'clang-tidy+synsmell' # 2024-01-25 Tim Janik ceaf526 * clang-tidy+synsmell: UI: Makefile.mk: ui/lint: add checks with misc/synsmell.py DEVICES: Makefile.mk: devices/lint: add checks with misc/synsmell.py ASE: Makefile.mk: ase/lint: add checks with misc/synsmell.py MISC: synsmell.py: check syntax for code smells, based on regular expressions ASE: Makefile.mk: allow double loop variable tests in mathutils.cc ASE: *.cc: fix clang-tidy warnings DEVICES: saturation/Makefile.mk: remove -Iexternal/pandaresampler/lib DEVICES: blepsynth/Makefile.mk: remove -Iexternal/pandaresampler/lib ASE: Makefile.mk: move -Iexternal/pandaresampler/lib here MISC: Makefile.mk: clang-tidy: strip $PWD MISC: colorize.sh: fix black-on-black coloring MISC: Makefile.mk: fix lint-unused rule MISC: Makefile.mk: fix lint-cppcheck rule MISC: Makefile.mk: clang-tidy: support target specific .CTIDY_FLAGS MISC: Makefile.mk: add clang-tidy-check: false exit status on errors/warnings MISC: Makefile.mk: clang-tidy: skip empty reports during printout MISC: Makefile.mk: clang-tidy: add -march=x86-64-v2 so atomics checks pass Merge branch 'docker-apt-cache' # 2024-01-25 Tim Janik 4dcc915 * docker-apt-cache: MISC: version.sh: shorten the logic GITHUB: workflows/testing.yml: compress lines MISC: cirun: simplify, add -B to trigger build, compress cache MISC: Dockerfile.focal: add /var/cache/apt caching MISC: mkassets.sh: build release assets with clang Merge branch 'reduce-make-deps' # 2024-01-22 Tim Janik 8b6e4a7 * reduce-make-deps: ASE: atomics.cc: add simple AtomicIntrusiveStack test MISC: publish.sh: fix git command quoting MISC: mknews.sh: fix extraneous commit hash output ASE: cxxaux.cc: fix missing unistd.h include for read() MISC: Makefile.mk: add appimagetools/ to CLEANDIRS MISC: mkAppImage.sh, mkdeb.sh: fetch $pkgdir from out/config.sh Makefile.mk: generate config.sh to export pkgdir, etc UI: Makefile.mk: add tscheck/ to CLEANDIRS IMAGES: knobs/Makefile.mk: add images/ to CLEANDIRS MISC: package.json.in: minor fix ASE: Makefile.mk: avoid useless rebuilds Makefile.mk: TAGS: use sed to compress flood of "Warning: ignoring null tag" Makefile.mk: regen TAGS after git changed Makefile.mk: avoid touching ls-tree.lst needlessly Makefile.mk: avoid npm rebuilds on git changes Makefile.mk: avoid needlessly touching package.json Merge branch 'simpler-assert' # 2024-01-22 Tim Janik 25b6611 * simpler-assert: ASE: utils: use diag_prefix() for printouts ASE: backtrace.*: remove old code ASE: cxxaux.hh: add ASE_ASSERT_UNREACHED() and ASE_ASSERT() ASE: cxxaux.hh: add assertion_fatal() and bool assertion_failed_fatal ASE: cxxaux.cc: add assertion_fatal(), handle $ASE_DEBUG assertion debug keys Check and implement "breakpoint", "backtrace" and "fatal-warnings" in $ASE_DEBUG Merge branch 'swesterfeld-move-bleptools-to-dspresearch' # 2024-01-22 Tim Janik a26757d * swesterfeld-move-bleptools-to-dspresearch: DEVICES: blepsynth: remove design/test tools (moved to dsp-research repo) Merge branch 'build-fixes' # 2023-12-05 Tim Janik fce55a4 * build-fixes: DOC: Makefile.mk: work around broken heading anchors in pandoc-1.3.9 ASE: Makefile.mk: ase/sndfile.cc requires fully built $>/lib/libsndfile.so Merge branch 'sndfile-1.2.2' - build custom libsndfile # 2023-11-22 Tim Janik 1ca7ebc * sndfile-1.2.2: MISC: mkdeb.sh: require libmpg123-0 for installations ASE: Makefile.mk: build and link against our own libsndfile.so ASE: sndfile.cc: check libsndfile header and build config .gitmodules: sort modules EXTERNAL: libsndfile: add libsndfile/libsndfile commit from 2023-10-24 09:47:22 git submodule add --name libsndfile https://github.com/libsndfile/libsndfile.git external/libsndfile git -C external/libsndfile checkout e486f20fd4b1c7490cde84f22635e1c267ae882b MISC: Dockerfile.arch: install mpg123, lame for libsndlfile MISC: Dockerfile.focal: install Vorbis, libmpg123, libmp3lame, update Pandoc Merge branch 'git-shallow' # 2023-11-22 Tim Janik bdb8273 * git-shallow: MISC: mknews.sh: create NEWS in forward order MISC: mknews.sh: handle repos without tags MISC: mkassets.sh: fallback to building in /tmp/anklang.tmp/ MISC: version.sh: support git repos without tags Merge branch 'swesterfeld-blepsynth-sample-accurate', closes #27 # 2023-11-18 Tim Janik 80927e0 * swesterfeld-blepsynth-sample-accurate: DEVICES: blepsynth: treat negative time offsets as time offset 0 events DEVICES: blepsynth: remove debugging code DEVICES: blepsynth: change defaults for 2nd oscillator / mix DEVICES: blepsynth: remove event offset debug checks DEVICES: blepsynth/blepsynth.cc: improve updates for some parameters DEVICES: blepsynth/blepsynth.cc: use new filter version from dsp-research - use better tanh() approximation in filter saturation function DEVICES: blepsynth/blepsynth.cc: set more parameter used flags DEVICES: blepsynth/blepsynth.cc: use switch for parameter updates DEVICES: blepsynth/blepsynth.cc: implement sample accurate event processing Merge branch 'swesterfeld-saturation', closes #28 # 2023-11-18 Tim Janik be92820 * swesterfeld-saturation: DEVICES: saturation: treat negative time offsets as time offset 0 events DEVICES: saturation: remove debugging code DEVICES: saturation: port to new parameter API, support in-block events DEVICES: saturation: update DSP code - process left/right in single SaturationDSP object - parameter smoothing - performance optimizations DEVICES: saturation: add Saturation device Merge branch 'separate-ci-checks' # 2023-11-18 Tim Janik afb2db0 * separate-ci-checks: GITHUB: workflows/testing.yml: avoid make all vs make check races Makefile.mk: ensure all checks are added $(CHECK_TARGETS) Merge branch 'simplify-assertions' # 2023-11-17 Tim Janik b9dcc9b * simplify-assertions: ASE: queuemux.hh: avoid inlining fallback method `empty()` ASE: cxxaux: assertion_failed: simplify many call sites by adding noexcept ASE: queuemux.hh: simplify impls by adding noexcept ASE: platform.cc: fix up assertion_failed() call ASE: engine.cc: use ASE_ASSERT_WARN() instead of one-off special macro ASE: cxxaux: assertion_failed: simplify many call sites by using char* ASE: cxxaux.hh: simplify compiler errors by avoiding macro indirections ASE: internal.hh: simplify compiler errors by avoiding macro indirections Merge branch 'fix-multiplexer-iterator' # 2023-11-17 Tim Janik 4756546 * fix-multiplexer-iterator: ASE: queuemux.hh: properly check for more() in iterator equality operator ASE: midievent.cc: show hex dump for unknown events Merge branch 'param-events' # 2023-11-16 Tim Janik 8f23a2d * param-events: DEVICES: blepsynth/blepsynth.cc: port to new Parameter API * Start using install_params() * Rename pid_key_[abcdefg]_, add key prefix * Declare all parameter IDs in an enum * Use ase_gettext() multi arg formatting * Construct AudioProcessor with ProcessorSetup& * Add "toggle" hint for piano key properties * Handle PARAM_VALUE events via apply_event() * Start using midi_event_input() * Port remaining OSC1 and OSC2 parameter references * Adjust and check parameter state *after* processing MIDI events * Adjust parameter ID types DEVICES: freeverb/freeverb.cc: support new param events * Use install_params(ParameterMap) * Construct AudioProcessor with ProcessorSetup& * Use adjust_all_params() and apply_input_events() * Fix MODE hints and param position DEVICES: colorednoise.cc: use adjust_all_params() and apply_input_events() * Port to install_params(ParameterMap) * Construct AudioProcessor with ProcessorSetup& DEVICES: Makefile.mk: include colorednoise.cc in the build ASE: midilib.cc: use midi_event_input() and midi_event_output() ASE: clapplugin.cc: use midi_event_input() ASE: engine: allow atomic frame_counter and block_size access ASE: engine.cc: use midi_event_output() ASE: midievent: rename + rewrite MidiEventReader to read many queues * Base MidiEventReader on QueueMultiplexer<> to turn it into a multiplexing event queue reader * Rename MidiEventReader (former MidiEventRange) ASE: clapplugin.cc: use call_delete<>() ASE: cxxaux.hh: add call_delete<> to quickly create delete callbacks ASE: rename MidiEventOutput (former MidiEventStream) ASE: nativedevice.cc: use AudioProcessor.access_properties() ASE: midilib: construct AudioProcessor with ProcessorSetup& ASE: api.hh, server.cc: add Server.engine_stats() ASE: engine: add AudioEngine.engine_stats() ASE: clapplugin.cc: construct AudioProcessor with ProcessorSetup& ASE: clapplugin: remove unused flags fiels from params ASE: combo: construct AudioProcessor with ProcessorSetup& ASE: processor: implement parameter change events * Introduce AudioParams, t0events, install_params(), apply_event() * Implement AudioParams::dirty() * Implement AudioProcessor.access_properties() * Store aseid_ in each AudioProcessor * Add property weak pointers to AudioParams * Support install_params() with an ordinary map<> * Initialize parameter cache with intial value * Disable Property inflight handling code * Rename MidiEventOutput (former MidiEventStream) * Implement multiplexing MIDI event handling * Atomically modify and swap t0events to pass between threads * Leave new/delete of t0events to the main-thread * Add modify_t0events<>() helper to care about atomic swapping * Rename and rewrite get_event_input() and get_event_output() * Introduce RenderContext for rendering specific variables * midi_event_input(): setup multiplexing event queue reader * midi_event_output(): provide writable MIDI event vector * Implement send_param() * Only set dirty and changed for params with property object * Enqueue PARAMCHANGE notification if params changed * Simplify event processing * Provide apply_input_events() to assign PARAM_CHANGE events * Use uint32_t as parameter id type for processors * Provide adjust_all_params() to call adjust_param() for all params ASE: midievent: support MidiMessage::PARAM_VALUE ASE: midievent: add PARAM_VALUE and make_param_value() ASE: parameter: add ParameterMap and support groups * Make `ident` the first Param() field, adjust callers * Add ParameterMap helper type * Support Param.MinMaxStep as double min,max pair * Catch simple cases of duplicate IDs, ident, label * Assign group to new ParameterMap Params ASE: queuemux: support iterators and assign via std::array ASE: queuemux: add QueueMultiplexer.assign() and support iterator template arg Merge branch 'loft-stl-allocator' # 2023-11-13 Tim Janik 89cc7d6 * loft-stl-allocator: ASE: loft: provide STL allocator adapter Loft::Allocator ASE: utils.cc: allow 3 character "unicode" icons ASE: cxxaux.cc, utils.cc: for --fatal-warnings, call breakpoint() This allows continuations in gdb sessions. ASE: utils.hh: require multiple arguments to ase_gettext() for string_format() Merge branch 'queuemux' # 2023-11-13 Tim Janik e1031e5 * queuemux: ASE: queuemux: integrate QueueMultiplexer ASE: queuemux.cc: start QueueMultiplexer implementation Merge branch 'swesterfeld-flexible-adsr', closes #6 # 2023-11-11 Tim Janik 409e87d * swesterfeld-flexible-adsr: DEVICES: blepsynth/blepsynth.cc: cleanup unneccessary initialization DEVICES: blepsynth/blepsynth.cc: introduce flexible ADSR model - volume envelope can now be analog (exponential) or flexible - flexible envelope has adjustable attack/decay/release slope - support changing volume/filter envelope params while note is playing Merge branch 'swesterfeld-blepsynth-sallen-key-filter', closes #10 # 2023-11-01 Tim Janik 441cbca * swesterfeld-blepsynth-sallen-key-filter: ASE: resampler2: remove, superseded by pandaresampler DEVICES: blepsynth/blepsynth.cc: reorder parameter groups DEVICES: blepsynth/Makefile.mk: include external/pandaresampler/lib EXTERNAL: pandaresampler: add swesterfeld/pandaresampler commit from 2023-02-14 10:18:45 git submodule add --name pandaresampler https://github.com/swesterfeld/pandaresampler.git external/pandaresampler git -C external/pandaresampler checkout 29097dc786b6d75a9deb12e70ec8960a78f7f8f5 DEVICES: blepsynth: update LadderVCF with drive/reso boost DEVICES: blepsynth: optimize filter code if freq/reso/drive are constant DEVICES: blepsynth: update LadderVCF, setup cutoff frequency range DEVICES: blepsynth: add latency compensation for LadderVCF DEVICES: blepsynth: update LadderVCF to version from dsp-research - oversample LadderVCF with factor 4, too DEVICES: blepsynth: compensate for SKFilter FIR oversampling delay DEVICES: blepsynth: reset filter state on filter type change DEVICES: blepsynth: reset SKFilter state if filter mode changes DEVICES: blepsynth: make cutoff parameter log-scaled DEVICES: blepsynth: rename vcf_ to ladder_filter_; minor cleanups DEVICES: blepsynth: implement midi velocity handling and add master gain DEVICES: blepsynth: smooth drive / reso input for Sallen-Key Filter DEVICES: blepsynth: add Sallen-Key Filter Merge branch 'constrain-parameters' # 2023-11-01 Tim Janik fff51b9 * constrain-parameters: UI: b/databubble.js: fix assertion ASE: processor.cc: use parameter->dconstrain() ASE: parameter: add dconstrain() to convert to double and constrain ASE: processor.cc: use Parameter::construct_hints() ASE: parameter: export construct_hints(), always use "stepped" hint for bools UI: b/propinput.js: give toggles preference over choices ASE: processor.cc: remove unused choices from boolean param ASE: serialize.cc: call jsonvalue_to_string() directly ASE: jsonapi.cc: call jsonobject_to_string() directly JSONIPC: jsonipc.hh: always write null instead of NAN, ±Inf Remove JsonWriteFlags from the (template) API. JSONIPC: Makefile: fix include path to external/rapidjson/ EXTERNAL: rapidjson: update Tencent/rapidjson to 2023-09-28 11:36:59 +0200 git -C external/rapidjson checkout f9d53419e912910fd8fa57d5705fa41425428c35 Among other changes, this provides kWriteNanAndInfNullFlag. ASE: parameter: value_from_text(): yield integers for text inputs of choices Merge branch 'npm-updates' # 2023-11-01 Tim Janik 8d56822 * npm-updates: MISC: package.json.in: update various minor versions Makefile.mk: allow $NPM_INSTALL overrides via config-defaults.mk This allowes e.g.: NPM_INSTALL = pnpm install --prefer-offline Merge branch 'g++-bun-pnpm-ci' # 2023-10-27 Tim Janik 042fd7a * g++-bun-pnpm-ci: GITHUB: workflows/testing.yml: test Arch builds with g++ MISC: Dockerfile.arch: provide pnpm as JS package manager MISC: Dockerfile.arch: update build comments MISC: Dockerfile.focal: provide bun as JS package manager MISC: cirun: defer check for docker-buildx-plugin until we actually need it Makefile.mk: guard against `prefix := / / ` etc which will confuse `rm -rf` EXTERNAL: websocketpp: update zaphoyd/websocketpp to 2022-05-24 18:42:50 2022 -0500 git -C external/websocketpp/ checkout b9aeec6eaf3d5610503439b4fae3581d9aff08e8 This includes fixes applied after version 0.8.2, in particular it allows g++ to build the sources with C++20 enabled. See: https://github.com/zaphoyd/websocketpp/issues/991 Merge branch 'bun' # 2023-10-24 Tim Janik 63e4292 * bun: Makefile.mk: fix up sharp and electron installations with bun At the moment, we need to call the postinstall scripts manually, see: https://github.com/oven-sh/bun/pull/5077 MISC: config-checks.mk: support bun 1.0.0 as package manager Merge branch 'pnpm' # 2023-10-24 Tim Janik f1b37e4 * pnpm: MISC: config-checks.mk: remove unused NPM_INSTALL Makefile.mk: save XNPM to defaults and use it to install node_modules/ MISC: config-checks.mk: check for pnpn, provide as $(XNPM) UI: Makefile.mk: fetch Lit version directly from node_modules/lit/package.json X11TEST: ereplay.cjs: set timeout to 2500 to allow click durations of 2200ms Merge branch 'package-updates' # 2023-10-24 Tim Janik 1c7da51 * package-updates: MISC: package.json.in: update babel, eslint, rollup, electron, postcss, lit Major version updates: - electron-27.0.2 - icon-gen-4.0.0 - lit-3.0.0 - rollup-4.1.4 - postcss-lab-function-6.0.7 - puppeteer-core-21.4.0 MISC: package.json.in: update to vue-3.3.6 Merge branch 'preferences' and live PCM driver updates # 2023-10-16 Tim Janik c7ece44 * preferences: UI: util.js: call prop->ident() ASE: shorten Parameter method ident() ASE: strings: add fallback to string_option_find(), remove string_option_get() ASE: testing.cc: use string_option_find_value() ASE: processor.cc: use string_option_find() ASE: cxxaux.cc: use ase_fatal_warnings ASE: main: remove feature toggles, use ase_fatal_warnings ASE: utils: export ase_fatal_warnings ASE: utils.cc: base debug key checks on string_option_find_value() ASE: strings: base option search on string_option_find_value() (without malloc) ASE: project: create_properties: use property_bag() and Prop ASE: clapdevice.cc: use parameter_guess_nick() ASE: gadget: add property_bag() and create_properties() UI: b/preferencesdialog.vue: edit everything with Shift+Ctrl+Alt+Click [Close] UI: b/preferencesdialog.vue: fetch + edit only selected PCM + MIDI preferences UI: b/objecteditor.js: fix blurb and descr bubbles UI: index.html, eslintrc.js: allow _("for translation") markup UI: util.js: rename extended Property descr() (abbreviate) UI: b/choiceinput.js: treat choice property as string UI: b/preferencesdialog.vue: special case driver.pcm.devid UI: b/objecteditor.js: rename internal function on xprop UI: b/contextmenu.js: support focus_uri ASE: engine.cc: add preferences for up to 4 MIDI controllers ASE: engine.cc: cache PCM driver live listing for ca half a second ASE: engine: change PCM driver when preferences change ASE: engine.cc: add audio.synth_latency Preference ASE: driver*: allow to query all PcmConfig values from drivers ASE: api.hh, server: remove all old preference handling ASE: api.hh, server: add Server.list_preferences() ASE: properties: add Preference classes and majorly simplify Property impls * Remove obsolete structures and aux constructors * Add getter/setter lister for enumeration types * Add PropertyBag - a helper to simplify property registrations * Add small PropertyImpl based on ParameterProperty * Add generic Preference class, useful for static initialization * Remove property nick guessing * Add global Preference setting list based on Parameter * Implement saving/loading preferences from anklangrc * Auto save preference changes after maybe half a second * Ensure that Preference names follow NCName syntax ASE: defs.hh: add PropertyImpl ASE: api.hh: rename Property.descr() (abbreviate) ASE: api.hh, server: provide access_preference() instead of access_prefs() ASE: api.hh: add constexpr GUIONLY, STORAGE, STANDARD to avoid C++ SIOF ASE: main.cc: save/load preferences unless --norc is given ASE: processor: use Parameter instead of the old ParamInfo ASE: parameter: add Parameter, ParameterProperty and parameter_guess_nick() * Implement Parameter{} with Param{} as initializer * Add constrain, normalize and text conversions * Implement simple ParameterProperty abstract base class * Support callback function to query parameter choices * In set_value: constrain Value according to parameter range * Use variants for flexible initilizers * Treat choice parameters as text * Match choices via normalized Damerau-Levenshtein distance * Add parameter_guess_nick() (former on property_guess_nick). ASE: value.hh: add Value::is_string() ASE: object.cc: allow NCName as event detail, to support preference identifiers ASE: defs.hh: declare Preference ASE: strings: add kvpairs_search() ASE: strings: define and use ASE_STRING_SET_ASCII_ALNUM and _LOWER_ALNUM ASE: unicode.cc: add missing docs ASE: unicode: add string_to_ncname() and string_is_ncname() ASE: levenshtein: compute (un)restricted Damerau-Levenshtein string distances ASE: defs.hh: add F32EPS and F32MAX ASE: memory.hh: declare CStringS ASE: loop: add exec_once() ASE: cxxaux.hh: add ASE_ASSERT_ALWAYS() MISC: package.json.in: reduce wait delay for rebuilds Merge branch 'c++20' # 2023-10-10 Tim Janik 3a7c2d3 * c++20: MISC: mkAppImage.sh: fix $ORIGIN in AnklangSynthEngine-fma, add jackdriver.so MISC: Dockerfile.focal: install latest poxy (again) MISC: Dockerfile.focal: provide libstdc++-10-dev and a recent castxml MISC: config-uname.mk: optimize with clang -march=x86-64-v3 on modern platforms Clang chokes on '-march=haswell -mno-hle', so we use '-march=x86-64-v3' which is close to Haswell, the clang docs say: -march=x86-64: CMOV, CMPXCHG8B, FPU, FXSR, MMX, FXSR, SCE, SSE, SSE2 -march=x86-64-v2: (close to Nehalem) CMPXCHG16B, LAHF-SAHF, POPCNT, SSE3, SSE4.1, SSE4.2, SSSE3 -march=x86-64-v3: (close to Haswell) AVX, AVX2, BMI1, BMI2, F16C, FMA, LZCNT, MOVBE, XSAVE -march=x86-64-v4: AVX512F, AVX512BW, AVX512CD, AVX512DQ, AVX512VL MISC: mkassets.sh: adopt compiler config and fix make V=1 * Support make with V=1 during asset builds * Copy compiler config from config-defaults.mk for mkassets Makefile.mk: ignore leading spaces in config-defaults.mk ASE: properties.hh, processor.hh: remove unused (and conflicting) GroupId ASE: memory.cc: test CString operators ASE: memory.hh: CString: provide operator== and operator<=> to disambiguate JSONIPC: cxxjip.py: switch from C++17 to C++20 README.md, *.mk: switch from C++17 to C++20 ASE: memory.hh: always provide ctor for Block initialization Merge branch 'audio-engine-job-cleanups' # 2023-10-01 Tim Janik 8067acc * audio-engine-job-cleanups: ASE: engine.hh: document engine lifetime ASE: engine: remove BorrowedPtr, simplify EngineJobImpl ASE: clapplugin.cc: use main_rt_jobs queue to delete events from audio_thread ASE: clapplugin.cc: rename ClapAudioProcessor ASE: project.cc: do not (auto) destroy all projects during atexit ASE: main.cc: shutdown: unset engine project and handle main loop callbacks ASE: engine: make transport a reference, move job queues into AudioEngine ASE: engine: rename AudioEngineThread Merge branch 'websocket-fix' # 2023-10-01 Tim Janik a5f9ca9 * websocket-fix: ASE: jsonapi.cc: cache socket nickname for use during errors ASE: websocket.cc: avoid exceptions in boost::asio socket.remote_endpoint() ASE: callback.hh: remove (sync) return value handling in JobQueue ASE: jsonapi.cc: wait for main loop callback completion via semaphore Merge branch 'main-rt-jobs' # 2023-09-30 Tim Janik a3f8f29 * main-rt-jobs: ASE: main.cc: fit one RtCallJob into a cache line This becomes possible with RtCall allocating just 4 pointer sizes. Since Loft allocates at cache line boundaries only, this essentially halves the size of an RtCallJob allocation. ASE: callback: shrink struct RtCall by a pointer ASE: loft: fix and test LoftPtr actually running ~T ASE: engine.hh: add comment about main_rt_jobs ASE: main.cc: turn debugging code into real job_queue_tests ASE: main: main_rt_jobs: add main_loop callback queue without invoking malloc() ASE: callback: RtCall: wrap simple callback pointers, without using malloc ASE: cxxaux.hh: add unalias_ptr<> helper ASE: callback.cc: add a small callback list test ASE: callback: add CallbackList - reentrant cb list with configurable arguments ASE: callback: move JobQueue implementation here Merge branch 'fix-warnings' # 2023-09-29 Tim Janik 9c1a062 * fix-warnings: ASE: track.cc: fix signedness ASE: utils.cc: cosmetic change ASE: project.cc: cosmetic change ASE: nativedevice.cc: fix signedness ASE: midilib.cc: fix signedness ASE: midievent.cc: cosmetic change ASE: internal.hh: cosmetic change ASE: inifile.cc: fix signedness ASE: engine.cc: cosmetic change ASE: compress.cc: fix write check signedness ASE: combo: fix insert position signedness ASE: clapplugin.cc: cosmetic change ASE: device.cc: remove unused code ASE: blob.cc: cosmetic fix MISC: Makefile.mk: clang-tidy: fix missing includes ASE: clapplugin.cc: cosmetic fix ASE: loop.cc: fix typo Merge branch 'bug-fixes' # 2023-09-23 Tim Janik e9015b9 * bug-fixes: GITHUB: workflows/testing.yml: upload dist tarball as isolated smaller artefact GITHUB: workflows/testing.yml: upgrade to actions/upload-artifact@v3.1.3 MISC: *.sh: use '#!/usr/bin/env bash' for bash scripts, fixes #17 Merge branch 'use-git-submodule' # 2023-09-21 Tim Janik 22cf347 * use-git-submodule: DOC: copyright.ini: apply MPL-2.0 to .gitmodules MISC: Makefile.mk: directly create and reference .dlcache/ for mkassets.sh MISC: Makefile.mk: mkassets: download builds tools before misc/mkassets.sh GITHUB: workflows/testing.yml: use `make mkassets` for release builds .gitignore: ignore .submodule-stamp UI: global.scss, index.html: move AnklangIcons to assets/ UI: Makefile.mk: copy anklangicons-*.tgz files to assets, remove download EXTERNAL: blobs4anklang: add tim-janik/blobs4anklang commit from 2023-09-21 21:04:16 git -C external/blobs4anklang/ checkout 7b0a4a68a1e9efbe68fc9761bef080995f4b4d6b UI: global.scss, index.html: move fork-awesome to assets/ UI: Makefile.mk: copy node_modules/fork-awesome to assets, remove download MISC: package.json.in: install fork-awesome@1.2.0 UI: Makefile.mk: use blobs4anklang/fonts/InterVariable.woff2, remove download EXTERNAL: blobs4anklang: add tim-janik/blobs4anklang commit from 2023-09-21 18:23:36 git submodule add --name blobs4anklang https://github.com/tim-janik/blobs4anklang.git external/blobs4anklang git -C external/blobs4anklang/ checkout 8da35f3914b9668bacc6755a8051a17051b07c3a Makefile.mk: skip `git submodule` in tarball builds Makefile.mk: dist: exclude unused external subdirs from tarball Makefile.mk: include submodule archives in dist tarball ASE: Makefile.mk: use blake3 submodule, remove download rule ASE: compress.cc: use external/blake3/c/blake3.h EXTERNAL: blake3: add BLAKE3-team/BLAKE3 version 1.3.1 git submodule add --name blake3 https://github.com/BLAKE3-team/BLAKE3.git external/blake3 git -C external/blake3/ checkout 1.3.1 ASE: Makefile.mk: use websocketpp submodule, remove download rule EXTERNAL: websocketpp: add zaphoyd/websocketpp version 0.8.2 git submodule add --name websocketpp https://github.com/zaphoyd/websocketpp.git external/websocketpp git -C external/websocketpp/ checkout 0.8.2 ASE: Makefile.mk: use clap submodule, remove download rule EXTERNAL: clap: add free-audio/clap version 1.1.1 git submodule add --name clap https://github.com/free-audio/clap.git external/clap git -C external/clap/ checkout 1.1.1 ASE: Makefile.mk: use rapidjson submodule, remove download rule EXTERNAL: rapidjson: add Tencent/rapidjson commit from 2022-05-24 10:03:13 git submodule add --name rapidjson https://github.com/Tencent/rapidjson.git external/rapidjson git checkout 232389d4f1012dddec4ef84861face2d2ba85709 Makefile.mk: update all submodules before building sources Makefile.mk: remove external/ subdir from ls-tree.lst MISC: mkcopyright.py: ignore dirs passed from `git ls-tree` on the CLI ASE: storage.cc: adjust old link to zlib-ng/minizip-ng/issues/433 ASE: minizip: build against external/minizip-ng/ ASE: Makefile.mk: use minizip-ng submodule, remove download rule EXTERNAL: minizip-ng: add zlib-ng/minizip-ng version 2.9.0 git submodule add --name minizip-ng https://github.com/zlib-ng/minizip-ng.git external/minizip-ng .gitignore: remove entries of files the build is not generating Merge branch 'thin-lto' - improve LTO builds # 2023-09-17 Tim Janik 0e21fc8 * thin-lto: ASE: main.cc: add missing formats to WAV output help MISC: config-uname.mk: when using LTO, enable Thin LTO with clang Thin LTO can result in smaller binaries and better performance. Merge branch 'cirun-docker-caching' - let cirun handle image build and caching # 2023-09-17 Tim Janik 00c0537 * cirun-docker-caching: GITHUB: workflows/testing.yml: use separate steps for docker image builds GITHUB: workflows/testing.yml: make use of cirun which handles docker builds * workflows/testing.yml: use misc/cirun -u 1000 to fix ownership * workflows/testing.yml: fix CIMAKE for Focal-Clang-Tidy * workflows/testing.yml: move nproc out of env variables MISC: cirun.sh: remove, use simpler cirun MISC: gh_delete_assets.sh: remove old helper MISC: Dockerfile.lunar: remove old file MISC: docker_*: remove old helpers MISC: cirun: add docker build, run, chown and caching MISC: cirun: add script to run commands in dockerized environments GITHUB: workflows/testing.yml: use buildx with selective caching GITHUB: workflows/testing.yml: configure and use buildx with selective caching GITHUB: workflows/testing.yml: remove unused actions/upload-artifact GITHUB: workflows/testing.yml: split asset builds into separate job MISC: cirun.sh: add --build, note that --check includes --build MISC: mkassets.sh: fix outdated globs Merge branch 'ci-fixes' # 2023-09-10 Tim Janik 9a7e628 * ci-fixes: MISC: mkassets.sh: remove unused file generations MISC: dbuild.sh: delete, now unused MISC: cirun.sh: add missing arg to help MISC: publish.sh: remove --draft MISC: publish.sh: determine version from tarball, show progress MISC: publish.sh: use assets/ directory contents if present GITHUB: workflows/testing.yml: use download-artifact@v3 to fetch release assets GITHUB: workflows/testing.yml: make sure to generate PDF docs early on GITHUB: workflows/testing.yml: provide GH_TOKEN for gh in publish.sh GITHUB: workflows/testing.yml: first build docs, then upload docs/ artifact GITHUB: workflows/testing.yml: fix Release-Upload deps, avoid skipped jobs GITHUB: workflows/testing.yml: allow skipped jobs in Ping-IRC GITHUB: workflows/testing.yml: use github expression for negating if GITHUB: workflows/testing.yml: escape exclamation mark for yaml GITHUB: workflows/testing.yml: skip Focal-Clang-Tidy for release tags GITHUB: workflows/testing.yml: uplaod releases via misc/publish.sh GITHUB: workflows/release.yml: remove, releases moved into testing.yml MISC: publish.sh: download artifacts and create a release MISC: cirun.sh: properly dockerize clang-tidy MISC: cirun.sh: support V=1 GITHUB: workflows/testing.yml: run clang-tidy on focal MISC: cirun.sh: use 1000:1000 to chown files for docker containers MISC: mkassets.sh: add missing auto to cp --reflink=auto GITHUB: workflows/testing.yml: fix env syntax for gha GITHUB: workflows/testing.yml: use cirun.sh for all CI jobs GITHUB: workflows/testing.yml: use cirun.sh on Focal for docs MISC: cirun.sh: support $CITAG to determine docker run image MISC: Dockerfile.lunar: install missing clang aliases MISC: cirun.sh: add script that runs all CI stages via docker MISC: Dockerfile.focal: install poxy==0.13.0 Versions poxy>=0.13.1 have problems with python-3.8 on focal. MISC: Dockerfile.focal: install pandoc-3.1.6.2 Using pandoc-3.1.7 seems to have issues with PDF generation, anchors in section titles cause an error and SVG images are not found. .gitignore: minor addition MISC: Dockerfile.focal: add clang-17 aliases MISC: Dockerfile.focal: provide xetex, poxy and clang++-17 GITHUB: workflows/release.yml: upload draft releases for CI tests GITHUB: workflows/release.yml: cache focal docker builds with buildx GITHUB: workflows/testing.yml: fix comment GITHUB: workflows/testing.yml: cache arch docker builds with buildx GITHUB: workflows/testing.yml: cache lunar and jammy docker builds with buildx Merge branch 'release-fixes' # 2023-09-08 Tim Janik d8465fd * release-fixes: MISC: mknews.sh: print latest NEWS.md version with `misc/mknews.sh --version` GITHUB: workflows/release.yml: set prerelease:false for annotated tags Fix actions/checkout@v3 and actions/checkout@v4 messing up the annotation of the currently fetched tag, even with fetch-depth:0, see: actions/checkout#290 MISC: mknews.sh: for release tags, copy news section from NEWS.md ">Merge branch 'properties-metadata' - support generic metadata on properties # 2024-02-08 Tim Janik 5f06a6d
* properties-metadata:
devices/saturation/saturation.cc: add "blurb=" prefix and mark translations
devices/liquidsfz/liquidsfz.cc: add "blurb=" prefix and mark translations
devices/freeverb/freeverb.cc: add "blurb=" prefix and mark translations
devices/blepsynth/blepsynth.cc: add "blurb=" prefix and mark translations
ase/api.hh: introduce metadata() for properties
* Add const this qualifier to parameter APIs.
* engine.cc: add "descr=" prefix to property metadata
* project.cc: add "descr=" prefix to property metadata
ase/strings: add kvpairs_fetch() and kvpairs_assign()
Merge branch 'MOUSE-WHEEL' - fix mouse wheel handling in modern Chrome and Firefox # 2024-02-08 Tim Janik 070d91a
* MOUSE-WHEEL:
ui/util.js: remove unused wheel2scrollbars
ui/b/pianoroll.js: reinstante hzoom and vzoom adjustments via Ctrl
ui/util.js: use Mouse.wheel_delta()
ui/b/knob.js: use Mouse.wheel_delta()
ui/b/pianoroll.js: properly scroll via deltaY from Mouse.wheel_delta()
ui/mouse.js: wheel_delta(): provide .x, .y, .z in pixels
ui/b/app.js: defer ZMove handling to mouse.js
ui/mouse.js: include ZMove notification handling
ui/index.html: start mouse.js early on
ui/mouse.js: add event_movement() and wheel_delta() to fix event coords
Cross browser normalization of movementX,movementY and deltaX,deltaY is a hot mess, see:
https://bugs.chromium.org/p/chromium/issues/detail?id=1092358
https://bugzilla.mozilla.org/show_bug.cgi?id=1392460
https://github.com/w3c/uievents/issues/181
https://github.com/w3c/pointerlock/issues/42
https://github.com/mdn/content/issues/11811
ui/index.html: disable modulepreload, it causes module errors in Firefox-122
Merge branch 'GRID-FILE-BROWSER' - use for
Stargate is an all-in-one DAW and plugin suite
Download the Stargate DAW sample pack
ChangelogOptionally, you can generate a sha256sum of the downloaded file and verify
that it matches this signature.
850238e60a7a1529cec3c7540358988a5dd9543d28563c12c3d46fc6af3ab161 stargate-24.02.2-1.x86_64.rpm
a9f726dca1f5b30a723a512b10b73bb9f135bc08ddb574792654c34ea63ecb63 stargate-24.02.2-amd64.deb
602cb10b7b071397c6165b934fb16a9f3e8ed54e48add1c81875ef9714c0e81f StargateDAW-24.02.2-linux-x86_64.AppImage
41dc847ece63a7bde0c6e37427fb6ec2cb8974412fbc86baa6ca0b46870091fb StargateDAW-24.02.2-win64-installer.exe
a7382bcc085977b0ae6f550694056d084cd72e6cd75ebf048168b55111b0432d StargateDAW-24.02.2-macos-intel-x86_64.dmg
e925b2b559bffe2c881af51e1fac68b4cbc8740720dcb536fdc3adc6823f40ae StargateDAW-24.02.2-macos-m1-arm64.dmg
Stargate is an all-in-one DAW and plugin suite
This is a testing release, please use the 24.02.1 release unless you are experiencing crashes when trying to create a project or show the hardware dialog.
Change LogStargate is an all-in-one DAW and plugin suite
This is a testing release, please use the 24.02.1 release unless you are experiencing crashes when trying to create a project or show the hardware dialog.
Change LogLilv is a C library (with Python bindings) for simple use of LV2 plugins in applications
Lilv 0.24.24
Stargate is an all-in-one DAW and plugin suite
Download the Stargate DAW sample pack
ChangelogFully-featured audio plugin host, with support for many audio drivers, plugin and sound bank formats.
DLL_PROCESS_ATTACHNeothesia is flashy Synthesia-like MIDI file visulisation software
More flatpak shenanigans
PulseAudio is a sound system for POSIX OSes, meaning that it is a proxy for your sound applications
Changes at a glance:
Fluida.lv2 is Fluidsynth as LV2 plugin
Fluida is a LV2 wrapper around Fluidsynth
allowing to load and control Fluidsynth as LV2 plugin.
This release of Fluida add support for Windows.
Attached been ready to use binaries for Linux Fluida.lv2-v0.9-linux-x86_64.tar.xz
and Windows Fluida.lv2-v0.9-win64.zip
To build from source, please download
Fluida.lv2-v0.9-src.tar.xz
as only this one include the needed submodule to build Fluida,
the zip generated by github wont build for that reason!!
Stargate is an all-in-one DAW and plugin suite
Download the Stargate DAW sample pack
ChangelogOptionally, you can generate a sha256sum of the downloaded file and verify
that it matches this signature.
79d6af65479be23a6957ff432296565723ecb362745009748a20b89e6759ab88 stargate-24.01.1-1.x86_64.rpm
ac391e48d719eb3e170760a3ea6f3e8d0dc6205b7cbe5f2cfc840b3efd197a23 stargate-24.01.1-amd64.deb
d2cc17812e7252080f3eb140806ec08e24bf755f0b3071fd906c4cd4f6c920b1 StargateDAW-24.01.1-linux-x86_64.AppImage
b33a58f11f10e1c3617d89ea951abc72d2e8bba1bd00f48e7fa82961a69ffddc StargateDAW-24.01.1-win64-installer.exe
43a98b055adb56f5a847ba787ba42d105361a5ad0ade92746428ed97f07fd66e StargateDAW-24.01.1-macos-m1-arm64.dmg
6462879f75ae684dee807b1f1383518f1aae7373a26ab1ffdb055de788c42592 StargateDAW-24.01.1-macos-intel-x86_64.dmg
Radium is a music editor with a tracker and sequencer and mixer interface.
Radium is a music editor with a tracker and sequencer and mixer interface.
Drumstick Metronome is a MIDI Metronome for Linux
Drumstick Metronome is a MIDI metronome with Qt user interface, based on the ALSA sequencer.
This program was previously and simply known as "kmetronome".
Changes in 1.4.0
Compilation minimum requirements for all platforms:
Copyright (C) 2005-2023, Pedro Lopez-Cabanillas
License: GPL v2 or later
More info
https://kmetronome.sourceforge.io/kmetronome.shtml
Downloads
https://sourceforge.net/projects/kmetronome/files/kmetronome/1.4.0/
Flatpak at FlatHub
https://flathub.org/apps/details/net.sourceforge.kmetronome
Yabridge is Yet Another way to use both 32-bit and 64-bit Windows VST2 and VST3 plugins on Linux
If you need any help setting up yabridge or if you just want to keep up to date with new releases and important Wine related announcements, then feel free to join the Discord.
yabridge_version function that hosts can query to know that a plugin is a yabridge plugin, and which version of yabridge is in use. Ardour 8.2 will use this to fix a regression in Ardour 7.3 that could cause some VST3 plugins to freeze.yabridge.toml files will no longer cause plugins to fail to load. If this does happen, you'll now get a desktop notification and the plugin will simply use the default settings instead.Helio Workstation is free and open-source music sequencer, designed to be used on all major platforms.
Update the example project template
SonoBus can stream high-quality, low-latency peer-to-peer audio between devices over the intern
SonoBus 1.7.2 Release Notes
From 1.7.1
From 1.7.0:
Added "Suggest New Group" feature. From the group popup (the button just below Connect showing group info) a new item was added that lets you pick who from the currently connected group you would like to join you in a new group, makes the request and connects you to the new group. If the others accept they will immediately connect to the new group with you. This feature can be used in the situation where you are in a public group, but would like to continue to play/talk with a subset of them in a new private (or public) group, with the least amount of effort.
Added Reset All Jitter Buffer button (near the bottom next
Bintracker is an advanced cross-platform 9/16-bit chiptune music editor
Bugfix release, this fixes a crash under Windows that was caused by using a wrong key name.
There's also support for a new CPU (i8080).
Musescore is an open source and free music notation software.
See dedicated project with changelog.
Added experimental builds for ARM Linux and portable Windows. These haven't been tested as thoroughly as the other builds. Please let us know if you encounter any issues.
ChucK is a programming language for real-time sound synthesis and music creation
chuck-1.5.2.0 release
rtpmidid allows you to share ALSA sequencer devices on the network using RTP MIDI
Version 23.12 Beta 2
Musescore is an open source and free music notation software.
fix pedal import/export for MusicXML
RaySession is a GNU/Linux session manager for audio programs, using a varient of NSM
0.14.3 / 2023-12-02
Bug fix release.
Bug Fixes:
Templates:
Please download RaySession-0.14.3-source.tar.gz, other packages are auto generated and incomplete.
Musescore is an open source and free music notation software.
See dedicated project with changelog.
Edit: Added experimental builds for ARM Linux and portable Windows. These haven't been tested as thoroughly as the other builds. Please let us know if you encounter any issues.
Stargate is an all-in-one DAW and plugin suite
Download the Stargate DAW sample pack
ChangelogOptionally, you can generate a sha256sum of the downloaded file and verify
that it
Anklang, a digital audio synthesis application for live creation and composition
9c9733c7e54d48dcba5732557154d78f4a2cc333
LilyPond is a music engraving program, devoted to producing high-quality sheet music
We are proud to announce the release of GNU LilyPond 2.24.3. 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.
This version contains a number of fixes since the release of the previous stable version in August 2023. We recommend all users to update. Scores converted to or written for 2.24.0 will continue to work with this release. A list of added features and other user-visible changes for 2.24 can be found at https://lilypond.org/doc/v2.24/Documentation/changes/. Among others, version 2.24.0 switched to Guile 2.2 and features a completely rewritten infrastructure for creating the official packages, finally allowing us to offer 64-bit binaries for macOS and Windows. These pre-built binaries are linked from https://lilypond.org/download.html and available from GitLab: https://gitlab.com/lilypond/lilypond/-/releases/v2.24.3
For distributions, LilyPond 2.24.3 most notably includes a fix to restore PDF conversion with the recent Ghostscript 10.02.1. Also Guile 3.0 is now officially supported, even though the recommended version will remain Guile 2.2 for the LilyPond 2.24 series.
Audacity is a free, easy-to-use, multi-track audio editor and recorder for Windows, macOS, GNU/Linux and other operating systems
This is a hotfix release. It fixes the following issues:
PipeWire is a server and user space API to deal with multimedia pipelines.
0.3.85
Functional programming language for signal processing and sound synthesis
faust-2.69.3.tar.gz file to get a complete source folder (in particular, with all the libraries)xattr -rd com.apple.quarantine file command to remove the com.apple.quarantine extended attribute. See the xattr man page for details on how to use that tool.This is the latest release which contains the JavaScript written Faust/WebAssembly glue code using the compiled libfaust-wasm.js, libfaust-wasm.wasm and libfaust-wasm.data files, also used in the faust2webaudio separated project. See documentation.
A new TypeScript/JavaScript based model will be used in the next versions.
faustbench-llvm by checking -ct 0 optionfaust2max6 link step for Max 8.6boxHGroup, boxVGroup, boxTGroup and C versions in libfaust API-1*exp like expressions in FIR by adding MinusInst-n*exp expressions0-x rewritten in -1*x in aterm::normalizedTree()faustgen~ link step for Max 8.6faust2jackconsole to allow effects option-I option to faust2caqtLLVMInstVisitor::visitIndexedAddressFunctional programming language for signal processing and sound synthesis
faust-2.68.1.tar.gz file to get a complete source folder (in particular, with all the libraries)xattr -rd com.apple.quarantine file command to remove the com.apple.quarantine extended attribute. See the xattr man page for details on how to use that tool.mesh2faust tool.-diff option for 'Automatic Differentiation in the Faust Compiler'sigDelay1 in signal API.printCBox/printCSignal API in box and signal API.getSigInterval/setSigInterval in signal API.faust2rnbo tool (see https://faustdoc.grame.fr/tutorials/rnbo/)faust2vhdlcode.-it option to inline rdtable/rwtable code in the main class.round primitive in the language.-vec mode in Rust backend.route primitive incorrect fix.checkNullBargraphLabel to better handle null labels in bargraph.-quad support in C++ backend.-inj option.ba.ifNc and ba.ifNcNo functionsFunctional programming language for signal processing and sound synthesis
faust-2.60.3.tar.gz file to get a complete source folder (in particular, with all the libraries)xattr -rd com.apple.quarantine file command to remove the com.apple.quarantine extended attribute. See the xattr man page for details on how to use that tool.-dlt threshold handling.-mcd values in best found vector option.dsp_optimizer to properly test -mcd values in scalar mode.faust2unity.parReduce.RMS_FBcompressor_peak_limiter_N_chan.tabulateNd.LilyPond is a music engraving program, devoted to producing high-quality sheet music
LilyPond 2.25.10
Audacity is a free, easy-to-use, multi-track audio editor and recorder for Windows, macOS, GNU/Linux and other operating systems
This is a hotfix release. It fixes the following bugs:
zam-plugins is a collection of LV2/LADSPA/VST/JACK audio plugins developed in-house at ZamAudio
CHOW Tape Model is a physical model of an analog tape machine
Release version 2.11.3. Updates include:
Anklang, a digital audio synthesis application for live creation and composition
Development version - may contain bugs or compatibility issues.
=0.13.1 have problems with python-3.8 on focal. MISC: Dockerfile.focal: install pandoc-3.1.6.2 Using pandoc-3.1.7 seems to have issues with PDF generation, anchors in section titles cause an error and SVG images are not found. .gitignore: minor addition MISC: Dockerfile.focal: add clang-17 aliases MISC: Dockerfile.focal: provide xetex, poxy and clang++-17 GITHUB: workflows/release.yml: upload draft releases for CI tests GITHUB: workflows/release.yml: cache focal docker builds with buildx GITHUB: workflows/testing.yml: fix comment GITHUB: workflows/testing.yml: cache arch docker builds with buildx GITHUB: workflows/testing.yml: cache lunar and jammy docker builds with buildx Merge branch 'cirun-docker-caching' - let cirun handle image build and caching # 2023-09-17 Tim Janik 00c0537 * cirun-docker-caching: GITHUB: workflows/testing.yml: use separate steps for docker image builds GITHUB: workflows/testing.yml: make use of cirun which handles docker builds * workflows/testing.yml: use misc/cirun -u 1000 to fix ownership * workflows/testing.yml: fix CIMAKE for Focal-Clang-Tidy * workflows/testing.yml: move nproc out of env variables MISC: cirun.sh: remove, use simpler cirun MISC: gh_delete_assets.sh: remove old helper MISC: Dockerfile.lunar: remove old file MISC: docker_*: remove old helpers MISC: cirun: add docker build, run, chown and caching MISC: cirun: add script to run commands in dockerized environments GITHUB: workflows/testing.yml: use buildx with selective caching GITHUB: workflows/testing.yml: configure and use buildx with selective caching GITHUB: workflows/testing.yml: remove unused actions/upload-artifact GITHUB: workflows/testing.yml: split asset builds into separate job MISC: cirun.sh: add --build, note that --check includes --build MISC: mkassets.sh: fix outdated globs Merge branch 'thin-lto' - improve LTO builds # 2023-09-17 Tim Janik 0e21fc8 * thin-lto: ASE: main.cc: add missing formats to WAV output help MISC: config-uname.mk: when using LTO, enable Thin LTO with clang Thin LTO can result in smaller binaries and better performance. Merge branch 'use-git-submodule' # 2023-09-21 Tim Janik 22cf347 * use-git-submodule: DOC: copyright.ini: apply MPL-2.0 to .gitmodules MISC: Makefile.mk: directly create and reference .dlcache/ for mkassets.sh MISC: Makefile.mk: mkassets: download builds tools before misc/mkassets.sh GITHUB: workflows/testing.yml: use `make mkassets` for release builds .gitignore: ignore .submodule-stamp UI: global.scss, index.html: move AnklangIcons to assets/ UI: Makefile.mk: copy anklangicons-*.tgz files to assets, remove download EXTERNAL: blobs4anklang: add tim-janik/blobs4anklang commit from 2023-09-21 21:04:16 git -C external/blobs4anklang/ checkout 7b0a4a68a1e9efbe68fc9761bef080995f4b4d6b UI: global.scss, index.html: move fork-awesome to assets/ UI: Makefile.mk: copy node_modules/fork-awesome to assets, remove download MISC: package.json.in: install fork-awesome@1.2.0 UI: Makefile.mk: use blobs4anklang/fonts/InterVariable.woff2, remove download EXTERNAL: blobs4anklang: add tim-janik/blobs4anklang commit from 2023-09-21 18:23:36 git submodule add --name blobs4anklang https://github.com/tim-janik/blobs4anklang.git external/blobs4anklang git -C external/blobs4anklang/ checkout 8da35f3914b9668bacc6755a8051a17051b07c3a Makefile.mk: skip `git submodule` in tarball builds Makefile.mk: dist: exclude unused external subdirs from tarball Makefile.mk: include submodule archives in dist tarball ASE: Makefile.mk: use blake3 submodule, remove download rule ASE: compress.cc: use external/blake3/c/blake3.h EXTERNAL: blake3: add BLAKE3-team/BLAKE3 version 1.3.1 git submodule add --name blake3 https://github.com/BLAKE3-team/BLAKE3.git external/blake3 git -C external/blake3/ checkout 1.3.1 ASE: Makefile.mk: use websocketpp submodule, remove download rule EXTERNAL: websocketpp: add zaphoyd/websocketpp version 0.8.2 git submodule add --name websocketpp https://github.com/zaphoyd/websocketpp.git external/websocketpp git -C external/websocketpp/ checkout 0.8.2 ASE: Makefile.mk: use clap submodule, remove download rule EXTERNAL: clap: add free-audio/clap version 1.1.1 git submodule add --name clap https://github.com/free-audio/clap.git external/clap git -C external/clap/ checkout 1.1.1 ASE: Makefile.mk: use rapidjson submodule, remove download rule EXTERNAL: rapidjson: add Tencent/rapidjson commit from 2022-05-24 10:03:13 git submodule add --name rapidjson https://github.com/Tencent/rapidjson.git external/rapidjson git checkout 232389d4f1012dddec4ef84861face2d2ba85709 Makefile.mk: update all submodules before building sources Makefile.mk: remove external/ subdir from ls-tree.lst MISC: mkcopyright.py: ignore dirs passed from `git ls-tree` on the CLI ASE: storage.cc: adjust old link to zlib-ng/minizip-ng/issues/433 ASE: minizip: build against external/minizip-ng/ ASE: Makefile.mk: use minizip-ng submodule, remove download rule EXTERNAL: minizip-ng: add zlib-ng/minizip-ng version 2.9.0 git submodule add --name minizip-ng https://github.com/zlib-ng/minizip-ng.git external/minizip-ng .gitignore: remove entries of files the build is not generating Merge branch 'bug-fixes' # 2023-09-23 Tim Janik e9015b9 * bug-fixes: GITHUB: workflows/testing.yml: upload dist tarball as isolated smaller artefact GITHUB: workflows/testing.yml: upgrade to actions/upload-artifact@v3.1.3 MISC: *.sh: use '#!/usr/bin/env bash' for bash scripts, fixes #17 Merge branch 'fix-warnings' # 2023-09-29 Tim Janik 9c1a062 * fix-warnings: ASE: track.cc: fix signedness ASE: utils.cc: cosmetic change ASE: project.cc: cosmetic change ASE: nativedevice.cc: fix signedness ASE: midilib.cc: fix signedness ASE: midievent.cc: cosmetic change ASE: internal.hh: cosmetic change ASE: inifile.cc: fix signedness ASE: engine.cc: cosmetic change ASE: compress.cc: fix write check signedness ASE: combo: fix insert position signedness ASE: clapplugin.cc: cosmetic change ASE: device.cc: remove unused code ASE: blob.cc: cosmetic fix MISC: Makefile.mk: clang-tidy: fix missing includes ASE: clapplugin.cc: cosmetic fix ASE: loop.cc: fix typo Merge branch 'main-rt-jobs' # 2023-09-30 Tim Janik a3f8f29 * main-rt-jobs: ASE: main.cc: fit one RtCallJob into a cache line This becomes possible with RtCall allocating just 4 pointer sizes. Since Loft allocates at cache line boundaries only, this essentially halves the size of an RtCallJob allocation. ASE: callback: shrink struct RtCall by a pointer ASE: loft: fix and test LoftPtr actually running ~T ASE: engine.hh: add comment about main_rt_jobs ASE: main.cc: turn debugging code into real job_queue_tests ASE: main: main_rt_jobs: add main_loop callback queue without invoking malloc() ASE: callback: RtCall: wrap simple callback pointers, without using malloc ASE: cxxaux.hh: add unalias_ptr<> helper ASE: callback.cc: add a small callback list test ASE: callback: add CallbackList - reentrant cb list with configurable arguments ASE: callback: move JobQueue implementation here Merge branch 'websocket-fix' # 2023-10-01 Tim Janik a5f9ca9 * websocket-fix: ASE: jsonapi.cc: cache socket nickname for use during errors ASE: websocket.cc: avoid exceptions in boost::asio socket.remote_endpoint() ASE: callback.hh: remove (sync) return value handling in JobQueue ASE: jsonapi.cc: wait for main loop callback completion via semaphore Merge branch 'audio-engine-job-cleanups' # 2023-10-01 Tim Janik 8067acc * audio-engine-job-cleanups: ASE: engine.hh: document engine lifetime ASE: engine: remove BorrowedPtr, simplify EngineJobImpl ASE: clapplugin.cc: use main_rt_jobs queue to delete events from audio_thread ASE: clapplugin.cc: rename ClapAudioProcessor ASE: project.cc: do not (auto) destroy all projects during atexit ASE: main.cc: shutdown: unset engine project and handle main loop callbacks ASE: engine: make transport a reference, move job queues into AudioEngine ASE: engine: rename AudioEngineThread Merge branch 'c++20' # 2023-10-10 Tim Janik 3a7c2d3 * c++20: MISC: mkAppImage.sh: fix $ORIGIN in AnklangSynthEngine-fma, add jackdriver.so MISC: Dockerfile.focal: install latest poxy (again) MISC: Dockerfile.focal: provide libstdc++-10-dev and a recent castxml MISC: config-uname.mk: optimize with clang -march=x86-64-v3 on modern platforms Clang chokes on '-march=haswell -mno-hle', so we use '-march=x86-64-v3' which is close to Haswell, the clang docs say: -march=x86-64: CMOV, CMPXCHG8B, FPU, FXSR, MMX, FXSR, SCE, SSE, SSE2 -march=x86-64-v2: (close to Nehalem) CMPXCHG16B, LAHF-SAHF, POPCNT, SSE3, SSE4.1, SSE4.2, SSSE3 -march=x86-64-v3: (close to Haswell) AVX, AVX2, BMI1, BMI2, F16C, FMA, LZCNT, MOVBE, XSAVE -march=x86-64-v4: AVX512F, AVX512BW, AVX512CD, AVX512DQ, AVX512VL MISC: mkassets.sh: adopt compiler config and fix make V=1 * Support make with V=1 during asset builds * Copy compiler config from config-defaults.mk for mkassets Makefile.mk: ignore leading spaces in config-defaults.mk ASE: properties.hh, processor.hh: remove unused (and conflicting) GroupId ASE: memory.cc: test CString operators ASE: memory.hh: CString: provide operator== and operator<=> to disambiguate JSONIPC: cxxjip.py: switch from C++17 to C++20 README.md, *.mk: switch from C++17 to C++20 ASE: memory.hh: always provide ctor for Block initialization Merge branch 'preferences' and live PCM driver updates # 2023-10-16 Tim Janik c7ece44 * preferences: UI: util.js: call prop->ident() ASE: shorten Parameter method ident() ASE: strings: add fallback to string_option_find(), remove string_option_get() ASE: testing.cc: use string_option_find_value() ASE: processor.cc: use string_option_find() ASE: cxxaux.cc: use ase_fatal_warnings ASE: main: remove feature toggles, use ase_fatal_warnings ASE: utils: export ase_fatal_warnings ASE: utils.cc: base debug key checks on string_option_find_value() ASE: strings: base option search on string_option_find_value() (without malloc) ASE: project: create_properties: use property_bag() and Prop ASE: clapdevice.cc: use parameter_guess_nick() ASE: gadget: add property_bag() and create_properties() UI: b/preferencesdialog.vue: edit everything with Shift+Ctrl+Alt+Click [Close] UI: b/preferencesdialog.vue: fetch + edit only selected PCM + MIDI preferences UI: b/objecteditor.js: fix blurb and descr bubbles UI: index.html, eslintrc.js: allow _("for translation") markup UI: util.js: rename extended Property descr() (abbreviate) UI: b/choiceinput.js: treat choice property as string UI: b/preferencesdialog.vue: special case driver.pcm.devid UI: b/objecteditor.js: rename internal function on xprop UI: b/contextmenu.js: support focus_uri ASE: engine.cc: add preferences for up to 4 MIDI controllers ASE: engine.cc: cache PCM driver live listing for ca half a second ASE: engine: change PCM driver when preferences change ASE: engine.cc: add audio.synth_latency Preference ASE: driver*: allow to query all PcmConfig values from drivers ASE: api.hh, server: remove all old preference handling ASE: api.hh, server: add Server.list_preferences() ASE: properties: add Preference classes and majorly simplify Property impls * Remove obsolete structures and aux constructors * Add getter/setter lister for enumeration types * Add PropertyBag - a helper to simplify property registrations * Add small PropertyImpl based on ParameterProperty * Add generic Preference class, useful for static initialization * Remove property nick guessing * Add global Preference setting list based on Parameter * Implement saving/loading preferences from anklangrc * Auto save preference changes after maybe half a second * Ensure that Preference names follow NCName syntax ASE: defs.hh: add PropertyImpl ASE: api.hh: rename Property.descr() (abbreviate) ASE: api.hh, server: provide access_preference() instead of access_prefs() ASE: api.hh: add constexpr GUIONLY, STORAGE, STANDARD to avoid C++ SIOF ASE: main.cc: save/load preferences unless --norc is given ASE: processor: use Parameter instead of the old ParamInfo ASE: parameter: add Parameter, ParameterProperty and parameter_guess_nick() * Implement Parameter{} with Param{} as initializer * Add constrain, normalize and text conversions * Implement simple ParameterProperty abstract base class * Support callback function to query parameter choices * In set_value: constrain Value according to parameter range * Use variants for flexible initilizers * Treat choice parameters as text * Match choices via normalized Damerau-Levenshtein distance * Add parameter_guess_nick() (former on property_guess_nick). ASE: value.hh: add Value::is_string() ASE: object.cc: allow NCName as event detail, to support preference identifiers ASE: defs.hh: declare Preference ASE: strings: add kvpairs_search() ASE: strings: define and use ASE_STRING_SET_ASCII_ALNUM and _LOWER_ALNUM ASE: unicode.cc: add missing docs ASE: unicode: add string_to_ncname() and string_is_ncname() ASE: levenshtein: compute (un)restricted Damerau-Levenshtein string distances ASE: defs.hh: add F32EPS and F32MAX ASE: memory.hh: declare CStringS ASE: loop: add exec_once() ASE: cxxaux.hh: add ASE_ASSERT_ALWAYS() MISC: package.json.in: reduce wait delay for rebuilds Merge branch 'package-updates' # 2023-10-24 Tim Janik 1c7da51 * package-updates: MISC: package.json.in: update babel, eslint, rollup, electron, postcss, lit Major version updates: - electron-27.0.2 - icon-gen-4.0.0 - lit-3.0.0 - rollup-4.1.4 - postcss-lab-function-6.0.7 - puppeteer-core-21.4.0 MISC: package.json.in: update to vue-3.3.6 Merge branch 'pnpm' # 2023-10-24 Tim Janik f1b37e4 * pnpm: MISC: config-checks.mk: remove unused NPM_INSTALL Makefile.mk: save XNPM to defaults and use it to install node_modules/ MISC: config-checks.mk: check for pnpn, provide as $(XNPM) UI: Makefile.mk: fetch Lit version directly from node_modules/lit/package.json X11TEST: ereplay.cjs: set timeout to 2500 to allow click durations of 2200ms Merge branch 'bun' # 2023-10-24 Tim Janik 63e4292 * bun: Makefile.mk: fix up sharp and electron installations with bun At the moment, we need to call the postinstall scripts manually, see: https://github.com/oven-sh/bun/pull/5077 MISC: config-checks.mk: support bun 1.0.0 as package manager Merge branch 'g++-bun-pnpm-ci' # 2023-10-27 Tim Janik 042fd7a * g++-bun-pnpm-ci: GITHUB: workflows/testing.yml: test Arch builds with g++ MISC: Dockerfile.arch: provide pnpm as JS package manager MISC: Dockerfile.arch: update build comments MISC: Dockerfile.focal: provide bun as JS package manager MISC: cirun: defer check for docker-buildx-plugin until we actually need it Makefile.mk: guard against `prefix := / / ` etc which will confuse `rm -rf` EXTERNAL: websocketpp: update zaphoyd/websocketpp to 2022-05-24 18:42:50 2022 -0500 git -C external/websocketpp/ checkout b9aeec6eaf3d5610503439b4fae3581d9aff08e8 This includes fixes applied after version 0.8.2, in particular it allows g++ to build the sources with C++20 enabled. See: https://github.com/zaphoyd/websocketpp/issues/991 Merge branch 'npm-updates' # 2023-11-01 Tim Janik 8d56822 * npm-updates: MISC: package.json.in: update various minor versions Makefile.mk: allow $NPM_INSTALL overrides via config-defaults.mk This allowes e.g.: NPM_INSTALL = pnpm install --prefer-offline Merge branch 'constrain-parameters' # 2023-11-01 Tim Janik fff51b9 * constrain-parameters: UI: b/databubble.js: fix assertion ASE: processor.cc: use parameter->dconstrain() ASE: parameter: add dconstrain() to convert to double and constrain ASE: processor.cc: use Parameter::construct_hints() ASE: parameter: export construct_hints(), always use "stepped" hint for bools UI: b/propinput.js: give toggles preference over choices ASE: processor.cc: remove unused choices from boolean param ASE: serialize.cc: call jsonvalue_to_string() directly ASE: jsonapi.cc: call jsonobject_to_string() directly JSONIPC: jsonipc.hh: always write null instead of NAN, ±Inf Remove JsonWriteFlags from the (template) API. JSONIPC: Makefile: fix include path to external/rapidjson/ EXTERNAL: rapidjson: update Tencent/rapidjson to 2023-09-28 11:36:59 +0200 git -C external/rapidjson checkout f9d53419e912910fd8fa57d5705fa41425428c35 Among other changes, this provides kWriteNanAndInfNullFlag. ASE: parameter: value_from_text(): yield integers for text inputs of choices Merge branch 'swesterfeld-blepsynth-sallen-key-filter', closes #10 # 2023-11-01 Tim Janik 441cbca * swesterfeld-blepsynth-sallen-key-filter: ASE: resampler2: remove, superseded by pandaresampler DEVICES: blepsynth/blepsynth.cc: reorder parameter groups DEVICES: blepsynth/Makefile.mk: include external/pandaresampler/lib EXTERNAL: pandaresampler: add swesterfeld/pandaresampler commit from 2023-02-14 10:18:45 git submodule add --name pandaresampler https://github.com/swesterfeld/pandaresampler.git external/pandaresampler git -C external/pandaresampler checkout 29097dc786b6d75a9deb12e70ec8960a78f7f8f5 DEVICES: blepsynth: update LadderVCF with drive/reso boost DEVICES: blepsynth: optimize filter code if freq/reso/drive are constant DEVICES: blepsynth: update LadderVCF, setup cutoff frequency range DEVICES: blepsynth: add latency compensation for LadderVCF DEVICES: blepsynth: update LadderVCF to version from dsp-research - oversample LadderVCF with factor 4, too DEVICES: blepsynth: compensate for SKFilter FIR oversampling delay DEVICES: blepsynth: reset filter state on filter type change DEVICES: blepsynth: reset SKFilter state if filter mode changes DEVICES: blepsynth: make cutoff parameter log-scaled DEVICES: blepsynth: rename vcf_ to ladder_filter_; minor cleanups DEVICES: blepsynth: implement midi velocity handling and add master gain DEVICES: blepsynth: smooth drive / reso input for Sallen-Key Filter DEVICES: blepsynth: add Sallen-Key Filter ">Merge branch 'release-fixes' # 2023-09-08 Tim Janik d8465fd
* release-fixes:
MISC: mknews.sh: print latest NEWS.md version with `misc/mknews.sh --version`
GITHUB: workflows/release.yml: set prerelease:false for annotated tags
Fix actions/checkout@v3 and actions/checkout@v4 messing up the annotation of
the currently fetched tag, even with fetch-depth:0, see: actions/checkout#290
MISC: mknews.sh: for release tags, copy news section from NEWS.md
Merge branch 'ci-fixes' # 2023-09-10 Tim Janik 9a7e628
* ci-fixes:
MISC: mkassets.sh: remove unused file generations
MISC: dbuild.sh: delete, now unused
MISC: cirun.sh: add missing arg to help
MISC: publish.sh: remove --draft
MISC: publish.sh: determine version from tarball, show progress
MISC: publish.sh: use assets/ directory contents if present
GITHUB: workflows/testing.yml: use download-artifact@v3 to fetch release assets
GITHUB: workflows/testing.yml: make sure to generate PDF docs early on
GITHUB: workflows/testing.yml: provide GH_TOKEN for gh in publish.sh
GITHUB: workflows/testing.yml: first build docs, then upload docs/ artifact
GITHUB: workflows/testing.yml: fix Release-Upload deps, avoid skipped jobs
GITHUB: workflows/testing.yml: allow skipped jobs in Ping-IRC
GITHUB: workflows/testing.yml: use github expression for negating if
GITHUB: workflows/testing.yml: escape exclamation mark for yaml
GITHUB: workflows/testing.yml: skip Focal-Clang-Tidy for release tags
GITHUB: workflows/testing.yml: uplaod releases via misc/publish.sh
GITHUB: workflows/release.yml: remove, releases moved into testing.yml
MISC: publish.sh
Stargate is an all-in-one DAW and plugin suite
Download the Stargate DAW sample pack
ChangelogOptionally, you can generate a sha256sum of the downloaded file and verify
that it matches this signature.
ed471ad52fc7dfe560edaf50ec9b0cbf9f4535b521297e8f6ef597ab131089f5 stargate-23.11.1-1.x86_64.rpm
579e9a09854856758f01a3484d43f8c7de9bd3bbea9cdba4b32095509d8d3774 stargate-23.11.1-amd64.deb
ab03bf4bb9c70961d6b4fc25404a535f408554dca4d51970473d268d36318df4 StargateDAW-23.11.1-linux-x86_64.AppImage
15d3daf44672009d335d774870936e5191c0f68d9257e9e9528639edb03d9bb4 StargateDAW-23.11.1-win64-installer.exe
06cbbfe86d2791c22729653d17dab1a1da3bbc9b7bfd641445d6045d2725385d StargateDAW-23.11.1-macos-intel-x86_64.dmg
d68a8bf3b762d2f42ca45b56972f4641ec3fb8a28f65f4ed86c47e81b23d94db StargateDAW-23.11.1-macos-m1-arm64.dmg
Gyroflow can stabilize your video using gyroscope and accelerometer motion data
C shortcut)noupdate file in the lens profile directoryPipeWire is a server and user space API to deal with multimedia pipelines.
0.3.84
RTcmix is an digital signal processing and sound synthesis language
Includes several years of work to expand the MinC parser, improve error handling, handle 64-bit mode for multiple platforms, add additional instruments and utility commands.
JackTrip is a Linux, Mac OSX, or Windows multi-machine audio system used for network music performance over the Internet.
Fasttracker II clone for Windows/macOS/Linux
ProTracker 2 clone for Windows/macOS/Linux
Some window event handling changes
ChucK is a programming language for real-time sound synthesis and music creation
chuck-1.5.1.8 release
Pure data is an open source visual programming language
version number to 0.54-1
Schism Tracker is a free and open-source reimplementation of Impulse Tracker
Summary of changes since the 20230906 release:
Anklang, a digital audio synthesis application for live creation and composition
Development version - may contain bugs or compatibility issues.
=0.13.1 have problems with python-3.8 on focal. MISC: Dockerfile.focal: install pandoc-3.1.6.2 Using pandoc-3.1.7 seems to have issues with PDF generation, anchors in section titles cause an error and SVG images are not found. .gitignore: minor addition MISC: Dockerfile.focal: add clang-17 aliases MISC: Dockerfile.focal: provide xetex, poxy and clang++-17 GITHUB: workflows/release.yml: upload draft releases for CI tests GITHUB: workflows/release.yml: cache focal docker builds with buildx GITHUB: workflows/testing.yml: fix comment GITHUB: workflows/testing.yml: cache arch docker builds with buildx GITHUB: workflows/testing.yml: cache lunar and jammy docker builds with buildx Merge branch 'cirun-docker-caching' - let cirun handle image build and caching # 2023-09-17 Tim Janik 00c0537 * cirun-docker-caching: GITHUB: workflows/testing.yml: use separate steps for docker image builds GITHUB: workflows/testing.yml: make use of cirun which handles docker builds * workflows/testing.yml: use misc/cirun -u 1000 to fix ownership * workflows/testing.yml: fix CIMAKE for Focal-Clang-Tidy * workflows/testing.yml: move nproc out of env variables MISC: cirun.sh: remove, use simpler cirun MISC: gh_delete_assets.sh: remove old helper MISC: Dockerfile.lunar: remove old file MISC: docker_*: remove old helpers MISC: cirun: add docker build, run, chown and caching MISC: cirun: add script to run commands in dockerized environments GITHUB: workflows/testing.yml: use buildx with selective caching GITHUB: workflows/testing.yml: configure and use buildx with selective caching GITHUB: workflows/testing.yml: remove unused actions/upload-artifact GITHUB: workflows/testing.yml: split asset builds into separate job MISC: cirun.sh: add --build, note that --check includes --build MISC: mkassets.sh: fix outdated globs Merge branch 'thin-lto' - improve LTO builds # 2023-09-17 Tim Janik 0e21fc8 * thin-lto: ASE: main.cc: add missing formats to WAV output help MISC: config-uname.mk: when using LTO, enable Thin LTO with clang Thin LTO can result in smaller binaries and better performance. Merge branch 'use-git-submodule' # 2023-09-21 Tim Janik 22cf347 * use-git-submodule: DOC: copyright.ini: apply MPL-2.0 to .gitmodules MISC: Makefile.mk: directly create and reference .dlcache/ for mkassets.sh MISC: Makefile.mk: mkassets: download builds tools before misc/mkassets.sh GITHUB: workflows/testing.yml: use `make mkassets` for release builds .gitignore: ignore .submodule-stamp UI: global.scss, index.html: move AnklangIcons to assets/ UI: Makefile.mk: copy anklangicons-*.tgz files to assets, remove download EXTERNAL: blobs4anklang: add tim-janik/blobs4anklang commit from 2023-09-21 21:04:16 git -C external/blobs4anklang/ checkout 7b0a4a68a1e9efbe68fc9761bef080995f4b4d6b UI: global.scss, index.html: move fork-awesome to assets/ UI: Makefile.mk: copy node_modules/fork-awesome to assets, remove download MISC: package.json.in: install fork-awesome@1.2.0 UI: Makefile.mk: use blobs4anklang/fonts/InterVariable.woff2, remove download EXTERNAL: blobs4anklang: add tim-janik/blobs4anklang commit from 2023-09-21 18:23:36 git submodule add --name blobs4anklang https://github.com/tim-janik/blobs4anklang.git external/blobs4anklang git -C external/blobs4anklang/ checkout 8da35f3914b9668bacc6755a8051a17051b07c3a Makefile.mk: skip `git submodule` in tarball builds Makefile.mk: dist: exclude unused external subdirs from tarball Makefile.mk: include submodule archives in dist tarball ASE: Makefile.mk: use blake3 submodule, remove download rule ASE: compress.cc: use external/blake3/c/blake3.h EXTERNAL: blake3: add BLAKE3-team/BLAKE3 version 1.3.1 git submodule add --name blake3 https://github.com/BLAKE3-team/BLAKE3.git external/blake3 git -C external/blake3/ checkout 1.3.1 ASE: Makefile.mk: use websocketpp submodule, remove download rule EXTERNAL: websocketpp: add zaphoyd/websocketpp version 0.8.2 git submodule add --name websocketpp https://github.com/zaphoyd/websocketpp.git external/websocketpp git -C external/websocketpp/ checkout 0.8.2 ASE: Makefile.mk: use clap submodule, remove download rule EXTERNAL: clap: add free-audio/clap version 1.1.1 git submodule add --name clap https://github.com/free-audio/clap.git external/clap git -C external/clap/ checkout 1.1.1 ASE: Makefile.mk: use rapidjson submodule, remove download rule EXTERNAL: rapidjson: add Tencent/rapidjson commit from 2022-05-24 10:03:13 git submodule add --name rapidjson https://github.com/Tencent/rapidjson.git external/rapidjson git checkout 232389d4f1012dddec4ef84861face2d2ba85709 Makefile.mk: update all submodules before building sources Makefile.mk: remove external/ subdir from ls-tree.lst MISC: mkcopyright.py: ignore dirs passed from `git ls-tree` on the CLI ASE: storage.cc: adjust old link to zlib-ng/minizip-ng/issues/433 ASE: minizip: build against external/minizip-ng/ ASE: Makefile.mk: use minizip-ng submodule, remove download rule EXTERNAL: minizip-ng: add zlib-ng/minizip-ng version 2.9.0 git submodule add --name minizip-ng https://github.com/zlib-ng/minizip-ng.git external/minizip-ng .gitignore: remove entries of files the build is not generating Merge branch 'bug-fixes' # 2023-09-23 Tim Janik e9015b9 * bug-fixes: GITHUB: workflows/testing.yml: upload dist tarball as isolated smaller artefact GITHUB: workflows/testing.yml: upgrade to actions/upload-artifact@v3.1.3 MISC: *.sh: use '#!/usr/bin/env bash' for bash scripts, fixes #17 Merge branch 'fix-warnings' # 2023-09-29 Tim Janik 9c1a062 * fix-warnings: ASE: track.cc: fix signedness ASE: utils.cc: cosmetic change ASE: project.cc: cosmetic change ASE: nativedevice.cc: fix signedness ASE: midilib.cc: fix signedness ASE: midievent.cc: cosmetic change ASE: internal.hh: cosmetic change ASE: inifile.cc: fix signedness ASE: engine.cc: cosmetic change ASE: compress.cc: fix write check signedness ASE: combo: fix insert position signedness ASE: clapplugin.cc: cosmetic change ASE: device.cc: remove unused code ASE: blob.cc: cosmetic fix MISC: Makefile.mk: clang-tidy: fix missing includes ASE: clapplugin.cc: cosmetic fix ASE: loop.cc: fix typo Merge branch 'main-rt-jobs' # 2023-09-30 Tim Janik a3f8f29 * main-rt-jobs: ASE: main.cc: fit one RtCallJob into a cache line This becomes possible with RtCall allocating just 4 pointer sizes. Since Loft allocates at cache line boundaries only, this essentially halves the size of an RtCallJob allocation. ASE: callback: shrink struct RtCall by a pointer ASE: loft: fix and test LoftPtr actually running ~T ASE: engine.hh: add comment about main_rt_jobs ASE: main.cc: turn debugging code into real job_queue_tests ASE: main: main_rt_jobs: add main_loop callback queue without invoking malloc() ASE: callback: RtCall: wrap simple callback pointers, without using malloc ASE: cxxaux.hh: add unalias_ptr<> helper ASE: callback.cc: add a small callback list test ASE: callback: add CallbackList - reentrant cb list with configurable arguments ASE: callback: move JobQueue implementation here Merge branch 'websocket-fix' # 2023-10-01 Tim Janik a5f9ca9 * websocket-fix: ASE: jsonapi.cc: cache socket nickname for use during errors ASE: websocket.cc: avoid exceptions in boost::asio socket.remote_endpoint() ASE: callback.hh: remove (sync) return value handling in JobQueue ASE: jsonapi.cc: wait for main loop callback completion via semaphore Merge branch 'audio-engine-job-cleanups' # 2023-10-01 Tim Janik 8067acc * audio-engine-job-cleanups: ASE: engine.hh: document engine lifetime ASE: engine: remove BorrowedPtr, simplify EngineJobImpl ASE: clapplugin.cc: use main_rt_jobs queue to delete events from audio_thread ASE: clapplugin.cc: rename ClapAudioProcessor ASE: project.cc: do not (auto) destroy all projects during atexit ASE: main.cc: shutdown: unset engine project and handle main loop callbacks ASE: engine: make transport a reference, move job queues into AudioEngine ASE: engine: rename AudioEngineThread Merge branch 'c++20' # 2023-10-10 Tim Janik 3a7c2d3 * c++20: MISC: mkAppImage.sh: fix $ORIGIN in AnklangSynthEngine-fma, add jackdriver.so MISC: Dockerfile.focal: install latest poxy (again) MISC: Dockerfile.focal: provide libstdc++-10-dev and a recent castxml MISC: config-uname.mk: optimize with clang -march=x86-64-v3 on modern platforms Clang chokes on '-march=haswell -mno-hle', so we use '-march=x86-64-v3' which is close to Haswell, the clang docs say: -march=x86-64: CMOV, CMPXCHG8B, FPU, FXSR, MMX, FXSR, SCE, SSE, SSE2 -march=x86-64-v2: (close to Nehalem) CMPXCHG16B, LAHF-SAHF, POPCNT, SSE3, SSE4.1, SSE4.2, SSSE3 -march=x86-64-v3: (close to Haswell) AVX, AVX2, BMI1, BMI2, F16C, FMA, LZCNT, MOVBE, XSAVE -march=x86-64-v4: AVX512F, AVX512BW, AVX512CD, AVX512DQ, AVX512VL MISC: mkassets.sh: adopt compiler config and fix make V=1 * Support make with V=1 during asset builds * Copy compiler config from config-defaults.mk for mkassets Makefile.mk: ignore leading spaces in config-defaults.mk ASE: properties.hh, processor.hh: remove unused (and conflicting) GroupId ASE: memory.cc: test CString operators ASE: memory.hh: CString: provide operator== and operator<=> to disambiguate JSONIPC: cxxjip.py: switch from C++17 to C++20 README.md, *.mk: switch from C++17 to C++20 ASE: memory.hh: always provide ctor for Block initialization Merge branch 'preferences' and live PCM driver updates # 2023-10-16 Tim Janik c7ece44 * preferences: UI: util.js: call prop->ident() ASE: shorten Parameter method ident() ASE: strings: add fallback to string_option_find(), remove string_option_get() ASE: testing.cc: use string_option_find_value() ASE: processor.cc: use string_option_find() ASE: cxxaux.cc: use ase_fatal_warnings ASE: main: remove feature toggles, use ase_fatal_warnings ASE: utils: export ase_fatal_warnings ASE: utils.cc: base debug key checks on string_option_find_value() ASE: strings: base option search on string_option_find_value() (without malloc) ASE: project: create_properties: use property_bag() and Prop ASE: clapdevice.cc: use parameter_guess_nick() ASE: gadget: add property_bag() and create_properties() UI: b/preferencesdialog.vue: edit everything with Shift+Ctrl+Alt+Click [Close] UI: b/preferencesdialog.vue: fetch + edit only selected PCM + MIDI preferences UI: b/objecteditor.js: fix blurb and descr bubbles UI: index.html, eslintrc.js: allow _("for translation") markup UI: util.js: rename extended Property descr() (abbreviate) UI: b/choiceinput.js: treat choice property as string UI: b/preferencesdialog.vue: special case driver.pcm.devid UI: b/objecteditor.js: rename internal function on xprop UI: b/contextmenu.js: support focus_uri ASE: engine.cc: add preferences for up to 4 MIDI controllers ASE: engine.cc: cache PCM driver live listing for ca half a second ASE: engine: change PCM driver when preferences change ASE: engine.cc: add audio.synth_latency Preference ASE: driver*: allow to query all PcmConfig values from drivers ASE: api.hh, server: remove all old preference handling ASE: api.hh, server: add Server.list_preferences() ASE: properties: add Preference classes and majorly simplify Property impls * Remove obsolete structures and aux constructors * Add getter/setter lister for enumeration types * Add PropertyBag - a helper to simplify property registrations * Add small PropertyImpl based on ParameterProperty * Add generic Preference class, useful for static initialization * Remove property nick guessing * Add global Preference setting list based on Parameter * Implement saving/loading preferences from anklangrc * Auto save preference changes after maybe half a second * Ensure that Preference names follow NCName syntax ASE: defs.hh: add PropertyImpl ASE: api.hh: rename Property.descr() (abbreviate) ASE: api.hh, server: provide access_preference() instead of access_prefs() ASE: api.hh: add constexpr GUIONLY, STORAGE, STANDARD to avoid C++ SIOF ASE: main.cc: save/load preferences unless --norc is given ASE: processor: use Parameter instead of the old ParamInfo ASE: parameter: add Parameter, ParameterProperty and parameter_guess_nick() * Implement Parameter{} with Param{} as initializer * Add constrain, normalize and text conversions * Implement simple ParameterProperty abstract base class * Support callback function to query parameter choices * In set_value: constrain Value according to parameter range * Use variants for flexible initilizers * Treat choice parameters as text * Match choices via normalized Damerau-Levenshtein distance * Add parameter_guess_nick() (former on property_guess_nick). ASE: value.hh: add Value::is_string() ASE: object.cc: allow NCName as event detail, to support preference identifiers ASE: defs.hh: declare Preference ASE: strings: add kvpairs_search() ASE: strings: define and use ASE_STRING_SET_ASCII_ALNUM and _LOWER_ALNUM ASE: unicode.cc: add missing docs ASE: unicode: add string_to_ncname() and string_is_ncname() ASE: levenshtein: compute (un)restricted Damerau-Levenshtein string distances ASE: defs.hh: add F32EPS and F32MAX ASE: memory.hh: declare CStringS ASE: loop: add exec_once() ASE: cxxaux.hh: add ASE_ASSERT_ALWAYS() MISC: package.json.in: reduce wait delay for rebuilds Merge branch 'package-updates' # 2023-10-24 Tim Janik 1c7da51 * package-updates: MISC: package.json.in: update babel, eslint, rollup, electron, postcss, lit Major version updates: - electron-27.0.2 - icon-gen-4.0.0 - lit-3.0.0 - rollup-4.1.4 - postcss-lab-function-6.0.7 - puppeteer-core-21.4.0 MISC: package.json.in: update to vue-3.3.6 Merge branch 'pnpm' # 2023-10-24 Tim Janik f1b37e4 * pnpm: MISC: config-checks.mk: remove unused NPM_INSTALL Makefile.mk: save XNPM to defaults and use it to install node_modules/ MISC: config-checks.mk: check for pnpn, provide as $(XNPM) UI: Makefile.mk: fetch Lit version directly from node_modules/lit/package.json X11TEST: ereplay.cjs: set timeout to 2500 to allow click durations of 2200ms Merge branch 'bun' # 2023-10-24 Tim Janik 63e4292 * bun: Makefile.mk: fix up sharp and electron installations with bun At the moment, we need to call the postinstall scripts manually, see: https://github.com/oven-sh/bun/pull/5077 MISC: config-checks.mk: support bun 1.0.0 as package manager Merge branch 'g++-bun-pnpm-ci' # 2023-10-27 Tim Janik 042fd7a * g++-bun-pnpm-ci: GITHUB: workflows/testing.yml: test Arch builds with g++ MISC: Dockerfile.arch: provide pnpm as JS package manager MISC: Dockerfile.arch: update build comments MISC: Dockerfile.focal: provide bun as JS package manager MISC: cirun: defer check for docker-buildx-plugin until we actually need it Makefile.mk: guard against `prefix := / / ` etc which will confuse `rm -rf` EXTERNAL: websocketpp: update zaphoyd/websocketpp to 2022-05-24 18:42:50 2022 -0500 git -C external/websocketpp/ checkout b9aeec6eaf3d5610503439b4fae3581d9aff08e8 This includes fixes applied after version 0.8.2, in particular it allows g++ to build the sources with C++20 enabled. See: https://github.com/zaphoyd/websocketpp/issues/991 ">Merge branch 'release-fixes' # 2023-09-08 Tim Janik d8465fd
* release-fixes:
MISC: mknews.sh: print latest NEWS.md version with `misc/mknews.sh --version`
GITHUB: workflows/release.yml: set prerelease:false for annotated tags
Fix actions/checkout@v3 and actions/checkout@v4 messing up the annotation of
the currently fetched tag, even with fetch-depth:0, see: actions/checkout#290
MISC: mknews.sh: for release tags, copy news section from NEWS.md
Merge branch 'ci-fixes' # 2023-09-10 Tim Janik 9a7e628
* ci-fixes:
MISC: mkassets.sh: remove unused file generations
MISC: dbuild.sh: delete, now unused
MISC: cirun.sh: add missing arg to help
MISC: publish.sh: remove --draft
MISC: publish.sh: determine version from tarball, show progress
MISC: publish.sh: use assets/ directory contents if present
GITHUB: workflows/testing.yml: use download-artifact@v3 to fetch release assets
GITHUB: workflows/testing.yml: make sure to generate PDF docs early on
GITHUB: workflows/testing.yml: provide GH_TOKEN for gh in publish.sh
GITHUB: workflows/testing.yml: first build docs, then upload docs/ artifact
GITHUB: workflows/testing.yml: fix Release-Upload deps, avoid skipped jobs
GITHUB: workflows/testing.yml: allow skipped jobs in Ping-IRC
GITHUB: workflows/testing.yml: use github expression for negating if
GITHUB: workflows/testing.yml: escape exclamation mark for yaml
GITHUB: workflows/testing.yml: skip Focal-Clang-Tidy for release tags
GITHUB: workflows/testing.yml: uplaod releases via misc/publish.sh
GITHUB: workflows/release.yml: remove, releases moved into testing.yml
MISC: publish.sh
CHOW Tape Model is a physical model of an analog tape machine
Release version 2.11.3. Updates include:
Seq66 is a grid style MIDI looper that, a Qt 5 reboot of seq24/sequencer64
rtpmidid allows you to share ALSA sequencer devices on the network using RTP MIDI
Version 23.10 Beta 1
Cardinal is a virtual Eurorack modular synthesizer platform
This is mostly a maintenance update, focused primarily on bug fixes
module changes/updates:
Pure data is an open source visual programming language
version to 0.51-1test1
Pure data is an open source visual programming language
Merge branch 'master' into develop
Audacity is a free, easy-to-use, multi-track audio editor and recorder for Windows, macOS, GNU/Linux and other operating systems
Audacity 3.4 adds a musical view, time stretching and a new exporter.
Lilv is a C library (with Python bindings) for simple use of LV2 plugins in applications
Lilv 0.24.22
RaySession is a GNU/Linux session manager for audio programs, using a varient of NSM
v0.14.2 Minor bug fix release, probably the last of the year.
BugFix:
Change:
Templates:
ChucK is a programming language for real-time sound synthesis and music creation
chuck-1.5.1.7 release
PipeWire is a server and user space API to deal with multimedia pipelines.
0.3.83
Ardour is a hard disk recorder and digital audio workstation application that runs on Linux, macOS, FreeBSD and Windows
This is Ardour 8.1
Anklang, a digital audio synthesis application for live creation and composition
Development version - may contain bugs or compatibility issues.
=0.13.1 have problems with python-3.8 on focal. MISC: Dockerfile.focal: install pandoc-3.1.6.2 Using pandoc-3.1.7 seems to have issues with PDF generation, anchors in section titles cause an error and SVG images are not found. .gitignore: minor addition MISC: Dockerfile.focal: add clang-17 aliases MISC: Dockerfile.focal: provide xetex, poxy and clang++-17 GITHUB: workflows/release.yml: upload draft releases for CI tests GITHUB: workflows/release.yml: cache focal docker builds with buildx GITHUB: workflows/testing.yml: fix comment GITHUB: workflows/testing.yml: cache arch docker builds with buildx GITHUB: workflows/testing.yml: cache lunar and jammy docker builds with buildx Merge branch 'cirun-docker-caching' - let cirun handle image build and caching # 2023-09-17 Tim Janik 00c0537 * cirun-docker-caching: GITHUB: workflows/testing.yml: use separate steps for docker image builds GITHUB: workflows/testing.yml: make use of cirun which handles docker builds * workflows/testing.yml: use misc/cirun -u 1000 to fix ownership * workflows/testing.yml: fix CIMAKE for Focal-Clang-Tidy * workflows/testing.yml: move nproc out of env variables MISC: cirun.sh: remove, use simpler cirun MISC: gh_delete_assets.sh: remove old helper MISC: Dockerfile.lunar: remove old file MISC: docker_*: remove old helpers MISC: cirun: add docker build, run, chown and caching MISC: cirun: add script to run commands in dockerized environments GITHUB: workflows/testing.yml: use buildx with selective caching GITHUB: workflows/testing.yml: configure and use buildx with selective caching GITHUB: workflows/testing.yml: remove unused actions/upload-artifact GITHUB: workflows/testing.yml: split asset builds into separate job MISC: cirun.sh: add --build, note that --check includes --build MISC: mkassets.sh: fix outdated globs Merge branch 'thin-lto' - improve LTO builds # 2023-09-17 Tim Janik 0e21fc8 * thin-lto: ASE: main.cc: add missing formats to WAV output help MISC: config-uname.mk: when using LTO, enable Thin LTO with clang Thin LTO can result in smaller binaries and better performance. Merge branch 'use-git-submodule' # 2023-09-21 Tim Janik 22cf347 * use-git-submodule: DOC: copyright.ini: apply MPL-2.0 to .gitmodules MISC: Makefile.mk: directly create and reference .dlcache/ for mkassets.sh MISC: Makefile.mk: mkassets: download builds tools before misc/mkassets.sh GITHUB: workflows/testing.yml: use `make mkassets` for release builds .gitignore: ignore .submodule-stamp UI: global.scss, index.html: move AnklangIcons to assets/ UI: Makefile.mk: copy anklangicons-*.tgz files to assets, remove download EXTERNAL: blobs4anklang: add tim-janik/blobs4anklang commit from 2023-09-21 21:04:16 git -C external/blobs4anklang/ checkout 7b0a4a68a1e9efbe68fc9761bef080995f4b4d6b UI: global.scss, index.html: move fork-awesome to assets/ UI: Makefile.mk: copy node_modules/fork-awesome to assets, remove download MISC: package.json.in: install fork-awesome@1.2.0 UI: Makefile.mk: use blobs4anklang/fonts/InterVariable.woff2, remove download EXTERNAL: blobs4anklang: add tim-janik/blobs4anklang commit from 2023-09-21 18:23:36 git submodule add --name blobs4anklang https://github.com/tim-janik/blobs4anklang.git external/blobs4anklang git -C external/blobs4anklang/ checkout 8da35f3914b9668bacc6755a8051a17051b07c3a Makefile.mk: skip `git submodule` in tarball builds Makefile.mk: dist: exclude unused external subdirs from tarball Makefile.mk: include submodule archives in dist tarball ASE: Makefile.mk: use blake3 submodule, remove download rule ASE: compress.cc: use external/blake3/c/blake3.h EXTERNAL: blake3: add BLAKE3-team/BLAKE3 version 1.3.1 git submodule add --name blake3 https://github.com/BLAKE3-team/BLAKE3.git external/blake3 git -C external/blake3/ checkout 1.3.1 ASE: Makefile.mk: use websocketpp submodule, remove download rule EXTERNAL: websocketpp: add zaphoyd/websocketpp version 0.8.2 git submodule add --name websocketpp https://github.com/zaphoyd/websocketpp.git external/websocketpp git -C external/websocketpp/ checkout 0.8.2 ASE: Makefile.mk: use clap submodule, remove download rule EXTERNAL: clap: add free-audio/clap version 1.1.1 git submodule add --name clap https://github.com/free-audio/clap.git external/clap git -C external/clap/ checkout 1.1.1 ASE: Makefile.mk: use rapidjson submodule, remove download rule EXTERNAL: rapidjson: add Tencent/rapidjson commit from 2022-05-24 10:03:13 git submodule add --name rapidjson https://github.com/Tencent/rapidjson.git external/rapidjson git checkout 232389d4f1012dddec4ef84861face2d2ba85709 Makefile.mk: update all submodules before building sources Makefile.mk: remove external/ subdir from ls-tree.lst MISC: mkcopyright.py: ignore dirs passed from `git ls-tree` on the CLI ASE: storage.cc: adjust old link to zlib-ng/minizip-ng/issues/433 ASE: minizip: build against external/minizip-ng/ ASE: Makefile.mk: use minizip-ng submodule, remove download rule EXTERNAL: minizip-ng: add zlib-ng/minizip-ng version 2.9.0 git submodule add --name minizip-ng https://github.com/zlib-ng/minizip-ng.git external/minizip-ng .gitignore: remove entries of files the build is not generating Merge branch 'bug-fixes' # 2023-09-23 Tim Janik e9015b9 * bug-fixes: GITHUB: workflows/testing.yml: upload dist tarball as isolated smaller artefact GITHUB: workflows/testing.yml: upgrade to actions/upload-artifact@v3.1.3 MISC: *.sh: use '#!/usr/bin/env bash' for bash scripts, fixes #17 Merge branch 'fix-warnings' # 2023-09-29 Tim Janik 9c1a062 * fix-warnings: ASE: track.cc: fix signedness ASE: utils.cc: cosmetic change ASE: project.cc: cosmetic change ASE: nativedevice.cc: fix signedness ASE: midilib.cc: fix signedness ASE: midievent.cc: cosmetic change ASE: internal.hh: cosmetic change ASE: inifile.cc: fix signedness ASE: engine.cc: cosmetic change ASE: compress.cc: fix write check signedness ASE: combo: fix insert position signedness ASE: clapplugin.cc: cosmetic change ASE: device.cc: remove unused code ASE: blob.cc: cosmetic fix MISC: Makefile.mk: clang-tidy: fix missing includes ASE: clapplugin.cc: cosmetic fix ASE: loop.cc: fix typo Merge branch 'main-rt-jobs' # 2023-09-30 Tim Janik a3f8f29 * main-rt-jobs: ASE: main.cc: fit one RtCallJob into a cache line This becomes possible with RtCall allocating just 4 pointer sizes. Since Loft allocates at cache line boundaries only, this essentially halves the size of an RtCallJob allocation. ASE: callback: shrink struct RtCall by a pointer ASE: loft: fix and test LoftPtr actually running ~T ASE: engine.hh: add comment about main_rt_jobs ASE: main.cc: turn debugging code into real job_queue_tests ASE: main: main_rt_jobs: add main_loop callback queue without invoking malloc() ASE: callback: RtCall: wrap simple callback pointers, without using malloc ASE: cxxaux.hh: add unalias_ptr<> helper ASE: callback.cc: add a small callback list test ASE: callback: add CallbackList - reentrant cb list with configurable arguments ASE: callback: move JobQueue implementation here Merge branch 'websocket-fix' # 2023-10-01 Tim Janik a5f9ca9 * websocket-fix: ASE: jsonapi.cc: cache socket nickname for use during errors ASE: websocket.cc: avoid exceptions in boost::asio socket.remote_endpoint() ASE: callback.hh: remove (sync) return value handling in JobQueue ASE: jsonapi.cc: wait for main loop callback completion via semaphore Merge branch 'audio-engine-job-cleanups' # 2023-10-01 Tim Janik 8067acc * audio-engine-job-cleanups: ASE: engine.hh: document engine lifetime ASE: engine: remove BorrowedPtr, simplify EngineJobImpl ASE: clapplugin.cc: use main_rt_jobs queue to delete events from audio_thread ASE: clapplugin.cc: rename ClapAudioProcessor ASE: project.cc: do not (auto) destroy all projects during atexit ASE: main.cc: shutdown: unset engine project and handle main loop callbacks ASE: engine: make transport a reference, move job queues into AudioEngine ASE: engine: rename AudioEngineThread Merge branch 'c++20' # 2023-10-10 Tim Janik 3a7c2d3 * c++20: MISC: mkAppImage.sh: fix $ORIGIN in AnklangSynthEngine-fma, add jackdriver.so MISC: Dockerfile.focal: install latest poxy (again) MISC: Dockerfile.focal: provide libstdc++-10-dev and a recent castxml MISC: config-uname.mk: optimize with clang -march=x86-64-v3 on modern platforms Clang chokes on '-march=haswell -mno-hle', so we use '-march=x86-64-v3' which is close to Haswell, the clang docs say: -march=x86-64: CMOV, CMPXCHG8B, FPU, FXSR, MMX, FXSR, SCE, SSE, SSE2 -march=x86-64-v2: (close to Nehalem) CMPXCHG16B, LAHF-SAHF, POPCNT, SSE3, SSE4.1, SSE4.2, SSSE3 -march=x86-64-v3: (close to Haswell) AVX, AVX2, BMI1, BMI2, F16C, FMA, LZCNT, MOVBE, XSAVE -march=x86-64-v4: AVX512F, AVX512BW, AVX512CD, AVX512DQ, AVX512VL MISC: mkassets.sh: adopt compiler config and fix make V=1 * Support make with V=1 during asset builds * Copy compiler config from config-defaults.mk for mkassets Makefile.mk: ignore leading spaces in config-defaults.mk ASE: properties.hh, processor.hh: remove unused (and conflicting) GroupId ASE: memory.cc: test CString operators ASE: memory.hh: CString: provide operator== and operator<=> to disambiguate JSONIPC: cxxjip.py: switch from C++17 to C++20 README.md, *.mk: switch from C++17 to C++20 ASE: memory.hh: always provide ctor for Block initialization Merge branch 'preferences' and live PCM driver updates # 2023-10-16 Tim Janik c7ece44 * preferences: UI: util.js: call prop->ident() ASE: shorten Parameter method ident() ASE: strings: add fallback to string_option_find(), remove string_option_get() ASE: testing.cc: use string_option_find_value() ASE: processor.cc: use string_option_find() ASE: cxxaux.cc: use ase_fatal_warnings ASE: main: remove feature toggles, use ase_fatal_warnings ASE: utils: export ase_fatal_warnings ASE: utils.cc: base debug key checks on string_option_find_value() ASE: strings: base option search on string_option_find_value() (without malloc) ASE: project: create_properties: use property_bag() and Prop ASE: clapdevice.cc: use parameter_guess_nick() ASE: gadget: add property_bag() and create_properties() UI: b/preferencesdialog.vue: edit everything with Shift+Ctrl+Alt+Click [Close] UI: b/preferencesdialog.vue: fetch + edit only selected PCM + MIDI preferences UI: b/objecteditor.js: fix blurb and descr bubbles UI: index.html, eslintrc.js: allow _("for translation") markup UI: util.js: rename extended Property descr() (abbreviate) UI: b/choiceinput.js: treat choice property as string UI: b/preferencesdialog.vue: special case driver.pcm.devid UI: b/objecteditor.js: rename internal function on xprop UI: b/contextmenu.js: support focus_uri ASE: engine.cc: add preferences for up to 4 MIDI controllers ASE: engine.cc: cache PCM driver live listing for ca half a second ASE: engine: change PCM driver when preferences change ASE: engine.cc: add audio.synth_latency Preference ASE: driver*: allow to query all PcmConfig values from drivers ASE: api.hh, server: remove all old preference handling ASE: api.hh, server: add Server.list_preferences() ASE: properties: add Preference classes and majorly simplify Property impls * Remove obsolete structures and aux constructors * Add getter/setter lister for enumeration types * Add PropertyBag - a helper to simplify property registrations * Add small PropertyImpl based on ParameterProperty * Add generic Preference class, useful for static initialization * Remove property nick guessing * Add global Preference setting list based on Parameter * Implement saving/loading preferences from anklangrc * Auto save preference changes after maybe half a second * Ensure that Preference names follow NCName syntax ASE: defs.hh: add PropertyImpl ASE: api.hh: rename Property.descr() (abbreviate) ASE: api.hh, server: provide access_preference() instead of access_prefs() ASE: api.hh: add constexpr GUIONLY, STORAGE, STANDARD to avoid C++ SIOF ASE: main.cc: save/load preferences unless --norc is given ASE: processor: use Parameter instead of the old ParamInfo ASE: parameter: add Parameter, ParameterProperty and parameter_guess_nick() * Implement Parameter{} with Param{} as initializer * Add constrain, normalize and text conversions * Implement simple ParameterProperty abstract base class * Support callback function to query parameter choices * In set_value: constrain Value according to parameter range * Use variants for flexible initilizers * Treat choice parameters as text * Match choices via normalized Damerau-Levenshtein distance * Add parameter_guess_nick() (former on property_guess_nick). ASE: value.hh: add Value::is_string() ASE: object.cc: allow NCName as event detail, to support preference identifiers ASE: defs.hh: declare Preference ASE: strings: add kvpairs_search() ASE: strings: define and use ASE_STRING_SET_ASCII_ALNUM and _LOWER_ALNUM ASE: unicode.cc: add missing docs ASE: unicode: add string_to_ncname() and string_is_ncname() ASE: levenshtein: compute (un)restricted Damerau-Levenshtein string distances ASE: defs.hh: add F32EPS and F32MAX ASE: memory.hh: declare CStringS ASE: loop: add exec_once() ASE: cxxaux.hh: add ASE_ASSERT_ALWAYS() MISC: package.json.in: reduce wait delay for rebuilds ">Merge branch 'release-fixes' # 2023-09-08 Tim Janik d8465fd
* release-fixes:
MISC: mknews.sh: print latest NEWS.md version with `misc/mknews.sh --version`
GITHUB: workflows/release.yml: set prerelease:false for annotated tags
Fix actions/checkout@v3 and actions/checkout@v4 messing up the annotation of
the currently fetched tag, even with fetch-depth:0, see: actions/checkout#290
MISC: mknews.sh: for release tags, copy news section from NEWS.md
Merge branch 'ci-fixes' # 2023-09-10 Tim Janik 9a7e628
* ci-fixes:
MISC: mkassets.sh: remove unused file generations
MISC: dbuild.sh: delete, now unused
MISC: cirun.sh: add missing arg to help
MISC: publish.sh: remove --draft
MISC: publish.sh: determine version from tarball, show progress
MISC: publish.sh: use assets/ directory contents if present
GITHUB: workflows/testing.yml: use download-artifact@v3 to fetch release assets
GITHUB: workflows/testing.yml: make sure to generate PDF docs early on
GITHUB: workflows/testing.yml: provide GH_TOKEN for gh in publish.sh
GITHUB: workflows/testing.yml: first build docs, then upload docs/ artifact
GITHUB: workflows/testing.yml: fix Release-Upload deps, avoid skipped jobs
GITHUB: workflows/testing.yml: allow skipped jobs in Ping-IRC
GITHUB: workflows/testing.yml: use github expression for negating if
GITHUB: workflows/testing.yml: escape exclamation mark for yaml
GITHUB: workflows/testing.yml: skip Focal-Clang-Tidy for release tags
GITHUB: workflows/testing.yml: uplaod releases via misc/publish.sh
GITHUB: workflows/release.yml: remove, releases moved into testing.yml
MISC: publish.sh
Giada is an open source, minimalistic and hardcore music production tool. Designed for DJs, live performers and electronic music
1st bugfix release for version 0.25 Echidna.
Changelog:
PipeWire is a server and user space API to deal with multimedia pipelines.
0.3.82
MusicBrainz Picard is a cross-platform application written in Python and is the MusicBrainz music tagger
ChucK is a programming language for real-time sound synthesis and music creation
chuck-1.5.1.6 release
Anklang, a digital audio synthesis application for live creation and composition
Development version - may contain bugs or compatibility issues.
=0.13.1 have problems with python-3.8 on focal. MISC: Dockerfile.focal: install pandoc-3.1.6.2 Using pandoc-3.1.7 seems to have issues with PDF generation, anchors in section titles cause an error and SVG images are not found. .gitignore: minor addition MISC: Dockerfile.focal: add clang-17 aliases MISC: Dockerfile.focal: provide xetex, poxy and clang++-17 GITHUB: workflows/release.yml: upload draft releases for CI tests GITHUB: workflows/release.yml: cache focal docker builds with buildx GITHUB: workflows/testing.yml: fix comment GITHUB: workflows/testing.yml: cache arch docker builds with buildx GITHUB: workflows/testing.yml: cache lunar and jammy docker builds with buildx Merge branch 'cirun-docker-caching' - let cirun handle image build and caching # 2023-09-17 Tim Janik 00c0537 * cirun-docker-caching: GITHUB: workflows/testing.yml: use separate steps for docker image builds GITHUB: workflows/testing.yml: make use of cirun which handles docker builds * workflows/testing.yml: use misc/cirun -u 1000 to fix ownership * workflows/testing.yml: fix CIMAKE for Focal-Clang-Tidy * workflows/testing.yml: move nproc out of env variables MISC: cirun.sh: remove, use simpler cirun MISC: gh_delete_assets.sh: remove old helper MISC: Dockerfile.lunar: remove old file MISC: docker_*: remove old helpers MISC: cirun: add docker build, run, chown and caching MISC: cirun: add script to run commands in dockerized environments GITHUB: workflows/testing.yml: use buildx with selective caching GITHUB: workflows/testing.yml: configure and use buildx with selective caching GITHUB: workflows/testing.yml: remove unused actions/upload-artifact GITHUB: workflows/testing.yml: split asset builds into separate job MISC: cirun.sh: add --build, note that --check includes --build MISC: mkassets.sh: fix outdated globs Merge branch 'thin-lto' - improve LTO builds # 2023-09-17 Tim Janik 0e21fc8 * thin-lto: ASE: main.cc: add missing formats to WAV output help MISC: config-uname.mk: when using LTO, enable Thin LTO with clang Thin LTO can result in smaller binaries and better performance. Merge branch 'use-git-submodule' # 2023-09-21 Tim Janik 22cf347 * use-git-submodule: DOC: copyright.ini: apply MPL-2.0 to .gitmodules MISC: Makefile.mk: directly create and reference .dlcache/ for mkassets.sh MISC: Makefile.mk: mkassets: download builds tools before misc/mkassets.sh GITHUB: workflows/testing.yml: use `make mkassets` for release builds .gitignore: ignore .submodule-stamp UI: global.scss, index.html: move AnklangIcons to assets/ UI: Makefile.mk: copy anklangicons-*.tgz files to assets, remove download EXTERNAL: blobs4anklang: add tim-janik/blobs4anklang commit from 2023-09-21 21:04:16 git -C external/blobs4anklang/ checkout 7b0a4a68a1e9efbe68fc9761bef080995f4b4d6b UI: global.scss, index.html: move fork-awesome to assets/ UI: Makefile.mk: copy node_modules/fork-awesome to assets, remove download MISC: package.json.in: install fork-awesome@1.2.0 UI: Makefile.mk: use blobs4anklang/fonts/InterVariable.woff2, remove download EXTERNAL: blobs4anklang: add tim-janik/blobs4anklang commit from 2023-09-21 18:23:36 git submodule add --name blobs4anklang https://github.com/tim-janik/blobs4anklang.git external/blobs4anklang git -C external/blobs4anklang/ checkout 8da35f3914b9668bacc6755a8051a17051b07c3a Makefile.mk: skip `git submodule` in tarball builds Makefile.mk: dist: exclude unused external subdirs from tarball Makefile.mk: include submodule archives in dist tarball ASE: Makefile.mk: use blake3 submodule, remove download rule ASE: compress.cc: use external/blake3/c/blake3.h EXTERNAL: blake3: add BLAKE3-team/BLAKE3 version 1.3.1 git submodule add --name blake3 https://github.com/BLAKE3-team/BLAKE3.git external/blake3 git -C external/blake3/ checkout 1.3.1 ASE: Makefile.mk: use websocketpp submodule, remove download rule EXTERNAL: websocketpp: add zaphoyd/websocketpp version 0.8.2 git submodule add --name websocketpp https://github.com/zaphoyd/websocketpp.git external/websocketpp git -C external/websocketpp/ checkout 0.8.2 ASE: Makefile.mk: use clap submodule, remove download rule EXTERNAL: clap: add free-audio/clap version 1.1.1 git submodule add --name clap https://github.com/free-audio/clap.git external/clap git -C external/clap/ checkout 1.1.1 ASE: Makefile.mk: use rapidjson submodule, remove download rule EXTERNAL: rapidjson: add Tencent/rapidjson commit from 2022-05-24 10:03:13 git submodule add --name rapidjson https://github.com/Tencent/rapidjson.git external/rapidjson git checkout 232389d4f1012dddec4ef84861face2d2ba85709 Makefile.mk: update all submodules before building sources Makefile.mk: remove external/ subdir from ls-tree.lst MISC: mkcopyright.py: ignore dirs passed from `git ls-tree` on the CLI ASE: storage.cc: adjust old link to zlib-ng/minizip-ng/issues/433 ASE: minizip: build against external/minizip-ng/ ASE: Makefile.mk: use minizip-ng submodule, remove download rule EXTERNAL: minizip-ng: add zlib-ng/minizip-ng version 2.9.0 git submodule add --name minizip-ng https://github.com/zlib-ng/minizip-ng.git external/minizip-ng .gitignore: remove entries of files the build is not generating Merge branch 'bug-fixes' # 2023-09-23 Tim Janik e9015b9 * bug-fixes: GITHUB: workflows/testing.yml: upload dist tarball as isolated smaller artefact GITHUB: workflows/testing.yml: upgrade to actions/upload-artifact@v3.1.3 MISC: *.sh: use '#!/usr/bin/env bash' for bash scripts, fixes #17 Merge branch 'fix-warnings' # 2023-09-29 Tim Janik 9c1a062 * fix-warnings: ASE: track.cc: fix signedness ASE: utils.cc: cosmetic change ASE: project.cc: cosmetic change ASE: nativedevice.cc: fix signedness ASE: midilib.cc: fix signedness ASE: midievent.cc: cosmetic change ASE: internal.hh: cosmetic change ASE: inifile.cc: fix signedness ASE: engine.cc: cosmetic change ASE: compress.cc: fix write check signedness ASE: combo: fix insert position signedness ASE: clapplugin.cc: cosmetic change ASE: device.cc: remove unused code ASE: blob.cc: cosmetic fix MISC: Makefile.mk: clang-tidy: fix missing includes ASE: clapplugin.cc: cosmetic fix ASE: loop.cc: fix typo Merge branch 'main-rt-jobs' # 2023-09-30 Tim Janik a3f8f29 * main-rt-jobs: ASE: main.cc: fit one RtCallJob into a cache line This becomes possible with RtCall allocating just 4 pointer sizes. Since Loft allocates at cache line boundaries only, this essentially halves the size of an RtCallJob allocation. ASE: callback: shrink struct RtCall by a pointer ASE: loft: fix and test LoftPtr actually running ~T ASE: engine.hh: add comment about main_rt_jobs ASE: main.cc: turn debugging code into real job_queue_tests ASE: main: main_rt_jobs: add main_loop callback queue without invoking malloc() ASE: callback: RtCall: wrap simple callback pointers, without using malloc ASE: cxxaux.hh: add unalias_ptr<> helper ASE: callback.cc: add a small callback list test ASE: callback: add CallbackList - reentrant cb list with configurable arguments ASE: callback: move JobQueue implementation here Merge branch 'websocket-fix' # 2023-10-01 Tim Janik a5f9ca9 * websocket-fix: ASE: jsonapi.cc: cache socket nickname for use during errors ASE: websocket.cc: avoid exceptions in boost::asio socket.remote_endpoint() ASE: callback.hh: remove (sync) return value handling in JobQueue ASE: jsonapi.cc: wait for main loop callback completion via semaphore Merge branch 'audio-engine-job-cleanups' # 2023-10-01 Tim Janik 8067acc * audio-engine-job-cleanups: ASE: engine.hh: document engine lifetime ASE: engine: remove BorrowedPtr, simplify EngineJobImpl ASE: clapplugin.cc: use main_rt_jobs queue to delete events from audio_thread ASE: clapplugin.cc: rename ClapAudioProcessor ASE: project.cc: do not (auto) destroy all projects during atexit ASE: main.cc: shutdown: unset engine project and handle main loop callbacks ASE: engine: make transport a reference, move job queues into AudioEngine ASE: engine: rename AudioEngineThread Merge branch 'c++20' # 2023-10-10 Tim Janik 3a7c2d3 * c++20: MISC: mkAppImage.sh: fix $ORIGIN in AnklangSynthEngine-fma, add jackdriver.so MISC: Dockerfile.focal: install latest poxy (again) MISC: Dockerfile.focal: provide libstdc++-10-dev and a recent castxml MISC: config-uname.mk: optimize with clang -march=x86-64-v3 on modern platforms Clang chokes on '-march=haswell -mno-hle', so we use '-march=x86-64-v3' which is close to Haswell, the clang docs say: -march=x86-64: CMOV, CMPXCHG8B, FPU, FXSR, MMX, FXSR, SCE, SSE, SSE2 -march=x86-64-v2: (close to Nehalem) CMPXCHG16B, LAHF-SAHF, POPCNT, SSE3, SSE4.1, SSE4.2, SSSE3 -march=x86-64-v3: (close to Haswell) AVX, AVX2, BMI1, BMI2, F16C, FMA, LZCNT, MOVBE, XSAVE -march=x86-64-v4: AVX512F, AVX512BW, AVX512CD, AVX512DQ, AVX512VL MISC: mkassets.sh: adopt compiler config and fix make V=1 * Support make with V=1 during asset builds * Copy compiler config from config-defaults.mk for mkassets Makefile.mk: ignore leading spaces in config-defaults.mk ASE: properties.hh, processor.hh: remove unused (and conflicting) GroupId ASE: memory.cc: test CString operators ASE: memory.hh: CString: provide operator== and operator<=> to disambiguate JSONIPC: cxxjip.py: switch from C++17 to C++20 README.md, *.mk: switch from C++17 to C++20 ASE: memory.hh: always provide ctor for Block initialization ">Merge branch 'release-fixes' # 2023-09-08 Tim Janik d8465fd
* release-fixes:
MISC: mknews.sh: print latest NEWS.md version with `misc/mknews.sh --version`
GITHUB: workflows/release.yml: set prerelease:false for annotated tags
Fix actions/checkout@v3 and actions/checkout@v4 messing up the annotation of
the currently fetched tag, even with fetch-depth:0, see: actions/checkout#290
MISC: mknews.sh: for release tags, copy news section from NEWS.md
Merge branch 'ci-fixes' # 2023-09-10 Tim Janik 9a7e628
* ci-fixes:
MISC: mkassets.sh: remove unused file generations
MISC: dbuild.sh: delete, now unused
MISC: cirun.sh: add missing arg to help
MISC: publish.sh: remove --draft
MISC: publish.sh: determine version from tarball, show progress
MISC: publish.sh: use assets/ directory contents if present
GITHUB: workflows/testing.yml: use download-artifact@v3 to fetch release assets
GITHUB: workflows/testing.yml: make sure to generate PDF docs early on
GITHUB: workflows/testing.yml: provide GH_TOKEN for gh in publish.sh
GITHUB: workflows/testing.yml: first build docs, then upload docs/ artifact
GITHUB: workflows/testing.yml: fix Release-Upload deps, avoid skipped jobs
GITHUB: workflows/testing.yml: allow skipped jobs in Ping-IRC
GITHUB: workflows/testing.yml: use github expression for negating if
GITHUB: workflows/testing.yml: escape exclamation mark for yaml
GITHUB: workflows/testing.yml: skip Focal-Clang-Tidy for release tags
GITHUB: workflows/testing.yml: uplaod releases via misc/publish.sh
GITHUB: workflows/release.yml: remove, releases moved into testing.yml
MISC: publish.sh
ChucK is a programming language for real-time sound synthesis and music creation
chuck-1.5.1.5 release
Ardour is a hard disk recorder and digital audio workstation application that runs on Linux, macOS, FreeBSD and Windows
This is Ardour 8.0
LilyPond is a music engraving program, devoted to producing high-quality sheet music
LilyPond 2.25.9
Fasttracker II clone for Windows/macOS/Linux
Update ft2_header.h
PipeWire is a server and user space API to deal with multimedia pipelines.
0.3.81
Fasttracker II clone for Windows/macOS/Linux
Ardour is a hard disk recorder and digital audio workstation application that runs on Linux, macOS, FreeBSD and Windows
this is Ardour 8.0-rc3
Fasttracker II clone for Windows/macOS/Linux
Anklang, a digital audio synthesis application for live creation and composition
Development version - may contain bugs or compatibility issues.
=0.13.1 have problems with python-3.8 on focal. MISC: Dockerfile.focal: install pandoc-3.1.6.2 Using pandoc-3.1.7 seems to have issues with PDF generation, anchors in section titles cause an error and SVG images are not found. .gitignore: minor addition MISC: Dockerfile.focal: add clang-17 aliases MISC: Dockerfile.focal: provide xetex, poxy and clang++-17 GITHUB: workflows/release.yml: upload draft releases for CI tests GITHUB: workflows/release.yml: cache focal docker builds with buildx GITHUB: workflows/testing.yml: fix comment GITHUB: workflows/testing.yml: cache arch docker builds with buildx GITHUB: workflows/testing.yml: cache lunar and jammy docker builds with buildx Merge branch 'cirun-docker-caching' - let cirun handle image build and caching # 2023-09-17 Tim Janik 00c0537 * cirun-docker-caching: GITHUB: workflows/testing.yml: use separate steps for docker image builds GITHUB: workflows/testing.yml: make use of cirun which handles docker builds * workflows/testing.yml: use misc/cirun -u 1000 to fix ownership * workflows/testing.yml: fix CIMAKE for Focal-Clang-Tidy * workflows/testing.yml: move nproc out of env variables MISC: cirun.sh: remove, use simpler cirun MISC: gh_delete_assets.sh: remove old helper MISC: Dockerfile.lunar: remove old file MISC: docker_*: remove old helpers MISC: cirun: add docker build, run, chown and caching MISC: cirun: add script to run commands in dockerized environments GITHUB: workflows/testing.yml: use buildx with selective caching GITHUB: workflows/testing.yml: configure and use buildx with selective caching GITHUB: workflows/testing.yml: remove unused actions/upload-artifact GITHUB: workflows/testing.yml: split asset builds into separate job MISC: cirun.sh: add --build, note that --check includes --build MISC: mkassets.sh: fix outdated globs Merge branch 'thin-lto' - improve LTO builds # 2023-09-17 Tim Janik 0e21fc8 * thin-lto: ASE: main.cc: add missing formats to WAV output help MISC: config-uname.mk: when using LTO, enable Thin LTO with clang Thin LTO can result in smaller binaries and better performance. Merge branch 'use-git-submodule' # 2023-09-21 Tim Janik 22cf347 * use-git-submodule: DOC: copyright.ini: apply MPL-2.0 to .gitmodules MISC: Makefile.mk: directly create and reference .dlcache/ for mkassets.sh MISC: Makefile.mk: mkassets: download builds tools before misc/mkassets.sh GITHUB: workflows/testing.yml: use `make mkassets` for release builds .gitignore: ignore .submodule-stamp UI: global.scss, index.html: move AnklangIcons to assets/ UI: Makefile.mk: copy anklangicons-*.tgz files to assets, remove download EXTERNAL: blobs4anklang: add tim-janik/blobs4anklang commit from 2023-09-21 21:04:16 git -C external/blobs4anklang/ checkout 7b0a4a68a1e9efbe68fc9761bef080995f4b4d6b UI: global.scss, index.html: move fork-awesome to assets/ UI: Makefile.mk: copy node_modules/fork-awesome to assets, remove download MISC: package.json.in: install fork-awesome@1.2.0 UI: Makefile.mk: use blobs4anklang/fonts/InterVariable.woff2, remove download EXTERNAL: blobs4anklang: add tim-janik/blobs4anklang commit from 2023-09-21 18:23:36 git submodule add --name blobs4anklang https://github.com/tim-janik/blobs4anklang.git external/blobs4anklang git -C external/blobs4anklang/ checkout 8da35f3914b9668bacc6755a8051a17051b07c3a Makefile.mk: skip `git submodule` in tarball builds Makefile.mk: dist: exclude unused external subdirs from tarball Makefile.mk: include submodule archives in dist tarball ASE: Makefile.mk: use blake3 submodule, remove download rule ASE: compress.cc: use external/blake3/c/blake3.h EXTERNAL: blake3: add BLAKE3-team/BLAKE3 version 1.3.1 git submodule add --name blake3 https://github.com/BLAKE3-team/BLAKE3.git external/blake3 git -C external/blake3/ checkout 1.3.1 ASE: Makefile.mk: use websocketpp submodule, remove download rule EXTERNAL: websocketpp: add zaphoyd/websocketpp version 0.8.2 git submodule add --name websocketpp https://github.com/zaphoyd/websocketpp.git external/websocketpp git -C external/websocketpp/ checkout 0.8.2 ASE: Makefile.mk: use clap submodule, remove download rule EXTERNAL: clap: add free-audio/clap version 1.1.1 git submodule add --name clap https://github.com/free-audio/clap.git external/clap git -C external/clap/ checkout 1.1.1 ASE: Makefile.mk: use rapidjson submodule, remove download rule EXTERNAL: rapidjson: add Tencent/rapidjson commit from 2022-05-24 10:03:13 git submodule add --name rapidjson https://github.com/Tencent/rapidjson.git external/rapidjson git checkout 232389d4f1012dddec4ef84861face2d2ba85709 Makefile.mk: update all submodules before building sources Makefile.mk: remove external/ subdir from ls-tree.lst MISC: mkcopyright.py: ignore dirs passed from `git ls-tree` on the CLI ASE: storage.cc: adjust old link to zlib-ng/minizip-ng/issues/433 ASE: minizip: build against external/minizip-ng/ ASE: Makefile.mk: use minizip-ng submodule, remove download rule EXTERNAL: minizip-ng: add zlib-ng/minizip-ng version 2.9.0 git submodule add --name minizip-ng https://github.com/zlib-ng/minizip-ng.git external/minizip-ng .gitignore: remove entries of files the build is not generating Merge branch 'bug-fixes' # 2023-09-23 Tim Janik e9015b9 * bug-fixes: GITHUB: workflows/testing.yml: upload dist tarball as isolated smaller artefact GITHUB: workflows/testing.yml: upgrade to actions/upload-artifact@v3.1.3 MISC: *.sh: use '#!/usr/bin/env bash' for bash scripts, fixes #17 Merge branch 'fix-warnings' # 2023-09-29 Tim Janik 9c1a062 * fix-warnings: ASE: track.cc: fix signedness ASE: utils.cc: cosmetic change ASE: project.cc: cosmetic change ASE: nativedevice.cc: fix signedness ASE: midilib.cc: fix signedness ASE: midievent.cc: cosmetic change ASE: internal.hh: cosmetic change ASE: inifile.cc: fix signedness ASE: engine.cc: cosmetic change ASE: compress.cc: fix write check signedness ASE: combo: fix insert position signedness ASE: clapplugin.cc: cosmetic change ASE: device.cc: remove unused code ASE: blob.cc: cosmetic fix MISC: Makefile.mk: clang-tidy: fix missing includes ASE: clapplugin.cc: cosmetic fix ASE: loop.cc: fix typo Merge branch 'main-rt-jobs' # 2023-09-30 Tim Janik a3f8f29 * main-rt-jobs: ASE: main.cc: fit one RtCallJob into a cache line This becomes possible with RtCall allocating just 4 pointer sizes. Since Loft allocates at cache line boundaries only, this essentially halves the size of an RtCallJob allocation. ASE: callback: shrink struct RtCall by a pointer ASE: loft: fix and test LoftPtr actually running ~T ASE: engine.hh: add comment about main_rt_jobs ASE: main.cc: turn debugging code into real job_queue_tests ASE: main: main_rt_jobs: add main_loop callback queue without invoking malloc() ASE: callback: RtCall: wrap simple callback pointers, without using malloc ASE: cxxaux.hh: add unalias_ptr<> helper ASE: callback.cc: add a small callback list test ASE: callback: add CallbackList - reentrant cb list with configurable arguments ASE: callback: move JobQueue implementation here Merge branch 'websocket-fix' # 2023-10-01 Tim Janik a5f9ca9 * websocket-fix: ASE: jsonapi.cc: cache socket nickname for use during errors ASE: websocket.cc: avoid exceptions in boost::asio socket.remote_endpoint() ASE: callback.hh: remove (sync) return value handling in JobQueue ASE: jsonapi.cc: wait for main loop callback completion via semaphore Merge branch 'audio-engine-job-cleanups' # 2023-10-01 Tim Janik 8067acc * audio-engine-job-cleanups: ASE: engine.hh: document engine lifetime ASE: engine: remove BorrowedPtr, simplify EngineJobImpl ASE: clapplugin.cc: use main_rt_jobs queue to delete events from audio_thread ASE: clapplugin.cc: rename ClapAudioProcessor ASE: project.cc: do not (auto) destroy all projects during atexit ASE: main.cc: shutdown: unset engine project and handle main loop callbacks ASE: engine: make transport a reference, move job queues into AudioEngine ASE: engine: rename AudioEngineThread ">Merge branch 'release-fixes' # 2023-09-08 Tim Janik d8465fd
* release-fixes:
MISC: mknews.sh: print latest NEWS.md version with `misc/mknews.sh --version`
GITHUB: workflows/release.yml: set prerelease:false for annotated tags
Fix actions/checkout@v3 and actions/checkout@v4 messing up the annotation of
the currently fetched tag, even with fetch-depth:0, see: actions/checkout#290
MISC: mknews.sh: for release tags, copy news section from NEWS.md
Merge branch 'ci-fixes' # 2023-09-10 Tim Janik 9a7e628
* ci-fixes:
MISC: mkassets.sh: remove unused file generations
MISC: dbuild.sh: delete, now unused
MISC: cirun.sh: add missing arg to help
MISC: publish.sh: remove --draft
MISC: publish.sh: determine version from tarball, show progress
MISC: publish.sh: use assets/ directory contents if present
GITHUB: workflows/testing.yml: use download-artifact@v3 to fetch release assets
GITHUB: workflows/testing.yml: make sure to generate PDF docs early on
GITHUB: workflows/testing.yml: provide GH_TOKEN for gh in publish.sh
GITHUB: workflows/testing.yml: first build docs, then upload docs/ artifact
GITHUB: workflows/testing.yml: fix Release-Upload deps, avoid skipped jobs
GITHUB: workflows/testing.yml: allow skipped jobs in Ping-IRC
GITHUB: workflows/testing.yml: use github expression for negating if
GITHUB: workflows/testing.yml: escape exclamation mark for yaml
GITHUB: workflows/testing.yml: skip Focal-Clang-Tidy for release tags
GITHUB: workflows/testing.yml: uplaod releases via misc/publish.sh
GITHUB: workflows/release.yml: remove, releases moved into testing.yml
MISC: publish.sh
Fully-featured audio plugin host, with support for many audio drivers, plugin and sound bank formats.
CARLA_CLIENT_NAME env var)openFrameworks is an open source toolkit designed for creative coding
update pg
Ardour is a hard disk recorder and digital audio workstation application that runs on Linux, macOS, FreeBSD and Windows
this is Ardour 8.0-rc2
MusicBrainz Picard is a cross-platform application written in Python and is the MusicBrainz music tagger
--audit making use of sys.addaudithook()Ardour is a hard disk recorder and digital audio workstation application that runs on Linux, macOS, FreeBSD and Windows
This is Ardour 8.0-rc1
MusE is a MIDI/Audio sequencer with recording and editing capabilities and aims to be a complete multitrack virtual studio
A quick fix release:
For the complete list of changes see:
https://github.com/muse-sequencer/muse/blob/4.2.1/src/ChangeLog
The homepage:
https://muse-sequencer.github.io/
Download:
https://github.com/muse-sequencer/muse/releases/download/4.2.1/muse-4.2.1.tar.gz
https://github.com/muse-sequencer/muse/releases/download/4.2.1/MusE-4.2.1-x86_64.AppImage
Demos page:
https://github.com/muse-sequencer/muse/wiki/Demos
Forum:
https://linuxmusicians.com/viewforum.php?f=61
Seq66 is a grid style MIDI looper that, a Qt 5 reboot of seq24/sequencer64
Many fixes and a couple features as described in RELNOTES for 0.99.9.
RaySession is a GNU/Linux session manager for audio programs, using a varient of NSM
Important Bug Fix Release
Major Fixes:
Minor fixes in patchbay (all theses bugs did already existed in v0.13.1)
Anklang, a digital audio synthesis application for live creation and composition
Development version - may contain bugs or compatibility issues.
=0.13.1 have problems with python-3.8 on focal. MISC: Dockerfile.focal: install pandoc-3.1.6.2 Using pandoc-3.1.7 seems to have issues with PDF generation, anchors in section titles cause an error and SVG images are not found. .gitignore: minor addition MISC: Dockerfile.focal: add clang-17 aliases MISC: Dockerfile.focal: provide xetex, poxy and clang++-17 GITHUB: workflows/release.yml: upload draft releases for CI tests GITHUB: workflows/release.yml: cache focal docker builds with buildx GITHUB: workflows/testing.yml: fix comment GITHUB: workflows/testing.yml: cache arch docker builds with buildx GITHUB: workflows/testing.yml: cache lunar and jammy docker builds with buildx Merge branch 'cirun-docker-caching' - let cirun handle image build and caching # 2023-09-17 Tim Janik 00c0537 * cirun-docker-caching: GITHUB: workflows/testing.yml: use separate steps for docker image builds GITHUB: workflows/testing.yml: make use of cirun which handles docker builds * workflows/testing.yml: use misc/cirun -u 1000 to fix ownership * workflows/testing.yml: fix CIMAKE for Focal-Clang-Tidy * workflows/testing.yml: move nproc out of env variables MISC: cirun.sh: remove, use simpler cirun MISC: gh_delete_assets.sh: remove old helper MISC: Dockerfile.lunar: remove old file MISC: docker_*: remove old helpers MISC: cirun: add docker build, run, chown and caching MISC: cirun: add script to run commands in dockerized environments GITHUB: workflows/testing.yml: use buildx with selective caching GITHUB: workflows/testing.yml: configure and use buildx with selective caching GITHUB: workflows/testing.yml: remove unused actions/upload-artifact GITHUB: workflows/testing.yml: split asset builds into separate job MISC: cirun.sh: add --build, note that --check includes --build MISC: mkassets.sh: fix outdated globs Merge branch 'thin-lto' - improve LTO builds # 2023-09-17 Tim Janik 0e21fc8 * thin-lto: ASE: main.cc: add missing formats to WAV output help MISC: config-uname.mk: when using LTO, enable Thin LTO with clang Thin LTO can result in smaller binaries and better performance. Merge branch 'use-git-submodule' # 2023-09-21 Tim Janik 22cf347 * use-git-submodule: DOC: copyright.ini: apply MPL-2.0 to .gitmodules MISC: Makefile.mk: directly create and reference .dlcache/ for mkassets.sh MISC: Makefile.mk: mkassets: download builds tools before misc/mkassets.sh GITHUB: workflows/testing.yml: use `make mkassets` for release builds .gitignore: ignore .submodule-stamp UI: global.scss, index.html: move AnklangIcons to assets/ UI: Makefile.mk: copy anklangicons-*.tgz files to assets, remove download EXTERNAL: blobs4anklang: add tim-janik/blobs4anklang commit from 2023-09-21 21:04:16 git -C external/blobs4anklang/ checkout 7b0a4a68a1e9efbe68fc9761bef080995f4b4d6b UI: global.scss, index.html: move fork-awesome to assets/ UI: Makefile.mk: copy node_modules/fork-awesome to assets, remove download MISC: package.json.in: install fork-awesome@1.2.0 UI: Makefile.mk: use blobs4anklang/fonts/InterVariable.woff2, remove download EXTERNAL: blobs4anklang: add tim-janik/blobs4anklang commit from 2023-09-21 18:23:36 git submodule add --name blobs4anklang https://github.com/tim-janik/blobs4anklang.git external/blobs4anklang git -C external/blobs4anklang/ checkout 8da35f3914b9668bacc6755a8051a17051b07c3a Makefile.mk: skip `git submodule` in tarball builds Makefile.mk: dist: exclude unused external subdirs from tarball Makefile.mk: include submodule archives in dist tarball ASE: Makefile.mk: use blake3 submodule, remove download rule ASE: compress.cc: use external/blake3/c/blake3.h EXTERNAL: blake3: add BLAKE3-team/BLAKE3 version 1.3.1 git submodule add --name blake3 https://github.com/BLAKE3-team/BLAKE3.git external/blake3 git -C external/blake3/ checkout 1.3.1 ASE: Makefile.mk: use websocketpp submodule, remove download rule EXTERNAL: websocketpp: add zaphoyd/websocketpp version 0.8.2 git submodule add --name websocketpp https://github.com/zaphoyd/websocketpp.git external/websocketpp git -C external/websocketpp/ checkout 0.8.2 ASE: Makefile.mk: use clap submodule, remove download rule EXTERNAL: clap: add free-audio/clap version 1.1.1 git submodule add --name clap https://github.com/free-audio/clap.git external/clap git -C external/clap/ checkout 1.1.1 ASE: Makefile.mk: use rapidjson submodule, remove download rule EXTERNAL: rapidjson: add Tencent/rapidjson commit from 2022-05-24 10:03:13 git submodule add --name rapidjson https://github.com/Tencent/rapidjson.git external/rapidjson git checkout 232389d4f1012dddec4ef84861face2d2ba85709 Makefile.mk: update all submodules before building sources Makefile.mk: remove external/ subdir from ls-tree.lst MISC: mkcopyright.py: ignore dirs passed from `git ls-tree` on the CLI ASE: storage.cc: adjust old link to zlib-ng/minizip-ng/issues/433 ASE: minizip: build against external/minizip-ng/ ASE: Makefile.mk: use minizip-ng submodule, remove download rule EXTERNAL: minizip-ng: add zlib-ng/minizip-ng version 2.9.0 git submodule add --name minizip-ng https://github.com/zlib-ng/minizip-ng.git external/minizip-ng .gitignore: remove entries of files the build is not generating ">Merge branch 'release-fixes' # 2023-09-08 Tim Janik d8465fd
* release-fixes:
MISC: mknews.sh: print latest NEWS.md version with `misc/mknews.sh --version`
GITHUB: workflows/release.yml: set prerelease:false for annotated tags
Fix actions/checkout@v3 and actions/checkout@v4 messing up the annotation of
the currently fetched tag, even with fetch-depth:0, see: actions/checkout#290
MISC: mknews.sh: for release tags, copy news section from NEWS.md
Merge branch 'ci-fixes' # 2023-09-10 Tim Janik 9a7e628
* ci-fixes:
MISC: mkassets.sh: remove unused file generations
MISC: dbuild.sh: delete, now unused
MISC: cirun.sh: add missing arg to help
MISC: publish.sh: remove --draft
MISC: publish.sh: determine version from tarball, show progress
MISC: publish.sh: use assets/ directory contents if present
GITHUB: workflows/testing.yml: use download-artifact@v3 to fetch release assets
GITHUB: workflows/testing.yml: make sure to generate PDF docs early on
GITHUB: workflows/testing.yml: provide GH_TOKEN for gh in publish.sh
GITHUB: workflows/testing.yml: first build docs, then upload docs/ artifact
GITHUB: workflows/testing.yml: fix Release-Upload deps, avoid skipped jobs
GITHUB: workflows/testing.yml: allow skipped jobs in Ping-IRC
GITHUB: workflows/testing.yml: use github expression for negating if
GITHUB: workflows/testing.yml: escape exclamation mark for yaml
GITHUB: workflows/testing.yml: skip Focal-Clang-Tidy for release tags
GITHUB: workflows/testing.yml: uplaod releases via misc/publish.sh
GITHUB: workflows/release.yml: remove, releases moved into testing.yml
MISC: publish.sh
MIDIVisualizer is a small cross-platform MIDI visualizer, written in C++/OpenGL.
This is a minor release.
Features:
Improvements:
Fixes:
Thank you for using MIDIVisualizer!
Zrythm is a featureful and easy to use DAW, written in C using the GTK+3 toolkit.
Full Changelog: v1.0.0-beta.4.13.6...v1.0.0-beta.4.13.31
Cardinal is a virtual Eurorack modular synthesizer platform
Modules related changes:
NOTE: Cardinal has its own website now, living at cardinal.kx.studio with the online/wasm version still accessible by clicking "Try Live".
Anklang, a digital audio synthesis application for live creation and composition
Development version - may contain bugs or compatibility issues.
=0.13.1 have problems with python-3.8 on focal. MISC: Dockerfile.focal: install pandoc-3.1.6.2 Using pandoc-3.1.7 seems to have issues with PDF generation, anchors in section titles cause an error and SVG images are not found. .gitignore: minor addition MISC: Dockerfile.focal: add clang-17 aliases MISC: Dockerfile.focal: provide xetex, poxy and clang++-17 GITHUB: workflows/release.yml: upload draft releases for CI tests GITHUB: workflows/release.yml: cache focal docker builds with buildx GITHUB: workflows/testing.yml: fix comment GITHUB: workflows/testing.yml: cache arch docker builds with buildx GITHUB: workflows/testing.yml: cache lunar and jammy docker builds with buildx Merge branch 'cirun-docker-caching' - let cirun handle image build and caching # 2023-09-17 Tim Janik 00c0537 * cirun-docker-caching: GITHUB: workflows/testing.yml: use separate steps for docker image builds GITHUB: workflows/testing.yml: make use of cirun which handles docker builds * workflows/testing.yml: use misc/cirun -u 1000 to fix ownership * workflows/testing.yml: fix CIMAKE for Focal-Clang-Tidy * workflows/testing.yml: move nproc out of env variables MISC: cirun.sh: remove, use simpler cirun MISC: gh_delete_assets.sh: remove old helper MISC: Dockerfile.lunar: remove old file MISC: docker_*: remove old helpers MISC: cirun: add docker build, run, chown and caching MISC: cirun: add script to run commands in dockerized environments GITHUB: workflows/testing.yml: use buildx with selective caching GITHUB: workflows/testing.yml: configure and use buildx with selective caching GITHUB: workflows/testing.yml: remove unused actions/upload-artifact GITHUB: workflows/testing.yml: split asset builds into separate job MISC: cirun.sh: add --build, note that --check includes --build MISC: mkassets.sh: fix outdated globs Merge branch 'thin-lto' - improve LTO builds # 2023-09-17 Tim Janik 0e21fc8 * thin-lto: ASE: main.cc: add missing formats to WAV output help MISC: config-uname.mk: when using LTO, enable Thin LTO with clang Thin LTO can result in smaller binaries and better performance. ">Merge branch 'release-fixes' # 2023-09-08 Tim Janik d8465fd
* release-fixes:
MISC: mknews.sh: print latest NEWS.md version with `misc/mknews.sh --version`
GITHUB: workflows/release.yml: set prerelease:false for annotated tags
Fix actions/checkout@v3 and actions/checkout@v4 messing up the annotation of
the currently fetched tag, even with fetch-depth:0, see: actions/checkout#290
MISC: mknews.sh: for release tags, copy news section from NEWS.md
Merge branch 'ci-fixes' # 2023-09-10 Tim Janik 9a7e628
* ci-fixes:
MISC: mkassets.sh: remove unused file generations
MISC: dbuild.sh: delete, now unused
MISC: cirun.sh: add missing arg to help
MISC: publish.sh: remove --draft
MISC: publish.sh: determine version from tarball, show progress
MISC: publish.sh: use assets/ directory contents if present
GITHUB: workflows/testing.yml: use download-artifact@v3 to fetch release assets
GITHUB: workflows/testing.yml: make sure to generate PDF docs early on
GITHUB: workflows/testing.yml: provide GH_TOKEN for gh in publish.sh
GITHUB: workflows/testing.yml: first build docs, then upload docs/ artifact
GITHUB: workflows/testing.yml: fix Release-Upload deps, avoid skipped jobs
GITHUB: workflows/testing.yml: allow skipped jobs in Ping-IRC
GITHUB: workflows/testing.yml: use github expression for negating if
GITHUB: workflows/testing.yml: escape exclamation mark for yaml
GITHUB: workflows/testing.yml: skip Focal-Clang-Tidy for release tags
GITHUB: workflows/testing.yml: uplaod releases via misc/publish.sh
GITHUB: workflows/release.yml: remove, releases moved into testing.yml
MISC: publish.sh
LilyPond is a music engraving program, devoted to producing high-quality sheet music
LilyPond 2.25.8
Functional programming language for signal processing and sound synthesis
fil4.lv2 aka x42-eq is a 4 Band Parametric EQ
update man page for v0.8.8
PipeWire is a server and user space API to deal with multimedia pipelines.
0.3.80
MusicBrainz Picard is a cross-platform application written in Python and is the MusicBrainz music tagger
synthv1 is an old-school all-digital 4-oscillator subtractive polyphonic synthesizer with stereo fx
An End-of-Summer'23 Release.
Zrythm is a featureful and easy to use DAW, written in C using the GTK+3 toolkit.
Full Changelog: v1.0.0-beta.4.13.1...v1.0.0-beta.4.13.6
Stargate is an all-in-one DAW and plugin suite
Download the Stargate DAW sample pack
ChangelogOptionally, you can generate a sha256sum of the downloaded file and verify
that it matches this signature.
cbda1d457a7565ed77cda76168f604df0062f23dea76281a7221cd78da540c24 stargate-23.09.1-1.x86_64.rpm
697462d0c3ae743ac6ea3c6d07cf79a6d00c57f630adc67118ca8e85bdc5103e stargate-23.09.1-amd64.deb
708c221142ec94d7d07a9317c9f7f1d1dd2b03afeaf8d763f36f5134fb19ce98 StargateDAW-23.09.1-linux-x86_64.AppImage
0342f50070a70ee4e60530989f9c70d103bf192fd48bed34a3d0a6a72f474227 StargateDAW-23.09.1-win64-installer.exe
02bea26606ab96e062be9816866159f0ed20521a3b27502731ce0b5aafcf9f8c StargateDAW-23.09.1-macos-intel-x86_64.dmg
ba326e7d9f70fc8f23f4e94a50e159c3670e43da60ba6e775d7e8540534516a2 StargateDAW-23.09.1-macos-m1-arm64.dmg
Blue is a music composition environment for Csound, written in Java
Zrythm is a featureful and easy to use DAW, written in C using the GTK+3 toolkit.
Full Changelog: v1.0.0-beta.4.12.34...v1.0.0-beta.4.13.1