Skip to main content
Release Date Range:

ChucK is a programming language for real-time sound synthesis and music creation

Updated: 30 Oct, 2023

chuck-1.5.1.8 release

Pure data is an open source visual programming language

Updated: 30 Oct, 2023

version number to 0.54-1

Schism Tracker is a free and open-source reimplementation of Impulse Tracker

Updated: 29 Oct, 2023

Summary of changes since the 20230906 release:

  • Fixed so, so, so many OpenMPT test cases, which can (and will) break some older modules
  • Remove many old flags that, generally, aren't very useful
  • Allow samples headers in IMF files with magic bytes other than 'IS10'
  • Fix crash on OS X (and maybe others?) where Schism would crash upon attempting to open an instrument as a sample library
  • Remove OS X-specific hotkey stuff that made schism extremely difficult to work with

Anklang, a digital audio synthesis application for live creation and composition

Updated: 27 Oct, 2023

Anklang 0.2.0.nightly2310272019

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

Updated: 26 Oct, 2023

Release version 2.11.3. Updates include:

  • AAX: added support for ARM Macs.
  • Added "RK" preset pack.
  • Fixed issues with "Wow" processing at higher sample rates.
  • Fixed "Mix Group" being reset with preset changes.
  • Improved factory preset level normalization.
  • CLAP: Fixed UI scaling on Windows.
  • LV2: Changed channel configuration to only support stereo I/O.

Seq66 is a grid style MIDI looper that, a Qt 5 reboot of seq24/sequencer64

Updated: 26 Oct, 2023
  • Issue #117 Option to close pattern windows with esc key if enabled via a 'usr' option.
  • Issue #118 Made virtual ports ports enabled via an option.
  • Issue #119 "Quantized Record Active does not work" fixed. Live note/drum-mapping also fixed.
  • Fixed an egregious error in drawing notes in drum mode.
  • Fixed error in moving notes at PPQN != 192.
  • Fixed bug preventing a song with triggers stopping playback at end of song. Fixes related to playlist-handling.
  • Implemented drag-and-drop of one MIDI file onto the Live grid.
  • Added the export of most project configuration files to another directory.
  • Multiple tempo events can be drawn in a line in data pane and can be dragged up/down to change the tempo value.
  • If double-click enabled, can open/create a pattern in the song editor.
  • Many improvements and fixes to the Mutes tab.
  • Added a "grid mode" to toggle mutes by clicking in the Live Grid. The new default mute-group-selection mode keystroke is "_".
  • Opening the pattern editor reflects the recording mode and live pattern alteration selection (e.g. quantization).
  • The main time display works better with high PPQN.
  • Now scrolls automatically in time and note value to show the first notes in a pattern.
  • Live-grid record-mode

rtpmidid allows you to share ALSA sequencer devices on the network using RTP MIDI

Updated: 24 Oct, 2023

Version 23.10 Beta 1

Cardinal is a virtual Eurorack modular synthesizer platform

Updated: 24 Oct, 2023

This is mostly a maintenance update, focused primarily on bug fixes

  • Fix clipboard (regression in 23.09)
  • Fix initial OpenGL state for some systems
  • Fix macOS horizontal scroll
  • Fix state save/restore with non-english locales
  • Fix "user dir" on Windows, was causing settings persistence to fail
  • Set main variant as synth type
  • Set X11 window icon for standalone
  • Update to latest Carla and DPF (also updating pugl)

module changes/updates:

  • Update nonlinearcircuits

python-rtmidi is a Python wrapper (Cython) for C++ RtMidi using Cython

Updated: 24 Oct, 2023

Project infrastructure:

  • Enabled CI builds for Python 3.12 (#182).
    • Updated cibuildwheel version used by CI to 2.16.
    • Added Python 3.12 to meta-data classifiers in pyproject.toml.
    • Added Python 3.12 to tox.ini, removed Python 3.7.
    • Only use custom meson install script to byte-compile installed Python modules if meson version <= 1.2.0.
    • Updated latest Python version mentioned in windows install docs.
  • Updated requirements-dev.txt with pip-compile (#183).

Fixes:

  • Fixed linting errors in send_all.py example (#184).

  • Fixed (no)gil/except declarations on MIDI in callback and MidiOut.sendMessage (#185).

    The GIL is acquired in any case for MIDI in callback and C++ sendMessage call, since Cython needs to check for exceptions.

    Suppress related Cython compilation performance hints.

    Also remove wrong statement about the GIL being released in docstring for send_message.

  • Fixed errors and check for empty message correctly when passing an iter- or generator instead of a sequence to MidiOut.send_message (#186, #188).

Pure data is an open source visual programming language

Updated: 24 Oct, 2023

version to 0.51-1test1

Pure data is an open source visual programming language

Updated: 24 Oct, 2023

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

Updated: 23 Oct, 2023

Audacity 3.4 adds a musical view, time stretching and a new exporter.

Major changes

  • Music workflows
    Audacity now features several music related features, such as switching between hh:mm:ss time and Beats & Measures, and time-stretching clips to align them to a song's tempo.
  • Time stretching
    Hold Alt (macOS: Option) while hovering over the top third of a clip edge to stretch it.
  • New exporter
    Audacity now features a new export window with easier access to options such as sample rate and custom mapping (for 5.1 or 7.1 audio). Additionally, the "Browse" button uses the native file browser now!

Other changes

  • For MP3, Audacity now always uses Joint Stereo mode, which always delivers the best possible quality.
  • #4720 Simplified pasting logic.
  • Simplified stereo tracks. Left and right channels now always have synchronized clip starts and ends, and the same sample rate in both channels.
  • #5014 Added cursors trimming and stretching left and right, and changed the I-beam cursor to be less similar to either.
  • #4448 When importing audio, the project sample rate no longer changes.
  • #5204 The spectrogram colors are now perceptually uniform, and the colormap has gotten a name: Roseus. It also can be used for dataviz outside of Audacity

Lilv is a C library (with Python bindings) for simple use of LV2 plugins in applications

Updated: 22 Oct, 2023

Lilv 0.24.22

RaySession is a GNU/Linux session manager for audio programs, using a varient of NSM

Updated: 22 Oct, 2023

v0.14.2 Minor bug fix release, probably the last of the year.

BugFix:

  • Top left Favorites button was not working, template were listed, but nothing happened when clicking on it
  • fix a possible ray-alsapatch crash
  • some widgets were not locked in client properties dialog when it is launched for a template preview

Change:

  • client full rename now restarts the client or make it reload its project if it is already started

Templates:

  • add Ardour8 template

ChucK is a programming language for real-time sound synthesis and music creation

Updated: 20 Oct, 2023

chuck-1.5.1.7 release

PipeWire is a server and user space API to deal with multimedia pipelines.

Updated: 19 Oct, 2023

0.3.83

Ardour is a hard disk recorder and digital audio workstation application that runs on Linux, macOS, FreeBSD and Windows

Updated: 18 Oct, 2023

This is Ardour 8.1

Anklang, a digital audio synthesis application for live creation and composition

Updated: 16 Oct, 2023

Anklang 0.2.0.nightly2310161007

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

Updated: 14 Oct, 2023

Freybug is a monstrous ghostly black dog that is stated to come from medieval English folklore, specifically from Norfolk. Like most supernatural black dogs, it was roughly the size of a calf, and wandered country roads terrifying travelers.

Changelog:

  • Add ability to open more than one plug-in UI (#575) — you can finally have multiple plug-in windows laying around while playing. Very useful for live performances;
  • improved floating legends in Action Editor (#655) — we added some cute floating legends that stick on top of each Action Editor widget, making it easier to edit actions in the right place;
  • huge optimizations to the audio rendering process;
  • Windows: store configuration file in AppData directory — to allow better integration with the environment (#299);
  • Windows: fix missing .dll file on startup (#661);
  • many more usability improvements and smaller optimizations.

Binaries available on https://www.giadamusic.com#download

Giada is an open source, minimalistic and hardcore music production tool. Designed for DJs, live performers and electronic music

Updated: 14 Oct, 2023

1st bugfix release for version 0.25 Echidna.

Changelog:

  • Enabled realtime scheduling in audio callback (#68)
  • Input audio meter is now affected by the current input volume value (#239)
  • Improved file name validation when saving projects and samples (#641 )
  • Fix compilation with format-security compiler flags (#447)
  • Disable metronome when recording in free-loop-length mode (#514)
  • Improved robustness of audio channel selection when changing audio devices in the configuration panel
  • Upgrade libsndfile library to version 1.2.0
  • Upgrade nlohmann-json library to version 3.11.2
  • Upgrade fmt library to version 10.0.0
  • Lots of code refactoring and internal cleanups

PipeWire is a server and user space API to deal with multimedia pipelines.

Updated: 13 Oct, 2023

0.3.82

by KDE

Kdenlive is video and audio editing software with GPU rendering support. Great variety of video filters available.

Updated: 12 Oct, 2023

Create tag for 23.08.2

MusicBrainz Picard is a cross-platform application written in Python and is the MusicBrainz music tagger

Updated: 12 Oct, 2023
Bugfixes
  • PICARD-2768 - Series relationships are not loaded for standalone recordings
  • PICARD-2774 - Error: 255 is not a valid Id3ImageType
  • PICARD-2775 - Disable Qt WebP plugin for Windows and macOS binary builds to mitigate libwebp vulnerability (CVE-2023-4863)
  • PICARD-2776 - Track metadata compare ignores video flag check if there is no release
Improvements
  • PICARD-2769 - If a tag got unset by scripting display a file's original tag value in the columns

ChucK is a programming language for real-time sound synthesis and music creation

Updated: 12 Oct, 2023

chuck-1.5.1.6 release

Gyroflow can stabilize your video using gyroscope and accelerometer motion data

Updated: 11 Oct, 2023

✨ Improvements

  • Proper Android and iOS apps!
  • Gyroflow is now in all app stores - Microsoft Store (for Windows), App Store (macOS and iOS), Google Play (Android)
  • Added support for GoPro Hero 12 (autoloads Hero 11 profiles, because they are exactly the same)
  • Added CineForm export codec
  • Mobile layout can be enabled also on desktop in Advanced -> Theme (if you prefer more compact view)
  • Error dialogs now have a link to the documentation, which can help troubleshoot common issues
  • Creation date is preserved when joining multiple video files
  • Added an option to "Preserve output path" between files
  • Main icon has been updated
  • Added more options to R3D conversion step, like color space and custom params
  • Minor UI improvements
  • Optimized memory usage
  • Added all submitted lens profiles to the database
  • Updated translations
  • Updated ffmpeg to latest master
  • Updated Qt from 6.5.1 to 6.6.0
  • Updated BRAW SDK to 8.4

🐛 Bug fixes

  • Fixed crash when opening certain video files on Windows
  • Fixed reading of WitMotion gyro data
  • Fixed reading of Insta360 gyro data in some cases
  • Fixed sync issues with Sony files when loaded from project file in some cases
  • Fixed color rendering of certain Sony files without loading a lens

Anklang, a digital audio synthesis application for live creation and composition

Updated: 10 Oct, 2023

Anklang 0.2.0.nightly2310101358

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

Updated: 09 Oct, 2023

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

Updated: 07 Oct, 2023

This is Ardour 8.0

LilyPond is a music engraving program, devoted to producing high-quality sheet music

Updated: 07 Oct, 2023

LilyPond 2.25.9

Fasttracker II clone for Windows/macOS/Linux

Updated: 07 Oct, 2023

Update ft2_header.h

PipeWire is a server and user space API to deal with multimedia pipelines.

Updated: 06 Oct, 2023

0.3.81

Fasttracker II clone for Windows/macOS/Linux

Updated: 04 Oct, 2023
  • CTRL+A/ALT+A keybindings were swapped (thanks to MIDRA2ADVANCE for telling me)

Ardour is a hard disk recorder and digital audio workstation application that runs on Linux, macOS, FreeBSD and Windows

Updated: 03 Oct, 2023

this is Ardour 8.0-rc3

Fasttracker II clone for Windows/macOS/Linux

Updated: 01 Oct, 2023
  • Bugfix: Shrink Pattern ("Srnk.") could lead to a pattern length of 0
  • Better variable sanitation for some pattern editing routines, may (?) prevent some rare crashes
  • CTRL+F5 (Paste Pattern) had wrong button names in its message box when asking to adjust the pattern length after pasting
  • Changed the above message box text to be easier to understand
  • Removed audio dithering for 16-bit audio bit depth mode. It seemed to be wrongly implemented anyway
  • Some small changes done to the about screen
  • Windows/macOS: Updated SDL to v2.28.3
  • Code cleanup

Anklang, a digital audio synthesis application for live creation and composition

Updated: 01 Oct, 2023

Anklang 0.2.0.nightly2310010229

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.

Updated: 30 Sep, 2023
  • Allow configuration of Carla client name when headless (via CARLA_CLIENT_NAME env var)
  • Fix save missing LV2 files
  • Fix some wine bridge details

openFrameworks is an open source toolkit designed for creative coding

Updated: 30 Sep, 2023

update pg

Ardour is a hard disk recorder and digital audio workstation application that runs on Linux, macOS, FreeBSD and Windows

Updated: 27 Sep, 2023

this is Ardour 8.0-rc2

MusicBrainz Picard is a cross-platform application written in Python and is the MusicBrainz music tagger

Updated: 26 Sep, 2023

Bugfixes

  • PICARD-2748 - KeyError when saving options with removed profile
  • PICARD-2749 - Python 3.12: AttributeError: 'PathFinder' object has no attribute 'find_module'
  • PICARD-2751 - The plugin system uses deprecated APIs, incompatible with Python 3.12
  • PICARD-2754 - Picard crashes in non-existing working directory on start
  • PICARD-2756 - Windows long path support does not work for network drives
  • PICARD-2762 - Linux packaged version does not show the "check for new plugins" option setting
  • PICARD-2764 - Attached profiles dialog does not display on option sub-pages

New Features

  • PICARD-2757 - Add command-line option --audit making use of sys.addaudithook()

Tasks

  • PICARD-2690 - Move locale name translations into separate translation resource
  • PICARD-2731 - Move translations to Weblate

Improvements

  • PICARD-1377 - New icons for plugin options
  • PICARD-2717 - Starting a second instance with no commands should change to the running instance
  • PICARD-2740 - Improve SSL error logging
  • PICARD-2746 - Localize XDG desktop file
  • PICARD-2760 - Windows: Timestamp the code signed packages

Ardour is a hard disk recorder and digital audio workstation application that runs on Linux, macOS, FreeBSD and Windows

Updated: 25 Sep, 2023

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

Updated: 24 Sep, 2023

A quick fix release:

  • Fix issue 1247: Fix compilation without MODULES_BUILD_STATIC=1
  • Fixed issue 1243: Slow startup
  • Fixed missing simpledrums MESS synth

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

Updated: 24 Sep, 2023

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

Updated: 23 Sep, 2023

Important Bug Fix Release

Major Fixes:

  • Some client project files were not renamed at session duplicate (and certainly when creating a session from user template)
  • ray-jackpatch and ray-alsapatch various problems that involve loss of connections
  • "Optional-gui states" option was not working at all
  • typo: replace 'identifiant' with 'identifier' in english version

Minor fixes in patchbay (all theses bugs did already existed in v0.13.1)

  • 'navigation on borders' option state was not restored at startup
  • Drag with middle click wrongly activate 'navigation on borders'
  • Shift + Mouse wheel for horizontal scrolling was not working

Anklang, a digital audio synthesis application for live creation and composition

Updated: 21 Sep, 2023

Anklang 0.2.0.nightly2309212136

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.

Updated: 20 Sep, 2023

This is a minor release.

Features:

  • Ability to have the background texture scrolling horizontally or vertically

Improvements:

  • Enable Apple Silicon native support on macOS build (#145)

Fixes:

  • Reset window size and position when restarting MIDIVisualizer if the window was minimized or crashed before (should help #148).

Thank you for using MIDIVisualizer!

Zrythm is a featureful and easy to use DAW, written in C using the GTK+3 toolkit.

Updated: 18 Sep, 2023

Cardinal is a virtual Eurorack modular synthesizer platform

Updated: 17 Sep, 2023
  • Add OSC Remote control (see docs/OSC-REMOTE-CONTROL.md)
  • Do not try to save and load module info per project, its a global setting since 22.07
  • Fix a few missing details in macOS app bundles
  • Fix Cardinal Mini window title after loading patches
  • Fix crash when pressing F9 (used internally for generating screenshots)
  • Fix crash when window creation fails (e.g. running headless)
  • Fix headless build when OpenGL is available (but unused since it is headless)
  • Fix stuck notes in CardinalNative MIDI handling
  • Fix VST2 parameter changes
  • Proper handling of XDG_DOCUMENTS_DIR
  • Switch to regular/initial welcome patch for web/wasm builds

Modules related changes:

  • Add EnigmaCurry
  • Audio File Player: Fix resampled playback for some files, many CPU optimizations
  • Ildaeil: Add bridge reload button, in case hosted plugin crashes or times out
  • Ildaeil: List Windows plugins under Linux
  • Update unless_modules

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

Updated: 17 Sep, 2023

Anklang 0.2.0.nightly2309170055

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

Updated: 16 Sep, 2023

LilyPond 2.25.8

Functional programming language for signal processing and sound synthesis

Updated: 14 Sep, 2023
No content.

fil4.lv2 aka x42-eq is a 4 Band Parametric EQ

Updated: 14 Sep, 2023

update man page for v0.8.8

PipeWire is a server and user space API to deal with multimedia pipelines.

Updated: 14 Sep, 2023

0.3.80

MusicBrainz Picard is a cross-platform application written in Python and is the MusicBrainz music tagger

Updated: 12 Sep, 2023

Bugfixes

  • PICARD-2700 - Content of series variables gets duplicated on each refresh
  • PICARD-2712 - "00" is always stripped from DATE tag on save
  • PICARD-2722 - Windows version can crash on exit and prevent restart of Picard
  • PICARD-2724 - Crash in track search dialog if artist name translation is enabled
  • PICARD-2733 - Crash when saving files with UI language set to Finnish
  • PICARD-2736 - Windows: SSL errors if conflicting libssl is installed system wide

Tasks

  • PICARD-2752 - Include resource/images in source archive

Improvements

  • PICARD-2720 - Linux: Allow opening new instance via XDG desktop entry application action

python-rtmidi is a Python wrapper (Cython) for C++ RtMidi using Cython

Updated: 12 Sep, 2023

Fixes:

  • Fixed building with meson-python >= 0.14.0 (#177).

synthv1 is an old-school all-digital 4-oscillator subtractive polyphonic synthesizer with stereo fx

Updated: 12 Sep, 2023

An End-of-Summer'23 Release.

Zrythm is a featureful and easy to use DAW, written in C using the GTK+3 toolkit.

Updated: 12 Sep, 2023

Stargate is an all-in-one DAW and plugin suite

Updated: 11 Sep, 2023
Installation and troubleshooting guides

Download the Stargate DAW sample pack

Changelog
  • Item Editor: Fix solo and loop resetting after an editing action
  • Item Editor: Clear solo and loop on closing a project
    Fixes a bug where the looped region markers overwrite the previous
    region markers if the project is closed while item editor loop or solo
    engaged.
Checksums

Optionally, 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

Zrythm is a featureful and easy to use DAW, written in C using the GTK+3 toolkit.

Updated: 10 Sep, 2023

Zrythm is a featureful and easy to use DAW, written in C using the GTK+3 toolkit.

Updated: 10 Sep, 2023

v1.0.0-beta.4.13

OpenMPT is a popular tracker software for Windows

Updated: 09 Sep, 2023

This small update to OpenMPT 1.31 is mostly a bugfix release. Here's a list of the most notable changes in this version:

  • Fixed volume and envelope position issues when seeking with sample sync and the target row contained a note without instrument number.
  • Some IFF samples with empty chunks could not be loaded.
  • 16-bit mono IFF samples were saved as little-endian instead of big-endian.
  • Cue points are now removed from newly-created samples after slicing at cue points. The old cue points no longer make sense in the context of the new sample.
  • MIDI data is no longer sent to bypassed VST plugins.
  • The new instrument plugin tone portamento mechanism broke after encountering a note-off event.
  • MIDI I/O Plugin: Fix potential crash while suspending.
  • MIDI pitch bend is now applied to samples outside of the pattern view as well (e.g. sample / instrument / comments tab).
  • Improved scrolling support for laptops with precision touchpads.

For a complete list of changes, have a look at the release notes and the full version history.

libopenmpt has been updated as well.

Schism Tracker is a free and open-source reimplementation of Impulse Tracker

Updated: 07 Sep, 2023

Summary of changes since 20221201 release:

  • Add FLAC loading support
  • Fix OpenMPT test case s77.it
  • Fix improper playback of note-without-instrument after instrument-without-note
  • Fix for initial instrument-without-note
  • Fix build failure with old versions of SDL2
  • MIDI note-off events that don't match the last note are now dropped
  • Detect S3M files made with Graoumf Tracker

Schism Tracker is a free and open-source reimplementation of Impulse Tracker

Updated: 07 Sep, 2023

Summary of changes since 20221020 release:

  • Fix macOS integration
  • 10.7 is now the minimum macOS version, as supported by SDL
  • Fix issues when reverting to a previous video interpolation setting

ZPlugins is a collection of LV2 plugins intended to be bundled with the Zrythm DAW

Updated: 07 Sep, 2023

v0.2.6

ChucK is a programming language for real-time sound synthesis and music creation

Updated: 05 Sep, 2023

chuck-1.5.1.3 release

Anklang, a digital audio synthesis application for live creation and composition

Updated: 05 Sep, 2023

Anklang 0.1.0.nightly2309052316

Development version - may contain bugs or compatibility issues.

= 0.125.0 is present Jack 0.125.0 ships with Ubuntu-20.04. ASE: driver-jack.cc: turn into a working PCM driver for Ase ASE: driver-jack.cc: adapto to Ase namespace ASE: merge original Jack driver by Stefan Westerfeld Initial version of Jack driver using the new driver API Add minimal jack howto Block SIGPIPE to avoid crashes when jackd dies Driver: return read and write latency for a pcm driver separately For instance for synchronizing the play position pointer ui with the audio buffering, you want to know how much write latency you have, but don't care about the amount of read latency. Add list with possible improvements from PR 31 https://github.com/tim-janik/beast/pull/31 Add some minor fixes as requested in review ASE: engine.cc: consistently calculate buffer size for multiple channels ASE: datautils.hh: add fast_copy() for floats and ints ASE: driver-alsa.cc: adjust debug messages, remove unused variable ASE: main.cc: require command line options to enable JSIPC logging Merge branch 'freeverb' # 2022-07-31 Tim Janik 554794d * freeverb: DEVICES: freeverb/freeverb.cc: turn into a working AudioProcessor for Ase DEVICES: freeverb/freeverb.cc: make query_info() const, i.e. MT-Safe DEVICES: freeverb/freeverb.cc: move all code completely into Anon namespace DEVICES: freeverb/freeverb.cc: use explicit add_param() IDs and fix arguments DEVICES: freeverb: implement STK and VLC damping Avoid reinforcing feedback loop in the original damping code, by providing VLC and STK damping modes. The latter is likely closest to the original intention so it is now the default. This also reorders some parameters and removes the original freezing mode, that does not really make sense for Processors. DEVICES: freeverb/freeverb.cc: add Freeverb Processor DEVICES: freeverb/revmodel.cpp: fix missing `int i` decls DEVICES: freeverb/Freeverb*: remove unused vst files DEVICES: freeverb/: fix up whitespace and \n without \r everywhere DEVICES: freeverb/: Freeverb - free public domain reverb SOURCE CODE Freeverb - Free, studio-quality reverb SOURCE CODE in the public domain Written by Jezar at Dreampoint - http://www.dreampoint.co.uk DEVICES: freeverb/Makefile.mk: add source file to devices/4ase.ccfiles DEVICES: freeverb/GNUmakefile: allow subdir builds DEVICES: Makefile.mk: add dependencies, clean rule, etc for devices/ sources DEVICES: blepsynth/Makefile.mk: simply add source files to devices/4ase.ccfiles UI: b/contextmenu.vue: allow 0 as valid menuitem.uri value UI: b/cliplist.vue: only call non-null Shell.piano_current_tick() README.md: fix manual link Merge branch 'dist-tarball' - create distribution tarballs # 2022-08-06 Tim Janik 50d9c06 Adjust versioning and build rules to support proper distribution tarballs that will build without .git/ history. * dist-tarball: MISC: Dockerfile-apt: provide zstd MISC: Makefile.mk: re-enable nightly asset builds Makefile.mk: work around git 2.25.1 not handling Format:%(describe:match) Ubuntu 20.04 still runs git 2.25.1. MISC: version.sh: work around git 2.25.1 not handling Format:%(describe:match) Ubuntu 20.04 still runs git 2.25.1. MISC: Dockerfile-apt: add universal-ctags MISC: dbuild.sh: recognize --help Makefile.mk: use wildcard for toplevel CLEANFILES MISC: Makefile.mk: list Nightly changes MISC: Makefile.mk: fix upload-release MISC: Makefile.mk: use TARBALL version for build-assets MISC: Makefile.mk: minor fixups MISC: Makefile.mk: only check-copyright if .git/ exists MISC: Makefile.mk: remove versioned ChangeLog generation Makefile.mk: ChangeLog: use slightly longer hashes Makefile.mk: fix ChangeLog range Makefile.mk: use ls-tree.lst to generate TAGS MISC: Makefile.mk: use ls-tree.lst DOC: Makefile.mk: use ls-tree.lst Makefile.mk: create and distribute ls-tree.lst MISC: config-utils.mk: provide only $(HAVE_GIT) which is true if .git/ exists Using the old WITHGIT or WITHOUTGIT did not really work. MISC: Makefile.mk: avoid -j, rely on MAKEFLAGS for parallel submakes MISC: Makefile.mk: build-nightly: create and build dist tarball MISC: dbuild.sh: use .dlcache subdir for dockerized ccache MISC: Makefile.mk: build-assets: build from sources in $(TARBALL) MISC: Makefile.mk: record and use artifacts in build-assets MISC: Makefile.mk: add 'build-version' rule MISC: Makefile.mk: call version.sh --make-nightly for nightly builds MISC: Makefile.mk: check nightly versions MISC: Makefile.mk: add 'versioned-manuals' rule DOC: Makefile.mk: use packaged doc/copyright if Git is missing GITHUB: workflows/testing.yml: build with --no-tex and SKIP_LATEX=true Only the PDF manuals need Tex, skipping LaTex installation significantly speeds up the CI builds. MISC: dbuild.sh: add --no-tex (replaces --tex) MISC: Dockerfile-apt: default to building with Tex DOC: Makefile.mk: build PDF manuals, unless SKIP_LATEX=true DOC: Makefile.mk: skip misc/mkcopyright.py if .git is not present MISC: mkdeb.sh: use `misc/version.sh --commit-hash` instead of git MISC: version.sh: add --commit-hash MISC: version.sh: remove extra version printout for --make-nightly MISC: version.sh: add --help and --make-nightly MISC: version.sh: use the same COMMITINFO for archives and .git repos Makefile.mk: dist: allow packaging with NEWS.md worktree changes Makefile.mk: simplify make dist Makefile.mk: add hard dependency on ctags-universal Builds from Git need ctags-universal to reliably generate TAGS for make dist. Makefile.mk: provide $(builddir) and $>/ early on Makefile.mk: check misc/version.sh execution ASE: Makefile.mk: add missing minizip/mz_zip.h dependency DOC: copyright.ini: list freeverb sources under Public Domain dedication DEVICES: freeverb/freeverb.cc: license under MPL-2.0 Merge branch 'docker-caching' # 2022-08-11 Tim Janik 433f9bd * docker-caching: MISC: dbuild.sh: skip TeX during docker image build with -T MISC: Dockerfile.focal: cleanup early to shrink docker image, possibly skip TeX MISC: dbuild.sh: use misc/Dockerfile.focal by default, remove -d, change -f MISC: Dockerfile.focal: rename from Dockerfile-apt, use FROM ubuntu:20.04 ASE: Makefile.mk: add missing dependencies for includes ASE: sortnet.hh: include for std::less Makefile.mk: use `ctags` executable GITHUB: workflows/testing.yml: fix cache-hit detection GITHUB: workflows/testing.yml: skip docker caching on cache miss GITHUB: workflows/testing.yml: invalidate cache if misc/dbuild.sh changes GITHUB: workflows/testing.yml: remove docker image test MISC: get rid of --no-tex and $NO_TEX (now unused) GITHUB: workflows/testing.yml: remove '--no-tex' Avoiding Tex installation was only needed without docker image caching. MISC: dbuild.sh: fix SIGPIPE when searching docker image for INITIALIZE MISC: dbuild.sh: debug wrong INITIALIZE setting MISC: dbuild.sh: use 'ubuntu:20.04' as base instead of 'ubuntu:focal' Both are tags for the same image, but the former is already present on Github's stock system. GITHUB: workflows/testing.yml: fix grep exit status GITHUB: workflows/testing.yml: invalidate cache if misc/Dockerfile-apt changes GITHUB: workflows/testing.yml: stop forcing a docker build step GITHUB: workflows/testing.yml: upgrade to actions/checkout@v2.4.2 GITHUB: workflows/testing.yml: cache docker image via github cache GITHUB: workflows/testing.yml: find version inside docker GITHUB: workflows/testing.yml: always use the same build arg for docker MISC: version.sh: ignore missing tags in Format:%(describe) workaround Merge branch 'arch-ci' # 2022-08-11 Tim Janik 76c6214 * arch-ci: .gitignore: add ignores GITHUB: workflows/testing.yml: cleanup after each platform build GITHUB: workflows/testing.yml: build and test on arch, cache arch docker image MISC: Dockerfile.arch: setup archlinux dependencies for building Anklang Use upstream CastXML, the AUR version seems outdated and broken. Merge branch 'dockerize-asset-builds' # 2022-08-11 Tim Janik 2fd2f5f * dockerize-asset-builds: MISC: Makefile.mk: adjust release-message MISC: Makefile.mk: export $V for build scripts MISC: Makefile.mk: simplify builds, merge upload-nightly and upload-release Makefile.mk: fix ls-tree.lst generation in tarballs MISC: mkassets.sh: extract release info, make AppImage MISC: mkAppImage.sh: move AppImage build logic here MISC: mkassets.sh: build binary packages from tarball MISC: mkdeb.sh: pass $V to make MISC: dbuild.sh: pass $V into docker env MISC: dbuild.sh: remove unused .dbuild/ handling MISC: Dockerfile.focal: reduce layers MISC: Dockerfile.focal: always become 'builder' user, prepare /ootbuild/ Merge branch 'fix-scripts' # 2022-08-12 Tim Janik a169887 * fix-scripts: MISC: mkassets.sh: handle unbound $V MISC: mkdeb.sh: handle unbound $V MISC: mkAppImage.sh: handle unbound $V MISC: dbuild.sh: handle unbound $V Merge branch 'sse+fma-synth-engine' - build releases with SSE + FMA support # 2022-08-12 Tim Janik 5f77129 * sse+fma-synth-engine: ASE: Makefile.mk: build FMA variant iff MODE=production INSN=sse MISC: mkassets.sh: build releases with MODE=production INSN=sse MISC: Makefile.mk: remove INSN build remnants Merge branch 'clap-file-reference' # 2022-08-24 Tim Janik 031c81f * clap-file-reference: ASE: clapplugin: clean up load_state() and save_state() ASE: *.cc: use operator<< where needed for serialization ASE: serialize.hh: add operator>> and operator<< to support pure const serialization ASE: serialize.hh: operator&: catch serialization into const at compile time ASE: project.cc: merge asset_hashes ASE: project.cc: use Error::NO_PROJECT_DIR if anklang.project is missing ASE: api.hh: add Error::NO_PROJECT_DIR ASE: clapplugin: implement file collection ASE: clapplugin.cc: save_state: request plugin_file_reference->save_resources() ASE: clapplugin.cc: add CLAP_EXT_FILE_REFERENCE skeleton ASE: serialize.cc: use TelemetryField for simple serialization tests ASE: serialize: support external serialize(T&,WritNode&) impls via ADL ASE: serialize.cc: test tuple serialization ASE: project.cc: loader_resolve: lookup and resolve files from project dir ASE: project.cc: serialize file hashes as tuple array ASE: serialize.hh: serialize tuple<...> types UI: b/menubar.vue: use project.saved_filename() as "Save" location ASE: api.hh: add Project.saved_filename() ASE: Makefile.mk: upgrade to clap-1.1.1.tar.gz UI: b/app.js: use save_project() ASE: api.hh: rename Project.save_project() ASE: project.cc: canonicalize project file name when saving ASE: project: properly implement writer_collect() ASE: project: add API to collect external files ASE: strings: add strings_version_sort() ASE: path: add dircontains() to check dir hierarchy and compute relative path ASE: path: add copy_file(), use FICLONE ioctl to create CoW clone if possible Currently, FICLONE is supported under Linux for XFS and BTRFS. Use `filefrag -v` to detext or debug shared file extents. ASE: path: add file_size(), gracefully handle errors ASE: clapplugin: derive ClapPluginHandle from GadgetImpl ASE: api.hh: print user notes and allow `rest` argument ASE: api.hh: introduce Gadget._project() ASE: strings: add string_to_hex() ASE: main.cc: add --blake3 to test Blake3 hashing ASE: compress: add blake3_hash_file() and blake3_hash_string() ASE: storage: add stream_reader_from_file() ASE: Makefile.mk: compile BLAKE3 with SSE and AVX variants ASE: Makefile.mk: provide blake3.h from BLAKE3-1.3.1.tar.gz ASE: Makefile.mk: use SOURCE2_O MISC: config-uname.mk: add $(call SOURCE2_O) to create object extensions ASE: clapplugin.cc: fix warnings MISC: config-checks.mk: show sha256sum command used failing downloads Merge branch 'automatic-backup' # 2022-08-24 Tim Janik 72174fb * automatic-backup: ASE: project.cc: automatically backup existing project files ASE: path: add glob() ASE: path: add rename() ASE: utils: add now_strftime() Merge branch 'remote-gc' # 2022-09-14 Tim Janik f59890b * remote-gc: UI: startup.js: renew_gc() on object finalization, report_gc() when requested ASE: jsonapi.cc: support renew_gc() and report_gc() to start new GC cycle The basic idea behind remote GB by the UI requesting renew_gc() and the Jsonapi server swapping wrapper tables in response is described here: https://testbit.eu/2014/rapicorn-remote-reference-counting ASE: jsonapi.cc: test conscise erase() loop over std::map<> Checks the erase() loop used by Jsonipc over std::map<>, in particular ++end must be avoided for empty maps. JSONIPC: jsonipc.hh: support clear/swap/size/move_into for instance ptr map MISC: config-uname.mk: use -Og for debugging which improves debug info Using -Og is a better choice than -O0, because some compiler passes that collect debug information are disabled at -O0. (gcc docs) UI: startup.js: properly namespace Jsonapi/Trigger ASE: jsonapi.cc: properly namespace Jsonapi/Trigger DOC: ch-development.md: properly namespace Jsonapi/Trigger DOC: ch-development.md: minor update UI: startup.js: request Ase.Server via Jsonapi/initialize after handshake ASE: jsonapi.cc: provide Ase.Server object as Jsonapi/initialize reply JSONIPC: jsonipc.hh: reply to Jsonipc/handshake with protocol version 1 JSONIPC: jsonipc.js: require Jsonipc/handshake with protocol version 1 UI: startup.js: maintain $id GC list via Jsonipc.finalization_registration JSONIPC: jsonipc.js: call Jsonipc.finalization_registration hook from ctors UI: GNUmakefile: allow subdir builds Merge branch 'low-latency-sched' # 2022-09-14 Tim Janik 5184d18 * low-latency-sched: ASE: engine.cc: request low latency scheduling for the synthesis engine ASE: platform: add sched_{set|get|fast}_priority() ASE: dbus: add DBus methods rtkit_make_high_priority + rtkit_get_min_nice_level MISC: mkdeb.sh: postinst: add cap_sys_nice to AnklangSynthEngine MISC: config-checks.mk: add dbus-1 to ase dependencies ASE: utils.cc: allow mixed case debug keys ASE: Makefile.mk: use ASEDEPS_CFLAGS and ASEDEPS_LIBS MISC: config-checks.mk: provide just ASEDEPS_CFLAGS and ASEDEPS_LIBS for ase/ Merge branch 'build-improvements' # 2022-09-27 Tim Janik 931a674 * build-improvements: MISC: config-uname.mk: enable link time optimization via -flto for MODE=production MISC: Makefile.mk: clean mkdeb/ if left over MISC: Dockerfile.focal: install libgtk-3-dev which also provides libdbus-1-dev Merge branch 'prefault-pages' # 2022-09-27 Tim Janik 9cf276d * prefault-pages: ASE: main.cc: prefault heap and stack pages ASE: main.cc: tune malloc via mallopt to reduce page fault probability Merge branch 'fix-gc' - plugs a GC race condition # 2022-09-27 Tim Janik 6caa570 * fix-gc: JSONIPC: jsonipc.hh: InstanceMap: remove unused swap and move_into ASE: jsonapi.cc: fix GC bookkeeping with mark_unused() and purge_unused() JSONIPC: jsonipc.hh: InstanceMap: add mark_unused() and purge_unused() JSONIPC: jsonipc.hh: add CallbackInfo::classname() to improve error messages Merge branch 'fix-vue-3.2.28' # 2022-09-28 Tim Janik 6628472 * fix-vue-3.2.28: UI: b/shell.vue: work around vue-3.2.38 breaking $forceUpdate() before mount() Avoid the Shell calling $forceUpdate() from created(). That used to work up until Vue-3.2.27, but with .28 and .29 results in: vue.js:1843 Uncaught (in promise) TypeError: Cannot read properties of null (reading 'id') at queueJob (vue.js:1843:17) at i.f.i.f (vue.js:4591:44) Aparently $forceUpdate() calls are now broken before mount(). UI: Makefile.mk: fix wildcard for lit.js to not catch little.js Merge branch 'print-class-tree' # 2022-09-28 Tim Janik 8bde98a * print-class-tree: DOC: Makefile.mk: anklang-internals: add "Ase Class Inheritance Tree" ASE: main: add --class-tree to print the class tree JSONIPC: jsonipc.hh: add ClassWalker ASE: internal.hh: add assert_unreached() ASE: engine: minor fixes Merge branch 'x11test' # 2022-10-10 Tim Janik 662fd7a * x11test: X11TEST: play1note.json: add recording to play a single MIDI note GITHUB: workflows/testing.yml: run x11test-v on Ubuntu build and upload result Makefile.mk: docuemnt x11test and x11test-v Makefile.mk: add x11test, x11test-v to run (headless) end-to-end tests X11TEST: replay.sh: play Anklang DevTools recording in Electron via Puppetteer X11TEST: ereplay.cjs: use Electron and Puppetteer to replay DevTools recording X11TEST: x11rec.sh: run and record a command in a virtual or nested X11 session MISC: package.json.in: add puppeteer packages MISC: Dockerfile.focal: provide xvfb 9wm ffmpeg Merge branch 'ci-job-split' # 2022-10-11 Tim Janik bd540be * ci-job-split: GITHUB: workflows/testing.yml: split jobs for Ubuntu, Arch, IRC DOC: copyright.ini: assume MPL-2 for x11test/*.json Merge branch 'activate+deactivate' # 2022-10-12 Tim Janik 4e5ac8b * activate+deactivate: ASE: object.cc: properly check Connection ptr before use ASE: track.cc: remove over eager assertion ASE: project.cc: start_playback(): switch current engine project on demand Makefile.mk: allow make default to configure INSN ASE: project: move activate/deactive to Project ASE: engine.cc: fix loss of "change:prefs" notification connection ASE: engine: add API to set up exclusive Engine + Project relation ASE: track: require Project as parent of track ASE: gadget: add flags field to be used for gadgets and derived types ASE: clapplugin: rename clap_deactivate() and variants ASE: api.hh: use GadgetImpl as parent pointer ASE: api.hh: derive Track from Device ASE: api.hh: derive Project from Device ASE: device: rename and move Device::extract_info() here ASE: clapdevice.cc: fix call to inherited methods ASE: nativedevice: provide remove_all_devices(), implement activation ASE: api.hh: Device: provide _activate() _deactivate() is_active() ASE: nativedevice.cc: clarify TODO ASE: split DeviceImpl into Device and NativeDevice ASE: engine: turn the engine into a global singleton ASE: engine: simnply wrap AudioEngineImpl calls into AudioEngine methods ASE: engine: rename AudioEngineImpl ASE: main: export main_loop_wakeup() Merge branch 'package-updates' # 2022-10-12 Tim Janik 84e7c32 * package-updates: ASE: clip.cc: fix macro clash MISC: package.json.in: update various npm packages Makefile.mk: clean x11test/ output dir Merge branch 'litelement-menu' # 2022-10-21 Tim Janik 8032e64 * litelement-menu: X11TEST: play-notes.json: update UI test UI: b/*: assign aria-label where appropriate UI: b/*.vue: add html id to context menus UI: b/menuitem.js: always strip slot_label UI: util.js: remove unused dropdown() UI: b/color-picker.vue: fix menu and support click-drag selection UI: b/contextmenu.js: expose dialog via part=dialog to CSS rules UI: b/trackview.vue: popup context menu at cursor UI: b/piano-roll.vue: fix popup position UI: b/piano-ctrl.js: avoid stealing unhandled key presses UI: b/dialog.vue: close on regular Escape presses, avoid stealing Escape UI: b/contextmenu.js: stop handled dialog Escape key from bubbling further UI: util.js: allow shields without Escape key stealing UI: b/choice.vue: fix menu and key handling to work like all menus UI: b/contextmenu.js: provide .open read-only property UI: b/menuitem.js: remove unused code UI: b/contextmenu.js: fix data-contextmenu styling UI: b/fed-picklist.vue: remove unused component UI: b/devicepanel.vue: fix menu origin and insertion pos ASE: nativedevice.cc: fix device insertion order UI: b/contextmenu.js: close menu on backdrop clicks UI: util.js: dialog_backdrop_mousedown(): close dialogs on backdrop clicks UI: b/menubar.vue: use b-contextmenu .activate and .isactive UI: b/piano-roll.vue: use b-contextmenu .activate and .isactive UI: b/deviceeditor.vue: use b-contextmenu .activate and .isactive UI: b/treeselector-item.vue: use frame stamp to ignore duplicate clicks UI: b/menubar.vue: use frame stamp to ignore duplicate clicks UI: b/contextmenu.js: make FF auto-focus an element on showModal(), like Chrome UI: b/contextmenu.js: use frame stamp to ignore duplicate clicks and popup()s Note that keyboard presses, mouse clicks, drag selections and event bubbling can all cause menu item clicks and contextmenu activation. In order to deduplicate multiple events that arise from the same user interaction, *one* popup request and *one* click activation is processed per animation frame. UI: util.js: add frame_stamp(), retrieve a timestamp unique per animation frame UI: kbd.js: move_focus(): fallback to move focus inside body UI: kbd.js: list_focusables(): take [open]:modal in shadow DOMs into account UI: kbd.js: list_focusables(): take [open]:modal dialogs into account UI: b/treeselector-item.vue: fix single-click menu activation and styling UI: b/trackview.vue: fix menu activation UI: b/piano-roll.vue: fix menu activation, allow click-drag menu selection UI: b/devicepanel.vue: fix menu activation UI: b/menubar.vue: allow click-drag menu selection UI: b/menuitem.js: use .activate and .isactive callbacks for item activation UI: b/contextmenu.js: use .activate and .isactive callbacks for menu activation ASE: project.cc: fix some missing notify::dirty emissions UI: b/menubar.vue: adapt context menu clicks, popup menus early (mousedown) UI: b/menuitem.js: adjust for b-contextmenu as LitElement UI: kbd.js: fix keydown_move_focus() for shadow DOMs UI: util.js: add prevent_event() UI: b/contextmenu.js: port b-contextmenu to LitElement UI: b/menuitem.js: use 'b-menurow' CSS selector UI: b/menurow.js: port b-menurow to LitElement UI: b/menuitem.js: pass b-menurow turn / noturn attributes to button UI: util.js: add closest() for shadow DOMs UI: b/trackview.vue: always use the b-icon ic="" attribute UI: b/menuitem.js: export KeymapEntry as this.keymap_entry UI: b/contextmenu.vue: collect and register KeymapEntry props from descendants UI: kbd.js: support add+remove of global keymaps UI: b/menuitem.js: port b-menuitem to LitElement UI: util.js: add lrstrip() and collect_text_content() UI: kbd.js: make activeElement and list_focusables shadow DOM aware This allows transparent handling of custom focus navigation and hotkey activation in shadow DOMs. UI: util.js: extend has_ancestor() to support open shadow DOMs UI: b/contextmenu.vue: support click, keymap, b-contextmenu-menudata on Element UI: b/icon.js: port b-icon from vue to LitElement UI: util.js: add adopt_style() and add_style_sheet() UI: b/*.vue: always use the b-icon ic="" attribute GITHUB: workflows/testing.yml: update github actions Merge branch 'pdf-artifacts' # 2022-10-25 Tim Janik e0272bd * pdf-artifacts: GITHUB: workflows/testing.yml: build PDF and upload 'docs' build artifact MISC: mkassets.sh: use 'pdf' shorthand in build rule DOC: Makefile.mk: require explicit 'pdf' rule to build PDF manuals via TeX By default, only the HTML manuals are built and installed (without TeX dependency). The PDF variants can be built explicitely with `make pdf`. The PDF manuals are installed if they are present at install time. GITHUB: workflows/testing.yml: enable CI for 'next' and PRs Merge branch 'update-sanitizers' # 2022-10-26 Tim Janik a252fc9 * update-sanitizers: JSONIPC: jsonipc.hh: fix atexit memory leak ASE: formatter.hh: properly handle nullptr_t for %p ASE: nativedevice.cc: fix signedness ASE: serialize.cc: fix unit test memory leak UI: Makefile.mk: ignore asan when running AnklangSynthEngine DOC: Makefile.mk: ignore asan when running AnklangSynthEngine MISC: config-uname.mk: update sanitizer linkage GITHUB: workflows/testing.yml: upgrade actions/checkout and actions/cache to v3 MISC: Dockerfile.focal: comment fixups GITHUB: workflows/testing.yml: allow TeX installation during CI builds Merge branch 'mwc256-prng' # 2022-10-26 Tim Janik 153071d * mwc256-prng: ASE: randomhash.cc: add FastRng jump ahead tests ASE: main.cc: add --rand64 to generate 64bit FastRng numbers on stdout This can be used to test the PRNG quality with for example PractRand: AnklangSynthEngine --rand64 | RNG_test stdin64 -multithreaded ASE: randomhash: add FastRng, a multiply-with-carry PRNG with period 2^255 ASE: tests/benchmarks.cc: use 3k as max chunk size to avoid memset benchmarking ASE: sortnet.cc: speed up test by reducing the checked 10-element permutations Merge branch 'loft' # 2022-10-26 Tim Janik 84ff17e * loft: ASE: main.cc: configure Loft and concurrently preallocate pages on demand ASE: tests/benchmarks.cc: benchmark loft_calloc() ASE: loft: add Loft - a lock- and obstruction-free thread memory allocator Squashed commits of Loft development: ASE: loft: implement mmap() based bump allocator ASE: loft: implement MpmcStack based bucket allocator ASE: loft: add loft_alloc() ASE: loft: add loft_make_unique() and LoftFree::operator()() ASE: loft: add loft_calloc() ASE: loft: add multithreaded allocator stress test ASE: loft: use FastRng for testing ASE: loft: add loft_bucket_size() ASE: loft: add loft_get_stats(), loft_stats_string() ASE: loft: add loft_get_config(), loft_set_config(), config flags ASE: loft: add loft_grow_preallocate(), loft_set_notifier() ASE: loft: issue a warning if allocations via syscall happen inline ASE: atomics.hh: add MpmcStack.peek ASE: atomics.cc: fix signedness ASE: atomics.cc: add test for MpmcStack<> ASE: atomics.hh: add MpmcStack<>, a lock-free stack for non-reclaimable memory Merge branch 'opus-wav-flac' - capture engine output # 2022-10-28 Tim Janik bb7a442 * opus-wav-flac: UI: b/aboutdialog.vue: display FLAC version ASE: api: export get_flac_version() UI: b/aboutdialog.vue: show Opus version Remove unused Vorbis version. ASE: api.hh: export Opus version Remove unused Vorbis and MP3 version export. MISC: Dockerfile.focal: provide libopus MISC: config-checks.mk: provide ogg-1.3.4 and opus-1.3.1 Remvoe Vorbis requirement, which is unused. ASE: main.cc: exit with atquit_run() upon SIGINT ASE: loop: USignalSource::install_sigaction(): install unix signal handler ASE: utils: provide atquit handlers ASE: loop.hh: minimize latency of signal handlers by running at high priority ASE: main: add -o wavfile to the CLI ASE: engine: support engine output capturing into wave files Squashed commits of engine capturing development: ASE: engine: add queue_capture_start() and queue_capture_stop() ASE: engine.cc: stall engine once program is aborted (atquit_triggered) ASE: engine.cc: capture output via wave_writer_create_opus() ASE: engine.cc: capture output via wave_writer_create_wav() ASE: engine.cc: capture output via wave_writer_create_flac() ASE: wave: add wave file writer for WAV, OPUS, FLAC Squashed commits of wave file development: ASE: wave.hh: add WaveWriter interface ASE: wave: add writer for WAV files with support for PCM and FLOAT ASE: wave: implement Opus writer and export Opus version ASE: wave.cc: write extension header for FLOAT format For example SoX(1) complains about float WAV files 'missing extended part of fmt chunk' ASE: wave: add FLAC writer and export FLAC version ASE: wave: install atquit handlers to flush/finalize wave files ASE: main: load projects without '--preload' and support --play-autostart ASE: main.cc: auto-load projects passed on the CLI Merge branch 'time-autostop' # 2022-11-03 Tim Janik 6d531e6 * time-autostop: GITHUB: workflows/testing.yml: add repository and gh-user to IRC notifications GITHUB: workflows/ircbot.py: support -R for initiating repository name GITHUB: workflows/testing.yml: skip IRC bot name GITHUB: workflows/ircbot.py: set "YYBOT" as bot name ASE: main: add autostop handling and implement -t to trigger autostop ASE: project: start_playback(): pass autostop into engine ASE: engine: add autostop handling and delay capture until transport is running ASE: defs.hh: add D64MAX ASE: strings.cc: add string_to_seconds() ASE: formatter.cc: test atomic which is a struct and needs %s UI: b/treeselector-item.vue: use ContextMenu.valid_uri() to check valid uri UI: b/contextmenu.js: always use valid_uri() for uri in boolean contexts Merge branch 'swesterfeld-vcf-cutoff-fix' # 2022-11-03 Tim Janik 203c246 * swesterfeld-vcf-cutoff-fix: DEVICES: blepsynth: fix cutoff frequency modulation for filter Fix frequency scaling problems: the freq_in array now passes its frequency to the filter as plain Hz. Merge branch 'zoom-ui' # 2022-11-16 Tim Janik 8e65adf * zoom-ui: UI: b/menubar.vue: support Zoom In/Out/Reset for Electron ELECTRON: main.js: export zoom_level() to allow UI zoom adjustments UI: kbd.js: match_key_event: split 'Ctrl++' only once DOC: ch-development.md, ch-intro.md: fix testbit.eu URL ASE: randomhash: fix testbit.eu URL ASE: track.cc: fix MASTER_TRACK flag Merge branch 'sprite-knob' # 2022-11-16 Tim Janik 439c3b8 * sprite-knob: MISC: Dockerfile.focal: install librsvg2-bin for rsvg-convert UI: remove unused eknob.svg embedding UI: b/knob.vue: remove Vue based knob implementation UI: b/pro-input.vue: remove unused knob handling UI: b/pro-group.vue: use b-knob for scalar Property editing UI: b/knob.js: rewrite b-knob as LitElement with sprites UI: b/deviceeditor.vue: use Util.extend_property() to cache Property fields UI: Makefile.mk: provide control knob sprite assets Makefile.mk: include images/knobs/Makefile.mk IMAGES: knobs/cknob.svg: add MPL-2.0 license IMAGES: knobs/Makefile.mk: build bi- and unidirectional control knob sprites IMAGES: knobs/mksprite.py: rotate svg knob and add level indicator IMAGES: knobs/cknob.svg: add rotatable control knob UI: util.js: wheel_delta: adjust factors for modern Firefox and Chrome versions UI: startup.js: set CONFIG.dpr_movement for Chrome<=100 and Gecko As of Firefox-106, dpr_movement is needed and for Chrome-107 it is not. UI: util.js: use internal Symbol for request_pointer_lock() state handling UI: util.js: fix value updates of extended properties Catch the right event and normalize the value in JS. UI: util.js: add methods to handle destroy callbacks on objects UI: b/shell.vue: comment fixup UI: b/databubble.vue: hook into App.zmove for all event handling Also, fix stuck bubbles when rehovering the same element. UI: b/app.js: generate zmove events for pointerdown, pointermove, pointerup UI: b/app.js: make sure "mousemove" triggers ZMove updates ASE: processor.cc: keep constant number of characters for % values ASE: processor: send property notifies early, account for inflight values ASE: api.hh: add missing const ASE: crawler: use emit_notify() and avoid emit during ctor ASE: *.cc: use emit_notify() where possible Merge branch 'swesterfeld-blepsynth-adsr-time-fix' # 2022-11-17 Tim Janik 54726cd * swesterfeld-blepsynth-adsr-time-fix: DEVICES: blepsynth: use non-linear mapping for ADSR times ASE: sortnet.hh: update URLs in comments Merge branch 'cursors' # 2022-12-22 Tim Janik 32b1518 * cursors: IMAGES: anklangicons.sh: fixes for svgo 2.8.0 and Inkscape >= 1.0 IMAGES: anklangicons.sh: remove unused cursor commands RAND: hotspots.sh: add simple script to debug hotspot coords in cursors UI: b/piano-roll.vue: remove AnklangCursors.scss references UI: Makefile.mk: remove AnklangCursors.scss copy UI: Makefile.mk: copy cursors/cursors.css and all cursor SVGs UI: little.js: allow runtime postcss imports from cursors/cursors.css UI: cursors/cursors.css: add CSS vars for: cross eraser hresize knife move pen UI: cursors/knife.svg: add 28x28 pixel "knife" cursor UI: cursors/hresize.svg: add 28x28 pixel "horizontal resize" cursor UI: cursors/cross.svg: add 28x28 pixel "cross" cursor UI: cursors/move.svg: add 28x28 pixel "move" cursor UI: cursors/eraser.svg: make cursor 28x28 pixels UI: cursors/pen.svg: make cursor 28x28 pixels UI: cursors/: move eraser.svg and pen.svg here Merge branch 'piano-roll-and-shell-grid-layout' # 2022-12-22 Tim Janik 5772625 * piano-roll-and-shell-grid-layout: UI: b/pianoroll.js: document piano-roll use and fix hover handling UI: b/piano-ctrl.js: add convenient tool registration helpers UI: eslintrc.js: allow empty blocks UI: util.js: allow PointerDrag cleanup handler UI: b/pianoroll.js: fix scroll and select notes_canvas tool on hover UI: b/piano-ctrl.js: implement note resize tool UI: b/piano-ctrl.js: implement select, paint, erase as dedicated tools UI: b/pianoroll.js: context menu cleanup UI: b/clipview.vue: let the canvas fill parentElement UI: styles.scss, startup.js: turn HFlex & VFlex into LitElement UI: b/pianoroll.js: use one source for DPR calculations UI: b/pianoroll.js: properly align toolmenu button UI: b/pianoroll.js: fix background color UI: b/pianoroll.js: add pianorollmenu items UI: b/treeselector-item.vue: fix 'event' reference UI: b/knob.js: fix 'event' reference UI: b/editable.vue: fix 'event' reference UI: eslintrc.js: warn if a global 'event' is referenced UI: b/piano-ctrl.js: fix merging of selection changes with note modifications UI: b/pianoroll.js: handle menu hotkeys UI: b/contextmenu.js: fix unmapping in map_kbd_hotkeys() UI: kbd.js: handle document.activeElement == null UI: b/piano-ctrl.js: stop event if a key was handled UI: b/pianoroll.js: grab focus UI: b/piano-ctrl.js: adjust piano_roll access patterns UI: b/pianoroll.js: provide .srect property, repaint upon changes UI: b/pianoroll.js: handle tool menu and hook up piano-ctrl UI: theme.scss: move scrollbar styling here to work inside shadow DOMs UI: startup.js: turn CGrid into a LitElement to work inside shadow DOMs UI: b/pianoroll.js: work around FireFox exception when ctx.font is assigned UI: b/shell.vue: allow notification callbacks on get_note_cache() UI: b/statusbar.vue: use elementsFromPoint() to find Tips inside shadowRoots UI: b/contextmenu.js: support @activate="handler" notifications UI: b/menubar.vue: move comment to work around Vue's template child handling UI: b/knob.js: ignore hscrolls to allow horizontal device panel scrolling UI: b/devicepanel.vue: adjust to b-shell grid layout UI: b/pianoroll.js: fix scrollbar style UI: b/pianoroll.js: add indicator to show the current tick UI: b/shell.vue: use for the basic layout UI: b/pianoroll.js: implement as LitElement UI: b/pianoroll.js: add skeleton UI: b/piano-roll.vue: remove Vue based piano-roll Merge branch 'documentation-sections' # 2022-12-22 Tim Janik 11d3cc2 * documentation-sections: DOC: Makefile.mk: link to and search for ui/cursors/ UI: b/pianoroll.js: add data-f1="#piano-roll" to link F1 to piano roll manual UI: b/shell.vue: popup manual on 'F1', support anchors via data-f1="#anchor" UI: kbd.js: allow event.keyCode filtering DOC: Makefile.mk: include docs from pianoroll and piano-ctrl DOC: ch-editing.md: add brief editing introduction UI: Makefile.mk: extract Markdown sections from JS files into doc/b/*.md UI: xbcomments.js: extract Markdown sections from JavaScript comment blocks Merge branch 'build-fixes' # 2022-12-28 Tim Janik 215830f * build-fixes: UI: Makefile.mk: add missing dependency from ui/colors.js on ui/zcam-js.mjs This fixes postcss errors due to missing zcam-js.mjs. X11TEST: play-notes.json: adjust simlpe UI test to UI path changes UI: cursors/cursors.css: add MPL-2 copyright Merge branch 'fix-embed-fd-hangs' # 2022-12-28 Tim Janik ea7b53b * fix-embed-fd-hangs: ASE: clapplugin.cc: map PollFD::NVAL to CLAP_POSIX_FD_ERROR ASE: loop.*: support POLLWRBAND, always pass on POLLNVAL, POLLERR and POLLHUP Merge branch 'lit-clipview' # 2023-01-07 Tim Janik ee3d1f0 * lit-clipview: ASE: api.hh: add Clip.all_notes read-only property Enable property caching UI code for fetching notes and updates. UI: b/pianoroll.js: use Util.wrap_ase_object() to fetch Clip notes UI: b/piano-ctrl.js: use Util.wrap_ase_object() to fetch Clip notes UI: b/clipview.js: use wrap_ase_object() to access Clip properties UI: util.js: export the wrapper.js API UI: wrapper.js: add AseObject wrapper to cache properties UI: startup.js: add class name to GC debug messages UI: b/shell.vue: provide Shell.piano_roll UI: Makefile.mk: use Vue production build unless MODE=debug This avoids massive memory leaks of Vue components. UI: Makefile.mk: fix missing dependency MISC: package.json.in: upgrade to vue-3.2.45 and lit-2.5.0 UI: Makefile.mk: use 'npm --prefer-offline' only when rebuilding MISC: config-checks.mk: do not force '--prefer-offline' on npm MISC: config-uname.mk: define __UIDEBUG__=1 for MODE=debug UI: b/pianoroll.js: remove old debug() UI: b/contextmenu.js: remove useless performance hog UI: b/tracklist.vue: add new track on dblclick on track list only UI: b/pianoroll.js: fix stale play cursor on clip change UI: b/clipview.js: port BClipView to LitElement UI: b/: use Track.list_launcher_clips() ASE: api.hh. track: rename Track.list_launcher_clips() Merge branch 'lit-cliplist' # 2023-01-07 Tim Janik 2724283 * lit-cliplist: UI: b/partlist.vue: disable old code DOC: Makefile.mk: add docs from b/cliplist.md ASE: api.hh: rename Track.launcher_clips() and ass 'notify:launcher_clips' UI: b/statusbar.vue: use Util.find_element_from_point() UI: b/shell.vue: determine F1 anchor from find_element_from_point() UI: util.js: add find_element_from_point(), supporting shadow DOMs UI: b/clipview.js: fix properties UI: b/cliplist.js: support F1 help for ClipList UI: b/cliplist.js: port to LitElement UI: b/app.js: add App.zmove_last() UI: b/pianoroll.js: minor rename Merge branch 'lit-editable' # 2023-01-08 Tim Janik b1b949d * lit-editable: UI: b/trackview.vue: adjust b-editable use UI: b/positionview.vue: adjust property editing ASE: project.cc: add missing notifications UI: b/editable.js: port to LitElement Merge branch 'lit-trackview' # 2023-01-08 Tim Janik 529af30 * lit-trackview: UI: b/trackview.js: render sound level meter from telemetry UI: b/cliplist.js: minor formatting ASE: track.cc: add dbspl0 and dbspl1 to telemetry ASE: combo: add sound level probing in dB to AudioChain ASE: datautils: add square_max() ASE: midilib.cc: reserve space to avoid malloc ASE: datautils: add square_sum() for FPU floats ASE: cxxaux.hh: add ASE_ALIGNED16() and ALIGNMENT16() UI: b/app.js: maintain App.current_track, notify accordingly ASE: track: support midi_channel changes UI: b/*.js: fix ${ref} syntax UI: b/trackview.js: port to LitElement Merge branch 'lit-tracklist' # 2023-01-10 Tim Janik 3e64716 * lit-tracklist: UI: b/tracklist.js: hide HEADER and FOOTER UI: b/tracklist.js: add scrollshadow at the top UI: theme.scss: remove fragile parts of scrollbar styling UI: b/tracklist.js: fix layout for few tracks UI: b/tracklist.js: support x/y scrolling UI: b/cliplist.js: clipview children must not shrink UI: b/tracklist.js: port to LitElement UI: b/trackview.js: increase width of level meters UI: b/clipview.js: use track.$id for colorization UI: b/cliplist.js: fix setting of b-clipview.track property UI: b/app.js: provide App.project ASE: object.cc: skip notifications for objects without shared_ptr ASE: api.hh: rename and notify Project.all_tracks() (former list_tracks) Merge branch 'api-docs' # 2023-03-03 Tim Janik 63bd26e * api-docs: GITHUB: workflows/testing.yml: rename CI jobs GITHUB: workflows/testing.yml: add step to build and upload API docs MISC: Dockerfile.arch: provide doxygen openssh and poxy via pip MISC: Dockerfile.arch: first update archlinux-keyring This works around an outdated keyring in the archlinux:latest docker image. MISC: dbuild.sh: add support for the docker -p option DOC: poxy.sh: setup AUTHOR/COMITTER EMAIL/NAME, GIT_SSH_COMMAND for uploads DOC: poxy.sh: provide NODE_PATH DOC: poxy.sh: add program doc/ dir to documentation output DOC: poxy.sh: add README as main index page DOC: poxy.sh: add project version to docs DOC: poxy.sh: upload to the `publish` branch DOC: poxy.sh: support conditional builds DOC: poxy.sh: move build commands into poxy_build function DOC: poxy.sh: add -u for upload DOC: poxy.sh: support accesskey="f" for Search DOC: poxy.sh: support -s to serve html/ contents DOC: poxy.sh: add NEWS.md DOC: poxy.sh: add ch-scripting.md to UI docs DOC: poxy.sh: generate API reference documentation with Poxy UI: Makefile.mk: remove rules to build JS docs DOC: Makefile.mk: build scripting docs from ui/host.js and ch-scripting.md DOC: copyright.ini: fix doc/jsdocrc.json path DOC: ch-scripting.md: move here from ui/ DOC: jsdoc2md.js: generate markdown from *.js via jsdoc-api DOC: jsdocrc.json: configure JsDoc to use doc/jsdoc-slashes.js DOC: jsdoc-slashes.js: move here from ui/slashcomment.js DOC: jsdoc2md.js: guard aganst doclets with non-string name I.e. doclet.meta.code.name can be an Integer. MISC: package.json.in: add jsdoc-api UI: b/shell.vue: add basic docs ASE: testing.hh: document Test namespace ASE: api.hh: add docu comment to Ase namespace README.md: fix github workflow badge URL Merge branch 'jsdoc-search' # 2023-03-05 Tim Janik dc2f640 * jsdoc-search: DOC: poxy.sh: ignore case during search UI: util.js: add PointerDrag comment DOC: poxy.sh: extend searchdata-v2.js with token list from JS docs DOC: poxy.sh: avoid fake 'Export' prefix for JS symbols DOC: jsdoc2md.js: use for anchors, add data-4search to anchors The old empty span anchors could be removed by some HTML processors. DOC: poxy.sh: jsdoc2md will now directly generate markdown from JS Merge branch 'reactive-render' # 2023-03-08 Tim Janik 6f6d3be * reactive-render: UI: startup.js: rerender all LitElements and known Vue components on resize UI: little.js: export LitComponent, which has reactive render() and updated() UI: little.js: add lit_update_all() UI: wrapper.js: improve error message for missing getters UI: wrapper.js: support reactive_wrapper() callbacks for wrap_ase_object() fields UI: wrapper.js: implement define_reactive() and reactive_wrapper() Merge branch 'build-time-postcss' # 2023-03-15 Tim Janik 54353a7 * build-time-postcss: UI: split styles into dark, grid, domstyles, mixins, shadow, globals SCSS files globals.scss: styles for the LightDOM only shadow.scss: styles only for ShadowDOM components domstyles.scss: common styles for the LightDOM and ShadowDOM grid.scss: provide helpers mixins.scss: base to customize components dark.scss: basic theme, allow switching via import $themename_scss; cursors/cursors.css: provide CSS variables for custom cursors UI: cursors/cursors.css: fix quotes UI: cursors/cursors.css: introduce --svg-cursor-* variables at :root{} scope This is needed to make cursors.css actualy valid CSS. UI: index.html: remove postfix and css validator, load vue-styles.css, fix preloads UI: b/clipview.js: use zcam directly UI: b/*.js: embed and load CSS via JsExtract UI: b/positionview.vue: use $b-lcdscreen-fg, $b-lcdscreen-bg UI: b/: fix $b-button-radius $b-button-radius $b-track-meter-gap $b-track-meter-thickness UI: b/pianoroll.js: import grid.scss UI: b/positionview.vue: use t-lcdscreen-fg, t-lcdscreen-bg UI: b/trackview.js: add --track-meter-thickness, --track-meter-gap UI: b/*.vue: use --button-radius UI: b/*.js: use --button-radius UI: b/*.js: use var(--button-radius); UI: b/*.vue: use var(--button-radius); UI: b/deviceeditor.vue, b/pro-group.vue: use --device-radius UI: b/shell.vue: remove unused styles UI: b/pianoroll.js: remove useless color assignment UI: b/textinput.js: include mixins.scss to use SCSS variable UI: b/menuseparator.js: include mixins.scss to use SCSS variable UI: b/*.js: extend componenets from LitComponent instead of LitElement UI: b/dialog.vue: inline box-shadow styling UI: b/pianoroll.js: import grid helpers from grid.css UI: b/menubar.vue: specify 'justify-content: space-between' directly UI: b/pianoroll.js: rely on global cursors.css import UI: startup.js: remove unused postcss import UI: jsextract.js: document jsextract.js usage UI: jsextract.js: extract JsExtract.scss`` marker snippets into *.jscss files UI: little.js: document JsExtract usage UI: little.js: fix .css URL construction to always have an extension UI: little.js: load into shadow roots UI: little.js: add ./shadow.css to LitComponent UI: little.js: remove postcss UI: little.js: export JsExtract with scss`` and fetch_css() UI: little.js: add default define $themename_scss:dark.scss; Also, disable csstree-validator which yields outdated warnings. UI: little.js: load shadow.scss into all LitComponent elements UI: little.js: LitComponent: always adopt shadow.css in createRenderRoot() UI: little.js: CSS import: remove premature fetch + caching, always import all UI: little.js: remove cursors/cursors.css from memorized imports MISC: package.json.in: add stylelint MISC: package.json.in: remove perfectionist-dfd UI: sfc-compile.js: extract *.vuecss files UI: Makefile.mk: remove csstree-validator and postcss browserify bundling UI: Makefile.mk: run stylelint from output dir UI: stylelintrc.cjs: add stylelint config UI: Makefile.mk: extract, process and run stylelint on *.jscss files UI: Makefile.mk: process *.vuecss files UI: Makefile.mk: run stylelint on processed styles UI: Makefile.mk: generate vue-styles.css UI: Makefile.mk: remove Vue css rules UI: Makefile.mk: take quoted cursor urls into account UI: Makefile.mk: move theming into ui/dark.scss, build .css from .scss UI: Makefile.mk: use postcss.js with --map and -i UI: Makefile.mk: fix install pattern for ui/b/ UI: postcss.js: support stdout output UI: postcss.js: fix exit code by re-throwing errors UI: postcss.js: add -Dvar=value for predefined variables UI: postcss.js: add -C to find imports UI: postcss.js: directly print PostCSS exceptions to provide useful stacktraces UI: postcss.js: support fetching imports from network UI: postcss.js: remove perfectionist-dfd, auto-import *.scss unless -i is given UI: postcss.js: add zlerp() CSS function UI: postcss.js: add zmod4() CSS function UI: postcss.js: make source map configurable UI: colors.js: add zlerp() for color interpolation UI: colors.js: fix missing ZCAM attributes UI: colors.js: add zmod4() to debug ZCAM attributes for colors UI: colors.js: support missing first zmod() color argument DOC: jsdoc2md.js: fix @file docu being ignored in some cases DOC: jsdoc2md.js: add anchor to constants ASE: websocket.cc: allow caching of duplicate requests within 1 second Merge branch 'transportinfo', closes #5 # 2023-05-12 Tim Janik 3819f90 * transportinfo: ASE: clapplugin: provide transport information for the plugin MISC: config-uname.mk: link -shared: allow undefined symbols with sanitizers Merge branch 'libstdc++-13' # 2023-05-17 Tim Janik c0f01a0 * libstdc++-13: ASE: cxxaux.hh: patch up make_shared() to make libstdc++13 happy * Move shared ptr allocator out of function scope (to allow template specialization) * Add rebind<> template to shared ptr allocator which derives from std::allocator * Specialize rebind<> so it yields the same allocator for only the shared ptr value type * This "fixes" two static assertions that were added in libstdc++13, see: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=72792#c12 ASE: cxxaux.hh: remove unused FriendAllocator<> ASE: cxxaux.hh: fix missing include ASE: loop.hh: always use ASE_DEFINE_MAKE_SHARED() to implement make_shared() ASE: formatter.hh: include cstdint for int32_t ASE: clapplugin.cc: add missing braces for clap_event_transport_t initializer UI: wrapper.js: add missing Util import Makefile.mk: add simple rule to generate +compile_commands.json Merge branch 'g++-fixes' # 2023-05-17 Tim Janik 8404380 * g++-fixes: ASE: cxxaux.hh: fix internal member typedef name ASE: cxxaux.hh: use std::conditional_t<> for rebind::other, fix for g++-12 With template specializations, g++-11 and g++-12 error out with "explicit specialization in non-namespace scope", so we use std::conditional_t<> which seems to work with g++-12 and clnag++-15. Merge branch 'ci-build-updates' # 2023-05-19 Tim Janik 580cf66 * ci-build-updates: MISC: Makefile.mk: use gh, keed *-dev version number for Nightly releases * Use gh instead of hub to create releases * Keep the development version number for Nightly releases * Add a brief disclaimer about Nightly releases MISC: version.sh: simplify, support --commit-date and $RELEASE_VERSION GITHUB: workflows/testing.yml: add named step "Fetch last release tag" GITHUB: workflows/testing.yml: fetch git history since last release tag GITHUB: workflows/testing.yml: update ping deps GITHUB: workflows/testing.yml: fix workflow names GITHUB: workflows/testing.yml: run (full) docu upload on Ubuntu GITHUB: workflows/testing.yml: run X11 tests on Arch DOC: poxy.sh: include all Anklang docs in upload MISC: Dockerfile.focal: install pip, doxygen and poxy MISC: Dockerfile.focal: install twm for x11test MISC: Dockerfile.arch: install libgtk3 and libnss for Electron MISC: Dockerfile.arch: install xvfb ffmpeg twm for x11test-v X11TEST: x11rec.sh: switch to using twm with auto placement GITHUB: workflows/testing.yml: use full doc/ install dir as doc artifact GITHUB: workflows/testing.yml: test clang builds under Ubuntu GITHUB: workflows/testing.yml: remove unused env var from Arch build rule Merge branch 'nightly-version' # 2023-05-20 Tim Janik 8459bbb * nightly-version: MISC: Makefile.mk: update Nightly releases to avoid excessive emails MISC: gh_delete_assets.sh: add script to delete all release assets via gh README.md: update documentation links MISC: version.sh: use 0.1.2.dev3 for development versions for proper ordering Using .dev[0-9] postfixes properly sorts: 0.1.2 < 0.1.2.dev3 < 0.1.3 This works for sort -V, dpkg, rpm and PIP versions. See: https://peps.python.org/pep-0440/#public-version-identifiers MISC: Makefile.mk: fix typo Merge branch 'typescript-jsdoc-checks' # 2023-06-05 Tim Janik 819895c * typescript-jsdoc-checks: UI: types.d.ts: allow App, Data, Shell Ase globals UI: index.html: add importmap to allow lit module imports UI: tsconfig.json: configure typescript checks, allow JS type checks + imports UI: wrapper.js: add @param type UI: little.js: add @ts-check, add types, add explicit exports for tsc UI: b/app.js: add @ts-check and missing property decl UI: b/cliplist.js: add @ts-check, missing imports, exports and initializations UI: b/clipview.js: export class UI: wrapper.js: add @ts-check and type annotations UI: b/statusbar.vue: use material icons for info and instrument panel UI: b/icon.js: fix material-icons size UI: Makefile.mk: add 'tscheck', 'stylelint' and 'lint' rules * add 'lint' dependency to run all of stylelint eslint tscheck * add 'tscheck' rule to selectively run typescript checks * add explicit 'stylelint' rule * simplify lit.js rollup * ui/vue.js: leave eslint cache alone * install material-icons from npm * cleanup eslint rule * ui/rebuild: avoid bg jobs, no need to print dir in sub MAKE MISC: package.json.in: cleanup serve and rebuild scripts MISC: package.json.in: remove eslint script, use make eslint instead MISC: package.json.in: install material-icons@1.13.6 Makefile.mk: whitespace fix GITHUB: workflows/testing.yml: use git fetch --unshallow Apparently `git fetch --shallow-since` does not work with the merge commit created by PR checkouts. Using `git fetch --unshallow` might be less efficient for regular branches, but at least works with trunk and PRs. MISC: package.json.in: upgrade lit, electron, vue, postcss, etc UI: b/pianoroll.js: fix indicator interacting with the cursor MISC: package.json.in: install typescript to enable code checks Merge branch 'jsdoc-tsimport' # 2023-06-05 Tim Janik c184b5e * jsdoc-tsimport: UI: b/cliplist.js: jsdoc-tsimport-plugin does not support a blank after import DOC: jsdocrc.json: use jsdoc-tsimport-plugin to parse tsc file imports * Fix JsDoc choking on typescript import statements that import typed from other JS files. * See also: https://github.com/jsdoc/jsdoc/issues/1645#issuecomment-768293857 MISC: package.json.in: install jsdoc-tsimport-plugin Merge branch 'fix-imports' # 2023-06-06 Tim Janik 1b47b9e * fix-imports: UI: util.js: add missing Kbd import UI: eslintrc.js: remove 'Util' global UI: b/*.vue: add missing Util imports UI: b/*.js: add missing Util imports Merge branch 'appimage-dependencies' # 2023-06-06 Tim Janik 1696a12 * appimage-dependencies: MISC: mkAppImage.sh: reduce workarounds by using linuxdeploy --deploy-deps-only MISC: mkAppImage.sh: add ELF dependencies for AnklangSynthEngine and gtk2wrap This adds libFLAC.so, libogg.so, libopus.so and libgdk-x11-2.0.so, libgtk-x11-2.0.so to the AppImage. Closes #13. Merge branch 'appimage-rpath-fix' # 2023-06-07 Tim Janik f609e1e * appimage-rpath-fix: MISC: mkAppImage.sh: avoid `linuxdeploy {-e|-l}` which change binary locations Avoid `linuxdeploy {-e|-l}`, these options change the binary locations by copying. The copies mess up ELF location detection and restoring the original locations causes wrong relative $ORIGIN paths. We just use --deploy-deps-only now, which keeps the binaries in place and correctly adjusts the relative $ORIGIN path. MISC: mkAppImage.sh: remove unused command Merge branch 'swesterfeld-fix-pcg-ub' # 2023-06-07 Tim Janik 1d49d48 * swesterfeld-fix-pcg-ub: ASE: randomhash: fix undefined behaviour in Pcg32Rng Left shifting a 32bit value by 32 bits is UB. * Closes #14 Merge branch 'sorted-vector' # 2023-06-08 Tim Janik 7b3b380 * sorted-vector: ASE: sortnet: implement SortedVector ASE: testing.hh: TFLOATS(): assert float equality within an apsilon ASE: combo.cc: add SPL link Merge branch 'clang-tidy' # 2023-06-18 Tim Janik 29cc5ff * clang-tidy: MISC: mkassets.sh: always use /tmp/anklang-mkassets/ for release builds GITHUB: workflows/testing.yml: fix key file permissions GITHUB: workflows/testing.yml: fixup permissions at CI end GITHUB: workflows/testing.yml: remove missing variable reference GITHUB: workflows/testing.yml: fix arch perms and focal redirection GITHUB: workflows/testing.yml: use $DOCKER_RUN and ghcr.io for all tasks * use $DOCKER_RUN and ghcr.io caching for Focal-Docs * adjusting git.safe.directory is not needed for Lunar * use $DOCKER_RUN and ghcr.io caching for Arch-Replay MISC: Dockerfile.focal: remove unused RUNs, rename user to ubuntu * remove unused OOTBUILD, rename builder user to ubuntu * add a comment howto build and run this image * use fixed user and group id of 1000 MISC: Dockerfile.arch: use fixed user and group ids of 1000 MISC: Dockerfile.arch: remove unused OOTBUILD and unused poxy MISC: Dockerfile.lunar: remove unused OOTBUILD GITHUB: workflows/testing.yml: directly use docker run for lunar and fix perms MISC: Dockerfile.lunar: upgrade to nodejs-20 MISC: package.json.in: upgrade npm build tools and electron-25 MISC: package.json.in: remove unused rollup-plugin-node-resolve MISC: Makefile.mk: fix missing directory dependency GITHUB: workflows/testing.yml: add Lunar-Clang-Tidy, rename Focal-Docs MISC: Dockerfile.lunar: provide build environment with clang-17 on ubuntu:23.04 MISC: colorize.sh: colorize error, warning, note and special case Emacs MISC: Makefile.mk: reimplement clang-tidy and clang-tidy-clean rules Makefile.mk: defined CLANG_TIDY Makefile.mk: create ls-tree.d and provide $(LS_TREE_LST) Merge branch 'component-styling' # 2023-06-21 Tim Janik 234bf99 * component-styling: UI: b/playcontrols.js: use JsExtract.css_url() UI: b/icon.js: use JsExtract.css_url() UI: b/textinput.js: make this a shadowless component UI: little.js: add JsExtract.css_url() UI: little.js: use cast to work around TS2425 UI: b/playcontrols.js: port to LitComponent UI: Makefile.mk: remove temporary file UI: b/*.vue: remove useless mixins import UI: index.html: import globals.css UI: globals.scss: import elements.scss which includes mixins UI: Makefile.mk: create globals.css and auto-import mixins.scss for vue styles UI: elements.scss: rename from domstyles.scss UI: b/button-bar.vue: port to LitComponent UI: b/*.js: access only LitComponent fields (not LitElement) UI: little.js: remove LitElement export UI: startup.js: derive from LitComponent (not LitElement) UI: b/*.js: derive from LitComponent (not LitElement) UI: b/partlist.js: embed and load CSS via JsExtract UI: Makefile.mk: fix dependenc for scss rebuilds UI: b/partlist.js: import Util UI: types.d.ts: declare __DEV__ global UI: b/pianoroll.js: extend LitComponent and use reactive_wrapper to track notes Also, merge multiple repaint requests into the same micro task. UI: b/clipview.js: leave width to parent UI: b/cliplist.js: set 'data-f1' only once suffices UI: b/trackview.js: render b-trackview context menu on demand UI: b/contextmenu.js: fix close() and synchronize updates * await this.updateComplete before showModal() * properly emit 'close', take nesting into account UI: b/partlist.js: port to LitElement UI: mixins.scss: add transparent-scrollbars mixin Merge branch 'InterDisplay', based on InterVariable-4.0 font # 2023-06-22 Tim Janik 89c9d01 * InterDisplay: UI: dark.scss: add a fallback font stack UI: theme.scss: remove outdated font stuff UI: mixins.scss: move b-kbd-hotkey here UI: elements.scss: use b-font-weight-bold() and b-font-weight-bolder() UI: b/*.vue, b/*.js: use b-font-weight-bold() and its variants UI: dark.scss: define b-font-weight-{normal|bold|bolder} mixins UI: b/menutitle.js: use drop-caps while InterVariable-4.0 small-caps are broken See also: https://github.com/rsms/inter/issues/556#issuecomment-1598010623 UI: elements.scss: leave font handling to theme, globals and shadow UI: b/pianoroll.js: use b-canvas-font UI: b/partthumb.vue: use b-canvas-font UI: b/clipview.js: use b-canvas-font UI: shadow.scss: use b-ui-font() inside shadow DOMs UI: globals.scss: make use of b-ui-font() UI: dark.scss: configure b-ui-font() for "InterVariable" in InterDisplay style UI: globals.scss: leave font-face defs to index.html UI: index.html: cleanup preloads, add @font-face for "InterVariable" UI: b/icon.js: add small comment UI: Makefile.mk: download InterVariable.woff2 UI: stylelintrc.cjs: disable "font-family-name-quotes" to allow quoted font names Merge branch 'fix-lit-html' # 2023-06-22 Tim Janik 31da2dd * fix-lit-html: UI: b/*.js: fix trailing-solidus in html`` markup UI: eslintrc.js: add plugin:lit/recommended to linting rules MISC: package.json.in: install eslint-plugin-lit Merge branch 'inputs-as-litelement' # 2023-06-27 Tim Janik 2ddfe22 * inputs-as-litelement: X11TEST: play-notes.json: adjust recording for new web components ASE: server.cc: listen on "notify" emissions from properties ASE: properties.cc: fix notifications, emit notify:identifier UI: util.js: turn xprop.value_ into a reactive property UI: b/choiceinput.js: take b-objecteditor into account in CSS UI: b/pro-input.vue: use @valuechange on b-choiceinput UI: b/preferencesdialog.vue: use b-objecteditor UI: util.js: avoid extending the same property twice UI: util.js: export fullstop() UI: Makefile.mk: use tsc with --pretty false only inside emacs UI: b/objecteditor.js: port to LitComponent * Turn into shadowless component * Properly prefix CSS classes * Listen on and handle @valuechange events * Do not freeze extended properties that we keep mutating * Remove old resize blocker logic UI: startup.js: load basic custom components early on UI: b/basics.js: move h-flex, v-flex, c-grid, push-button here, shadowless Make these simple basic containers shadowless, i.e. without shadow root. UI: b/pro-input.vue: add support for b-choiceinput UI: little.js: export 'nothing' from Lit UI: types.d.ts: add debug() global UI: b/fed-object.vue: add support for b-choiceinput UI: b/choiceinput.js: port to LitComponent, render on demand only UI: b/tracklist.js: fix stacking of top border shadow UI: b/switchinput.js: allow LEFT/RIGHT/UP/DOWN to toggle UI: b/fed-object.vue: add support for b-switchinput UI: b/switchinput.js: port to LitComponent UI: types.d.ts: declare global CONFIG UI: b/fed-object.vue: add support for b-numberinput UI: b/numberinput.js: simplify and fix sizing UI: b/numberinput.js: port to LitComponent UI: b/textinput.js: dispatch value changes as valuechange "event" Merge branch 'ts-check-lit-components', add ts-check and fix lint issues # 2023-07-03 Tim Janik a7ea5f4 * ts-check-lit-components: UI: b/app.js: reload UI on project changes UI: b/objecteditor.js: fix output UI: util.js: add missing type annotations UI: kbd.js: add missing type annotations UI: b/trackview.js: add @ts-check and missing type annotations UI: b/tracklist.js: add @ts-check and missing properties UI: b/playcontrols.js: add @ts-check UI: b/pianoroll.js: add @ts-check and missing type annotations UI: b/piano-ctrl.js: minor type fix UI: b/partlist.js: add @ts-check UI: b/more.js: add @ts-check UI: b/menutitle.js: add @ts-check UI: b/menuseparator.js: add @ts-check UI: b/menurow.js: add @ts-check UI: b/menuitem.js: add @ts-check UI: b/knob.js: add @ts-check and missing type annotations UI: b/editable.js: add @ts-check UI: b/contextmenu.js: add @ts-check and missing type annotations UI: b/clipview.js: add @ts-check and missing type UI: b/buttonbar.js: add @ts-check README.md: escape FIXME keywords UI: Makefile.mk: grep for reminders in ui/lint DEVICES: Makefile.mk: grep for reminders in devices/lint Makefile.mk: at the end of 'all', grep for reminder keywords in known sources Makefile.mk: ls-tree.d needs GITCOMMITDEPS, i.e. misc/config-utils.mk ASE: Makefile.mk: grep for reminders in ase/lint Makefile.mk: add 'lint' as toplevel phony rule UI: b/tracklist.js: cleanup CSS UI: b/textinput.js: cleanup CSS UI: b/switchinput.js: cleanup CSS UI: b/shell.vue: cleanup CSS UI: b/positionview.js: cleanup CSS UI: b/pianoroll.js: cleanup CSS UI: b/noteboard.vue: cleanup CSS UI: b/menutitle.js: cleanup CSS UI: b/menurow.js: cleanup CSS UI: b/menuitem.js: cleanup CSS UI: b/knob.js: cleanup CSS UI: b/icon.js: cleanup CSS UI: b/folderview.vue: cleanup CSS UI: b/filedialog.vue: cleanup CSS UI: b/editable.js: cleanup CSS UI: b/dialog.vue: cleanup CSS UI: b/databubble.vue: cleanup CSS UI: b/contextmenu.js: cleanup CSS UI: b/clipview.js: cleanup CSS UI: b/basics.js: inlcude v-flex mixin UI: theme.scss: fix color syntax UI: startup.js: fix import path UI: Makefile.mk: use stylelint with -f unix only inside emacs UI: Makefile.mk: add missing ui/spinner.scss dependency UI: stylelintrc.cjs: ignore whitespace rules UI: Makefile.mk: add Ase.server @type UI: mixins.scss: add v-flex mixin UI: mixins.scss: use $b-font-stack-kbd-mono UI: dark.scss: define $b-font-stack-kbd-mono for hotkey rendering UI: b/menubar.js: port to LitComponent * Cleanup markup * Cleanup CSS UI: b/positionview.js: port to LitComponent UI: b/basics.js: use h-flex() UI: mixins.scss: add h-flex() mixin MISC: Dockerfile.arch: install unzip Merge branch 'poxystyle' # 2023-07-24 Tim Janik 7134954 * poxystyle: DOC: poxy.sh: allow doc/poxystyle.css to fixup colors DOC: poxystyle.css: fix light theme colors and sizes UI: b/cliplist.js: minor edit README.md: update roadmap with items from Stefan Westerfeld Merge branch 'modern-normalize' # 2023-07-24 Tim Janik aa3a6b6 * modern-normalize: UI: little.js: load globals.css into every LitComponent UI: index.html: give globals.css precedence over vue-styles.css UI: index.html: remvoe shadow.css UI: Makefile.mk: remove ui/elements.scss ui/shadow.scss Makefile.mk: run 'lint' during `make check` UI: remove unused files elements.scss and shadow.scss UI: globals.scss: merge styles from elements.scss and shadow.scss UI: globals.scss: use normalize.css to normalize latest Chrome & Firefox UI: normalize.css: leave font-family setting to our own theme MISC: mkcopyright.py: fix MIT License pattern to deal with case and 'd'-ending UI: normalize.css: insert MIT License and add Copyright notices UI: normalize.css: add renamed modern-normalize.css version 2.0.0 Add modern-normalize.css from https://github.com/sindresorhus/modern-normalize licensed MIT. Merge branch 'dark-palette' # 2023-07-24 Tim Janik 61e1ecd * dark-palette: UI: dark.scss, globals.scss: use palette for body colors UI: Makefile.mk: add palette.scss to scss files UI: palette.scss: add warm grey palette based on ZCAM Jz (lightness) steps Merge branch 'aboutdialog-lit' # 2023-07-27 Tim Janik 874535f * aboutdialog-lit: UI: index.html: add comments to start_view_transition() UI: globals.scss: add b-dialog styling UI: b/contextmenu.js: use transparent backdrop for menus UI: globals.scss: add view-transition-group defaults, add scale0 keyframes UI: dark.scss: add b-animation-duration and b-dialog-colors UI: tsconfig.json: avoid checks of postcss.js.tst.js UI: b/menubar.js: make use of Shell.show_about_dialog() UI: b/app.js: leave aboutdialog handling to Shell.show_about_dialog() UI: b/shell.vue: use b-aboutdialog.shown, add show_about_dialog(), handle close * Use proper internal state for showing b-aboutdialog * Expose showing/hiding through show_about_dialog() * Allow animated closing of b-aboutdialog with start_view_transition UI: b/aboutdialog.js: display Lit version number UI: b/aboutdialog.js: port to LitComponent UI: eslintrc.js: declare start_view_transition as global symbol UI: index.html: define start_view_transition() This is a Vue-aware wrapper around document.startViewTransition() (atm Chrome specific), that still does the right thing on Firefox and has a disable flag. UI: Makefile.mk: index.html: add lit_version to config_json Merge branch 'postcss-normalize-charset' # 2023-07-27 Tim Janik 746575f * postcss-normalize-charset: UI: postcss.js: postprocess CSS with postcss-normalize-charset MISC: package.json.in: install postcss-normalize-charset UI: postcss.js: add support for -I to add include paths Merge branch 'globalscss-4-litcomponents' # 2023-07-27 Tim Janik 709f4e9 * globalscss-4-litcomponents: UI: Makefile.mk: run stylelint on ui/globals.css UI: b/positionview.js: add CSS to globals.css, avoid shadowRoot UI: b/playcontrols.js: add CSS to globals.css, avoid shadowRoot UI: b/pianoroll.js: add CSS to globals.css, avoid shadowRoot UI: b/partlist.js: add CSS to globals.css, avoid shadowRoot UI: globals.scss: only style button and push-button for LightDOM UI: b/objecteditor.js: add CSS to globals.css, avoid shadowRoot UI: b/switchinput.js: add CSS to globals.css, avoid shadowRoot UI: b/numberinput.js: add CSS to globals.css, avoid shadowRoot UI: b/textinput.js: add CSS to globals.css, avoid shadowRoot UI: b/more.js: add CSS to globals.css, avoid shadowRoot UI: b/tracklist.js: add CSS to globals.css, avoid shadowRoot UI: b/trackview.js: add CSS to globals.css, avoid shadowRoot UI: b/menubar.js: fix b-menuseparator UI: b/trackview.js: fix b-menuseparator UI: b/menutitle.js: add CSS to globals.css UI: b/menuseparator.js: make b-menuseparator a simple HTMLHRElement UI: b/menurow.js: add CSS to globals.css, avoid shadowRoot UI: b/menuitem.js: add CSS to globals.css UI: b/menubar.js: add CSS to globals.css, avoid shadowRoot UI: b/knob.js: add CSS to globals.css, avoid shadowRoot UI: b/icon.js: add CSS to globals.css UI: b/editable.js: add CSS to globals.css UI: b/contextmenu.js: add CSS to globals.css UI: b/clipview.js: add CSS to globals.css, avoid shadowRoot UI: b/cliplist.js: add CSS to globals.css, avoid shadowRoot UI: b/choiceinput.js: add CSS to globals.css, avoid shadowRoot UI: b/buttonbar.js: add CSS to globals.css, avoid shadowRoot UI: b/basics.js: add CSS to globals.css, cleanups UI: b/aboutdialog.js: add CSS to globals.css, avoid shadowRoot UI: globals.scss: merge contents of grid.scss UI: Makefile.mk: fix globals.scss cleanup UI: Makefile.mk: include *.jscss contents in globals.css Merge branch 'csshash-2fix-fouc' # 2023-07-27 Tim Janik 0b1e7e7 * csshash-2fix-fouc: UI: index.html: mark globals.css as data-4litcomponent UI: little.js: clone stylesheet links marked data-4litcomponent into shadowRoot UI: index.html: reload vue-styles.css and globals.css once the CSSHASH changes UI: Makefile.mk: support @--CSSHASH--@ insertions fro index.html ASE: websocket.cc: send "forever" Cache-Control with text/css to reduce FOUC Merge branch 'globalscss-icon-fonts' # 2023-07-27 Tim Janik 7a7dd7e * globalscss-icon-fonts: UI: b/app.js: add comment for spinner testing UI: index.html: adjust font resource paths UI: globals.scss: import all icon SCSS defs UI: dom.js: properly quote font names ASE: websocket.cc: use CACHE_AUTO since we do not handle conditional requests UI: b/menuseparator.js: fix customElements extends specification UI: b/icon.js: leave icon font loading to globals.scss, assert font presence UI: b/shell.vue: spinner.scss is already imported by globals.scss UI: Makefile.mk: move fonts into ui/ and merge globals.scss dependencies UI: globals.scss: rename normalize.scss for merging import UI: postcss.js: keep .css imports, include all others UI: b/icon.js: assert "Material Icons" font_family instead of loading material-icons.css UI: globals.scss: directly include material-icons.css UI: Makefile.mk: prepare ui/material-icons.css for globals.css UI: dom.js: add font_family_loaded() UI: dom.js: add file for DOM utilities Merge branch 'global-css-rename' # 2023-07-27 Tim Janik c402d5e * global-css-rename: UI: index.html: load global.css UI: Makefile.mk: generate global.css UI: b/shell.vue: fix comment UI: global.scss: rename (from globals.scss) b/c it now contains global CSS Merge branch 'simple-vue-ports' # 2023-07-27 Tim Janik 1c13e75 * simple-vue-ports: UI: Makefile.mk: adapt make install wildcards UI: b/statusbar.js: port to LitComponent UI: b/databubble.js: port to native HTML component UI: b/partthumb.vue: retire partthumb which is superceded by clipview UI: b/hscrollbar.vue: retire hscrollbar code until we really need one UI: b/color-picker.vue: retire color picker code until we really need one Merge branch 'swesterfeld-piano-roll-note-length', closes #15 # 2023-07-27 Tim Janik d115723 * swesterfeld-piano-roll-note-length: UI: b/piano-ctrl.js: cleanup note_duration_delta at the end of a drag UI: b/piano-ctrl.js: support resizing multiple notes in a selection Merge branch 'docker_build_run_clean' # 2023-07-31 Tim Janik acafef2 * docker_build_run_clean: GITHUB: workflows/testing.yml: remove duplicate chown invokation GITHUB: workflows/testing.yml: use misc/docker_build, docker_run, docker_clean MISC: docker_clean: cleanup permissions and CI image tag MISC: docker_run: run in a CI image built by docker_build MISC: docker_build: build a Dockerfile CI image with ghcr.io cache support UI: Makefile.mk: make sure all JS files are built before running tscheck Merge branch 'make-dist-and-assets' # 2023-07-31 Tim Janik 4694aa8 * make-dist-and-assets: GITHUB: workflows/release.yml: add Ping-IRC job GITHUB: workflows/release.yml: use misc/docker_run GITHUB: workflows/release.yml: add action to build & create releases from tags Makefile.mk: dist: assign release version to misc/version.sh:BAKED_DESCRIBE MISC: version.sh: prepare BAKED_DESCRIBE variable to define baked in version MISC: version.sh: support lightweight release tags via exact match UI: Makefile.mk: fix unintentional tscheck remakes DOC: Makefile.mk: add doc/ch-releasing.md to internal manual ASE: Makefile.mk: rebuild ase/buildversion*.cc if GITCOMMITDEPS changes Makefile.mk: rebuild package.json if GITCOMMITDEPS changes MISC: config-utils.mk: take tags and packed-refs into account for GITCOMMITDEPS DOC: ch-releasing.md: elaborate on releases and assets DOC: ch-releasing.md: start describing versioning and the release process MISC: mknews.sh: add development version disclaimer MISC: Makefile.mk: remove partial release build rules MISC: mkassets.sh: simplify to just make dist and trigger release asset builds MISC: mkAppImage.sh: build AppImage in assets/ MISC: mkAppImage.sh: use tools from appimagetools/ dir MISC: Makefile.mk: cache downloads of appimage tools Makefile.mk: make dist: also generate assets/ChangeLog MISC: mkdeb.sh: create debian package in assets/ DOC: Makefile.mk: support building assets/pdf MISC: Makefile.mk: avoid depending on appimage-runtime-zstd for normal builds UI: tsconfig.json: remove exclude section Makefile.mk: grep-reminders: only inspect existing files Makefile.mk: add recent commits to NEWS.md Makefile.mk: build dist tarball in assets/ with high compression ASE: main.cc: for --version, show short version and build id MISC: config-checks.mk: use version_short ELECTRON: Makefile.mk: use version_short ASE: Makefile.mk: use version_short Makefile.mk: extract version_hash, use version_short for brief version identifiers * Remove version_m.m.m use version_short instead * Remove version_buildid, that is actually version_short + version_hash MISC: Makefile.mk: remove unused release-news MISC: mknews.sh: generate most recent section of NEWS.md MISC: mkdeb.sh: parse hash from misc/version.sh MISC: version.sh: reduce logic to produce baked/git/fallback version/hash/date Merge branch 'poxy-on-jammy' # 2023-08-02 Tim Janik 3be13e1 * poxy-on-jammy: GITHUB: workflows/testing.yml: run poxy on ubuntu:22.04 MISC: docker_run: fix interactive invocations MISC: Dockerfile.jammy: setup development tools for ubuntu:22.04 builds Merge branch 'x11test-delay' # 2023-08-02 Tim Janik 8712b43 * x11test-delay: X11TEST: ereplay.cjs: add delay to mitigate a UI-reload race on project changes X11TEST: replay.sh: simplify AnklangSynthEngine executable check Merge branch 'toggle-as-lit' # 2023-08-03 Tim Janik 0eba7de * toggle-as-lit: UI: b/pro-input.vue: handle @valuechange on b-toggle UI: b/toggle.js: port to LitComponent Merge branch 'jsdoc-elements' # 2023-08-03 Tim Janik 9d0c8de * jsdoc-elements: DOC: poxystyle.css: fix dark theme colors DOC: jsdoc2md.js: use pandoc anchors everywhere with data-4search hints DOC: poxy.sh: forbid raw-html and support data-4search on UI: b/*.js: reformat documentation to use @class and @description commands See also: https://jsdoc.app/tags-description.html DOC: poxy.sh: parallelize JsDoc processing DOC: poxy.sh: fix exit code and compact markdown DOC: poxy.sh: add ui/ch-*.md files to poxy docs DOC: jsdoc2md.js: allow descriptions of virtual classes as docu sections DOC: copyright.ini: assign MPL-2 to ch-*.md documentation files DOC: Makefile.mk: integrate ui/ch-component.md Makefile.mk: add html/ to CLEANDIRS Makefile.mk: clean poxy/ and assets/ DOC: ch-development.md: explicitely describe ASE UI: ch-component.md: describe lit components UI: ch-component.md: rename from ui/b/ch-vue.md README.md: add Star History Chart Merge branch 'swesterfeld-piano-roll-move', closes #16 # 2023-08-03 Tim Janik ec26905 * swesterfeld-piano-roll-move: UI: b/piano-ctrl.js: support moving/copying notes with the mouse UI: b/cliplist.js: restore user manual docs Merge branch 'anklang-internals+jsdocs' # 2023-08-19 Tim Janik b554e80 * anklang-internals+jsdocs: UI: b/basics.js: small docu update DOC: Makefile.mk: integrate JS component docs into internal manual DOC: jsdoc2md.js: skip extra subsection indentation UI: Makefile.mk: optimize *.jscss build, fix anklang-internals.html dependency UI: b/*.js: use three hashes '###' to indent docu subsections Merge branch 'fix-raw-tex' # 2023-08-19 Tim Janik 64882dc * fix-raw-tex: UI: xbcomments.js: properly quote special characters in docs DOC: Makefile.mk: do not parse source comments as raw_tex Merge branch 'b-propinput-litcomponent' # 2023-08-23 Tim Janik a7ab348 * b-propinput-litcomponent: UI: b/propinput.js: port to LitComponent UI: b/choiceinput.js: support label attribute as choice tip UI: little.js: add LitComponent.request_update_() UI: util.js: add addnotify_() and delnotify_() to extended properties UI: b/pro-group.vue: use UI: b/knob.js: simplify MISC: package.json.in: extend nodemon delay to reduce conflicts with lint rules Sometimes when ui/lint is triggered, files are written and make serve also runs rebuild rules due to nodemon. Merge branch 'propgroup-litcomponent' # 2023-08-30 Tim Janik 3957579 * propgroup-litcomponent: UI: b/pianoroll.js: add todo comment UI: b/knob.js: use fixed adjustment factors for wheel events UI: util.js: wheel_delta: normalize delta to pixels for modern browsers Work around Firefox changing deltaY vs deltaMode depending on the order of access! Throw away old compat code. UI: b/knob.js: fix invalid field access UI: b/propgroup.js: avoid shadowRoot UI: util.js: refuse pointer lock grabbing on orphans and shadowRoot descendants UI: b/propgroup.js: port to LitComponent UI: b/deviceeditor.vue: use b-propgroup UI: b/propinput.js: support readonly + disabled state UI: b/propinput.js: add support for as property field UI: b/propinput.js: let labeled default to false UI: b/toggle.js: store pressed button number UI: util.js: add uuname() Merge branch 'fix-unstyled-content-flashing' # 2023-09-01 Tim Janik 39ac286 * fix-unstyled-content-flashing: UI: b/contextmenu.js: fix layout interference inside flexbox during popup UI: index.html: load global.css via style+@import, mark as data-4litcomponent UI: little.js: add adopt_component_styles() for simple style+@import cloning This allows to work around FOUC issues with Chrome, see comments. Merge branch 'rebuild-focal' # 2023-09-06 Tim Janik 2a4c7de * rebuild-focal: MISC: Dockerfile.focal: remove NOTEX argument MISC: mknews.sh: print news in chronological order ">Merge branch 'version-fixes' # 2022-07-29 Tim Janik 61e8d05 * version-fixes: ASE: remove unneeded version postfix from AnklangSynthEngine MISC: version.sh: fix development postfix for shallow versions MISC: version.sh: fix build id with development postfix MISC: Makefile.mk, version.sh: fix release tag missing 'v'-prefix Merge branch 'jack-driver' # 2022-07-29 Tim Janik cc1cb08 * jack-driver: DOC: ch-install.md: merge jack howto into driver-setup section DOC: ch-install.md: add chapter about download and installation ASE: main.cc: print the real executable_name() for --version and usage ASE: driver.cc: load jackdriver.so ASE: Makefile.mk: optionally build jackdriver.so MISC: config-checks.mk: check if jack.pc >= 0.125.0 is present Jack 0.125.0 ships with Ubuntu-20.04. ASE: driver-jack.cc: turn into a working PCM driver for Ase ASE: driver-jack.cc: adapto to Ase namespace ASE: merge original Jack driver by Stefan Westerfeld Initial version of Jack driver using the new driver API Add minimal jack howto Block SIGPIPE to avoid crashes when jackd dies Driver: return read and write latency for a pcm driver separately For instance for synchronizing the play position pointer ui with the audio buffering, you want to know how much write latency you have, but don't care about the amount of read latency

Jamulus enables real-time jam sessions over the internet.

Updated: 03 Sep, 2023
  • Build: Mac: Keep the signing-related keychain unlocked (#2927).
    (contributed by @hoffie)

  • Build: Updated bundled Qt6 to version 6.5.1 (#3070).
    (contributed by @github-actions)

  • Docs: Added JSON-RPC server connection tips (#3101).
    (contributed by @mcfnord)

  • Translation: Added trebmuh to create-translation-issues.sh (#3147).
    (contributed by @jujudusud)

  • GUI: Fix some accelerator key conflicts, and fix ellipses in Norwegian (#3156).
    (contributed by @softins)

  • Client: (Refactor) Prevent multiplication result converting to larger type (#3164).
    (contributed by @softins)

  • Client: Added SRV-based virtual hosting support (#2930).
    (contributed by @hoffie)

  • Server: Improved --serverinfo argument validation (#2951).
    (contributed by @hoffie, @pljones)

  • Server: ISO country codes can now be supplied in upper or lower case (#2934).
    (contributed by @Rob-NY)

  • Server: Use native file selection dialog for recording directory and persistence file to allow read and write access outside of the macOS sandbox (#3009).
    (contributed by @ann0see)

  • Server: Rename --directoryserver to --directoryaddress (and internal changes) (#3017).
    (contributed by @pljones)

  • Server: Save the HTML formatting in Server Welcome Message. (Applies to the GUI Server.) (#3058).
    (contributed by @pljones)

  • Windows

JackTrip is a Linux, Mac OSX, or Windows multi-machine audio system used for network music performance over the Internet.

Updated: 02 Sep, 2023

What's Changed

  • Updating release manifests for 2.0.1 release by @mikedickey in #1183
  • Removing need to have git installed for meson builds by @mikedickey in #1186
  • Fixing bug where switching to classic mode would break device stats by @mikedickey in #1187
  • Making some margins static and other elements dynamic to make scaled … by @nwang92 in #1188
  • Build Linux tarball binary with support for ALSA backend by @mikedickey in #1189
  • Add User-Agent to QNetworkRequest; check for empty user ID by @nwang92 in #1190
  • Fixing for crash when using the JACK audio backend on Windows by @mikedickey in #1191
  • Bumping version and changelog for 2.0.2 release by @mikedickey in #1192
  • Set the PIPEWIRE_LATENCY environment variable with GUI on Linux by @mikedickey in #1193
  • Merge to main for 2.0.2 release by @mikedickey in #1194

Full Changelog: v2.0.1...v2.0.2

Anklang, a digital audio synthesis application for live creation and composition

Updated: 01 Sep, 2023

Anklang 0.1.0.nightly2309010210

Development version - may contain bugs or compatibility issues.

as property field UI: b/propinput.js: let labeled default to false UI: b/toggle.js: store pressed button number UI: util.js: add uuname() Merge branch 'b-propinput-litcomponent' # 2023-08-23 Tim Janik a7ab348 * b-propinput-litcomponent: UI: b/propinput.js: port to LitComponent UI: b/choiceinput.js: support label attribute as choice tip UI: little.js: add LitComponent.request_update_() UI: util.js: add addnotify_() and delnotify_() to extended properties UI: b/pro-group.vue: use UI: b/knob.js: simplify MISC: package.json.in: extend nodemon delay to reduce conflicts with lint rules Sometimes when ui/lint is triggered, files are written and make serve also runs rebuild rules due to nodemon. Merge branch 'fix-raw-tex' # 2023-08-19 Tim Janik 64882dc * fix-raw-tex: UI: xbcomments.js: properly quote special characters in docs DOC: Makefile.mk: do not parse source comments as raw_tex Merge branch 'anklang-internals+jsdocs' # 2023-08-19 Tim Janik b554e80 * anklang-internals+jsdocs: UI: b/basics.js: small docu update DOC: Makefile.mk: integrate JS component docs into internal manual DOC: jsdoc2md.js: skip extra subsection indentation UI: Makefile.mk: optimize *.jscss build, fix anklang-internals.html dependency UI: b/*.js: use three hashes '###' to indent docu subsections Merge branch 'swesterfeld-piano-roll-move', closes #16 # 2023-08-03 Tim Janik ec26905 * swesterfeld-piano-roll-move: UI: b/piano-ctrl.js: support moving/copying notes with the mouse UI: b/cliplist.js: restore user manual docs Merge branch 'jsdoc-elements' # 2023-08-03 Tim Janik 9d0c8de * jsdoc-elements: DOC: poxystyle.css: fix dark theme colors DOC: jsdoc2md.js: use pandoc anchors everywhere with data-4search hints DOC: poxy.sh: forbid raw-html and support data-4search on UI: b/*.js: reformat documentation to use @class and @description commands See also: https://jsdoc.app/tags-description.html DOC: poxy.sh: parallelize JsDoc processing DOC: poxy.sh: fix exit code and compact markdown DOC: poxy.sh: add ui/ch-*.md files to poxy docs DOC: jsdoc2md.js: allow descriptions of virtual classes as docu sections DOC: copyright.ini: assign MPL-2 to ch-*.md documentation files DOC: Makefile.mk: integrate ui/ch-component.md Makefile.mk: add html/ to CLEANDIRS Makefile.mk: clean poxy/ and assets/ DOC: ch-development.md: explicitely describe ASE UI: ch-component.md: describe lit components UI: ch-component.md: rename from ui/b/ch-vue.md README.md: add Star History Chart Merge branch 'toggle-as-lit' # 2023-08-03 Tim Janik 0eba7de * toggle-as-lit: UI: b/pro-input.vue: handle @valuechange on b-toggle UI: b/toggle.js: port to LitComponent Merge branch 'x11test-delay' # 2023-08-02 Tim Janik 8712b43 * x11test-delay: X11TEST: ereplay.cjs: add delay to mitigate a UI-reload race on project changes X11TEST: replay.sh: simplify AnklangSynthEngine executable check Merge branch 'poxy-on-jammy' # 2023-08-02 Tim Janik 3be13e1 * poxy-on-jammy: GITHUB: workflows/testing.yml: run poxy on ubuntu:22.04 MISC: docker_run: fix interactive invocations MISC: Dockerfile.jammy: setup development tools for ubuntu:22.04 builds Merge branch 'make-dist-and-assets' # 2023-07-31 Tim Janik 4694aa8 * make-dist-and-assets: GITHUB: workflows/release.yml: add Ping-IRC job GITHUB: workflows/release.yml: use misc/docker_run GITHUB: workflows/release.yml: add action to build & create releases from tags Makefile.mk: dist: assign release version to misc/version.sh:BAKED_DESCRIBE MISC: version.sh: prepare BAKED_DESCRIBE variable to define baked in version MISC: version.sh: support lightweight release tags via exact match UI: Makefile.mk: fix unintentional tscheck remakes DOC: Makefile.mk: add doc/ch-releasing.md to internal manual ASE: Makefile.mk: rebuild ase/buildversion*.cc if GITCOMMITDEPS changes Makefile.mk: rebuild package.json if GITCOMMITDEPS changes MISC: config-utils.mk: take tags and packed-refs into account for GITCOMMITDEPS DOC: ch-releasing.md: elaborate on releases and assets DOC: ch-releasing.md: start describing versioning and the release process MISC: mknews.sh: add development version disclaimer MISC: Makefile.mk: remove partial release build rules MISC: mkassets.sh: simplify to just make dist and trigger release asset builds MISC: mkAppImage.sh: build AppImage in assets/ MISC: mkAppImage.sh: use tools from appimagetools/ dir MISC: Makefile.mk: cache downloads of appimage tools Makefile.mk: make dist: also generate assets/ChangeLog MISC: mkdeb.sh: create debian package in assets/ DOC: Makefile.mk: support building assets/pdf MISC: Makefile.mk: avoid depending on appimage-runtime-zstd for normal builds UI: tsconfig.json: remove exclude section Makefile.mk: grep-reminders: only inspect existing files Makefile.mk: add recent commits to NEWS.md Makefile.mk: build dist tarball in assets/ with high compression ASE: main.cc: for --version, show short version and build id MISC: config-checks.mk: use version_short ELECTRON: Makefile.mk: use version_short ASE: Makefile.mk: use version_short Makefile.mk: extract version_hash, use version_short for brief version identifiers * Remove version_m.m.m use version_short instead * Remove version_buildid, that is actually version_short + version_hash MISC: Makefile.mk: remove unused release-news MISC: mknews.sh: generate most recent section of NEWS.md MISC: mkdeb.sh: parse hash from misc/version.sh MISC: version.sh: reduce logic to produce baked/git/fallback version/hash/date Merge branch 'docker_build_run_clean' # 2023-07-31 Tim Janik acafef2 * docker_build_run_clean: GITHUB: workflows/testing.yml: remove duplicate chown invokation GITHUB: workflows/testing.yml: use misc/docker_build, docker_run, docker_clean MISC: docker_clean: cleanup permissions and CI image tag MISC: docker_run: run in a CI image built by docker_build MISC: docker_build: build a Dockerfile CI image with ghcr.io cache support UI: Makefile.mk: make sure all JS files are built before running tscheck Merge branch 'swesterfeld-piano-roll-note-length', closes #15 # 2023-07-27 Tim Janik d115723 * swesterfeld-piano-roll-note-length: UI: b/piano-ctrl.js: cleanup note_duration_delta at the end of a drag UI: b/piano-ctrl.js: support resizing multiple notes in a selection Merge branch 'simple-vue-ports' # 2023-07-27 Tim Janik 1c13e75 * simple-vue-ports: UI: Makefile.mk: adapt make install wildcards UI: b/statusbar.js: port to LitComponent UI: b/databubble.js: port to native HTML component UI: b/partthumb.vue: retire partthumb which is superceded by clipview UI: b/hscrollbar.vue: retire hscrollbar code until we really need one UI: b/color-picker.vue: retire color picker code until we really need one Merge branch 'global-css-rename' # 2023-07-27 Tim Janik c402d5e * global-css-rename: UI: index.html: load global.css UI: Makefile.mk: generate global.css UI: b/shell.vue: fix comment UI: global.scss: rename (from globals.scss) b/c it now contains global CSS Merge branch 'globalscss-icon-fonts' # 2023-07-27 Tim Janik 7a7dd7e * globalscss-icon-fonts: UI: b/app.js: add comment for spinner testing UI: index.html: adjust font resource paths UI: globals.scss: import all icon SCSS defs UI: dom.js: properly quote font names ASE: websocket.cc: use CACHE_AUTO since we do not handle conditional requests UI: b/menuseparator.js: fix customElements extends specification UI: b/icon.js: leave icon font loading to globals.scss, assert font presence UI: b/shell.vue: spinner.scss is already imported by globals.scss UI: Makefile.mk: move fonts into ui/ and merge globals.scss dependencies UI: globals.scss: rename normalize.scss for merging import UI: postcss.js: keep .css imports, include all others UI: b/icon.js: assert "Material Icons" font_family instead of loading material-icons.css UI: globals.scss: directly include material-icons.css UI: Makefile.mk: prepare ui/material-icons.css for globals.css UI: dom.js: add font_family_loaded() UI: dom.js: add file for DOM utilities Merge branch 'csshash-2fix-fouc' # 2023-07-27 Tim Janik 0b1e7e7 * csshash-2fix-fouc: UI: index.html: mark globals.css as data-4litcomponent UI: little.js: clone stylesheet links marked data-4litcomponent into shadowRoot UI: index.html: reload vue-styles.css and globals.css once the CSSHASH changes UI: Makefile.mk: support @--CSSHASH--@ insertions fro index.html ASE: websocket.cc: send "forever" Cache-Control with text/css to reduce FOUC Merge branch 'globalscss-4-litcomponents' # 2023-07-27 Tim Janik 709f4e9 * globalscss-4-litcomponents: UI: Makefile.mk: run stylelint on ui/globals.css UI: b/positionview.js: add CSS to globals.css, avoid shadowRoot UI: b/playcontrols.js: add CSS to globals.css, avoid shadowRoot UI: b/pianoroll.js: add CSS to globals.css, avoid shadowRoot UI: b/partlist.js: add CSS to globals.css, avoid shadowRoot UI: globals.scss: only style button and push-button for LightDOM UI: b/objecteditor.js: add CSS to globals.css, avoid shadowRoot UI: b/switchinput.js: add CSS to globals.css, avoid shadowRoot UI: b/numberinput.js: add CSS to globals.css, avoid shadowRoot UI: b/textinput.js: add CSS to globals.css, avoid shadowRoot UI: b/more.js: add CSS to globals.css, avoid shadowRoot UI: b/tracklist.js: add CSS to globals.css, avoid shadowRoot UI: b/trackview.js: add CSS to globals.css, avoid shadowRoot UI: b/menubar.js: fix b-menuseparator UI: b/trackview.js: fix b-menuseparator UI: b/menutitle.js: add CSS to globals.css UI: b/menuseparator.js: make b-menuseparator a simple HTMLHRElement UI: b/menurow.js: add CSS to globals.css, avoid shadowRoot UI: b/menuitem.js: add CSS to globals.css UI: b/menubar.js: add CSS to globals.css, avoid shadowRoot UI: b/knob.js: add CSS to globals.css, avoid shadowRoot UI: b/icon.js: add CSS to globals.css UI: b/editable.js: add CSS to globals.css UI: b/contextmenu.js: add CSS to globals.css UI: b/clipview.js: add CSS to globals.css, avoid shadowRoot UI: b/cliplist.js: add CSS to globals.css, avoid shadowRoot UI: b/choiceinput.js: add CSS to globals.css, avoid shadowRoot UI: b/buttonbar.js: add CSS to globals.css, avoid shadowRoot UI: b/basics.js: add CSS to globals.css, cleanups UI: b/aboutdialog.js: add CSS to globals.css, avoid shadowRoot UI: globals.scss: merge contents of grid.scss UI: Makefile.mk: fix globals.scss cleanup UI: Makefile.mk: include *.jscss contents in globals.css Merge branch 'postcss-normalize-charset' # 2023-07-27 Tim Janik 746575f * postcss-normalize-charset: UI: postcss.js: postprocess CSS with postcss-normalize-charset MISC: package.json.in: install postcss-normalize-charset UI: postcss.js: add support for -I to add include paths Merge branch 'aboutdialog-lit' # 2023-07-27 Tim Janik 874535f * aboutdialog-lit: UI: index.html: add comments to start_view_transition() UI: globals.scss: add b-dialog styling UI: b/contextmenu.js: use transparent backdrop for menus UI: globals.scss: add view-transition-group defaults, add scale0 keyframes UI: dark.scss: add b-animation-duration and b-dialog-colors UI: tsconfig.json: avoid checks of postcss.js.tst.js UI: b/menubar.js: make use of Shell.show_about_dialog() UI: b/app.js: leave aboutdialog handling to Shell.show_about_dialog() UI: b/shell.vue: use b-aboutdialog.shown, add show_about_dialog(), handle close * Use proper internal state for showing b-aboutdialog * Expose showing/hiding through show_about_dialog() * Allow animated closing of b-aboutdialog with start_view_transition UI: b/aboutdialog.js: display Lit version number UI: b/aboutdialog.js: port to LitComponent UI: eslintrc.js: declare start_view_transition as global symbol UI: index.html: define start_view_transition() This is a Vue-aware wrapper around document.startViewTransition() (atm Chrome specific), that still does the right thing on Firefox and has a disable flag. UI: Makefile.mk: index.html: add lit_version to config_json Merge branch 'dark-palette' # 2023-07-24 Tim Janik 61e1ecd * dark-palette: UI: dark.scss, globals.scss: use palette for body colors UI: Makefile.mk: add palette.scss to scss files UI: palette.scss: add warm grey palette based on ZCAM Jz (lightness) steps Merge branch 'modern-normalize' # 2023-07-24 Tim Janik aa3a6b6 * modern-normalize: UI: little.js: load globals.css into every LitComponent UI: index.html: give globals.css precedence over vue-styles.css UI: index.html: remvoe shadow.css UI: Makefile.mk: remove ui/elements.scss ui/shadow.scss Makefile.mk: run 'lint' during `make check` UI: remove unused files elements.scss and shadow.scss UI: globals.scss: merge styles from elements.scss and shadow.scss UI: globals.scss: use normalize.css to normalize latest Chrome & Firefox UI: normalize.css: leave font-family setting to our own theme MISC: mkcopyright.py: fix MIT License pattern to deal with case and 'd'-ending UI: normalize.css: insert MIT License and add Copyright notices UI: normalize.css: add renamed modern-normalize.css version 2.0.0 Add modern-normalize.css from https://github.com/sindresorhus/modern-normalize licensed MIT. Merge branch 'poxystyle' # 2023-07-24 Tim Janik 7134954 * poxystyle: DOC: poxy.sh: allow doc/poxystyle.css to fixup colors DOC: poxystyle.css: fix light theme colors and sizes UI: b/cliplist.js: minor edit README.md: update roadmap with items from Stefan Westerfeld Merge branch 'ts-check-lit-components', add ts-check and fix lint issues # 2023-07-03 Tim Janik a7ea5f4 * ts-check-lit-components: UI: b/app.js: reload UI on project changes UI: b/objecteditor.js: fix output UI: util.js: add missing type annotations UI: kbd.js: add missing type annotations UI: b/trackview.js: add @ts-check and missing type annotations UI: b/tracklist.js: add @ts-check and missing properties UI: b/playcontrols.js: add @ts-check UI: b/pianoroll.js: add @ts-check and missing type annotations UI: b/piano-ctrl.js: minor type fix UI: b/partlist.js: add @ts-check UI: b/more.js: add @ts-check UI: b/menutitle.js: add @ts-check UI: b/menuseparator.js: add @ts-check UI: b/menurow.js: add @ts-check UI: b/menuitem.js: add @ts-check UI: b/knob.js: add @ts-check and missing type annotations UI: b/editable.js: add @ts-check UI: b/contextmenu.js: add @ts-check and missing type annotations UI: b/clipview.js: add @ts-check and missing type UI: b/buttonbar.js: add @ts-check README.md: escape FIXME keywords UI: Makefile.mk: grep for reminders in ui/lint DEVICES: Makefile.mk: grep for reminders in devices/lint Makefile.mk: at the end of 'all', grep for reminder keywords in known sources Makefile.mk: ls-tree.d needs GITCOMMITDEPS, i.e. misc/config-utils.mk ASE: Makefile.mk: grep for reminders in ase/lint Makefile.mk: add 'lint' as toplevel phony rule UI: b/tracklist.js: cleanup CSS UI: b/textinput.js: cleanup CSS UI: b/switchinput.js: cleanup CSS UI: b/shell.vue: cleanup CSS UI: b/positionview.js: cleanup CSS UI: b/pianoroll.js: cleanup CSS UI: b/noteboard.vue: cleanup CSS UI: b/menutitle.js: cleanup CSS UI: b/menurow.js: cleanup CSS UI: b/menuitem.js: cleanup CSS UI: b/knob.js: cleanup CSS UI: b/icon.js: cleanup CSS UI: b/folderview.vue: cleanup CSS UI: b/filedialog.vue: cleanup CSS UI: b/editable.js: cleanup CSS UI: b/dialog.vue: cleanup CSS UI: b/databubble.vue: cleanup CSS UI: b/contextmenu.js: cleanup CSS UI: b/clipview.js: cleanup CSS UI: b/basics.js: inlcude v-flex mixin UI: theme.scss: fix color syntax UI: startup.js: fix import path UI: Makefile.mk: use stylelint with -f unix only inside emacs UI: Makefile.mk: add missing ui/spinner.scss dependency UI: stylelintrc.cjs: ignore whitespace rules UI: Makefile.mk: add Ase.server @type UI: mixins.scss: add v-flex mixin UI: mixins.scss: use $b-font-stack-kbd-mono UI: dark.scss: define $b-font-stack-kbd-mono for hotkey rendering UI: b/menubar.js: port to LitComponent * Cleanup markup * Cleanup CSS UI: b/positionview.js: port to LitComponent UI: b/basics.js: use h-flex() UI: mixins.scss: add h-flex() mixin MISC: Dockerfile.arch: install unzip Merge branch 'inputs-as-litelement' # 2023-06-27 Tim Janik 2ddfe22 * inputs-as-litelement: X11TEST: play-notes.json: adjust recording for new web components ASE: server.cc: listen on "notify" emissions from properties ASE: properties.cc: fix notifications, emit notify:identifier UI: util.js: turn xprop.value_ into a reactive property UI: b/choiceinput.js: take b-objecteditor into account in CSS UI: b/pro-input.vue: use @valuechange on b-choiceinput UI: b/preferencesdialog.vue: use b-objecteditor UI: util.js: avoid extending the same property twice UI: util.js: export fullstop() UI: Makefile.mk: use tsc with --pretty false only inside emacs UI: b/objecteditor.js: port to LitComponent * Turn into shadowless component * Properly prefix CSS classes * Listen on and handle @valuechange events * Do not freeze extended properties that we keep mutating * Remove old resize blocker logic UI: startup.js: load basic custom components early on UI: b/basics.js: move h-flex, v-flex, c-grid, push-button here, shadowless Make these simple basic containers shadowless, i.e. without shadow root. UI: b/pro-input.vue: add support for b-choiceinput UI: little.js: export 'nothing' from Lit UI: types.d.ts: add debug() global UI: b/fed-object.vue: add support for b-choiceinput UI: b/choiceinput.js: port to LitComponent, render on demand only UI: b/tracklist.js: fix stacking of top border shadow UI: b/switchinput.js: allow LEFT/RIGHT/UP/DOWN to toggle UI: b/fed-object.vue: add support for b-switchinput UI: b/switchinput.js: port to LitComponent UI: types.d.ts: declare global CONFIG UI: b/fed-object.vue: add support for b-numberinput UI: b/numberinput.js: simplify and fix sizing UI: b/numberinput.js: port to LitComponent UI: b/textinput.js: dispatch value changes as valuechange "event" Merge branch 'fix-lit-html' # 2023-06-22 Tim Janik 31da2dd * fix-lit-html: UI: b/*.js: fix trailing-solidus in html`` markup UI: eslintrc.js: add plugin:lit/recommended to linting rules MISC: package.json.in: install eslint-plugin-lit Merge branch 'InterDisplay', based on InterVariable-4.0 font # 2023-06-22 Tim Janik 89c9d01 * InterDisplay: UI: dark.scss: add a fallback font stack UI: theme.scss: remove outdated font stuff UI: mixins.scss: move b-kbd-hotkey here UI: elements.scss: use b-font-weight-bold() and b-font-weight-bolder() UI: b/*.vue, b/*.js: use b-font-weight-bold() and its variants UI: dark.scss: define b-font-weight-{normal|bold|bolder} mixins UI: b/menutitle.js: use drop-caps while InterVariable-4.0 small-caps are broken See also: https://github.com/rsms/inter/issues/556#issuecomment-1598010623 UI: elements.scss: leave font handling to theme, globals and shadow UI: b/pianoroll.js: use b-canvas-font UI: b/partthumb.vue: use b-canvas-font UI: b/clipview.js: use b-canvas-font UI: shadow.scss: use b-ui-font() inside shadow DOMs UI: globals.scss: make use of b-ui-font() UI: dark.scss: configure b-ui-font() for "InterVariable" in InterDisplay style UI: globals.scss: leave font-face defs to index.html UI: index.html: cleanup preloads, add @font-face for "InterVariable" UI: b/icon.js: add small comment UI: Makefile.mk: download InterVariable.woff2 UI: stylelintrc.cjs: disable "font-family-name-quotes" to allow quoted font names Merge branch 'component-styling' # 2023-06-21 Tim Janik 234bf99 * component-styling: UI: b/playcontrols.js: use JsExtract.css_url() UI: b/icon.js: use JsExtract.css_url() UI: b/textinput.js: make this a shadowless component UI: little.js: add JsExtract.css_url() UI: little.js: use cast to work around TS2425 UI: b/playcontrols.js: port to LitComponent UI: Makefile.mk: remove temporary file UI: b/*.vue: remove useless mixins import UI: index.html: import globals.css UI: globals.scss: import elements.scss which includes mixins UI: Makefile.mk: create globals.css and auto-import mixins.scss for vue styles UI: elements.scss: rename from domstyles.scss UI: b/button-bar.vue: port to LitComponent UI: b/*.js: access only LitComponent fields (not LitElement) UI: little.js: remove LitElement export UI: startup.js: derive from LitComponent (not LitElement) UI: b/*.js: derive from LitComponent (not LitElement) UI: b/partlist.js: embed and load CSS via JsExtract UI: Makefile.mk: fix dependenc for scss rebuilds UI: b/partlist.js: import Util UI: types.d.ts: declare __DEV__ global UI: b/pianoroll.js: extend LitComponent and use reactive_wrapper to track notes Also, merge multiple repaint requests into the same micro task. UI: b/clipview.js: leave width to parent UI: b/cliplist.js: set 'data-f1' only once suffices UI: b/trackview.js: render b-trackview context menu on demand UI: b/contextmenu.js: fix close() and synchronize updates * await this.updateComplete before showModal() * properly emit 'close', take nesting into account UI: b/partlist.js: port to LitElement UI: mixins.scss: add transparent-scrollbars mixin Merge branch 'clang-tidy' # 2023-06-18 Tim Janik 29cc5ff * clang-tidy: MISC: mkassets.sh: always use /tmp/anklang-mkassets/ for release builds GITHUB: workflows/testing.yml: fix key file permissions GITHUB: workflows/testing.yml: fixup permissions at CI end GITHUB: workflows/testing.yml: remove missing variable reference GITHUB: workflows/testing.yml: fix arch perms and focal redirection GITHUB: workflows/testing.yml: use $DOCKER_RUN and ghcr.io for all tasks * use $DOCKER_RUN and ghcr.io caching for Focal-Docs * adjusting git.safe.directory is not needed for Lunar * use $DOCKER_RUN and ghcr.io caching for Arch-Replay MISC: Dockerfile.focal: remove unused RUNs, rename user to ubuntu * remove unused OOTBUILD, rename builder user to ubuntu * add a comment howto build and run this image * use fixed user and group id of 1000 MISC: Dockerfile.arch: use fixed user and group ids of 1000 MISC: Dockerfile.arch: remove unused OOTBUILD and unused poxy MISC: Dockerfile.lunar: remove unused OOTBUILD GITHUB: workflows/testing.yml: directly use docker run for lunar and fix perms MISC: Dockerfile.lunar: upgrade to nodejs-20 MISC: package.json.in: upgrade npm build tools and electron-25 MISC: package.json.in: remove unused rollup-plugin-node-resolve MISC: Makefile.mk: fix missing directory dependency GITHUB: workflows/testing.yml: add Lunar-Clang-Tidy, rename Focal-Docs MISC: Dockerfile.lunar: provide build environment with clang-17 on ubuntu:23.04 MISC: colorize.sh: colorize error, warning, note and special case Emacs MISC: Makefile.mk: reimplement clang-tidy and clang-tidy-clean rules Makefile.mk: defined CLANG_TIDY Makefile.mk: create ls-tree.d and provide $(LS_TREE_LST) Merge branch 'sorted-vector' # 2023-06-08 Tim Janik 7b3b380 * sorted-vector: ASE: sortnet: implement SortedVector ASE: testing.hh: TFLOATS(): assert float equality within an apsilon ASE: combo.cc: add SPL link Merge branch 'swesterfeld-fix-pcg-ub' # 2023-06-07 Tim Janik 1d49d48 * swesterfeld-fix-pcg-ub: ASE: randomhash: fix undefined behaviour in Pcg32Rng Left shifting a 32bit value by 32 bits is UB. * Closes #14 Merge branch 'appimage-rpath-fix' # 2023-06-07 Tim Janik f609e1e * appimage-rpath-fix: MISC: mkAppImage.sh: avoid `linuxdeploy {-e|-l}` which change binary locations Avoid `linuxdeploy {-e|-l}`, these options change the binary locations by copying. The copies mess up ELF location detection and restoring the original locations causes wrong relative $ORIGIN paths. We just use --deploy-deps-only now, which keeps the binaries in place and correctly adjusts the relative $ORIGIN path. MISC: mkAppImage.sh: remove unused command Merge branch 'appimage-dependencies' # 2023-06-06 Tim Janik 1696a12 * appimage-dependencies: MISC: mkAppImage.sh: reduce workarounds by using linuxdeploy --deploy-deps-only MISC: mkAppImage.sh: add ELF dependencies for AnklangSynthEngine and gtk2wrap This adds libFLAC.so, libogg.so, libopus.so and libgdk-x11-2.0.so, libgtk-x11-2.0.so to the AppImage. Closes #13. Merge branch 'fix-imports' # 2023-06-06 Tim Janik 1b47b9e * fix-imports: UI: util.js: add missing Kbd import UI: eslintrc.js: remove 'Util' global UI: b/*.vue: add missing Util imports UI: b/*.js: add missing Util imports Merge branch 'jsdoc-tsimport' # 2023-06-05 Tim Janik c184b5e * jsdoc-tsimport: UI: b/cliplist.js: jsdoc-tsimport-plugin does not support a blank after import DOC: jsdocrc.json: use jsdoc-tsimport-plugin to parse tsc file imports * Fix JsDoc choking on typescript import statements that import typed from other JS files. * See also: https://github.com/jsdoc/jsdoc/issues/1645#issuecomment-768293857 MISC: package.json.in: install jsdoc-tsimport-plugin Merge branch 'typescript-jsdoc-checks' # 2023-06-05 Tim Janik 819895c * typescript-jsdoc-checks: UI: types.d.ts: allow App, Data, Shell Ase globals UI: index.html: add importmap to allow lit module imports UI: tsconfig.json: configure typescript checks, allow JS type checks + imports UI: wrapper.js: add @param type UI: little.js: add @ts-check, add types, add explicit exports for tsc UI: b/app.js: add @ts-check and missing property decl UI: b/cliplist.js: add @ts-check, missing imports, exports and initializations UI: b/clipview.js: export class UI: wrapper.js: add @ts-check and type annotations UI: b/statusbar.vue: use material icons for info and instrument panel UI: b/icon.js: fix material-icons size UI: Makefile.mk: add 'tscheck', 'stylelint' and 'lint' rules * add 'lint' dependency to run all of stylelint eslint tscheck * add 'tscheck' rule to selectively run typescript checks * add explicit 'stylelint' rule * simplify lit.js rollup * ui/vue.js: leave eslint cache alone * install material-icons from npm * cleanup eslint rule * ui/rebuild: avoid bg jobs, no need to print dir in sub MAKE MISC: package.json.in: cleanup serve and rebuild scripts MISC: package.json.in: remove eslint script, use make eslint instead MISC: package.json.in: install material-icons@1.13.6 Makefile.mk: whitespace fix GITHUB: workflows/testing.yml: use git fetch --unshallow Apparently `git fetch --shallow-since` does not work with the merge commit created by PR checkouts. Using `git fetch --unshallow` might be less efficient for regular branches, but at least works with trunk and PRs. MISC: package.json.in: upgrade lit, electron, vue, postcss, etc UI: b/pianoroll.js: fix indicator interacting with the cursor MISC: package.json.in: install typescript to enable code checks Merge branch 'nightly-version' # 2023-05-20 Tim Janik 8459bbb * nightly-version: MISC: Makefile.mk: update Nightly releases to avoid excessive emails MISC: gh_delete_assets.sh: add script to delete all release assets via gh README.md: update documentation links MISC: version.sh: use 0.1.2.dev3 for development versions for proper ordering Using .dev[0-9] postfixes properly sorts: 0.1.2 < 0.1.2.dev3 < 0.1.3 This works for sort -V, dpkg, rpm and PIP versions. See: https://peps.python.org/pep-0440/#public-version-identifiers MISC: Makefile.mk: fix typo Merge branch 'ci-build-updates' # 2023-05-19 Tim Janik 580cf66 * ci-build-updates: MISC: Makefile.mk: use gh, keed *-dev version number for Nightly releases * Use gh instead of hub to create releases * Keep the development version number for Nightly releases * Add a brief disclaimer about Nightly releases MISC: version.sh: simplify, support --commit-date and $RELEASE_VERSION GITHUB: workflows/testing.yml: add named step "Fetch last release tag" GITHUB: workflows/testing.yml: fetch git history since last release tag GITHUB: workflows/testing.yml: update ping deps GITHUB: workflows/testing.yml: fix workflow names GITHUB: workflows/testing.yml: run (full) docu upload on Ubuntu GITHUB: workflows/testing.yml: run X11 tests on Arch DOC: poxy.sh: include all Anklang docs in upload MISC: Dockerfile.focal: install pip, doxygen and poxy MISC: Dockerfile.focal: install twm for x11test MISC: Dockerfile.arch: install libgtk3 and libnss for Electron MISC: Dockerfile.arch: install xvfb ffmpeg twm for x11test-v X11TEST: x11rec.sh: switch to using twm with auto placement GITHUB: workflows/testing.yml: use full doc/ install dir as doc artifact GITHUB: workflows/testing.yml: test clang builds under Ubuntu GITHUB: workflows/testing.yml: remove unused env var from Arch build rule Merge branch 'g++-fixes' # 2023-05-17 Tim Janik 8404380 * g++-fixes: ASE: cxxaux.hh: fix internal member typedef name ASE: cxxaux.hh: use std::conditional_t<> for rebind::other, fix for g++-12 With template specializations, g++-11 and g++-12 error out with "explicit specialization in non-namespace scope", so we use std::conditional_t<> which seems to work with g++-12 and clnag++-15. Merge branch 'libstdc++-13' # 2023-05-17 Tim Janik c0f01a0 * libstdc++-13: ASE: cxxaux.hh: patch up make_shared() to make libstdc++13 happy * Move shared ptr allocator out of function scope (to allow template specialization) * Add rebind<> template to shared ptr allocator which derives from std::allocator * Specialize rebind<> so it yields the same allocator for only the shared ptr value type * This "fixes" two static assertions that were added in libstdc++13, see: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=72792#c12 ASE: cxxaux.hh: remove unused FriendAllocator<> ASE: cxxaux.hh: fix missing include ASE: loop.hh: always use ASE_DEFINE_MAKE_SHARED() to implement make_shared() ASE: formatter.hh: include cstdint for int32_t ASE: clapplugin.cc: add missing braces for clap_event_transport_t initializer UI: wrapper.js: add missing Util import Makefile.mk: add simple rule to generate +compile_commands.json Merge branch 'transportinfo', closes #5 # 2023-05-12 Tim Janik 3819f90 * transportinfo: ASE: clapplugin: provide transport information for the plugin MISC: config-uname.mk: link -shared: allow undefined symbols with sanitizers Merge branch 'build-time-postcss' # 2023-03-15 Tim Janik 54353a7 * build-time-postcss: UI: split styles into dark, grid, domstyles, mixins, shadow, globals SCSS files globals.scss: styles for the LightDOM only shadow.scss: styles only for ShadowDOM components domstyles.scss: common styles for the LightDOM and ShadowDOM grid.scss: provide helpers mixins.scss: base to customize components dark.scss: basic theme, allow switching via import $themename_scss; cursors/cursors.css: provide CSS variables for custom cursors UI: cursors/cursors.css: fix quotes UI: cursors/cursors.css: introduce --svg-cursor-* variables at :root{} scope This is needed to make cursors.css actualy valid CSS. UI: index.html: remove postfix and css validator, load vue-styles.css, fix preloads UI: b/clipview.js: use zcam directly UI: b/*.js: embed and load CSS via JsExtract UI: b/positionview.vue: use $b-lcdscreen-fg, $b-lcdscreen-bg UI: b/: fix $b-button-radius $b-button-radius $b-track-meter-gap $b-track-meter-thickness UI: b/pianoroll.js: import grid.scss UI: b/positionview.vue: use t-lcdscreen-fg, t-lcdscreen-bg UI: b/trackview.js: add --track-meter-thickness, --track-meter-gap UI: b/*.vue: use --button-radius UI: b/*.js: use --button-radius UI: b/*.js: use var(--button-radius); UI: b/*.vue: use var(--button-radius); UI: b/deviceeditor.vue, b/pro-group.vue: use --device-radius UI: b/shell.vue: remove unused styles UI: b/pianoroll.js: remove useless color assignment UI: b/textinput.js: include mixins.scss to use SCSS variable UI: b/menuseparator.js: include mixins.scss to use SCSS variable UI: b/*.js: extend componenets from LitComponent instead of LitElement UI: b/dialog.vue: inline box-shadow styling UI: b/pianoroll.js: import grid helpers from grid.css UI: b/menubar.vue: specify 'justify-content: space-between' directly UI: b/pianoroll.js: rely on global cursors.css import UI: startup.js: remove unused postcss import UI: jsextract.js: document jsextract.js usage UI: jsextract.js: extract JsExtract.scss`` marker snippets into *.jscss files UI: little.js: document JsExtract usage UI: little.js: fix .css URL construction to always have an extension UI: little.js: load into shadow roots UI: little.js: add ./shadow.css to LitComponent UI: little.js: remove postcss UI: little.js: export JsExtract with scss`` and fetch_css() UI: little.js: add default define $themename_scss:dark.scss; Also, disable csstree-validator which yields outdated warnings. UI: little.js: load shadow.scss into all LitComponent elements UI: little.js: LitComponent: always adopt shadow.css in createRenderRoot() UI: little.js: CSS import: remove premature fetch + caching, always import all UI: little.js: remove cursors/cursors.css from memorized imports MISC: package.json.in: add stylelint MISC: package.json.in: remove perfectionist-dfd UI: sfc-compile.js: extract *.vuecss files UI: Makefile.mk: remove csstree-validator and postcss browserify bundling UI: Makefile.mk: run stylelint from output dir UI: stylelintrc.cjs: add stylelint config UI: Makefile.mk: extract, process and run stylelint on *.jscss files UI: Makefile.mk: process *.vuecss files UI: Makefile.mk: run stylelint on processed styles UI: Makefile.mk: generate vue-styles.css UI: Makefile.mk: remove Vue css rules UI: Makefile.mk: take quoted cursor urls into account UI: Makefile.mk: move theming into ui/dark.scss, build .css from .scss UI: Makefile.mk: use postcss.js with --map and -i UI: Makefile.mk: fix install pattern for ui/b/ UI: postcss.js: support stdout output UI: postcss.js: fix exit code by re-throwing errors UI: postcss.js: add -Dvar=value for predefined variables UI: postcss.js: add -C to find imports UI: postcss.js: directly print PostCSS exceptions to provide useful stacktraces UI: postcss.js: support fetching imports from network UI: postcss.js: remove perfectionist-dfd, auto-import *.scss unless -i is given UI: postcss.js: add zlerp() CSS function UI: postcss.js: add zmod4() CSS function UI: postcss.js: make source map configurable UI: colors.js: add zlerp() for color interpolation UI: colors.js: fix missing ZCAM attributes UI: colors.js: add zmod4() to debug ZCAM attributes for colors UI: colors.js: support missing first zmod() color argument DOC: jsdoc2md.js: fix @file docu being ignored in some cases DOC: jsdoc2md.js: add anchor to constants ASE: websocket.cc: allow caching of duplicate requests within 1 second Merge branch 'reactive-render' # 2023-03-08 Tim Janik 6f6d3be * reactive-render: UI: startup.js: rerender all LitElements and known Vue components on resize UI: little.js: export LitComponent, which has reactive render() and updated() UI: little.js: add lit_update_all() UI: wrapper.js: improve error message for missing getters UI: wrapper.js: support reactive_wrapper() callbacks for wrap_ase_object() fields UI: wrapper.js: implement define_reactive() and reactive_wrapper() Merge branch 'jsdoc-search' # 2023-03-05 Tim Janik dc2f640 * jsdoc-search: DOC: poxy.sh: ignore case during search UI: util.js: add PointerDrag comment DOC: poxy.sh: extend searchdata-v2.js with token list from JS docs DOC: poxy.sh: avoid fake 'Export' prefix for JS symbols DOC: jsdoc2md.js: use for anchors, add data-4search to anchors The old empty span anchors could be removed by some HTML processors. DOC: poxy.sh: jsdoc2md will now directly generate markdown from JS Merge branch 'api-docs' # 2023-03-03 Tim Janik 63bd26e * api-docs: GITHUB: workflows/testing.yml: rename CI jobs GITHUB: workflows/testing.yml: add step to build and upload API docs MISC: Dockerfile.arch: provide doxygen openssh and poxy via pip MISC: Dockerfile.arch: first update archlinux-keyring This works around an outdated keyring in the archlinux:latest docker image. MISC: dbuild.sh: add support for the docker -p option DOC: poxy.sh: setup AUTHOR/COMITTER EMAIL/NAME, GIT_SSH_COMMAND for uploads DOC: poxy.sh: provide NODE_PATH DOC: poxy.sh: add program doc/ dir to documentation output DOC: poxy.sh: add README as main index page DOC: poxy.sh: add project version to docs DOC: poxy.sh: upload to the `publish` branch DOC: poxy.sh: support conditional builds DOC: poxy.sh: move build commands into poxy_build function DOC: poxy.sh: add -u for upload DOC: poxy.sh: support accesskey="f" for Search DOC: poxy.sh: support -s to serve html/ contents DOC: poxy.sh: add NEWS.md DOC: poxy.sh: add ch-scripting.md to UI docs DOC: poxy.sh: generate API reference documentation with Poxy UI: Makefile.mk: remove rules to build JS docs DOC: Makefile.mk: build scripting docs from ui/host.js and ch-scripting.md DOC: copyright.ini: fix doc/jsdocrc.json path DOC: ch-scripting.md: move here from ui/ DOC: jsdoc2md.js: generate markdown from *.js via jsdoc-api DOC: jsdocrc.json: configure JsDoc to use doc/jsdoc-slashes.js DOC: jsdoc-slashes.js: move here from ui/slashcomment.js DOC: jsdoc2md.js: guard aganst doclets with non-string name I.e. doclet.meta.code.name can be an Integer. MISC: package.json.in: add jsdoc-api UI: b/shell.vue: add basic docs ASE: testing.hh: document Test namespace ASE: api.hh: add docu comment to Ase namespace README.md: fix github workflow badge URL Merge branch 'lit-tracklist' # 2023-01-10 Tim Janik 3e64716 * lit-tracklist: UI: b/tracklist.js: hide HEADER and FOOTER UI: b/tracklist.js: add scrollshadow at the top UI: theme.scss: remove fragile parts of scrollbar styling UI: b/tracklist.js: fix layout for few tracks UI: b/tracklist.js: support x/y scrolling UI: b/cliplist.js: clipview children must not shrink UI: b/tracklist.js: port to LitElement UI: b/trackview.js: increase width of level meters UI: b/clipview.js: use track.$id for colorization UI: b/cliplist.js: fix setting of b-clipview.track property UI: b/app.js: provide App.project ASE: object.cc: skip notifications for objects without shared_ptr ASE: api.hh: rename and notify Project.all_tracks() (former list_tracks) Merge branch 'lit-trackview' # 2023-01-08 Tim Janik 529af30 * lit-trackview: UI: b/trackview.js: render sound level meter from telemetry UI: b/cliplist.js: minor formatting ASE: track.cc: add dbspl0 and dbspl1 to telemetry ASE: combo: add sound level probing in dB to AudioChain ASE: datautils: add square_max() ASE: midilib.cc: reserve space to avoid malloc ASE: datautils: add square_sum() for FPU floats ASE: cxxaux.hh: add ASE_ALIGNED16() and ALIGNMENT16() UI: b/app.js: maintain App.current_track, notify accordingly ASE: track: support midi_channel changes UI: b/*.js: fix ${ref} syntax UI: b/trackview.js: port to LitElement Merge branch 'lit-editable' # 2023-01-08 Tim Janik b1b949d * lit-editable: UI: b/trackview.vue: adjust b-editable use UI: b/positionview.vue: adjust property editing ASE: project.cc: add missing notifications UI: b/editable.js: port to LitElement Merge branch 'lit-cliplist' # 2023-01-07 Tim Janik 2724283 * lit-cliplist: UI: b/partlist.vue: disable old code DOC: Makefile.mk: add docs from b/cliplist.md ASE: api.hh: rename Track.launcher_clips() and ass 'notify:launcher_clips' UI: b/statusbar.vue: use Util.find_element_from_point() UI: b/shell.vue: determine F1 anchor from find_element_from_point() UI: util.js: add find_element_from_point(), supporting shadow DOMs UI: b/clipview.js: fix properties UI: b/cliplist.js: support F1 help for ClipList UI: b/cliplist.js: port to LitElement UI: b/app.js: add App.zmove_last() UI: b/pianoroll.js: minor rename Merge branch 'lit-clipview' # 2023-01-07 Tim Janik ee3d1f0 * lit-clipview: ASE: api.hh: add Clip.all_notes read-only property Enable property caching UI code for fetching notes and updates. UI: b/pianoroll.js: use Util.wrap_ase_object() to fetch Clip notes UI: b/piano-ctrl.js: use Util.wrap_ase_object() to fetch Clip notes UI: b/clipview.js: use wrap_ase_object() to access Clip properties UI: util.js: export the wrapper.js API UI: wrapper.js: add AseObject wrapper to cache properties UI: startup.js: add class name to GC debug messages UI: b/shell.vue: provide Shell.piano_roll UI: Makefile.mk: use Vue production build unless MODE=debug This avoids massive memory leaks of Vue components. UI: Makefile.mk: fix missing dependency MISC: package.json.in: upgrade to vue-3.2.45 and lit-2.5.0 UI: Makefile.mk: use 'npm --prefer-offline' only when rebuilding MISC: config-checks.mk: do not force '--prefer-offline' on npm MISC: config-uname.mk: define __UIDEBUG__=1 for MODE=debug UI: b/pianoroll.js: remove old debug() UI: b/contextmenu.js: remove useless performance hog UI: b/tracklist.vue: add new track on dblclick on track list only UI: b/pianoroll.js: fix stale play cursor on clip change UI: b/clipview.js: port BClipView to LitElement UI: b/: use Track.list_launcher_clips() ASE: api.hh. track: rename Track.list_launcher_clips() Merge branch 'fix-embed-fd-hangs' # 2022-12-28 Tim Janik ea7b53b * fix-embed-fd-hangs: ASE: clapplugin.cc: map PollFD::NVAL to CLAP_POSIX_FD_ERROR ASE: loop.*: support POLLWRBAND, always pass on POLLNVAL, POLLERR and POLLHUP Merge branch 'build-fixes' # 2022-12-28 Tim Janik 215830f * build-fixes: UI: Makefile.mk: add missing dependency from ui/colors.js on ui/zcam-js.mjs This fixes postcss errors due to missing zcam-js.mjs. X11TEST: play-notes.json: adjust simlpe UI test to UI path changes UI: cursors/cursors.css: add MPL-2 copyright Merge branch 'documentation-sections' # 2022-12-22 Tim Janik 11d3cc2 * documentation-sections: DOC: Makefile.mk: link to and search for ui/cursors/ UI: b/pianoroll.js: add data-f1="#piano-roll" to link F1 to piano roll manual UI: b/shell.vue: popup manual on 'F1', support anchors via data-f1="#anchor" UI: kbd.js: allow event.keyCode filtering DOC: Makefile.mk: include docs from pianoroll and piano-ctrl DOC: ch-editing.md: add brief editing introduction UI: Makefile.mk: extract Markdown sections from JS files into doc/b/*.md UI: xbcomments.js: extract Markdown sections from JavaScript comment blocks Merge branch 'piano-roll-and-shell-grid-layout' # 2022-12-22 Tim Janik 5772625 * piano-roll-and-shell-grid-layout: UI: b/pianoroll.js: document piano-roll use and fix hover handling UI: b/piano-ctrl.js: add convenient tool registration helpers UI: eslintrc.js: allow empty blocks UI: util.js: allow PointerDrag cleanup handler UI: b/pianoroll.js: fix scroll and select notes_canvas tool on hover UI: b/piano-ctrl.js: implement note resize tool UI: b/piano-ctrl.js: implement select, paint, erase as dedicated tools UI: b/pianoroll.js: context menu cleanup UI: b/clipview.vue: let the canvas fill parentElement UI: styles.scss, startup.js: turn HFlex & VFlex into LitElement UI: b/pianoroll.js: use one source for DPR calculations UI: b/pianoroll.js: properly align toolmenu button UI: b/pianoroll.js: fix background color UI: b/pianoroll.js: add pianorollmenu items UI: b/treeselector-item.vue: fix 'event' reference UI: b/knob.js: fix 'event' reference UI: b/editable.vue: fix 'event' reference UI: eslintrc.js: warn if a global 'event' is referenced UI: b/piano-ctrl.js: fix merging of selection changes with note modifications UI: b/pianoroll.js: handle menu hotkeys UI: b/contextmenu.js: fix unmapping in map_kbd_hotkeys() UI: kbd.js: handle document.activeElement == null UI: b/piano-ctrl.js: stop event if a key was handled UI: b/pianoroll.js: grab focus UI: b/piano-ctrl.js: adjust piano_roll access patterns UI: b/pianoroll.js: provide .srect property, repaint upon changes UI: b/pianoroll.js: handle tool menu and hook up piano-ctrl UI: theme.scss: move scrollbar styling here to work inside shadow DOMs UI: startup.js: turn CGrid into a LitElement to work inside shadow DOMs UI: b/pianoroll.js: work around FireFox exception when ctx.font is assigned UI: b/shell.vue: allow notification callbacks on get_note_cache() UI: b/statusbar.vue: use elementsFromPoint() to find Tips inside shadowRoots UI: b/contextmenu.js: support @activate="handler" notifications UI: b/menubar.vue: move comment to work around Vue's template child handling UI: b/knob.js: ignore hscrolls to allow horizontal device panel scrolling UI: b/devicepanel.vue: adjust to b-shell grid layout UI: b/pianoroll.js: fix scrollbar style UI: b/pianoroll.js: add indicator to show the current tick UI: b/shell.vue: use for the basic layout UI: b/pianoroll.js: implement as LitElement UI: b/pianoroll.js: add skeleton UI: b/piano-roll.vue: remove Vue based piano-roll Merge branch 'cursors' # 2022-12-22 Tim Janik 32b1518 * cursors: IMAGES: anklangicons.sh: fixes for svgo 2.8.0 and Inkscape >= 1.0 IMAGES: anklangicons.sh: remove unused cursor commands RAND: hotspots.sh: add simple script to debug hotspot coords in cursors UI: b/piano-roll.vue: remove AnklangCursors.scss references UI: Makefile.mk: remove AnklangCursors.scss copy UI: Makefile.mk: copy cursors/cursors.css and all cursor SVGs UI: little.js: allow runtime postcss imports from cursors/cursors.css UI: cursors/cursors.css: add CSS vars for: cross eraser hresize knife move pen UI: cursors/knife.svg: add 28x28 pixel "knife" cursor UI: cursors/hresize.svg: add 28x28 pixel "horizontal resize" cursor UI: cursors/cross.svg: add 28x28 pixel "cross" cursor UI: cursors/move.svg: add 28x28 pixel "move" cursor UI: cursors/eraser.svg: make cursor 28x28 pixels UI: cursors/pen.svg: make cursor 28x28 pixels UI: cursors/: move eraser.svg and pen.svg here Merge branch 'swesterfeld-blepsynth-adsr-time-fix' # 2022-11-17 Tim Janik 54726cd * swesterfeld-blepsynth-adsr-time-fix: DEVICES: blepsynth: use non-linear mapping for ADSR times ASE: sortnet.hh: update URLs in comments Merge branch 'sprite-knob' # 2022-11-16 Tim Janik 439c3b8 * sprite-knob: MISC: Dockerfile.focal: install librsvg2-bin for rsvg-convert UI: remove unused eknob.svg embedding UI: b/knob.vue: remove Vue based knob implementation UI: b/pro-input.vue: remove unused knob handling UI: b/pro-group.vue: use b-knob for scalar Property editing UI: b/knob.js: rewrite b-knob as LitElement with sprites UI: b/deviceeditor.vue: use Util.extend_property() to cache Property fields UI: Makefile.mk: provide control knob sprite assets Makefile.mk: include images/knobs/Makefile.mk IMAGES: knobs/cknob.svg: add MPL-2.0 license IMAGES: knobs/Makefile.mk: build bi- and unidirectional control knob sprites IMAGES: knobs/mksprite.py: rotate svg knob and add level indicator IMAGES: knobs/cknob.svg: add rotatable control knob UI: util.js: wheel_delta: adjust factors for modern Firefox and Chrome versions UI: startup.js: set CONFIG.dpr_movement for Chrome<=100 and Gecko As of Firefox-106, dpr_movement is needed and for Chrome-107 it is not. UI: util.js: use internal Symbol for request_pointer_lock() state handling UI: util.js: fix value updates of extended properties Catch the right event and normalize the value in JS. UI: util.js: add methods to handle destroy callbacks on objects UI: b/shell.vue: comment fixup UI: b/databubble.vue: hook into App.zmove for all event handling Also, fix stuck bubbles when rehovering the same element. UI: b/app.js: generate zmove events for pointerdown, pointermove, pointerup UI: b/app.js: make sure "mousemove" triggers ZMove updates ASE: processor.cc: keep constant number of characters for % values ASE: processor: send property notifies early, account for inflight values ASE: api.hh: add missing const ASE: crawler: use emit_notify() and avoid emit during ctor ASE: *.cc: use emit_notify() where possible Merge branch 'zoom-ui' # 2022-11-16 Tim Janik 8e65adf * zoom-ui: UI: b/menubar.vue: support Zoom In/Out/Reset for Electron ELECTRON: main.js: export zoom_level() to allow UI zoom adjustments UI: kbd.js: match_key_event: split 'Ctrl++' only once DOC: ch-development.md, ch-intro.md: fix testbit.eu URL ASE: randomhash: fix testbit.eu URL ASE: track.cc: fix MASTER_TRACK flag Merge branch 'swesterfeld-vcf-cutoff-fix' # 2022-11-03 Tim Janik 203c246 * swesterfeld-vcf-cutoff-fix: DEVICES: blepsynth: fix cutoff frequency modulation for filter Fix frequency scaling problems: the freq_in array now passes its frequency to the filter as plain Hz. Merge branch 'time-autostop' # 2022-11-03 Tim Janik 6d531e6 * time-autostop: GITHUB: workflows/testing.yml: add repository and gh-user to IRC notifications GITHUB: workflows/ircbot.py: support -R for initiating repository name GITHUB: workflows/testing.yml: skip IRC bot name GITHUB: workflows/ircbot.py: set "YYBOT" as bot name ASE: main: add autostop handling and implement -t to trigger autostop ASE: project: start_playback(): pass autostop into engine ASE: engine: add autostop handling and delay capture until transport is running ASE: defs.hh: add D64MAX ASE: strings.cc: add string_to_seconds() ASE: formatter.cc: test atomic which is a struct and needs %s UI: b/treeselector-item.vue: use ContextMenu.valid_uri() to check valid uri UI: b/contextmenu.js: always use valid_uri() for uri in boolean contexts Merge branch 'opus-wav-flac' - capture engine output # 2022-10-28 Tim Janik bb7a442 * opus-wav-flac: UI: b/aboutdialog.vue: display FLAC version ASE: api: export get_flac_version() UI: b/aboutdialog.vue: show Opus version Remove unused Vorbis version. ASE: api.hh: export Opus version Remove unused Vorbis and MP3 version export. MISC: Dockerfile.focal: provide libopus MISC: config-checks.mk: provide ogg-1.3.4 and opus-1.3.1 Remvoe Vorbis requirement, which is unused. ASE: main.cc: exit with atquit_run() upon SIGINT ASE: loop: USignalSource::install_sigaction(): install unix signal handler ASE: utils: provide atquit handlers ASE: loop.hh: minimize latency of signal handlers by running at high priority ASE: main: add -o wavfile to the CLI ASE: engine: support engine output capturing into wave files Squashed commits of engine capturing development: ASE: engine: add queue_capture_start() and queue_capture_stop() ASE: engine.cc: stall engine once program is aborted (atquit_triggered) ASE: engine.cc: capture output via wave_writer_create_opus() ASE: engine.cc: capture output via wave_writer_create_wav() ASE: engine.cc: capture output via wave_writer_create_flac() ASE: wave: add wave file writer for WAV, OPUS, FLAC Squashed commits of wave file development: ASE: wave.hh: add WaveWriter interface ASE: wave: add writer for WAV files with support for PCM and FLOAT ASE: wave: implement Opus writer and export Opus version ASE: wave.cc: write extension header for FLOAT format For example SoX(1) complains about float WAV files 'missing extended part of fmt chunk' ASE: wave: add FLAC writer and export FLAC version ASE: wave: install atquit handlers to flush/finalize wave files ASE: main: load projects without '--preload' and support --play-autostart ASE: main.cc: auto-load projects passed on the CLI Merge branch 'loft' # 2022-10-26 Tim Janik 84ff17e * loft: ASE: main.cc: configure Loft and concurrently preallocate pages on demand ASE: tests/benchmarks.cc: benchmark loft_calloc() ASE: loft: add Loft - a lock- and obstruction-free thread memory allocator Squashed commits of Loft development: ASE: loft: implement mmap() based bump allocator ASE: loft: implement MpmcStack based bucket allocator ASE: loft: add loft_alloc() ASE: loft: add loft_make_unique() and LoftFree::operator()() ASE: loft: add loft_calloc() ASE: loft: add multithreaded allocator stress test ASE: loft: use FastRng for testing ASE: loft: add loft_bucket_size() ASE: loft: add loft_get_stats(), loft_stats_string() ASE: loft: add loft_get_config(), loft_set_config(), config flags ASE: loft: add loft_grow_preallocate(), loft_set_notifier() ASE: loft: issue a warning if allocations via syscall happen inline ASE: atomics.hh: add MpmcStack.peek ASE: atomics.cc: fix signedness ASE: atomics.cc: add test for MpmcStack<> ASE: atomics.hh: add MpmcStack<>, a lock-free stack for non-reclaimable memory Merge branch 'mwc256-prng' # 2022-10-26 Tim Janik 153071d * mwc256-prng: ASE: randomhash.cc: add FastRng jump ahead tests ASE: main.cc: add --rand64 to generate 64bit FastRng numbers on stdout This can be used to test the PRNG quality with for example PractRand: AnklangSynthEngine --rand64 | RNG_test stdin64 -multithreaded ASE: randomhash: add FastRng, a multiply-with-carry PRNG with period 2^255 ASE: tests/benchmarks.cc: use 3k as max chunk size to avoid memset benchmarking ASE: sortnet.cc: speed up test by reducing the checked 10-element permutations Merge branch 'update-sanitizers' # 2022-10-26 Tim Janik a252fc9 * update-sanitizers: JSONIPC: jsonipc.hh: fix atexit memory leak ASE: formatter.hh: properly handle nullptr_t for %p ASE: nativedevice.cc: fix signedness ASE: serialize.cc: fix unit test memory leak UI: Makefile.mk: ignore asan when running AnklangSynthEngine DOC: Makefile.mk: ignore asan when running AnklangSynthEngine MISC: config-uname.mk: update sanitizer linkage GITHUB: workflows/testing.yml: upgrade actions/checkout and actions/cache to v3 MISC: Dockerfile.focal: comment fixups GITHUB: workflows/testing.yml: allow TeX installation during CI builds Merge branch 'pdf-artifacts' # 2022-10-25 Tim Janik e0272bd * pdf-artifacts: GITHUB: workflows/testing.yml: build PDF and upload 'docs' build artifact MISC: mkassets.sh: use 'pdf' shorthand in build rule DOC: Makefile.mk: require explicit 'pdf' rule to build PDF manuals via TeX By default, only the HTML manuals are built and installed (without TeX dependency). The PDF variants can be built explicitely with `make pdf`. The PDF manuals are installed if they are present at install time. GITHUB: workflows/testing.yml: enable CI for 'next' and PRs Merge branch 'litelement-menu' # 2022-10-21 Tim Janik 8032e64 * litelement-menu: X11TEST: play-notes.json: update UI test UI: b/*: assign aria-label where appropriate UI: b/*.vue: add html id to context menus UI: b/menuitem.js: always strip slot_label UI: util.js: remove unused dropdown() UI: b/color-picker.vue: fix menu and support click-drag selection UI: b/contextmenu.js: expose dialog via part=dialog to CSS rules UI: b/trackview.vue: popup context menu at cursor UI: b/piano-roll.vue: fix popup position UI: b/piano-ctrl.js: avoid stealing unhandled key presses UI: b/dialog.vue: close on regular Escape presses, avoid stealing Escape UI: b/contextmenu.js: stop handled dialog Escape key from bubbling further UI: util.js: allow shields without Escape key stealing UI: b/choice.vue: fix menu and key handling to work like all menus UI: b/contextmenu.js: provide .open read-only property UI: b/menuitem.js: remove unused code UI: b/contextmenu.js: fix data-contextmenu styling UI: b/fed-picklist.vue: remove unused component UI: b/devicepanel.vue: fix menu origin and insertion pos ASE: nativedevice.cc: fix device insertion order UI: b/contextmenu.js: close menu on backdrop clicks UI: util.js: dialog_backdrop_mousedown(): close dialogs on backdrop clicks UI: b/menubar.vue: use b-contextmenu .activate and .isactive UI: b/piano-roll.vue: use b-contextmenu .activate and .isactive UI: b/deviceeditor.vue: use b-contextmenu .activate and .isactive UI: b/treeselector-item.vue: use frame stamp to ignore duplicate clicks UI: b/menubar.vue: use frame stamp to ignore duplicate clicks UI: b/contextmenu.js: make FF auto-focus an element on showModal(), like Chrome UI: b/contextmenu.js: use frame stamp to ignore duplicate clicks and popup()s Note that keyboard presses, mouse clicks, drag selections and event bubbling can all cause menu item clicks and contextmenu activation. In order to deduplicate multiple events that arise from the same user interaction, *one* popup request and *one* click activation is processed per animation frame. UI: util.js: add frame_stamp(), retrieve a timestamp unique per animation frame UI: kbd.js: move_focus(): fallback to move focus inside body UI: kbd.js: list_focusables(): take [open]:modal in shadow DOMs into account UI: kbd.js: list_focusables(): take [open]:modal dialogs into account UI: b/treeselector-item.vue: fix single-click menu activation and styling UI: b/trackview.vue: fix menu activation UI: b/piano-roll.vue: fix menu activation, allow click-drag menu selection UI: b/devicepanel.vue: fix menu activation UI: b/menubar.vue: allow click-drag menu selection UI: b/menuitem.js: use .activate and .isactive callbacks for item activation UI: b/contextmenu.js: use .activate and .isactive callbacks for menu activation ASE: project.cc: fix some missing notify::dirty emissions UI: b/menubar.vue: adapt context menu clicks, popup menus early (mousedown) UI: b/menuitem.js: adjust for b-contextmenu as LitElement UI: kbd.js: fix keydown_move_focus() for shadow DOMs UI: util.js: add prevent_event() UI: b/contextmenu.js: port b-contextmenu to LitElement UI: b/menuitem.js: use 'b-menurow' CSS selector UI: b/menurow.js: port b-menurow to LitElement UI: b/menuitem.js: pass b-menurow turn / noturn attributes to button UI: util.js: add closest() for shadow DOMs UI: b/trackview.vue: always use the b-icon ic="" attribute UI: b/menuitem.js: export KeymapEntry as this.keymap_entry UI: b/contextmenu.vue: collect and register KeymapEntry props from descendants UI: kbd.js: support add+remove of global keymaps UI: b/menuitem.js: port b-menuitem to LitElement UI: util.js: add lrstrip() and collect_text_content() UI: kbd.js: make activeElement and list_focusables shadow DOM aware This allows transparent handling of custom focus navigation and hotkey activation in shadow DOMs. UI: util.js: extend has_ancestor() to support open shadow DOMs UI: b/contextmenu.vue: support click, keymap, b-contextmenu-menudata on Element UI: b/icon.js: port b-icon from vue to LitElement UI: util.js: add adopt_style() and add_style_sheet() UI: b/*.vue: always use the b-icon ic="" attribute GITHUB: workflows/testing.yml: update github actions Merge branch 'package-updates' # 2022-10-12 Tim Janik 84e7c32 * package-updates: ASE: clip.cc: fix macro clash MISC: package.json.in: update various npm packages Makefile.mk: clean x11test/ output dir Merge branch 'activate+deactivate' # 2022-10-12 Tim Janik 4e5ac8b * activate+deactivate: ASE: object.cc: properly check Connection ptr before use ASE: track.cc: remove over eager assertion ASE: project.cc: start_playback(): switch current engine project on demand Makefile.mk: allow make default to configure INSN ASE: project: move activate/deactive to Project ASE: engine.cc: fix loss of "change:prefs" notification connection ASE: engine: add API to set up exclusive Engine + Project relation ASE: track: require Project as parent of track ASE: gadget: add flags field to be used for gadgets and derived types ASE: clapplugin: rename clap_deactivate() and variants ASE: api.hh: use GadgetImpl as parent pointer ASE: api.hh: derive Track from Device ASE: api.hh: derive Project from Device ASE: device: rename and move Device::extract_info() here ASE: clapdevice.cc: fix call to inherited methods ASE: nativedevice: provide remove_all_devices(), implement activation ASE: api.hh: Device: provide _activate() _deactivate() is_active() ASE: nativedevice.cc: clarify TODO ASE: split DeviceImpl into Device and NativeDevice ASE: engine: turn the engine into a global singleton ASE: engine: simnply wrap AudioEngineImpl calls into AudioEngine methods ASE: engine: rename AudioEngineImpl ASE: main: export main_loop_wakeup() Merge branch 'ci-job-split' # 2022-10-11 Tim Janik bd540be * ci-job-split: GITHUB: workflows/testing.yml: split jobs for Ubuntu, Arch, IRC DOC: copyright.ini: assume MPL-2 for x11test/*.json Merge branch 'x11test' # 2022-10-10 Tim Janik 662fd7a * x11test: X11TEST: play1note.json: add recording to play a single MIDI note GITHUB: workflows/testing.yml: run x11test-v on Ubuntu build and upload result Makefile.mk: docuemnt x11test and x11test-v Makefile.mk: add x11test, x11test-v to run (headless) end-to-end tests X11TEST: replay.sh: play Anklang DevTools recording in Electron via Puppetteer X11TEST: ereplay.cjs: use Electron and Puppetteer to replay DevTools recording X11TEST: x11rec.sh: run and record a command in a virtual or nested X11 session MISC: package.json.in: add puppeteer packages MISC: Dockerfile.focal: provide xvfb 9wm ffmpeg Merge branch 'print-class-tree' # 2022-09-28 Tim Janik 8bde98a * print-class-tree: DOC: Makefile.mk: anklang-internals: add "Ase Class Inheritance Tree" ASE: main: add --class-tree to print the class tree JSONIPC: jsonipc.hh: add ClassWalker ASE: internal.hh: add assert_unreached() ASE: engine: minor fixes Merge branch 'fix-vue-3.2.28' # 2022-09-28 Tim Janik 6628472 * fix-vue-3.2.28: UI: b/shell.vue: work around vue-3.2.38 breaking $forceUpdate() before mount() Avoid the Shell calling $forceUpdate() from created(). That used to work up until Vue-3.2.27, but with .28 and .29 results in: vue.js:1843 Uncaught (in promise) TypeError: Cannot read properties of null (reading 'id') at queueJob (vue.js:1843:17) at i.f.i.f (vue.js:4591:44) Aparently $forceUpdate() calls are now broken before mount(). UI: Makefile.mk: fix wildcard for lit.js to not catch little.js Merge branch 'fix-gc' - plugs a GC race condition # 2022-09-27 Tim Janik 6caa570 * fix-gc: JSONIPC: jsonipc.hh: InstanceMap: remove unused swap and move_into ASE: jsonapi.cc: fix GC bookkeeping with mark_unused() and purge_unused() JSONIPC: jsonipc.hh: InstanceMap: add mark_unused() and purge_unused() JSONIPC: jsonipc.hh: add CallbackInfo::classname() to improve error messages Merge branch 'prefault-pages' # 2022-09-27 Tim Janik 9cf276d * prefault-pages: ASE: main.cc: prefault heap and stack pages ASE: main.cc: tune malloc via mallopt to reduce page fault probability Merge branch 'build-improvements' # 2022-09-27 Tim Janik 931a674 * build-improvements: MISC: config-uname.mk: enable link time optimization via -flto for MODE=production MISC: Makefile.mk: clean mkdeb/ if left over MISC: Dockerfile.focal: install libgtk-3-dev which also provides libdbus-1-dev Merge branch 'low-latency-sched' # 2022-09-14 Tim Janik 5184d18 * low-latency-sched: ASE: engine.cc: request low latency scheduling for the synthesis engine ASE: platform: add sched_{set|get|fast}_priority() ASE: dbus: add DBus methods rtkit_make_high_priority + rtkit_get_min_nice_level MISC: mkdeb.sh: postinst: add cap_sys_nice to AnklangSynthEngine MISC: config-checks.mk: add dbus-1 to ase dependencies ASE: utils.cc: allow mixed case debug keys ASE: Makefile.mk: use ASEDEPS_CFLAGS and ASEDEPS_LIBS MISC: config-checks.mk: provide just ASEDEPS_CFLAGS and ASEDEPS_LIBS for ase/ Merge branch 'remote-gc' # 2022-09-14 Tim Janik f59890b * remote-gc: UI: startup.js: renew_gc() on object finalization, report_gc() when requested ASE: jsonapi.cc: support renew_gc() and report_gc() to start new GC cycle The basic idea behind remote GB by the UI requesting renew_gc() and the Jsonapi server swapping wrapper tables in response is described here: https://testbit.eu/2014/rapicorn-remote-reference-counting ASE: jsonapi.cc: test conscise erase() loop over std::map<> Checks the erase() loop used by Jsonipc over std::map<>, in particular ++end must be avoided for empty maps. JSONIPC: jsonipc.hh: support clear/swap/size/move_into for instance ptr map MISC: config-uname.mk: use -Og for debugging which improves debug info Using -Og is a better choice than -O0, because some compiler passes that collect debug information are disabled at -O0. (gcc docs) UI: startup.js: properly namespace Jsonapi/Trigger ASE: jsonapi.cc: properly namespace Jsonapi/Trigger DOC: ch-development.md: properly namespace Jsonapi/Trigger DOC: ch-development.md: minor update UI: startup.js: request Ase.Server via Jsonapi/initialize after handshake ASE: jsonapi.cc: provide Ase.Server object as Jsonapi/initialize reply JSONIPC: jsonipc.hh: reply to Jsonipc/handshake with protocol version 1 JSONIPC: jsonipc.js: require Jsonipc/handshake with protocol version 1 UI: startup.js: maintain $id GC list via Jsonipc.finalization_registration JSONIPC: jsonipc.js: call Jsonipc.finalization_registration hook from ctors UI: GNUmakefile: allow subdir builds Merge branch 'automatic-backup' # 2022-08-24 Tim Janik 72174fb * automatic-backup: ASE: project.cc: automatically backup existing project files ASE: path: add glob() ASE: path: add rename() ASE: utils: add now_strftime() Merge branch 'clap-file-reference' # 2022-08-24 Tim Janik 031c81f * clap-file-reference: ASE: clapplugin: clean up load_state() and save_state() ASE: *.cc: use operator<< where needed for serialization ASE: serialize.hh: add operator>> and operator<< to support pure const serialization ASE: serialize.hh: operator&: catch serialization into const at compile time ASE: project.cc: merge asset_hashes ASE: project.cc: use Error::NO_PROJECT_DIR if anklang.project is missing ASE: api.hh: add Error::NO_PROJECT_DIR ASE: clapplugin: implement file collection ASE: clapplugin.cc: save_state: request plugin_file_reference->save_resources() ASE: clapplugin.cc: add CLAP_EXT_FILE_REFERENCE skeleton ASE: serialize.cc: use TelemetryField for simple serialization tests ASE: serialize: support external serialize(T&,WritNode&) impls via ADL ASE: serialize.cc: test tuple serialization ASE: project.cc: loader_resolve: lookup and resolve files from project dir ASE: project.cc: serialize file hashes as tuple array ASE: serialize.hh: serialize tuple<...> types UI: b/menubar.vue: use project.saved_filename() as "Save" location ASE: api.hh: add Project.saved_filename() ASE: Makefile.mk: upgrade to clap-1.1.1.tar.gz UI: b/app.js: use save_project() ASE: api.hh: rename Project.save_project() ASE: project.cc: canonicalize project file name when saving ASE: project: properly implement writer_collect() ASE: project: add API to collect external files ASE: strings: add strings_version_sort() ASE: path: add dircontains() to check dir hierarchy and compute relative path ASE: path: add copy_file(), use FICLONE ioctl to create CoW clone if possible Currently, FICLONE is supported under Linux for XFS and BTRFS. Use `filefrag -v` to detext or debug shared file extents. ASE: path: add file_size(), gracefully handle errors ASE: clapplugin: derive ClapPluginHandle from GadgetImpl ASE: api.hh: print user notes and allow `rest` argument ASE: api.hh: introduce Gadget._project() ASE: strings: add string_to_hex() ASE: main.cc: add --blake3 to test Blake3 hashing ASE: compress: add blake3_hash_file() and blake3_hash_string() ASE: storage: add stream_reader_from_file() ASE: Makefile.mk: compile BLAKE3 with SSE and AVX variants ASE: Makefile.mk: provide blake3.h from BLAKE3-1.3.1.tar.gz ASE: Makefile.mk: use SOURCE2_O MISC: config-uname.mk: add $(call SOURCE2_O) to create object extensions ASE: clapplugin.cc: fix warnings MISC: config-checks.mk: show sha256sum command used failing downloads Merge branch 'sse+fma-synth-engine' - build releases with SSE + FMA support # 2022-08-12 Tim Janik 5f77129 * sse+fma-synth-engine: ASE: Makefile.mk: build FMA variant iff MODE=production INSN=sse MISC: mkassets.sh: build releases with MODE=production INSN=sse MISC: Makefile.mk: remove INSN build remnants Merge branch 'fix-scripts' # 2022-08-12 Tim Janik a169887 * fix-scripts: MISC: mkassets.sh: handle unbound $V MISC: mkdeb.sh: handle unbound $V MISC: mkAppImage.sh: handle unbound $V MISC: dbuild.sh: handle unbound $V Merge branch 'dockerize-asset-builds' # 2022-08-11 Tim Janik 2fd2f5f * dockerize-asset-builds: MISC: Makefile.mk: adjust release-message MISC: Makefile.mk: export $V for build scripts MISC: Makefile.mk: simplify builds, merge upload-nightly and upload-release Makefile.mk: fix ls-tree.lst generation in tarballs MISC: mkassets.sh: extract release info, make AppImage MISC: mkAppImage.sh: move AppImage build logic here MISC: mkassets.sh: build binary packages from tarball MISC: mkdeb.sh: pass $V to make MISC: dbuild.sh: pass $V into docker env MISC: dbuild.sh: remove unused .dbuild/ handling MISC: Dockerfile.focal: reduce layers MISC: Dockerfile.focal: always become 'builder' user, prepare /ootbuild/ Merge branch 'arch-ci' # 2022-08-11 Tim Janik 76c6214 * arch-ci: .gitignore: add ignores GITHUB: workflows/testing.yml: cleanup after each platform build GITHUB: workflows/testing.yml: build and test on arch, cache arch docker image MISC: Dockerfile.arch: setup archlinux dependencies for building Anklang Use upstream CastXML, the AUR version seems outdated and broken. Merge branch 'docker-caching' # 2022-08-11 Tim Janik 433f9bd * docker-caching: MISC: dbuild.sh: skip TeX during docker image build with -T MISC: Dockerfile.focal: cleanup early to shrink docker image, possibly skip TeX MISC: dbuild.sh: use misc/Dockerfile.focal by default, remove -d, change -f MISC: Dockerfile.focal: rename from Dockerfile-apt, use FROM ubuntu:20.04 ASE: Makefile.mk: add missing dependencies for includes ASE: sortnet.hh: include for std::less Makefile.mk: use `ctags` executable GITHUB: workflows/testing.yml: fix cache-hit detection GITHUB: workflows/testing.yml: skip docker caching on cache miss GITHUB: workflows/testing.yml: invalidate cache if misc/dbuild.sh changes GITHUB: workflows/testing.yml: remove docker image test MISC: get rid of --no-tex and $NO_TEX (now unused) GITHUB: workflows/testing.yml: remove '--no-tex' Avoiding Tex installation was only needed without docker image caching. MISC: dbuild.sh: fix SIGPIPE when searching docker image for INITIALIZE MISC: dbuild.sh: debug wrong INITIALIZE setting MISC: dbuild.sh: use 'ubuntu:20.04' as base instead of 'ubuntu:focal' Both are tags for the same image, but the former is already present on Github's stock system. GITHUB: workflows/testing.yml: fix grep exit status GITHUB: workflows/testing.yml: invalidate cache if misc/Dockerfile-apt changes GITHUB: workflows/testing.yml: stop forcing a docker build step GITHUB: workflows/testing.yml: upgrade to actions/checkout@v2.4.2 GITHUB: workflows/testing.yml: cache docker image via github cache GITHUB: workflows/testing.yml: find version inside docker GITHUB: workflows/testing.yml: always use the same build arg for docker MISC: version.sh: ignore missing tags in Format:%(describe) workaround Merge branch 'dist-tarball' - create distribution tarballs # 2022-08-06 Tim Janik 50d9c06 Adjust versioning and build rules to support proper distribution tarballs that will build without .git/ history. * dist-tarball: MISC: Dockerfile-apt: provide zstd MISC: Makefile.mk: re-enable nightly asset builds Makefile.mk: work around git 2.25.1 not handling Format:%(describe:match) Ubuntu 20.04 still runs git 2.25.1. MISC: version.sh: work around git 2.25.1 not handling Format:%(describe:match) Ubuntu 20.04 still runs git 2.25.1. MISC: Dockerfile-apt: add universal-ctags MISC: dbuild.sh: recognize --help Makefile.mk: use wildcard for toplevel CLEANFILES MISC: Makefile.mk: list Nightly changes MISC: Makefile.mk: fix upload-release MISC: Makefile.mk: use TARBALL version for build-assets MISC: Makefile.mk: minor fixups MISC: Makefile.mk: only check-copyright if .git/ exists MISC: Makefile.mk: remove versioned ChangeLog generation Makefile.mk: ChangeLog: use slightly longer hashes Makefile.mk: fix ChangeLog range Makefile.mk: use ls-tree.lst to generate TAGS MISC: Makefile.mk: use ls-tree.lst DOC: Makefile.mk: use ls-tree.lst Makefile.mk: create and distribute ls-tree.lst MISC: config-utils.mk: provide only $(HAVE_GIT) which is true if .git/ exists Using the old WITHGIT or WITHOUTGIT did not really work. MISC: Makefile.mk: avoid -j, rely on MAKEFLAGS for parallel submakes MISC: Makefile.mk: build-nightly: create and build dist tarball MISC: dbuild.sh: use .dlcache subdir for dockerized ccache MISC: Makefile.mk: build-assets: build from sources in $(TARBALL) MISC: Makefile.mk: record and use artifacts in build-assets MISC: Makefile.mk: add 'build-version' rule MISC: Makefile.mk: call version.sh --make-nightly for nightly builds MISC: Makefile.mk: check nightly versions MISC: Makefile.mk: add 'versioned-manuals' rule DOC: Makefile.mk: use packaged doc/copyright if Git is missing GITHUB: workflows/testing.yml: build with --no-tex and SKIP_LATEX=true Only the PDF manuals need Tex, skipping LaTex installation significantly speeds up the CI builds. MISC: dbuild.sh: add --no-tex (replaces --tex) MISC: Dockerfile-apt: default to building with Tex DOC: Makefile.mk: build PDF manuals, unless SKIP_LATEX=true DOC: Makefile.mk: skip misc/mkcopyright.py if .git is not present MISC: mkdeb.sh: use `misc/version.sh --commit-hash` instead of git MISC: version.sh: add --commit-hash MISC: version.sh: remove extra version printout for --make-nightly MISC: version.sh: add --help and --make-nightly MISC: version.sh: use the same COMMITINFO for archives and .git repos Makefile.mk: dist: allow packaging with NEWS.md worktree changes Makefile.mk: simplify make dist Makefile.mk: add hard dependency on ctags-universal Builds from Git need ctags-universal to reliably generate TAGS for make dist. Makefile.mk: provide $(builddir) and $>/ early on Makefile.mk: check misc/version.sh execution ASE: Makefile.mk: add missing minizip/mz_zip.h dependency DOC: copyright.ini: list freeverb sources under Public Domain dedication DEVICES: freeverb/freeverb.cc: license under MPL-2.0 Merge branch 'freeverb' # 2022-07-31 Tim Janik 554794d * freeverb: DEVICES: freeverb/freeverb.cc: turn into a working AudioProcessor for Ase DEVICES: freeverb/freeverb.cc: make query_info() const, i.e. MT-Safe DEVICES: freeverb/freeverb.cc: move all code completely into Anon namespace DEVICES: freeverb/freeverb.cc: use explicit add_param() IDs and fix arguments DEVICES: freeverb: implement STK and VLC damping Avoid reinforcing feedback loop in the original damping code, by providing VLC and STK damping modes. The latter is likely closest to the original intention so it is now the default. This also reorders some parameters and removes the original freezing mode, that does not really make sense for Processors. DEVICES: freeverb/freeverb.cc: add Freeverb Processor DEVICES: freeverb/revmodel.cpp: fix missing `int i` decls DEVICES: freeverb/Freeverb*: remove unused vst files DEVICES: freeverb/: fix up whitespace and \n without \r everywhere DEVICES: freeverb/: Freeverb - free public domain reverb SOURCE CODE Freeverb - Free, studio-quality reverb SOURCE CODE in the public domain Written by Jezar at Dreampoint - http://www.dreampoint.co.uk DEVICES: freeverb/Makefile.mk: add source file to devices/4ase.ccfiles DEVICES: freeverb/GNUmakefile: allow subdir builds DEVICES: Makefile.mk: add dependencies, clean rule, etc for devices/ sources DEVICES: blepsynth/Makefile.mk: simply add source files to devices/4ase.ccfiles UI: b/contextmenu.vue: allow 0 as valid menuitem.uri value UI: b/cliplist.vue: only call non-null Shell.piano_current_tick() README.md: fix manual link Merge branch 'jack-driver' # 2022-07-29 Tim Janik cc1cb08 * jack-driver: DOC: ch-install.md: merge jack howto into driver-setup section DOC: ch-install.md: add chapter about download and installation ASE: main.cc: print the real executable_name() for --version and usage ASE: driver.cc: load jackdriver.so ASE: Makefile.mk: optionally build jackdriver.so MISC: config-checks.mk: check if jack.pc >= 0.125.0 is present Jack 0.125.0 ships with Ubuntu-20.04. ASE: driver-jack.cc: turn into a working PCM driver for Ase ASE: driver-jack.cc: adapto to Ase namespace ASE: merge original Jack driver by Stefan Westerfeld Initial version of Jack driver using the new driver API Add minimal jack howto Block SIGPIPE to avoid crashes when jackd dies Driver: return read and write latency for a pcm driver separately For instance for synchronizing the play position pointer ui with the audio buffering, you want to know how much write latency you have, but don't care about the amount of read latency. Add list with possible improvements from PR 31 https://github.com/tim-janik/beast/pull/31 Add some minor fixes as requested in review ASE: engine.cc: consistently calculate buffer size for multiple channels ASE: datautils.hh: add fast_copy() for floats and ints ASE: driver-alsa.cc: adjust debug messages, remove unused variable ASE: main.cc: require command line options to enable JSIPC logging Merge branch 'version-fixes' # 2022-07-29 Tim Janik 61e8d05 * version-fixes: ASE: remove unneeded version postfix from AnklangSynthEngine MISC: version.sh: fix development postfix for shallow versions MISC: version.sh: fix build id with development postfix MISC: Makefile.mk, version.sh: fix release tag missing 'v'-prefix ">Merge branch 'fix-unstyled-content-flashing' # 2023-09-01 Tim Janik 39ac286 * fix-unstyled-content-flashing: UI: b/contextmenu.js: fix layout interference inside flexbox during popup UI: index.html: load global.css via style+@import, mark as data-4litcomponent UI: little.js: add adopt_component_styles() for simple style+@import cloning This allows to work around FOUC issues with Chrome, see comments. Merge branch 'propgroup-litcomponent' # 2023-08-30 Tim Janik 3957579 * propgroup-litcomponent: UI: b/pianoroll.js: add todo comment UI: b/knob.js: use fixed adjustment factors for wheel events UI: util.js: wheel_delta: normalize delta to pixels for modern browsers Work around Firefox changing deltaY vs deltaMode depending on the order of access! Throw away old compat code. UI: b/knob.js: fix invalid field access UI: b/propgroup.js: avoid shadowRoot UI: util.js: refuse pointer lock grabbing on orphans and shadowRoot descendants UI: b/propgroup.js: port to LitComponent UI: b/deviceeditor.vue: use b-propgroup UI: b/propinput.js: support readonly + disabled state UI: b/propinput.js: add support for as property field UI: b/propinput.js: let labeled default to false UI: b/toggle.js: store pressed button number UI: util.js: add uuname() Merge branch 'b-propinput-litcomponent' # 2023-08-23 Tim Janik a7ab348 * b-propinput-litcomponent: UI: b/propinput.js: port to LitComponent UI: b/choiceinput.js: support label attribute as choice tip UI: little.js: add LitComponent.request_update_()

SVGuitar is a JavaScript (TypeScript) SVG guitar chord renderer library

Updated: 30 Aug, 2023

2.2.2 (2023-08-30)

Bug Fixes

  • upgrade svgdom from 0.1.11 to 0.1.14 (f6e4e3a)

JackTrip is a Linux, Mac OSX, or Windows multi-machine audio system used for network music performance over the Internet.

Updated: 30 Aug, 2023

What's Changed

Full Changelog: v2.0.0...v2.0.1

MilkyTracker is a Fasttracker II like open source, multi-platform music application for creating .MOD and .XM module files.

Updated: 30 Aug, 2023

1.04.00

see here for changelog

MAC users: feel free to provide us extra builds here or donate so we can get an apple account:

mac arch workaround x86_64 right-click > Open on first launch to bypass developer cannot be verified x86_64 + arm64 run xattr -d com.apple.quarantine /Applications/Milkytracker.app

Anklang, a digital audio synthesis application for live creation and composition

Updated: 30 Aug, 2023

Anklang 0.1.0.nightly2308300938

Development version - may contain bugs or compatibility issues.

as property field UI: b/propinput.js: let labeled default to false UI: b/toggle.js: store pressed button number UI: util.js: add uuname() Merge branch 'b-propinput-litcomponent' # 2023-08-23 Tim Janik a7ab348 * b-propinput-litcomponent: UI: b/propinput.js: port to LitComponent UI: b/choiceinput.js: support label attribute as choice tip UI: little.js: add LitComponent.request_update_() UI: util.js: add addnotify_() and delnotify_() to extended properties UI: b/pro-group.vue: use UI: b/knob.js: simplify MISC: package.json.in: extend nodemon delay to reduce conflicts with lint rules Sometimes when ui/lint is triggered, files are written and make serve also runs rebuild rules due to nodemon. Merge branch 'fix-raw-tex' # 2023-08-19 Tim Janik 64882dc * fix-raw-tex: UI: xbcomments.js: properly quote special characters in docs DOC: Makefile.mk: do not parse source comments as raw_tex Merge branch 'anklang-internals+jsdocs' # 2023-08-19 Tim Janik b554e80 * anklang-internals+jsdocs: UI: b/basics.js: small docu update DOC: Makefile.mk: integrate JS component docs into internal manual DOC: jsdoc2md.js: skip extra subsection indentation UI: Makefile.mk: optimize *.jscss build, fix anklang-internals.html dependency UI: b/*.js: use three hashes '###' to indent docu subsections Merge branch 'swesterfeld-piano-roll-move', closes #16 # 2023-08-03 Tim Janik ec26905 * swesterfeld-piano-roll-move: UI: b/piano-ctrl.js: support moving/copying notes with the mouse UI: b/cliplist.js: restore user manual docs Merge branch 'jsdoc-elements' # 2023-08-03 Tim Janik 9d0c8de * jsdoc-elements: DOC: poxystyle.css: fix dark theme colors DOC: jsdoc2md.js: use pandoc anchors everywhere with data-4search hints DOC: poxy.sh: forbid raw-html and support data-4search on UI: b/*.js: reformat documentation to use @class and @description commands See also: https://jsdoc.app/tags-description.html DOC: poxy.sh: parallelize JsDoc processing DOC: poxy.sh: fix exit code and compact markdown DOC: poxy.sh: add ui/ch-*.md files to poxy docs DOC: jsdoc2md.js: allow descriptions of virtual classes as docu sections DOC: copyright.ini: assign MPL-2 to ch-*.md documentation files DOC: Makefile.mk: integrate ui/ch-component.md Makefile.mk: add html/ to CLEANDIRS Makefile.mk: clean poxy/ and assets/ DOC: ch-development.md: explicitely describe ASE UI: ch-component.md: describe lit components UI: ch-component.md: rename from ui/b/ch-vue.md README.md: add Star History Chart Merge branch 'toggle-as-lit' # 2023-08-03 Tim Janik 0eba7de * toggle-as-lit: UI: b/pro-input.vue: handle @valuechange on b-toggle UI: b/toggle.js: port to LitComponent Merge branch 'x11test-delay' # 2023-08-02 Tim Janik 8712b43 * x11test-delay: X11TEST: ereplay.cjs: add delay to mitigate a UI-reload race on project changes X11TEST: replay.sh: simplify AnklangSynthEngine executable check Merge branch 'poxy-on-jammy' # 2023-08-02 Tim Janik 3be13e1 * poxy-on-jammy: GITHUB: workflows/testing.yml: run poxy on ubuntu:22.04 MISC: docker_run: fix interactive invocations MISC: Dockerfile.jammy: setup development tools for ubuntu:22.04 builds Merge branch 'make-dist-and-assets' # 2023-07-31 Tim Janik 4694aa8 * make-dist-and-assets: GITHUB: workflows/release.yml: add Ping-IRC job GITHUB: workflows/release.yml: use misc/docker_run GITHUB: workflows/release.yml: add action to build & create releases from tags Makefile.mk: dist: assign release version to misc/version.sh:BAKED_DESCRIBE MISC: version.sh: prepare BAKED_DESCRIBE variable to define baked in version MISC: version.sh: support lightweight release tags via exact match UI: Makefile.mk: fix unintentional tscheck remakes DOC: Makefile.mk: add doc/ch-releasing.md to internal manual ASE: Makefile.mk: rebuild ase/buildversion*.cc if GITCOMMITDEPS changes Makefile.mk: rebuild package.json if GITCOMMITDEPS changes MISC: config-utils.mk: take tags and packed-refs into account for GITCOMMITDEPS DOC: ch-releasing.md: elaborate on releases and assets DOC: ch-releasing.md: start describing versioning and the release process MISC: mknews.sh: add development version disclaimer MISC: Makefile.mk: remove partial release build rules MISC: mkassets.sh: simplify to just make dist and trigger release asset builds MISC: mkAppImage.sh: build AppImage in assets/ MISC: mkAppImage.sh: use tools from appimagetools/ dir MISC: Makefile.mk: cache downloads of appimage tools Makefile.mk: make dist: also generate assets/ChangeLog MISC: mkdeb.sh: create debian package in assets/ DOC: Makefile.mk: support building assets/pdf MISC: Makefile.mk: avoid depending on appimage-runtime-zstd for normal builds UI: tsconfig.json: remove exclude section Makefile.mk: grep-reminders: only inspect existing files Makefile.mk: add recent commits to NEWS.md Makefile.mk: build dist tarball in assets/ with high compression ASE: main.cc: for --version, show short version and build id MISC: config-checks.mk: use version_short ELECTRON: Makefile.mk: use version_short ASE: Makefile.mk: use version_short Makefile.mk: extract version_hash, use version_short for brief version identifiers * Remove version_m.m.m use version_short instead * Remove version_buildid, that is actually version_short + version_hash MISC: Makefile.mk: remove unused release-news MISC: mknews.sh: generate most recent section of NEWS.md MISC: mkdeb.sh: parse hash from misc/version.sh MISC: version.sh: reduce logic to produce baked/git/fallback version/hash/date Merge branch 'docker_build_run_clean' # 2023-07-31 Tim Janik acafef2 * docker_build_run_clean: GITHUB: workflows/testing.yml: remove duplicate chown invokation GITHUB: workflows/testing.yml: use misc/docker_build, docker_run, docker_clean MISC: docker_clean: cleanup permissions and CI image tag MISC: docker_run: run in a CI image built by docker_build MISC: docker_build: build a Dockerfile CI image with ghcr.io cache support UI: Makefile.mk: make sure all JS files are built before running tscheck Merge branch 'swesterfeld-piano-roll-note-length', closes #15 # 2023-07-27 Tim Janik d115723 * swesterfeld-piano-roll-note-length: UI: b/piano-ctrl.js: cleanup note_duration_delta at the end of a drag UI: b/piano-ctrl.js: support resizing multiple notes in a selection Merge branch 'simple-vue-ports' # 2023-07-27 Tim Janik 1c13e75 * simple-vue-ports: UI: Makefile.mk: adapt make install wildcards UI: b/statusbar.js: port to LitComponent UI: b/databubble.js: port to native HTML component UI: b/partthumb.vue: retire partthumb which is superceded by clipview UI: b/hscrollbar.vue: retire hscrollbar code until we really need one UI: b/color-picker.vue: retire color picker code until we really need one Merge branch 'global-css-rename' # 2023-07-27 Tim Janik c402d5e * global-css-rename: UI: index.html: load global.css UI: Makefile.mk: generate global.css UI: b/shell.vue: fix comment UI: global.scss: rename (from globals.scss) b/c it now contains global CSS Merge branch 'globalscss-icon-fonts' # 2023-07-27 Tim Janik 7a7dd7e * globalscss-icon-fonts: UI: b/app.js: add comment for spinner testing UI: index.html: adjust font resource paths UI: globals.scss: import all icon SCSS defs UI: dom.js: properly quote font names ASE: websocket.cc: use CACHE_AUTO since we do not handle conditional requests UI: b/menuseparator.js: fix customElements extends specification UI: b/icon.js: leave icon font loading to globals.scss, assert font presence UI: b/shell.vue: spinner.scss is already imported by globals.scss UI: Makefile.mk: move fonts into ui/ and merge globals.scss dependencies UI: globals.scss: rename normalize.scss for merging import UI: postcss.js: keep .css imports, include all others UI: b/icon.js: assert "Material Icons" font_family instead of loading material-icons.css UI: globals.scss: directly include material-icons.css UI: Makefile.mk: prepare ui/material-icons.css for globals.css UI: dom.js: add font_family_loaded() UI: dom.js: add file for DOM utilities Merge branch 'csshash-2fix-fouc' # 2023-07-27 Tim Janik 0b1e7e7 * csshash-2fix-fouc: UI: index.html: mark globals.css as data-4litcomponent UI: little.js: clone stylesheet links marked data-4litcomponent into shadowRoot UI: index.html: reload vue-styles.css and globals.css once the CSSHASH changes UI: Makefile.mk: support @--CSSHASH--@ insertions fro index.html ASE: websocket.cc: send "forever" Cache-Control with text/css to reduce FOUC Merge branch 'globalscss-4-litcomponents' # 2023-07-27 Tim Janik 709f4e9 * globalscss-4-litcomponents: UI: Makefile.mk: run stylelint on ui/globals.css UI: b/positionview.js: add CSS to globals.css, avoid shadowRoot UI: b/playcontrols.js: add CSS to globals.css, avoid shadowRoot UI: b/pianoroll.js: add CSS to globals.css, avoid shadowRoot UI: b/partlist.js: add CSS to globals.css, avoid shadowRoot UI: globals.scss: only style button and push-button for LightDOM UI: b/objecteditor.js: add CSS to globals.css, avoid shadowRoot UI: b/switchinput.js: add CSS to globals.css, avoid shadowRoot UI: b/numberinput.js: add CSS to globals.css, avoid shadowRoot UI: b/textinput.js: add CSS to globals.css, avoid shadowRoot UI: b/more.js: add CSS to globals.css, avoid shadowRoot UI: b/tracklist.js: add CSS to globals.css, avoid shadowRoot UI: b/trackview.js: add CSS to globals.css, avoid shadowRoot UI: b/menubar.js: fix b-menuseparator UI: b/trackview.js: fix b-menuseparator UI: b/menutitle.js: add CSS to globals.css UI: b/menuseparator.js: make b-menuseparator a simple HTMLHRElement UI: b/menurow.js: add CSS to globals.css, avoid shadowRoot UI: b/menuitem.js: add CSS to globals.css UI: b/menubar.js: add CSS to globals.css, avoid shadowRoot UI: b/knob.js: add CSS to globals.css, avoid shadowRoot UI: b/icon.js: add CSS to globals.css UI: b/editable.js: add CSS to globals.css UI: b/contextmenu.js: add CSS to globals.css UI: b/clipview.js: add CSS to globals.css, avoid shadowRoot UI: b/cliplist.js: add CSS to globals.css, avoid shadowRoot UI: b/choiceinput.js: add CSS to globals.css, avoid shadowRoot UI: b/buttonbar.js: add CSS to globals.css, avoid shadowRoot UI: b/basics.js: add CSS to globals.css, cleanups UI: b/aboutdialog.js: add CSS to globals.css, avoid shadowRoot UI: globals.scss: merge contents of grid.scss UI: Makefile.mk: fix globals.scss cleanup UI: Makefile.mk: include *.jscss contents in globals.css Merge branch 'postcss-normalize-charset' # 2023-07-27 Tim Janik 746575f * postcss-normalize-charset: UI: postcss.js: postprocess CSS with postcss-normalize-charset MISC: package.json.in: install postcss-normalize-charset UI: postcss.js: add support for -I to add include paths Merge branch 'aboutdialog-lit' # 2023-07-27 Tim Janik 874535f * aboutdialog-lit: UI: index.html: add comments to start_view_transition() UI: globals.scss: add b-dialog styling UI: b/contextmenu.js: use transparent backdrop for menus UI: globals.scss: add view-transition-group defaults, add scale0 keyframes UI: dark.scss: add b-animation-duration and b-dialog-colors UI: tsconfig.json: avoid checks of postcss.js.tst.js UI: b/menubar.js: make use of Shell.show_about_dialog() UI: b/app.js: leave aboutdialog handling to Shell.show_about_dialog() UI: b/shell.vue: use b-aboutdialog.shown, add show_about_dialog(), handle close * Use proper internal state for showing b-aboutdialog * Expose showing/hiding through show_about_dialog() * Allow animated closing of b-aboutdialog with start_view_transition UI: b/aboutdialog.js: display Lit version number UI: b/aboutdialog.js: port to LitComponent UI: eslintrc.js: declare start_view_transition as global symbol UI: index.html: define start_view_transition() This is a Vue-aware wrapper around document.startViewTransition() (atm Chrome specific), that still does the right thing on Firefox and has a disable flag. UI: Makefile.mk: index.html: add lit_version to config_json Merge branch 'dark-palette' # 2023-07-24 Tim Janik 61e1ecd * dark-palette: UI: dark.scss, globals.scss: use palette for body colors UI: Makefile.mk: add palette.scss to scss files UI: palette.scss: add warm grey palette based on ZCAM Jz (lightness) steps Merge branch 'modern-normalize' # 2023-07-24 Tim Janik aa3a6b6 * modern-normalize: UI: little.js: load globals.css into every LitComponent UI: index.html: give globals.css precedence over vue-styles.css UI: index.html: remvoe shadow.css UI: Makefile.mk: remove ui/elements.scss ui/shadow.scss Makefile.mk: run 'lint' during `make check` UI: remove unused files elements.scss and shadow.scss UI: globals.scss: merge styles from elements.scss and shadow.scss UI: globals.scss: use normalize.css to normalize latest Chrome & Firefox UI: normalize.css: leave font-family setting to our own theme MISC: mkcopyright.py: fix MIT License pattern to deal with case and 'd'-ending UI: normalize.css: insert MIT License and add Copyright notices UI: normalize.css: add renamed modern-normalize.css version 2.0.0 Add modern-normalize.css from https://github.com/sindresorhus/modern-normalize licensed MIT. Merge branch 'poxystyle' # 2023-07-24 Tim Janik 7134954 * poxystyle: DOC: poxy.sh: allow doc/poxystyle.css to fixup colors DOC: poxystyle.css: fix light theme colors and sizes UI: b/cliplist.js: minor edit README.md: update roadmap with items from Stefan Westerfeld Merge branch 'ts-check-lit-components', add ts-check and fix lint issues # 2023-07-03 Tim Janik a7ea5f4 * ts-check-lit-components: UI: b/app.js: reload UI on project changes UI: b/objecteditor.js: fix output UI: util.js: add missing type annotations UI: kbd.js: add missing type annotations UI: b/trackview.js: add @ts-check and missing type annotations UI: b/tracklist.js: add @ts-check and missing properties UI: b/playcontrols.js: add @ts-check UI: b/pianoroll.js: add @ts-check and missing type annotations UI: b/piano-ctrl.js: minor type fix UI: b/partlist.js: add @ts-check UI: b/more.js: add @ts-check UI: b/menutitle.js: add @ts-check UI: b/menuseparator.js: add @ts-check UI: b/menurow.js: add @ts-check UI: b/menuitem.js: add @ts-check UI: b/knob.js: add @ts-check and missing type annotations UI: b/editable.js: add @ts-check UI: b/contextmenu.js: add @ts-check and missing type annotations UI: b/clipview.js: add @ts-check and missing type UI: b/buttonbar.js: add @ts-check README.md: escape FIXME keywords UI: Makefile.mk: grep for reminders in ui/lint DEVICES: Makefile.mk: grep for reminders in devices/lint Makefile.mk: at the end of 'all', grep for reminder keywords in known sources Makefile.mk: ls-tree.d needs GITCOMMITDEPS, i.e. misc/config-utils.mk ASE: Makefile.mk: grep for reminders in ase/lint Makefile.mk: add 'lint' as toplevel phony rule UI: b/tracklist.js: cleanup CSS UI: b/textinput.js: cleanup CSS UI: b/switchinput.js: cleanup CSS UI: b/shell.vue: cleanup CSS UI: b/positionview.js: cleanup CSS UI: b/pianoroll.js: cleanup CSS UI: b/noteboard.vue: cleanup CSS UI: b/menutitle.js: cleanup CSS UI: b/menurow.js: cleanup CSS UI: b/menuitem.js: cleanup CSS UI: b/knob.js: cleanup CSS UI: b/icon.js: cleanup CSS UI: b/folderview.vue: cleanup CSS UI: b/filedialog.vue: cleanup CSS UI: b/editable.js: cleanup CSS UI: b/dialog.vue: cleanup CSS UI: b/databubble.vue: cleanup CSS UI: b/contextmenu.js: cleanup CSS UI: b/clipview.js: cleanup CSS UI: b/basics.js: inlcude v-flex mixin UI: theme.scss: fix color syntax UI: startup.js: fix import path UI: Makefile.mk: use stylelint with -f unix only inside emacs UI: Makefile.mk: add missing ui/spinner.scss dependency UI: stylelintrc.cjs: ignore whitespace rules UI: Makefile.mk: add Ase.server @type UI: mixins.scss: add v-flex mixin UI: mixins.scss: use $b-font-stack-kbd-mono UI: dark.scss: define $b-font-stack-kbd-mono for hotkey rendering UI: b/menubar.js: port to LitComponent * Cleanup markup * Cleanup CSS UI: b/positionview.js: port to LitComponent UI: b/basics.js: use h-flex() UI: mixins.scss: add h-flex() mixin MISC: Dockerfile.arch: install unzip Merge branch 'inputs-as-litelement' # 2023-06-27 Tim Janik 2ddfe22 * inputs-as-litelement: X11TEST: play-notes.json: adjust recording for new web components ASE: server.cc: listen on "notify" emissions from properties ASE: properties.cc: fix notifications, emit notify:identifier UI: util.js: turn xprop.value_ into a reactive property UI: b/choiceinput.js: take b-objecteditor into account in CSS UI: b/pro-input.vue: use @valuechange on b-choiceinput UI: b/preferencesdialog.vue: use b-objecteditor UI: util.js: avoid extending the same property twice UI: util.js: export fullstop() UI: Makefile.mk: use tsc with --pretty false only inside emacs UI: b/objecteditor.js: port to LitComponent * Turn into shadowless component * Properly prefix CSS classes * Listen on and handle @valuechange events * Do not freeze extended properties that we keep mutating * Remove old resize blocker logic UI: startup.js: load basic custom components early on UI: b/basics.js: move h-flex, v-flex, c-grid, push-button here, shadowless Make these simple basic containers shadowless, i.e. without shadow root. UI: b/pro-input.vue: add support for b-choiceinput UI: little.js: export 'nothing' from Lit UI: types.d.ts: add debug() global UI: b/fed-object.vue: add support for b-choiceinput UI: b/choiceinput.js: port to LitComponent, render on demand only UI: b/tracklist.js: fix stacking of top border shadow UI: b/switchinput.js: allow LEFT/RIGHT/UP/DOWN to toggle UI: b/fed-object.vue: add support for b-switchinput UI: b/switchinput.js: port to LitComponent UI: types.d.ts: declare global CONFIG UI: b/fed-object.vue: add support for b-numberinput UI: b/numberinput.js: simplify and fix sizing UI: b/numberinput.js: port to LitComponent UI: b/textinput.js: dispatch value changes as valuechange "event" Merge branch 'fix-lit-html' # 2023-06-22 Tim Janik 31da2dd * fix-lit-html: UI: b/*.js: fix trailing-solidus in html`` markup UI: eslintrc.js: add plugin:lit/recommended to linting rules MISC: package.json.in: install eslint-plugin-lit Merge branch 'InterDisplay', based on InterVariable-4.0 font # 2023-06-22 Tim Janik 89c9d01 * InterDisplay: UI: dark.scss: add a fallback font stack UI: theme.scss: remove outdated font stuff UI: mixins.scss: move b-kbd-hotkey here UI: elements.scss: use b-font-weight-bold() and b-font-weight-bolder() UI: b/*.vue, b/*.js: use b-font-weight-bold() and its variants UI: dark.scss: define b-font-weight-{normal|bold|bolder} mixins UI: b/menutitle.js: use drop-caps while InterVariable-4.0 small-caps are broken See also: https://github.com/rsms/inter/issues/556#issuecomment-1598010623 UI: elements.scss: leave font handling to theme, globals and shadow UI: b/pianoroll.js: use b-canvas-font UI: b/partthumb.vue: use b-canvas-font UI: b/clipview.js: use b-canvas-font UI: shadow.scss: use b-ui-font() inside shadow DOMs UI: globals.scss: make use of b-ui-font() UI: dark.scss: configure b-ui-font() for "InterVariable" in InterDisplay style UI: globals.scss: leave font-face defs to index.html UI: index.html: cleanup preloads, add @font-face for "InterVariable" UI: b/icon.js: add small comment UI: Makefile.mk: download InterVariable.woff2 UI: stylelintrc.cjs: disable "font-family-name-quotes" to allow quoted font names Merge branch 'component-styling' # 2023-06-21 Tim Janik 234bf99 * component-styling: UI: b/playcontrols.js: use JsExtract.css_url() UI: b/icon.js: use JsExtract.css_url() UI: b/textinput.js: make this a shadowless component UI: little.js: add JsExtract.css_url() UI: little.js: use cast to work around TS2425 UI: b/playcontrols.js: port to LitComponent UI: Makefile.mk: remove temporary file UI: b/*.vue: remove useless mixins import UI: index.html: import globals.css UI: globals.scss: import elements.scss which includes mixins UI: Makefile.mk: create globals.css and auto-import mixins.scss for vue styles UI: elements.scss: rename from domstyles.scss UI: b/button-bar.vue: port to LitComponent UI: b/*.js: access only LitComponent fields (not LitElement) UI: little.js: remove LitElement export UI: startup.js: derive from LitComponent (not LitElement) UI: b/*.js: derive from LitComponent (not LitElement) UI: b/partlist.js: embed and load CSS via JsExtract UI: Makefile.mk: fix dependenc for scss rebuilds UI: b/partlist.js: import Util UI: types.d.ts: declare __DEV__ global UI: b/pianoroll.js: extend LitComponent and use reactive_wrapper to track notes Also, merge multiple repaint requests into the same micro task. UI: b/clipview.js: leave width to parent UI: b/cliplist.js: set 'data-f1' only once suffices UI: b/trackview.js: render b-trackview context menu on demand UI: b/contextmenu.js: fix close() and synchronize updates * await this.updateComplete before showModal() * properly emit 'close', take nesting into account UI: b/partlist.js: port to LitElement UI: mixins.scss: add transparent-scrollbars mixin Merge branch 'clang-tidy' # 2023-06-18 Tim Janik 29cc5ff * clang-tidy: MISC: mkassets.sh: always use /tmp/anklang-mkassets/ for release builds GITHUB: workflows/testing.yml: fix key file permissions GITHUB: workflows/testing.yml: fixup permissions at CI end GITHUB: workflows/testing.yml: remove missing variable reference GITHUB: workflows/testing.yml: fix arch perms and focal redirection GITHUB: workflows/testing.yml: use $DOCKER_RUN and ghcr.io for all tasks * use $DOCKER_RUN and ghcr.io caching for Focal-Docs * adjusting git.safe.directory is not needed for Lunar * use $DOCKER_RUN and ghcr.io caching for Arch-Replay MISC: Dockerfile.focal: remove unused RUNs, rename user to ubuntu * remove unused OOTBUILD, rename builder user to ubuntu * add a comment howto build and run this image * use fixed user and group id of 1000 MISC: Dockerfile.arch: use fixed user and group ids of 1000 MISC: Dockerfile.arch: remove unused OOTBUILD and unused poxy MISC: Dockerfile.lunar: remove unused OOTBUILD GITHUB: workflows/testing.yml: directly use docker run for lunar and fix perms MISC: Dockerfile.lunar: upgrade to nodejs-20 MISC: package.json.in: upgrade npm build tools and electron-25 MISC: package.json.in: remove unused rollup-plugin-node-resolve MISC: Makefile.mk: fix missing directory dependency GITHUB: workflows/testing.yml: add Lunar-Clang-Tidy, rename Focal-Docs MISC: Dockerfile.lunar: provide build environment with clang-17 on ubuntu:23.04 MISC: colorize.sh: colorize error, warning, note and special case Emacs MISC: Makefile.mk: reimplement clang-tidy and clang-tidy-clean rules Makefile.mk: defined CLANG_TIDY Makefile.mk: create ls-tree.d and provide $(LS_TREE_LST) Merge branch 'sorted-vector' # 2023-06-08 Tim Janik 7b3b380 * sorted-vector: ASE: sortnet: implement SortedVector ASE: testing.hh: TFLOATS(): assert float equality within an apsilon ASE: combo.cc: add SPL link Merge branch 'swesterfeld-fix-pcg-ub' # 2023-06-07 Tim Janik 1d49d48 * swesterfeld-fix-pcg-ub: ASE: randomhash: fix undefined behaviour in Pcg32Rng Left shifting a 32bit value by 32 bits is UB. * Closes #14 Merge branch 'appimage-rpath-fix' # 2023-06-07 Tim Janik f609e1e * appimage-rpath-fix: MISC: mkAppImage.sh: avoid `linuxdeploy {-e|-l}` which change binary locations Avoid `linuxdeploy {-e|-l}`, these options change the binary locations by copying. The copies mess up ELF location detection and restoring the original locations causes wrong relative $ORIGIN paths. We just use --deploy-deps-only now, which keeps the binaries in place and correctly adjusts the relative $ORIGIN path. MISC: mkAppImage.sh: remove unused command Merge branch 'appimage-dependencies' # 2023-06-06 Tim Janik 1696a12 * appimage-dependencies: MISC: mkAppImage.sh: reduce workarounds by using linuxdeploy --deploy-deps-only MISC: mkAppImage.sh: add ELF dependencies for AnklangSynthEngine and gtk2wrap This adds libFLAC.so, libogg.so, libopus.so and libgdk-x11-2.0.so, libgtk-x11-2.0.so to the AppImage. Closes #13. Merge branch 'fix-imports' # 2023-06-06 Tim Janik 1b47b9e * fix-imports: UI: util.js: add missing Kbd import UI: eslintrc.js: remove 'Util' global UI: b/*.vue: add missing Util imports UI: b/*.js: add missing Util imports Merge branch 'jsdoc-tsimport' # 2023-06-05 Tim Janik c184b5e * jsdoc-tsimport: UI: b/cliplist.js: jsdoc-tsimport-plugin does not support a blank after import DOC: jsdocrc.json: use jsdoc-tsimport-plugin to parse tsc file imports * Fix JsDoc choking on typescript import statements that import typed from other JS files. * See also: https://github.com/jsdoc/jsdoc/issues/1645#issuecomment-768293857 MISC: package.json.in: install jsdoc-tsimport-plugin Merge branch 'typescript-jsdoc-checks' # 2023-06-05 Tim Janik 819895c * typescript-jsdoc-checks: UI: types.d.ts: allow App, Data, Shell Ase globals UI: index.html: add importmap to allow lit module imports UI: tsconfig.json: configure typescript checks, allow JS type checks + imports UI: wrapper.js: add @param type UI: little.js: add @ts-check, add types, add explicit exports for tsc UI: b/app.js: add @ts-check and missing property decl UI: b/cliplist.js: add @ts-check, missing imports, exports and initializations UI: b/clipview.js: export class UI: wrapper.js: add @ts-check and type annotations UI: b/statusbar.vue: use material icons for info and instrument panel UI: b/icon.js: fix material-icons size UI: Makefile.mk: add 'tscheck', 'stylelint' and 'lint' rules * add 'lint' dependency to run all of stylelint eslint tscheck * add 'tscheck' rule to selectively run typescript checks * add explicit 'stylelint' rule * simplify lit.js rollup * ui/vue.js: leave eslint cache alone * install material-icons from npm * cleanup eslint rule * ui/rebuild: avoid bg jobs, no need to print dir in sub MAKE MISC: package.json.in: cleanup serve and rebuild scripts MISC: package.json.in: remove eslint script, use make eslint instead MISC: package.json.in: install material-icons@1.13.6 Makefile.mk: whitespace fix GITHUB: workflows/testing.yml: use git fetch --unshallow Apparently `git fetch --shallow-since` does not work with the merge commit created by PR checkouts. Using `git fetch --unshallow` might be less efficient for regular branches, but at least works with trunk and PRs. MISC: package.json.in: upgrade lit, electron, vue, postcss, etc UI: b/pianoroll.js: fix indicator interacting with the cursor MISC: package.json.in: install typescript to enable code checks Merge branch 'nightly-version' # 2023-05-20 Tim Janik 8459bbb * nightly-version: MISC: Makefile.mk: update Nightly releases to avoid excessive emails MISC: gh_delete_assets.sh: add script to delete all release assets via gh README.md: update documentation links MISC: version.sh: use 0.1.2.dev3 for development versions for proper ordering Using .dev[0-9] postfixes properly sorts: 0.1.2 < 0.1.2.dev3 < 0.1.3 This works for sort -V, dpkg, rpm and PIP versions. See: https://peps.python.org/pep-0440/#public-version-identifiers MISC: Makefile.mk: fix typo Merge branch 'ci-build-updates' # 2023-05-19 Tim Janik 580cf66 * ci-build-updates: MISC: Makefile.mk: use gh, keed *-dev version number for Nightly releases * Use gh instead of hub to create releases * Keep the development version number for Nightly releases * Add a brief disclaimer about Nightly releases MISC: version.sh: simplify, support --commit-date and $RELEASE_VERSION GITHUB: workflows/testing.yml: add named step "Fetch last release tag" GITHUB: workflows/testing.yml: fetch git history since last release tag GITHUB: workflows/testing.yml: update ping deps GITHUB: workflows/testing.yml: fix workflow names GITHUB: workflows/testing.yml: run (full) docu upload on Ubuntu GITHUB: workflows/testing.yml: run X11 tests on Arch DOC: poxy.sh: include all Anklang docs in upload MISC: Dockerfile.focal: install pip, doxygen and poxy MISC: Dockerfile.focal: install twm for x11test MISC: Dockerfile.arch: install libgtk3 and libnss for Electron MISC: Dockerfile.arch: install xvfb ffmpeg twm for x11test-v X11TEST: x11rec.sh: switch to using twm with auto placement GITHUB: workflows/testing.yml: use full doc/ install dir as doc artifact GITHUB: workflows/testing.yml: test clang builds under Ubuntu GITHUB: workflows/testing.yml: remove unused env var from Arch build rule Merge branch 'g++-fixes' # 2023-05-17 Tim Janik 8404380 * g++-fixes: ASE: cxxaux.hh: fix internal member typedef name ASE: cxxaux.hh: use std::conditional_t<> for rebind::other, fix for g++-12 With template specializations, g++-11 and g++-12 error out with "explicit specialization in non-namespace scope", so we use std::conditional_t<> which seems to work with g++-12 and clnag++-15. Merge branch 'libstdc++-13' # 2023-05-17 Tim Janik c0f01a0 * libstdc++-13: ASE: cxxaux.hh: patch up make_shared() to make libstdc++13 happy * Move shared ptr allocator out of function scope (to allow template specialization) * Add rebind<> template to shared ptr allocator which derives from std::allocator * Specialize rebind<> so it yields the same allocator for only the shared ptr value type * This "fixes" two static assertions that were added in libstdc++13, see: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=72792#c12 ASE: cxxaux.hh: remove unused FriendAllocator<> ASE: cxxaux.hh: fix missing include ASE: loop.hh: always use ASE_DEFINE_MAKE_SHARED() to implement make_shared() ASE: formatter.hh: include cstdint for int32_t ASE: clapplugin.cc: add missing braces for clap_event_transport_t initializer UI: wrapper.js: add missing Util import Makefile.mk: add simple rule to generate +compile_commands.json Merge branch 'transportinfo', closes #5 # 2023-05-12 Tim Janik 3819f90 * transportinfo: ASE: clapplugin: provide transport information for the plugin MISC: config-uname.mk: link -shared: allow undefined symbols with sanitizers Merge branch 'build-time-postcss' # 2023-03-15 Tim Janik 54353a7 * build-time-postcss: UI: split styles into dark, grid, domstyles, mixins, shadow, globals SCSS files globals.scss: styles for the LightDOM only shadow.scss: styles only for ShadowDOM components domstyles.scss: common styles for the LightDOM and ShadowDOM grid.scss: provide helpers mixins.scss: base to customize components dark.scss: basic theme, allow switching via import $themename_scss; cursors/cursors.css: provide CSS variables for custom cursors UI: cursors/cursors.css: fix quotes UI: cursors/cursors.css: introduce --svg-cursor-* variables at :root{} scope This is needed to make cursors.css actualy valid CSS. UI: index.html: remove postfix and css validator, load vue-styles.css, fix preloads UI: b/clipview.js: use zcam directly UI: b/*.js: embed and load CSS via JsExtract UI: b/positionview.vue: use $b-lcdscreen-fg, $b-lcdscreen-bg UI: b/: fix $b-button-radius $b-button-radius $b-track-meter-gap $b-track-meter-thickness UI: b/pianoroll.js: import grid.scss UI: b/positionview.vue: use t-lcdscreen-fg, t-lcdscreen-bg UI: b/trackview.js: add --track-meter-thickness, --track-meter-gap UI: b/*.vue: use --button-radius UI: b/*.js: use --button-radius UI: b/*.js: use var(--button-radius); UI: b/*.vue: use var(--button-radius); UI: b/deviceeditor.vue, b/pro-group.vue: use --device-radius UI: b/shell.vue: remove unused styles UI: b/pianoroll.js: remove useless color assignment UI: b/textinput.js: include mixins.scss to use SCSS variable UI: b/menuseparator.js: include mixins.scss to use SCSS variable UI: b/*.js: extend componenets from LitComponent instead of LitElement UI: b/dialog.vue: inline box-shadow styling UI: b/pianoroll.js: import grid helpers from grid.css UI: b/menubar.vue: specify 'justify-content: space-between' directly UI: b/pianoroll.js: rely on global cursors.css import UI: startup.js: remove unused postcss import UI: jsextract.js: document jsextract.js usage UI: jsextract.js: extract JsExtract.scss`` marker snippets into *.jscss files UI: little.js: document JsExtract usage UI: little.js: fix .css URL construction to always have an extension UI: little.js: load into shadow roots UI: little.js: add ./shadow.css to LitComponent UI: little.js: remove postcss UI: little.js: export JsExtract with scss`` and fetch_css() UI: little.js: add default define $themename_scss:dark.scss; Also, disable csstree-validator which yields outdated warnings. UI: little.js: load shadow.scss into all LitComponent elements UI: little.js: LitComponent: always adopt shadow.css in createRenderRoot() UI: little.js: CSS import: remove premature fetch + caching, always import all UI: little.js: remove cursors/cursors.css from memorized imports MISC: package.json.in: add stylelint MISC: package.json.in: remove perfectionist-dfd UI: sfc-compile.js: extract *.vuecss files UI: Makefile.mk: remove csstree-validator and postcss browserify bundling UI: Makefile.mk: run stylelint from output dir UI: stylelintrc.cjs: add stylelint config UI: Makefile.mk: extract, process and run stylelint on *.jscss files UI: Makefile.mk: process *.vuecss files UI: Makefile.mk: run stylelint on processed styles UI: Makefile.mk: generate vue-styles.css UI: Makefile.mk: remove Vue css rules UI: Makefile.mk: take quoted cursor urls into account UI: Makefile.mk: move theming into ui/dark.scss, build .css from .scss UI: Makefile.mk: use postcss.js with --map and -i UI: Makefile.mk: fix install pattern for ui/b/ UI: postcss.js: support stdout output UI: postcss.js: fix exit code by re-throwing errors UI: postcss.js: add -Dvar=value for predefined variables UI: postcss.js: add -C to find imports UI: postcss.js: directly print PostCSS exceptions to provide useful stacktraces UI: postcss.js: support fetching imports from network UI: postcss.js: remove perfectionist-dfd, auto-import *.scss unless -i is given UI: postcss.js: add zlerp() CSS function UI: postcss.js: add zmod4() CSS function UI: postcss.js: make source map configurable UI: colors.js: add zlerp() for color interpolation UI: colors.js: fix missing ZCAM attributes UI: colors.js: add zmod4() to debug ZCAM attributes for colors UI: colors.js: support missing first zmod() color argument DOC: jsdoc2md.js: fix @file docu being ignored in some cases DOC: jsdoc2md.js: add anchor to constants ASE: websocket.cc: allow caching of duplicate requests within 1 second Merge branch 'reactive-render' # 2023-03-08 Tim Janik 6f6d3be * reactive-render: UI: startup.js: rerender all LitElements and known Vue components on resize UI: little.js: export LitComponent, which has reactive render() and updated() UI: little.js: add lit_update_all() UI: wrapper.js: improve error message for missing getters UI: wrapper.js: support reactive_wrapper() callbacks for wrap_ase_object() fields UI: wrapper.js: implement define_reactive() and reactive_wrapper() Merge branch 'jsdoc-search' # 2023-03-05 Tim Janik dc2f640 * jsdoc-search: DOC: poxy.sh: ignore case during search UI: util.js: add PointerDrag comment DOC: poxy.sh: extend searchdata-v2.js with token list from JS docs DOC: poxy.sh: avoid fake 'Export' prefix for JS symbols DOC: jsdoc2md.js: use for anchors, add data-4search to anchors The old empty span anchors could be removed by some HTML processors. DOC: poxy.sh: jsdoc2md will now directly generate markdown from JS Merge branch 'api-docs' # 2023-03-03 Tim Janik 63bd26e * api-docs: GITHUB: workflows/testing.yml: rename CI jobs GITHUB: workflows/testing.yml: add step to build and upload API docs MISC: Dockerfile.arch: provide doxygen openssh and poxy via pip MISC: Dockerfile.arch: first update archlinux-keyring This works around an outdated keyring in the archlinux:latest docker image. MISC: dbuild.sh: add support for the docker -p option DOC: poxy.sh: setup AUTHOR/COMITTER EMAIL/NAME, GIT_SSH_COMMAND for uploads DOC: poxy.sh: provide NODE_PATH DOC: poxy.sh: add program doc/ dir to documentation output DOC: poxy.sh: add README as main index page DOC: poxy.sh: add project version to docs DOC: poxy.sh: upload to the `publish` branch DOC: poxy.sh: support conditional builds DOC: poxy.sh: move build commands into poxy_build function DOC: poxy.sh: add -u for upload DOC: poxy.sh: support accesskey="f" for Search DOC: poxy.sh: support -s to serve html/ contents DOC: poxy.sh: add NEWS.md DOC: poxy.sh: add ch-scripting.md to UI docs DOC: poxy.sh: generate API reference documentation with Poxy UI: Makefile.mk: remove rules to build JS docs DOC: Makefile.mk: build scripting docs from ui/host.js and ch-scripting.md DOC: copyright.ini: fix doc/jsdocrc.json path DOC: ch-scripting.md: move here from ui/ DOC: jsdoc2md.js: generate markdown from *.js via jsdoc-api DOC: jsdocrc.json: configure JsDoc to use doc/jsdoc-slashes.js DOC: jsdoc-slashes.js: move here from ui/slashcomment.js DOC: jsdoc2md.js: guard aganst doclets with non-string name I.e. doclet.meta.code.name can be an Integer. MISC: package.json.in: add jsdoc-api UI: b/shell.vue: add basic docs ASE: testing.hh: document Test namespace ASE: api.hh: add docu comment to Ase namespace README.md: fix github workflow badge URL Merge branch 'lit-tracklist' # 2023-01-10 Tim Janik 3e64716 * lit-tracklist: UI: b/tracklist.js: hide HEADER and FOOTER UI: b/tracklist.js: add scrollshadow at the top UI: theme.scss: remove fragile parts of scrollbar styling UI: b/tracklist.js: fix layout for few tracks UI: b/tracklist.js: support x/y scrolling UI: b/cliplist.js: clipview children must not shrink UI: b/tracklist.js: port to LitElement UI: b/trackview.js: increase width of level meters UI: b/clipview.js: use track.$id for colorization UI: b/cliplist.js: fix setting of b-clipview.track property UI: b/app.js: provide App.project ASE: object.cc: skip notifications for objects without shared_ptr ASE: api.hh: rename and notify Project.all_tracks() (former list_tracks) Merge branch 'lit-trackview' # 2023-01-08 Tim Janik 529af30 * lit-trackview: UI: b/trackview.js: render sound level meter from telemetry UI: b/cliplist.js: minor formatting ASE: track.cc: add dbspl0 and dbspl1 to telemetry ASE: combo: add sound level probing in dB to AudioChain ASE: datautils: add square_max() ASE: midilib.cc: reserve space to avoid malloc ASE: datautils: add square_sum() for FPU floats ASE: cxxaux.hh: add ASE_ALIGNED16() and ALIGNMENT16() UI: b/app.js: maintain App.current_track, notify accordingly ASE: track: support midi_channel changes UI: b/*.js: fix ${ref} syntax UI: b/trackview.js: port to LitElement Merge branch 'lit-editable' # 2023-01-08 Tim Janik b1b949d * lit-editable: UI: b/trackview.vue: adjust b-editable use UI: b/positionview.vue: adjust property editing ASE: project.cc: add missing notifications UI: b/editable.js: port to LitElement Merge branch 'lit-cliplist' # 2023-01-07 Tim Janik 2724283 * lit-cliplist: UI: b/partlist.vue: disable old code DOC: Makefile.mk: add docs from b/cliplist.md ASE: api.hh: rename Track.launcher_clips() and ass 'notify:launcher_clips' UI: b/statusbar.vue: use Util.find_element_from_point() UI: b/shell.vue: determine F1 anchor from find_element_from_point() UI: util.js: add find_element_from_point(), supporting shadow DOMs UI: b/clipview.js: fix properties UI: b/cliplist.js: support F1 help for ClipList UI: b/cliplist.js: port to LitElement UI: b/app.js: add App.zmove_last() UI: b/pianoroll.js: minor rename Merge branch 'lit-clipview' # 2023-01-07 Tim Janik ee3d1f0 * lit-clipview: ASE: api.hh: add Clip.all_notes read-only property Enable property caching UI code for fetching notes and updates. UI: b/pianoroll.js: use Util.wrap_ase_object() to fetch Clip notes UI: b/piano-ctrl.js: use Util.wrap_ase_object() to fetch Clip notes UI: b/clipview.js: use wrap_ase_object() to access Clip properties UI: util.js: export the wrapper.js API UI: wrapper.js: add AseObject wrapper to cache properties UI: startup.js: add class name to GC debug messages UI: b/shell.vue: provide Shell.piano_roll UI: Makefile.mk: use Vue production build unless MODE=debug This avoids massive memory leaks of Vue components. UI: Makefile.mk: fix missing dependency MISC: package.json.in: upgrade to vue-3.2.45 and lit-2.5.0 UI: Makefile.mk: use 'npm --prefer-offline' only when rebuilding MISC: config-checks.mk: do not force '--prefer-offline' on npm MISC: config-uname.mk: define __UIDEBUG__=1 for MODE=debug UI: b/pianoroll.js: remove old debug() UI: b/contextmenu.js: remove useless performance hog UI: b/tracklist.vue: add new track on dblclick on track list only UI: b/pianoroll.js: fix stale play cursor on clip change UI: b/clipview.js: port BClipView to LitElement UI: b/: use Track.list_launcher_clips() ASE: api.hh. track: rename Track.list_launcher_clips() Merge branch 'fix-embed-fd-hangs' # 2022-12-28 Tim Janik ea7b53b * fix-embed-fd-hangs: ASE: clapplugin.cc: map PollFD::NVAL to CLAP_POSIX_FD_ERROR ASE: loop.*: support POLLWRBAND, always pass on POLLNVAL, POLLERR and POLLHUP Merge branch 'build-fixes' # 2022-12-28 Tim Janik 215830f * build-fixes: UI: Makefile.mk: add missing dependency from ui/colors.js on ui/zcam-js.mjs This fixes postcss errors due to missing zcam-js.mjs. X11TEST: play-notes.json: adjust simlpe UI test to UI path changes UI: cursors/cursors.css: add MPL-2 copyright Merge branch 'documentation-sections' # 2022-12-22 Tim Janik 11d3cc2 * documentation-sections: DOC: Makefile.mk: link to and search for ui/cursors/ UI: b/pianoroll.js: add data-f1="#piano-roll" to link F1 to piano roll manual UI: b/shell.vue: popup manual on 'F1', support anchors via data-f1="#anchor" UI: kbd.js: allow event.keyCode filtering DOC: Makefile.mk: include docs from pianoroll and piano-ctrl DOC: ch-editing.md: add brief editing introduction UI: Makefile.mk: extract Markdown sections from JS files into doc/b/*.md UI: xbcomments.js: extract Markdown sections from JavaScript comment blocks Merge branch 'piano-roll-and-shell-grid-layout' # 2022-12-22 Tim Janik 5772625 * piano-roll-and-shell-grid-layout: UI: b/pianoroll.js: document piano-roll use and fix hover handling UI: b/piano-ctrl.js: add convenient tool registration helpers UI: eslintrc.js: allow empty blocks UI: util.js: allow PointerDrag cleanup handler UI: b/pianoroll.js: fix scroll and select notes_canvas tool on hover UI: b/piano-ctrl.js: implement note resize tool UI: b/piano-ctrl.js: implement select, paint, erase as dedicated tools UI: b/pianoroll.js: context menu cleanup UI: b/clipview.vue: let the canvas fill parentElement UI: styles.scss, startup.js: turn HFlex & VFlex into LitElement UI: b/pianoroll.js: use one source for DPR calculations UI: b/pianoroll.js: properly align toolmenu button UI: b/pianoroll.js: fix background color UI: b/pianoroll.js: add pianorollmenu items UI: b/treeselector-item.vue: fix 'event' reference UI: b/knob.js: fix 'event' reference UI: b/editable.vue: fix 'event' reference UI: eslintrc.js: warn if a global 'event' is referenced UI: b/piano-ctrl.js: fix merging of selection changes with note modifications UI: b/pianoroll.js: handle menu hotkeys UI: b/contextmenu.js: fix unmapping in map_kbd_hotkeys() UI: kbd.js: handle document.activeElement == null UI: b/piano-ctrl.js: stop event if a key was handled UI: b/pianoroll.js: grab focus UI: b/piano-ctrl.js: adjust piano_roll access patterns UI: b/pianoroll.js: provide .srect property, repaint upon changes UI: b/pianoroll.js: handle tool menu and hook up piano-ctrl UI: theme.scss: move scrollbar styling here to work inside shadow DOMs UI: startup.js: turn CGrid into a LitElement to work inside shadow DOMs UI: b/pianoroll.js: work around FireFox exception when ctx.font is assigned UI: b/shell.vue: allow notification callbacks on get_note_cache() UI: b/statusbar.vue: use elementsFromPoint() to find Tips inside shadowRoots UI: b/contextmenu.js: support @activate="handler" notifications UI: b/menubar.vue: move comment to work around Vue's template child handling UI: b/knob.js: ignore hscrolls to allow horizontal device panel scrolling UI: b/devicepanel.vue: adjust to b-shell grid layout UI: b/pianoroll.js: fix scrollbar style UI: b/pianoroll.js: add indicator to show the current tick UI: b/shell.vue: use for the basic layout UI: b/pianoroll.js: implement as LitElement UI: b/pianoroll.js: add skeleton UI: b/piano-roll.vue: remove Vue based piano-roll Merge branch 'cursors' # 2022-12-22 Tim Janik 32b1518 * cursors: IMAGES: anklangicons.sh: fixes for svgo 2.8.0 and Inkscape >= 1.0 IMAGES: anklangicons.sh: remove unused cursor commands RAND: hotspots.sh: add simple script to debug hotspot coords in cursors UI: b/piano-roll.vue: remove AnklangCursors.scss references UI: Makefile.mk: remove AnklangCursors.scss copy UI: Makefile.mk: copy cursors/cursors.css and all cursor SVGs UI: little.js: allow runtime postcss imports from cursors/cursors.css UI: cursors/cursors.css: add CSS vars for: cross eraser hresize knife move pen UI: cursors/knife.svg: add 28x28 pixel "knife" cursor UI: cursors/hresize.svg: add 28x28 pixel "horizontal resize" cursor UI: cursors/cross.svg: add 28x28 pixel "cross" cursor UI: cursors/move.svg: add 28x28 pixel "move" cursor UI: cursors/eraser.svg: make cursor 28x28 pixels UI: cursors/pen.svg: make cursor 28x28 pixels UI: cursors/: move eraser.svg and pen.svg here Merge branch 'swesterfeld-blepsynth-adsr-time-fix' # 2022-11-17 Tim Janik 54726cd * swesterfeld-blepsynth-adsr-time-fix: DEVICES: blepsynth: use non-linear mapping for ADSR times ASE: sortnet.hh: update URLs in comments Merge branch 'sprite-knob' # 2022-11-16 Tim Janik 439c3b8 * sprite-knob: MISC: Dockerfile.focal: install librsvg2-bin for rsvg-convert UI: remove unused eknob.svg embedding UI: b/knob.vue: remove Vue based knob implementation UI: b/pro-input.vue: remove unused knob handling UI: b/pro-group.vue: use b-knob for scalar Property editing UI: b/knob.js: rewrite b-knob as LitElement with sprites UI: b/deviceeditor.vue: use Util.extend_property() to cache Property fields UI: Makefile.mk: provide control knob sprite assets Makefile.mk: include images/knobs/Makefile.mk IMAGES: knobs/cknob.svg: add MPL-2.0 license IMAGES: knobs/Makefile.mk: build bi- and unidirectional control knob sprites IMAGES: knobs/mksprite.py: rotate svg knob and add level indicator IMAGES: knobs/cknob.svg: add rotatable control knob UI: util.js: wheel_delta: adjust factors for modern Firefox and Chrome versions UI: startup.js: set CONFIG.dpr_movement for Chrome<=100 and Gecko As of Firefox-106, dpr_movement is needed and for Chrome-107 it is not. UI: util.js: use internal Symbol for request_pointer_lock() state handling UI: util.js: fix value updates of extended properties Catch the right event and normalize the value in JS. UI: util.js: add methods to handle destroy callbacks on objects UI: b/shell.vue: comment fixup UI: b/databubble.vue: hook into App.zmove for all event handling Also, fix stuck bubbles when rehovering the same element. UI: b/app.js: generate zmove events for pointerdown, pointermove, pointerup UI: b/app.js: make sure "mousemove" triggers ZMove updates ASE: processor.cc: keep constant number of characters for % values ASE: processor: send property notifies early, account for inflight values ASE: api.hh: add missing const ASE: crawler: use emit_notify() and avoid emit during ctor ASE: *.cc: use emit_notify() where possible Merge branch 'zoom-ui' # 2022-11-16 Tim Janik 8e65adf * zoom-ui: UI: b/menubar.vue: support Zoom In/Out/Reset for Electron ELECTRON: main.js: export zoom_level() to allow UI zoom adjustments UI: kbd.js: match_key_event: split 'Ctrl++' only once DOC: ch-development.md, ch-intro.md: fix testbit.eu URL ASE: randomhash: fix testbit.eu URL ASE: track.cc: fix MASTER_TRACK flag Merge branch 'swesterfeld-vcf-cutoff-fix' # 2022-11-03 Tim Janik 203c246 * swesterfeld-vcf-cutoff-fix: DEVICES: blepsynth: fix cutoff frequency modulation for filter Fix frequency scaling problems: the freq_in array now passes its frequency to the filter as plain Hz. Merge branch 'time-autostop' # 2022-11-03 Tim Janik 6d531e6 * time-autostop: GITHUB: workflows/testing.yml: add repository and gh-user to IRC notifications GITHUB: workflows/ircbot.py: support -R for initiating repository name GITHUB: workflows/testing.yml: skip IRC bot name GITHUB: workflows/ircbot.py: set "YYBOT" as bot name ASE: main: add autostop handling and implement -t to trigger autostop ASE: project: start_playback(): pass autostop into engine ASE: engine: add autostop handling and delay capture until transport is running ASE: defs.hh: add D64MAX ASE: strings.cc: add string_to_seconds() ASE: formatter.cc: test atomic which is a struct and needs %s UI: b/treeselector-item.vue: use ContextMenu.valid_uri() to check valid uri UI: b/contextmenu.js: always use valid_uri() for uri in boolean contexts Merge branch 'opus-wav-flac' - capture engine output # 2022-10-28 Tim Janik bb7a442 * opus-wav-flac: UI: b/aboutdialog.vue: display FLAC version ASE: api: export get_flac_version() UI: b/aboutdialog.vue: show Opus version Remove unused Vorbis version. ASE: api.hh: export Opus version Remove unused Vorbis and MP3 version export. MISC: Dockerfile.focal: provide libopus MISC: config-checks.mk: provide ogg-1.3.4 and opus-1.3.1 Remvoe Vorbis requirement, which is unused. ASE: main.cc: exit with atquit_run() upon SIGINT ASE: loop: USignalSource::install_sigaction(): install unix signal handler ASE: utils: provide atquit handlers ASE: loop.hh: minimize latency of signal handlers by running at high priority ASE: main: add -o wavfile to the CLI ASE: engine: support engine output capturing into wave files Squashed commits of engine capturing development: ASE: engine: add queue_capture_start() and queue_capture_stop() ASE: engine.cc: stall engine once program is aborted (atquit_triggered) ASE: engine.cc: capture output via wave_writer_create_opus() ASE: engine.cc: capture output via wave_writer_create_wav() ASE: engine.cc: capture output via wave_writer_create_flac() ASE: wave: add wave file writer for WAV, OPUS, FLAC Squashed commits of wave file development: ASE: wave.hh: add WaveWriter interface ASE: wave: add writer for WAV files with support for PCM and FLOAT ASE: wave: implement Opus writer and export Opus version ASE: wave.cc: write extension header for FLOAT format For example SoX(1) complains about float WAV files 'missing extended part of fmt chunk' ASE: wave: add FLAC writer and export FLAC version ASE: wave: install atquit handlers to flush/finalize wave files ASE: main: load projects without '--preload' and support --play-autostart ASE: main.cc: auto-load projects passed on the CLI Merge branch 'loft' # 2022-10-26 Tim Janik 84ff17e * loft: ASE: main.cc: configure Loft and concurrently preallocate pages on demand ASE: tests/benchmarks.cc: benchmark loft_calloc() ASE: loft: add Loft - a lock- and obstruction-free thread memory allocator Squashed commits of Loft development: ASE: loft: implement mmap() based bump allocator ASE: loft: implement MpmcStack based bucket allocator ASE: loft: add loft_alloc() ASE: loft: add loft_make_unique() and LoftFree::operator()() ASE: loft: add loft_calloc() ASE: loft: add multithreaded allocator stress test ASE: loft: use FastRng for testing ASE: loft: add loft_bucket_size() ASE: loft: add loft_get_stats(), loft_stats_string() ASE: loft: add loft_get_config(), loft_set_config(), config flags ASE: loft: add loft_grow_preallocate(), loft_set_notifier() ASE: loft: issue a warning if allocations via syscall happen inline ASE: atomics.hh: add MpmcStack.peek ASE: atomics.cc: fix signedness ASE: atomics.cc: add test for MpmcStack<> ASE: atomics.hh: add MpmcStack<>, a lock-free stack for non-reclaimable memory Merge branch 'mwc256-prng' # 2022-10-26 Tim Janik 153071d * mwc256-prng: ASE: randomhash.cc: add FastRng jump ahead tests ASE: main.cc: add --rand64 to generate 64bit FastRng numbers on stdout This can be used to test the PRNG quality with for example PractRand: AnklangSynthEngine --rand64 | RNG_test stdin64 -multithreaded ASE: randomhash: add FastRng, a multiply-with-carry PRNG with period 2^255 ASE: tests/benchmarks.cc: use 3k as max chunk size to avoid memset benchmarking ASE: sortnet.cc: speed up test by reducing the checked 10-element permutations Merge branch 'update-sanitizers' # 2022-10-26 Tim Janik a252fc9 * update-sanitizers: JSONIPC: jsonipc.hh: fix atexit memory leak ASE: formatter.hh: properly handle nullptr_t for %p ASE: nativedevice.cc: fix signedness ASE: serialize.cc: fix unit test memory leak UI: Makefile.mk: ignore asan when running AnklangSynthEngine DOC: Makefile.mk: ignore asan when running AnklangSynthEngine MISC: config-uname.mk: update sanitizer linkage GITHUB: workflows/testing.yml: upgrade actions/checkout and actions/cache to v3 MISC: Dockerfile.focal: comment fixups GITHUB: workflows/testing.yml: allow TeX installation during CI builds Merge branch 'pdf-artifacts' # 2022-10-25 Tim Janik e0272bd * pdf-artifacts: GITHUB: workflows/testing.yml: build PDF and upload 'docs' build artifact MISC: mkassets.sh: use 'pdf' shorthand in build rule DOC: Makefile.mk: require explicit 'pdf' rule to build PDF manuals via TeX By default, only the HTML manuals are built and installed (without TeX dependency). The PDF variants can be built explicitely with `make pdf`. The PDF manuals are installed if they are present at install time. GITHUB: workflows/testing.yml: enable CI for 'next' and PRs Merge branch 'litelement-menu' # 2022-10-21 Tim Janik 8032e64 * litelement-menu: X11TEST: play-notes.json: update UI test UI: b/*: assign aria-label where appropriate UI: b/*.vue: add html id to context menus UI: b/menuitem.js: always strip slot_label UI: util.js: remove unused dropdown() UI: b/color-picker.vue: fix menu and support click-drag selection UI: b/contextmenu.js: expose dialog via part=dialog to CSS rules UI: b/trackview.vue: popup context menu at cursor UI: b/piano-roll.vue: fix popup position UI: b/piano-ctrl.js: avoid stealing unhandled key presses UI: b/dialog.vue: close on regular Escape presses, avoid stealing Escape UI: b/contextmenu.js: stop handled dialog Escape key from bubbling further UI: util.js: allow shields without Escape key stealing UI: b/choice.vue: fix menu and key handling to work like all menus UI: b/contextmenu.js: provide .open read-only property UI: b/menuitem.js: remove unused code UI: b/contextmenu.js: fix data-contextmenu styling UI: b/fed-picklist.vue: remove unused component UI: b/devicepanel.vue: fix menu origin and insertion pos ASE: nativedevice.cc: fix device insertion order UI: b/contextmenu.js: close menu on backdrop clicks UI: util.js: dialog_backdrop_mousedown(): close dialogs on backdrop clicks UI: b/menubar.vue: use b-contextmenu .activate and .isactive UI: b/piano-roll.vue: use b-contextmenu .activate and .isactive UI: b/deviceeditor.vue: use b-contextmenu .activate and .isactive UI: b/treeselector-item.vue: use frame stamp to ignore duplicate clicks UI: b/menubar.vue: use frame stamp to ignore duplicate clicks UI: b/contextmenu.js: make FF auto-focus an element on showModal(), like Chrome UI: b/contextmenu.js: use frame stamp to ignore duplicate clicks and popup()s Note that keyboard presses, mouse clicks, drag selections and event bubbling can all cause menu item clicks and contextmenu activation. In order to deduplicate multiple events that arise from the same user interaction, *one* popup request and *one* click activation is processed per animation frame. UI: util.js: add frame_stamp(), retrieve a timestamp unique per animation frame UI: kbd.js: move_focus(): fallback to move focus inside body UI: kbd.js: list_focusables(): take [open]:modal in shadow DOMs into account UI: kbd.js: list_focusables(): take [open]:modal dialogs into account UI: b/treeselector-item.vue: fix single-click menu activation and styling UI: b/trackview.vue: fix menu activation UI: b/piano-roll.vue: fix menu activation, allow click-drag menu selection UI: b/devicepanel.vue: fix menu activation UI: b/menubar.vue: allow click-drag menu selection UI: b/menuitem.js: use .activate and .isactive callbacks for item activation UI: b/contextmenu.js: use .activate and .isactive callbacks for menu activation ASE: project.cc: fix some missing notify::dirty emissions UI: b/menubar.vue: adapt context menu clicks, popup menus early (mousedown) UI: b/menuitem.js: adjust for b-contextmenu as LitElement UI: kbd.js: fix keydown_move_focus() for shadow DOMs UI: util.js: add prevent_event() UI: b/contextmenu.js: port b-contextmenu to LitElement UI: b/menuitem.js: use 'b-menurow' CSS selector UI: b/menurow.js: port b-menurow to LitElement UI: b/menuitem.js: pass b-menurow turn / noturn attributes to button UI: util.js: add closest() for shadow DOMs UI: b/trackview.vue: always use the b-icon ic="" attribute UI: b/menuitem.js: export KeymapEntry as this.keymap_entry UI: b/contextmenu.vue: collect and register KeymapEntry props from descendants UI: kbd.js: support add+remove of global keymaps UI: b/menuitem.js: port b-menuitem to LitElement UI: util.js: add lrstrip() and collect_text_content() UI: kbd.js: make activeElement and list_focusables shadow DOM aware This allows transparent handling of custom focus navigation and hotkey activation in shadow DOMs. UI: util.js: extend has_ancestor() to support open shadow DOMs UI: b/contextmenu.vue: support click, keymap, b-contextmenu-menudata on Element UI: b/icon.js: port b-icon from vue to LitElement UI: util.js: add adopt_style() and add_style_sheet() UI: b/*.vue: always use the b-icon ic="" attribute GITHUB: workflows/testing.yml: update github actions Merge branch 'package-updates' # 2022-10-12 Tim Janik 84e7c32 * package-updates: ASE: clip.cc: fix macro clash MISC: package.json.in: update various npm packages Makefile.mk: clean x11test/ output dir Merge branch 'activate+deactivate' # 2022-10-12 Tim Janik 4e5ac8b * activate+deactivate: ASE: object.cc: properly check Connection ptr before use ASE: track.cc: remove over eager assertion ASE: project.cc: start_playback(): switch current engine project on demand Makefile.mk: allow make default to configure INSN ASE: project: move activate/deactive to Project ASE: engine.cc: fix loss of "change:prefs" notification connection ASE: engine: add API to set up exclusive Engine + Project relation ASE: track: require Project as parent of track ASE: gadget: add flags field to be used for gadgets and derived types ASE: clapplugin: rename clap_deactivate() and variants ASE: api.hh: use GadgetImpl as parent pointer ASE: api.hh: derive Track from Device ASE: api.hh: derive Project from Device ASE: device: rename and move Device::extract_info() here ASE: clapdevice.cc: fix call to inherited methods ASE: nativedevice: provide remove_all_devices(), implement activation ASE: api.hh: Device: provide _activate() _deactivate() is_active() ASE: nativedevice.cc: clarify TODO ASE: split DeviceImpl into Device and NativeDevice ASE: engine: turn the engine into a global singleton ASE: engine: simnply wrap AudioEngineImpl calls into AudioEngine methods ASE: engine: rename AudioEngineImpl ASE: main: export main_loop_wakeup() Merge branch 'ci-job-split' # 2022-10-11 Tim Janik bd540be * ci-job-split: GITHUB: workflows/testing.yml: split jobs for Ubuntu, Arch, IRC DOC: copyright.ini: assume MPL-2 for x11test/*.json Merge branch 'x11test' # 2022-10-10 Tim Janik 662fd7a * x11test: X11TEST: play1note.json: add recording to play a single MIDI note GITHUB: workflows/testing.yml: run x11test-v on Ubuntu build and upload result Makefile.mk: docuemnt x11test and x11test-v Makefile.mk: add x11test, x11test-v to run (headless) end-to-end tests X11TEST: replay.sh: play Anklang DevTools recording in Electron via Puppetteer X11TEST: ereplay.cjs: use Electron and Puppetteer to replay DevTools recording X11TEST: x11rec.sh: run and record a command in a virtual or nested X11 session MISC: package.json.in: add puppeteer packages MISC: Dockerfile.focal: provide xvfb 9wm ffmpeg Merge branch 'print-class-tree' # 2022-09-28 Tim Janik 8bde98a * print-class-tree: DOC: Makefile.mk: anklang-internals: add "Ase Class Inheritance Tree" ASE: main: add --class-tree to print the class tree JSONIPC: jsonipc.hh: add ClassWalker ASE: internal.hh: add assert_unreached() ASE: engine: minor fixes Merge branch 'fix-vue-3.2.28' # 2022-09-28 Tim Janik 6628472 * fix-vue-3.2.28: UI: b/shell.vue: work around vue-3.2.38 breaking $forceUpdate() before mount() Avoid the Shell calling $forceUpdate() from created(). That used to work up until Vue-3.2.27, but with .28 and .29 results in: vue.js:1843 Uncaught (in promise) TypeError: Cannot read properties of null (reading 'id') at queueJob (vue.js:1843:17) at i.f.i.f (vue.js:4591:44) Aparently $forceUpdate() calls are now broken before mount(). UI: Makefile.mk: fix wildcard for lit.js to not catch little.js Merge branch 'fix-gc' - plugs a GC race condition # 2022-09-27 Tim Janik 6caa570 * fix-gc: JSONIPC: jsonipc.hh: InstanceMap: remove unused swap and move_into ASE: jsonapi.cc: fix GC bookkeeping with mark_unused() and purge_unused() JSONIPC: jsonipc.hh: InstanceMap: add mark_unused() and purge_unused() JSONIPC: jsonipc.hh: add CallbackInfo::classname() to improve error messages Merge branch 'prefault-pages' # 2022-09-27 Tim Janik 9cf276d * prefault-pages: ASE: main.cc: prefault heap and stack pages ASE: main.cc: tune malloc via mallopt to reduce page fault probability Merge branch 'build-improvements' # 2022-09-27 Tim Janik 931a674 * build-improvements: MISC: config-uname.mk: enable link time optimization via -flto for MODE=production MISC: Makefile.mk: clean mkdeb/ if left over MISC: Dockerfile.focal: install libgtk-3-dev which also provides libdbus-1-dev Merge branch 'low-latency-sched' # 2022-09-14 Tim Janik 5184d18 * low-latency-sched: ASE: engine.cc: request low latency scheduling for the synthesis engine ASE: platform: add sched_{set|get|fast}_priority() ASE: dbus: add DBus methods rtkit_make_high_priority + rtkit_get_min_nice_level MISC: mkdeb.sh: postinst: add cap_sys_nice to AnklangSynthEngine MISC: config-checks.mk: add dbus-1 to ase dependencies ASE: utils.cc: allow mixed case debug keys ASE: Makefile.mk: use ASEDEPS_CFLAGS and ASEDEPS_LIBS MISC: config-checks.mk: provide just ASEDEPS_CFLAGS and ASEDEPS_LIBS for ase/ Merge branch 'remote-gc' # 2022-09-14 Tim Janik f59890b * remote-gc: UI: startup.js: renew_gc() on object finalization, report_gc() when requested ASE: jsonapi.cc: support renew_gc() and report_gc() to start new GC cycle The basic idea behind remote GB by the UI requesting renew_gc() and the Jsonapi server swapping wrapper tables in response is described here: https://testbit.eu/2014/rapicorn-remote-reference-counting ASE: jsonapi.cc: test conscise erase() loop over std::map<> Checks the erase() loop used by Jsonipc over std::map<>, in particular ++end must be avoided for empty maps. JSONIPC: jsonipc.hh: support clear/swap/size/move_into for instance ptr map MISC: config-uname.mk: use -Og for debugging which improves debug info Using -Og is a better choice than -O0, because some compiler passes that collect debug information are disabled at -O0. (gcc docs) UI: startup.js: properly namespace Jsonapi/Trigger ASE: jsonapi.cc: properly namespace Jsonapi/Trigger DOC: ch-development.md: properly namespace Jsonapi/Trigger DOC: ch-development.md: minor update UI: startup.js: request Ase.Server via Jsonapi/initialize after handshake ASE: jsonapi.cc: provide Ase.Server object as Jsonapi/initialize reply JSONIPC: jsonipc.hh: reply to Jsonipc/handshake with protocol version 1 JSONIPC: jsonipc.js: require Jsonipc/handshake with protocol version 1 UI: startup.js: maintain $id GC list via Jsonipc.finalization_registration JSONIPC: jsonipc.js: call Jsonipc.finalization_registration hook from ctors UI: GNUmakefile: allow subdir builds Merge branch 'automatic-backup' # 2022-08-24 Tim Janik 72174fb * automatic-backup: ASE: project.cc: automatically backup existing project files ASE: path: add glob() ASE: path: add rename() ASE: utils: add now_strftime() Merge branch 'clap-file-reference' # 2022-08-24 Tim Janik 031c81f * clap-file-reference: ASE: clapplugin: clean up load_state() and save_state() ASE: *.cc: use operator<< where needed for serialization ASE: serialize.hh: add operator>> and operator<< to support pure const serialization ASE: serialize.hh: operator&: catch serialization into const at compile time ASE: project.cc: merge asset_hashes ASE: project.cc: use Error::NO_PROJECT_DIR if anklang.project is missing ASE: api.hh: add Error::NO_PROJECT_DIR ASE: clapplugin: implement file collection ASE: clapplugin.cc: save_state: request plugin_file_reference->save_resources() ASE: clapplugin.cc: add CLAP_EXT_FILE_REFERENCE skeleton ASE: serialize.cc: use TelemetryField for simple serialization tests ASE: serialize: support external serialize(T&,WritNode&) impls via ADL ASE: serialize.cc: test tuple serialization ASE: project.cc: loader_resolve: lookup and resolve files from project dir ASE: project.cc: serialize file hashes as tuple array ASE: serialize.hh: serialize tuple<...> types UI: b/menubar.vue: use project.saved_filename() as "Save" location ASE: api.hh: add Project.saved_filename() ASE: Makefile.mk: upgrade to clap-1.1.1.tar.gz UI: b/app.js: use save_project() ASE: api.hh: rename Project.save_project() ASE: project.cc: canonicalize project file name when saving ASE: project: properly implement writer_collect() ASE: project: add API to collect external files ASE: strings: add strings_version_sort() ASE: path: add dircontains() to check dir hierarchy and compute relative path ASE: path: add copy_file(), use FICLONE ioctl to create CoW clone if possible Currently, FICLONE is supported under Linux for XFS and BTRFS. Use `filefrag -v` to detext or debug shared file extents. ASE: path: add file_size(), gracefully handle errors ASE: clapplugin: derive ClapPluginHandle from GadgetImpl ASE: api.hh: print user notes and allow `rest` argument ASE: api.hh: introduce Gadget._project() ASE: strings: add string_to_hex() ASE: main.cc: add --blake3 to test Blake3 hashing ASE: compress: add blake3_hash_file() and blake3_hash_string() ASE: storage: add stream_reader_from_file() ASE: Makefile.mk: compile BLAKE3 with SSE and AVX variants ASE: Makefile.mk: provide blake3.h from BLAKE3-1.3.1.tar.gz ASE: Makefile.mk: use SOURCE2_O MISC: config-uname.mk: add $(call SOURCE2_O) to create object extensions ASE: clapplugin.cc: fix warnings MISC: config-checks.mk: show sha256sum command used failing downloads Merge branch 'sse+fma-synth-engine' - build releases with SSE + FMA support # 2022-08-12 Tim Janik 5f77129 * sse+fma-synth-engine: ASE: Makefile.mk: build FMA variant iff MODE=production INSN=sse MISC: mkassets.sh: build releases with MODE=production INSN=sse MISC: Makefile.mk: remove INSN build remnants Merge branch 'fix-scripts' # 2022-08-12 Tim Janik a169887 * fix-scripts: MISC: mkassets.sh: handle unbound $V MISC: mkdeb.sh: handle unbound $V MISC: mkAppImage.sh: handle unbound $V MISC: dbuild.sh: handle unbound $V Merge branch 'dockerize-asset-builds' # 2022-08-11 Tim Janik 2fd2f5f * dockerize-asset-builds: MISC: Makefile.mk: adjust release-message MISC: Makefile.mk: export $V for build scripts MISC: Makefile.mk: simplify builds, merge upload-nightly and upload-release Makefile.mk: fix ls-tree.lst generation in tarballs MISC: mkassets.sh: extract release info, make AppImage MISC: mkAppImage.sh: move AppImage build logic here MISC: mkassets.sh: build binary packages from tarball MISC: mkdeb.sh: pass $V to make MISC: dbuild.sh: pass $V into docker env MISC: dbuild.sh: remove unused .dbuild/ handling MISC: Dockerfile.focal: reduce layers MISC: Dockerfile.focal: always become 'builder' user, prepare /ootbuild/ Merge branch 'arch-ci' # 2022-08-11 Tim Janik 76c6214 * arch-ci: .gitignore: add ignores GITHUB: workflows/testing.yml: cleanup after each platform build GITHUB: workflows/testing.yml: build and test on arch, cache arch docker image MISC: Dockerfile.arch: setup archlinux dependencies for building Anklang Use upstream CastXML, the AUR version seems outdated and broken. Merge branch 'docker-caching' # 2022-08-11 Tim Janik 433f9bd * docker-caching: MISC: dbuild.sh: skip TeX during docker image build with -T MISC: Dockerfile.focal: cleanup early to shrink docker image, possibly skip TeX MISC: dbuild.sh: use misc/Dockerfile.focal by default, remove -d, change -f MISC: Dockerfile.focal: rename from Dockerfile-apt, use FROM ubuntu:20.04 ASE: Makefile.mk: add missing dependencies for includes ASE: sortnet.hh: include for std::less Makefile.mk: use `ctags` executable GITHUB: workflows/testing.yml: fix cache-hit detection GITHUB: workflows/testing.yml: skip docker caching on cache miss GITHUB: workflows/testing.yml: invalidate cache if misc/dbuild.sh changes GITHUB: workflows/testing.yml: remove docker image test MISC: get rid of --no-tex and $NO_TEX (now unused) GITHUB: workflows/testing.yml: remove '--no-tex' Avoiding Tex installation was only needed without docker image caching. MISC: dbuild.sh: fix SIGPIPE when searching docker image for INITIALIZE MISC: dbuild.sh: debug wrong INITIALIZE setting MISC: dbuild.sh: use 'ubuntu:20.04' as base instead of 'ubuntu:focal' Both are tags for the same image, but the former is already present on Github's stock system. GITHUB: workflows/testing.yml: fix grep exit status GITHUB: workflows/testing.yml: invalidate cache if misc/Dockerfile-apt changes GITHUB: workflows/testing.yml: stop forcing a docker build step GITHUB: workflows/testing.yml: upgrade to actions/checkout@v2.4.2 GITHUB: workflows/testing.yml: cache docker image via github cache GITHUB: workflows/testing.yml: find version inside docker GITHUB: workflows/testing.yml: always use the same build arg for docker MISC: version.sh: ignore missing tags in Format:%(describe) workaround Merge branch 'dist-tarball' - create distribution tarballs # 2022-08-06 Tim Janik 50d9c06 Adjust versioning and build rules to support proper distribution tarballs that will build without .git/ history. * dist-tarball: MISC: Dockerfile-apt: provide zstd MISC: Makefile.mk: re-enable nightly asset builds Makefile.mk: work around git 2.25.1 not handling Format:%(describe:match) Ubuntu 20.04 still runs git 2.25.1. MISC: version.sh: work around git 2.25.1 not handling Format:%(describe:match) Ubuntu 20.04 still runs git 2.25.1. MISC: Dockerfile-apt: add universal-ctags MISC: dbuild.sh: recognize --help Makefile.mk: use wildcard for toplevel CLEANFILES MISC: Makefile.mk: list Nightly changes MISC: Makefile.mk: fix upload-release MISC: Makefile.mk: use TARBALL version for build-assets MISC: Makefile.mk: minor fixups MISC: Makefile.mk: only check-copyright if .git/ exists MISC: Makefile.mk: remove versioned ChangeLog generation Makefile.mk: ChangeLog: use slightly longer hashes Makefile.mk: fix ChangeLog range Makefile.mk: use ls-tree.lst to generate TAGS MISC: Makefile.mk: use ls-tree.lst DOC: Makefile.mk: use ls-tree.lst Makefile.mk: create and distribute ls-tree.lst MISC: config-utils.mk: provide only $(HAVE_GIT) which is true if .git/ exists Using the old WITHGIT or WITHOUTGIT did not really work. MISC: Makefile.mk: avoid -j, rely on MAKEFLAGS for parallel submakes MISC: Makefile.mk: build-nightly: create and build dist tarball MISC: dbuild.sh: use .dlcache subdir for dockerized ccache MISC: Makefile.mk: build-assets: build from sources in $(TARBALL) MISC: Makefile.mk: record and use artifacts in build-assets MISC: Makefile.mk: add 'build-version' rule MISC: Makefile.mk: call version.sh --make-nightly for nightly builds MISC: Makefile.mk: check nightly versions MISC: Makefile.mk: add 'versioned-manuals' rule DOC: Makefile.mk: use packaged doc/copyright if Git is missing GITHUB: workflows/testing.yml: build with --no-tex and SKIP_LATEX=true Only the PDF manuals need Tex, skipping LaTex installation significantly speeds up the CI builds. MISC: dbuild.sh: add --no-tex (replaces --tex) MISC: Dockerfile-apt: default to building with Tex DOC: Makefile.mk: build PDF manuals, unless SKIP_LATEX=true DOC: Makefile.mk: skip misc/mkcopyright.py if .git is not present MISC: mkdeb.sh: use `misc/version.sh --commit-hash` instead of git MISC: version.sh: add --commit-hash MISC: version.sh: remove extra version printout for --make-nightly MISC: version.sh: add --help and --make-nightly MISC: version.sh: use the same COMMITINFO for archives and .git repos Makefile.mk: dist: allow packaging with NEWS.md worktree changes Makefile.mk: simplify make dist Makefile.mk: add hard dependency on ctags-universal Builds from Git need ctags-universal to reliably generate TAGS for make dist. Makefile.mk: provide $(builddir) and $>/ early on Makefile.mk: check misc/version.sh execution ASE: Makefile.mk: add missing minizip/mz_zip.h dependency DOC: copyright.ini: list freeverb sources under Public Domain dedication DEVICES: freeverb/freeverb.cc: license under MPL-2.0 Merge branch 'freeverb' # 2022-07-31 Tim Janik 554794d * freeverb: DEVICES: freeverb/freeverb.cc: turn into a working AudioProcessor for Ase DEVICES: freeverb/freeverb.cc: make query_info() const, i.e. MT-Safe DEVICES: freeverb/freeverb.cc: move all code completely into Anon namespace DEVICES: freeverb/freeverb.cc: use explicit add_param() IDs and fix arguments DEVICES: freeverb: implement STK and VLC damping Avoid reinforcing feedback loop in the original damping code, by providing VLC and STK damping modes. The latter is likely closest to the original intention so it is now the default. This also reorders some parameters and removes the original freezing mode, that does not really make sense for Processors. DEVICES: freeverb/freeverb.cc: add Freeverb Processor DEVICES: freeverb/revmodel.cpp: fix missing `int i` decls DEVICES: freeverb/Freeverb*: remove unused vst files DEVICES: freeverb/: fix up whitespace and \n without \r everywhere DEVICES: freeverb/: Freeverb - free public domain reverb SOURCE CODE Freeverb - Free, studio-quality reverb SOURCE CODE in the public domain Written by Jezar at Dreampoint - http://www.dreampoint.co.uk DEVICES: freeverb/Makefile.mk: add source file to devices/4ase.ccfiles DEVICES: freeverb/GNUmakefile: allow subdir builds DEVICES: Makefile.mk: add dependencies, clean rule, etc for devices/ sources DEVICES: blepsynth/Makefile.mk: simply add source files to devices/4ase.ccfiles UI: b/contextmenu.vue: allow 0 as valid menuitem.uri value UI: b/cliplist.vue: only call non-null Shell.piano_current_tick() README.md: fix manual link Merge branch 'jack-driver' # 2022-07-29 Tim Janik cc1cb08 * jack-driver: DOC: ch-install.md: merge jack howto into driver-setup section DOC: ch-install.md: add chapter about download and installation ASE: main.cc: print the real executable_name() for --version and usage ASE: driver.cc: load jackdriver.so ASE: Makefile.mk: optionally build jackdriver.so MISC: config-checks.mk: check if jack.pc >= 0.125.0 is present Jack 0.125.0 ships with Ubuntu-20.04. ASE: driver-jack.cc: turn into a working PCM driver for Ase ASE: driver-jack.cc: adapto to Ase namespace ASE: merge original Jack driver by Stefan Westerfeld Initial version of Jack driver using the new driver API Add minimal jack howto Block SIGPIPE to avoid crashes when jackd dies Driver: return read and write latency for a pcm driver separately For instance for synchronizing the play position pointer ui with the audio buffering, you want to know how much write latency you have, but don't care about the amount of read latency. Add list with possible improvements from PR 31 https://github.com/tim-janik/beast/pull/31 Add some minor fixes as requested in review ASE: engine.cc: consistently calculate buffer size for multiple channels ASE: datautils.hh: add fast_copy() for floats and ints ASE: driver-alsa.cc: adjust debug messages, remove unused variable ASE: main.cc: require command line options to enable JSIPC logging Merge branch 'version-fixes' # 2022-07-29 Tim Janik 61e8d05 * version-fixes: ASE: remove unneeded version postfix from AnklangSynthEngine MISC: version.sh: fix development postfix for shallow versions MISC: version.sh: fix build id with development postfix MISC: Makefile.mk, version.sh: fix release tag missing 'v'-prefix ">Merge branch 'propgroup-litcomponent' # 2023-08-30 Tim Janik 3957579 * propgroup-litcomponent: UI: b/pianoroll.js: add todo comment UI: b/knob.js: use fixed adjustment factors for wheel events UI: util.js: wheel_delta: normalize delta to pixels for modern browsers Work around Firefox changing deltaY vs deltaMode depending on the order of access! Throw away old compat code. UI: b/knob.js: fix invalid field access UI: b/propgroup.js: avoid shadowRoot UI: util.js: refuse pointer lock grabbing on orphans and shadowRoot descendants UI: b/propgroup.js: port to LitComponent UI: b/deviceeditor.vue: use b-propgroup UI: b/propinput.js: support readonly + disabled state UI: b/propinput.js: add support for as property field UI: b/propinput.js: let labeled default to false UI: b/toggle.js: store pressed button number UI: util.js: add uuname() Merge branch 'b-propinput-litcomponent' # 2023-08-23 Tim Janik a7ab348 * b-propinput-litcomponent: UI: b/propinput.js: port to LitComponent UI: b/choiceinput.js: support label attribute as choice tip UI: little.js: add LitComponent.request_update_() UI: util.js: add addnotify_() and delnotify_() to extended properties UI: b/pro-group.vue: use UI: b/knob.js: simplify MISC: package.json.in: extend nodemon delay to reduce conflicts with lint rules Sometimes when ui/lint is triggered, files are written and make serve also runs rebuild rules due to nodemon. Merge branch

MIDIVisualizer is a small cross-platform MIDI visualizer, written in C++/OpenGL.

Updated: 29 Aug, 2023

This releases focused on adding many requested settings, don't forget to explore the settings menu or the command-line help to get a full list! A huge thanks to @PrimateCoder and @sreich for their contributions!

Features:

  • Ability to hide some tracks or channels (#143)
  • Color sets: ability to pick a new chromatic coloring mode (#130)
  • Notes: define background textures for major and minor notes, border settings (thanks to #129) (#66, #88)
  • Flashes: exposed new halo parameters, added texture flipbook customization (#12, #66, #124)
  • Score: added lines width and color settings, new measure labels placement options
  • Pedals: added a customization panel to load texture masks for each pedal, set padding and per-pedal color, and preview the result (#87)
  • Wave: added a scrolling noise effect (#122)
  • Particles: added a turbulence noise effect (#68)

Improvements:

  • Color sets: support up to 12 sets (thanks to #130)
  • Notes: improve alignment of falling notes with keyboard keys
  • Improved performances when rendering the score background
  • Keyboard: display outlines around all pressed keys (#140)
  • Particles: added a specific panel for managing particle textures, with previews and additional options

Zrythm is a featureful and easy to use DAW, written in C using the GTK+3 toolkit.

Updated: 29 Aug, 2023

PipeWire is a server and user space API to deal with multimedia pipelines.

Updated: 29 Aug, 2023

0.3.79

openFrameworks is an open source toolkit designed for creative coding

Updated: 29 Aug, 2023

0.12.0 Release Candidate 1

We could definitely use help testing.

Please report any issues here:
#6692

Notes:

  • Changelog to come soon.
  • armv6l and aarch64 tested with Raspian / Rapsberry Pi OS - Bullseye version.
  • Android release to come in 0.12.1 ( needs big libs refactor ).

Jamulus enables real-time jam sessions over the internet.

Updated: 24 Aug, 2023
  • Client: Added SRV-based virtual hosting support (#2930).
    (contributed by @hoffie)

  • Server: Improved --serverinfo argument validation (#2951).
    (contributed by @hoffie, @pljones)

  • Server: ISO country codes can now be supplied in upper or lower case (#2934).
    (contributed by @Rob-NY)

  • Server: Use native file selection dialog for recording directory and persistence file to allow read and write access outside of the macOS sandbox (#3009).
    (contributed by @ann0see)

  • Server: Rename --directoryserver to --directoryaddress (and internal changes) (#3017).
    (contributed by @pljones)

  • Server: Save the HTML formatting in Server Welcome Message. (Applies to the GUI Server.) (#3058).
    (contributed by @pljones)

  • Windows: Windows 64bit releases use Qt 6.5.2 now. Jamulus will from now on only support Windows 10 and above (#2300).
    (contributed by @hoffie)

  • Linux: Debian users can now use the official PPA to get automatic updates. See the Linux install page on jamulus.io for more information (#3013).
    (contributed by @ann0see)

  • Mac: The legacy build now uses the macOS 13.1 SDK which is unsupported by Qt 5.9.9. We still provide the legacy build, but from now on consider it as deprecated. You

by KDE

Kdenlive is video and audio editing software with GPU rendering support. Great variety of video filters available.

Updated: 24 Aug, 2023

Create tag for 23.08.0

ChucK is a programming language for real-time sound synthesis and music creation

Updated: 24 Aug, 2023

chuck-1.5.1.2 release

Zrythm is a featureful and easy to use DAW, written in C using the GTK+3 toolkit.

Updated: 24 Aug, 2023

Zrythm is a featureful and easy to use DAW, written in C using the GTK+3 toolkit.

Updated: 24 Aug, 2023

What's Changed

New Contributors

Full Changelog: https://github.com/zrythm/zrythm/commits/v1.0.0-beta.4.12.1

JackTrip is a Linux, Mac OSX, or Windows multi-machine audio system used for network music performance over the Internet.

Updated: 23 Aug, 2023

What's Changed

Zrythm is a featureful and easy to use DAW, written in C using the GTK+3 toolkit.

Updated: 23 Aug, 2023

v1.0.0-beta.4.12

Anklang, a digital audio synthesis application for live creation and composition

Updated: 23 Aug, 2023

Anklang 0.1.0.nightly2308232124

Development version - may contain bugs or compatibility issues.

UI: b/knob.js: simplify MISC: package.json.in: extend nodemon delay to reduce conflicts with lint rules Sometimes when ui/lint is triggered, files are written and make serve also runs rebuild rules due to nodemon. Merge branch 'fix-raw-tex' # 2023-08-19 Tim Janik 64882dc * fix-raw-tex: UI: xbcomments.js: properly quote special characters in docs DOC: Makefile.mk: do not parse source comments as raw_tex Merge branch 'anklang-internals+jsdocs' # 2023-08-19 Tim Janik b554e80 * anklang-internals+jsdocs: UI: b/basics.js: small docu update DOC: Makefile.mk: integrate JS component docs into internal manual DOC: jsdoc2md.js: skip extra subsection indentation UI: Makefile.mk: optimize *.jscss build, fix anklang-internals.html dependency UI: b/*.js: use three hashes '###' to indent docu subsections Merge branch 'swesterfeld-piano-roll-move', closes #16 # 2023-08-03 Tim Janik ec26905 * swesterfeld-piano-roll-move: UI: b/piano-ctrl.js: support moving/copying notes with the mouse UI: b/cliplist.js: restore user manual docs Merge branch 'jsdoc-elements' # 2023-08-03 Tim Janik 9d0c8de * jsdoc-elements: DOC: poxystyle.css: fix dark theme colors DOC: jsdoc2md.js: use pandoc anchors everywhere with data-4search hints DOC: poxy.sh: forbid raw-html and support data-4search on UI: b/*.js: reformat documentation to use @class and @description commands See also: https://jsdoc.app/tags-description.html DOC: poxy.sh: parallelize JsDoc processing DOC: poxy.sh: fix exit code and compact markdown DOC: poxy.sh: add ui/ch-*.md files to poxy docs DOC: jsdoc2md.js: allow descriptions of virtual classes as docu sections DOC: copyright.ini: assign MPL-2 to ch-*.md documentation files DOC: Makefile.mk: integrate ui/ch-component.md Makefile.mk: add html/ to CLEANDIRS Makefile.mk: clean poxy/ and assets/ DOC: ch-development.md: explicitely describe ASE UI: ch-component.md: describe lit components UI: ch-component.md: rename from ui/b/ch-vue.md README.md: add Star History Chart Merge branch 'toggle-as-lit' # 2023-08-03 Tim Janik 0eba7de * toggle-as-lit: UI: b/pro-input.vue: handle @valuechange on b-toggle UI: b/toggle.js: port to LitComponent Merge branch 'x11test-delay' # 2023-08-02 Tim Janik 8712b43 * x11test-delay: X11TEST: ereplay.cjs: add delay to mitigate a UI-reload race on project changes X11TEST: replay.sh: simplify AnklangSynthEngine executable check Merge branch 'poxy-on-jammy' # 2023-08-02 Tim Janik 3be13e1 * poxy-on-jammy: GITHUB: workflows/testing.yml: run poxy on ubuntu:22.04 MISC: docker_run: fix interactive invocations MISC: Dockerfile.jammy: setup development tools for ubuntu:22.04 builds Merge branch 'make-dist-and-assets' # 2023-07-31 Tim Janik 4694aa8 * make-dist-and-assets: GITHUB: workflows/release.yml: add Ping-IRC job GITHUB: workflows/release.yml: use misc/docker_run GITHUB: workflows/release.yml: add action to build & create releases from tags Makefile.mk: dist: assign release version to misc/version.sh:BAKED_DESCRIBE MISC: version.sh: prepare BAKED_DESCRIBE variable to define baked in version MISC: version.sh: support lightweight release tags via exact match UI: Makefile.mk: fix unintentional tscheck remakes DOC: Makefile.mk: add doc/ch-releasing.md to internal manual ASE: Makefile.mk: rebuild ase/buildversion*.cc if GITCOMMITDEPS changes Makefile.mk: rebuild package.json if GITCOMMITDEPS changes MISC: config-utils.mk: take tags and packed-refs into account for GITCOMMITDEPS DOC: ch-releasing.md: elaborate on releases and assets DOC: ch-releasing.md: start describing versioning and the release process MISC: mknews.sh: add development version disclaimer MISC: Makefile.mk: remove partial release build rules MISC: mkassets.sh: simplify to just make dist and trigger release asset builds MISC: mkAppImage.sh: build AppImage in assets/ MISC: mkAppImage.sh: use tools from appimagetools/ dir MISC: Makefile.mk: cache downloads of appimage tools Makefile.mk: make dist: also generate assets/ChangeLog MISC: mkdeb.sh: create debian package in assets/ DOC: Makefile.mk: support building assets/pdf MISC: Makefile.mk: avoid depending on appimage-runtime-zstd for normal builds UI: tsconfig.json: remove exclude section Makefile.mk: grep-reminders: only inspect existing files Makefile.mk: add recent commits to NEWS.md Makefile.mk: build dist tarball in assets/ with high compression ASE: main.cc: for --version, show short version and build id MISC: config-checks.mk: use version_short ELECTRON: Makefile.mk: use version_short ASE: Makefile.mk: use version_short Makefile.mk: extract version_hash, use version_short for brief version identifiers * Remove version_m.m.m use version_short instead * Remove version_buildid, that is actually version_short + version_hash MISC: Makefile.mk: remove unused release-news MISC: mknews.sh: generate most recent section of NEWS.md MISC: mkdeb.sh: parse hash from misc/version.sh MISC: version.sh: reduce logic to produce baked/git/fallback version/hash/date Merge branch 'docker_build_run_clean' # 2023-07-31 Tim Janik acafef2 * docker_build_run_clean: GITHUB: workflows/testing.yml: remove duplicate chown invokation GITHUB: workflows/testing.yml: use misc/docker_build, docker_run, docker_clean MISC: docker_clean: cleanup permissions and CI image tag MISC: docker_run: run in a CI image built by docker_build MISC: docker_build: build a Dockerfile CI image with ghcr.io cache support UI: Makefile.mk: make sure all JS files are built before running tscheck Merge branch 'swesterfeld-piano-roll-note-length', closes #15 # 2023-07-27 Tim Janik d115723 * swesterfeld-piano-roll-note-length: UI: b/piano-ctrl.js: cleanup note_duration_delta at the end of a drag UI: b/piano-ctrl.js: support resizing multiple notes in a selection Merge branch 'simple-vue-ports' # 2023-07-27 Tim Janik 1c13e75 * simple-vue-ports: UI: Makefile.mk: adapt make install wildcards UI: b/statusbar.js: port to LitComponent UI: b/databubble.js: port to native HTML component UI: b/partthumb.vue: retire partthumb which is superceded by clipview UI: b/hscrollbar.vue: retire hscrollbar code until we really need one UI: b/color-picker.vue: retire color picker code until we really need one Merge branch 'global-css-rename' # 2023-07-27 Tim Janik c402d5e * global-css-rename: UI: index.html: load global.css UI: Makefile.mk: generate global.css UI: b/shell.vue: fix comment UI: global.scss: rename (from globals.scss) b/c it now contains global CSS Merge branch 'globalscss-icon-fonts' # 2023-07-27 Tim Janik 7a7dd7e * globalscss-icon-fonts: UI: b/app.js: add comment for spinner testing UI: index.html: adjust font resource paths UI: globals.scss: import all icon SCSS defs UI: dom.js: properly quote font names ASE: websocket.cc: use CACHE_AUTO since we do not handle conditional requests UI: b/menuseparator.js: fix customElements extends specification UI: b/icon.js: leave icon font loading to globals.scss, assert font presence UI: b/shell.vue: spinner.scss is already imported by globals.scss UI: Makefile.mk: move fonts into ui/ and merge globals.scss dependencies UI: globals.scss: rename normalize.scss for merging import UI: postcss.js: keep .css imports, include all others UI: b/icon.js: assert "Material Icons" font_family instead of loading material-icons.css UI: globals.scss: directly include material-icons.css UI: Makefile.mk: prepare ui/material-icons.css for globals.css UI: dom.js: add font_family_loaded() UI: dom.js: add file for DOM utilities Merge branch 'csshash-2fix-fouc' # 2023-07-27 Tim Janik 0b1e7e7 * csshash-2fix-fouc: UI: index.html: mark globals.css as data-4litcomponent UI: little.js: clone stylesheet links marked data-4litcomponent into shadowRoot UI: index.html: reload vue-styles.css and globals.css once the CSSHASH changes UI: Makefile.mk: support @--CSSHASH--@ insertions fro index.html ASE: websocket.cc: send "forever" Cache-Control with text/css to reduce FOUC Merge branch 'globalscss-4-litcomponents' # 2023-07-27 Tim Janik 709f4e9 * globalscss-4-litcomponents: UI: Makefile.mk: run stylelint on ui/globals.css UI: b/positionview.js: add CSS to globals.css, avoid shadowRoot UI: b/playcontrols.js: add CSS to globals.css, avoid shadowRoot UI: b/pianoroll.js: add CSS to globals.css, avoid shadowRoot UI: b/partlist.js: add CSS to globals.css, avoid shadowRoot UI: globals.scss: only style button and push-button for LightDOM UI: b/objecteditor.js: add CSS to globals.css, avoid shadowRoot UI: b/switchinput.js: add CSS to globals.css, avoid shadowRoot UI: b/numberinput.js: add CSS to globals.css, avoid shadowRoot UI: b/textinput.js: add CSS to globals.css, avoid shadowRoot UI: b/more.js: add CSS to globals.css, avoid shadowRoot UI: b/tracklist.js: add CSS to globals.css, avoid shadowRoot UI: b/trackview.js: add CSS to globals.css, avoid shadowRoot UI: b/menubar.js: fix b-menuseparator UI: b/trackview.js: fix b-menuseparator UI: b/menutitle.js: add CSS to globals.css UI: b/menuseparator.js: make b-menuseparator a simple HTMLHRElement UI: b/menurow.js: add CSS to globals.css, avoid shadowRoot UI: b/menuitem.js: add CSS to globals.css UI: b/menubar.js: add CSS to globals.css, avoid shadowRoot UI: b/knob.js: add CSS to globals.css, avoid shadowRoot UI: b/icon.js: add CSS to globals.css UI: b/editable.js: add CSS to globals.css UI: b/contextmenu.js: add CSS to globals.css UI: b/clipview.js: add CSS to globals.css, avoid shadowRoot UI: b/cliplist.js: add CSS to globals.css, avoid shadowRoot UI: b/choiceinput.js: add CSS to globals.css, avoid shadowRoot UI: b/buttonbar.js: add CSS to globals.css, avoid shadowRoot UI: b/basics.js: add CSS to globals.css, cleanups UI: b/aboutdialog.js: add CSS to globals.css, avoid shadowRoot UI: globals.scss: merge contents of grid.scss UI: Makefile.mk: fix globals.scss cleanup UI: Makefile.mk: include *.jscss contents in globals.css Merge branch 'postcss-normalize-charset' # 2023-07-27 Tim Janik 746575f * postcss-normalize-charset: UI: postcss.js: postprocess CSS with postcss-normalize-charset MISC: package.json.in: install postcss-normalize-charset UI: postcss.js: add support for -I to add include paths Merge branch 'aboutdialog-lit' # 2023-07-27 Tim Janik 874535f * aboutdialog-lit: UI: index.html: add comments to start_view_transition() UI: globals.scss: add b-dialog styling UI: b/contextmenu.js: use transparent backdrop for menus UI: globals.scss: add view-transition-group defaults, add scale0 keyframes UI: dark.scss: add b-animation-duration and b-dialog-colors UI: tsconfig.json: avoid checks of postcss.js.tst.js UI: b/menubar.js: make use of Shell.show_about_dialog() UI: b/app.js: leave aboutdialog handling to Shell.show_about_dialog() UI: b/shell.vue: use b-aboutdialog.shown, add show_about_dialog(), handle close * Use proper internal state for showing b-aboutdialog * Expose showing/hiding through show_about_dialog() * Allow animated closing of b-aboutdialog with start_view_transition UI: b/aboutdialog.js: display Lit version number UI: b/aboutdialog.js: port to LitComponent UI: eslintrc.js: declare start_view_transition as global symbol UI: index.html: define start_view_transition() This is a Vue-aware wrapper around document.startViewTransition() (atm Chrome specific), that still does the right thing on Firefox and has a disable flag. UI: Makefile.mk: index.html: add lit_version to config_json Merge branch 'dark-palette' # 2023-07-24 Tim Janik 61e1ecd * dark-palette: UI: dark.scss, globals.scss: use palette for body colors UI: Makefile.mk: add palette.scss to scss files UI: palette.scss: add warm grey palette based on ZCAM Jz (lightness) steps Merge branch 'modern-normalize' # 2023-07-24 Tim Janik aa3a6b6 * modern-normalize: UI: little.js: load globals.css into every LitComponent UI: index.html: give globals.css precedence over vue-styles.css UI: index.html: remvoe shadow.css UI: Makefile.mk: remove ui/elements.scss ui/shadow.scss Makefile.mk: run 'lint' during `make check` UI: remove unused files elements.scss and shadow.scss UI: globals.scss: merge styles from elements.scss and shadow.scss UI: globals.scss: use normalize.css to normalize latest Chrome & Firefox UI: normalize.css: leave font-family setting to our own theme MISC: mkcopyright.py: fix MIT License pattern to deal with case and 'd'-ending UI: normalize.css: insert MIT License and add Copyright notices UI: normalize.css: add renamed modern-normalize.css version 2.0.0 Add modern-normalize.css from https://github.com/sindresorhus/modern-normalize licensed MIT. Merge branch 'poxystyle' # 2023-07-24 Tim Janik 7134954 * poxystyle: DOC: poxy.sh: allow doc/poxystyle.css to fixup colors DOC: poxystyle.css: fix light theme colors and sizes UI: b/cliplist.js: minor edit README.md: update roadmap with items from Stefan Westerfeld Merge branch 'ts-check-lit-components', add ts-check and fix lint issues # 2023-07-03 Tim Janik a7ea5f4 * ts-check-lit-components: UI: b/app.js: reload UI on project changes UI: b/objecteditor.js: fix output UI: util.js: add missing type annotations UI: kbd.js: add missing type annotations UI: b/trackview.js: add @ts-check and missing type annotations UI: b/tracklist.js: add @ts-check and missing properties UI: b/playcontrols.js: add @ts-check UI: b/pianoroll.js: add @ts-check and missing type annotations UI: b/piano-ctrl.js: minor type fix UI: b/partlist.js: add @ts-check UI: b/more.js: add @ts-check UI: b/menutitle.js: add @ts-check UI: b/menuseparator.js: add @ts-check UI: b/menurow.js: add @ts-check UI: b/menuitem.js: add @ts-check UI: b/knob.js: add @ts-check and missing type annotations UI: b/editable.js: add @ts-check UI: b/contextmenu.js: add @ts-check and missing type annotations UI: b/clipview.js: add @ts-check and missing type UI: b/buttonbar.js: add @ts-check README.md: escape FIXME keywords UI: Makefile.mk: grep for reminders in ui/lint DEVICES: Makefile.mk: grep for reminders in devices/lint Makefile.mk: at the end of 'all', grep for reminder keywords in known sources Makefile.mk: ls-tree.d needs GITCOMMITDEPS, i.e. misc/config-utils.mk ASE: Makefile.mk: grep for reminders in ase/lint Makefile.mk: add 'lint' as toplevel phony rule UI: b/tracklist.js: cleanup CSS UI: b/textinput.js: cleanup CSS UI: b/switchinput.js: cleanup CSS UI: b/shell.vue: cleanup CSS UI: b/positionview.js: cleanup CSS UI: b/pianoroll.js: cleanup CSS UI: b/noteboard.vue: cleanup CSS UI: b/menutitle.js: cleanup CSS UI: b/menurow.js: cleanup CSS UI: b/menuitem.js: cleanup CSS UI: b/knob.js: cleanup CSS UI: b/icon.js: cleanup CSS UI: b/folderview.vue: cleanup CSS UI: b/filedialog.vue: cleanup CSS UI: b/editable.js: cleanup CSS UI: b/dialog.vue: cleanup CSS UI: b/databubble.vue: cleanup CSS UI: b/contextmenu.js: cleanup CSS UI: b/clipview.js: cleanup CSS UI: b/basics.js: inlcude v-flex mixin UI: theme.scss: fix color syntax UI: startup.js: fix import path UI: Makefile.mk: use stylelint with -f unix only inside emacs UI: Makefile.mk: add missing ui/spinner.scss dependency UI: stylelintrc.cjs: ignore whitespace rules UI: Makefile.mk: add Ase.server @type UI: mixins.scss: add v-flex mixin UI: mixins.scss: use $b-font-stack-kbd-mono UI: dark.scss: define $b-font-stack-kbd-mono for hotkey rendering UI: b/menubar.js: port to LitComponent * Cleanup markup * Cleanup CSS UI: b/positionview.js: port to LitComponent UI: b/basics.js: use h-flex() UI: mixins.scss: add h-flex() mixin MISC: Dockerfile.arch: install unzip Merge branch 'inputs-as-litelement' # 2023-06-27 Tim Janik 2ddfe22 * inputs-as-litelement: X11TEST: play-notes.json: adjust recording for new web components ASE: server.cc: listen on "notify" emissions from properties ASE: properties.cc: fix notifications, emit notify:identifier UI: util.js: turn xprop.value_ into a reactive property UI: b/choiceinput.js: take b-objecteditor into account in CSS UI: b/pro-input.vue: use @valuechange on b-choiceinput UI: b/preferencesdialog.vue: use b-objecteditor UI: util.js: avoid extending the same property twice UI: util.js: export fullstop() UI: Makefile.mk: use tsc with --pretty false only inside emacs UI: b/objecteditor.js: port to LitComponent * Turn into shadowless component * Properly prefix CSS classes * Listen on and handle @valuechange events * Do not freeze extended properties that we keep mutating * Remove old resize blocker logic UI: startup.js: load basic custom components early on UI: b/basics.js: move h-flex, v-flex, c-grid, push-button here, shadowless Make these simple basic containers shadowless, i.e. without shadow root. UI: b/pro-input.vue: add support for b-choiceinput UI: little.js: export 'nothing' from Lit UI: types.d.ts: add debug() global UI: b/fed-object.vue: add support for b-choiceinput UI: b/choiceinput.js: port to LitComponent, render on demand only UI: b/tracklist.js: fix stacking of top border shadow UI: b/switchinput.js: allow LEFT/RIGHT/UP/DOWN to toggle UI: b/fed-object.vue: add support for b-switchinput UI: b/switchinput.js: port to LitComponent UI: types.d.ts: declare global CONFIG UI: b/fed-object.vue: add support for b-numberinput UI: b/numberinput.js: simplify and fix sizing UI: b/numberinput.js: port to LitComponent UI: b/textinput.js: dispatch value changes as valuechange "event" Merge branch 'fix-lit-html' # 2023-06-22 Tim Janik 31da2dd * fix-lit-html: UI: b/*.js: fix trailing-solidus in html`` markup UI: eslintrc.js: add plugin:lit/recommended to linting rules MISC: package.json.in: install eslint-plugin-lit Merge branch 'InterDisplay', based on InterVariable-4.0 font # 2023-06-22 Tim Janik 89c9d01 * InterDisplay: UI: dark.scss: add a fallback font stack UI: theme.scss: remove outdated font stuff UI: mixins.scss: move b-kbd-hotkey here UI: elements.scss: use b-font-weight-bold() and b-font-weight-bolder() UI: b/*.vue, b/*.js: use b-font-weight-bold() and its variants UI: dark.scss: define b-font-weight-{normal|bold|bolder} mixins UI: b/menutitle.js: use drop-caps while InterVariable-4.0 small-caps are broken See also: https://github.com/rsms/inter/issues/556#issuecomment-1598010623 UI: elements.scss: leave font handling to theme, globals and shadow UI: b/pianoroll.js: use b-canvas-font UI: b/partthumb.vue: use b-canvas-font UI: b/clipview.js: use b-canvas-font UI: shadow.scss: use b-ui-font() inside shadow DOMs UI: globals.scss: make use of b-ui-font() UI: dark.scss: configure b-ui-font() for "InterVariable" in InterDisplay style UI: globals.scss: leave font-face defs to index.html UI: index.html: cleanup preloads, add @font-face for "InterVariable" UI: b/icon.js: add small comment UI: Makefile.mk: download InterVariable.woff2 UI: stylelintrc.cjs: disable "font-family-name-quotes" to allow quoted font names Merge branch 'component-styling' # 2023-06-21 Tim Janik 234bf99 * component-styling: UI: b/playcontrols.js: use JsExtract.css_url() UI: b/icon.js: use JsExtract.css_url() UI: b/textinput.js: make this a shadowless component UI: little.js: add JsExtract.css_url() UI: little.js: use cast to work around TS2425 UI: b/playcontrols.js: port to LitComponent UI: Makefile.mk: remove temporary file UI: b/*.vue: remove useless mixins import UI: index.html: import globals.css UI: globals.scss: import elements.scss which includes mixins UI: Makefile.mk: create globals.css and auto-import mixins.scss for vue styles UI: elements.scss: rename from domstyles.scss UI: b/button-bar.vue: port to LitComponent UI: b/*.js: access only LitComponent fields (not LitElement) UI: little.js: remove LitElement export UI: startup.js: derive from LitComponent (not LitElement) UI: b/*.js: derive from LitComponent (not LitElement) UI: b/partlist.js: embed and load CSS via JsExtract UI: Makefile.mk: fix dependenc for scss rebuilds UI: b/partlist.js: import Util UI: types.d.ts: declare __DEV__ global UI: b/pianoroll.js: extend LitComponent and use reactive_wrapper to track notes Also, merge multiple repaint requests into the same micro task. UI: b/clipview.js: leave width to parent UI: b/cliplist.js: set 'data-f1' only once suffices UI: b/trackview.js: render b-trackview context menu on demand UI: b/contextmenu.js: fix close() and synchronize updates * await this.updateComplete before showModal() * properly emit 'close', take nesting into account UI: b/partlist.js: port to LitElement UI: mixins.scss: add transparent-scrollbars mixin Merge branch 'clang-tidy' # 2023-06-18 Tim Janik 29cc5ff * clang-tidy: MISC: mkassets.sh: always use /tmp/anklang-mkassets/ for release builds GITHUB: workflows/testing.yml: fix key file permissions GITHUB: workflows/testing.yml: fixup permissions at CI end GITHUB: workflows/testing.yml: remove missing variable reference GITHUB: workflows/testing.yml: fix arch perms and focal redirection GITHUB: workflows/testing.yml: use $DOCKER_RUN and ghcr.io for all tasks * use $DOCKER_RUN and ghcr.io caching for Focal-Docs * adjusting git.safe.directory is not needed for Lunar * use $DOCKER_RUN and ghcr.io caching for Arch-Replay MISC: Dockerfile.focal: remove unused RUNs, rename user to ubuntu * remove unused OOTBUILD, rename builder user to ubuntu * add a comment howto build and run this image * use fixed user and group id of 1000 MISC: Dockerfile.arch: use fixed user and group ids of 1000 MISC: Dockerfile.arch: remove unused OOTBUILD and unused poxy MISC: Dockerfile.lunar: remove unused OOTBUILD GITHUB: workflows/testing.yml: directly use docker run for lunar and fix perms MISC: Dockerfile.lunar: upgrade to nodejs-20 MISC: package.json.in: upgrade npm build tools and electron-25 MISC: package.json.in: remove unused rollup-plugin-node-resolve MISC: Makefile.mk: fix missing directory dependency GITHUB: workflows/testing.yml: add Lunar-Clang-Tidy, rename Focal-Docs MISC: Dockerfile.lunar: provide build environment with clang-17 on ubuntu:23.04 MISC: colorize.sh: colorize error, warning, note and special case Emacs MISC: Makefile.mk: reimplement clang-tidy and clang-tidy-clean rules Makefile.mk: defined CLANG_TIDY Makefile.mk: create ls-tree.d and provide $(LS_TREE_LST) Merge branch 'sorted-vector' # 2023-06-08 Tim Janik 7b3b380 * sorted-vector: ASE: sortnet: implement SortedVector ASE: testing.hh: TFLOATS(): assert float equality within an apsilon ASE: combo.cc: add SPL link Merge branch 'swesterfeld-fix-pcg-ub' # 2023-06-07 Tim Janik 1d49d48 * swesterfeld-fix-pcg-ub: ASE: randomhash: fix undefined behaviour in Pcg32Rng Left shifting a 32bit value by 32 bits is UB. * Closes #14 Merge branch 'appimage-rpath-fix' # 2023-06-07 Tim Janik f609e1e * appimage-rpath-fix: MISC: mkAppImage.sh: avoid `linuxdeploy {-e|-l}` which change binary locations Avoid `linuxdeploy {-e|-l}`, these options change the binary locations by copying. The copies mess up ELF location detection and restoring the original locations causes wrong relative $ORIGIN paths. We just use --deploy-deps-only now, which keeps the binaries in place and correctly adjusts the relative $ORIGIN path. MISC: mkAppImage.sh: remove unused command Merge branch 'appimage-dependencies' # 2023-06-06 Tim Janik 1696a12 * appimage-dependencies: MISC: mkAppImage.sh: reduce workarounds by using linuxdeploy --deploy-deps-only MISC: mkAppImage.sh: add ELF dependencies for AnklangSynthEngine and gtk2wrap This adds libFLAC.so, libogg.so, libopus.so and libgdk-x11-2.0.so, libgtk-x11-2.0.so to the AppImage. Closes #13. Merge branch 'fix-imports' # 2023-06-06 Tim Janik 1b47b9e * fix-imports: UI: util.js: add missing Kbd import UI: eslintrc.js: remove 'Util' global UI: b/*.vue: add missing Util imports UI: b/*.js: add missing Util imports Merge branch 'jsdoc-tsimport' # 2023-06-05 Tim Janik c184b5e * jsdoc-tsimport: UI: b/cliplist.js: jsdoc-tsimport-plugin does not support a blank after import DOC: jsdocrc.json: use jsdoc-tsimport-plugin to parse tsc file imports * Fix JsDoc choking on typescript import statements that import typed from other JS files. * See also: https://github.com/jsdoc/jsdoc/issues/1645#issuecomment-768293857 MISC: package.json.in: install jsdoc-tsimport-plugin Merge branch 'typescript-jsdoc-checks' # 2023-06-05 Tim Janik 819895c * typescript-jsdoc-checks: UI: types.d.ts: allow App, Data, Shell Ase globals UI: index.html: add importmap to allow lit module imports UI: tsconfig.json: configure typescript checks, allow JS type checks + imports UI: wrapper.js: add @param type UI: little.js: add @ts-check, add types, add explicit exports for tsc UI: b/app.js: add @ts-check and missing property decl UI: b/cliplist.js: add @ts-check, missing imports, exports and initializations UI: b/clipview.js: export class UI: wrapper.js: add @ts-check and type annotations UI: b/statusbar.vue: use material icons for info and instrument panel UI: b/icon.js: fix material-icons size UI: Makefile.mk: add 'tscheck', 'stylelint' and 'lint' rules * add 'lint' dependency to run all of stylelint eslint tscheck * add 'tscheck' rule to selectively run typescript checks * add explicit 'stylelint' rule * simplify lit.js rollup * ui/vue.js: leave eslint cache alone * install material-icons from npm * cleanup eslint rule * ui/rebuild: avoid bg jobs, no need to print dir in sub MAKE MISC: package.json.in: cleanup serve and rebuild scripts MISC: package.json.in: remove eslint script, use make eslint instead MISC: package.json.in: install material-icons@1.13.6 Makefile.mk: whitespace fix GITHUB: workflows/testing.yml: use git fetch --unshallow Apparently `git fetch --shallow-since` does not work with the merge commit created by PR checkouts. Using `git fetch --unshallow` might be less efficient for regular branches, but at least works with trunk and PRs. MISC: package.json.in: upgrade lit, electron, vue, postcss, etc UI: b/pianoroll.js: fix indicator interacting with the cursor MISC: package.json.in: install typescript to enable code checks Merge branch 'nightly-version' # 2023-05-20 Tim Janik 8459bbb * nightly-version: MISC: Makefile.mk: update Nightly releases to avoid excessive emails MISC: gh_delete_assets.sh: add script to delete all release assets via gh README.md: update documentation links MISC: version.sh: use 0.1.2.dev3 for development versions for proper ordering Using .dev[0-9] postfixes properly sorts: 0.1.2 < 0.1.2.dev3 < 0.1.3 This works for sort -V, dpkg, rpm and PIP versions. See: https://peps.python.org/pep-0440/#public-version-identifiers MISC: Makefile.mk: fix typo Merge branch 'ci-build-updates' # 2023-05-19 Tim Janik 580cf66 * ci-build-updates: MISC: Makefile.mk: use gh, keed *-dev version number for Nightly releases * Use gh instead of hub to create releases * Keep the development version number for Nightly releases * Add a brief disclaimer about Nightly releases MISC: version.sh: simplify, support --commit-date and $RELEASE_VERSION GITHUB: workflows/testing.yml: add named step "Fetch last release tag" GITHUB: workflows/testing.yml: fetch git history since last release tag GITHUB: workflows/testing.yml: update ping deps GITHUB: workflows/testing.yml: fix workflow names GITHUB: workflows/testing.yml: run (full) docu upload on Ubuntu GITHUB: workflows/testing.yml: run X11 tests on Arch DOC: poxy.sh: include all Anklang docs in upload MISC: Dockerfile.focal: install pip, doxygen and poxy MISC: Dockerfile.focal: install twm for x11test MISC: Dockerfile.arch: install libgtk3 and libnss for Electron MISC: Dockerfile.arch: install xvfb ffmpeg twm for x11test-v X11TEST: x11rec.sh: switch to using twm with auto placement GITHUB: workflows/testing.yml: use full doc/ install dir as doc artifact GITHUB: workflows/testing.yml: test clang builds under Ubuntu GITHUB: workflows/testing.yml: remove unused env var from Arch build rule Merge branch 'g++-fixes' # 2023-05-17 Tim Janik 8404380 * g++-fixes: ASE: cxxaux.hh: fix internal member typedef name ASE: cxxaux.hh: use std::conditional_t<> for rebind::other, fix for g++-12 With template specializations, g++-11 and g++-12 error out with "explicit specialization in non-namespace scope", so we use std::conditional_t<> which seems to work with g++-12 and clnag++-15. Merge branch 'libstdc++-13' # 2023-05-17 Tim Janik c0f01a0 * libstdc++-13: ASE: cxxaux.hh: patch up make_shared() to make libstdc++13 happy * Move shared ptr allocator out of function scope (to allow template specialization) * Add rebind<> template to shared ptr allocator which derives from std::allocator * Specialize rebind<> so it yields the same allocator for only the shared ptr value type * This "fixes" two static assertions that were added in libstdc++13, see: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=72792#c12 ASE: cxxaux.hh: remove unused FriendAllocator<> ASE: cxxaux.hh: fix missing include ASE: loop.hh: always use ASE_DEFINE_MAKE_SHARED() to implement make_shared() ASE: formatter.hh: include cstdint for int32_t ASE: clapplugin.cc: add missing braces for clap_event_transport_t initializer UI: wrapper.js: add missing Util import Makefile.mk: add simple rule to generate +compile_commands.json Merge branch 'transportinfo', closes #5 # 2023-05-12 Tim Janik 3819f90 * transportinfo: ASE: clapplugin: provide transport information for the plugin MISC: config-uname.mk: link -shared: allow undefined symbols with sanitizers Merge branch 'build-time-postcss' # 2023-03-15 Tim Janik 54353a7 * build-time-postcss: UI: split styles into dark, grid, domstyles, mixins, shadow, globals SCSS files globals.scss: styles for the LightDOM only shadow.scss: styles only for ShadowDOM components domstyles.scss: common styles for the LightDOM and ShadowDOM grid.scss: provide helpers mixins.scss: base to customize components dark.scss: basic theme, allow switching via import $themename_scss; cursors/cursors.css: provide CSS variables for custom cursors UI: cursors/cursors.css: fix quotes UI: cursors/cursors.css: introduce --svg-cursor-* variables at :root{} scope This is needed to make cursors.css actualy valid CSS. UI: index.html: remove postfix and css validator, load vue-styles.css, fix preloads UI: b/clipview.js: use zcam directly UI: b/*.js: embed and load CSS via JsExtract UI: b/positionview.vue: use $b-lcdscreen-fg, $b-lcdscreen-bg UI: b/: fix $b-button-radius $b-button-radius $b-track-meter-gap $b-track-meter-thickness UI: b/pianoroll.js: import grid.scss UI: b/positionview.vue: use t-lcdscreen-fg, t-lcdscreen-bg UI: b/trackview.js: add --track-meter-thickness, --track-meter-gap UI: b/*.vue: use --button-radius UI: b/*.js: use --button-radius UI: b/*.js: use var(--button-radius); UI: b/*.vue: use var(--button-radius); UI: b/deviceeditor.vue, b/pro-group.vue: use --device-radius UI: b/shell.vue: remove unused styles UI: b/pianoroll.js: remove useless color assignment UI: b/textinput.js: include mixins.scss to use SCSS variable UI: b/menuseparator.js: include mixins.scss to use SCSS variable UI: b/*.js: extend componenets from LitComponent instead of LitElement UI: b/dialog.vue: inline box-shadow styling UI: b/pianoroll.js: import grid helpers from grid.css UI: b/menubar.vue: specify 'justify-content: space-between' directly UI: b/pianoroll.js: rely on global cursors.css import UI: startup.js: remove unused postcss import UI: jsextract.js: document jsextract.js usage UI: jsextract.js: extract JsExtract.scss`` marker snippets into *.jscss files UI: little.js: document JsExtract usage UI: little.js: fix .css URL construction to always have an extension UI: little.js: load into shadow roots UI: little.js: add ./shadow.css to LitComponent UI: little.js: remove postcss UI: little.js: export JsExtract with scss`` and fetch_css() UI: little.js: add default define $themename_scss:dark.scss; Also, disable csstree-validator which yields outdated warnings. UI: little.js: load shadow.scss into all LitComponent elements UI: little.js: LitComponent: always adopt shadow.css in createRenderRoot() UI: little.js: CSS import: remove premature fetch + caching, always import all UI: little.js: remove cursors/cursors.css from memorized imports MISC: package.json.in: add stylelint MISC: package.json.in: remove perfectionist-dfd UI: sfc-compile.js: extract *.vuecss files UI: Makefile.mk: remove csstree-validator and postcss browserify bundling UI: Makefile.mk: run stylelint from output dir UI: stylelintrc.cjs: add stylelint config UI: Makefile.mk: extract, process and run stylelint on *.jscss files UI: Makefile.mk: process *.vuecss files UI: Makefile.mk: run stylelint on processed styles UI: Makefile.mk: generate vue-styles.css UI: Makefile.mk: remove Vue css rules UI: Makefile.mk: take quoted cursor urls into account UI: Makefile.mk: move theming into ui/dark.scss, build .css from .scss UI: Makefile.mk: use postcss.js with --map and -i UI: Makefile.mk: fix install pattern for ui/b/ UI: postcss.js: support stdout output UI: postcss.js: fix exit code by re-throwing errors UI: postcss.js: add -Dvar=value for predefined variables UI: postcss.js: add -C to find imports UI: postcss.js: directly print PostCSS exceptions to provide useful stacktraces UI: postcss.js: support fetching imports from network UI: postcss.js: remove perfectionist-dfd, auto-import *.scss unless -i is given UI: postcss.js: add zlerp() CSS function UI: postcss.js: add zmod4() CSS function UI: postcss.js: make source map configurable UI: colors.js: add zlerp() for color interpolation UI: colors.js: fix missing ZCAM attributes UI: colors.js: add zmod4() to debug ZCAM attributes for colors UI: colors.js: support missing first zmod() color argument DOC: jsdoc2md.js: fix @file docu being ignored in some cases DOC: jsdoc2md.js: add anchor to constants ASE: websocket.cc: allow caching of duplicate requests within 1 second Merge branch 'reactive-render' # 2023-03-08 Tim Janik 6f6d3be * reactive-render: UI: startup.js: rerender all LitElements and known Vue components on resize UI: little.js: export LitComponent, which has reactive render() and updated() UI: little.js: add lit_update_all() UI: wrapper.js: improve error message for missing getters UI: wrapper.js: support reactive_wrapper() callbacks for wrap_ase_object() fields UI: wrapper.js: implement define_reactive() and reactive_wrapper() Merge branch 'jsdoc-search' # 2023-03-05 Tim Janik dc2f640 * jsdoc-search: DOC: poxy.sh: ignore case during search UI: util.js: add PointerDrag comment DOC: poxy.sh: extend searchdata-v2.js with token list from JS docs DOC: poxy.sh: avoid fake 'Export' prefix for JS symbols DOC: jsdoc2md.js: use for anchors, add data-4search to anchors The old empty span anchors could be removed by some HTML processors. DOC: poxy.sh: jsdoc2md will now directly generate markdown from JS Merge branch 'api-docs' # 2023-03-03 Tim Janik 63bd26e * api-docs: GITHUB: workflows/testing.yml: rename CI jobs GITHUB: workflows/testing.yml: add step to build and upload API docs MISC: Dockerfile.arch: provide doxygen openssh and poxy via pip MISC: Dockerfile.arch: first update archlinux-keyring This works around an outdated keyring in the archlinux:latest docker image. MISC: dbuild.sh: add support for the docker -p option DOC: poxy.sh: setup AUTHOR/COMITTER EMAIL/NAME, GIT_SSH_COMMAND for uploads DOC: poxy.sh: provide NODE_PATH DOC: poxy.sh: add program doc/ dir to documentation output DOC: poxy.sh: add README as main index page DOC: poxy.sh: add project version to docs DOC: poxy.sh: upload to the `publish` branch DOC: poxy.sh: support conditional builds DOC: poxy.sh: move build commands into poxy_build function DOC: poxy.sh: add -u for upload DOC: poxy.sh: support accesskey="f" for Search DOC: poxy.sh: support -s to serve html/ contents DOC: poxy.sh: add NEWS.md DOC: poxy.sh: add ch-scripting.md to UI docs DOC: poxy.sh: generate API reference documentation with Poxy UI: Makefile.mk: remove rules to build JS docs DOC: Makefile.mk: build scripting docs from ui/host.js and ch-scripting.md DOC: copyright.ini: fix doc/jsdocrc.json path DOC: ch-scripting.md: move here from ui/ DOC: jsdoc2md.js: generate markdown from *.js via jsdoc-api DOC: jsdocrc.json: configure JsDoc to use doc/jsdoc-slashes.js DOC: jsdoc-slashes.js: move here from ui/slashcomment.js DOC: jsdoc2md.js: guard aganst doclets with non-string name I.e. doclet.meta.code.name can be an Integer. MISC: package.json.in: add jsdoc-api UI: b/shell.vue: add basic docs ASE: testing.hh: document Test namespace ASE: api.hh: add docu comment to Ase namespace README.md: fix github workflow badge URL Merge branch 'lit-tracklist' # 2023-01-10 Tim Janik 3e64716 * lit-tracklist: UI: b/tracklist.js: hide HEADER and FOOTER UI: b/tracklist.js: add scrollshadow at the top UI: theme.scss: remove fragile parts of scrollbar styling UI: b/tracklist.js: fix layout for few tracks UI: b/tracklist.js: support x/y scrolling UI: b/cliplist.js: clipview children must not shrink UI: b/tracklist.js: port to LitElement UI: b/trackview.js: increase width of level meters UI: b/clipview.js: use track.$id for colorization UI: b/cliplist.js: fix setting of b-clipview.track property UI: b/app.js: provide App.project ASE: object.cc: skip notifications for objects without shared_ptr ASE: api.hh: rename and notify Project.all_tracks() (former list_tracks) Merge branch 'lit-trackview' # 2023-01-08 Tim Janik 529af30 * lit-trackview: UI: b/trackview.js: render sound level meter from telemetry UI: b/cliplist.js: minor formatting ASE: track.cc: add dbspl0 and dbspl1 to telemetry ASE: combo: add sound level probing in dB to AudioChain ASE: datautils: add square_max() ASE: midilib.cc: reserve space to avoid malloc ASE: datautils: add square_sum() for FPU floats ASE: cxxaux.hh: add ASE_ALIGNED16() and ALIGNMENT16() UI: b/app.js: maintain App.current_track, notify accordingly ASE: track: support midi_channel changes UI: b/*.js: fix ${ref} syntax UI: b/trackview.js: port to LitElement Merge branch 'lit-editable' # 2023-01-08 Tim Janik b1b949d * lit-editable: UI: b/trackview.vue: adjust b-editable use UI: b/positionview.vue: adjust property editing ASE: project.cc: add missing notifications UI: b/editable.js: port to LitElement Merge branch 'lit-cliplist' # 2023-01-07 Tim Janik 2724283 * lit-cliplist: UI: b/partlist.vue: disable old code DOC: Makefile.mk: add docs from b/cliplist.md ASE: api.hh: rename Track.launcher_clips() and ass 'notify:launcher_clips' UI: b/statusbar.vue: use Util.find_element_from_point() UI: b/shell.vue: determine F1 anchor from find_element_from_point() UI: util.js: add find_element_from_point(), supporting shadow DOMs UI: b/clipview.js: fix properties UI: b/cliplist.js: support F1 help for ClipList UI: b/cliplist.js: port to LitElement UI: b/app.js: add App.zmove_last() UI: b/pianoroll.js: minor rename Merge branch 'lit-clipview' # 2023-01-07 Tim Janik ee3d1f0 * lit-clipview: ASE: api.hh: add Clip.all_notes read-only property Enable property caching UI code for fetching notes and updates. UI: b/pianoroll.js: use Util.wrap_ase_object() to fetch Clip notes UI: b/piano-ctrl.js: use Util.wrap_ase_object() to fetch Clip notes UI: b/clipview.js: use wrap_ase_object() to access Clip properties UI: util.js: export the wrapper.js API UI: wrapper.js: add AseObject wrapper to cache properties UI: startup.js: add class name to GC debug messages UI: b/shell.vue: provide Shell.piano_roll UI: Makefile.mk: use Vue production build unless MODE=debug This avoids massive memory leaks of Vue components. UI: Makefile.mk: fix missing dependency MISC: package.json.in: upgrade to vue-3.2.45 and lit-2.5.0 UI: Makefile.mk: use 'npm --prefer-offline' only when rebuilding MISC: config-checks.mk: do not force '--prefer-offline' on npm MISC: config-uname.mk: define __UIDEBUG__=1 for MODE=debug UI: b/pianoroll.js: remove old debug() UI: b/contextmenu.js: remove useless performance hog UI: b/tracklist.vue: add new track on dblclick on track list only UI: b/pianoroll.js: fix stale play cursor on clip change UI: b/clipview.js: port BClipView to LitElement UI: b/: use Track.list_launcher_clips() ASE: api.hh. track: rename Track.list_launcher_clips() Merge branch 'fix-embed-fd-hangs' # 2022-12-28 Tim Janik ea7b53b * fix-embed-fd-hangs: ASE: clapplugin.cc: map PollFD::NVAL to CLAP_POSIX_FD_ERROR ASE: loop.*: support POLLWRBAND, always pass on POLLNVAL, POLLERR and POLLHUP Merge branch 'build-fixes' # 2022-12-28 Tim Janik 215830f * build-fixes: UI: Makefile.mk: add missing dependency from ui/colors.js on ui/zcam-js.mjs This fixes postcss errors due to missing zcam-js.mjs. X11TEST: play-notes.json: adjust simlpe UI test to UI path changes UI: cursors/cursors.css: add MPL-2 copyright Merge branch 'documentation-sections' # 2022-12-22 Tim Janik 11d3cc2 * documentation-sections: DOC: Makefile.mk: link to and search for ui/cursors/ UI: b/pianoroll.js: add data-f1="#piano-roll" to link F1 to piano roll manual UI: b/shell.vue: popup manual on 'F1', support anchors via data-f1="#anchor" UI: kbd.js: allow event.keyCode filtering DOC: Makefile.mk: include docs from pianoroll and piano-ctrl DOC: ch-editing.md: add brief editing introduction UI: Makefile.mk: extract Markdown sections from JS files into doc/b/*.md UI: xbcomments.js: extract Markdown sections from JavaScript comment blocks Merge branch 'piano-roll-and-shell-grid-layout' # 2022-12-22 Tim Janik 5772625 * piano-roll-and-shell-grid-layout: UI: b/pianoroll.js: document piano-roll use and fix hover handling UI: b/piano-ctrl.js: add convenient tool registration helpers UI: eslintrc.js: allow empty blocks UI: util.js: allow PointerDrag cleanup handler UI: b/pianoroll.js: fix scroll and select notes_canvas tool on hover UI: b/piano-ctrl.js: implement note resize tool UI: b/piano-ctrl.js: implement select, paint, erase as dedicated tools UI: b/pianoroll.js: context menu cleanup UI: b/clipview.vue: let the canvas fill parentElement UI: styles.scss, startup.js: turn HFlex & VFlex into LitElement UI: b/pianoroll.js: use one source for DPR calculations UI: b/pianoroll.js: properly align toolmenu button UI: b/pianoroll.js: fix background color UI: b/pianoroll.js: add pianorollmenu items UI: b/treeselector-item.vue: fix 'event' reference UI: b/knob.js: fix 'event' reference UI: b/editable.vue: fix 'event' reference UI: eslintrc.js: warn if a global 'event' is referenced UI: b/piano-ctrl.js: fix merging of selection changes with note modifications UI: b/pianoroll.js: handle menu hotkeys UI: b/contextmenu.js: fix unmapping in map_kbd_hotkeys() UI: kbd.js: handle document.activeElement == null UI: b/piano-ctrl.js: stop event if a key was handled UI: b/pianoroll.js: grab focus UI: b/piano-ctrl.js: adjust piano_roll access patterns UI: b/pianoroll.js: provide .srect property, repaint upon changes UI: b/pianoroll.js: handle tool menu and hook up piano-ctrl UI: theme.scss: move scrollbar styling here to work inside shadow DOMs UI: startup.js: turn CGrid into a LitElement to work inside shadow DOMs UI: b/pianoroll.js: work around FireFox exception when ctx.font is assigned UI: b/shell.vue: allow notification callbacks on get_note_cache() UI: b/statusbar.vue: use elementsFromPoint() to find Tips inside shadowRoots UI: b/contextmenu.js: support @activate="handler" notifications UI: b/menubar.vue: move comment to work around Vue's template child handling UI: b/knob.js: ignore hscrolls to allow horizontal device panel scrolling UI: b/devicepanel.vue: adjust to b-shell grid layout UI: b/pianoroll.js: fix scrollbar style UI: b/pianoroll.js: add indicator to show the current tick UI: b/shell.vue: use for the basic layout UI: b/pianoroll.js: implement as LitElement UI: b/pianoroll.js: add skeleton UI: b/piano-roll.vue: remove Vue based piano-roll Merge branch 'cursors' # 2022-12-22 Tim Janik 32b1518 * cursors: IMAGES: anklangicons.sh: fixes for svgo 2.8.0 and Inkscape >= 1.0 IMAGES: anklangicons.sh: remove unused cursor commands RAND: hotspots.sh: add simple script to debug hotspot coords in cursors UI: b/piano-roll.vue: remove AnklangCursors.scss references UI: Makefile.mk: remove AnklangCursors.scss copy UI: Makefile.mk: copy cursors/cursors.css and all cursor SVGs UI: little.js: allow runtime postcss imports from cursors/cursors.css UI: cursors/cursors.css: add CSS vars for: cross eraser hresize knife move pen UI: cursors/knife.svg: add 28x28 pixel "knife" cursor UI: cursors/hresize.svg: add 28x28 pixel "horizontal resize" cursor UI: cursors/cross.svg: add 28x28 pixel "cross" cursor UI: cursors/move.svg: add 28x28 pixel "move" cursor UI: cursors/eraser.svg: make cursor 28x28 pixels UI: cursors/pen.svg: make cursor 28x28 pixels UI: cursors/: move eraser.svg and pen.svg here Merge branch 'swesterfeld-blepsynth-adsr-time-fix' # 2022-11-17 Tim Janik 54726cd * swesterfeld-blepsynth-adsr-time-fix: DEVICES: blepsynth: use non-linear mapping for ADSR times ASE: sortnet.hh: update URLs in comments Merge branch 'sprite-knob' # 2022-11-16 Tim Janik 439c3b8 * sprite-knob: MISC: Dockerfile.focal: install librsvg2-bin for rsvg-convert UI: remove unused eknob.svg embedding UI: b/knob.vue: remove Vue based knob implementation UI: b/pro-input.vue: remove unused knob handling UI: b/pro-group.vue: use b-knob for scalar Property editing UI: b/knob.js: rewrite b-knob as LitElement with sprites UI: b/deviceeditor.vue: use Util.extend_property() to cache Property fields UI: Makefile.mk: provide control knob sprite assets Makefile.mk: include images/knobs/Makefile.mk IMAGES: knobs/cknob.svg: add MPL-2.0 license IMAGES: knobs/Makefile.mk: build bi- and unidirectional control knob sprites IMAGES: knobs/mksprite.py: rotate svg knob and add level indicator IMAGES: knobs/cknob.svg: add rotatable control knob UI: util.js: wheel_delta: adjust factors for modern Firefox and Chrome versions UI: startup.js: set CONFIG.dpr_movement for Chrome<=100 and Gecko As of Firefox-106, dpr_movement is needed and for Chrome-107 it is not. UI: util.js: use internal Symbol for request_pointer_lock() state handling UI: util.js: fix value updates of extended properties Catch the right event and normalize the value in JS. UI: util.js: add methods to handle destroy callbacks on objects UI: b/shell.vue: comment fixup UI: b/databubble.vue: hook into App.zmove for all event handling Also, fix stuck bubbles when rehovering the same element. UI: b/app.js: generate zmove events for pointerdown, pointermove, pointerup UI: b/app.js: make sure "mousemove" triggers ZMove updates ASE: processor.cc: keep constant number of characters for % values ASE: processor: send property notifies early, account for inflight values ASE: api.hh: add missing const ASE: crawler: use emit_notify() and avoid emit during ctor ASE: *.cc: use emit_notify() where possible Merge branch 'zoom-ui' # 2022-11-16 Tim Janik 8e65adf * zoom-ui: UI: b/menubar.vue: support Zoom In/Out/Reset for Electron ELECTRON: main.js: export zoom_level() to allow UI zoom adjustments UI: kbd.js: match_key_event: split 'Ctrl++' only once DOC: ch-development.md, ch-intro.md: fix testbit.eu URL ASE: randomhash: fix testbit.eu URL ASE: track.cc: fix MASTER_TRACK flag Merge branch 'swesterfeld-vcf-cutoff-fix' # 2022-11-03 Tim Janik 203c246 * swesterfeld-vcf-cutoff-fix: DEVICES: blepsynth: fix cutoff frequency modulation for filter Fix frequency scaling problems: the freq_in array now passes its frequency to the filter as plain Hz. Merge branch 'time-autostop' # 2022-11-03 Tim Janik 6d531e6 * time-autostop: GITHUB: workflows/testing.yml: add repository and gh-user to IRC notifications GITHUB: workflows/ircbot.py: support -R for initiating repository name GITHUB: workflows/testing.yml: skip IRC bot name GITHUB: workflows/ircbot.py: set "YYBOT" as bot name ASE: main: add autostop handling and implement -t to trigger autostop ASE: project: start_playback(): pass autostop into engine ASE: engine: add autostop handling and delay capture until transport is running ASE: defs.hh: add D64MAX ASE: strings.cc: add string_to_seconds() ASE: formatter.cc: test atomic which is a struct and needs %s UI: b/treeselector-item.vue: use ContextMenu.valid_uri() to check valid uri UI: b/contextmenu.js: always use valid_uri() for uri in boolean contexts Merge branch 'opus-wav-flac' - capture engine output # 2022-10-28 Tim Janik bb7a442 * opus-wav-flac: UI: b/aboutdialog.vue: display FLAC version ASE: api: export get_flac_version() UI: b/aboutdialog.vue: show Opus version Remove unused Vorbis version. ASE: api.hh: export Opus version Remove unused Vorbis and MP3 version export. MISC: Dockerfile.focal: provide libopus MISC: config-checks.mk: provide ogg-1.3.4 and opus-1.3.1 Remvoe Vorbis requirement, which is unused. ASE: main.cc: exit with atquit_run() upon SIGINT ASE: loop: USignalSource::install_sigaction(): install unix signal handler ASE: utils: provide atquit handlers ASE: loop.hh: minimize latency of signal handlers by running at high priority ASE: main: add -o wavfile to the CLI ASE: engine: support engine output capturing into wave files Squashed commits of engine capturing development: ASE: engine: add queue_capture_start() and queue_capture_stop() ASE: engine.cc: stall engine once program is aborted (atquit_triggered) ASE: engine.cc: capture output via wave_writer_create_opus() ASE: engine.cc: capture output via wave_writer_create_wav() ASE: engine.cc: capture output via wave_writer_create_flac() ASE: wave: add wave file writer for WAV, OPUS, FLAC Squashed commits of wave file development: ASE: wave.hh: add WaveWriter interface ASE: wave: add writer for WAV files with support for PCM and FLOAT ASE: wave: implement Opus writer and export Opus version ASE: wave.cc: write extension header for FLOAT format For example SoX(1) complains about float WAV files 'missing extended part of fmt chunk' ASE: wave: add FLAC writer and export FLAC version ASE: wave: install atquit handlers to flush/finalize wave files ASE: main: load projects without '--preload' and support --play-autostart ASE: main.cc: auto-load projects passed on the CLI Merge branch 'loft' # 2022-10-26 Tim Janik 84ff17e * loft: ASE: main.cc: configure Loft and concurrently preallocate pages on demand ASE: tests/benchmarks.cc: benchmark loft_calloc() ASE: loft: add Loft - a lock- and obstruction-free thread memory allocator Squashed commits of Loft development: ASE: loft: implement mmap() based bump allocator ASE: loft: implement MpmcStack based bucket allocator ASE: loft: add loft_alloc() ASE: loft: add loft_make_unique() and LoftFree::operator()() ASE: loft: add loft_calloc() ASE: loft: add multithreaded allocator stress test ASE: loft: use FastRng for testing ASE: loft: add loft_bucket_size() ASE: loft: add loft_get_stats(), loft_stats_string() ASE: loft: add loft_get_config(), loft_set_config(), config flags ASE: loft: add loft_grow_preallocate(), loft_set_notifier() ASE: loft: issue a warning if allocations via syscall happen inline ASE: atomics.hh: add MpmcStack.peek ASE: atomics.cc: fix signedness ASE: atomics.cc: add test for MpmcStack<> ASE: atomics.hh: add MpmcStack<>, a lock-free stack for non-reclaimable memory Merge branch 'mwc256-prng' # 2022-10-26 Tim Janik 153071d * mwc256-prng: ASE: randomhash.cc: add FastRng jump ahead tests ASE: main.cc: add --rand64 to generate 64bit FastRng numbers on stdout This can be used to test the PRNG quality with for example PractRand: AnklangSynthEngine --rand64 | RNG_test stdin64 -multithreaded ASE: randomhash: add FastRng, a multiply-with-carry PRNG with period 2^255 ASE: tests/benchmarks.cc: use 3k as max chunk size to avoid memset benchmarking ASE: sortnet.cc: speed up test by reducing the checked 10-element permutations Merge branch 'update-sanitizers' # 2022-10-26 Tim Janik a252fc9 * update-sanitizers: JSONIPC: jsonipc.hh: fix atexit memory leak ASE: formatter.hh: properly handle nullptr_t for %p ASE: nativedevice.cc: fix signedness ASE: serialize.cc: fix unit test memory leak UI: Makefile.mk: ignore asan when running AnklangSynthEngine DOC: Makefile.mk: ignore asan when running AnklangSynthEngine MISC: config-uname.mk: update sanitizer linkage GITHUB: workflows/testing.yml: upgrade actions/checkout and actions/cache to v3 MISC: Dockerfile.focal: comment fixups GITHUB: workflows/testing.yml: allow TeX installation during CI builds Merge branch 'pdf-artifacts' # 2022-10-25 Tim Janik e0272bd * pdf-artifacts: GITHUB: workflows/testing.yml: build PDF and upload 'docs' build artifact MISC: mkassets.sh: use 'pdf' shorthand in build rule DOC: Makefile.mk: require explicit 'pdf' rule to build PDF manuals via TeX By default, only the HTML manuals are built and installed (without TeX dependency). The PDF variants can be built explicitely with `make pdf`. The PDF manuals are installed if they are present at install time. GITHUB: workflows/testing.yml: enable CI for 'next' and PRs Merge branch 'litelement-menu' # 2022-10-21 Tim Janik 8032e64 * litelement-menu: X11TEST: play-notes.json: update UI test UI: b/*: assign aria-label where appropriate UI: b/*.vue: add html id to context menus UI: b/menuitem.js: always strip slot_label UI: util.js: remove unused dropdown() UI: b/color-picker.vue: fix menu and support click-drag selection UI: b/contextmenu.js: expose dialog via part=dialog to CSS rules UI: b/trackview.vue: popup context menu at cursor UI: b/piano-roll.vue: fix popup position UI: b/piano-ctrl.js: avoid stealing unhandled key presses UI: b/dialog.vue: close on regular Escape presses, avoid stealing Escape UI: b/contextmenu.js: stop handled dialog Escape key from bubbling further UI: util.js: allow shields without Escape key stealing UI: b/choice.vue: fix menu and key handling to work like all menus UI: b/contextmenu.js: provide .open read-only property UI: b/menuitem.js: remove unused code UI: b/contextmenu.js: fix data-contextmenu styling UI: b/fed-picklist.vue: remove unused component UI: b/devicepanel.vue: fix menu origin and insertion pos ASE: nativedevice.cc: fix device insertion order UI: b/contextmenu.js: close menu on backdrop clicks UI: util.js: dialog_backdrop_mousedown(): close dialogs on backdrop clicks UI: b/menubar.vue: use b-contextmenu .activate and .isactive UI: b/piano-roll.vue: use b-contextmenu .activate and .isactive UI: b/deviceeditor.vue: use b-contextmenu .activate and .isactive UI: b/treeselector-item.vue: use frame stamp to ignore duplicate clicks UI: b/menubar.vue: use frame stamp to ignore duplicate clicks UI: b/contextmenu.js: make FF auto-focus an element on showModal(), like Chrome UI: b/contextmenu.js: use frame stamp to ignore duplicate clicks and popup()s Note that keyboard presses, mouse clicks, drag selections and event bubbling can all cause menu item clicks and contextmenu activation. In order to deduplicate multiple events that arise from the same user interaction, *one* popup request and *one* click activation is processed per animation frame. UI: util.js: add frame_stamp(), retrieve a timestamp unique per animation frame UI: kbd.js: move_focus(): fallback to move focus inside body UI: kbd.js: list_focusables(): take [open]:modal in shadow DOMs into account UI: kbd.js: list_focusables(): take [open]:modal dialogs into account UI: b/treeselector-item.vue: fix single-click menu activation and styling UI: b/trackview.vue: fix menu activation UI: b/piano-roll.vue: fix menu activation, allow click-drag menu selection UI: b/devicepanel.vue: fix menu activation UI: b/menubar.vue: allow click-drag menu selection UI: b/menuitem.js: use .activate and .isactive callbacks for item activation UI: b/contextmenu.js: use .activate and .isactive callbacks for menu activation ASE: project.cc: fix some missing notify::dirty emissions UI: b/menubar.vue: adapt context menu clicks, popup menus early (mousedown) UI: b/menuitem.js: adjust for b-contextmenu as LitElement UI: kbd.js: fix keydown_move_focus() for shadow DOMs UI: util.js: add prevent_event() UI: b/contextmenu.js: port b-contextmenu to LitElement UI: b/menuitem.js: use 'b-menurow' CSS selector UI: b/menurow.js: port b-menurow to LitElement UI: b/menuitem.js: pass b-menurow turn / noturn attributes to button UI: util.js: add closest() for shadow DOMs UI: b/trackview.vue: always use the b-icon ic="" attribute UI: b/menuitem.js: export KeymapEntry as this.keymap_entry UI: b/contextmenu.vue: collect and register KeymapEntry props from descendants UI: kbd.js: support add+remove of global keymaps UI: b/menuitem.js: port b-menuitem to LitElement UI: util.js: add lrstrip() and collect_text_content() UI: kbd.js: make activeElement and list_focusables shadow DOM aware This allows transparent handling of custom focus navigation and hotkey activation in shadow DOMs. UI: util.js: extend has_ancestor() to support open shadow DOMs UI: b/contextmenu.vue: support click, keymap, b-contextmenu-menudata on Element UI: b/icon.js: port b-icon from vue to LitElement UI: util.js: add adopt_style() and add_style_sheet() UI: b/*.vue: always use the b-icon ic="" attribute GITHUB: workflows/testing.yml: update github actions Merge branch 'package-updates' # 2022-10-12 Tim Janik 84e7c32 * package-updates: ASE: clip.cc: fix macro clash MISC: package.json.in: update various npm packages Makefile.mk: clean x11test/ output dir Merge branch 'activate+deactivate' # 2022-10-12 Tim Janik 4e5ac8b * activate+deactivate: ASE: object.cc: properly check Connection ptr before use ASE: track.cc: remove over eager assertion ASE: project.cc: start_playback(): switch current engine project on demand Makefile.mk: allow make default to configure INSN ASE: project: move activate/deactive to Project ASE: engine.cc: fix loss of "change:prefs" notification connection ASE: engine: add API to set up exclusive Engine + Project relation ASE: track: require Project as parent of track ASE: gadget: add flags field to be used for gadgets and derived types ASE: clapplugin: rename clap_deactivate() and variants ASE: api.hh: use GadgetImpl as parent pointer ASE: api.hh: derive Track from Device ASE: api.hh: derive Project from Device ASE: device: rename and move Device::extract_info() here ASE: clapdevice.cc: fix call to inherited methods ASE: nativedevice: provide remove_all_devices(), implement activation ASE: api.hh: Device: provide _activate() _deactivate() is_active() ASE: nativedevice.cc: clarify TODO ASE: split DeviceImpl into Device and NativeDevice ASE: engine: turn the engine into a global singleton ASE: engine: simnply wrap AudioEngineImpl calls into AudioEngine methods ASE: engine: rename AudioEngineImpl ASE: main: export main_loop_wakeup() Merge branch 'ci-job-split' # 2022-10-11 Tim Janik bd540be * ci-job-split: GITHUB: workflows/testing.yml: split jobs for Ubuntu, Arch, IRC DOC: copyright.ini: assume MPL-2 for x11test/*.json Merge branch 'x11test' # 2022-10-10 Tim Janik 662fd7a * x11test: X11TEST: play1note.json: add recording to play a single MIDI note GITHUB: workflows/testing.yml: run x11test-v on Ubuntu build and upload result Makefile.mk: docuemnt x11test and x11test-v Makefile.mk: add x11test, x11test-v to run (headless) end-to-end tests X11TEST: replay.sh: play Anklang DevTools recording in Electron via Puppetteer X11TEST: ereplay.cjs: use Electron and Puppetteer to replay DevTools recording X11TEST: x11rec.sh: run and record a command in a virtual or nested X11 session MISC: package.json.in: add puppeteer packages MISC: Dockerfile.focal: provide xvfb 9wm ffmpeg Merge branch 'print-class-tree' # 2022-09-28 Tim Janik 8bde98a * print-class-tree: DOC: Makefile.mk: anklang-internals: add "Ase Class Inheritance Tree" ASE: main: add --class-tree to print the class tree JSONIPC: jsonipc.hh: add ClassWalker ASE: internal.hh: add assert_unreached() ASE: engine: minor fixes Merge branch 'fix-vue-3.2.28' # 2022-09-28 Tim Janik 6628472 * fix-vue-3.2.28: UI: b/shell.vue: work around vue-3.2.38 breaking $forceUpdate() before mount() Avoid the Shell calling $forceUpdate() from created(). That used to work up until Vue-3.2.27, but with .28 and .29 results in: vue.js:1843 Uncaught (in promise) TypeError: Cannot read properties of null (reading 'id') at queueJob (vue.js:1843:17) at i.f.i.f (vue.js:4591:44) Aparently $forceUpdate() calls are now broken before mount(). UI: Makefile.mk: fix wildcard for lit.js to not catch little.js Merge branch 'fix-gc' - plugs a GC race condition # 2022-09-27 Tim Janik 6caa570 * fix-gc: JSONIPC: jsonipc.hh: InstanceMap: remove unused swap and move_into ASE: jsonapi.cc: fix GC bookkeeping with mark_unused() and purge_unused() JSONIPC: jsonipc.hh: InstanceMap: add mark_unused() and purge_unused() JSONIPC: jsonipc.hh: add CallbackInfo::classname() to improve error messages Merge branch 'prefault-pages' # 2022-09-27 Tim Janik 9cf276d * prefault-pages: ASE: main.cc: prefault heap and stack pages ASE: main.cc: tune malloc via mallopt to reduce page fault probability Merge branch 'build-improvements' # 2022-09-27 Tim Janik 931a674 * build-improvements: MISC: config-uname.mk: enable link time optimization via -flto for MODE=production MISC: Makefile.mk: clean mkdeb/ if left over MISC: Dockerfile.focal: install libgtk-3-dev which also provides libdbus-1-dev Merge branch 'low-latency-sched' # 2022-09-14 Tim Janik 5184d18 * low-latency-sched: ASE: engine.cc: request low latency scheduling for the synthesis engine ASE: platform: add sched_{set|get|fast}_priority() ASE: dbus: add DBus methods rtkit_make_high_priority + rtkit_get_min_nice_level MISC: mkdeb.sh: postinst: add cap_sys_nice to AnklangSynthEngine MISC: config-checks.mk: add dbus-1 to ase dependencies ASE: utils.cc: allow mixed case debug keys ASE: Makefile.mk: use ASEDEPS_CFLAGS and ASEDEPS_LIBS MISC: config-checks.mk: provide just ASEDEPS_CFLAGS and ASEDEPS_LIBS for ase/ Merge branch 'remote-gc' # 2022-09-14 Tim Janik f59890b * remote-gc: UI: startup.js: renew_gc() on object finalization, report_gc() when requested ASE: jsonapi.cc: support renew_gc() and report_gc() to start new GC cycle The basic idea behind remote GB by the UI requesting renew_gc() and the Jsonapi server swapping wrapper tables in response is described here: https://testbit.eu/2014/rapicorn-remote-reference-counting ASE: jsonapi.cc: test conscise erase() loop over std::map<> Checks the erase() loop used by Jsonipc over std::map<>, in particular ++end must be avoided for empty maps. JSONIPC: jsonipc.hh: support clear/swap/size/move_into for instance ptr map MISC: config-uname.mk: use -Og for debugging which improves debug info Using -Og is a better choice than -O0, because some compiler passes that collect debug information are disabled at -O0. (gcc docs) UI: startup.js: properly namespace Jsonapi/Trigger ASE: jsonapi.cc: properly namespace Jsonapi/Trigger DOC: ch-development.md: properly namespace Jsonapi/Trigger DOC: ch-development.md: minor update UI: startup.js: request Ase.Server via Jsonapi/initialize after handshake ASE: jsonapi.cc: provide Ase.Server object as Jsonapi/initialize reply JSONIPC: jsonipc.hh: reply to Jsonipc/handshake with protocol version 1 JSONIPC: jsonipc.js: require Jsonipc/handshake with protocol version 1 UI: startup.js: maintain $id GC list via Jsonipc.finalization_registration JSONIPC: jsonipc.js: call Jsonipc.finalization_registration hook from ctors UI: GNUmakefile: allow subdir builds Merge branch 'automatic-backup' # 2022-08-24 Tim Janik 72174fb * automatic-backup: ASE: project.cc: automatically backup existing project files ASE: path: add glob() ASE: path: add rename() ASE: utils: add now_strftime() Merge branch 'clap-file-reference' # 2022-08-24 Tim Janik 031c81f * clap-file-reference: ASE: clapplugin: clean up load_state() and save_state() ASE: *.cc: use operator<< where needed for serialization ASE: serialize.hh: add operator>> and operator<< to support pure const serialization ASE: serialize.hh: operator&: catch serialization into const at compile time ASE: project.cc: merge asset_hashes ASE: project.cc: use Error::NO_PROJECT_DIR if anklang.project is missing ASE: api.hh: add Error::NO_PROJECT_DIR ASE: clapplugin: implement file collection ASE: clapplugin.cc: save_state: request plugin_file_reference->save_resources() ASE: clapplugin.cc: add CLAP_EXT_FILE_REFERENCE skeleton ASE: serialize.cc: use TelemetryField for simple serialization tests ASE: serialize: support external serialize(T&,WritNode&) impls via ADL ASE: serialize.cc: test tuple serialization ASE: project.cc: loader_resolve: lookup and resolve files from project dir ASE: project.cc: serialize file hashes as tuple array ASE: serialize.hh: serialize tuple<...> types UI: b/menubar.vue: use project.saved_filename() as "Save" location ASE: api.hh: add Project.saved_filename() ASE: Makefile.mk: upgrade to clap-1.1.1.tar.gz UI: b/app.js: use save_project() ASE: api.hh: rename Project.save_project() ASE: project.cc: canonicalize project file name when saving ASE: project: properly implement writer_collect() ASE: project: add API to collect external files ASE: strings: add strings_version_sort() ASE: path: add dircontains() to check dir hierarchy and compute relative path ASE: path: add copy_file(), use FICLONE ioctl to create CoW clone if possible Currently, FICLONE is supported under Linux for XFS and BTRFS. Use `filefrag -v` to detext or debug shared file extents. ASE: path: add file_size(), gracefully handle errors ASE: clapplugin: derive ClapPluginHandle from GadgetImpl ASE: api.hh: print user notes and allow `rest` argument ASE: api.hh: introduce Gadget._project() ASE: strings: add string_to_hex() ASE: main.cc: add --blake3 to test Blake3 hashing ASE: compress: add blake3_hash_file() and blake3_hash_string() ASE: storage: add stream_reader_from_file() ASE: Makefile.mk: compile BLAKE3 with SSE and AVX variants ASE: Makefile.mk: provide blake3.h from BLAKE3-1.3.1.tar.gz ASE: Makefile.mk: use SOURCE2_O MISC: config-uname.mk: add $(call SOURCE2_O) to create object extensions ASE: clapplugin.cc: fix warnings MISC: config-checks.mk: show sha256sum command used failing downloads Merge branch 'sse+fma-synth-engine' - build releases with SSE + FMA support # 2022-08-12 Tim Janik 5f77129 * sse+fma-synth-engine: ASE: Makefile.mk: build FMA variant iff MODE=production INSN=sse MISC: mkassets.sh: build releases with MODE=production INSN=sse MISC: Makefile.mk: remove INSN build remnants Merge branch 'fix-scripts' # 2022-08-12 Tim Janik a169887 * fix-scripts: MISC: mkassets.sh: handle unbound $V MISC: mkdeb.sh: handle unbound $V MISC: mkAppImage.sh: handle unbound $V MISC: dbuild.sh: handle unbound $V Merge branch 'dockerize-asset-builds' # 2022-08-11 Tim Janik 2fd2f5f * dockerize-asset-builds: MISC: Makefile.mk: adjust release-message MISC: Makefile.mk: export $V for build scripts MISC: Makefile.mk: simplify builds, merge upload-nightly and upload-release Makefile.mk: fix ls-tree.lst generation in tarballs MISC: mkassets.sh: extract release info, make AppImage MISC: mkAppImage.sh: move AppImage build logic here MISC: mkassets.sh: build binary packages from tarball MISC: mkdeb.sh: pass $V to make MISC: dbuild.sh: pass $V into docker env MISC: dbuild.sh: remove unused .dbuild/ handling MISC: Dockerfile.focal: reduce layers MISC: Dockerfile.focal: always become 'builder' user, prepare /ootbuild/ Merge branch 'arch-ci' # 2022-08-11 Tim Janik 76c6214 * arch-ci: .gitignore: add ignores GITHUB: workflows/testing.yml: cleanup after each platform build GITHUB: workflows/testing.yml: build and test on arch, cache arch docker image MISC: Dockerfile.arch: setup archlinux dependencies for building Anklang Use upstream CastXML, the AUR version seems outdated and broken. Merge branch 'docker-caching' # 2022-08-11 Tim Janik 433f9bd * docker-caching: MISC: dbuild.sh: skip TeX during docker image build with -T MISC: Dockerfile.focal: cleanup early to shrink docker image, possibly skip TeX MISC: dbuild.sh: use misc/Dockerfile.focal by default, remove -d, change -f MISC: Dockerfile.focal: rename from Dockerfile-apt, use FROM ubuntu:20.04 ASE: Makefile.mk: add missing dependencies for includes ASE: sortnet.hh: include for std::less Makefile.mk: use `ctags` executable GITHUB: workflows/testing.yml: fix cache-hit detection GITHUB: workflows/testing.yml: skip docker caching on cache miss GITHUB: workflows/testing.yml: invalidate cache if misc/dbuild.sh changes GITHUB: workflows/testing.yml: remove docker image test MISC: get rid of --no-tex and $NO_TEX (now unused) GITHUB: workflows/testing.yml: remove '--no-tex' Avoiding Tex installation was only needed without docker image caching. MISC: dbuild.sh: fix SIGPIPE when searching docker image for INITIALIZE MISC: dbuild.sh: debug wrong INITIALIZE setting MISC: dbuild.sh: use 'ubuntu:20.04' as base instead of 'ubuntu:focal' Both are tags for the same image, but the former is already present on Github's stock system. GITHUB: workflows/testing.yml: fix grep exit status GITHUB: workflows/testing.yml: invalidate cache if misc/Dockerfile-apt changes GITHUB: workflows/testing.yml: stop forcing a docker build step GITHUB: workflows/testing.yml: upgrade to actions/checkout@v2.4.2 GITHUB: workflows/testing.yml: cache docker image via github cache GITHUB: workflows/testing.yml: find version inside docker GITHUB: workflows/testing.yml: always use the same build arg for docker MISC: version.sh: ignore missing tags in Format:%(describe) workaround Merge branch 'dist-tarball' - create distribution tarballs # 2022-08-06 Tim Janik 50d9c06 Adjust versioning and build rules to support proper distribution tarballs that will build without .git/ history. * dist-tarball: MISC: Dockerfile-apt: provide zstd MISC: Makefile.mk: re-enable nightly asset builds Makefile.mk: work around git 2.25.1 not handling Format:%(describe:match) Ubuntu 20.04 still runs git 2.25.1. MISC: version.sh: work around git 2.25.1 not handling Format:%(describe:match) Ubuntu 20.04 still runs git 2.25.1. MISC: Dockerfile-apt: add universal-ctags MISC: dbuild.sh: recognize --help Makefile.mk: use wildcard for toplevel CLEANFILES MISC: Makefile.mk: list Nightly changes MISC: Makefile.mk: fix upload-release MISC: Makefile.mk: use TARBALL version for build-assets MISC: Makefile.mk: minor fixups MISC: Makefile.mk: only check-copyright if .git/ exists MISC: Makefile.mk: remove versioned ChangeLog generation Makefile.mk: ChangeLog: use slightly longer hashes Makefile.mk: fix ChangeLog range Makefile.mk: use ls-tree.lst to generate TAGS MISC: Makefile.mk: use ls-tree.lst DOC: Makefile.mk: use ls-tree.lst Makefile.mk: create and distribute ls-tree.lst MISC: config-utils.mk: provide only $(HAVE_GIT) which is true if .git/ exists Using the old WITHGIT or WITHOUTGIT did not really work. MISC: Makefile.mk: avoid -j, rely on MAKEFLAGS for parallel submakes MISC: Makefile.mk: build-nightly: create and build dist tarball MISC: dbuild.sh: use .dlcache subdir for dockerized ccache MISC: Makefile.mk: build-assets: build from sources in $(TARBALL) MISC: Makefile.mk: record and use artifacts in build-assets MISC: Makefile.mk: add 'build-version' rule MISC: Makefile.mk: call version.sh --make-nightly for nightly builds MISC: Makefile.mk: check nightly versions MISC: Makefile.mk: add 'versioned-manuals' rule DOC: Makefile.mk: use packaged doc/copyright if Git is missing GITHUB: workflows/testing.yml: build with --no-tex and SKIP_LATEX=true Only the PDF manuals need Tex, skipping LaTex installation significantly speeds up the CI builds. MISC: dbuild.sh: add --no-tex (replaces --tex) MISC: Dockerfile-apt: default to building with Tex DOC: Makefile.mk: build PDF manuals, unless SKIP_LATEX=true DOC: Makefile.mk: skip misc/mkcopyright.py if .git is not present MISC: mkdeb.sh: use `misc/version.sh --commit-hash` instead of git MISC: version.sh: add --commit-hash MISC: version.sh: remove extra version printout for --make-nightly MISC: version.sh: add --help and --make-nightly MISC: version.sh: use the same COMMITINFO for archives and .git repos Makefile.mk: dist: allow packaging with NEWS.md worktree changes Makefile.mk: simplify make dist Makefile.mk: add hard dependency on ctags-universal Builds from Git need ctags-universal to reliably generate TAGS for make dist. Makefile.mk: provide $(builddir) and $>/ early on Makefile.mk: check misc/version.sh execution ASE: Makefile.mk: add missing minizip/mz_zip.h dependency DOC: copyright.ini: list freeverb sources under Public Domain dedication DEVICES: freeverb/freeverb.cc: license under MPL-2.0 Merge branch 'freeverb' # 2022-07-31 Tim Janik 554794d * freeverb: DEVICES: freeverb/freeverb.cc: turn into a working AudioProcessor for Ase DEVICES: freeverb/freeverb.cc: make query_info() const, i.e. MT-Safe DEVICES: freeverb/freeverb.cc: move all code completely into Anon namespace DEVICES: freeverb/freeverb.cc: use explicit add_param() IDs and fix arguments DEVICES: freeverb: implement STK and VLC damping Avoid reinforcing feedback loop in the original damping code, by providing VLC and STK damping modes. The latter is likely closest to the original intention so it is now the default. This also reorders some parameters and removes the original freezing mode, that does not really make sense for Processors. DEVICES: freeverb/freeverb.cc: add Freeverb Processor DEVICES: freeverb/revmodel.cpp: fix missing `int i` decls DEVICES: freeverb/Freeverb*: remove unused vst files DEVICES: freeverb/: fix up whitespace and \n without \r everywhere DEVICES: freeverb/: Freeverb - free public domain reverb SOURCE CODE Freeverb - Free, studio-quality reverb SOURCE CODE in the public domain Written by Jezar at Dreampoint - http://www.dreampoint.co.uk DEVICES: freeverb/Makefile.mk: add source file to devices/4ase.ccfiles DEVICES: freeverb/GNUmakefile: allow subdir builds DEVICES: Makefile.mk: add dependencies, clean rule, etc for devices/ sources DEVICES: blepsynth/Makefile.mk: simply add source files to devices/4ase.ccfiles UI: b/contextmenu.vue: allow 0 as valid menuitem.uri value UI: b/cliplist.vue: only call non-null Shell.piano_current_tick() README.md: fix manual link Merge branch 'jack-driver' # 2022-07-29 Tim Janik cc1cb08 * jack-driver: DOC: ch-install.md: merge jack howto into driver-setup section DOC: ch-install.md: add chapter about download and installation ASE: main.cc: print the real executable_name() for --version and usage ASE: driver.cc: load jackdriver.so ASE: Makefile.mk: optionally build jackdriver.so MISC: config-checks.mk: check if jack.pc >= 0.125.0 is present Jack 0.125.0 ships with Ubuntu-20.04. ASE: driver-jack.cc: turn into a working PCM driver for Ase ASE: driver-jack.cc: adapto to Ase namespace ASE: merge original Jack driver by Stefan Westerfeld Initial version of Jack driver using the new driver API Add minimal jack howto Block SIGPIPE to avoid crashes when jackd dies Driver: return read and write latency for a pcm driver separately For instance for synchronizing the play position pointer ui with the audio buffering, you want to know how much write latency you have, but don't care about the amount of read latency. Add list with possible improvements from PR 31 https://github.com/tim-janik/beast/pull/31 Add some minor fixes as requested in review ASE: engine.cc: consistently calculate buffer size for multiple channels ASE: datautils.hh: add fast_copy() for floats and ints ASE: driver-alsa.cc: adjust debug messages, remove unused variable ASE: main.cc: require command line options to enable JSIPC logging Merge branch 'version-fixes' # 2022-07-29 Tim Janik 61e8d05 * version-fixes: ASE: remove unneeded version postfix from AnklangSynthEngine MISC: version.sh: fix development postfix for shallow versions MISC: version.sh: fix build id with development postfix MISC: Makefile.mk, version.sh: fix release tag missing 'v'-prefix ">Merge branch 'b-propinput-litcomponent' # 2023-08-23 Tim Janik a7ab348 * b-propinput-litcomponent: UI: b/propinput.js: port to LitComponent UI: b/choiceinput.js: support label attribute as choice tip UI: little.js: add LitComponent.request_update_() UI: util.js: add addnotify_() and delnotify_() to extended properties UI: b/pro-group.vue: use UI: b/knob.js: simplify MISC: package.json.in: extend nodemon delay to reduce conflicts with lint rules Sometimes when ui/lint is triggered, files are written and make serve also runs rebuild rules due to nodemon. Merge branch 'fix-raw-tex' # 2023-08-19 Tim Janik 64882dc * fix-raw-tex: UI: xbcomments.js: properly quote special characters in docs DOC: Makefile.mk: do not parse source comments as raw_tex Merge branch 'anklang-internals+jsdocs' # 2023-08-19 Tim Janik b554e80 * anklang-internals+jsdocs: UI: b/basics.js: small docu update DOC: Makefile.mk: integrate JS component docs into internal manual DOC: jsdoc2md.js: skip extra subsection indentation UI: Makefile.mk: optimize *.jscss build, fix anklang-internals.html dependency UI: b/*.js: use three hashes '###' to indent docu subsections Merge branch 'swesterfeld-piano-roll-move', closes #16 # 2023-08-03 Tim Janik ec26905 * swesterfeld-piano-roll-move: UI: b/piano-ctrl.js: support moving/copying notes with the mouse UI: b/cliplist.js: restore user manual docs Merge branch 'jsdoc-elements' # 2023-08-03 Tim Janik 9d0c8de * jsdoc-elements: DOC: poxystyle.css: fix dark theme colors

ChucK is a programming language for real-time sound synthesis and music creation

Updated: 22 Aug, 2023

chuck-1.5.1.1 release

PipeWire is a server and user space API to deal with multimedia pipelines.

Updated: 22 Aug, 2023

0.3.78

SVGuitar is a JavaScript (TypeScript) SVG guitar chord renderer library

Updated: 21 Aug, 2023

2.2.1 (2023-08-21)

Bug Fixes

  • upgrade svgdom from 0.1.10 to 0.1.11 (931f81a)

Anklang, a digital audio synthesis application for live creation and composition

Updated: 19 Aug, 2023

Anklang 0.1.0.nightly2308191408

Development version - may contain bugs or compatibility issues.

UI: b/*.js: reformat documentation to use @class and @description commands See also: https://jsdoc.app/tags-description.html DOC: poxy.sh: parallelize JsDoc processing DOC: poxy.sh: fix exit code and compact markdown DOC: poxy.sh: add ui/ch-*.md files to poxy docs DOC: jsdoc2md.js: allow descriptions of virtual classes as docu sections DOC: copyright.ini: assign MPL-2 to ch-*.md documentation files DOC: Makefile.mk: integrate ui/ch-component.md Makefile.mk: add html/ to CLEANDIRS Makefile.mk: clean poxy/ and assets/ DOC: ch-development.md: explicitely describe ASE UI: ch-component.md: describe lit components UI: ch-component.md: rename from ui/b/ch-vue.md README.md: add Star History Chart Merge branch 'toggle-as-lit' # 2023-08-03 Tim Janik 0eba7de * toggle-as-lit: UI: b/pro-input.vue: handle @valuechange on b-toggle UI: b/toggle.js: port to LitComponent Merge branch 'x11test-delay' # 2023-08-02 Tim Janik 8712b43 * x11test-delay: X11TEST: ereplay.cjs: add delay to mitigate a UI-reload race on project changes X11TEST: replay.sh: simplify AnklangSynthEngine executable check Merge branch 'poxy-on-jammy' # 2023-08-02 Tim Janik 3be13e1 * poxy-on-jammy: GITHUB: workflows/testing.yml: run poxy on ubuntu:22.04 MISC: docker_run: fix interactive invocations MISC: Dockerfile.jammy: setup development tools for ubuntu:22.04 builds Merge branch 'make-dist-and-assets' # 2023-07-31 Tim Janik 4694aa8 * make-dist-and-assets: GITHUB: workflows/release.yml: add Ping-IRC job GITHUB: workflows/release.yml: use misc/docker_run GITHUB: workflows/release.yml: add action to build & create releases from tags Makefile.mk: dist: assign release version to misc/version.sh:BAKED_DESCRIBE MISC: version.sh: prepare BAKED_DESCRIBE variable to define baked in version MISC: version.sh: support lightweight release tags via exact match UI: Makefile.mk: fix unintentional tscheck remakes DOC: Makefile.mk: add doc/ch-releasing.md to internal manual ASE: Makefile.mk: rebuild ase/buildversion*.cc if GITCOMMITDEPS changes Makefile.mk: rebuild package.json if GITCOMMITDEPS changes MISC: config-utils.mk: take tags and packed-refs into account for GITCOMMITDEPS DOC: ch-releasing.md: elaborate on releases and assets DOC: ch-releasing.md: start describing versioning and the release process MISC: mknews.sh: add development version disclaimer MISC: Makefile.mk: remove partial release build rules MISC: mkassets.sh: simplify to just make dist and trigger release asset builds MISC: mkAppImage.sh: build AppImage in assets/ MISC: mkAppImage.sh: use tools from appimagetools/ dir MISC: Makefile.mk: cache downloads of appimage tools Makefile.mk: make dist: also generate assets/ChangeLog MISC: mkdeb.sh: create debian package in assets/ DOC: Makefile.mk: support building assets/pdf MISC: Makefile.mk: avoid depending on appimage-runtime-zstd for normal builds UI: tsconfig.json: remove exclude section Makefile.mk: grep-reminders: only inspect existing files Makefile.mk: add recent commits to NEWS.md Makefile.mk: build dist tarball in assets/ with high compression ASE: main.cc: for --version, show short version and build id MISC: config-checks.mk: use version_short ELECTRON: Makefile.mk: use version_short ASE: Makefile.mk: use version_short Makefile.mk: extract version_hash, use version_short for brief version identifiers * Remove version_m.m.m use version_short instead * Remove version_buildid, that is actually version_short + version_hash MISC: Makefile.mk: remove unused release-news MISC: mknews.sh: generate most recent section of NEWS.md MISC: mkdeb.sh: parse hash from misc/version.sh MISC: version.sh: reduce logic to produce baked/git/fallback version/hash/date Merge branch 'docker_build_run_clean' # 2023-07-31 Tim Janik acafef2 * docker_build_run_clean: GITHUB: workflows/testing.yml: remove duplicate chown invokation GITHUB: workflows/testing.yml: use misc/docker_build, docker_run, docker_clean MISC: docker_clean: cleanup permissions and CI image tag MISC: docker_run: run in a CI image built by docker_build MISC: docker_build: build a Dockerfile CI image with ghcr.io cache support UI: Makefile.mk: make sure all JS files are built before running tscheck Merge branch 'swesterfeld-piano-roll-note-length', closes #15 # 2023-07-27 Tim Janik d115723 * swesterfeld-piano-roll-note-length: UI: b/piano-ctrl.js: cleanup note_duration_delta at the end of a drag UI: b/piano-ctrl.js: support resizing multiple notes in a selection Merge branch 'simple-vue-ports' # 2023-07-27 Tim Janik 1c13e75 * simple-vue-ports: UI: Makefile.mk: adapt make install wildcards UI: b/statusbar.js: port to LitComponent UI: b/databubble.js: port to native HTML component UI: b/partthumb.vue: retire partthumb which is superceded by clipview UI: b/hscrollbar.vue: retire hscrollbar code until we really need one UI: b/color-picker.vue: retire color picker code until we really need one Merge branch 'global-css-rename' # 2023-07-27 Tim Janik c402d5e * global-css-rename: UI: index.html: load global.css UI: Makefile.mk: generate global.css UI: b/shell.vue: fix comment UI: global.scss: rename (from globals.scss) b/c it now contains global CSS Merge branch 'globalscss-icon-fonts' # 2023-07-27 Tim Janik 7a7dd7e * globalscss-icon-fonts: UI: b/app.js: add comment for spinner testing UI: index.html: adjust font resource paths UI: globals.scss: import all icon SCSS defs UI: dom.js: properly quote font names ASE: websocket.cc: use CACHE_AUTO since we do not handle conditional requests UI: b/menuseparator.js: fix customElements extends specification UI: b/icon.js: leave icon font loading to globals.scss, assert font presence UI: b/shell.vue: spinner.scss is already imported by globals.scss UI: Makefile.mk: move fonts into ui/ and merge globals.scss dependencies UI: globals.scss: rename normalize.scss for merging import UI: postcss.js: keep .css imports, include all others UI: b/icon.js: assert "Material Icons" font_family instead of loading material-icons.css UI: globals.scss: directly include material-icons.css UI: Makefile.mk: prepare ui/material-icons.css for globals.css UI: dom.js: add font_family_loaded() UI: dom.js: add file for DOM utilities Merge branch 'csshash-2fix-fouc' # 2023-07-27 Tim Janik 0b1e7e7 * csshash-2fix-fouc: UI: index.html: mark globals.css as data-4litcomponent UI: little.js: clone stylesheet links marked data-4litcomponent into shadowRoot UI: index.html: reload vue-styles.css and globals.css once the CSSHASH changes UI: Makefile.mk: support @--CSSHASH--@ insertions fro index.html ASE: websocket.cc: send "forever" Cache-Control with text/css to reduce FOUC Merge branch 'globalscss-4-litcomponents' # 2023-07-27 Tim Janik 709f4e9 * globalscss-4-litcomponents: UI: Makefile.mk: run stylelint on ui/globals.css UI: b/positionview.js: add CSS to globals.css, avoid shadowRoot UI: b/playcontrols.js: add CSS to globals.css, avoid shadowRoot UI: b/pianoroll.js: add CSS to globals.css, avoid shadowRoot UI: b/partlist.js: add CSS to globals.css, avoid shadowRoot UI: globals.scss: only style button and push-button for LightDOM UI: b/objecteditor.js: add CSS to globals.css, avoid shadowRoot UI: b/switchinput.js: add CSS to globals.css, avoid shadowRoot UI: b/numberinput.js: add CSS to globals.css, avoid shadowRoot UI: b/textinput.js: add CSS to globals.css, avoid shadowRoot UI: b/more.js: add CSS to globals.css, avoid shadowRoot UI: b/tracklist.js: add CSS to globals.css, avoid shadowRoot UI: b/trackview.js: add CSS to globals.css, avoid shadowRoot UI: b/menubar.js: fix b-menuseparator UI: b/trackview.js: fix b-menuseparator UI: b/menutitle.js: add CSS to globals.css UI: b/menuseparator.js: make b-menuseparator a simple HTMLHRElement UI: b/menurow.js: add CSS to globals.css, avoid shadowRoot UI: b/menuitem.js: add CSS to globals.css UI: b/menubar.js: add CSS to globals.css, avoid shadowRoot UI: b/knob.js: add CSS to globals.css, avoid shadowRoot UI: b/icon.js: add CSS to globals.css UI: b/editable.js: add CSS to globals.css UI: b/contextmenu.js: add CSS to globals.css UI: b/clipview.js: add CSS to globals.css, avoid shadowRoot UI: b/cliplist.js: add CSS to globals.css, avoid shadowRoot UI: b/choiceinput.js: add CSS to globals.css, avoid shadowRoot UI: b/buttonbar.js: add CSS to globals.css, avoid shadowRoot UI: b/basics.js: add CSS to globals.css, cleanups UI: b/aboutdialog.js: add CSS to globals.css, avoid shadowRoot UI: globals.scss: merge contents of grid.scss UI: Makefile.mk: fix globals.scss cleanup UI: Makefile.mk: include *.jscss contents in globals.css Merge branch 'postcss-normalize-charset' # 2023-07-27 Tim Janik 746575f * postcss-normalize-charset: UI: postcss.js: postprocess CSS with postcss-normalize-charset MISC: package.json.in: install postcss-normalize-charset UI: postcss.js: add support for -I to add include paths Merge branch 'aboutdialog-lit' # 2023-07-27 Tim Janik 874535f * aboutdialog-lit: UI: index.html: add comments to start_view_transition() UI: globals.scss: add b-dialog styling UI: b/contextmenu.js: use transparent backdrop for menus UI: globals.scss: add view-transition-group defaults, add scale0 keyframes UI: dark.scss: add b-animation-duration and b-dialog-colors UI: tsconfig.json: avoid checks of postcss.js.tst.js UI: b/menubar.js: make use of Shell.show_about_dialog() UI: b/app.js: leave aboutdialog handling to Shell.show_about_dialog() UI: b/shell.vue: use b-aboutdialog.shown, add show_about_dialog(), handle close * Use proper internal state for showing b-aboutdialog * Expose showing/hiding through show_about_dialog() * Allow animated closing of b-aboutdialog with start_view_transition UI: b/aboutdialog.js: display Lit version number UI: b/aboutdialog.js: port to LitComponent UI: eslintrc.js: declare start_view_transition as global symbol UI: index.html: define start_view_transition() This is a Vue-aware wrapper around document.startViewTransition() (atm Chrome specific), that still does the right thing on Firefox and has a disable flag. UI: Makefile.mk: index.html: add lit_version to config_json Merge branch 'dark-palette' # 2023-07-24 Tim Janik 61e1ecd * dark-palette: UI: dark.scss, globals.scss: use palette for body colors UI: Makefile.mk: add palette.scss to scss files UI: palette.scss: add warm grey palette based on ZCAM Jz (lightness) steps Merge branch 'modern-normalize' # 2023-07-24 Tim Janik aa3a6b6 * modern-normalize: UI: little.js: load globals.css into every LitComponent UI: index.html: give globals.css precedence over vue-styles.css UI: index.html: remvoe shadow.css UI: Makefile.mk: remove ui/elements.scss ui/shadow.scss Makefile.mk: run 'lint' during `make check` UI: remove unused files elements.scss and shadow.scss UI: globals.scss: merge styles from elements.scss and shadow.scss UI: globals.scss: use normalize.css to normalize latest Chrome & Firefox UI: normalize.css: leave font-family setting to our own theme MISC: mkcopyright.py: fix MIT License pattern to deal with case and 'd'-ending UI: normalize.css: insert MIT License and add Copyright notices UI: normalize.css: add renamed modern-normalize.css version 2.0.0 Add modern-normalize.css from https://github.com/sindresorhus/modern-normalize licensed MIT. Merge branch 'poxystyle' # 2023-07-24 Tim Janik 7134954 * poxystyle: DOC: poxy.sh: allow doc/poxystyle.css to fixup colors DOC: poxystyle.css: fix light theme colors and sizes UI: b/cliplist.js: minor edit README.md: update roadmap with items from Stefan Westerfeld Merge branch 'ts-check-lit-components', add ts-check and fix lint issues # 2023-07-03 Tim Janik a7ea5f4 * ts-check-lit-components: UI: b/app.js: reload UI on project changes UI: b/objecteditor.js: fix output UI: util.js: add missing type annotations UI: kbd.js: add missing type annotations UI: b/trackview.js: add @ts-check and missing type annotations UI: b/tracklist.js: add @ts-check and missing properties UI: b/playcontrols.js: add @ts-check UI: b/pianoroll.js: add @ts-check and missing type annotations UI: b/piano-ctrl.js: minor type fix UI: b/partlist.js: add @ts-check UI: b/more.js: add @ts-check UI: b/menutitle.js: add @ts-check UI: b/menuseparator.js: add @ts-check UI: b/menurow.js: add @ts-check UI: b/menuitem.js: add @ts-check UI: b/knob.js: add @ts-check and missing type annotations UI: b/editable.js: add @ts-check UI: b/contextmenu.js: add @ts-check and missing type annotations UI: b/clipview.js: add @ts-check and missing type UI: b/buttonbar.js: add @ts-check README.md: escape FIXME keywords UI: Makefile.mk: grep for reminders in ui/lint DEVICES: Makefile.mk: grep for reminders in devices/lint Makefile.mk: at the end of 'all', grep for reminder keywords in known sources Makefile.mk: ls-tree.d needs GITCOMMITDEPS, i.e. misc/config-utils.mk ASE: Makefile.mk: grep for reminders in ase/lint Makefile.mk: add 'lint' as toplevel phony rule UI: b/tracklist.js: cleanup CSS UI: b/textinput.js: cleanup CSS UI: b/switchinput.js: cleanup CSS UI: b/shell.vue: cleanup CSS UI: b/positionview.js: cleanup CSS UI: b/pianoroll.js: cleanup CSS UI: b/noteboard.vue: cleanup CSS UI: b/menutitle.js: cleanup CSS UI: b/menurow.js: cleanup CSS UI: b/menuitem.js: cleanup CSS UI: b/knob.js: cleanup CSS UI: b/icon.js: cleanup CSS UI: b/folderview.vue: cleanup CSS UI: b/filedialog.vue: cleanup CSS UI: b/editable.js: cleanup CSS UI: b/dialog.vue: cleanup CSS UI: b/databubble.vue: cleanup CSS UI: b/contextmenu.js: cleanup CSS UI: b/clipview.js: cleanup CSS UI: b/basics.js: inlcude v-flex mixin UI: theme.scss: fix color syntax UI: startup.js: fix import path UI: Makefile.mk: use stylelint with -f unix only inside emacs UI: Makefile.mk: add missing ui/spinner.scss dependency UI: stylelintrc.cjs: ignore whitespace rules UI: Makefile.mk: add Ase.server @type UI: mixins.scss: add v-flex mixin UI: mixins.scss: use $b-font-stack-kbd-mono UI: dark.scss: define $b-font-stack-kbd-mono for hotkey rendering UI: b/menubar.js: port to LitComponent * Cleanup markup * Cleanup CSS UI: b/positionview.js: port to LitComponent UI: b/basics.js: use h-flex() UI: mixins.scss: add h-flex() mixin MISC: Dockerfile.arch: install unzip Merge branch 'inputs-as-litelement' # 2023-06-27 Tim Janik 2ddfe22 * inputs-as-litelement: X11TEST: play-notes.json: adjust recording for new web components ASE: server.cc: listen on "notify" emissions from properties ASE: properties.cc: fix notifications, emit notify:identifier UI: util.js: turn xprop.value_ into a reactive property UI: b/choiceinput.js: take b-objecteditor into account in CSS UI: b/pro-input.vue: use @valuechange on b-choiceinput UI: b/preferencesdialog.vue: use b-objecteditor UI: util.js: avoid extending the same property twice UI: util.js: export fullstop() UI: Makefile.mk: use tsc with --pretty false only inside emacs UI: b/objecteditor.js: port to LitComponent * Turn into shadowless component * Properly prefix CSS classes * Listen on and handle @valuechange events * Do not freeze extended properties that we keep mutating * Remove old resize blocker logic UI: startup.js: load basic custom components early on UI: b/basics.js: move h-flex, v-flex, c-grid, push-button here, shadowless Make these simple basic containers shadowless, i.e. without shadow root. UI: b/pro-input.vue: add support for b-choiceinput UI: little.js: export 'nothing' from Lit UI: types.d.ts: add debug() global UI: b/fed-object.vue: add support for b-choiceinput UI: b/choiceinput.js: port to LitComponent, render on demand only UI: b/tracklist.js: fix stacking of top border shadow UI: b/switchinput.js: allow LEFT/RIGHT/UP/DOWN to toggle UI: b/fed-object.vue: add support for b-switchinput UI: b/switchinput.js: port to LitComponent UI: types.d.ts: declare global CONFIG UI: b/fed-object.vue: add support for b-numberinput UI: b/numberinput.js: simplify and fix sizing UI: b/numberinput.js: port to LitComponent UI: b/textinput.js: dispatch value changes as valuechange "event" Merge branch 'fix-lit-html' # 2023-06-22 Tim Janik 31da2dd * fix-lit-html: UI: b/*.js: fix trailing-solidus in html`` markup UI: eslintrc.js: add plugin:lit/recommended to linting rules MISC: package.json.in: install eslint-plugin-lit Merge branch 'InterDisplay', based on InterVariable-4.0 font # 2023-06-22 Tim Janik 89c9d01 * InterDisplay: UI: dark.scss: add a fallback font stack UI: theme.scss: remove outdated font stuff UI: mixins.scss: move b-kbd-hotkey here UI: elements.scss: use b-font-weight-bold() and b-font-weight-bolder() UI: b/*.vue, b/*.js: use b-font-weight-bold() and its variants UI: dark.scss: define b-font-weight-{normal|bold|bolder} mixins UI: b/menutitle.js: use drop-caps while InterVariable-4.0 small-caps are broken See also: https://github.com/rsms/inter/issues/556#issuecomment-1598010623 UI: elements.scss: leave font handling to theme, globals and shadow UI: b/pianoroll.js: use b-canvas-font UI: b/partthumb.vue: use b-canvas-font UI: b/clipview.js: use b-canvas-font UI: shadow.scss: use b-ui-font() inside shadow DOMs UI: globals.scss: make use of b-ui-font() UI: dark.scss: configure b-ui-font() for "InterVariable" in InterDisplay style UI: globals.scss: leave font-face defs to index.html UI: index.html: cleanup preloads, add @font-face for "InterVariable" UI: b/icon.js: add small comment UI: Makefile.mk: download InterVariable.woff2 UI: stylelintrc.cjs: disable "font-family-name-quotes" to allow quoted font names Merge branch 'component-styling' # 2023-06-21 Tim Janik 234bf99 * component-styling: UI: b/playcontrols.js: use JsExtract.css_url() UI: b/icon.js: use JsExtract.css_url() UI: b/textinput.js: make this a shadowless component UI: little.js: add JsExtract.css_url() UI: little.js: use cast to work around TS2425 UI: b/playcontrols.js: port to LitComponent UI: Makefile.mk: remove temporary file UI: b/*.vue: remove useless mixins import UI: index.html: import globals.css UI: globals.scss: import elements.scss which includes mixins UI: Makefile.mk: create globals.css and auto-import mixins.scss for vue styles UI: elements.scss: rename from domstyles.scss UI: b/button-bar.vue: port to LitComponent UI: b/*.js: access only LitComponent fields (not LitElement) UI: little.js: remove LitElement export UI: startup.js: derive from LitComponent (not LitElement) UI: b/*.js: derive from LitComponent (not LitElement) UI: b/partlist.js: embed and load CSS via JsExtract UI: Makefile.mk: fix dependenc for scss rebuilds UI: b/partlist.js: import Util UI: types.d.ts: declare __DEV__ global UI: b/pianoroll.js: extend LitComponent and use reactive_wrapper to track notes Also, merge multiple repaint requests into the same micro task. UI: b/clipview.js: leave width to parent UI: b/cliplist.js: set 'data-f1' only once suffices UI: b/trackview.js: render b-trackview context menu on demand UI: b/contextmenu.js: fix close() and synchronize updates * await this.updateComplete before showModal() * properly emit 'close', take nesting into account UI: b/partlist.js: port to LitElement UI: mixins.scss: add transparent-scrollbars mixin Merge branch 'clang-tidy' # 2023-06-18 Tim Janik 29cc5ff * clang-tidy: MISC: mkassets.sh: always use /tmp/anklang-mkassets/ for release builds GITHUB: workflows/testing.yml: fix key file permissions GITHUB: workflows/testing.yml: fixup permissions at CI end GITHUB: workflows/testing.yml: remove missing variable reference GITHUB: workflows/testing.yml: fix arch perms and focal redirection GITHUB: workflows/testing.yml: use $DOCKER_RUN and ghcr.io for all tasks * use $DOCKER_RUN and ghcr.io caching for Focal-Docs * adjusting git.safe.directory is not needed for Lunar * use $DOCKER_RUN and ghcr.io caching for Arch-Replay MISC: Dockerfile.focal: remove unused RUNs, rename user to ubuntu * remove unused OOTBUILD, rename builder user to ubuntu * add a comment howto build and run this image * use fixed user and group id of 1000 MISC: Dockerfile.arch: use fixed user and group ids of 1000 MISC: Dockerfile.arch: remove unused OOTBUILD and unused poxy MISC: Dockerfile.lunar: remove unused OOTBUILD GITHUB: workflows/testing.yml: directly use docker run for lunar and fix perms MISC: Dockerfile.lunar: upgrade to nodejs-20 MISC: package.json.in: upgrade npm build tools and electron-25 MISC: package.json.in: remove unused rollup-plugin-node-resolve MISC: Makefile.mk: fix missing directory dependency GITHUB: workflows/testing.yml: add Lunar-Clang-Tidy, rename Focal-Docs MISC: Dockerfile.lunar: provide build environment with clang-17 on ubuntu:23.04 MISC: colorize.sh: colorize error, warning, note and special case Emacs MISC: Makefile.mk: reimplement clang-tidy and clang-tidy-clean rules Makefile.mk: defined CLANG_TIDY Makefile.mk: create ls-tree.d and provide $(LS_TREE_LST) Merge branch 'sorted-vector' # 2023-06-08 Tim Janik 7b3b380 * sorted-vector: ASE: sortnet: implement SortedVector ASE: testing.hh: TFLOATS(): assert float equality within an apsilon ASE: combo.cc: add SPL link Merge branch 'swesterfeld-fix-pcg-ub' # 2023-06-07 Tim Janik 1d49d48 * swesterfeld-fix-pcg-ub: ASE: randomhash: fix undefined behaviour in Pcg32Rng Left shifting a 32bit value by 32 bits is UB. * Closes #14 Merge branch 'appimage-rpath-fix' # 2023-06-07 Tim Janik f609e1e * appimage-rpath-fix: MISC: mkAppImage.sh: avoid `linuxdeploy {-e|-l}` which change binary locations Avoid `linuxdeploy {-e|-l}`, these options change the binary locations by copying. The copies mess up ELF location detection and restoring the original locations causes wrong relative $ORIGIN paths. We just use --deploy-deps-only now, which keeps the binaries in place and correctly adjusts the relative $ORIGIN path. MISC: mkAppImage.sh: remove unused command Merge branch 'appimage-dependencies' # 2023-06-06 Tim Janik 1696a12 * appimage-dependencies: MISC: mkAppImage.sh: reduce workarounds by using linuxdeploy --deploy-deps-only MISC: mkAppImage.sh: add ELF dependencies for AnklangSynthEngine and gtk2wrap This adds libFLAC.so, libogg.so, libopus.so and libgdk-x11-2.0.so, libgtk-x11-2.0.so to the AppImage. Closes #13. Merge branch 'fix-imports' # 2023-06-06 Tim Janik 1b47b9e * fix-imports: UI: util.js: add missing Kbd import UI: eslintrc.js: remove 'Util' global UI: b/*.vue: add missing Util imports UI: b/*.js: add missing Util imports Merge branch 'jsdoc-tsimport' # 2023-06-05 Tim Janik c184b5e * jsdoc-tsimport: UI: b/cliplist.js: jsdoc-tsimport-plugin does not support a blank after import DOC: jsdocrc.json: use jsdoc-tsimport-plugin to parse tsc file imports * Fix JsDoc choking on typescript import statements that import typed from other JS files. * See also: https://github.com/jsdoc/jsdoc/issues/1645#issuecomment-768293857 MISC: package.json.in: install jsdoc-tsimport-plugin Merge branch 'typescript-jsdoc-checks' # 2023-06-05 Tim Janik 819895c * typescript-jsdoc-checks: UI: types.d.ts: allow App, Data, Shell Ase globals UI: index.html: add importmap to allow lit module imports UI: tsconfig.json: configure typescript checks, allow JS type checks + imports UI: wrapper.js: add @param type UI: little.js: add @ts-check, add types, add explicit exports for tsc UI: b/app.js: add @ts-check and missing property decl UI: b/cliplist.js: add @ts-check, missing imports, exports and initializations UI: b/clipview.js: export class UI: wrapper.js: add @ts-check and type annotations UI: b/statusbar.vue: use material icons for info and instrument panel UI: b/icon.js: fix material-icons size UI: Makefile.mk: add 'tscheck', 'stylelint' and 'lint' rules * add 'lint' dependency to run all of stylelint eslint tscheck * add 'tscheck' rule to selectively run typescript checks * add explicit 'stylelint' rule * simplify lit.js rollup * ui/vue.js: leave eslint cache alone * install material-icons from npm * cleanup eslint rule * ui/rebuild: avoid bg jobs, no need to print dir in sub MAKE MISC: package.json.in: cleanup serve and rebuild scripts MISC: package.json.in: remove eslint script, use make eslint instead MISC: package.json.in: install material-icons@1.13.6 Makefile.mk: whitespace fix GITHUB: workflows/testing.yml: use git fetch --unshallow Apparently `git fetch --shallow-since` does not work with the merge commit created by PR checkouts. Using `git fetch --unshallow` might be less efficient for regular branches, but at least works with trunk and PRs. MISC: package.json.in: upgrade lit, electron, vue, postcss, etc UI: b/pianoroll.js: fix indicator interacting with the cursor MISC: package.json.in: install typescript to enable code checks Merge branch 'nightly-version' # 2023-05-20 Tim Janik 8459bbb * nightly-version: MISC: Makefile.mk: update Nightly releases to avoid excessive emails MISC: gh_delete_assets.sh: add script to delete all release assets via gh README.md: update documentation links MISC: version.sh: use 0.1.2.dev3 for development versions for proper ordering Using .dev[0-9] postfixes properly sorts: 0.1.2 < 0.1.2.dev3 < 0.1.3 This works for sort -V, dpkg, rpm and PIP versions. See: https://peps.python.org/pep-0440/#public-version-identifiers MISC: Makefile.mk: fix typo Merge branch 'ci-build-updates' # 2023-05-19 Tim Janik 580cf66 * ci-build-updates: MISC: Makefile.mk: use gh, keed *-dev version number for Nightly releases * Use gh instead of hub to create releases * Keep the development version number for Nightly releases * Add a brief disclaimer about Nightly releases MISC: version.sh: simplify, support --commit-date and $RELEASE_VERSION GITHUB: workflows/testing.yml: add named step "Fetch last release tag" GITHUB: workflows/testing.yml: fetch git history since last release tag GITHUB: workflows/testing.yml: update ping deps GITHUB: workflows/testing.yml: fix workflow names GITHUB: workflows/testing.yml: run (full) docu upload on Ubuntu GITHUB: workflows/testing.yml: run X11 tests on Arch DOC: poxy.sh: include all Anklang docs in upload MISC: Dockerfile.focal: install pip, doxygen and poxy MISC: Dockerfile.focal: install twm for x11test MISC: Dockerfile.arch: install libgtk3 and libnss for Electron MISC: Dockerfile.arch: install xvfb ffmpeg twm for x11test-v X11TEST: x11rec.sh: switch to using twm with auto placement GITHUB: workflows/testing.yml: use full doc/ install dir as doc artifact GITHUB: workflows/testing.yml: test clang builds under Ubuntu GITHUB: workflows/testing.yml: remove unused env var from Arch build rule Merge branch 'g++-fixes' # 2023-05-17 Tim Janik 8404380 * g++-fixes: ASE: cxxaux.hh: fix internal member typedef name ASE: cxxaux.hh: use std::conditional_t<> for rebind::other, fix for g++-12 With template specializations, g++-11 and g++-12 error out with "explicit specialization in non-namespace scope", so we use std::conditional_t<> which seems to work with g++-12 and clnag++-15. Merge branch 'libstdc++-13' # 2023-05-17 Tim Janik c0f01a0 * libstdc++-13: ASE: cxxaux.hh: patch up make_shared() to make libstdc++13 happy * Move shared ptr allocator out of function scope (to allow template specialization) * Add rebind<> template to shared ptr allocator which derives from std::allocator * Specialize rebind<> so it yields the same allocator for only the shared ptr value type * This "fixes" two static assertions that were added in libstdc++13, see: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=72792#c12 ASE: cxxaux.hh: remove unused FriendAllocator<> ASE: cxxaux.hh: fix missing include ASE: loop.hh: always use ASE_DEFINE_MAKE_SHARED() to implement make_shared() ASE: formatter.hh: include cstdint for int32_t ASE: clapplugin.cc: add missing braces for clap_event_transport_t initializer UI: wrapper.js: add missing Util import Makefile.mk: add simple rule to generate +compile_commands.json Merge branch 'transportinfo', closes #5 # 2023-05-12 Tim Janik 3819f90 * transportinfo: ASE: clapplugin: provide transport information for the plugin MISC: config-uname.mk: link -shared: allow undefined symbols with sanitizers Merge branch 'build-time-postcss' # 2023-03-15 Tim Janik 54353a7 * build-time-postcss: UI: split styles into dark, grid, domstyles, mixins, shadow, globals SCSS files globals.scss: styles for the LightDOM only shadow.scss: styles only for ShadowDOM components domstyles.scss: common styles for the LightDOM and ShadowDOM grid.scss: provide helpers mixins.scss: base to customize components dark.scss: basic theme, allow switching via import $themename_scss; cursors/cursors.css: provide CSS variables for custom cursors UI: cursors/cursors.css: fix quotes UI: cursors/cursors.css: introduce --svg-cursor-* variables at :root{} scope This is needed to make cursors.css actualy valid CSS. UI: index.html: remove postfix and css validator, load vue-styles.css, fix preloads UI: b/clipview.js: use zcam directly UI: b/*.js: embed and load CSS via JsExtract UI: b/positionview.vue: use $b-lcdscreen-fg, $b-lcdscreen-bg UI: b/: fix $b-button-radius $b-button-radius $b-track-meter-gap $b-track-meter-thickness UI: b/pianoroll.js: import grid.scss UI: b/positionview.vue: use t-lcdscreen-fg, t-lcdscreen-bg UI: b/trackview.js: add --track-meter-thickness, --track-meter-gap UI: b/*.vue: use --button-radius UI: b/*.js: use --button-radius UI: b/*.js: use var(--button-radius); UI: b/*.vue: use var(--button-radius); UI: b/deviceeditor.vue, b/pro-group.vue: use --device-radius UI: b/shell.vue: remove unused styles UI: b/pianoroll.js: remove useless color assignment UI: b/textinput.js: include mixins.scss to use SCSS variable UI: b/menuseparator.js: include mixins.scss to use SCSS variable UI: b/*.js: extend componenets from LitComponent instead of LitElement UI: b/dialog.vue: inline box-shadow styling UI: b/pianoroll.js: import grid helpers from grid.css UI: b/menubar.vue: specify 'justify-content: space-between' directly UI: b/pianoroll.js: rely on global cursors.css import UI: startup.js: remove unused postcss import UI: jsextract.js: document jsextract.js usage UI: jsextract.js: extract JsExtract.scss`` marker snippets into *.jscss files UI: little.js: document JsExtract usage UI: little.js: fix .css URL construction to always have an extension UI: little.js: load into shadow roots UI: little.js: add ./shadow.css to LitComponent UI: little.js: remove postcss UI: little.js: export JsExtract with scss`` and fetch_css() UI: little.js: add default define $themename_scss:dark.scss; Also, disable csstree-validator which yields outdated warnings. UI: little.js: load shadow.scss into all LitComponent elements UI: little.js: LitComponent: always adopt shadow.css in createRenderRoot() UI: little.js: CSS import: remove premature fetch + caching, always import all UI: little.js: remove cursors/cursors.css from memorized imports MISC: package.json.in: add stylelint MISC: package.json.in: remove perfectionist-dfd UI: sfc-compile.js: extract *.vuecss files UI: Makefile.mk: remove csstree-validator and postcss browserify bundling UI: Makefile.mk: run stylelint from output dir UI: stylelintrc.cjs: add stylelint config UI: Makefile.mk: extract, process and run stylelint on *.jscss files UI: Makefile.mk: process *.vuecss files UI: Makefile.mk: run stylelint on processed styles UI: Makefile.mk: generate vue-styles.css UI: Makefile.mk: remove Vue css rules UI: Makefile.mk: take quoted cursor urls into account UI: Makefile.mk: move theming into ui/dark.scss, build .css from .scss UI: Makefile.mk: use postcss.js with --map and -i UI: Makefile.mk: fix install pattern for ui/b/ UI: postcss.js: support stdout output UI: postcss.js: fix exit code by re-throwing errors UI: postcss.js: add -Dvar=value for predefined variables UI: postcss.js: add -C to find imports UI: postcss.js: directly print PostCSS exceptions to provide useful stacktraces UI: postcss.js: support fetching imports from network UI: postcss.js: remove perfectionist-dfd, auto-import *.scss unless -i is given UI: postcss.js: add zlerp() CSS function UI: postcss.js: add zmod4() CSS function UI: postcss.js: make source map configurable UI: colors.js: add zlerp() for color interpolation UI: colors.js: fix missing ZCAM attributes UI: colors.js: add zmod4() to debug ZCAM attributes for colors UI: colors.js: support missing first zmod() color argument DOC: jsdoc2md.js: fix @file docu being ignored in some cases DOC: jsdoc2md.js: add anchor to constants ASE: websocket.cc: allow caching of duplicate requests within 1 second Merge branch 'reactive-render' # 2023-03-08 Tim Janik 6f6d3be * reactive-render: UI: startup.js: rerender all LitElements and known Vue components on resize UI: little.js: export LitComponent, which has reactive render() and updated() UI: little.js: add lit_update_all() UI: wrapper.js: improve error message for missing getters UI: wrapper.js: support reactive_wrapper() callbacks for wrap_ase_object() fields UI: wrapper.js: implement define_reactive() and reactive_wrapper() Merge branch 'jsdoc-search' # 2023-03-05 Tim Janik dc2f640 * jsdoc-search: DOC: poxy.sh: ignore case during search UI: util.js: add PointerDrag comment DOC: poxy.sh: extend searchdata-v2.js with token list from JS docs DOC: poxy.sh: avoid fake 'Export' prefix for JS symbols DOC: jsdoc2md.js: use for anchors, add data-4search to anchors The old empty span anchors could be removed by some HTML processors. DOC: poxy.sh: jsdoc2md will now directly generate markdown from JS Merge branch 'api-docs' # 2023-03-03 Tim Janik 63bd26e * api-docs: GITHUB: workflows/testing.yml: rename CI jobs GITHUB: workflows/testing.yml: add step to build and upload API docs MISC: Dockerfile.arch: provide doxygen openssh and poxy via pip MISC: Dockerfile.arch: first update archlinux-keyring This works around an outdated keyring in the archlinux:latest docker image. MISC: dbuild.sh: add support for the docker -p option DOC: poxy.sh: setup AUTHOR/COMITTER EMAIL/NAME, GIT_SSH_COMMAND for uploads DOC: poxy.sh: provide NODE_PATH DOC: poxy.sh: add program doc/ dir to documentation output DOC: poxy.sh: add README as main index page DOC: poxy.sh: add project version to docs DOC: poxy.sh: upload to the `publish` branch DOC: poxy.sh: support conditional builds DOC: poxy.sh: move build commands into poxy_build function DOC: poxy.sh: add -u for upload DOC: poxy.sh: support accesskey="f" for Search DOC: poxy.sh: support -s to serve html/ contents DOC: poxy.sh: add NEWS.md DOC: poxy.sh: add ch-scripting.md to UI docs DOC: poxy.sh: generate API reference documentation with Poxy UI: Makefile.mk: remove rules to build JS docs DOC: Makefile.mk: build scripting docs from ui/host.js and ch-scripting.md DOC: copyright.ini: fix doc/jsdocrc.json path DOC: ch-scripting.md: move here from ui/ DOC: jsdoc2md.js: generate markdown from *.js via jsdoc-api DOC: jsdocrc.json: configure JsDoc to use doc/jsdoc-slashes.js DOC: jsdoc-slashes.js: move here from ui/slashcomment.js DOC: jsdoc2md.js: guard aganst doclets with non-string name I.e. doclet.meta.code.name can be an Integer. MISC: package.json.in: add jsdoc-api UI: b/shell.vue: add basic docs ASE: testing.hh: document Test namespace ASE: api.hh: add docu comment to Ase namespace README.md: fix github workflow badge URL Merge branch 'lit-tracklist' # 2023-01-10 Tim Janik 3e64716 * lit-tracklist: UI: b/tracklist.js: hide HEADER and FOOTER UI: b/tracklist.js: add scrollshadow at the top UI: theme.scss: remove fragile parts of scrollbar styling UI: b/tracklist.js: fix layout for few tracks UI: b/tracklist.js: support x/y scrolling UI: b/cliplist.js: clipview children must not shrink UI: b/tracklist.js: port to LitElement UI: b/trackview.js: increase width of level meters UI: b/clipview.js: use track.$id for colorization UI: b/cliplist.js: fix setting of b-clipview.track property UI: b/app.js: provide App.project ASE: object.cc: skip notifications for objects without shared_ptr ASE: api.hh: rename and notify Project.all_tracks() (former list_tracks) Merge branch 'lit-trackview' # 2023-01-08 Tim Janik 529af30 * lit-trackview: UI: b/trackview.js: render sound level meter from telemetry UI: b/cliplist.js: minor formatting ASE: track.cc: add dbspl0 and dbspl1 to telemetry ASE: combo: add sound level probing in dB to AudioChain ASE: datautils: add square_max() ASE: midilib.cc: reserve space to avoid malloc ASE: datautils: add square_sum() for FPU floats ASE: cxxaux.hh: add ASE_ALIGNED16() and ALIGNMENT16() UI: b/app.js: maintain App.current_track, notify accordingly ASE: track: support midi_channel changes UI: b/*.js: fix ${ref} syntax UI: b/trackview.js: port to LitElement Merge branch 'lit-editable' # 2023-01-08 Tim Janik b1b949d * lit-editable: UI: b/trackview.vue: adjust b-editable use UI: b/positionview.vue: adjust property editing ASE: project.cc: add missing notifications UI: b/editable.js: port to LitElement Merge branch 'lit-cliplist' # 2023-01-07 Tim Janik 2724283 * lit-cliplist: UI: b/partlist.vue: disable old code DOC: Makefile.mk: add docs from b/cliplist.md ASE: api.hh: rename Track.launcher_clips() and ass 'notify:launcher_clips' UI: b/statusbar.vue: use Util.find_element_from_point() UI: b/shell.vue: determine F1 anchor from find_element_from_point() UI: util.js: add find_element_from_point(), supporting shadow DOMs UI: b/clipview.js: fix properties UI: b/cliplist.js: support F1 help for ClipList UI: b/cliplist.js: port to LitElement UI: b/app.js: add App.zmove_last() UI: b/pianoroll.js: minor rename Merge branch 'lit-clipview' # 2023-01-07 Tim Janik ee3d1f0 * lit-clipview: ASE: api.hh: add Clip.all_notes read-only property Enable property caching UI code for fetching notes and updates. UI: b/pianoroll.js: use Util.wrap_ase_object() to fetch Clip notes UI: b/piano-ctrl.js: use Util.wrap_ase_object() to fetch Clip notes UI: b/clipview.js: use wrap_ase_object() to access Clip properties UI: util.js: export the wrapper.js API UI: wrapper.js: add AseObject wrapper to cache properties UI: startup.js: add class name to GC debug messages UI: b/shell.vue: provide Shell.piano_roll UI: Makefile.mk: use Vue production build unless MODE=debug This avoids massive memory leaks of Vue components. UI: Makefile.mk: fix missing dependency MISC: package.json.in: upgrade to vue-3.2.45 and lit-2.5.0 UI: Makefile.mk: use 'npm --prefer-offline' only when rebuilding MISC: config-checks.mk: do not force '--prefer-offline' on npm MISC: config-uname.mk: define __UIDEBUG__=1 for MODE=debug UI: b/pianoroll.js: remove old debug() UI: b/contextmenu.js: remove useless performance hog UI: b/tracklist.vue: add new track on dblclick on track list only UI: b/pianoroll.js: fix stale play cursor on clip change UI: b/clipview.js: port BClipView to LitElement UI: b/: use Track.list_launcher_clips() ASE: api.hh. track: rename Track.list_launcher_clips() Merge branch 'fix-embed-fd-hangs' # 2022-12-28 Tim Janik ea7b53b * fix-embed-fd-hangs: ASE: clapplugin.cc: map PollFD::NVAL to CLAP_POSIX_FD_ERROR ASE: loop.*: support POLLWRBAND, always pass on POLLNVAL, POLLERR and POLLHUP Merge branch 'build-fixes' # 2022-12-28 Tim Janik 215830f * build-fixes: UI: Makefile.mk: add missing dependency from ui/colors.js on ui/zcam-js.mjs This fixes postcss errors due to missing zcam-js.mjs. X11TEST: play-notes.json: adjust simlpe UI test to UI path changes UI: cursors/cursors.css: add MPL-2 copyright Merge branch 'documentation-sections' # 2022-12-22 Tim Janik 11d3cc2 * documentation-sections: DOC: Makefile.mk: link to and search for ui/cursors/ UI: b/pianoroll.js: add data-f1="#piano-roll" to link F1 to piano roll manual UI: b/shell.vue: popup manual on 'F1', support anchors via data-f1="#anchor" UI: kbd.js: allow event.keyCode filtering DOC: Makefile.mk: include docs from pianoroll and piano-ctrl DOC: ch-editing.md: add brief editing introduction UI: Makefile.mk: extract Markdown sections from JS files into doc/b/*.md UI: xbcomments.js: extract Markdown sections from JavaScript comment blocks Merge branch 'piano-roll-and-shell-grid-layout' # 2022-12-22 Tim Janik 5772625 * piano-roll-and-shell-grid-layout: UI: b/pianoroll.js: document piano-roll use and fix hover handling UI: b/piano-ctrl.js: add convenient tool registration helpers UI: eslintrc.js: allow empty blocks UI: util.js: allow PointerDrag cleanup handler UI: b/pianoroll.js: fix scroll and select notes_canvas tool on hover UI: b/piano-ctrl.js: implement note resize tool UI: b/piano-ctrl.js: implement select, paint, erase as dedicated tools UI: b/pianoroll.js: context menu cleanup UI: b/clipview.vue: let the canvas fill parentElement UI: styles.scss, startup.js: turn HFlex & VFlex into LitElement UI: b/pianoroll.js: use one source for DPR calculations UI: b/pianoroll.js: properly align toolmenu button UI: b/pianoroll.js: fix background color UI: b/pianoroll.js: add pianorollmenu items UI: b/treeselector-item.vue: fix 'event' reference UI: b/knob.js: fix 'event' reference UI: b/editable.vue: fix 'event' reference UI: eslintrc.js: warn if a global 'event' is referenced UI: b/piano-ctrl.js: fix merging of selection changes with note modifications UI: b/pianoroll.js: handle menu hotkeys UI: b/contextmenu.js: fix unmapping in map_kbd_hotkeys() UI: kbd.js: handle document.activeElement == null UI: b/piano-ctrl.js: stop event if a key was handled UI: b/pianoroll.js: grab focus UI: b/piano-ctrl.js: adjust piano_roll access patterns UI: b/pianoroll.js: provide .srect property, repaint upon changes UI: b/pianoroll.js: handle tool menu and hook up piano-ctrl UI: theme.scss: move scrollbar styling here to work inside shadow DOMs UI: startup.js: turn CGrid into a LitElement to work inside shadow DOMs UI: b/pianoroll.js: work around FireFox exception when ctx.font is assigned UI: b/shell.vue: allow notification callbacks on get_note_cache() UI: b/statusbar.vue: use elementsFromPoint() to find Tips inside shadowRoots UI: b/contextmenu.js: support @activate="handler" notifications UI: b/menubar.vue: move comment to work around Vue's template child handling UI: b/knob.js: ignore hscrolls to allow horizontal device panel scrolling UI: b/devicepanel.vue: adjust to b-shell grid layout UI: b/pianoroll.js: fix scrollbar style UI: b/pianoroll.js: add indicator to show the current tick UI: b/shell.vue: use for the basic layout UI: b/pianoroll.js: implement as LitElement UI: b/pianoroll.js: add skeleton UI: b/piano-roll.vue: remove Vue based piano-roll Merge branch 'cursors' # 2022-12-22 Tim Janik 32b1518 * cursors: IMAGES: anklangicons.sh: fixes for svgo 2.8.0 and Inkscape >= 1.0 IMAGES: anklangicons.sh: remove unused cursor commands RAND: hotspots.sh: add simple script to debug hotspot coords in cursors UI: b/piano-roll.vue: remove AnklangCursors.scss references UI: Makefile.mk: remove AnklangCursors.scss copy UI: Makefile.mk: copy cursors/cursors.css and all cursor SVGs UI: little.js: allow runtime postcss imports from cursors/cursors.css UI: cursors/cursors.css: add CSS vars for: cross eraser hresize knife move pen UI: cursors/knife.svg: add 28x28 pixel "knife" cursor UI: cursors/hresize.svg: add 28x28 pixel "horizontal resize" cursor UI: cursors/cross.svg: add 28x28 pixel "cross" cursor UI: cursors/move.svg: add 28x28 pixel "move" cursor UI: cursors/eraser.svg: make cursor 28x28 pixels UI: cursors/pen.svg: make cursor 28x28 pixels UI: cursors/: move eraser.svg and pen.svg here Merge branch 'swesterfeld-blepsynth-adsr-time-fix' # 2022-11-17 Tim Janik 54726cd * swesterfeld-blepsynth-adsr-time-fix: DEVICES: blepsynth: use non-linear mapping for ADSR times ASE: sortnet.hh: update URLs in comments Merge branch 'sprite-knob' # 2022-11-16 Tim Janik 439c3b8 * sprite-knob: MISC: Dockerfile.focal: install librsvg2-bin for rsvg-convert UI: remove unused eknob.svg embedding UI: b/knob.vue: remove Vue based knob implementation UI: b/pro-input.vue: remove unused knob handling UI: b/pro-group.vue: use b-knob for scalar Property editing UI: b/knob.js: rewrite b-knob as LitElement with sprites UI: b/deviceeditor.vue: use Util.extend_property() to cache Property fields UI: Makefile.mk: provide control knob sprite assets Makefile.mk: include images/knobs/Makefile.mk IMAGES: knobs/cknob.svg: add MPL-2.0 license IMAGES: knobs/Makefile.mk: build bi- and unidirectional control knob sprites IMAGES: knobs/mksprite.py: rotate svg knob and add level indicator IMAGES: knobs/cknob.svg: add rotatable control knob UI: util.js: wheel_delta: adjust factors for modern Firefox and Chrome versions UI: startup.js: set CONFIG.dpr_movement for Chrome<=100 and Gecko As of Firefox-106, dpr_movement is needed and for Chrome-107 it is not. UI: util.js: use internal Symbol for request_pointer_lock() state handling UI: util.js: fix value updates of extended properties Catch the right event and normalize the value in JS. UI: util.js: add methods to handle destroy callbacks on objects UI: b/shell.vue: comment fixup UI: b/databubble.vue: hook into App.zmove for all event handling Also, fix stuck bubbles when rehovering the same element. UI: b/app.js: generate zmove events for pointerdown, pointermove, pointerup UI: b/app.js: make sure "mousemove" triggers ZMove updates ASE: processor.cc: keep constant number of characters for % values ASE: processor: send property notifies early, account for inflight values ASE: api.hh: add missing const ASE: crawler: use emit_notify() and avoid emit during ctor ASE: *.cc: use emit_notify() where possible Merge branch 'zoom-ui' # 2022-11-16 Tim Janik 8e65adf * zoom-ui: UI: b/menubar.vue: support Zoom In/Out/Reset for Electron ELECTRON: main.js: export zoom_level() to allow UI zoom adjustments UI: kbd.js: match_key_event: split 'Ctrl++' only once DOC: ch-development.md, ch-intro.md: fix testbit.eu URL ASE: randomhash: fix testbit.eu URL ASE: track.cc: fix MASTER_TRACK flag Merge branch 'swesterfeld-vcf-cutoff-fix' # 2022-11-03 Tim Janik 203c246 * swesterfeld-vcf-cutoff-fix: DEVICES: blepsynth: fix cutoff frequency modulation for filter Fix frequency scaling problems: the freq_in array now passes its frequency to the filter as plain Hz. Merge branch 'time-autostop' # 2022-11-03 Tim Janik 6d531e6 * time-autostop: GITHUB: workflows/testing.yml: add repository and gh-user to IRC notifications GITHUB: workflows/ircbot.py: support -R for initiating repository name GITHUB: workflows/testing.yml: skip IRC bot name GITHUB: workflows/ircbot.py: set "YYBOT" as bot name ASE: main: add autostop handling and implement -t to trigger autostop ASE: project: start_playback(): pass autostop into engine ASE: engine: add autostop handling and delay capture until transport is running ASE: defs.hh: add D64MAX ASE: strings.cc: add string_to_seconds() ASE: formatter.cc: test atomic which is a struct and needs %s UI: b/treeselector-item.vue: use ContextMenu.valid_uri() to check valid uri UI: b/contextmenu.js: always use valid_uri() for uri in boolean contexts Merge branch 'opus-wav-flac' - capture engine output # 2022-10-28 Tim Janik bb7a442 * opus-wav-flac: UI: b/aboutdialog.vue: display FLAC version ASE: api: export get_flac_version() UI: b/aboutdialog.vue: show Opus version Remove unused Vorbis version. ASE: api.hh: export Opus version Remove unused Vorbis and MP3 version export. MISC: Dockerfile.focal: provide libopus MISC: config-checks.mk: provide ogg-1.3.4 and opus-1.3.1 Remvoe Vorbis requirement, which is unused. ASE: main.cc: exit with atquit_run() upon SIGINT ASE: loop: USignalSource::install_sigaction(): install unix signal handler ASE: utils: provide atquit handlers ASE: loop.hh: minimize latency of signal handlers by running at high priority ASE: main: add -o wavfile to the CLI ASE: engine: support engine output capturing into wave files Squashed commits of engine capturing development: ASE: engine: add queue_capture_start() and queue_capture_stop() ASE: engine.cc: stall engine once program is aborted (atquit_triggered) ASE: engine.cc: capture output via wave_writer_create_opus() ASE: engine.cc: capture output via wave_writer_create_wav() ASE: engine.cc: capture output via wave_writer_create_flac() ASE: wave: add wave file writer for WAV, OPUS, FLAC Squashed commits of wave file development: ASE: wave.hh: add WaveWriter interface ASE: wave: add writer for WAV files with support for PCM and FLOAT ASE: wave: implement Opus writer and export Opus version ASE: wave.cc: write extension header for FLOAT format For example SoX(1) complains about float WAV files 'missing extended part of fmt chunk' ASE: wave: add FLAC writer and export FLAC version ASE: wave: install atquit handlers to flush/finalize wave files ASE: main: load projects without '--preload' and support --play-autostart ASE: main.cc: auto-load projects passed on the CLI Merge branch 'loft' # 2022-10-26 Tim Janik 84ff17e * loft: ASE: main.cc: configure Loft and concurrently preallocate pages on demand ASE: tests/benchmarks.cc: benchmark loft_calloc() ASE: loft: add Loft - a lock- and obstruction-free thread memory allocator Squashed commits of Loft development: ASE: loft: implement mmap() based bump allocator ASE: loft: implement MpmcStack based bucket allocator ASE: loft: add loft_alloc() ASE: loft: add loft_make_unique() and LoftFree::operator()() ASE: loft: add loft_calloc() ASE: loft: add multithreaded allocator stress test ASE: loft: use FastRng for testing ASE: loft: add loft_bucket_size() ASE: loft: add loft_get_stats(), loft_stats_string() ASE: loft: add loft_get_config(), loft_set_config(), config flags ASE: loft: add loft_grow_preallocate(), loft_set_notifier() ASE: loft: issue a warning if allocations via syscall happen inline ASE: atomics.hh: add MpmcStack.peek ASE: atomics.cc: fix signedness ASE: atomics.cc: add test for MpmcStack<> ASE: atomics.hh: add MpmcStack<>, a lock-free stack for non-reclaimable memory Merge branch 'mwc256-prng' # 2022-10-26 Tim Janik 153071d * mwc256-prng: ASE: randomhash.cc: add FastRng jump ahead tests ASE: main.cc: add --rand64 to generate 64bit FastRng numbers on stdout This can be used to test the PRNG quality with for example PractRand: AnklangSynthEngine --rand64 | RNG_test stdin64 -multithreaded ASE: randomhash: add FastRng, a multiply-with-carry PRNG with period 2^255 ASE: tests/benchmarks.cc: use 3k as max chunk size to avoid memset benchmarking ASE: sortnet.cc: speed up test by reducing the checked 10-element permutations Merge branch 'update-sanitizers' # 2022-10-26 Tim Janik a252fc9 * update-sanitizers: JSONIPC: jsonipc.hh: fix atexit memory leak ASE: formatter.hh: properly handle nullptr_t for %p ASE: nativedevice.cc: fix signedness ASE: serialize.cc: fix unit test memory leak UI: Makefile.mk: ignore asan when running AnklangSynthEngine DOC: Makefile.mk: ignore asan when running AnklangSynthEngine MISC: config-uname.mk: update sanitizer linkage GITHUB: workflows/testing.yml: upgrade actions/checkout and actions/cache to v3 MISC: Dockerfile.focal: comment fixups GITHUB: workflows/testing.yml: allow TeX installation during CI builds Merge branch 'pdf-artifacts' # 2022-10-25 Tim Janik e0272bd * pdf-artifacts: GITHUB: workflows/testing.yml: build PDF and upload 'docs' build artifact MISC: mkassets.sh: use 'pdf' shorthand in build rule DOC: Makefile.mk: require explicit 'pdf' rule to build PDF manuals via TeX By default, only the HTML manuals are built and installed (without TeX dependency). The PDF variants can be built explicitely with `make pdf`. The PDF manuals are installed if they are present at install time. GITHUB: workflows/testing.yml: enable CI for 'next' and PRs Merge branch 'litelement-menu' # 2022-10-21 Tim Janik 8032e64 * litelement-menu: X11TEST: play-notes.json: update UI test UI: b/*: assign aria-label where appropriate UI: b/*.vue: add html id to context menus UI: b/menuitem.js: always strip slot_label UI: util.js: remove unused dropdown() UI: b/color-picker.vue: fix menu and support click-drag selection UI: b/contextmenu.js: expose dialog via part=dialog to CSS rules UI: b/trackview.vue: popup context menu at cursor UI: b/piano-roll.vue: fix popup position UI: b/piano-ctrl.js: avoid stealing unhandled key presses UI: b/dialog.vue: close on regular Escape presses, avoid stealing Escape UI: b/contextmenu.js: stop handled dialog Escape key from bubbling further UI: util.js: allow shields without Escape key stealing UI: b/choice.vue: fix menu and key handling to work like all menus UI: b/contextmenu.js: provide .open read-only property UI: b/menuitem.js: remove unused code UI: b/contextmenu.js: fix data-contextmenu styling UI: b/fed-picklist.vue: remove unused component UI: b/devicepanel.vue: fix menu origin and insertion pos ASE: nativedevice.cc: fix device insertion order UI: b/contextmenu.js: close menu on backdrop clicks UI: util.js: dialog_backdrop_mousedown(): close dialogs on backdrop clicks UI: b/menubar.vue: use b-contextmenu .activate and .isactive UI: b/piano-roll.vue: use b-contextmenu .activate and .isactive UI: b/deviceeditor.vue: use b-contextmenu .activate and .isactive UI: b/treeselector-item.vue: use frame stamp to ignore duplicate clicks UI: b/menubar.vue: use frame stamp to ignore duplicate clicks UI: b/contextmenu.js: make FF auto-focus an element on showModal(), like Chrome UI: b/contextmenu.js: use frame stamp to ignore duplicate clicks and popup()s Note that keyboard presses, mouse clicks, drag selections and event bubbling can all cause menu item clicks and contextmenu activation. In order to deduplicate multiple events that arise from the same user interaction, *one* popup request and *one* click activation is processed per animation frame. UI: util.js: add frame_stamp(), retrieve a timestamp unique per animation frame UI: kbd.js: move_focus(): fallback to move focus inside body UI: kbd.js: list_focusables(): take [open]:modal in shadow DOMs into account UI: kbd.js: list_focusables(): take [open]:modal dialogs into account UI: b/treeselector-item.vue: fix single-click menu activation and styling UI: b/trackview.vue: fix menu activation UI: b/piano-roll.vue: fix menu activation, allow click-drag menu selection UI: b/devicepanel.vue: fix menu activation UI: b/menubar.vue: allow click-drag menu selection UI: b/menuitem.js: use .activate and .isactive callbacks for item activation UI: b/contextmenu.js: use .activate and .isactive callbacks for menu activation ASE: project.cc: fix some missing notify::dirty emissions UI: b/menubar.vue: adapt context menu clicks, popup menus early (mousedown) UI: b/menuitem.js: adjust for b-contextmenu as LitElement UI: kbd.js: fix keydown_move_focus() for shadow DOMs UI: util.js: add prevent_event() UI: b/contextmenu.js: port b-contextmenu to LitElement UI: b/menuitem.js: use 'b-menurow' CSS selector UI: b/menurow.js: port b-menurow to LitElement UI: b/menuitem.js: pass b-menurow turn / noturn attributes to button UI: util.js: add closest() for shadow DOMs UI: b/trackview.vue: always use the b-icon ic="" attribute UI: b/menuitem.js: export KeymapEntry as this.keymap_entry UI: b/contextmenu.vue: collect and register KeymapEntry props from descendants UI: kbd.js: support add+remove of global keymaps UI: b/menuitem.js: port b-menuitem to LitElement UI: util.js: add lrstrip() and collect_text_content() UI: kbd.js: make activeElement and list_focusables shadow DOM aware This allows transparent handling of custom focus navigation and hotkey activation in shadow DOMs. UI: util.js: extend has_ancestor() to support open shadow DOMs UI: b/contextmenu.vue: support click, keymap, b-contextmenu-menudata on Element UI: b/icon.js: port b-icon from vue to LitElement UI: util.js: add adopt_style() and add_style_sheet() UI: b/*.vue: always use the b-icon ic="" attribute GITHUB: workflows/testing.yml: update github actions Merge branch 'package-updates' # 2022-10-12 Tim Janik 84e7c32 * package-updates: ASE: clip.cc: fix macro clash MISC: package.json.in: update various npm packages Makefile.mk: clean x11test/ output dir Merge branch 'activate+deactivate' # 2022-10-12 Tim Janik 4e5ac8b * activate+deactivate: ASE: object.cc: properly check Connection ptr before use ASE: track.cc: remove over eager assertion ASE: project.cc: start_playback(): switch current engine project on demand Makefile.mk: allow make default to configure INSN ASE: project: move activate/deactive to Project ASE: engine.cc: fix loss of "change:prefs" notification connection ASE: engine: add API to set up exclusive Engine + Project relation ASE: track: require Project as parent of track ASE: gadget: add flags field to be used for gadgets and derived types ASE: clapplugin: rename clap_deactivate() and variants ASE: api.hh: use GadgetImpl as parent pointer ASE: api.hh: derive Track from Device ASE: api.hh: derive Project from Device ASE: device: rename and move Device::extract_info() here ASE: clapdevice.cc: fix call to inherited methods ASE: nativedevice: provide remove_all_devices(), implement activation ASE: api.hh: Device: provide _activate() _deactivate() is_active() ASE: nativedevice.cc: clarify TODO ASE: split DeviceImpl into Device and NativeDevice ASE: engine: turn the engine into a global singleton ASE: engine: simnply wrap AudioEngineImpl calls into AudioEngine methods ASE: engine: rename AudioEngineImpl ASE: main: export main_loop_wakeup() Merge branch 'ci-job-split' # 2022-10-11 Tim Janik bd540be * ci-job-split: GITHUB: workflows/testing.yml: split jobs for Ubuntu, Arch, IRC DOC: copyright.ini: assume MPL-2 for x11test/*.json Merge branch 'x11test' # 2022-10-10 Tim Janik 662fd7a * x11test: X11TEST: play1note.json: add recording to play a single MIDI note GITHUB: workflows/testing.yml: run x11test-v on Ubuntu build and upload result Makefile.mk: docuemnt x11test and x11test-v Makefile.mk: add x11test, x11test-v to run (headless) end-to-end tests X11TEST: replay.sh: play Anklang DevTools recording in Electron via Puppetteer X11TEST: ereplay.cjs: use Electron and Puppetteer to replay DevTools recording X11TEST: x11rec.sh: run and record a command in a virtual or nested X11 session MISC: package.json.in: add puppeteer packages MISC: Dockerfile.focal: provide xvfb 9wm ffmpeg Merge branch 'print-class-tree' # 2022-09-28 Tim Janik 8bde98a * print-class-tree: DOC: Makefile.mk: anklang-internals: add "Ase Class Inheritance Tree" ASE: main: add --class-tree to print the class tree JSONIPC: jsonipc.hh: add ClassWalker ASE: internal.hh: add assert_unreached() ASE: engine: minor fixes Merge branch 'fix-vue-3.2.28' # 2022-09-28 Tim Janik 6628472 * fix-vue-3.2.28: UI: b/shell.vue: work around vue-3.2.38 breaking $forceUpdate() before mount() Avoid the Shell calling $forceUpdate() from created(). That used to work up until Vue-3.2.27, but with .28 and .29 results in: vue.js:1843 Uncaught (in promise) TypeError: Cannot read properties of null (reading 'id') at queueJob (vue.js:1843:17) at i.f.i.f (vue.js:4591:44) Aparently $forceUpdate() calls are now broken before mount(). UI: Makefile.mk: fix wildcard for lit.js to not catch little.js Merge branch 'fix-gc' - plugs a GC race condition # 2022-09-27 Tim Janik 6caa570 * fix-gc: JSONIPC: jsonipc.hh: InstanceMap: remove unused swap and move_into ASE: jsonapi.cc: fix GC bookkeeping with mark_unused() and purge_unused() JSONIPC: jsonipc.hh: InstanceMap: add mark_unused() and purge_unused() JSONIPC: jsonipc.hh: add CallbackInfo::classname() to improve error messages Merge branch 'prefault-pages' # 2022-09-27 Tim Janik 9cf276d * prefault-pages: ASE: main.cc: prefault heap and stack pages ASE: main.cc: tune malloc via mallopt to reduce page fault probability Merge branch 'build-improvements' # 2022-09-27 Tim Janik 931a674 * build-improvements: MISC: config-uname.mk: enable link time optimization via -flto for MODE=production MISC: Makefile.mk: clean mkdeb/ if left over MISC: Dockerfile.focal: install libgtk-3-dev which also provides libdbus-1-dev Merge branch 'low-latency-sched' # 2022-09-14 Tim Janik 5184d18 * low-latency-sched: ASE: engine.cc: request low latency scheduling for the synthesis engine ASE: platform: add sched_{set|get|fast}_priority() ASE: dbus: add DBus methods rtkit_make_high_priority + rtkit_get_min_nice_level MISC: mkdeb.sh: postinst: add cap_sys_nice to AnklangSynthEngine MISC: config-checks.mk: add dbus-1 to ase dependencies ASE: utils.cc: allow mixed case debug keys ASE: Makefile.mk: use ASEDEPS_CFLAGS and ASEDEPS_LIBS MISC: config-checks.mk: provide just ASEDEPS_CFLAGS and ASEDEPS_LIBS for ase/ Merge branch 'remote-gc' # 2022-09-14 Tim Janik f59890b * remote-gc: UI: startup.js: renew_gc() on object finalization, report_gc() when requested ASE: jsonapi.cc: support renew_gc() and report_gc() to start new GC cycle The basic idea behind remote GB by the UI requesting renew_gc() and the Jsonapi server swapping wrapper tables in response is described here: https://testbit.eu/2014/rapicorn-remote-reference-counting ASE: jsonapi.cc: test conscise erase() loop over std::map<> Checks the erase() loop used by Jsonipc over std::map<>, in particular ++end must be avoided for empty maps. JSONIPC: jsonipc.hh: support clear/swap/size/move_into for instance ptr map MISC: config-uname.mk: use -Og for debugging which improves debug info Using -Og is a better choice than -O0, because some compiler passes that collect debug information are disabled at -O0. (gcc docs) UI: startup.js: properly namespace Jsonapi/Trigger ASE: jsonapi.cc: properly namespace Jsonapi/Trigger DOC: ch-development.md: properly namespace Jsonapi/Trigger DOC: ch-development.md: minor update UI: startup.js: request Ase.Server via Jsonapi/initialize after handshake ASE: jsonapi.cc: provide Ase.Server object as Jsonapi/initialize reply JSONIPC: jsonipc.hh: reply to Jsonipc/handshake with protocol version 1 JSONIPC: jsonipc.js: require Jsonipc/handshake with protocol version 1 UI: startup.js: maintain $id GC list via Jsonipc.finalization_registration JSONIPC: jsonipc.js: call Jsonipc.finalization_registration hook from ctors UI: GNUmakefile: allow subdir builds Merge branch 'automatic-backup' # 2022-08-24 Tim Janik 72174fb * automatic-backup: ASE: project.cc: automatically backup existing project files ASE: path: add glob() ASE: path: add rename() ASE: utils: add now_strftime() Merge branch 'clap-file-reference' # 2022-08-24 Tim Janik 031c81f * clap-file-reference: ASE: clapplugin: clean up load_state() and save_state() ASE: *.cc: use operator<< where needed for serialization ASE: serialize.hh: add operator>> and operator<< to support pure const serialization ASE: serialize.hh: operator&: catch serialization into const at compile time ASE: project.cc: merge asset_hashes ASE: project.cc: use Error::NO_PROJECT_DIR if anklang.project is missing ASE: api.hh: add Error::NO_PROJECT_DIR ASE: clapplugin: implement file collection ASE: clapplugin.cc: save_state: request plugin_file_reference->save_resources() ASE: clapplugin.cc: add CLAP_EXT_FILE_REFERENCE skeleton ASE: serialize.cc: use TelemetryField for simple serialization tests ASE: serialize: support external serialize(T&,WritNode&) impls via ADL ASE: serialize.cc: test tuple serialization ASE: project.cc: loader_resolve: lookup and resolve files from project dir ASE: project.cc: serialize file hashes as tuple array ASE: serialize.hh: serialize tuple<...> types UI: b/menubar.vue: use project.saved_filename() as "Save" location ASE: api.hh: add Project.saved_filename() ASE: Makefile.mk: upgrade to clap-1.1.1.tar.gz UI: b/app.js: use save_project() ASE: api.hh: rename Project.save_project() ASE: project.cc: canonicalize project file name when saving ASE: project: properly implement writer_collect() ASE: project: add API to collect external files ASE: strings: add strings_version_sort() ASE: path: add dircontains() to check dir hierarchy and compute relative path ASE: path: add copy_file(), use FICLONE ioctl to create CoW clone if possible Currently, FICLONE is supported under Linux for XFS and BTRFS. Use `filefrag -v` to detext or debug shared file extents. ASE: path: add file_size(), gracefully handle errors ASE: clapplugin: derive ClapPluginHandle from GadgetImpl ASE: api.hh: print user notes and allow `rest` argument ASE: api.hh: introduce Gadget._project() ASE: strings: add string_to_hex() ASE: main.cc: add --blake3 to test Blake3 hashing ASE: compress: add blake3_hash_file() and blake3_hash_string() ASE: storage: add stream_reader_from_file() ASE: Makefile.mk: compile BLAKE3 with SSE and AVX variants ASE: Makefile.mk: provide blake3.h from BLAKE3-1.3.1.tar.gz ASE: Makefile.mk: use SOURCE2_O MISC: config-uname.mk: add $(call SOURCE2_O) to create object extensions ASE: clapplugin.cc: fix warnings MISC: config-checks.mk: show sha256sum command used failing downloads Merge branch 'sse+fma-synth-engine' - build releases with SSE + FMA support # 2022-08-12 Tim Janik 5f77129 * sse+fma-synth-engine: ASE: Makefile.mk: build FMA variant iff MODE=production INSN=sse MISC: mkassets.sh: build releases with MODE=production INSN=sse MISC: Makefile.mk: remove INSN build remnants Merge branch 'fix-scripts' # 2022-08-12 Tim Janik a169887 * fix-scripts: MISC: mkassets.sh: handle unbound $V MISC: mkdeb.sh: handle unbound $V MISC: mkAppImage.sh: handle unbound $V MISC: dbuild.sh: handle unbound $V Merge branch 'dockerize-asset-builds' # 2022-08-11 Tim Janik 2fd2f5f * dockerize-asset-builds: MISC: Makefile.mk: adjust release-message MISC: Makefile.mk: export $V for build scripts MISC: Makefile.mk: simplify builds, merge upload-nightly and upload-release Makefile.mk: fix ls-tree.lst generation in tarballs MISC: mkassets.sh: extract release info, make AppImage MISC: mkAppImage.sh: move AppImage build logic here MISC: mkassets.sh: build binary packages from tarball MISC: mkdeb.sh: pass $V to make MISC: dbuild.sh: pass $V into docker env MISC: dbuild.sh: remove unused .dbuild/ handling MISC: Dockerfile.focal: reduce layers MISC: Dockerfile.focal: always become 'builder' user, prepare /ootbuild/ Merge branch 'arch-ci' # 2022-08-11 Tim Janik 76c6214 * arch-ci: .gitignore: add ignores GITHUB: workflows/testing.yml: cleanup after each platform build GITHUB: workflows/testing.yml: build and test on arch, cache arch docker image MISC: Dockerfile.arch: setup archlinux dependencies for building Anklang Use upstream CastXML, the AUR version seems outdated and broken. Merge branch 'docker-caching' # 2022-08-11 Tim Janik 433f9bd * docker-caching: MISC: dbuild.sh: skip TeX during docker image build with -T MISC: Dockerfile.focal: cleanup early to shrink docker image, possibly skip TeX MISC: dbuild.sh: use misc/Dockerfile.focal by default, remove -d, change -f MISC: Dockerfile.focal: rename from Dockerfile-apt, use FROM ubuntu:20.04 ASE: Makefile.mk: add missing dependencies for includes ASE: sortnet.hh: include for std::less Makefile.mk: use `ctags` executable GITHUB: workflows/testing.yml: fix cache-hit detection GITHUB: workflows/testing.yml: skip docker caching on cache miss GITHUB: workflows/testing.yml: invalidate cache if misc/dbuild.sh changes GITHUB: workflows/testing.yml: remove docker image test MISC: get rid of --no-tex and $NO_TEX (now unused) GITHUB: workflows/testing.yml: remove '--no-tex' Avoiding Tex installation was only needed without docker image caching. MISC: dbuild.sh: fix SIGPIPE when searching docker image for INITIALIZE MISC: dbuild.sh: debug wrong INITIALIZE setting MISC: dbuild.sh: use 'ubuntu:20.04' as base instead of 'ubuntu:focal' Both are tags for the same image, but the former is already present on Github's stock system. GITHUB: workflows/testing.yml: fix grep exit status GITHUB: workflows/testing.yml: invalidate cache if misc/Dockerfile-apt changes GITHUB: workflows/testing.yml: stop forcing a docker build step GITHUB: workflows/testing.yml: upgrade to actions/checkout@v2.4.2 GITHUB: workflows/testing.yml: cache docker image via github cache GITHUB: workflows/testing.yml: find version inside docker GITHUB: workflows/testing.yml: always use the same build arg for docker MISC: version.sh: ignore missing tags in Format:%(describe) workaround Merge branch 'dist-tarball' - create distribution tarballs # 2022-08-06 Tim Janik 50d9c06 Adjust versioning and build rules to support proper distribution tarballs that will build without .git/ history. * dist-tarball: MISC: Dockerfile-apt: provide zstd MISC: Makefile.mk: re-enable nightly asset builds Makefile.mk: work around git 2.25.1 not handling Format:%(describe:match) Ubuntu 20.04 still runs git 2.25.1. MISC: version.sh: work around git 2.25.1 not handling Format:%(describe:match) Ubuntu 20.04 still runs git 2.25.1. MISC: Dockerfile-apt: add universal-ctags MISC: dbuild.sh: recognize --help Makefile.mk: use wildcard for toplevel CLEANFILES MISC: Makefile.mk: list Nightly changes MISC: Makefile.mk: fix upload-release MISC: Makefile.mk: use TARBALL version for build-assets MISC: Makefile.mk: minor fixups MISC: Makefile.mk: only check-copyright if .git/ exists MISC: Makefile.mk: remove versioned ChangeLog generation Makefile.mk: ChangeLog: use slightly longer hashes Makefile.mk: fix ChangeLog range Makefile.mk: use ls-tree.lst to generate TAGS MISC: Makefile.mk: use ls-tree.lst DOC: Makefile.mk: use ls-tree.lst Makefile.mk: create and distribute ls-tree.lst MISC: config-utils.mk: provide only $(HAVE_GIT) which is true if .git/ exists Using the old WITHGIT or WITHOUTGIT did not really work. MISC: Makefile.mk: avoid -j, rely on MAKEFLAGS for parallel submakes MISC: Makefile.mk: build-nightly: create and build dist tarball MISC: dbuild.sh: use .dlcache subdir for dockerized ccache MISC: Makefile.mk: build-assets: build from sources in $(TARBALL) MISC: Makefile.mk: record and use artifacts in build-assets MISC: Makefile.mk: add 'build-version' rule MISC: Makefile.mk: call version.sh --make-nightly for nightly builds MISC: Makefile.mk: check nightly versions MISC: Makefile.mk: add 'versioned-manuals' rule DOC: Makefile.mk: use packaged doc/copyright if Git is missing GITHUB: workflows/testing.yml: build with --no-tex and SKIP_LATEX=true Only the PDF manuals need Tex, skipping LaTex installation significantly speeds up the CI builds. MISC: dbuild.sh: add --no-tex (replaces --tex) MISC: Dockerfile-apt: default to building with Tex DOC: Makefile.mk: build PDF manuals, unless SKIP_LATEX=true DOC: Makefile.mk: skip misc/mkcopyright.py if .git is not present MISC: mkdeb.sh: use `misc/version.sh --commit-hash` instead of git MISC: version.sh: add --commit-hash MISC: version.sh: remove extra version printout for --make-nightly MISC: version.sh: add --help and --make-nightly MISC: version.sh: use the same COMMITINFO for archives and .git repos Makefile.mk: dist: allow packaging with NEWS.md worktree changes Makefile.mk: simplify make dist Makefile.mk: add hard dependency on ctags-universal Builds from Git need ctags-universal to reliably generate TAGS for make dist. Makefile.mk: provide $(builddir) and $>/ early on Makefile.mk: check misc/version.sh execution ASE: Makefile.mk: add missing minizip/mz_zip.h dependency DOC: copyright.ini: list freeverb sources under Public Domain dedication DEVICES: freeverb/freeverb.cc: license under MPL-2.0 Merge branch 'freeverb' # 2022-07-31 Tim Janik 554794d * freeverb: DEVICES: freeverb/freeverb.cc: turn into a working AudioProcessor for Ase DEVICES: freeverb/freeverb.cc: make query_info() const, i.e. MT-Safe DEVICES: freeverb/freeverb.cc: move all code completely into Anon namespace DEVICES: freeverb/freeverb.cc: use explicit add_param() IDs and fix arguments DEVICES: freeverb: implement STK and VLC damping Avoid reinforcing feedback loop in the original damping code, by providing VLC and STK damping modes. The latter is likely closest to the original intention so it is now the default. This also reorders some parameters and removes the original freezing mode, that does not really make sense for Processors. DEVICES: freeverb/freeverb.cc: add Freeverb Processor DEVICES: freeverb/revmodel.cpp: fix missing `int i` decls DEVICES: freeverb/Freeverb*: remove unused vst files DEVICES: freeverb/: fix up whitespace and \n without \r everywhere DEVICES: freeverb/: Freeverb - free public domain reverb SOURCE CODE Freeverb - Free, studio-quality reverb SOURCE CODE in the public domain Written by Jezar at Dreampoint - http://www.dreampoint.co.uk DEVICES: freeverb/Makefile.mk: add source file to devices/4ase.ccfiles DEVICES: freeverb/GNUmakefile: allow subdir builds DEVICES: Makefile.mk: add dependencies, clean rule, etc for devices/ sources DEVICES: blepsynth/Makefile.mk: simply add source files to devices/4ase.ccfiles UI: b/contextmenu.vue: allow 0 as valid menuitem.uri value UI: b/cliplist.vue: only call non-null Shell.piano_current_tick() README.md: fix manual link Merge branch 'jack-driver' # 2022-07-29 Tim Janik cc1cb08 * jack-driver: DOC: ch-install.md: merge jack howto into driver-setup section DOC: ch-install.md: add chapter about download and installation ASE: main.cc: print the real executable_name() for --version and usage ASE: driver.cc: load jackdriver.so ASE: Makefile.mk: optionally build jackdriver.so MISC: config-checks.mk: check if jack.pc >= 0.125.0 is present Jack 0.125.0 ships with Ubuntu-20.04. ASE: driver-jack.cc: turn into a working PCM driver for Ase ASE: driver-jack.cc: adapto to Ase namespace ASE: merge original Jack driver by Stefan Westerfeld Initial version of Jack driver using the new driver API Add minimal jack howto Block SIGPIPE to avoid crashes when jackd dies Driver: return read and write latency for a pcm driver separately For instance for synchronizing the play position pointer ui with the audio buffering, you want to know how much write latency you have, but don't care about the amount of read latency. Add list with possible improvements from PR 31 https://github.com/tim-janik/beast/pull/31 Add some minor fixes as requested in review ASE: engine.cc: consistently calculate buffer size for multiple channels ASE: datautils.hh: add fast_copy() for floats and ints ASE: driver-alsa.cc: adjust debug messages, remove unused variable ASE: main.cc: require command line options to enable JSIPC logging Merge branch 'version-fixes' # 2022-07-29 Tim Janik 61e8d05 * version-fixes: ASE: remove unneeded version postfix from AnklangSynthEngine MISC: version.sh: fix development postfix for shallow versions MISC: version.sh: fix build id with development postfix MISC: Makefile.mk, version.sh: fix release tag missing 'v'-prefix ">Merge branch 'fix-raw-tex' # 2023-08-19 Tim Janik 64882dc * fix-raw-tex: UI: xbcomments.js: properly quote special characters in docs DOC: Makefile.mk: do not parse source comments as raw_tex Merge branch 'anklang-internals+jsdocs' # 2023-08-19 Tim Janik b554e80 * anklang-internals+jsdocs: UI: b/basics.js: small docu update DOC: Makefile.mk: integrate JS component docs into internal manual DOC: jsdoc2md.js: skip extra subsection indentation UI: Makefile.mk: optimize *.jscss build, fix anklang-internals.html dependency UI: b/*.js: use three hashes '###' to indent docu subsections Merge branch 'swesterfeld-piano-roll-move', closes #16 # 2023-08-03 Tim Janik ec26905 * swesterfeld-piano-roll-move: UI: b/piano-ctrl.js: support moving/copying notes with the mouse UI: b/cliplist.js: restore user manual docs Merge branch 'jsdoc-elements' # 2023-08-03 Tim Janik 9d0c8de * jsdoc-elements: DOC: poxystyle.css: fix dark theme colors DOC: jsdoc2md.js: use pandoc anchors everywhere with data-4search hints DOC: poxy.sh: forbid raw-html and support data-4search on UI: b/*.js: reformat documentation to use @class and @description commands See also: https://jsdoc.app/tags-description.html DOC: poxy.sh: parallelize JsDoc processing DOC: poxy.sh: fix exit code and compact markdown DOC: poxy.sh: add ui/ch-*.md files to poxy docs DOC: jsdoc2md.js: allow descriptions of virtual classes as docu sections DOC: copyright.ini: assign MPL-2 to ch-*.md documentation files DOC: Makefile.mk

Zrythm is a featureful and easy to use DAW, written in C using the GTK+3 toolkit.

Updated: 18 Aug, 2023

Added

  • Add bypass button to channel slot widgets and redesign
  • User manual: add section about UI scaling and Wayland
  • Center the region's contents horizontally in the editor on second double-click in the timeline
  • Add accessible roles to some widgets
  • Make faders accessible
  • New libsoxr dependency

Changed

  • Code refactoring: rename audio directory to dsp
  • Update Chinese (Simplified), Catalan, Swedish, Japanese translations
  • Use libsndfile + libsoxr instead of libaudec to load audio files

Fixed

  • Fix visual issues with JACK timebase master and transport client icon indicators
  • Fix off-by-one rounding issues in audio regions when changing BPM or sample rate
  • Fix crash when drawing channel send widgets
  • Fix issues with reuse and licenses

Removed

  • Remove libaudec (and by extension libsamplerate) dependency

Zrythm is a featureful and easy to use DAW, written in C using the GTK+3 toolkit.

Updated: 18 Aug, 2023

v1.0.0-beta.4.11

MusicBrainz Picard is a cross-platform application written in Python and is the MusicBrainz music tagger

Updated: 16 Aug, 2023

Bugfixes

  • PICARD-2186 - Windows installer fails to detect already running instance
  • PICARD-2688 - Windows: Portable version crashes when launched with -h
  • PICARD-2692 - Windows: Crash on startup after upgrade from 2.8 to 2.9
  • PICARD-2693 - Windows installer allows canceling the uninstaller
  • PICARD-2694 - Crash when re-opening options after closing without closing the scripting documentation dialog
  • PICARD-2695 - Crash in script editor when showing tooltips for some Unicode character codes
  • PICARD-2696 - Windows: Shift dragging files into Picard deletes the files on the filesystem
  • PICARD-2697 - Options "Restore Defaults" does not restore all defaults
  • PICARD-2698 - Windows: Permanent high CPU usage
  • PICARD-2710 - Files are not getting loaded on systems with 2 or less CPUs
  • PICARD-2713 - Stand alone instance mode does not work
  • PICARD-2714 - Windows: Portable installs should run as separate instances
  • PICARD-2718 - File selector for ripping log files does not show *.log files with the "All supported log files" filter

New Features

  • PICARD-1815 - Notification on plugin updates available
  • PICARD-2705 - Provide the new audio director relationship as tag

Improvements

midifilter.lv2 is a suite of LV2 plugins to filter MIDI events

Updated: 15 Aug, 2023

Properly constrain CC2Note mode control #36

LilyPond is a music engraving program, devoted to producing high-quality sheet music

Updated: 12 Aug, 2023

We are proud to announce the release of GNU LilyPond 2.24.2. 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 February 2023. This includes an update of the library for garbage collection, addressing crashes when compiling very large scores (several hundreds of pages) on Windows. 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.2

ProTracker 2 clone for Windows/macOS/Linux

Updated: 12 Aug, 2023

Make disk op. entry jumping case-insensitive

ProTracker 2 clone for Windows/macOS/Linux

Updated: 12 Aug, 2023
  • Bugfix: It was possible to scroll out of bounds in Disk Op. by using shift+key
  • Bugfix: Don't set "song unsaved" flag if text editing didn't make a change
  • Bugfix: Editing the Disk Op. path text would set the "song unsaved" flag (lol)
  • Bugfix: Using the "CLEAR" button while Edit. Op. or the about screen was open could lead to a screen redrawing issue
  • Disk Op. file entry jumping (left shift + key) now works a bit differently. If the last pressed jump key didn't change, cycle through pages if there are more matches to be found. This allows for quicker module finding. Thanks to Fireb0y for this suggestion!
  • Re-implemented the Pos Ed. pattern naming feature. Be aware that this data is not saved to the module, and is only used to temporarily keep track of the patterns while making the module. Yes, it's a quite crippled feature, but some people asked me to implement it again!
  • Code refactoring, a small portion of the code should be easier to understand now (still a long way to go...)
  • Windows/macOS: Updated SDL to v2.28.2
by KDE

Kdenlive is video and audio editing software with GPU rendering support. Great variety of video filters available.

Updated: 11 Aug, 2023

Create tag for 23.07.90

ChucK is a programming language for real-time sound synthesis and music creation

Updated: 10 Aug, 2023

chuck-1.5.1.0 release

Zrythm is a featureful and easy to use DAW, written in C using the GTK+3 toolkit.

Updated: 10 Aug, 2023

Added

  • Add toggle to hide deactivated tracks in track filter menu
  • Add right-click option to loop selection in timeline
  • Add option to append all track/lane objects to the current selection
  • Add tracklist preferences button with option to disable auto-arm
  • Add Crescendo, Flam, Flip H/V, Portato, Staccato, Legato, Strum MIDI functions
  • Implement MIDI clock (output) for syncing to Zrythm
  • Build: add requirements.txt for managing Python dependencies (for building docs, etc.)

Changed

  • Link scroll events on digital meter widgets (changes are only applied at the end of scrolls)
  • Build: re-enable some GCC analyzer checks and add new checks
  • Change order in track context menu
  • Subprojects: bump GTK and RtAudio versions
  • Cache previous and current transport info during processing
  • Various internal refactorings
  • Update Catalan, French, Japanese, Chinese (Simplified), Russian, Dutch, Hungarian, Italian, Indonesian, Spanish, Portuguese, Swedish translations
  • Log: print (?:?) instead of ((null):(null)) when function and line number are unknown
  • Add more error checking and print more debug info in the log

Fixed

  • Build: fix bundled plugin build with GCC 13
  • Fix app icon not showing on Wayland (StartupWMClass)

Zrythm is a featureful and easy to use DAW, written in C using the GTK+3 toolkit.

Updated: 10 Aug, 2023

v1.0.0-beta.4.10

JackTrip is a Linux, Mac OSX, or Windows multi-machine audio system used for network music performance over the Internet.

Updated: 07 Aug, 2023

What's Changed

Stargate is an all-in-one DAW and plugin suite

Updated: 04 Aug, 2023
Installation and troubleshooting guides

Download the Stargate DAW sample pack

Changelog
  • Sequencer: global solo and mute buttons: Now the buttons toggle solo and mute
    on all tracks instead of just clearing it, remembers which tracks were
    previously soloed or muted and can restore the previous settings after
    clearing
  • Sequencer: Better icon for horizontal scroll follows playback cursor
  • Item editor: Add a button to toggle looping the current item
  • Item Editor: Add a button to toggle soloing the track of the current item
  • Item Editor: MIDI Channel combobox: Add asterisk next to channels containing
    one or more MIDI events, allows the user to see at a glance which cnannels
    already contain events
  • Fix various bugs when closing a project without closing the app and then
    creating/opening another project
Checksums

Optionally, you can generate a sha256sum of the downloaded file and verify
that it matches this signature.

7e05649f55082805c65249a477920d4c741bc713a48846cce618ebe73d4ff099 stargate-23.08.1-1.x86_64.rpm de7661275620581d16bcc8e2956d6b092fe8627b47d94233314c43f9dd594b8e stargate-23.08.1-amd64.deb 46a47116dfa2842a2b10faaac2bbcf1bfaf74cab6dcc4822ed6af9ff73dbb965 StargateDAW-23.08.1-linux-x86_64.AppImage f72f00a38fc6cd603c3e76f300453f9e7e45ce518293c5a663b95428419768bc StargateDAW-23.08.1-win64-installer.exe b72dd4fecb180722a082d8f71940f0f801eff4cd05fc7f63eebb2bf9c8152462 StargateDAW-23.08.1-macos-intel-x86_64.dmg 0cf3a8c49b20696ac77cc20fd13c5c2ee796b0f15a41f7bb6f71039c7ef2d056 StargateDAW-23.08.1-macos-m1-arm64.dmg

Fully-featured audio plugin host, with support for many audio drivers, plugin and sound bank formats.

Updated: 04 Aug, 2023
  • Fix compatibility of plugin discovery with newer 2.6.x tools
  • Fix crash when using JACK under Linux ARM
  • Fix carla-lv2 pre-run with 0 frames
  • Fix carla-vst GUI for high-dpi screens
  • Fix carla-native-plugin library exported symbols
  • Show custom error message when trying to start JACK driver without JACK
  • Skip special treatment for LADISH (do not set session management hints)

Fully-featured audio plugin host, with support for many audio drivers, plugin and sound bank formats.

Updated: 04 Aug, 2023
  • Allow IPC during plugin discovery (controlled by external tools)
  • Expose a few extra APIs in carla-utils library
  • Install extra carla-utils related headers during make install
  • Fix invalid/empty LV2 paths for compatibility with lilv
  • Fix LV2 plugin state for plugin bridges
  • Fix showing engine device settings on systems without JACK
  • Fix usage with LMMS on Windows
  • Remove use of REAL_BUILD macro, no longer needed
  • Tweaks for integration in OBS
  • Other minor fixes and cleanup

JackTrip is a Linux, Mac OSX, or Windows multi-machine audio system used for network music performance over the Internet.

Updated: 04 Aug, 2023

What's Changed

  • Fixing potential crash on Windows within the AudioSettings dialog. by @mikedickey in #1127

Full Changelog: v1.10.0...v1.10.1

PipeWire is a server and user space API to deal with multimedia pipelines.

Updated: 04 Aug, 2023

0.3.77

Fasttracker II clone for Windows/macOS/Linux

Updated: 03 Aug, 2023
  • Bugfix: The 'pattern expand' feature was heavily broken and would mess up the pattern data (and potentially crash the program)
  • Bugfix: The program crash message could overflow and not show the full text on some systems

ChucK is a programming language for real-time sound synthesis and music creation

Updated: 03 Aug, 2023

chuck-1.5.0.8 release

Giada is an open source, minimalistic and hardcore music production tool. Designed for DJs, live performers and electronic music

Updated: 03 Aug, 2023

In Greek mythology, Echidna was a monster, half-woman and half-snake, who lived alone in a cave. She was the mate of the fearsome monster Typhon and was the mother of many of the most famous monsters of Greek myth.

Changelog:

  • Ability to change audio and MIDI engines on the fly — no need to restart Giada anymore when the audio and/or MIDI devices change. No need to restart also when changing several properties in the Configuration Window;
  • Add new "Clear" button next to all MIDI learning widgets to easily clear the MIDI binding (#486);
  • Set default resampler quality to "Linear" (the fastest one);
  • Update FLTK to latest commit available;
  • Update JUCE to version 7.0.5;
  • Fix Velocity parameter not being usable in Action Editor;
  • Fix MIDI Channel parameter not being usable in MIDI input configuration;
  • Code refactoring and other architectural improvements.

Anklang, a digital audio synthesis application for live creation and composition

Updated: 03 Aug, 2023

Anklang 0.1.0.nightly2308031029

Development version - may contain bugs or compatibility issues.

UI: b/*.js: reformat documentation to use @class and @description commands See also: https://jsdoc.app/tags-description.html DOC: poxy.sh: parallelize JsDoc processing DOC: poxy.sh: fix exit code and compact markdown DOC: poxy.sh: add ui/ch-*.md files to poxy docs DOC: jsdoc2md.js: allow descriptions of virtual classes as docu sections DOC: copyright.ini: assign MPL-2 to ch-*.md documentation files DOC: Makefile.mk: integrate ui/ch-component.md Makefile.mk: add html/ to CLEANDIRS Makefile.mk: clean poxy/ and assets/ DOC: ch-development.md: explicitely describe ASE UI: ch-component.md: describe lit components UI: ch-component.md: rename from ui/b/ch-vue.md README.md: add Star History Chart Merge branch 'toggle-as-lit' # 2023-08-03 Tim Janik 0eba7de * toggle-as-lit: UI: b/pro-input.vue: handle @valuechange on b-toggle UI: b/toggle.js: port to LitComponent Merge branch 'x11test-delay' # 2023-08-02 Tim Janik 8712b43 * x11test-delay: X11TEST: ereplay.cjs: add delay to mitigate a UI-reload race on project changes X11TEST: replay.sh: simplify AnklangSynthEngine executable check Merge branch 'poxy-on-jammy' # 2023-08-02 Tim Janik 3be13e1 * poxy-on-jammy: GITHUB: workflows/testing.yml: run poxy on ubuntu:22.04 MISC: docker_run: fix interactive invocations MISC: Dockerfile.jammy: setup development tools for ubuntu:22.04 builds Merge branch 'make-dist-and-assets' # 2023-07-31 Tim Janik 4694aa8 * make-dist-and-assets: GITHUB: workflows/release.yml: add Ping-IRC job GITHUB: workflows/release.yml: use misc/docker_run GITHUB: workflows/release.yml: add action to build & create releases from tags Makefile.mk: dist: assign release version to misc/version.sh:BAKED_DESCRIBE MISC: version.sh: prepare BAKED_DESCRIBE variable to define baked in version MISC: version.sh: support lightweight release tags via exact match UI: Makefile.mk: fix unintentional tscheck remakes DOC: Makefile.mk: add doc/ch-releasing.md to internal manual ASE: Makefile.mk: rebuild ase/buildversion*.cc if GITCOMMITDEPS changes Makefile.mk: rebuild package.json if GITCOMMITDEPS changes MISC: config-utils.mk: take tags and packed-refs into account for GITCOMMITDEPS DOC: ch-releasing.md: elaborate on releases and assets DOC: ch-releasing.md: start describing versioning and the release process MISC: mknews.sh: add development version disclaimer MISC: Makefile.mk: remove partial release build rules MISC: mkassets.sh: simplify to just make dist and trigger release asset builds MISC: mkAppImage.sh: build AppImage in assets/ MISC: mkAppImage.sh: use tools from appimagetools/ dir MISC: Makefile.mk: cache downloads of appimage tools Makefile.mk: make dist: also generate assets/ChangeLog MISC: mkdeb.sh: create debian package in assets/ DOC: Makefile.mk: support building assets/pdf MISC: Makefile.mk: avoid depending on appimage-runtime-zstd for normal builds UI: tsconfig.json: remove exclude section Makefile.mk: grep-reminders: only inspect existing files Makefile.mk: add recent commits to NEWS.md Makefile.mk: build dist tarball in assets/ with high compression ASE: main.cc: for --version, show short version and build id MISC: config-checks.mk: use version_short ELECTRON: Makefile.mk: use version_short ASE: Makefile.mk: use version_short Makefile.mk: extract version_hash, use version_short for brief version identifiers * Remove version_m.m.m use version_short instead * Remove version_buildid, that is actually version_short + version_hash MISC: Makefile.mk: remove unused release-news MISC: mknews.sh: generate most recent section of NEWS.md MISC: mkdeb.sh: parse hash from misc/version.sh MISC: version.sh: reduce logic to produce baked/git/fallback version/hash/date Merge branch 'docker_build_run_clean' # 2023-07-31 Tim Janik acafef2 * docker_build_run_clean: GITHUB: workflows/testing.yml: remove duplicate chown invokation GITHUB: workflows/testing.yml: use misc/docker_build, docker_run, docker_clean MISC: docker_clean: cleanup permissions and CI image tag MISC: docker_run: run in a CI image built by docker_build MISC: docker_build: build a Dockerfile CI image with ghcr.io cache support UI: Makefile.mk: make sure all JS files are built before running tscheck Merge branch 'swesterfeld-piano-roll-note-length', closes #15 # 2023-07-27 Tim Janik d115723 * swesterfeld-piano-roll-note-length: UI: b/piano-ctrl.js: cleanup note_duration_delta at the end of a drag UI: b/piano-ctrl.js: support resizing multiple notes in a selection Merge branch 'simple-vue-ports' # 2023-07-27 Tim Janik 1c13e75 * simple-vue-ports: UI: Makefile.mk: adapt make install wildcards UI: b/statusbar.js: port to LitComponent UI: b/databubble.js: port to native HTML component UI: b/partthumb.vue: retire partthumb which is superceded by clipview UI: b/hscrollbar.vue: retire hscrollbar code until we really need one UI: b/color-picker.vue: retire color picker code until we really need one Merge branch 'global-css-rename' # 2023-07-27 Tim Janik c402d5e * global-css-rename: UI: index.html: load global.css UI: Makefile.mk: generate global.css UI: b/shell.vue: fix comment UI: global.scss: rename (from globals.scss) b/c it now contains global CSS Merge branch 'globalscss-icon-fonts' # 2023-07-27 Tim Janik 7a7dd7e * globalscss-icon-fonts: UI: b/app.js: add comment for spinner testing UI: index.html: adjust font resource paths UI: globals.scss: import all icon SCSS defs UI: dom.js: properly quote font names ASE: websocket.cc: use CACHE_AUTO since we do not handle conditional requests UI: b/menuseparator.js: fix customElements extends specification UI: b/icon.js: leave icon font loading to globals.scss, assert font presence UI: b/shell.vue: spinner.scss is already imported by globals.scss UI: Makefile.mk: move fonts into ui/ and merge globals.scss dependencies UI: globals.scss: rename normalize.scss for merging import UI: postcss.js: keep .css imports, include all others UI: b/icon.js: assert "Material Icons" font_family instead of loading material-icons.css UI: globals.scss: directly include material-icons.css UI: Makefile.mk: prepare ui/material-icons.css for globals.css UI: dom.js: add font_family_loaded() UI: dom.js: add file for DOM utilities Merge branch 'csshash-2fix-fouc' # 2023-07-27 Tim Janik 0b1e7e7 * csshash-2fix-fouc: UI: index.html: mark globals.css as data-4litcomponent UI: little.js: clone stylesheet links marked data-4litcomponent into shadowRoot UI: index.html: reload vue-styles.css and globals.css once the CSSHASH changes UI: Makefile.mk: support @--CSSHASH--@ insertions fro index.html ASE: websocket.cc: send "forever" Cache-Control with text/css to reduce FOUC Merge branch 'globalscss-4-litcomponents' # 2023-07-27 Tim Janik 709f4e9 * globalscss-4-litcomponents: UI: Makefile.mk: run stylelint on ui/globals.css UI: b/positionview.js: add CSS to globals.css, avoid shadowRoot UI: b/playcontrols.js: add CSS to globals.css, avoid shadowRoot UI: b/pianoroll.js: add CSS to globals.css, avoid shadowRoot UI: b/partlist.js: add CSS to globals.css, avoid shadowRoot UI: globals.scss: only style button and push-button for LightDOM UI: b/objecteditor.js: add CSS to globals.css, avoid shadowRoot UI: b/switchinput.js: add CSS to globals.css, avoid shadowRoot UI: b/numberinput.js: add CSS to globals.css, avoid shadowRoot UI: b/textinput.js: add CSS to globals.css, avoid shadowRoot UI: b/more.js: add CSS to globals.css, avoid shadowRoot UI: b/tracklist.js: add CSS to globals.css, avoid shadowRoot UI: b/trackview.js: add CSS to globals.css, avoid shadowRoot UI: b/menubar.js: fix b-menuseparator UI: b/trackview.js: fix b-menuseparator UI: b/menutitle.js: add CSS to globals.css UI: b/menuseparator.js: make b-menuseparator a simple HTMLHRElement UI: b/menurow.js: add CSS to globals.css, avoid shadowRoot UI: b/menuitem.js: add CSS to globals.css UI: b/menubar.js: add CSS to globals.css, avoid shadowRoot UI: b/knob.js: add CSS to globals.css, avoid shadowRoot UI: b/icon.js: add CSS to globals.css UI: b/editable.js: add CSS to globals.css UI: b/contextmenu.js: add CSS to globals.css UI: b/clipview.js: add CSS to globals.css, avoid shadowRoot UI: b/cliplist.js: add CSS to globals.css, avoid shadowRoot UI: b/choiceinput.js: add CSS to globals.css, avoid shadowRoot UI: b/buttonbar.js: add CSS to globals.css, avoid shadowRoot UI: b/basics.js: add CSS to globals.css, cleanups UI: b/aboutdialog.js: add CSS to globals.css, avoid shadowRoot UI: globals.scss: merge contents of grid.scss UI: Makefile.mk: fix globals.scss cleanup UI: Makefile.mk: include *.jscss contents in globals.css Merge branch 'postcss-normalize-charset' # 2023-07-27 Tim Janik 746575f * postcss-normalize-charset: UI: postcss.js: postprocess CSS with postcss-normalize-charset MISC: package.json.in: install postcss-normalize-charset UI: postcss.js: add support for -I to add include paths Merge branch 'aboutdialog-lit' # 2023-07-27 Tim Janik 874535f * aboutdialog-lit: UI: index.html: add comments to start_view_transition() UI: globals.scss: add b-dialog styling UI: b/contextmenu.js: use transparent backdrop for menus UI: globals.scss: add view-transition-group defaults, add scale0 keyframes UI: dark.scss: add b-animation-duration and b-dialog-colors UI: tsconfig.json: avoid checks of postcss.js.tst.js UI: b/menubar.js: make use of Shell.show_about_dialog() UI: b/app.js: leave aboutdialog handling to Shell.show_about_dialog() UI: b/shell.vue: use b-aboutdialog.shown, add show_about_dialog(), handle close * Use proper internal state for showing b-aboutdialog * Expose showing/hiding through show_about_dialog() * Allow animated closing of b-aboutdialog with start_view_transition UI: b/aboutdialog.js: display Lit version number UI: b/aboutdialog.js: port to LitComponent UI: eslintrc.js: declare start_view_transition as global symbol UI: index.html: define start_view_transition() This is a Vue-aware wrapper around document.startViewTransition() (atm Chrome specific), that still does the right thing on Firefox and has a disable flag. UI: Makefile.mk: index.html: add lit_version to config_json Merge branch 'dark-palette' # 2023-07-24 Tim Janik 61e1ecd * dark-palette: UI: dark.scss, globals.scss: use palette for body colors UI: Makefile.mk: add palette.scss to scss files UI: palette.scss: add warm grey palette based on ZCAM Jz (lightness) steps Merge branch 'modern-normalize' # 2023-07-24 Tim Janik aa3a6b6 * modern-normalize: UI: little.js: load globals.css into every LitComponent UI: index.html: give globals.css precedence over vue-styles.css UI: index.html: remvoe shadow.css UI: Makefile.mk: remove ui/elements.scss ui/shadow.scss Makefile.mk: run 'lint' during `make check` UI: remove unused files elements.scss and shadow.scss UI: globals.scss: merge styles from elements.scss and shadow.scss UI: globals.scss: use normalize.css to normalize latest Chrome & Firefox UI: normalize.css: leave font-family setting to our own theme MISC: mkcopyright.py: fix MIT License pattern to deal with case and 'd'-ending UI: normalize.css: insert MIT License and add Copyright notices UI: normalize.css: add renamed modern-normalize.css version 2.0.0 Add modern-normalize.css from https://github.com/sindresorhus/modern-normalize licensed MIT. Merge branch 'poxystyle' # 2023-07-24 Tim Janik 7134954 * poxystyle: DOC: poxy.sh: allow doc/poxystyle.css to fixup colors DOC: poxystyle.css: fix light theme colors and sizes UI: b/cliplist.js: minor edit README.md: update roadmap with items from Stefan Westerfeld Merge branch 'ts-check-lit-components', add ts-check and fix lint issues # 2023-07-03 Tim Janik a7ea5f4 * ts-check-lit-components: UI: b/app.js: reload UI on project changes UI: b/objecteditor.js: fix output UI: util.js: add missing type annotations UI: kbd.js: add missing type annotations UI: b/trackview.js: add @ts-check and missing type annotations UI: b/tracklist.js: add @ts-check and missing properties UI: b/playcontrols.js: add @ts-check UI: b/pianoroll.js: add @ts-check and missing type annotations UI: b/piano-ctrl.js: minor type fix UI: b/partlist.js: add @ts-check UI: b/more.js: add @ts-check UI: b/menutitle.js: add @ts-check UI: b/menuseparator.js: add @ts-check UI: b/menurow.js: add @ts-check UI: b/menuitem.js: add @ts-check UI: b/knob.js: add @ts-check and missing type annotations UI: b/editable.js: add @ts-check UI: b/contextmenu.js: add @ts-check and missing type annotations UI: b/clipview.js: add @ts-check and missing type UI: b/buttonbar.js: add @ts-check README.md: escape FIXME keywords UI: Makefile.mk: grep for reminders in ui/lint DEVICES: Makefile.mk: grep for reminders in devices/lint Makefile.mk: at the end of 'all', grep for reminder keywords in known sources Makefile.mk: ls-tree.d needs GITCOMMITDEPS, i.e. misc/config-utils.mk ASE: Makefile.mk: grep for reminders in ase/lint Makefile.mk: add 'lint' as toplevel phony rule UI: b/tracklist.js: cleanup CSS UI: b/textinput.js: cleanup CSS UI: b/switchinput.js: cleanup CSS UI: b/shell.vue: cleanup CSS UI: b/positionview.js: cleanup CSS UI: b/pianoroll.js: cleanup CSS UI: b/noteboard.vue: cleanup CSS UI: b/menutitle.js: cleanup CSS UI: b/menurow.js: cleanup CSS UI: b/menuitem.js: cleanup CSS UI: b/knob.js: cleanup CSS UI: b/icon.js: cleanup CSS UI: b/folderview.vue: cleanup CSS UI: b/filedialog.vue: cleanup CSS UI: b/editable.js: cleanup CSS UI: b/dialog.vue: cleanup CSS UI: b/databubble.vue: cleanup CSS UI: b/contextmenu.js: cleanup CSS UI: b/clipview.js: cleanup CSS UI: b/basics.js: inlcude v-flex mixin UI: theme.scss: fix color syntax UI: startup.js: fix import path UI: Makefile.mk: use stylelint with -f unix only inside emacs UI: Makefile.mk: add missing ui/spinner.scss dependency UI: stylelintrc.cjs: ignore whitespace rules UI: Makefile.mk: add Ase.server @type UI: mixins.scss: add v-flex mixin UI: mixins.scss: use $b-font-stack-kbd-mono UI: dark.scss: define $b-font-stack-kbd-mono for hotkey rendering UI: b/menubar.js: port to LitComponent * Cleanup markup * Cleanup CSS UI: b/positionview.js: port to LitComponent UI: b/basics.js: use h-flex() UI: mixins.scss: add h-flex() mixin MISC: Dockerfile.arch: install unzip Merge branch 'inputs-as-litelement' # 2023-06-27 Tim Janik 2ddfe22 * inputs-as-litelement: X11TEST: play-notes.json: adjust recording for new web components ASE: server.cc: listen on "notify" emissions from properties ASE: properties.cc: fix notifications, emit notify:identifier UI: util.js: turn xprop.value_ into a reactive property UI: b/choiceinput.js: take b-objecteditor into account in CSS UI: b/pro-input.vue: use @valuechange on b-choiceinput UI: b/preferencesdialog.vue: use b-objecteditor UI: util.js: avoid extending the same property twice UI: util.js: export fullstop() UI: Makefile.mk: use tsc with --pretty false only inside emacs UI: b/objecteditor.js: port to LitComponent * Turn into shadowless component * Properly prefix CSS classes * Listen on and handle @valuechange events * Do not freeze extended properties that we keep mutating * Remove old resize blocker logic UI: startup.js: load basic custom components early on UI: b/basics.js: move h-flex, v-flex, c-grid, push-button here, shadowless Make these simple basic containers shadowless, i.e. without shadow root. UI: b/pro-input.vue: add support for b-choiceinput UI: little.js: export 'nothing' from Lit UI: types.d.ts: add debug() global UI: b/fed-object.vue: add support for b-choiceinput UI: b/choiceinput.js: port to LitComponent, render on demand only UI: b/tracklist.js: fix stacking of top border shadow UI: b/switchinput.js: allow LEFT/RIGHT/UP/DOWN to toggle UI: b/fed-object.vue: add support for b-switchinput UI: b/switchinput.js: port to LitComponent UI: types.d.ts: declare global CONFIG UI: b/fed-object.vue: add support for b-numberinput UI: b/numberinput.js: simplify and fix sizing UI: b/numberinput.js: port to LitComponent UI: b/textinput.js: dispatch value changes as valuechange "event" Merge branch 'fix-lit-html' # 2023-06-22 Tim Janik 31da2dd * fix-lit-html: UI: b/*.js: fix trailing-solidus in html`` markup UI: eslintrc.js: add plugin:lit/recommended to linting rules MISC: package.json.in: install eslint-plugin-lit Merge branch 'InterDisplay', based on InterVariable-4.0 font # 2023-06-22 Tim Janik 89c9d01 * InterDisplay: UI: dark.scss: add a fallback font stack UI: theme.scss: remove outdated font stuff UI: mixins.scss: move b-kbd-hotkey here UI: elements.scss: use b-font-weight-bold() and b-font-weight-bolder() UI: b/*.vue, b/*.js: use b-font-weight-bold() and its variants UI: dark.scss: define b-font-weight-{normal|bold|bolder} mixins UI: b/menutitle.js: use drop-caps while InterVariable-4.0 small-caps are broken See also: https://github.com/rsms/inter/issues/556#issuecomment-1598010623 UI: elements.scss: leave font handling to theme, globals and shadow UI: b/pianoroll.js: use b-canvas-font UI: b/partthumb.vue: use b-canvas-font UI: b/clipview.js: use b-canvas-font UI: shadow.scss: use b-ui-font() inside shadow DOMs UI: globals.scss: make use of b-ui-font() UI: dark.scss: configure b-ui-font() for "InterVariable" in InterDisplay style UI: globals.scss: leave font-face defs to index.html UI: index.html: cleanup preloads, add @font-face for "InterVariable" UI: b/icon.js: add small comment UI: Makefile.mk: download InterVariable.woff2 UI: stylelintrc.cjs: disable "font-family-name-quotes" to allow quoted font names Merge branch 'component-styling' # 2023-06-21 Tim Janik 234bf99 * component-styling: UI: b/playcontrols.js: use JsExtract.css_url() UI: b/icon.js: use JsExtract.css_url() UI: b/textinput.js: make this a shadowless component UI: little.js: add JsExtract.css_url() UI: little.js: use cast to work around TS2425 UI: b/playcontrols.js: port to LitComponent UI: Makefile.mk: remove temporary file UI: b/*.vue: remove useless mixins import UI: index.html: import globals.css UI: globals.scss: import elements.scss which includes mixins UI: Makefile.mk: create globals.css and auto-import mixins.scss for vue styles UI: elements.scss: rename from domstyles.scss UI: b/button-bar.vue: port to LitComponent UI: b/*.js: access only LitComponent fields (not LitElement) UI: little.js: remove LitElement export UI: startup.js: derive from LitComponent (not LitElement) UI: b/*.js: derive from LitComponent (not LitElement) UI: b/partlist.js: embed and load CSS via JsExtract UI: Makefile.mk: fix dependenc for scss rebuilds UI: b/partlist.js: import Util UI: types.d.ts: declare __DEV__ global UI: b/pianoroll.js: extend LitComponent and use reactive_wrapper to track notes Also, merge multiple repaint requests into the same micro task. UI: b/clipview.js: leave width to parent UI: b/cliplist.js: set 'data-f1' only once suffices UI: b/trackview.js: render b-trackview context menu on demand UI: b/contextmenu.js: fix close() and synchronize updates * await this.updateComplete before showModal() * properly emit 'close', take nesting into account UI: b/partlist.js: port to LitElement UI: mixins.scss: add transparent-scrollbars mixin Merge branch 'clang-tidy' # 2023-06-18 Tim Janik 29cc5ff * clang-tidy: MISC: mkassets.sh: always use /tmp/anklang-mkassets/ for release builds GITHUB: workflows/testing.yml: fix key file permissions GITHUB: workflows/testing.yml: fixup permissions at CI end GITHUB: workflows/testing.yml: remove missing variable reference GITHUB: workflows/testing.yml: fix arch perms and focal redirection GITHUB: workflows/testing.yml: use $DOCKER_RUN and ghcr.io for all tasks * use $DOCKER_RUN and ghcr.io caching for Focal-Docs * adjusting git.safe.directory is not needed for Lunar * use $DOCKER_RUN and ghcr.io caching for Arch-Replay MISC: Dockerfile.focal: remove unused RUNs, rename user to ubuntu * remove unused OOTBUILD, rename builder user to ubuntu * add a comment howto build and run this image * use fixed user and group id of 1000 MISC: Dockerfile.arch: use fixed user and group ids of 1000 MISC: Dockerfile.arch: remove unused OOTBUILD and unused poxy MISC: Dockerfile.lunar: remove unused OOTBUILD GITHUB: workflows/testing.yml: directly use docker run for lunar and fix perms MISC: Dockerfile.lunar: upgrade to nodejs-20 MISC: package.json.in: upgrade npm build tools and electron-25 MISC: package.json.in: remove unused rollup-plugin-node-resolve MISC: Makefile.mk: fix missing directory dependency GITHUB: workflows/testing.yml: add Lunar-Clang-Tidy, rename Focal-Docs MISC: Dockerfile.lunar: provide build environment with clang-17 on ubuntu:23.04 MISC: colorize.sh: colorize error, warning, note and special case Emacs MISC: Makefile.mk: reimplement clang-tidy and clang-tidy-clean rules Makefile.mk: defined CLANG_TIDY Makefile.mk: create ls-tree.d and provide $(LS_TREE_LST) Merge branch 'sorted-vector' # 2023-06-08 Tim Janik 7b3b380 * sorted-vector: ASE: sortnet: implement SortedVector ASE: testing.hh: TFLOATS(): assert float equality within an apsilon ASE: combo.cc: add SPL link Merge branch 'swesterfeld-fix-pcg-ub' # 2023-06-07 Tim Janik 1d49d48 * swesterfeld-fix-pcg-ub: ASE: randomhash: fix undefined behaviour in Pcg32Rng Left shifting a 32bit value by 32 bits is UB. * Closes #14 Merge branch 'appimage-rpath-fix' # 2023-06-07 Tim Janik f609e1e * appimage-rpath-fix: MISC: mkAppImage.sh: avoid `linuxdeploy {-e|-l}` which change binary locations Avoid `linuxdeploy {-e|-l}`, these options change the binary locations by copying. The copies mess up ELF location detection and restoring the original locations causes wrong relative $ORIGIN paths. We just use --deploy-deps-only now, which keeps the binaries in place and correctly adjusts the relative $ORIGIN path. MISC: mkAppImage.sh: remove unused command Merge branch 'appimage-dependencies' # 2023-06-06 Tim Janik 1696a12 * appimage-dependencies: MISC: mkAppImage.sh: reduce workarounds by using linuxdeploy --deploy-deps-only MISC: mkAppImage.sh: add ELF dependencies for AnklangSynthEngine and gtk2wrap This adds libFLAC.so, libogg.so, libopus.so and libgdk-x11-2.0.so, libgtk-x11-2.0.so to the AppImage. Closes #13. Merge branch 'fix-imports' # 2023-06-06 Tim Janik 1b47b9e * fix-imports: UI: util.js: add missing Kbd import UI: eslintrc.js: remove 'Util' global UI: b/*.vue: add missing Util imports UI: b/*.js: add missing Util imports Merge branch 'jsdoc-tsimport' # 2023-06-05 Tim Janik c184b5e * jsdoc-tsimport: UI: b/cliplist.js: jsdoc-tsimport-plugin does not support a blank after import DOC: jsdocrc.json: use jsdoc-tsimport-plugin to parse tsc file imports * Fix JsDoc choking on typescript import statements that import typed from other JS files. * See also: https://github.com/jsdoc/jsdoc/issues/1645#issuecomment-768293857 MISC: package.json.in: install jsdoc-tsimport-plugin Merge branch 'typescript-jsdoc-checks' # 2023-06-05 Tim Janik 819895c * typescript-jsdoc-checks: UI: types.d.ts: allow App, Data, Shell Ase globals UI: index.html: add importmap to allow lit module imports UI: tsconfig.json: configure typescript checks, allow JS type checks + imports UI: wrapper.js: add @param type UI: little.js: add @ts-check, add types, add explicit exports for tsc UI: b/app.js: add @ts-check and missing property decl UI: b/cliplist.js: add @ts-check, missing imports, exports and initializations UI: b/clipview.js: export class UI: wrapper.js: add @ts-check and type annotations UI: b/statusbar.vue: use material icons for info and instrument panel UI: b/icon.js: fix material-icons size UI: Makefile.mk: add 'tscheck', 'stylelint' and 'lint' rules * add 'lint' dependency to run all of stylelint eslint tscheck * add 'tscheck' rule to selectively run typescript checks * add explicit 'stylelint' rule * simplify lit.js rollup * ui/vue.js: leave eslint cache alone * install material-icons from npm * cleanup eslint rule * ui/rebuild: avoid bg jobs, no need to print dir in sub MAKE MISC: package.json.in: cleanup serve and rebuild scripts MISC: package.json.in: remove eslint script, use make eslint instead MISC: package.json.in: install material-icons@1.13.6 Makefile.mk: whitespace fix GITHUB: workflows/testing.yml: use git fetch --unshallow Apparently `git fetch --shallow-since` does not work with the merge commit created by PR checkouts. Using `git fetch --unshallow` might be less efficient for regular branches, but at least works with trunk and PRs. MISC: package.json.in: upgrade lit, electron, vue, postcss, etc UI: b/pianoroll.js: fix indicator interacting with the cursor MISC: package.json.in: install typescript to enable code checks Merge branch 'nightly-version' # 2023-05-20 Tim Janik 8459bbb * nightly-version: MISC: Makefile.mk: update Nightly releases to avoid excessive emails MISC: gh_delete_assets.sh: add script to delete all release assets via gh README.md: update documentation links MISC: version.sh: use 0.1.2.dev3 for development versions for proper ordering Using .dev[0-9] postfixes properly sorts: 0.1.2 < 0.1.2.dev3 < 0.1.3 This works for sort -V, dpkg, rpm and PIP versions. See: https://peps.python.org/pep-0440/#public-version-identifiers MISC: Makefile.mk: fix typo Merge branch 'ci-build-updates' # 2023-05-19 Tim Janik 580cf66 * ci-build-updates: MISC: Makefile.mk: use gh, keed *-dev version number for Nightly releases * Use gh instead of hub to create releases * Keep the development version number for Nightly releases * Add a brief disclaimer about Nightly releases MISC: version.sh: simplify, support --commit-date and $RELEASE_VERSION GITHUB: workflows/testing.yml: add named step "Fetch last release tag" GITHUB: workflows/testing.yml: fetch git history since last release tag GITHUB: workflows/testing.yml: update ping deps GITHUB: workflows/testing.yml: fix workflow names GITHUB: workflows/testing.yml: run (full) docu upload on Ubuntu GITHUB: workflows/testing.yml: run X11 tests on Arch DOC: poxy.sh: include all Anklang docs in upload MISC: Dockerfile.focal: install pip, doxygen and poxy MISC: Dockerfile.focal: install twm for x11test MISC: Dockerfile.arch: install libgtk3 and libnss for Electron MISC: Dockerfile.arch: install xvfb ffmpeg twm for x11test-v X11TEST: x11rec.sh: switch to using twm with auto placement GITHUB: workflows/testing.yml: use full doc/ install dir as doc artifact GITHUB: workflows/testing.yml: test clang builds under Ubuntu GITHUB: workflows/testing.yml: remove unused env var from Arch build rule Merge branch 'g++-fixes' # 2023-05-17 Tim Janik 8404380 * g++-fixes: ASE: cxxaux.hh: fix internal member typedef name ASE: cxxaux.hh: use std::conditional_t<> for rebind::other, fix for g++-12 With template specializations, g++-11 and g++-12 error out with "explicit specialization in non-namespace scope", so we use std::conditional_t<> which seems to work with g++-12 and clnag++-15. Merge branch 'libstdc++-13' # 2023-05-17 Tim Janik c0f01a0 * libstdc++-13: ASE: cxxaux.hh: patch up make_shared() to make libstdc++13 happy * Move shared ptr allocator out of function scope (to allow template specialization) * Add rebind<> template to shared ptr allocator which derives from std::allocator * Specialize rebind<> so it yields the same allocator for only the shared ptr value type * This "fixes" two static assertions that were added in libstdc++13, see: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=72792#c12 ASE: cxxaux.hh: remove unused FriendAllocator<> ASE: cxxaux.hh: fix missing include ASE: loop.hh: always use ASE_DEFINE_MAKE_SHARED() to implement make_shared() ASE: formatter.hh: include cstdint for int32_t ASE: clapplugin.cc: add missing braces for clap_event_transport_t initializer UI: wrapper.js: add missing Util import Makefile.mk: add simple rule to generate +compile_commands.json Merge branch 'transportinfo', closes #5 # 2023-05-12 Tim Janik 3819f90 * transportinfo: ASE: clapplugin: provide transport information for the plugin MISC: config-uname.mk: link -shared: allow undefined symbols with sanitizers Merge branch 'build-time-postcss' # 2023-03-15 Tim Janik 54353a7 * build-time-postcss: UI: split styles into dark, grid, domstyles, mixins, shadow, globals SCSS files globals.scss: styles for the LightDOM only shadow.scss: styles only for ShadowDOM components domstyles.scss: common styles for the LightDOM and ShadowDOM grid.scss: provide helpers mixins.scss: base to customize components dark.scss: basic theme, allow switching via import $themename_scss; cursors/cursors.css: provide CSS variables for custom cursors UI: cursors/cursors.css: fix quotes UI: cursors/cursors.css: introduce --svg-cursor-* variables at :root{} scope This is needed to make cursors.css actualy valid CSS. UI: index.html: remove postfix and css validator, load vue-styles.css, fix preloads UI: b/clipview.js: use zcam directly UI: b/*.js: embed and load CSS via JsExtract UI: b/positionview.vue: use $b-lcdscreen-fg, $b-lcdscreen-bg UI: b/: fix $b-button-radius $b-button-radius $b-track-meter-gap $b-track-meter-thickness UI: b/pianoroll.js: import grid.scss UI: b/positionview.vue: use t-lcdscreen-fg, t-lcdscreen-bg UI: b/trackview.js: add --track-meter-thickness, --track-meter-gap UI: b/*.vue: use --button-radius UI: b/*.js: use --button-radius UI: b/*.js: use var(--button-radius); UI: b/*.vue: use var(--button-radius); UI: b/deviceeditor.vue, b/pro-group.vue: use --device-radius UI: b/shell.vue: remove unused styles UI: b/pianoroll.js: remove useless color assignment UI: b/textinput.js: include mixins.scss to use SCSS variable UI: b/menuseparator.js: include mixins.scss to use SCSS variable UI: b/*.js: extend componenets from LitComponent instead of LitElement UI: b/dialog.vue: inline box-shadow styling UI: b/pianoroll.js: import grid helpers from grid.css UI: b/menubar.vue: specify 'justify-content: space-between' directly UI: b/pianoroll.js: rely on global cursors.css import UI: startup.js: remove unused postcss import UI: jsextract.js: document jsextract.js usage UI: jsextract.js: extract JsExtract.scss`` marker snippets into *.jscss files UI: little.js: document JsExtract usage UI: little.js: fix .css URL construction to always have an extension UI: little.js: load into shadow roots UI: little.js: add ./shadow.css to LitComponent UI: little.js: remove postcss UI: little.js: export JsExtract with scss`` and fetch_css() UI: little.js: add default define $themename_scss:dark.scss; Also, disable csstree-validator which yields outdated warnings. UI: little.js: load shadow.scss into all LitComponent elements UI: little.js: LitComponent: always adopt shadow.css in createRenderRoot() UI: little.js: CSS import: remove premature fetch + caching, always import all UI: little.js: remove cursors/cursors.css from memorized imports MISC: package.json.in: add stylelint MISC: package.json.in: remove perfectionist-dfd UI: sfc-compile.js: extract *.vuecss files UI: Makefile.mk: remove csstree-validator and postcss browserify bundling UI: Makefile.mk: run stylelint from output dir UI: stylelintrc.cjs: add stylelint config UI: Makefile.mk: extract, process and run stylelint on *.jscss files UI: Makefile.mk: process *.vuecss files UI: Makefile.mk: run stylelint on processed styles UI: Makefile.mk: generate vue-styles.css UI: Makefile.mk: remove Vue css rules UI: Makefile.mk: take quoted cursor urls into account UI: Makefile.mk: move theming into ui/dark.scss, build .css from .scss UI: Makefile.mk: use postcss.js with --map and -i UI: Makefile.mk: fix install pattern for ui/b/ UI: postcss.js: support stdout output UI: postcss.js: fix exit code by re-throwing errors UI: postcss.js: add -Dvar=value for predefined variables UI: postcss.js: add -C to find imports UI: postcss.js: directly print PostCSS exceptions to provide useful stacktraces UI: postcss.js: support fetching imports from network UI: postcss.js: remove perfectionist-dfd, auto-import *.scss unless -i is given UI: postcss.js: add zlerp() CSS function UI: postcss.js: add zmod4() CSS function UI: postcss.js: make source map configurable UI: colors.js: add zlerp() for color interpolation UI: colors.js: fix missing ZCAM attributes UI: colors.js: add zmod4() to debug ZCAM attributes for colors UI: colors.js: support missing first zmod() color argument DOC: jsdoc2md.js: fix @file docu being ignored in some cases DOC: jsdoc2md.js: add anchor to constants ASE: websocket.cc: allow caching of duplicate requests within 1 second Merge branch 'reactive-render' # 2023-03-08 Tim Janik 6f6d3be * reactive-render: UI: startup.js: rerender all LitElements and known Vue components on resize UI: little.js: export LitComponent, which has reactive render() and updated() UI: little.js: add lit_update_all() UI: wrapper.js: improve error message for missing getters UI: wrapper.js: support reactive_wrapper() callbacks for wrap_ase_object() fields UI: wrapper.js: implement define_reactive() and reactive_wrapper() Merge branch 'jsdoc-search' # 2023-03-05 Tim Janik dc2f640 * jsdoc-search: DOC: poxy.sh: ignore case during search UI: util.js: add PointerDrag comment DOC: poxy.sh: extend searchdata-v2.js with token list from JS docs DOC: poxy.sh: avoid fake 'Export' prefix for JS symbols DOC: jsdoc2md.js: use for anchors, add data-4search to anchors The old empty span anchors could be removed by some HTML processors. DOC: poxy.sh: jsdoc2md will now directly generate markdown from JS Merge branch 'api-docs' # 2023-03-03 Tim Janik 63bd26e * api-docs: GITHUB: workflows/testing.yml: rename CI jobs GITHUB: workflows/testing.yml: add step to build and upload API docs MISC: Dockerfile.arch: provide doxygen openssh and poxy via pip MISC: Dockerfile.arch: first update archlinux-keyring This works around an outdated keyring in the archlinux:latest docker image. MISC: dbuild.sh: add support for the docker -p option DOC: poxy.sh: setup AUTHOR/COMITTER EMAIL/NAME, GIT_SSH_COMMAND for uploads DOC: poxy.sh: provide NODE_PATH DOC: poxy.sh: add program doc/ dir to documentation output DOC: poxy.sh: add README as main index page DOC: poxy.sh: add project version to docs DOC: poxy.sh: upload to the `publish` branch DOC: poxy.sh: support conditional builds DOC: poxy.sh: move build commands into poxy_build function DOC: poxy.sh: add -u for upload DOC: poxy.sh: support accesskey="f" for Search DOC: poxy.sh: support -s to serve html/ contents DOC: poxy.sh: add NEWS.md DOC: poxy.sh: add ch-scripting.md to UI docs DOC: poxy.sh: generate API reference documentation with Poxy UI: Makefile.mk: remove rules to build JS docs DOC: Makefile.mk: build scripting docs from ui/host.js and ch-scripting.md DOC: copyright.ini: fix doc/jsdocrc.json path DOC: ch-scripting.md: move here from ui/ DOC: jsdoc2md.js: generate markdown from *.js via jsdoc-api DOC: jsdocrc.json: configure JsDoc to use doc/jsdoc-slashes.js DOC: jsdoc-slashes.js: move here from ui/slashcomment.js DOC: jsdoc2md.js: guard aganst doclets with non-string name I.e. doclet.meta.code.name can be an Integer. MISC: package.json.in: add jsdoc-api UI: b/shell.vue: add basic docs ASE: testing.hh: document Test namespace ASE: api.hh: add docu comment to Ase namespace README.md: fix github workflow badge URL Merge branch 'lit-tracklist' # 2023-01-10 Tim Janik 3e64716 * lit-tracklist: UI: b/tracklist.js: hide HEADER and FOOTER UI: b/tracklist.js: add scrollshadow at the top UI: theme.scss: remove fragile parts of scrollbar styling UI: b/tracklist.js: fix layout for few tracks UI: b/tracklist.js: support x/y scrolling UI: b/cliplist.js: clipview children must not shrink UI: b/tracklist.js: port to LitElement UI: b/trackview.js: increase width of level meters UI: b/clipview.js: use track.$id for colorization UI: b/cliplist.js: fix setting of b-clipview.track property UI: b/app.js: provide App.project ASE: object.cc: skip notifications for objects without shared_ptr ASE: api.hh: rename and notify Project.all_tracks() (former list_tracks) Merge branch 'lit-trackview' # 2023-01-08 Tim Janik 529af30 * lit-trackview: UI: b/trackview.js: render sound level meter from telemetry UI: b/cliplist.js: minor formatting ASE: track.cc: add dbspl0 and dbspl1 to telemetry ASE: combo: add sound level probing in dB to AudioChain ASE: datautils: add square_max() ASE: midilib.cc: reserve space to avoid malloc ASE: datautils: add square_sum() for FPU floats ASE: cxxaux.hh: add ASE_ALIGNED16() and ALIGNMENT16() UI: b/app.js: maintain App.current_track, notify accordingly ASE: track: support midi_channel changes UI: b/*.js: fix ${ref} syntax UI: b/trackview.js: port to LitElement Merge branch 'lit-editable' # 2023-01-08 Tim Janik b1b949d * lit-editable: UI: b/trackview.vue: adjust b-editable use UI: b/positionview.vue: adjust property editing ASE: project.cc: add missing notifications UI: b/editable.js: port to LitElement Merge branch 'lit-cliplist' # 2023-01-07 Tim Janik 2724283 * lit-cliplist: UI: b/partlist.vue: disable old code DOC: Makefile.mk: add docs from b/cliplist.md ASE: api.hh: rename Track.launcher_clips() and ass 'notify:launcher_clips' UI: b/statusbar.vue: use Util.find_element_from_point() UI: b/shell.vue: determine F1 anchor from find_element_from_point() UI: util.js: add find_element_from_point(), supporting shadow DOMs UI: b/clipview.js: fix properties UI: b/cliplist.js: support F1 help for ClipList UI: b/cliplist.js: port to LitElement UI: b/app.js: add App.zmove_last() UI: b/pianoroll.js: minor rename Merge branch 'lit-clipview' # 2023-01-07 Tim Janik ee3d1f0 * lit-clipview: ASE: api.hh: add Clip.all_notes read-only property Enable property caching UI code for fetching notes and updates. UI: b/pianoroll.js: use Util.wrap_ase_object() to fetch Clip notes UI: b/piano-ctrl.js: use Util.wrap_ase_object() to fetch Clip notes UI: b/clipview.js: use wrap_ase_object() to access Clip properties UI: util.js: export the wrapper.js API UI: wrapper.js: add AseObject wrapper to cache properties UI: startup.js: add class name to GC debug messages UI: b/shell.vue: provide Shell.piano_roll UI: Makefile.mk: use Vue production build unless MODE=debug This avoids massive memory leaks of Vue components. UI: Makefile.mk: fix missing dependency MISC: package.json.in: upgrade to vue-3.2.45 and lit-2.5.0 UI: Makefile.mk: use 'npm --prefer-offline' only when rebuilding MISC: config-checks.mk: do not force '--prefer-offline' on npm MISC: config-uname.mk: define __UIDEBUG__=1 for MODE=debug UI: b/pianoroll.js: remove old debug() UI: b/contextmenu.js: remove useless performance hog UI: b/tracklist.vue: add new track on dblclick on track list only UI: b/pianoroll.js: fix stale play cursor on clip change UI: b/clipview.js: port BClipView to LitElement UI: b/: use Track.list_launcher_clips() ASE: api.hh. track: rename Track.list_launcher_clips() Merge branch 'fix-embed-fd-hangs' # 2022-12-28 Tim Janik ea7b53b * fix-embed-fd-hangs: ASE: clapplugin.cc: map PollFD::NVAL to CLAP_POSIX_FD_ERROR ASE: loop.*: support POLLWRBAND, always pass on POLLNVAL, POLLERR and POLLHUP Merge branch 'build-fixes' # 2022-12-28 Tim Janik 215830f * build-fixes: UI: Makefile.mk: add missing dependency from ui/colors.js on ui/zcam-js.mjs This fixes postcss errors due to missing zcam-js.mjs. X11TEST: play-notes.json: adjust simlpe UI test to UI path changes UI: cursors/cursors.css: add MPL-2 copyright Merge branch 'documentation-sections' # 2022-12-22 Tim Janik 11d3cc2 * documentation-sections: DOC: Makefile.mk: link to and search for ui/cursors/ UI: b/pianoroll.js: add data-f1="#piano-roll" to link F1 to piano roll manual UI: b/shell.vue: popup manual on 'F1', support anchors via data-f1="#anchor" UI: kbd.js: allow event.keyCode filtering DOC: Makefile.mk: include docs from pianoroll and piano-ctrl DOC: ch-editing.md: add brief editing introduction UI: Makefile.mk: extract Markdown sections from JS files into doc/b/*.md UI: xbcomments.js: extract Markdown sections from JavaScript comment blocks Merge branch 'piano-roll-and-shell-grid-layout' # 2022-12-22 Tim Janik 5772625 * piano-roll-and-shell-grid-layout: UI: b/pianoroll.js: document piano-roll use and fix hover handling UI: b/piano-ctrl.js: add convenient tool registration helpers UI: eslintrc.js: allow empty blocks UI: util.js: allow PointerDrag cleanup handler UI: b/pianoroll.js: fix scroll and select notes_canvas tool on hover UI: b/piano-ctrl.js: implement note resize tool UI: b/piano-ctrl.js: implement select, paint, erase as dedicated tools UI: b/pianoroll.js: context menu cleanup UI: b/clipview.vue: let the canvas fill parentElement UI: styles.scss, startup.js: turn HFlex & VFlex into LitElement UI: b/pianoroll.js: use one source for DPR calculations UI: b/pianoroll.js: properly align toolmenu button UI: b/pianoroll.js: fix background color UI: b/pianoroll.js: add pianorollmenu items UI: b/treeselector-item.vue: fix 'event' reference UI: b/knob.js: fix 'event' reference UI: b/editable.vue: fix 'event' reference UI: eslintrc.js: warn if a global 'event' is referenced UI: b/piano-ctrl.js: fix merging of selection changes with note modifications UI: b/pianoroll.js: handle menu hotkeys UI: b/contextmenu.js: fix unmapping in map_kbd_hotkeys() UI: kbd.js: handle document.activeElement == null UI: b/piano-ctrl.js: stop event if a key was handled UI: b/pianoroll.js: grab focus UI: b/piano-ctrl.js: adjust piano_roll access patterns UI: b/pianoroll.js: provide .srect property, repaint upon changes UI: b/pianoroll.js: handle tool menu and hook up piano-ctrl UI: theme.scss: move scrollbar styling here to work inside shadow DOMs UI: startup.js: turn CGrid into a LitElement to work inside shadow DOMs UI: b/pianoroll.js: work around FireFox exception when ctx.font is assigned UI: b/shell.vue: allow notification callbacks on get_note_cache() UI: b/statusbar.vue: use elementsFromPoint() to find Tips inside shadowRoots UI: b/contextmenu.js: support @activate="handler" notifications UI: b/menubar.vue: move comment to work around Vue's template child handling UI: b/knob.js: ignore hscrolls to allow horizontal device panel scrolling UI: b/devicepanel.vue: adjust to b-shell grid layout UI: b/pianoroll.js: fix scrollbar style UI: b/pianoroll.js: add indicator to show the current tick UI: b/shell.vue: use for the basic layout UI: b/pianoroll.js: implement as LitElement UI: b/pianoroll.js: add skeleton UI: b/piano-roll.vue: remove Vue based piano-roll Merge branch 'cursors' # 2022-12-22 Tim Janik 32b1518 * cursors: IMAGES: anklangicons.sh: fixes for svgo 2.8.0 and Inkscape >= 1.0 IMAGES: anklangicons.sh: remove unused cursor commands RAND: hotspots.sh: add simple script to debug hotspot coords in cursors UI: b/piano-roll.vue: remove AnklangCursors.scss references UI: Makefile.mk: remove AnklangCursors.scss copy UI: Makefile.mk: copy cursors/cursors.css and all cursor SVGs UI: little.js: allow runtime postcss imports from cursors/cursors.css UI: cursors/cursors.css: add CSS vars for: cross eraser hresize knife move pen UI: cursors/knife.svg: add 28x28 pixel "knife" cursor UI: cursors/hresize.svg: add 28x28 pixel "horizontal resize" cursor UI: cursors/cross.svg: add 28x28 pixel "cross" cursor UI: cursors/move.svg: add 28x28 pixel "move" cursor UI: cursors/eraser.svg: make cursor 28x28 pixels UI: cursors/pen.svg: make cursor 28x28 pixels UI: cursors/: move eraser.svg and pen.svg here Merge branch 'swesterfeld-blepsynth-adsr-time-fix' # 2022-11-17 Tim Janik 54726cd * swesterfeld-blepsynth-adsr-time-fix: DEVICES: blepsynth: use non-linear mapping for ADSR times ASE: sortnet.hh: update URLs in comments Merge branch 'sprite-knob' # 2022-11-16 Tim Janik 439c3b8 * sprite-knob: MISC: Dockerfile.focal: install librsvg2-bin for rsvg-convert UI: remove unused eknob.svg embedding UI: b/knob.vue: remove Vue based knob implementation UI: b/pro-input.vue: remove unused knob handling UI: b/pro-group.vue: use b-knob for scalar Property editing UI: b/knob.js: rewrite b-knob as LitElement with sprites UI: b/deviceeditor.vue: use Util.extend_property() to cache Property fields UI: Makefile.mk: provide control knob sprite assets Makefile.mk: include images/knobs/Makefile.mk IMAGES: knobs/cknob.svg: add MPL-2.0 license IMAGES: knobs/Makefile.mk: build bi- and unidirectional control knob sprites IMAGES: knobs/mksprite.py: rotate svg knob and add level indicator IMAGES: knobs/cknob.svg: add rotatable control knob UI: util.js: wheel_delta: adjust factors for modern Firefox and Chrome versions UI: startup.js: set CONFIG.dpr_movement for Chrome<=100 and Gecko As of Firefox-106, dpr_movement is needed and for Chrome-107 it is not. UI: util.js: use internal Symbol for request_pointer_lock() state handling UI: util.js: fix value updates of extended properties Catch the right event and normalize the value in JS. UI: util.js: add methods to handle destroy callbacks on objects UI: b/shell.vue: comment fixup UI: b/databubble.vue: hook into App.zmove for all event handling Also, fix stuck bubbles when rehovering the same element. UI: b/app.js: generate zmove events for pointerdown, pointermove, pointerup UI: b/app.js: make sure "mousemove" triggers ZMove updates ASE: processor.cc: keep constant number of characters for % values ASE: processor: send property notifies early, account for inflight values ASE: api.hh: add missing const ASE: crawler: use emit_notify() and avoid emit during ctor ASE: *.cc: use emit_notify() where possible Merge branch 'zoom-ui' # 2022-11-16 Tim Janik 8e65adf * zoom-ui: UI: b/menubar.vue: support Zoom In/Out/Reset for Electron ELECTRON: main.js: export zoom_level() to allow UI zoom adjustments UI: kbd.js: match_key_event: split 'Ctrl++' only once DOC: ch-development.md, ch-intro.md: fix testbit.eu URL ASE: randomhash: fix testbit.eu URL ASE: track.cc: fix MASTER_TRACK flag Merge branch 'swesterfeld-vcf-cutoff-fix' # 2022-11-03 Tim Janik 203c246 * swesterfeld-vcf-cutoff-fix: DEVICES: blepsynth: fix cutoff frequency modulation for filter Fix frequency scaling problems: the freq_in array now passes its frequency to the filter as plain Hz. Merge branch 'time-autostop' # 2022-11-03 Tim Janik 6d531e6 * time-autostop: GITHUB: workflows/testing.yml: add repository and gh-user to IRC notifications GITHUB: workflows/ircbot.py: support -R for initiating repository name GITHUB: workflows/testing.yml: skip IRC bot name GITHUB: workflows/ircbot.py: set "YYBOT" as bot name ASE: main: add autostop handling and implement -t to trigger autostop ASE: project: start_playback(): pass autostop into engine ASE: engine: add autostop handling and delay capture until transport is running ASE: defs.hh: add D64MAX ASE: strings.cc: add string_to_seconds() ASE: formatter.cc: test atomic which is a struct and needs %s UI: b/treeselector-item.vue: use ContextMenu.valid_uri() to check valid uri UI: b/contextmenu.js: always use valid_uri() for uri in boolean contexts Merge branch 'opus-wav-flac' - capture engine output # 2022-10-28 Tim Janik bb7a442 * opus-wav-flac: UI: b/aboutdialog.vue: display FLAC version ASE: api: export get_flac_version() UI: b/aboutdialog.vue: show Opus version Remove unused Vorbis version. ASE: api.hh: export Opus version Remove unused Vorbis and MP3 version export. MISC: Dockerfile.focal: provide libopus MISC: config-checks.mk: provide ogg-1.3.4 and opus-1.3.1 Remvoe Vorbis requirement, which is unused. ASE: main.cc: exit with atquit_run() upon SIGINT ASE: loop: USignalSource::install_sigaction(): install unix signal handler ASE: utils: provide atquit handlers ASE: loop.hh: minimize latency of signal handlers by running at high priority ASE: main: add -o wavfile to the CLI ASE: engine: support engine output capturing into wave files Squashed commits of engine capturing development: ASE: engine: add queue_capture_start() and queue_capture_stop() ASE: engine.cc: stall engine once program is aborted (atquit_triggered) ASE: engine.cc: capture output via wave_writer_create_opus() ASE: engine.cc: capture output via wave_writer_create_wav() ASE: engine.cc: capture output via wave_writer_create_flac() ASE: wave: add wave file writer for WAV, OPUS, FLAC Squashed commits of wave file development: ASE: wave.hh: add WaveWriter interface ASE: wave: add writer for WAV files with support for PCM and FLOAT ASE: wave: implement Opus writer and export Opus version ASE: wave.cc: write extension header for FLOAT format For example SoX(1) complains about float WAV files 'missing extended part of fmt chunk' ASE: wave: add FLAC writer and export FLAC version ASE: wave: install atquit handlers to flush/finalize wave files ASE: main: load projects without '--preload' and support --play-autostart ASE: main.cc: auto-load projects passed on the CLI Merge branch 'loft' # 2022-10-26 Tim Janik 84ff17e * loft: ASE: main.cc: configure Loft and concurrently preallocate pages on demand ASE: tests/benchmarks.cc: benchmark loft_calloc() ASE: loft: add Loft - a lock- and obstruction-free thread memory allocator Squashed commits of Loft development: ASE: loft: implement mmap() based bump allocator ASE: loft: implement MpmcStack based bucket allocator ASE: loft: add loft_alloc() ASE: loft: add loft_make_unique() and LoftFree::operator()() ASE: loft: add loft_calloc() ASE: loft: add multithreaded allocator stress test ASE: loft: use FastRng for testing ASE: loft: add loft_bucket_size() ASE: loft: add loft_get_stats(), loft_stats_string() ASE: loft: add loft_get_config(), loft_set_config(), config flags ASE: loft: add loft_grow_preallocate(), loft_set_notifier() ASE: loft: issue a warning if allocations via syscall happen inline ASE: atomics.hh: add MpmcStack.peek ASE: atomics.cc: fix signedness ASE: atomics.cc: add test for MpmcStack<> ASE: atomics.hh: add MpmcStack<>, a lock-free stack for non-reclaimable memory Merge branch 'mwc256-prng' # 2022-10-26 Tim Janik 153071d * mwc256-prng: ASE: randomhash.cc: add FastRng jump ahead tests ASE: main.cc: add --rand64 to generate 64bit FastRng numbers on stdout This can be used to test the PRNG quality with for example PractRand: AnklangSynthEngine --rand64 | RNG_test stdin64 -multithreaded ASE: randomhash: add FastRng, a multiply-with-carry PRNG with period 2^255 ASE: tests/benchmarks.cc: use 3k as max chunk size to avoid memset benchmarking ASE: sortnet.cc: speed up test by reducing the checked 10-element permutations Merge branch 'update-sanitizers' # 2022-10-26 Tim Janik a252fc9 * update-sanitizers: JSONIPC: jsonipc.hh: fix atexit memory leak ASE: formatter.hh: properly handle nullptr_t for %p ASE: nativedevice.cc: fix signedness ASE: serialize.cc: fix unit test memory leak UI: Makefile.mk: ignore asan when running AnklangSynthEngine DOC: Makefile.mk: ignore asan when running AnklangSynthEngine MISC: config-uname.mk: update sanitizer linkage GITHUB: workflows/testing.yml: upgrade actions/checkout and actions/cache to v3 MISC: Dockerfile.focal: comment fixups GITHUB: workflows/testing.yml: allow TeX installation during CI builds Merge branch 'pdf-artifacts' # 2022-10-25 Tim Janik e0272bd * pdf-artifacts: GITHUB: workflows/testing.yml: build PDF and upload 'docs' build artifact MISC: mkassets.sh: use 'pdf' shorthand in build rule DOC: Makefile.mk: require explicit 'pdf' rule to build PDF manuals via TeX By default, only the HTML manuals are built and installed (without TeX dependency). The PDF variants can be built explicitely with `make pdf`. The PDF manuals are installed if they are present at install time. GITHUB: workflows/testing.yml: enable CI for 'next' and PRs Merge branch 'litelement-menu' # 2022-10-21 Tim Janik 8032e64 * litelement-menu: X11TEST: play-notes.json: update UI test UI: b/*: assign aria-label where appropriate UI: b/*.vue: add html id to context menus UI: b/menuitem.js: always strip slot_label UI: util.js: remove unused dropdown() UI: b/color-picker.vue: fix menu and support click-drag selection UI: b/contextmenu.js: expose dialog via part=dialog to CSS rules UI: b/trackview.vue: popup context menu at cursor UI: b/piano-roll.vue: fix popup position UI: b/piano-ctrl.js: avoid stealing unhandled key presses UI: b/dialog.vue: close on regular Escape presses, avoid stealing Escape UI: b/contextmenu.js: stop handled dialog Escape key from bubbling further UI: util.js: allow shields without Escape key stealing UI: b/choice.vue: fix menu and key handling to work like all menus UI: b/contextmenu.js: provide .open read-only property UI: b/menuitem.js: remove unused code UI: b/contextmenu.js: fix data-contextmenu styling UI: b/fed-picklist.vue: remove unused component UI: b/devicepanel.vue: fix menu origin and insertion pos ASE: nativedevice.cc: fix device insertion order UI: b/contextmenu.js: close menu on backdrop clicks UI: util.js: dialog_backdrop_mousedown(): close dialogs on backdrop clicks UI: b/menubar.vue: use b-contextmenu .activate and .isactive UI: b/piano-roll.vue: use b-contextmenu .activate and .isactive UI: b/deviceeditor.vue: use b-contextmenu .activate and .isactive UI: b/treeselector-item.vue: use frame stamp to ignore duplicate clicks UI: b/menubar.vue: use frame stamp to ignore duplicate clicks UI: b/contextmenu.js: make FF auto-focus an element on showModal(), like Chrome UI: b/contextmenu.js: use frame stamp to ignore duplicate clicks and popup()s Note that keyboard presses, mouse clicks, drag selections and event bubbling can all cause menu item clicks and contextmenu activation. In order to deduplicate multiple events that arise from the same user interaction, *one* popup request and *one* click activation is processed per animation frame. UI: util.js: add frame_stamp(), retrieve a timestamp unique per animation frame UI: kbd.js: move_focus(): fallback to move focus inside body UI: kbd.js: list_focusables(): take [open]:modal in shadow DOMs into account UI: kbd.js: list_focusables(): take [open]:modal dialogs into account UI: b/treeselector-item.vue: fix single-click menu activation and styling UI: b/trackview.vue: fix menu activation UI: b/piano-roll.vue: fix menu activation, allow click-drag menu selection UI: b/devicepanel.vue: fix menu activation UI: b/menubar.vue: allow click-drag menu selection UI: b/menuitem.js: use .activate and .isactive callbacks for item activation UI: b/contextmenu.js: use .activate and .isactive callbacks for menu activation ASE: project.cc: fix some missing notify::dirty emissions UI: b/menubar.vue: adapt context menu clicks, popup menus early (mousedown) UI: b/menuitem.js: adjust for b-contextmenu as LitElement UI: kbd.js: fix keydown_move_focus() for shadow DOMs UI: util.js: add prevent_event() UI: b/contextmenu.js: port b-contextmenu to LitElement UI: b/menuitem.js: use 'b-menurow' CSS selector UI: b/menurow.js: port b-menurow to LitElement UI: b/menuitem.js: pass b-menurow turn / noturn attributes to button UI: util.js: add closest() for shadow DOMs UI: b/trackview.vue: always use the b-icon ic="" attribute UI: b/menuitem.js: export KeymapEntry as this.keymap_entry UI: b/contextmenu.vue: collect and register KeymapEntry props from descendants UI: kbd.js: support add+remove of global keymaps UI: b/menuitem.js: port b-menuitem to LitElement UI: util.js: add lrstrip() and collect_text_content() UI: kbd.js: make activeElement and list_focusables shadow DOM aware This allows transparent handling of custom focus navigation and hotkey activation in shadow DOMs. UI: util.js: extend has_ancestor() to support open shadow DOMs UI: b/contextmenu.vue: support click, keymap, b-contextmenu-menudata on Element UI: b/icon.js: port b-icon from vue to LitElement UI: util.js: add adopt_style() and add_style_sheet() UI: b/*.vue: always use the b-icon ic="" attribute GITHUB: workflows/testing.yml: update github actions Merge branch 'package-updates' # 2022-10-12 Tim Janik 84e7c32 * package-updates: ASE: clip.cc: fix macro clash MISC: package.json.in: update various npm packages Makefile.mk: clean x11test/ output dir Merge branch 'activate+deactivate' # 2022-10-12 Tim Janik 4e5ac8b * activate+deactivate: ASE: object.cc: properly check Connection ptr before use ASE: track.cc: remove over eager assertion ASE: project.cc: start_playback(): switch current engine project on demand Makefile.mk: allow make default to configure INSN ASE: project: move activate/deactive to Project ASE: engine.cc: fix loss of "change:prefs" notification connection ASE: engine: add API to set up exclusive Engine + Project relation ASE: track: require Project as parent of track ASE: gadget: add flags field to be used for gadgets and derived types ASE: clapplugin: rename clap_deactivate() and variants ASE: api.hh: use GadgetImpl as parent pointer ASE: api.hh: derive Track from Device ASE: api.hh: derive Project from Device ASE: device: rename and move Device::extract_info() here ASE: clapdevice.cc: fix call to inherited methods ASE: nativedevice: provide remove_all_devices(), implement activation ASE: api.hh: Device: provide _activate() _deactivate() is_active() ASE: nativedevice.cc: clarify TODO ASE: split DeviceImpl into Device and NativeDevice ASE: engine: turn the engine into a global singleton ASE: engine: simnply wrap AudioEngineImpl calls into AudioEngine methods ASE: engine: rename AudioEngineImpl ASE: main: export main_loop_wakeup() Merge branch 'ci-job-split' # 2022-10-11 Tim Janik bd540be * ci-job-split: GITHUB: workflows/testing.yml: split jobs for Ubuntu, Arch, IRC DOC: copyright.ini: assume MPL-2 for x11test/*.json Merge branch 'x11test' # 2022-10-10 Tim Janik 662fd7a * x11test: X11TEST: play1note.json: add recording to play a single MIDI note GITHUB: workflows/testing.yml: run x11test-v on Ubuntu build and upload result Makefile.mk: docuemnt x11test and x11test-v Makefile.mk: add x11test, x11test-v to run (headless) end-to-end tests X11TEST: replay.sh: play Anklang DevTools recording in Electron via Puppetteer X11TEST: ereplay.cjs: use Electron and Puppetteer to replay DevTools recording X11TEST: x11rec.sh: run and record a command in a virtual or nested X11 session MISC: package.json.in: add puppeteer packages MISC: Dockerfile.focal: provide xvfb 9wm ffmpeg Merge branch 'print-class-tree' # 2022-09-28 Tim Janik 8bde98a * print-class-tree: DOC: Makefile.mk: anklang-internals: add "Ase Class Inheritance Tree" ASE: main: add --class-tree to print the class tree JSONIPC: jsonipc.hh: add ClassWalker ASE: internal.hh: add assert_unreached() ASE: engine: minor fixes Merge branch 'fix-vue-3.2.28' # 2022-09-28 Tim Janik 6628472 * fix-vue-3.2.28: UI: b/shell.vue: work around vue-3.2.38 breaking $forceUpdate() before mount() Avoid the Shell calling $forceUpdate() from created(). That used to work up until Vue-3.2.27, but with .28 and .29 results in: vue.js:1843 Uncaught (in promise) TypeError: Cannot read properties of null (reading 'id') at queueJob (vue.js:1843:17) at i.f.i.f (vue.js:4591:44) Aparently $forceUpdate() calls are now broken before mount(). UI: Makefile.mk: fix wildcard for lit.js to not catch little.js Merge branch 'fix-gc' - plugs a GC race condition # 2022-09-27 Tim Janik 6caa570 * fix-gc: JSONIPC: jsonipc.hh: InstanceMap: remove unused swap and move_into ASE: jsonapi.cc: fix GC bookkeeping with mark_unused() and purge_unused() JSONIPC: jsonipc.hh: InstanceMap: add mark_unused() and purge_unused() JSONIPC: jsonipc.hh: add CallbackInfo::classname() to improve error messages Merge branch 'prefault-pages' # 2022-09-27 Tim Janik 9cf276d * prefault-pages: ASE: main.cc: prefault heap and stack pages ASE: main.cc: tune malloc via mallopt to reduce page fault probability Merge branch 'build-improvements' # 2022-09-27 Tim Janik 931a674 * build-improvements: MISC: config-uname.mk: enable link time optimization via -flto for MODE=production MISC: Makefile.mk: clean mkdeb/ if left over MISC: Dockerfile.focal: install libgtk-3-dev which also provides libdbus-1-dev Merge branch 'low-latency-sched' # 2022-09-14 Tim Janik 5184d18 * low-latency-sched: ASE: engine.cc: request low latency scheduling for the synthesis engine ASE: platform: add sched_{set|get|fast}_priority() ASE: dbus: add DBus methods rtkit_make_high_priority + rtkit_get_min_nice_level MISC: mkdeb.sh: postinst: add cap_sys_nice to AnklangSynthEngine MISC: config-checks.mk: add dbus-1 to ase dependencies ASE: utils.cc: allow mixed case debug keys ASE: Makefile.mk: use ASEDEPS_CFLAGS and ASEDEPS_LIBS MISC: config-checks.mk: provide just ASEDEPS_CFLAGS and ASEDEPS_LIBS for ase/ Merge branch 'remote-gc' # 2022-09-14 Tim Janik f59890b * remote-gc: UI: startup.js: renew_gc() on object finalization, report_gc() when requested ASE: jsonapi.cc: support renew_gc() and report_gc() to start new GC cycle The basic idea behind remote GB by the UI requesting renew_gc() and the Jsonapi server swapping wrapper tables in response is described here: https://testbit.eu/2014/rapicorn-remote-reference-counting ASE: jsonapi.cc: test conscise erase() loop over std::map<> Checks the erase() loop used by Jsonipc over std::map<>, in particular ++end must be avoided for empty maps. JSONIPC: jsonipc.hh: support clear/swap/size/move_into for instance ptr map MISC: config-uname.mk: use -Og for debugging which improves debug info Using -Og is a better choice than -O0, because some compiler passes that collect debug information are disabled at -O0. (gcc docs) UI: startup.js: properly namespace Jsonapi/Trigger ASE: jsonapi.cc: properly namespace Jsonapi/Trigger DOC: ch-development.md: properly namespace Jsonapi/Trigger DOC: ch-development.md: minor update UI: startup.js: request Ase.Server via Jsonapi/initialize after handshake ASE: jsonapi.cc: provide Ase.Server object as Jsonapi/initialize reply JSONIPC: jsonipc.hh: reply to Jsonipc/handshake with protocol version 1 JSONIPC: jsonipc.js: require Jsonipc/handshake with protocol version 1 UI: startup.js: maintain $id GC list via Jsonipc.finalization_registration JSONIPC: jsonipc.js: call Jsonipc.finalization_registration hook from ctors UI: GNUmakefile: allow subdir builds Merge branch 'automatic-backup' # 2022-08-24 Tim Janik 72174fb * automatic-backup: ASE: project.cc: automatically backup existing project files ASE: path: add glob() ASE: path: add rename() ASE: utils: add now_strftime() Merge branch 'clap-file-reference' # 2022-08-24 Tim Janik 031c81f * clap-file-reference: ASE: clapplugin: clean up load_state() and save_state() ASE: *.cc: use operator<< where needed for serialization ASE: serialize.hh: add operator>> and operator<< to support pure const serialization ASE: serialize.hh: operator&: catch serialization into const at compile time ASE: project.cc: merge asset_hashes ASE: project.cc: use Error::NO_PROJECT_DIR if anklang.project is missing ASE: api.hh: add Error::NO_PROJECT_DIR ASE: clapplugin: implement file collection ASE: clapplugin.cc: save_state: request plugin_file_reference->save_resources() ASE: clapplugin.cc: add CLAP_EXT_FILE_REFERENCE skeleton ASE: serialize.cc: use TelemetryField for simple serialization tests ASE: serialize: support external serialize(T&,WritNode&) impls via ADL ASE: serialize.cc: test tuple serialization ASE: project.cc: loader_resolve: lookup and resolve files from project dir ASE: project.cc: serialize file hashes as tuple array ASE: serialize.hh: serialize tuple<...> types UI: b/menubar.vue: use project.saved_filename() as "Save" location ASE: api.hh: add Project.saved_filename() ASE: Makefile.mk: upgrade to clap-1.1.1.tar.gz UI: b/app.js: use save_project() ASE: api.hh: rename Project.save_project() ASE: project.cc: canonicalize project file name when saving ASE: project: properly implement writer_collect() ASE: project: add API to collect external files ASE: strings: add strings_version_sort() ASE: path: add dircontains() to check dir hierarchy and compute relative path ASE: path: add copy_file(), use FICLONE ioctl to create CoW clone if possible Currently, FICLONE is supported under Linux for XFS and BTRFS. Use `filefrag -v` to detext or debug shared file extents. ASE: path: add file_size(), gracefully handle errors ASE: clapplugin: derive ClapPluginHandle from GadgetImpl ASE: api.hh: print user notes and allow `rest` argument ASE: api.hh: introduce Gadget._project() ASE: strings: add string_to_hex() ASE: main.cc: add --blake3 to test Blake3 hashing ASE: compress: add blake3_hash_file() and blake3_hash_string() ASE: storage: add stream_reader_from_file() ASE: Makefile.mk: compile BLAKE3 with SSE and AVX variants ASE: Makefile.mk: provide blake3.h from BLAKE3-1.3.1.tar.gz ASE: Makefile.mk: use SOURCE2_O MISC: config-uname.mk: add $(call SOURCE2_O) to create object extensions ASE: clapplugin.cc: fix warnings MISC: config-checks.mk: show sha256sum command used failing downloads Merge branch 'sse+fma-synth-engine' - build releases with SSE + FMA support # 2022-08-12 Tim Janik 5f77129 * sse+fma-synth-engine: ASE: Makefile.mk: build FMA variant iff MODE=production INSN=sse MISC: mkassets.sh: build releases with MODE=production INSN=sse MISC: Makefile.mk: remove INSN build remnants Merge branch 'fix-scripts' # 2022-08-12 Tim Janik a169887 * fix-scripts: MISC: mkassets.sh: handle unbound $V MISC: mkdeb.sh: handle unbound $V MISC: mkAppImage.sh: handle unbound $V MISC: dbuild.sh: handle unbound $V Merge branch 'dockerize-asset-builds' # 2022-08-11 Tim Janik 2fd2f5f * dockerize-asset-builds: MISC: Makefile.mk: adjust release-message MISC: Makefile.mk: export $V for build scripts MISC: Makefile.mk: simplify builds, merge upload-nightly and upload-release Makefile.mk: fix ls-tree.lst generation in tarballs MISC: mkassets.sh: extract release info, make AppImage MISC: mkAppImage.sh: move AppImage build logic here MISC: mkassets.sh: build binary packages from tarball MISC: mkdeb.sh: pass $V to make MISC: dbuild.sh: pass $V into docker env MISC: dbuild.sh: remove unused .dbuild/ handling MISC: Dockerfile.focal: reduce layers MISC: Dockerfile.focal: always become 'builder' user, prepare /ootbuild/ Merge branch 'arch-ci' # 2022-08-11 Tim Janik 76c6214 * arch-ci: .gitignore: add ignores GITHUB: workflows/testing.yml: cleanup after each platform build GITHUB: workflows/testing.yml: build and test on arch, cache arch docker image MISC: Dockerfile.arch: setup archlinux dependencies for building Anklang Use upstream CastXML, the AUR version seems outdated and broken. Merge branch 'docker-caching' # 2022-08-11 Tim Janik 433f9bd * docker-caching: MISC: dbuild.sh: skip TeX during docker image build with -T MISC: Dockerfile.focal: cleanup early to shrink docker image, possibly skip TeX MISC: dbuild.sh: use misc/Dockerfile.focal by default, remove -d, change -f MISC: Dockerfile.focal: rename from Dockerfile-apt, use FROM ubuntu:20.04 ASE: Makefile.mk: add missing dependencies for includes ASE: sortnet.hh: include for std::less Makefile.mk: use `ctags` executable GITHUB: workflows/testing.yml: fix cache-hit detection GITHUB: workflows/testing.yml: skip docker caching on cache miss GITHUB: workflows/testing.yml: invalidate cache if misc/dbuild.sh changes GITHUB: workflows/testing.yml: remove docker image test MISC: get rid of --no-tex and $NO_TEX (now unused) GITHUB: workflows/testing.yml: remove '--no-tex' Avoiding Tex installation was only needed without docker image caching. MISC: dbuild.sh: fix SIGPIPE when searching docker image for INITIALIZE MISC: dbuild.sh: debug wrong INITIALIZE setting MISC: dbuild.sh: use 'ubuntu:20.04' as base instead of 'ubuntu:focal' Both are tags for the same image, but the former is already present on Github's stock system. GITHUB: workflows/testing.yml: fix grep exit status GITHUB: workflows/testing.yml: invalidate cache if misc/Dockerfile-apt changes GITHUB: workflows/testing.yml: stop forcing a docker build step GITHUB: workflows/testing.yml: upgrade to actions/checkout@v2.4.2 GITHUB: workflows/testing.yml: cache docker image via github cache GITHUB: workflows/testing.yml: find version inside docker GITHUB: workflows/testing.yml: always use the same build arg for docker MISC: version.sh: ignore missing tags in Format:%(describe) workaround Merge branch 'dist-tarball' - create distribution tarballs # 2022-08-06 Tim Janik 50d9c06 Adjust versioning and build rules to support proper distribution tarballs that will build without .git/ history. * dist-tarball: MISC: Dockerfile-apt: provide zstd MISC: Makefile.mk: re-enable nightly asset builds Makefile.mk: work around git 2.25.1 not handling Format:%(describe:match) Ubuntu 20.04 still runs git 2.25.1. MISC: version.sh: work around git 2.25.1 not handling Format:%(describe:match) Ubuntu 20.04 still runs git 2.25.1. MISC: Dockerfile-apt: add universal-ctags MISC: dbuild.sh: recognize --help Makefile.mk: use wildcard for toplevel CLEANFILES MISC: Makefile.mk: list Nightly changes MISC: Makefile.mk: fix upload-release MISC: Makefile.mk: use TARBALL version for build-assets MISC: Makefile.mk: minor fixups MISC: Makefile.mk: only check-copyright if .git/ exists MISC: Makefile.mk: remove versioned ChangeLog generation Makefile.mk: ChangeLog: use slightly longer hashes Makefile.mk: fix ChangeLog range Makefile.mk: use ls-tree.lst to generate TAGS MISC: Makefile.mk: use ls-tree.lst DOC: Makefile.mk: use ls-tree.lst Makefile.mk: create and distribute ls-tree.lst MISC: config-utils.mk: provide only $(HAVE_GIT) which is true if .git/ exists Using the old WITHGIT or WITHOUTGIT did not really work. MISC: Makefile.mk: avoid -j, rely on MAKEFLAGS for parallel submakes MISC: Makefile.mk: build-nightly: create and build dist tarball MISC: dbuild.sh: use .dlcache subdir for dockerized ccache MISC: Makefile.mk: build-assets: build from sources in $(TARBALL) MISC: Makefile.mk: record and use artifacts in build-assets MISC: Makefile.mk: add 'build-version' rule MISC: Makefile.mk: call version.sh --make-nightly for nightly builds MISC: Makefile.mk: check nightly versions MISC: Makefile.mk: add 'versioned-manuals' rule DOC: Makefile.mk: use packaged doc/copyright if Git is missing GITHUB: workflows/testing.yml: build with --no-tex and SKIP_LATEX=true Only the PDF manuals need Tex, skipping LaTex installation significantly speeds up the CI builds. MISC: dbuild.sh: add --no-tex (replaces --tex) MISC: Dockerfile-apt: default to building with Tex DOC: Makefile.mk: build PDF manuals, unless SKIP_LATEX=true DOC: Makefile.mk: skip misc/mkcopyright.py if .git is not present MISC: mkdeb.sh: use `misc/version.sh --commit-hash` instead of git MISC: version.sh: add --commit-hash MISC: version.sh: remove extra version printout for --make-nightly MISC: version.sh: add --help and --make-nightly MISC: version.sh: use the same COMMITINFO for archives and .git repos Makefile.mk: dist: allow packaging with NEWS.md worktree changes Makefile.mk: simplify make dist Makefile.mk: add hard dependency on ctags-universal Builds from Git need ctags-universal to reliably generate TAGS for make dist. Makefile.mk: provide $(builddir) and $>/ early on Makefile.mk: check misc/version.sh execution ASE: Makefile.mk: add missing minizip/mz_zip.h dependency DOC: copyright.ini: list freeverb sources under Public Domain dedication DEVICES: freeverb/freeverb.cc: license under MPL-2.0 Merge branch 'freeverb' # 2022-07-31 Tim Janik 554794d * freeverb: DEVICES: freeverb/freeverb.cc: turn into a working AudioProcessor for Ase DEVICES: freeverb/freeverb.cc: make query_info() const, i.e. MT-Safe DEVICES: freeverb/freeverb.cc: move all code completely into Anon namespace DEVICES: freeverb/freeverb.cc: use explicit add_param() IDs and fix arguments DEVICES: freeverb: implement STK and VLC damping Avoid reinforcing feedback loop in the original damping code, by providing VLC and STK damping modes. The latter is likely closest to the original intention so it is now the default. This also reorders some parameters and removes the original freezing mode, that does not really make sense for Processors. DEVICES: freeverb/freeverb.cc: add Freeverb Processor DEVICES: freeverb/revmodel.cpp: fix missing `int i` decls DEVICES: freeverb/Freeverb*: remove unused vst files DEVICES: freeverb/: fix up whitespace and \n without \r everywhere DEVICES: freeverb/: Freeverb - free public domain reverb SOURCE CODE Freeverb - Free, studio-quality reverb SOURCE CODE in the public domain Written by Jezar at Dreampoint - http://www.dreampoint.co.uk DEVICES: freeverb/Makefile.mk: add source file to devices/4ase.ccfiles DEVICES: freeverb/GNUmakefile: allow subdir builds DEVICES: Makefile.mk: add dependencies, clean rule, etc for devices/ sources DEVICES: blepsynth/Makefile.mk: simply add source files to devices/4ase.ccfiles UI: b/contextmenu.vue: allow 0 as valid menuitem.uri value UI: b/cliplist.vue: only call non-null Shell.piano_current_tick() README.md: fix manual link Merge branch 'jack-driver' # 2022-07-29 Tim Janik cc1cb08 * jack-driver: DOC: ch-install.md: merge jack howto into driver-setup section DOC: ch-install.md: add chapter about download and installation ASE: main.cc: print the real executable_name() for --version and usage ASE: driver.cc: load jackdriver.so ASE: Makefile.mk: optionally build jackdriver.so MISC: config-checks.mk: check if jack.pc >= 0.125.0 is present Jack 0.125.0 ships with Ubuntu-20.04. ASE: driver-jack.cc: turn into a working PCM driver for Ase ASE: driver-jack.cc: adapto to Ase namespace ASE: merge original Jack driver by Stefan Westerfeld Initial version of Jack driver using the new driver API Add minimal jack howto Block SIGPIPE to avoid crashes when jackd dies Driver: return read and write latency for a pcm driver separately For instance for synchronizing the play position pointer ui with the audio buffering, you want to know how much write latency you have, but don't care about the amount of read latency. Add list with possible improvements from PR 31 https://github.com/tim-janik/beast/pull/31 Add some minor fixes as requested in review ASE: engine.cc: consistently calculate buffer size for multiple channels ASE: datautils.hh: add fast_copy() for floats and ints ASE: driver-alsa.cc: adjust debug messages, remove unused variable ASE: main.cc: require command line options to enable JSIPC logging Merge branch 'version-fixes' # 2022-07-29 Tim Janik 61e8d05 * version-fixes: ASE: remove unneeded version postfix from AnklangSynthEngine MISC: version.sh: fix development postfix for shallow versions MISC: version.sh: fix build id with development postfix MISC: Makefile.mk, version.sh: fix release tag missing 'v'-prefix ">Merge branch 'swesterfeld-piano-roll-move', closes #16 # 2023-08-03 Tim Janik ec26905 * swesterfeld-piano-roll-move: UI: b/piano-ctrl.js: support moving/copying notes with the mouse UI: b/cliplist.js: restore user manual docs Merge branch 'jsdoc-elements' # 2023-08-03 Tim Janik 9d0c8de * jsdoc-elements: DOC: poxystyle.css: fix dark theme colors DOC: jsdoc2md.js: use pandoc anchors everywhere with data-4search hints DOC: poxy.sh: forbid raw-html and support data-4search on UI: b/*.js: reformat documentation to use @class and @description commands See also: https://jsdoc.app/tags-description.html DOC: poxy.sh: parallelize JsDoc processing DOC: poxy.sh: fix exit code and compact markdown DOC: poxy.sh: add ui/ch-*.md files to poxy docs DOC: jsdoc2md.js: allow descriptions of virtual classes as docu sections DOC: copyright.ini: assign MPL-2 to ch-*.md documentation files DOC: Makefile.mk: integrate ui/ch-component.md Makefile.mk: add html/ to CLEANDIRS Makefile.mk: clean poxy/ and assets/ DOC: ch-development.md: explicitely describe ASE UI: ch-component.md: describe lit components UI: ch-component.md: rename from ui/b/ch-vue.md README.md: add Star History Chart Merge branch 'toggle-as-lit' # 2023-08-03 Tim Janik 0eba7de * toggle-as-lit: UI: b/pro-input.vue: handle @valuechange on b-toggle UI: b/toggle.js: port to LitComponent Merge branch 'x11test-delay' # 2023-08-02 Tim Janik 8712b43 * x11test-delay: X11TEST: ereplay.cjs: add delay to mitigate a UI-reload race on project changes
by KDE

Kdenlive is video and audio editing software with GPU rendering support. Great variety of video filters available.

Updated: 01 Aug, 2023

Create tag for 23.04.3

Anklang, a digital audio synthesis application for live creation and composition

Updated: 31 Jul, 2023

Anklang 0.1.0.nightly2307311936

Development version - may contain bugs or compatibility issues.

markup * Cleanup CSS UI: b/positionview.js: port to LitComponent UI: b/basics.js: use h-flex() UI: mixins.scss: add h-flex() mixin MISC: Dockerfile.arch: install unzip Merge branch 'inputs-as-litelement' # 2023-06-27 Tim Janik 2ddfe22 * inputs-as-litelement: X11TEST: play-notes.json: adjust recording for new web components ASE: server.cc: listen on "notify" emissions from properties ASE: properties.cc: fix notifications, emit notify:identifier UI: util.js: turn xprop.value_ into a reactive property UI: b/choiceinput.js: take b-objecteditor into account in CSS UI: b/pro-input.vue: use @valuechange on b-choiceinput UI: b/preferencesdialog.vue: use b-objecteditor UI: util.js: avoid extending the same property twice UI: util.js: export fullstop() UI: Makefile.mk: use tsc with --pretty false only inside emacs UI: b/objecteditor.js: port to LitComponent * Turn into shadowless component * Properly prefix CSS classes * Listen on and handle @valuechange events * Do not freeze extended properties that we keep mutating * Remove old resize blocker logic UI: startup.js: load basic custom components early on UI: b/basics.js: move h-flex, v-flex, c-grid, push-button here, shadowless Make these simple basic containers shadowless, i.e. without shadow root. UI: b/pro-input.vue: add support for b-choiceinput UI: little.js: export 'nothing' from Lit UI: types.d.ts: add debug() global UI: b/fed-object.vue: add support for b-choiceinput UI: b/choiceinput.js: port to LitComponent, render on demand only UI: b/tracklist.js: fix stacking of top border shadow UI: b/switchinput.js: allow LEFT/RIGHT/UP/DOWN to toggle UI: b/fed-object.vue: add support for b-switchinput UI: b/switchinput.js: port to LitComponent UI: types.d.ts: declare global CONFIG UI: b/fed-object.vue: add support for b-numberinput UI: b/numberinput.js: simplify and fix sizing UI: b/numberinput.js: port to LitComponent UI: b/textinput.js: dispatch value changes as valuechange "event" Merge branch 'fix-lit-html' # 2023-06-22 Tim Janik 31da2dd * fix-lit-html: UI: b/*.js: fix trailing-solidus in html`` markup UI: eslintrc.js: add plugin:lit/recommended to linting rules MISC: package.json.in: install eslint-plugin-lit Merge branch 'InterDisplay', based on InterVariable-4.0 font # 2023-06-22 Tim Janik 89c9d01 * InterDisplay: UI: dark.scss: add a fallback font stack UI: theme.scss: remove outdated font stuff UI: mixins.scss: move b-kbd-hotkey here UI: elements.scss: use b-font-weight-bold() and b-font-weight-bolder() UI: b/*.vue, b/*.js: use b-font-weight-bold() and its variants UI: dark.scss: define b-font-weight-{normal|bold|bolder} mixins UI: b/menutitle.js: use drop-caps while InterVariable-4.0 small-caps are broken See also: https://github.com/rsms/inter/issues/556#issuecomment-1598010623 UI: elements.scss: leave font handling to theme, globals and shadow UI: b/pianoroll.js: use b-canvas-font UI: b/partthumb.vue: use b-canvas-font UI: b/clipview.js: use b-canvas-font UI: shadow.scss: use b-ui-font() inside shadow DOMs UI: globals.scss: make use of b-ui-font() UI: dark.scss: configure b-ui-font() for "InterVariable" in InterDisplay style UI: globals.scss: leave font-face defs to index.html UI: index.html: cleanup preloads, add @font-face for "InterVariable" UI: b/icon.js: add small comment UI: Makefile.mk: download InterVariable.woff2 UI: stylelintrc.cjs: disable "font-family-name-quotes" to allow quoted font names Merge branch 'component-styling' # 2023-06-21 Tim Janik 234bf99 * component-styling: UI: b/playcontrols.js: use JsExtract.css_url() UI: b/icon.js: use JsExtract.css_url() UI: b/textinput.js: make this a shadowless component UI: little.js: add JsExtract.css_url() UI: little.js: use cast to work around TS2425 UI: b/playcontrols.js: port to LitComponent UI: Makefile.mk: remove temporary file UI: b/*.vue: remove useless mixins import UI: index.html: import globals.css UI: globals.scss: import elements.scss which includes mixins UI: Makefile.mk: create globals.css and auto-import mixins.scss for vue styles UI: elements.scss: rename from domstyles.scss UI: b/button-bar.vue: port to LitComponent UI: b/*.js: access only LitComponent fields (not LitElement) UI: little.js: remove LitElement export UI: startup.js: derive from LitComponent (not LitElement) UI: b/*.js: derive from LitComponent (not LitElement) UI: b/partlist.js: embed and load CSS via JsExtract UI: Makefile.mk: fix dependenc for scss rebuilds UI: b/partlist.js: import Util UI: types.d.ts: declare __DEV__ global UI: b/pianoroll.js: extend LitComponent and use reactive_wrapper to track notes Also, merge multiple repaint requests into the same micro task. UI: b/clipview.js: leave width to parent UI: b/cliplist.js: set 'data-f1' only once suffices UI: b/trackview.js: render b-trackview context menu on demand UI: b/contextmenu.js: fix close() and synchronize updates * await this.updateComplete before showModal() * properly emit 'close', take nesting into account UI: b/partlist.js: port to LitElement UI: mixins.scss: add transparent-scrollbars mixin Merge branch 'clang-tidy' # 2023-06-18 Tim Janik 29cc5ff * clang-tidy: MISC: mkassets.sh: always use /tmp/anklang-mkassets/ for release builds GITHUB: workflows/testing.yml: fix key file permissions GITHUB: workflows/testing.yml: fixup permissions at CI end GITHUB: workflows/testing.yml: remove missing variable reference GITHUB: workflows/testing.yml: fix arch perms and focal redirection GITHUB: workflows/testing.yml: use $DOCKER_RUN and ghcr.io for all tasks * use $DOCKER_RUN and ghcr.io caching for Focal-Docs * adjusting git.safe.directory is not needed for Lunar * use $DOCKER_RUN and ghcr.io caching for Arch-Replay MISC: Dockerfile.focal: remove unused RUNs, rename user to ubuntu * remove unused OOTBUILD, rename builder user to ubuntu * add a comment howto build and run this image * use fixed user and group id of 1000 MISC: Dockerfile.arch: use fixed user and group ids of 1000 MISC: Dockerfile.arch: remove unused OOTBUILD and unused poxy MISC: Dockerfile.lunar: remove unused OOTBUILD GITHUB: workflows/testing.yml: directly use docker run for lunar and fix perms MISC: Dockerfile.lunar: upgrade to nodejs-20 MISC: package.json.in: upgrade npm build tools and electron-25 MISC: package.json.in: remove unused rollup-plugin-node-resolve MISC: Makefile.mk: fix missing directory dependency GITHUB: workflows/testing.yml: add Lunar-Clang-Tidy, rename Focal-Docs MISC: Dockerfile.lunar: provide build environment with clang-17 on ubuntu:23.04 MISC: colorize.sh: colorize error, warning, note and special case Emacs MISC: Makefile.mk: reimplement clang-tidy and clang-tidy-clean rules Makefile.mk: defined CLANG_TIDY Makefile.mk: create ls-tree.d and provide $(LS_TREE_LST) Merge branch 'sorted-vector' # 2023-06-08 Tim Janik 7b3b380 * sorted-vector: ASE: sortnet: implement SortedVector ASE: testing.hh: TFLOATS(): assert float equality within an apsilon ASE: combo.cc: add SPL link Merge branch 'swesterfeld-fix-pcg-ub' # 2023-06-07 Tim Janik 1d49d48 * swesterfeld-fix-pcg-ub: ASE: randomhash: fix undefined behaviour in Pcg32Rng Left shifting a 32bit value by 32 bits is UB. * Closes #14 Merge branch 'appimage-rpath-fix' # 2023-06-07 Tim Janik f609e1e * appimage-rpath-fix: MISC: mkAppImage.sh: avoid `linuxdeploy {-e|-l}` which change binary locations Avoid `linuxdeploy {-e|-l}`, these options change the binary locations by copying. The copies mess up ELF location detection and restoring the original locations causes wrong relative $ORIGIN paths. We just use --deploy-deps-only now, which keeps the binaries in place and correctly adjusts the relative $ORIGIN path. MISC: mkAppImage.sh: remove unused command Merge branch 'appimage-dependencies' # 2023-06-06 Tim Janik 1696a12 * appimage-dependencies: MISC: mkAppImage.sh: reduce workarounds by using linuxdeploy --deploy-deps-only MISC: mkAppImage.sh: add ELF dependencies for AnklangSynthEngine and gtk2wrap This adds libFLAC.so, libogg.so, libopus.so and libgdk-x11-2.0.so, libgtk-x11-2.0.so to the AppImage. Closes #13. Merge branch 'fix-imports' # 2023-06-06 Tim Janik 1b47b9e * fix-imports: UI: util.js: add missing Kbd import UI: eslintrc.js: remove 'Util' global UI: b/*.vue: add missing Util imports UI: b/*.js: add missing Util imports Merge branch 'jsdoc-tsimport' # 2023-06-05 Tim Janik c184b5e * jsdoc-tsimport: UI: b/cliplist.js: jsdoc-tsimport-plugin does not support a blank after import DOC: jsdocrc.json: use jsdoc-tsimport-plugin to parse tsc file imports * Fix JsDoc choking on typescript import statements that import typed from other JS files. * See also: https://github.com/jsdoc/jsdoc/issues/1645#issuecomment-768293857 MISC: package.json.in: install jsdoc-tsimport-plugin Merge branch 'typescript-jsdoc-checks' # 2023-06-05 Tim Janik 819895c * typescript-jsdoc-checks: UI: types.d.ts: allow App, Data, Shell Ase globals UI: index.html: add importmap to allow lit module imports UI: tsconfig.json: configure typescript checks, allow JS type checks + imports UI: wrapper.js: add @param type UI: little.js: add @ts-check, add types, add explicit exports for tsc UI: b/app.js: add @ts-check and missing property decl UI: b/cliplist.js: add @ts-check, missing imports, exports and initializations UI: b/clipview.js: export class UI: wrapper.js: add @ts-check and type annotations UI: b/statusbar.vue: use material icons for info and instrument panel UI: b/icon.js: fix material-icons size UI: Makefile.mk: add 'tscheck', 'stylelint' and 'lint' rules * add 'lint' dependency to run all of stylelint eslint tscheck * add 'tscheck' rule to selectively run typescript checks * add explicit 'stylelint' rule * simplify lit.js rollup * ui/vue.js: leave eslint cache alone * install material-icons from npm * cleanup eslint rule * ui/rebuild: avoid bg jobs, no need to print dir in sub MAKE MISC: package.json.in: cleanup serve and rebuild scripts MISC: package.json.in: remove eslint script, use make eslint instead MISC: package.json.in: install material-icons@1.13.6 Makefile.mk: whitespace fix GITHUB: workflows/testing.yml: use git fetch --unshallow Apparently `git fetch --shallow-since` does not work with the merge commit created by PR checkouts. Using `git fetch --unshallow` might be less efficient for regular branches, but at least works with trunk and PRs. MISC: package.json.in: upgrade lit, electron, vue, postcss, etc UI: b/pianoroll.js: fix indicator interacting with the cursor MISC: package.json.in: install typescript to enable code checks Merge branch 'nightly-version' # 2023-05-20 Tim Janik 8459bbb * nightly-version: MISC: Makefile.mk: update Nightly releases to avoid excessive emails MISC: gh_delete_assets.sh: add script to delete all release assets via gh README.md: update documentation links MISC: version.sh: use 0.1.2.dev3 for development versions for proper ordering Using .dev[0-9] postfixes properly sorts: 0.1.2 < 0.1.2.dev3 < 0.1.3 This works for sort -V, dpkg, rpm and PIP versions. See: https://peps.python.org/pep-0440/#public-version-identifiers MISC: Makefile.mk: fix typo Merge branch 'ci-build-updates' # 2023-05-19 Tim Janik 580cf66 * ci-build-updates: MISC: Makefile.mk: use gh, keed *-dev version number for Nightly releases * Use gh instead of hub to create releases * Keep the development version number for Nightly releases * Add a brief disclaimer about Nightly releases MISC: version.sh: simplify, support --commit-date and $RELEASE_VERSION GITHUB: workflows/testing.yml: add named step "Fetch last release tag" GITHUB: workflows/testing.yml: fetch git history since last release tag GITHUB: workflows/testing.yml: update ping deps GITHUB: workflows/testing.yml: fix workflow names GITHUB: workflows/testing.yml: run (full) docu upload on Ubuntu GITHUB: workflows/testing.yml: run X11 tests on Arch DOC: poxy.sh: include all Anklang docs in upload MISC: Dockerfile.focal: install pip, doxygen and poxy MISC: Dockerfile.focal: install twm for x11test MISC: Dockerfile.arch: install libgtk3 and libnss for Electron MISC: Dockerfile.arch: install xvfb ffmpeg twm for x11test-v X11TEST: x11rec.sh: switch to using twm with auto placement GITHUB: workflows/testing.yml: use full doc/ install dir as doc artifact GITHUB: workflows/testing.yml: test clang builds under Ubuntu GITHUB: workflows/testing.yml: remove unused env var from Arch build rule Merge branch 'g++-fixes' # 2023-05-17 Tim Janik 8404380 * g++-fixes: ASE: cxxaux.hh: fix internal member typedef name ASE: cxxaux.hh: use std::conditional_t<> for rebind::other, fix for g++-12 With template specializations, g++-11 and g++-12 error out with "explicit specialization in non-namespace scope", so we use std::conditional_t<> which seems to work with g++-12 and clnag++-15. Merge branch 'libstdc++-13' # 2023-05-17 Tim Janik c0f01a0 * libstdc++-13: ASE: cxxaux.hh: patch up make_shared() to make libstdc++13 happy * Move shared ptr allocator out of function scope (to allow template specialization) * Add rebind<> template to shared ptr allocator which derives from std::allocator * Specialize rebind<> so it yields the same allocator for only the shared ptr value type * This "fixes" two static assertions that were added in libstdc++13, see: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=72792#c12 ASE: cxxaux.hh: remove unused FriendAllocator<> ASE: cxxaux.hh: fix missing include ASE: loop.hh: always use ASE_DEFINE_MAKE_SHARED() to implement make_shared() ASE: formatter.hh: include cstdint for int32_t ASE: clapplugin.cc: add missing braces for clap_event_transport_t initializer UI: wrapper.js: add missing Util import Makefile.mk: add simple rule to generate +compile_commands.json Merge branch 'transportinfo', closes #5 # 2023-05-12 Tim Janik 3819f90 * transportinfo: ASE: clapplugin: provide transport information for the plugin MISC: config-uname.mk: link -shared: allow undefined symbols with sanitizers Merge branch 'build-time-postcss' # 2023-03-15 Tim Janik 54353a7 * build-time-postcss: UI: split styles into dark, grid, domstyles, mixins, shadow, globals SCSS files globals.scss: styles for the LightDOM only shadow.scss: styles only for ShadowDOM components domstyles.scss: common styles for the LightDOM and ShadowDOM grid.scss: provide helpers mixins.scss: base to customize components dark.scss: basic theme, allow switching via import $themename_scss; cursors/cursors.css: provide CSS variables for custom cursors UI: cursors/cursors.css: fix quotes UI: cursors/cursors.css: introduce --svg-cursor-* variables at :root{} scope This is needed to make cursors.css actualy valid CSS. UI: index.html: remove postfix and css validator, load vue-styles.css, fix preloads UI: b/clipview.js: use zcam directly UI: b/*.js: embed and load CSS via JsExtract UI: b/positionview.vue: use $b-lcdscreen-fg, $b-lcdscreen-bg UI: b/: fix $b-button-radius $b-button-radius $b-track-meter-gap $b-track-meter-thickness UI: b/pianoroll.js: import grid.scss UI: b/positionview.vue: use t-lcdscreen-fg, t-lcdscreen-bg UI: b/trackview.js: add --track-meter-thickness, --track-meter-gap UI: b/*.vue: use --button-radius UI: b/*.js: use --button-radius UI: b/*.js: use var(--button-radius); UI: b/*.vue: use var(--button-radius); UI: b/deviceeditor.vue, b/pro-group.vue: use --device-radius UI: b/shell.vue: remove unused styles UI: b/pianoroll.js: remove useless color assignment UI: b/textinput.js: include mixins.scss to use SCSS variable UI: b/menuseparator.js: include mixins.scss to use SCSS variable UI: b/*.js: extend componenets from LitComponent instead of LitElement UI: b/dialog.vue: inline box-shadow styling UI: b/pianoroll.js: import grid helpers from grid.css UI: b/menubar.vue: specify 'justify-content: space-between' directly UI: b/pianoroll.js: rely on global cursors.css import UI: startup.js: remove unused postcss import UI: jsextract.js: document jsextract.js usage UI: jsextract.js: extract JsExtract.scss`` marker snippets into *.jscss files UI: little.js: document JsExtract usage UI: little.js: fix .css URL construction to always have an extension UI: little.js: load into shadow roots UI: little.js: add ./shadow.css to LitComponent UI: little.js: remove postcss UI: little.js: export JsExtract with scss`` and fetch_css() UI: little.js: add default define $themename_scss:dark.scss; Also, disable csstree-validator which yields outdated warnings. UI: little.js: load shadow.scss into all LitComponent elements UI: little.js: LitComponent: always adopt shadow.css in createRenderRoot() UI: little.js: CSS import: remove premature fetch + caching, always import all UI: little.js: remove cursors/cursors.css from memorized imports MISC: package.json.in: add stylelint MISC: package.json.in: remove perfectionist-dfd UI: sfc-compile.js: extract *.vuecss files UI: Makefile.mk: remove csstree-validator and postcss browserify bundling UI: Makefile.mk: run stylelint from output dir UI: stylelintrc.cjs: add stylelint config UI: Makefile.mk: extract, process and run stylelint on *.jscss files UI: Makefile.mk: process *.vuecss files UI: Makefile.mk: run stylelint on processed styles UI: Makefile.mk: generate vue-styles.css UI: Makefile.mk: remove Vue css rules UI: Makefile.mk: take quoted cursor urls into account UI: Makefile.mk: move theming into ui/dark.scss, build .css from .scss UI: Makefile.mk: use postcss.js with --map and -i UI: Makefile.mk: fix install pattern for ui/b/ UI: postcss.js: support stdout output UI: postcss.js: fix exit code by re-throwing errors UI: postcss.js: add -Dvar=value for predefined variables UI: postcss.js: add -C to find imports UI: postcss.js: directly print PostCSS exceptions to provide useful stacktraces UI: postcss.js: support fetching imports from network UI: postcss.js: remove perfectionist-dfd, auto-import *.scss unless -i is given UI: postcss.js: add zlerp() CSS function UI: postcss.js: add zmod4() CSS function UI: postcss.js: make source map configurable UI: colors.js: add zlerp() for color interpolation UI: colors.js: fix missing ZCAM attributes UI: colors.js: add zmod4() to debug ZCAM attributes for colors UI: colors.js: support missing first zmod() color argument DOC: jsdoc2md.js: fix @file docu being ignored in some cases DOC: jsdoc2md.js: add anchor to constants ASE: websocket.cc: allow caching of duplicate requests within 1 second Merge branch 'reactive-render' # 2023-03-08 Tim Janik 6f6d3be * reactive-render: UI: startup.js: rerender all LitElements and known Vue components on resize UI: little.js: export LitComponent, which has reactive render() and updated() UI: little.js: add lit_update_all() UI: wrapper.js: improve error message for missing getters UI: wrapper.js: support reactive_wrapper() callbacks for wrap_ase_object() fields UI: wrapper.js: implement define_reactive() and reactive_wrapper() Merge branch 'jsdoc-search' # 2023-03-05 Tim Janik dc2f640 * jsdoc-search: DOC: poxy.sh: ignore case during search UI: util.js: add PointerDrag comment DOC: poxy.sh: extend searchdata-v2.js with token list from JS docs DOC: poxy.sh: avoid fake 'Export' prefix for JS symbols DOC: jsdoc2md.js: use for anchors, add data-4search to anchors The old empty span anchors could be removed by some HTML processors. DOC: poxy.sh: jsdoc2md will now directly generate markdown from JS Merge branch 'api-docs' # 2023-03-03 Tim Janik 63bd26e * api-docs: GITHUB: workflows/testing.yml: rename CI jobs GITHUB: workflows/testing.yml: add step to build and upload API docs MISC: Dockerfile.arch: provide doxygen openssh and poxy via pip MISC: Dockerfile.arch: first update archlinux-keyring This works around an outdated keyring in the archlinux:latest docker image. MISC: dbuild.sh: add support for the docker -p option DOC: poxy.sh: setup AUTHOR/COMITTER EMAIL/NAME, GIT_SSH_COMMAND for uploads DOC: poxy.sh: provide NODE_PATH DOC: poxy.sh: add program doc/ dir to documentation output DOC: poxy.sh: add README as main index page DOC: poxy.sh: add project version to docs DOC: poxy.sh: upload to the `publish` branch DOC: poxy.sh: support conditional builds DOC: poxy.sh: move build commands into poxy_build function DOC: poxy.sh: add -u for upload DOC: poxy.sh: support accesskey="f" for Search DOC: poxy.sh: support -s to serve html/ contents DOC: poxy.sh: add NEWS.md DOC: poxy.sh: add ch-scripting.md to UI docs DOC: poxy.sh: generate API reference documentation with Poxy UI: Makefile.mk: remove rules to build JS docs DOC: Makefile.mk: build scripting docs from ui/host.js and ch-scripting.md DOC: copyright.ini: fix doc/jsdocrc.json path DOC: ch-scripting.md: move here from ui/ DOC: jsdoc2md.js: generate markdown from *.js via jsdoc-api DOC: jsdocrc.json: configure JsDoc to use doc/jsdoc-slashes.js DOC: jsdoc-slashes.js: move here from ui/slashcomment.js DOC: jsdoc2md.js: guard aganst doclets with non-string name I.e. doclet.meta.code.name can be an Integer. MISC: package.json.in: add jsdoc-api UI: b/shell.vue: add basic docs ASE: testing.hh: document Test namespace ASE: api.hh: add docu comment to Ase namespace README.md: fix github workflow badge URL Merge branch 'lit-tracklist' # 2023-01-10 Tim Janik 3e64716 * lit-tracklist: UI: b/tracklist.js: hide HEADER and FOOTER UI: b/tracklist.js: add scrollshadow at the top UI: theme.scss: remove fragile parts of scrollbar styling UI: b/tracklist.js: fix layout for few tracks UI: b/tracklist.js: support x/y scrolling UI: b/cliplist.js: clipview children must not shrink UI: b/tracklist.js: port to LitElement UI: b/trackview.js: increase width of level meters UI: b/clipview.js: use track.$id for colorization UI: b/cliplist.js: fix setting of b-clipview.track property UI: b/app.js: provide App.project ASE: object.cc: skip notifications for objects without shared_ptr ASE: api.hh: rename and notify Project.all_tracks() (former list_tracks) Merge branch 'lit-trackview' # 2023-01-08 Tim Janik 529af30 * lit-trackview: UI: b/trackview.js: render sound level meter from telemetry UI: b/cliplist.js: minor formatting ASE: track.cc: add dbspl0 and dbspl1 to telemetry ASE: combo: add sound level probing in dB to AudioChain ASE: datautils: add square_max() ASE: midilib.cc: reserve space to avoid malloc ASE: datautils: add square_sum() for FPU floats ASE: cxxaux.hh: add ASE_ALIGNED16() and ALIGNMENT16() UI: b/app.js: maintain App.current_track, notify accordingly ASE: track: support midi_channel changes UI: b/*.js: fix ${ref} syntax UI: b/trackview.js: port to LitElement Merge branch 'lit-editable' # 2023-01-08 Tim Janik b1b949d * lit-editable: UI: b/trackview.vue: adjust b-editable use UI: b/positionview.vue: adjust property editing ASE: project.cc: add missing notifications UI: b/editable.js: port to LitElement Merge branch 'lit-cliplist' # 2023-01-07 Tim Janik 2724283 * lit-cliplist: UI: b/partlist.vue: disable old code DOC: Makefile.mk: add docs from b/cliplist.md ASE: api.hh: rename Track.launcher_clips() and ass 'notify:launcher_clips' UI: b/statusbar.vue: use Util.find_element_from_point() UI: b/shell.vue: determine F1 anchor from find_element_from_point() UI: util.js: add find_element_from_point(), supporting shadow DOMs UI: b/clipview.js: fix properties UI: b/cliplist.js: support F1 help for ClipList UI: b/cliplist.js: port to LitElement UI: b/app.js: add App.zmove_last() UI: b/pianoroll.js: minor rename Merge branch 'lit-clipview' # 2023-01-07 Tim Janik ee3d1f0 * lit-clipview: ASE: api.hh: add Clip.all_notes read-only property Enable property caching UI code for fetching notes and updates. UI: b/pianoroll.js: use Util.wrap_ase_object() to fetch Clip notes UI: b/piano-ctrl.js: use Util.wrap_ase_object() to fetch Clip notes UI: b/clipview.js: use wrap_ase_object() to access Clip properties UI: util.js: export the wrapper.js API UI: wrapper.js: add AseObject wrapper to cache properties UI: startup.js: add class name to GC debug messages UI: b/shell.vue: provide Shell.piano_roll UI: Makefile.mk: use Vue production build unless MODE=debug This avoids massive memory leaks of Vue components. UI: Makefile.mk: fix missing dependency MISC: package.json.in: upgrade to vue-3.2.45 and lit-2.5.0 UI: Makefile.mk: use 'npm --prefer-offline' only when rebuilding MISC: config-checks.mk: do not force '--prefer-offline' on npm MISC: config-uname.mk: define __UIDEBUG__=1 for MODE=debug UI: b/pianoroll.js: remove old debug() UI: b/contextmenu.js: remove useless performance hog UI: b/tracklist.vue: add new track on dblclick on track list only UI: b/pianoroll.js: fix stale play cursor on clip change UI: b/clipview.js: port BClipView to LitElement UI: b/: use Track.list_launcher_clips() ASE: api.hh. track: rename Track.list_launcher_clips() Merge branch 'fix-embed-fd-hangs' # 2022-12-28 Tim Janik ea7b53b * fix-embed-fd-hangs: ASE: clapplugin.cc: map PollFD::NVAL to CLAP_POSIX_FD_ERROR ASE: loop.*: support POLLWRBAND, always pass on POLLNVAL, POLLERR and POLLHUP Merge branch 'build-fixes' # 2022-12-28 Tim Janik 215830f * build-fixes: UI: Makefile.mk: add missing dependency from ui/colors.js on ui/zcam-js.mjs This fixes postcss errors due to missing zcam-js.mjs. X11TEST: play-notes.json: adjust simlpe UI test to UI path changes UI: cursors/cursors.css: add MPL-2 copyright Merge branch 'documentation-sections' # 2022-12-22 Tim Janik 11d3cc2 * documentation-sections: DOC: Makefile.mk: link to and search for ui/cursors/ UI: b/pianoroll.js: add data-f1="#piano-roll" to link F1 to piano roll manual UI: b/shell.vue: popup manual on 'F1', support anchors via data-f1="#anchor" UI: kbd.js: allow event.keyCode filtering DOC: Makefile.mk: include docs from pianoroll and piano-ctrl DOC: ch-editing.md: add brief editing introduction UI: Makefile.mk: extract Markdown sections from JS files into doc/b/*.md UI: xbcomments.js: extract Markdown sections from JavaScript comment blocks Merge branch 'piano-roll-and-shell-grid-layout' # 2022-12-22 Tim Janik 5772625 * piano-roll-and-shell-grid-layout: UI: b/pianoroll.js: document piano-roll use and fix hover handling UI: b/piano-ctrl.js: add convenient tool registration helpers UI: eslintrc.js: allow empty blocks UI: util.js: allow PointerDrag cleanup handler UI: b/pianoroll.js: fix scroll and select notes_canvas tool on hover UI: b/piano-ctrl.js: implement note resize tool UI: b/piano-ctrl.js: implement select, paint, erase as dedicated tools UI: b/pianoroll.js: context menu cleanup UI: b/clipview.vue: let the canvas fill parentElement UI: styles.scss, startup.js: turn HFlex & VFlex into LitElement UI: b/pianoroll.js: use one source for DPR calculations UI: b/pianoroll.js: properly align toolmenu button UI: b/pianoroll.js: fix background color UI: b/pianoroll.js: add pianorollmenu items UI: b/treeselector-item.vue: fix 'event' reference UI: b/knob.js: fix 'event' reference UI: b/editable.vue: fix 'event' reference UI: eslintrc.js: warn if a global 'event' is referenced UI: b/piano-ctrl.js: fix merging of selection changes with note modifications UI: b/pianoroll.js: handle menu hotkeys UI: b/contextmenu.js: fix unmapping in map_kbd_hotkeys() UI: kbd.js: handle document.activeElement == null UI: b/piano-ctrl.js: stop event if a key was handled UI: b/pianoroll.js: grab focus UI: b/piano-ctrl.js: adjust piano_roll access patterns UI: b/pianoroll.js: provide .srect property, repaint upon changes UI: b/pianoroll.js: handle tool menu and hook up piano-ctrl UI: theme.scss: move scrollbar styling here to work inside shadow DOMs UI: startup.js: turn CGrid into a LitElement to work inside shadow DOMs UI: b/pianoroll.js: work around FireFox exception when ctx.font is assigned UI: b/shell.vue: allow notification callbacks on get_note_cache() UI: b/statusbar.vue: use elementsFromPoint() to find Tips inside shadowRoots UI: b/contextmenu.js: support @activate="handler" notifications UI: b/menubar.vue: move comment to work around Vue's template child handling UI: b/knob.js: ignore hscrolls to allow horizontal device panel scrolling UI: b/devicepanel.vue: adjust to b-shell grid layout UI: b/pianoroll.js: fix scrollbar style UI: b/pianoroll.js: add indicator to show the current tick UI: b/shell.vue: use for the basic layout UI: b/pianoroll.js: implement as LitElement UI: b/pianoroll.js: add skeleton UI: b/piano-roll.vue: remove Vue based piano-roll Merge branch 'cursors' # 2022-12-22 Tim Janik 32b1518 * cursors: IMAGES: anklangicons.sh: fixes for svgo 2.8.0 and Inkscape >= 1.0 IMAGES: anklangicons.sh: remove unused cursor commands RAND: hotspots.sh: add simple script to debug hotspot coords in cursors UI: b/piano-roll.vue: remove AnklangCursors.scss references UI: Makefile.mk: remove AnklangCursors.scss copy UI: Makefile.mk: copy cursors/cursors.css and all cursor SVGs UI: little.js: allow runtime postcss imports from cursors/cursors.css UI: cursors/cursors.css: add CSS vars for: cross eraser hresize knife move pen UI: cursors/knife.svg: add 28x28 pixel "knife" cursor UI: cursors/hresize.svg: add 28x28 pixel "horizontal resize" cursor UI: cursors/cross.svg: add 28x28 pixel "cross" cursor UI: cursors/move.svg: add 28x28 pixel "move" cursor UI: cursors/eraser.svg: make cursor 28x28 pixels UI: cursors/pen.svg: make cursor 28x28 pixels UI: cursors/: move eraser.svg and pen.svg here Merge branch 'swesterfeld-blepsynth-adsr-time-fix' # 2022-11-17 Tim Janik 54726cd * swesterfeld-blepsynth-adsr-time-fix: DEVICES: blepsynth: use non-linear mapping for ADSR times ASE: sortnet.hh: update URLs in comments Merge branch 'sprite-knob' # 2022-11-16 Tim Janik 439c3b8 * sprite-knob: MISC: Dockerfile.focal: install librsvg2-bin for rsvg-convert UI: remove unused eknob.svg embedding UI: b/knob.vue: remove Vue based knob implementation UI: b/pro-input.vue: remove unused knob handling UI: b/pro-group.vue: use b-knob for scalar Property editing UI: b/knob.js: rewrite b-knob as LitElement with sprites UI: b/deviceeditor.vue: use Util.extend_property() to cache Property fields UI: Makefile.mk: provide control knob sprite assets Makefile.mk: include images/knobs/Makefile.mk IMAGES: knobs/cknob.svg: add MPL-2.0 license IMAGES: knobs/Makefile.mk: build bi- and unidirectional control knob sprites IMAGES: knobs/mksprite.py: rotate svg knob and add level indicator IMAGES: knobs/cknob.svg: add rotatable control knob UI: util.js: wheel_delta: adjust factors for modern Firefox and Chrome versions UI: startup.js: set CONFIG.dpr_movement for Chrome<=100 and Gecko As of Firefox-106, dpr_movement is needed and for Chrome-107 it is not. UI: util.js: use internal Symbol for request_pointer_lock() state handling UI: util.js: fix value updates of extended properties Catch the right event and normalize the value in JS. UI: util.js: add methods to handle destroy callbacks on objects UI: b/shell.vue: comment fixup UI: b/databubble.vue: hook into App.zmove for all event handling Also, fix stuck bubbles when rehovering the same element. UI: b/app.js: generate zmove events for pointerdown, pointermove, pointerup UI: b/app.js: make sure "mousemove" triggers ZMove updates ASE: processor.cc: keep constant number of characters for % values ASE: processor: send property notifies early, account for inflight values ASE: api.hh: add missing const ASE: crawler: use emit_notify() and avoid emit during ctor ASE: *.cc: use emit_notify() where possible Merge branch 'zoom-ui' # 2022-11-16 Tim Janik 8e65adf * zoom-ui: UI: b/menubar.vue: support Zoom In/Out/Reset for Electron ELECTRON: main.js: export zoom_level() to allow UI zoom adjustments UI: kbd.js: match_key_event: split 'Ctrl++' only once DOC: ch-development.md, ch-intro.md: fix testbit.eu URL ASE: randomhash: fix testbit.eu URL ASE: track.cc: fix MASTER_TRACK flag Merge branch 'swesterfeld-vcf-cutoff-fix' # 2022-11-03 Tim Janik 203c246 * swesterfeld-vcf-cutoff-fix: DEVICES: blepsynth: fix cutoff frequency modulation for filter Fix frequency scaling problems: the freq_in array now passes its frequency to the filter as plain Hz. Merge branch 'time-autostop' # 2022-11-03 Tim Janik 6d531e6 * time-autostop: GITHUB: workflows/testing.yml: add repository and gh-user to IRC notifications GITHUB: workflows/ircbot.py: support -R for initiating repository name GITHUB: workflows/testing.yml: skip IRC bot name GITHUB: workflows/ircbot.py: set "YYBOT" as bot name ASE: main: add autostop handling and implement -t to trigger autostop ASE: project: start_playback(): pass autostop into engine ASE: engine: add autostop handling and delay capture until transport is running ASE: defs.hh: add D64MAX ASE: strings.cc: add string_to_seconds() ASE: formatter.cc: test atomic which is a struct and needs %s UI: b/treeselector-item.vue: use ContextMenu.valid_uri() to check valid uri UI: b/contextmenu.js: always use valid_uri() for uri in boolean contexts Merge branch 'opus-wav-flac' - capture engine output # 2022-10-28 Tim Janik bb7a442 * opus-wav-flac: UI: b/aboutdialog.vue: display FLAC version ASE: api: export get_flac_version() UI: b/aboutdialog.vue: show Opus version Remove unused Vorbis version. ASE: api.hh: export Opus version Remove unused Vorbis and MP3 version export. MISC: Dockerfile.focal: provide libopus MISC: config-checks.mk: provide ogg-1.3.4 and opus-1.3.1 Remvoe Vorbis requirement, which is unused. ASE: main.cc: exit with atquit_run() upon SIGINT ASE: loop: USignalSource::install_sigaction(): install unix signal handler ASE: utils: provide atquit handlers ASE: loop.hh: minimize latency of signal handlers by running at high priority ASE: main: add -o wavfile to the CLI ASE: engine: support engine output capturing into wave files Squashed commits of engine capturing development: ASE: engine: add queue_capture_start() and queue_capture_stop() ASE: engine.cc: stall engine once program is aborted (atquit_triggered) ASE: engine.cc: capture output via wave_writer_create_opus() ASE: engine.cc: capture output via wave_writer_create_wav() ASE: engine.cc: capture output via wave_writer_create_flac() ASE: wave: add wave file writer for WAV, OPUS, FLAC Squashed commits of wave file development: ASE: wave.hh: add WaveWriter interface ASE: wave: add writer for WAV files with support for PCM and FLOAT ASE: wave: implement Opus writer and export Opus version ASE: wave.cc: write extension header for FLOAT format For example SoX(1) complains about float WAV files 'missing extended part of fmt chunk' ASE: wave: add FLAC writer and export FLAC version ASE: wave: install atquit handlers to flush/finalize wave files ASE: main: load projects without '--preload' and support --play-autostart ASE: main.cc: auto-load projects passed on the CLI Merge branch 'loft' # 2022-10-26 Tim Janik 84ff17e * loft: ASE: main.cc: configure Loft and concurrently preallocate pages on demand ASE: tests/benchmarks.cc: benchmark loft_calloc() ASE: loft: add Loft - a lock- and obstruction-free thread memory allocator Squashed commits of Loft development: ASE: loft: implement mmap() based bump allocator ASE: loft: implement MpmcStack based bucket allocator ASE: loft: add loft_alloc() ASE: loft: add loft_make_unique() and LoftFree::operator()() ASE: loft: add loft_calloc() ASE: loft: add multithreaded allocator stress test ASE: loft: use FastRng for testing ASE: loft: add loft_bucket_size() ASE: loft: add loft_get_stats(), loft_stats_string() ASE: loft: add loft_get_config(), loft_set_config(), config flags ASE: loft: add loft_grow_preallocate(), loft_set_notifier() ASE: loft: issue a warning if allocations via syscall happen inline ASE: atomics.hh: add MpmcStack.peek ASE: atomics.cc: fix signedness ASE: atomics.cc: add test for MpmcStack<> ASE: atomics.hh: add MpmcStack<>, a lock-free stack for non-reclaimable memory Merge branch 'mwc256-prng' # 2022-10-26 Tim Janik 153071d * mwc256-prng: ASE: randomhash.cc: add FastRng jump ahead tests ASE: main.cc: add --rand64 to generate 64bit FastRng numbers on stdout This can be used to test the PRNG quality with for example PractRand: AnklangSynthEngine --rand64 | RNG_test stdin64 -multithreaded ASE: randomhash: add FastRng, a multiply-with-carry PRNG with period 2^255 ASE: tests/benchmarks.cc: use 3k as max chunk size to avoid memset benchmarking ASE: sortnet.cc: speed up test by reducing the checked 10-element permutations Merge branch 'update-sanitizers' # 2022-10-26 Tim Janik a252fc9 * update-sanitizers: JSONIPC: jsonipc.hh: fix atexit memory leak ASE: formatter.hh: properly handle nullptr_t for %p ASE: nativedevice.cc: fix signedness ASE: serialize.cc: fix unit test memory leak UI: Makefile.mk: ignore asan when running AnklangSynthEngine DOC: Makefile.mk: ignore asan when running AnklangSynthEngine MISC: config-uname.mk: update sanitizer linkage GITHUB: workflows/testing.yml: upgrade actions/checkout and actions/cache to v3 MISC: Dockerfile.focal: comment fixups GITHUB: workflows/testing.yml: allow TeX installation during CI builds Merge branch 'pdf-artifacts' # 2022-10-25 Tim Janik e0272bd * pdf-artifacts: GITHUB: workflows/testing.yml: build PDF and upload 'docs' build artifact MISC: mkassets.sh: use 'pdf' shorthand in build rule DOC: Makefile.mk: require explicit 'pdf' rule to build PDF manuals via TeX By default, only the HTML manuals are built and installed (without TeX dependency). The PDF variants can be built explicitely with `make pdf`. The PDF manuals are installed if they are present at install time. GITHUB: workflows/testing.yml: enable CI for 'next' and PRs Merge branch 'litelement-menu' # 2022-10-21 Tim Janik 8032e64 * litelement-menu: X11TEST: play-notes.json: update UI test UI: b/*: assign aria-label where appropriate UI: b/*.vue: add html id to context menus UI: b/menuitem.js: always strip slot_label UI: util.js: remove unused dropdown() UI: b/color-picker.vue: fix menu and support click-drag selection UI: b/contextmenu.js: expose dialog via part=dialog to CSS rules UI: b/trackview.vue: popup context menu at cursor UI: b/piano-roll.vue: fix popup position UI: b/piano-ctrl.js: avoid stealing unhandled key presses UI: b/dialog.vue: close on regular Escape presses, avoid stealing Escape UI: b/contextmenu.js: stop handled dialog Escape key from bubbling further UI: util.js: allow shields without Escape key stealing UI: b/choice.vue: fix menu and key handling to work like all menus UI: b/contextmenu.js: provide .open read-only property UI: b/menuitem.js: remove unused code UI: b/contextmenu.js: fix data-contextmenu styling UI: b/fed-picklist.vue: remove unused component UI: b/devicepanel.vue: fix menu origin and insertion pos ASE: nativedevice.cc: fix device insertion order UI: b/contextmenu.js: close menu on backdrop clicks UI: util.js: dialog_backdrop_mousedown(): close dialogs on backdrop clicks UI: b/menubar.vue: use b-contextmenu .activate and .isactive UI: b/piano-roll.vue: use b-contextmenu .activate and .isactive UI: b/deviceeditor.vue: use b-contextmenu .activate and .isactive UI: b/treeselector-item.vue: use frame stamp to ignore duplicate clicks UI: b/menubar.vue: use frame stamp to ignore duplicate clicks UI: b/contextmenu.js: make FF auto-focus an element on showModal(), like Chrome UI: b/contextmenu.js: use frame stamp to ignore duplicate clicks and popup()s Note that keyboard presses, mouse clicks, drag selections and event bubbling can all cause menu item clicks and contextmenu activation. In order to deduplicate multiple events that arise from the same user interaction, *one* popup request and *one* click activation is processed per animation frame. UI: util.js: add frame_stamp(), retrieve a timestamp unique per animation frame UI: kbd.js: move_focus(): fallback to move focus inside body UI: kbd.js: list_focusables(): take [open]:modal in shadow DOMs into account UI: kbd.js: list_focusables(): take [open]:modal dialogs into account UI: b/treeselector-item.vue: fix single-click menu activation and styling UI: b/trackview.vue: fix menu activation UI: b/piano-roll.vue: fix menu activation, allow click-drag menu selection UI: b/devicepanel.vue: fix menu activation UI: b/menubar.vue: allow click-drag menu selection UI: b/menuitem.js: use .activate and .isactive callbacks for item activation UI: b/contextmenu.js: use .activate and .isactive callbacks for menu activation ASE: project.cc: fix some missing notify::dirty emissions UI: b/menubar.vue: adapt context menu clicks, popup menus early (mousedown) UI: b/menuitem.js: adjust for b-contextmenu as LitElement UI: kbd.js: fix keydown_move_focus() for shadow DOMs UI: util.js: add prevent_event() UI: b/contextmenu.js: port b-contextmenu to LitElement UI: b/menuitem.js: use 'b-menurow' CSS selector UI: b/menurow.js: port b-menurow to LitElement UI: b/menuitem.js: pass b-menurow turn / noturn attributes to button UI: util.js: add closest() for shadow DOMs UI: b/trackview.vue: always use the b-icon ic="" attribute UI: b/menuitem.js: export KeymapEntry as this.keymap_entry UI: b/contextmenu.vue: collect and register KeymapEntry props from descendants UI: kbd.js: support add+remove of global keymaps UI: b/menuitem.js: port b-menuitem to LitElement UI: util.js: add lrstrip() and collect_text_content() UI: kbd.js: make activeElement and list_focusables shadow DOM aware This allows transparent handling of custom focus navigation and hotkey activation in shadow DOMs. UI: util.js: extend has_ancestor() to support open shadow DOMs UI: b/contextmenu.vue: support click, keymap, b-contextmenu-menudata on Element UI: b/icon.js: port b-icon from vue to LitElement UI: util.js: add adopt_style() and add_style_sheet() UI: b/*.vue: always use the b-icon ic="" attribute GITHUB: workflows/testing.yml: update github actions Merge branch 'package-updates' # 2022-10-12 Tim Janik 84e7c32 * package-updates: ASE: clip.cc: fix macro clash MISC: package.json.in: update various npm packages Makefile.mk: clean x11test/ output dir Merge branch 'activate+deactivate' # 2022-10-12 Tim Janik 4e5ac8b * activate+deactivate: ASE: object.cc: properly check Connection ptr before use ASE: track.cc: remove over eager assertion ASE: project.cc: start_playback(): switch current engine project on demand Makefile.mk: allow make default to configure INSN ASE: project: move activate/deactive to Project ASE: engine.cc: fix loss of "change:prefs" notification connection ASE: engine: add API to set up exclusive Engine + Project relation ASE: track: require Project as parent of track ASE: gadget: add flags field to be used for gadgets and derived types ASE: clapplugin: rename clap_deactivate() and variants ASE: api.hh: use GadgetImpl as parent pointer ASE: api.hh: derive Track from Device ASE: api.hh: derive Project from Device ASE: device: rename and move Device::extract_info() here ASE: clapdevice.cc: fix call to inherited methods ASE: nativedevice: provide remove_all_devices(), implement activation ASE: api.hh: Device: provide _activate() _deactivate() is_active() ASE: nativedevice.cc: clarify TODO ASE: split DeviceImpl into Device and NativeDevice ASE: engine: turn the engine into a global singleton ASE: engine: simnply wrap AudioEngineImpl calls into AudioEngine methods ASE: engine: rename AudioEngineImpl ASE: main: export main_loop_wakeup() Merge branch 'ci-job-split' # 2022-10-11 Tim Janik bd540be * ci-job-split: GITHUB: workflows/testing.yml: split jobs for Ubuntu, Arch, IRC DOC: copyright.ini: assume MPL-2 for x11test/*.json Merge branch 'x11test' # 2022-10-10 Tim Janik 662fd7a * x11test: X11TEST: play1note.json: add recording to play a single MIDI note GITHUB: workflows/testing.yml: run x11test-v on Ubuntu build and upload result Makefile.mk: docuemnt x11test and x11test-v Makefile.mk: add x11test, x11test-v to run (headless) end-to-end tests X11TEST: replay.sh: play Anklang DevTools recording in Electron via Puppetteer X11TEST: ereplay.cjs: use Electron and Puppetteer to replay DevTools recording X11TEST: x11rec.sh: run and record a command in a virtual or nested X11 session MISC: package.json.in: add puppeteer packages MISC: Dockerfile.focal: provide xvfb 9wm ffmpeg Merge branch 'print-class-tree' # 2022-09-28 Tim Janik 8bde98a * print-class-tree: DOC: Makefile.mk: anklang-internals: add "Ase Class Inheritance Tree" ASE: main: add --class-tree to print the class tree JSONIPC: jsonipc.hh: add ClassWalker ASE: internal.hh: add assert_unreached() ASE: engine: minor fixes Merge branch 'fix-vue-3.2.28' # 2022-09-28 Tim Janik 6628472 * fix-vue-3.2.28: UI: b/shell.vue: work around vue-3.2.38 breaking $forceUpdate() before mount() Avoid the Shell calling $forceUpdate() from created(). That used to work up until Vue-3.2.27, but with .28 and .29 results in: vue.js:1843 Uncaught (in promise) TypeError: Cannot read properties of null (reading 'id') at queueJob (vue.js:1843:17) at i.f.i.f (vue.js:4591:44) Aparently $forceUpdate() calls are now broken before mount(). UI: Makefile.mk: fix wildcard for lit.js to not catch little.js Merge branch 'fix-gc' - plugs a GC race condition # 2022-09-27 Tim Janik 6caa570 * fix-gc: JSONIPC: jsonipc.hh: InstanceMap: remove unused swap and move_into ASE: jsonapi.cc: fix GC bookkeeping with mark_unused() and purge_unused() JSONIPC: jsonipc.hh: InstanceMap: add mark_unused() and purge_unused() JSONIPC: jsonipc.hh: add CallbackInfo::classname() to improve error messages Merge branch 'prefault-pages' # 2022-09-27 Tim Janik 9cf276d * prefault-pages: ASE: main.cc: prefault heap and stack pages ASE: main.cc: tune malloc via mallopt to reduce page fault probability Merge branch 'build-improvements' # 2022-09-27 Tim Janik 931a674 * build-improvements: MISC: config-uname.mk: enable link time optimization via -flto for MODE=production MISC: Makefile.mk: clean mkdeb/ if left over MISC: Dockerfile.focal: install libgtk-3-dev which also provides libdbus-1-dev Merge branch 'low-latency-sched' # 2022-09-14 Tim Janik 5184d18 * low-latency-sched: ASE: engine.cc: request low latency scheduling for the synthesis engine ASE: platform: add sched_{set|get|fast}_priority() ASE: dbus: add DBus methods rtkit_make_high_priority + rtkit_get_min_nice_level MISC: mkdeb.sh: postinst: add cap_sys_nice to AnklangSynthEngine MISC: config-checks.mk: add dbus-1 to ase dependencies ASE: utils.cc: allow mixed case debug keys ASE: Makefile.mk: use ASEDEPS_CFLAGS and ASEDEPS_LIBS MISC: config-checks.mk: provide just ASEDEPS_CFLAGS and ASEDEPS_LIBS for ase/ Merge branch 'remote-gc' # 2022-09-14 Tim Janik f59890b * remote-gc: UI: startup.js: renew_gc() on object finalization, report_gc() when requested ASE: jsonapi.cc: support renew_gc() and report_gc() to start new GC cycle The basic idea behind remote GB by the UI requesting renew_gc() and the Jsonapi server swapping wrapper tables in response is described here: https://testbit.eu/2014/rapicorn-remote-reference-counting ASE: jsonapi.cc: test conscise erase() loop over std::map<> Checks the erase() loop used by Jsonipc over std::map<>, in particular ++end must be avoided for empty maps. JSONIPC: jsonipc.hh: support clear/swap/size/move_into for instance ptr map MISC: config-uname.mk: use -Og for debugging which improves debug info Using -Og is a better choice than -O0, because some compiler passes that collect debug information are disabled at -O0. (gcc docs) UI: startup.js: properly namespace Jsonapi/Trigger ASE: jsonapi.cc: properly namespace Jsonapi/Trigger DOC: ch-development.md: properly namespace Jsonapi/Trigger DOC: ch-development.md: minor update UI: startup.js: request Ase.Server via Jsonapi/initialize after handshake ASE: jsonapi.cc: provide Ase.Server object as Jsonapi/initialize reply JSONIPC: jsonipc.hh: reply to Jsonipc/handshake with protocol version 1 JSONIPC: jsonipc.js: require Jsonipc/handshake with protocol version 1 UI: startup.js: maintain $id GC list via Jsonipc.finalization_registration JSONIPC: jsonipc.js: call Jsonipc.finalization_registration hook from ctors UI: GNUmakefile: allow subdir builds Merge branch 'automatic-backup' # 2022-08-24 Tim Janik 72174fb * automatic-backup: ASE: project.cc: automatically backup existing project files ASE: path: add glob() ASE: path: add rename() ASE: utils: add now_strftime() Merge branch 'clap-file-reference' # 2022-08-24 Tim Janik 031c81f * clap-file-reference: ASE: clapplugin: clean up load_state() and save_state() ASE: *.cc: use operator<< where needed for serialization ASE: serialize.hh: add operator>> and operator<< to support pure const serialization ASE: serialize.hh: operator&: catch serialization into const at compile time ASE: project.cc: merge asset_hashes ASE: project.cc: use Error::NO_PROJECT_DIR if anklang.project is missing ASE: api.hh: add Error::NO_PROJECT_DIR ASE: clapplugin: implement file collection ASE: clapplugin.cc: save_state: request plugin_file_reference->save_resources() ASE: clapplugin.cc: add CLAP_EXT_FILE_REFERENCE skeleton ASE: serialize.cc: use TelemetryField for simple serialization tests ASE: serialize: support external serialize(T&,WritNode&) impls via ADL ASE: serialize.cc: test tuple serialization ASE: project.cc: loader_resolve: lookup and resolve files from project dir ASE: project.cc: serialize file hashes as tuple array ASE: serialize.hh: serialize tuple<...> types UI: b/menubar.vue: use project.saved_filename() as "Save" location ASE: api.hh: add Project.saved_filename() ASE: Makefile.mk: upgrade to clap-1.1.1.tar.gz UI: b/app.js: use save_project() ASE: api.hh: rename Project.save_project() ASE: project.cc: canonicalize project file name when saving ASE: project: properly implement writer_collect() ASE: project: add API to collect external files ASE: strings: add strings_version_sort() ASE: path: add dircontains() to check dir hierarchy and compute relative path ASE: path: add copy_file(), use FICLONE ioctl to create CoW clone if possible Currently, FICLONE is supported under Linux for XFS and BTRFS. Use `filefrag -v` to detext or debug shared file extents. ASE: path: add file_size(), gracefully handle errors ASE: clapplugin: derive ClapPluginHandle from GadgetImpl ASE: api.hh: print user notes and allow `rest` argument ASE: api.hh: introduce Gadget._project() ASE: strings: add string_to_hex() ASE: main.cc: add --blake3 to test Blake3 hashing ASE: compress: add blake3_hash_file() and blake3_hash_string() ASE: storage: add stream_reader_from_file() ASE: Makefile.mk: compile BLAKE3 with SSE and AVX variants ASE: Makefile.mk: provide blake3.h from BLAKE3-1.3.1.tar.gz ASE: Makefile.mk: use SOURCE2_O MISC: config-uname.mk: add $(call SOURCE2_O) to create object extensions ASE: clapplugin.cc: fix warnings MISC: config-checks.mk: show sha256sum command used failing downloads Merge branch 'sse+fma-synth-engine' - build releases with SSE + FMA support # 2022-08-12 Tim Janik 5f77129 * sse+fma-synth-engine: ASE: Makefile.mk: build FMA variant iff MODE=production INSN=sse MISC: mkassets.sh: build releases with MODE=production INSN=sse MISC: Makefile.mk: remove INSN build remnants Merge branch 'fix-scripts' # 2022-08-12 Tim Janik a169887 * fix-scripts: MISC: mkassets.sh: handle unbound $V MISC: mkdeb.sh: handle unbound $V MISC: mkAppImage.sh: handle unbound $V MISC: dbuild.sh: handle unbound $V Merge branch 'dockerize-asset-builds' # 2022-08-11 Tim Janik 2fd2f5f * dockerize-asset-builds: MISC: Makefile.mk: adjust release-message MISC: Makefile.mk: export $V for build scripts MISC: Makefile.mk: simplify builds, merge upload-nightly and upload-release Makefile.mk: fix ls-tree.lst generation in tarballs MISC: mkassets.sh: extract release info, make AppImage MISC: mkAppImage.sh: move AppImage build logic here MISC: mkassets.sh: build binary packages from tarball MISC: mkdeb.sh: pass $V to make MISC: dbuild.sh: pass $V into docker env MISC: dbuild.sh: remove unused .dbuild/ handling MISC: Dockerfile.focal: reduce layers MISC: Dockerfile.focal: always become 'builder' user, prepare /ootbuild/ Merge branch 'arch-ci' # 2022-08-11 Tim Janik 76c6214 * arch-ci: .gitignore: add ignores GITHUB: workflows/testing.yml: cleanup after each platform build GITHUB: workflows/testing.yml: build and test on arch, cache arch docker image MISC: Dockerfile.arch: setup archlinux dependencies for building Anklang Use upstream CastXML, the AUR version seems outdated and broken. Merge branch 'docker-caching' # 2022-08-11 Tim Janik 433f9bd * docker-caching: MISC: dbuild.sh: skip TeX during docker image build with -T MISC: Dockerfile.focal: cleanup early to shrink docker image, possibly skip TeX MISC: dbuild.sh: use misc/Dockerfile.focal by default, remove -d, change -f MISC: Dockerfile.focal: rename from Dockerfile-apt, use FROM ubuntu:20.04 ASE: Makefile.mk: add missing dependencies for includes ASE: sortnet.hh: include for std::less Makefile.mk: use `ctags` executable GITHUB: workflows/testing.yml: fix cache-hit detection GITHUB: workflows/testing.yml: skip docker caching on cache miss GITHUB: workflows/testing.yml: invalidate cache if misc/dbuild.sh changes GITHUB: workflows/testing.yml: remove docker image test MISC: get rid of --no-tex and $NO_TEX (now unused) GITHUB: workflows/testing.yml: remove '--no-tex' Avoiding Tex installation was only needed without docker image caching. MISC: dbuild.sh: fix SIGPIPE when searching docker image for INITIALIZE MISC: dbuild.sh: debug wrong INITIALIZE setting MISC: dbuild.sh: use 'ubuntu:20.04' as base instead of 'ubuntu:focal' Both are tags for the same image, but the former is already present on Github's stock system. GITHUB: workflows/testing.yml: fix grep exit status GITHUB: workflows/testing.yml: invalidate cache if misc/Dockerfile-apt changes GITHUB: workflows/testing.yml: stop forcing a docker build step GITHUB: workflows/testing.yml: upgrade to actions/checkout@v2.4.2 GITHUB: workflows/testing.yml: cache docker image via github cache GITHUB: workflows/testing.yml: find version inside docker GITHUB: workflows/testing.yml: always use the same build arg for docker MISC: version.sh: ignore missing tags in Format:%(describe) workaround Merge branch 'dist-tarball' - create distribution tarballs # 2022-08-06 Tim Janik 50d9c06 Adjust versioning and build rules to support proper distribution tarballs that will build without .git/ history. * dist-tarball: MISC: Dockerfile-apt: provide zstd MISC: Makefile.mk: re-enable nightly asset builds Makefile.mk: work around git 2.25.1 not handling Format:%(describe:match) Ubuntu 20.04 still runs git 2.25.1. MISC: version.sh: work around git 2.25.1 not handling Format:%(describe:match) Ubuntu 20.04 still runs git 2.25.1. MISC: Dockerfile-apt: add universal-ctags MISC: dbuild.sh: recognize --help Makefile.mk: use wildcard for toplevel CLEANFILES MISC: Makefile.mk: list Nightly changes MISC: Makefile.mk: fix upload-release MISC: Makefile.mk: use TARBALL version for build-assets MISC: Makefile.mk: minor fixups MISC: Makefile.mk: only check-copyright if .git/ exists MISC: Makefile.mk: remove versioned ChangeLog generation Makefile.mk: ChangeLog: use slightly longer hashes Makefile.mk: fix ChangeLog range Makefile.mk: use ls-tree.lst to generate TAGS MISC: Makefile.mk: use ls-tree.lst DOC: Makefile.mk: use ls-tree.lst Makefile.mk: create and distribute ls-tree.lst MISC: config-utils.mk: provide only $(HAVE_GIT) which is true if .git/ exists Using the old WITHGIT or WITHOUTGIT did not really work. MISC: Makefile.mk: avoid -j, rely on MAKEFLAGS for parallel submakes MISC: Makefile.mk: build-nightly: create and build dist tarball MISC: dbuild.sh: use .dlcache subdir for dockerized ccache MISC: Makefile.mk: build-assets: build from sources in $(TARBALL) MISC: Makefile.mk: record and use artifacts in build-assets MISC: Makefile.mk: add 'build-version' rule MISC: Makefile.mk: call version.sh --make-nightly for nightly builds MISC: Makefile.mk: check nightly versions MISC: Makefile.mk: add 'versioned-manuals' rule DOC: Makefile.mk: use packaged doc/copyright if Git is missing GITHUB: workflows/testing.yml: build with --no-tex and SKIP_LATEX=true Only the PDF manuals need Tex, skipping LaTex installation significantly speeds up the CI builds. MISC: dbuild.sh: add --no-tex (replaces --tex) MISC: Dockerfile-apt: default to building with Tex DOC: Makefile.mk: build PDF manuals, unless SKIP_LATEX=true DOC: Makefile.mk: skip misc/mkcopyright.py if .git is not present MISC: mkdeb.sh: use `misc/version.sh --commit-hash` instead of git MISC: version.sh: add --commit-hash MISC: version.sh: remove extra version printout for --make-nightly MISC: version.sh: add --help and --make-nightly MISC: version.sh: use the same COMMITINFO for archives and .git repos Makefile.mk: dist: allow packaging with NEWS.md worktree changes Makefile.mk: simplify make dist Makefile.mk: add hard dependency on ctags-universal Builds from Git need ctags-universal to reliably generate TAGS for make dist. Makefile.mk: provide $(builddir) and $>/ early on Makefile.mk: check misc/version.sh execution ASE: Makefile.mk: add missing minizip/mz_zip.h dependency DOC: copyright.ini: list freeverb sources under Public Domain dedication DEVICES: freeverb/freeverb.cc: license under MPL-2.0 Merge branch 'freeverb' # 2022-07-31 Tim Janik 554794d * freeverb: DEVICES: freeverb/freeverb.cc: turn into a working AudioProcessor for Ase DEVICES: freeverb/freeverb.cc: make query_info() const, i.e. MT-Safe DEVICES: freeverb/freeverb.cc: move all code completely into Anon namespace DEVICES: freeverb/freeverb.cc: use explicit add_param() IDs and fix arguments DEVICES: freeverb: implement STK and VLC damping Avoid reinforcing feedback loop in the original damping code, by providing VLC and STK damping modes. The latter is likely closest to the original intention so it is now the default. This also reorders some parameters and removes the original freezing mode, that does not really make sense for Processors. DEVICES: freeverb/freeverb.cc: add Freeverb Processor DEVICES: freeverb/revmodel.cpp: fix missing `int i` decls DEVICES: freeverb/Freeverb*: remove unused vst files DEVICES: freeverb/: fix up whitespace and \n without \r everywhere DEVICES: freeverb/: Freeverb - free public domain reverb SOURCE CODE Freeverb - Free, studio-quality reverb SOURCE CODE in the public domain Written by Jezar at Dreampoint - http://www.dreampoint.co.uk DEVICES: freeverb/Makefile.mk: add source file to devices/4ase.ccfiles DEVICES: freeverb/GNUmakefile: allow subdir builds DEVICES: Makefile.mk: add dependencies, clean rule, etc for devices/ sources DEVICES: blepsynth/Makefile.mk: simply add source files to devices/4ase.ccfiles UI: b/contextmenu.vue: allow 0 as valid menuitem.uri value UI: b/cliplist.vue: only call non-null Shell.piano_current_tick() README.md: fix manual link Merge branch 'jack-driver' # 2022-07-29 Tim Janik cc1cb08 * jack-driver: DOC: ch-install.md: merge jack howto into driver-setup section DOC: ch-install.md: add chapter about download and installation ASE: main.cc: print the real executable_name() for --version and usage ASE: driver.cc: load jackdriver.so ASE: Makefile.mk: optionally build jackdriver.so MISC: config-checks.mk: check if jack.pc >= 0.125.0 is present Jack 0.125.0 ships with Ubuntu-20.04. ASE: driver-jack.cc: turn into a working PCM driver for Ase ASE: driver-jack.cc: adapto to Ase namespace ASE: merge original Jack driver by Stefan Westerfeld Initial version of Jack driver using the new driver API Add minimal jack howto Block SIGPIPE to avoid crashes when jackd dies Driver: return read and write latency for a pcm driver separately For instance for synchronizing the play position pointer ui with the audio buffering, you want to know how much write latency you have, but don't care about the amount of read latency. Add list with possible improvements from PR 31 https://github.com/tim-janik/beast/pull/31 Add some minor fixes as requested in review ASE: engine.cc: consistently calculate buffer size for multiple channels ASE: datautils.hh: add fast_copy() for floats and ints ASE: driver-alsa.cc: adjust debug messages, remove unused variable ASE: main.cc: require command line options to enable JSIPC logging Merge branch 'version-fixes' # 2022-07-29 Tim Janik 61e8d05 * version-fixes: ASE: remove unneeded version postfix from AnklangSynthEngine MISC: version.sh: fix development postfix for shallow versions MISC: version.sh: fix build id with development postfix MISC: Makefile.mk, version.sh: fix release tag missing 'v'-prefix ">GITHUB: workflows/testing.yml: run poxy on ubuntu:22.04 # 2023-07-31 Tim Janik a7b0307 MISC: docker_run: fix interactive invocations # 2023-07-31 Tim Janik 46933a8 MISC: Dockerfile.jammy: setup development tools for ubuntu:22.04 builds # 2023-07-31 Tim Janik 30081a5 Merge branch 'make-dist-and-assets' # 2023-07-31 Tim Janik 4694aa8 * make-dist-and-assets: GITHUB: workflows/release.yml: add Ping-IRC job GITHUB: workflows/release.yml: use misc/docker_run GITHUB: workflows/release.yml: add action to build & create releases from tags Makefile.mk: dist: assign release version to misc/version.sh:BAKED_DESCRIBE MISC: version.sh: prepare BAKED_DESCRIBE variable to define baked in version MISC: version.sh: support lightweight release tags via exact match UI: Makefile.mk: fix unintentional tscheck remakes DOC: Makefile.mk: add doc/ch-releasing.md to internal manual ASE: Makefile.mk: rebuild ase/buildversion*.cc if GITCOMMITDEPS changes Makefile.mk: rebuild package.json if GITCOMMITDEPS changes MISC: config-utils.mk: take tags and packed-refs into account for GITCOMMITDEPS DOC: ch-releasing.md: elaborate on releases and assets DOC: ch-releasing.md: start describing versioning and the release process MISC: mknews.sh: add development version disclaimer MISC: Makefile.mk: remove partial release build rules MISC: mkassets.sh: simplify to just make dist and trigger release asset builds MISC: mkAppImage.sh: build AppImage in assets/ MISC: mkAppImage.sh: use tools from appimagetools/ dir MISC: Makefile.mk: cache downloads of appimage tools Makefile.mk: make

Jamulus enables real-time jam sessions over the internet.

Updated: 30 Jul, 2023
  • Client: Added SRV-based virtual hosting support (#2930).
    (contributed by @hoffie)

  • Server: Improved --serverinfo argument validation (#2951).
    (contributed by @hoffie, @pljones)

  • Server: ISO country codes can now be supplied in upper or lower case (#2934).
    (contributed by @Rob-NY)

  • Server: Use native file selection dialog for recording directory and persistence file to allow read and write access outside of the macOS sandbox (#3009).
    (contributed by @ann0see)

  • Server: Rename --directoryserver to --directoryaddress (and internal changes) (#3017).
    (contributed by @pljones)

  • Server: Save the HTML formatting in Server Welcome Message. (Applies to the GUI Server.) (#3058).
    (contributed by @pljones)

  • Windows: Windows 64bit releases use Qt 6.5.2 now. Jamulus will from now on only support Windows 10 and above (#2300).
    (contributed by @hoffie)

  • Linux: Debian users can now use the official PPA to get automatic updates. See the Linux install page on jamulus.io for more information (#3013).
    (contributed by @ann0see)

  • Mac: The legacy build now uses the macOS 13.1 SDK which is unsupported by Qt 5.9.9. We still provide the legacy build, but from now on consider it as deprecated. You

Jamulus enables real-time jam sessions over the internet.

Updated: 30 Jul, 2023

Update version to 3.10.0beta1 for first beta release

LilyPond is a music engraving program, devoted to producing high-quality sheet music

Updated: 30 Jul, 2023

LilyPond 2.25.7

VMPC2000XL is an emulator of the classic Akai MPC2000XL sampler/sequencer.

Updated: 29 Jul, 2023

v0.5.1 (same changes as all v0.5 release candidates listed below)

  • Updated documentation: https://vmpcdocs.izmar.nl
  • Documentation also available in PDF.
  • Song mode: Do not crash when pressing PLAY when (end of song) is selected.
  • Fixed Delete All Programs.
  • Fixed step editor cosmetic issue when changing sequencer position while events are selected.
  • Fix polyphonic recording.
  • Implement transpose (MIDI only, like the original).
  • Type names in the Name window via keyboard, pads and buttons.
  • Auxiliary LCD (which can be opened by double-clicking the LCD) now has a maximize button.
  • Show all keyboard mappings when hovering over the keyboard button in the top-right.
  • Note repeat MIDI output.
  • Fix maximum number of audio output channels. It was limited to a single stereo pair.
  • Fix 16-level note repeats.
  • Improve step editor navigation (remember active field when you were last in that screen better).
  • Playing events in the step editor now results in the correct duration.
  • PURGE to remove all unused samples is now working correctly.
  • Fix ~/Documents/VMPC2000XL/Volumes/MPC2000XL file renaming on Windows. For example if you've copied a samplepack over, the names usually need to be shortened. This was messed up and now it's better.
  • Load MIDI files that were exported from Ableton Live.
  • Fix macOS audio
by KDE

Kdenlive is video and audio editing software with GPU rendering support. Great variety of video filters available.

Updated: 28 Jul, 2023

Create tag for 23.07.80

Jamulus enables real-time jam sessions over the internet.

Updated: 27 Jul, 2023
  • Mac: The legacy build now uses the macOS 13.1 SDK which is unsupported by Qt 5.9.9. We still provide the legacy build, but from now on consider it as deprecated. You are advised to upgrade your OS (#3066).
    (contributed by @ann0see)

  • Refactor: use size_t for vector and array indexes that must not be negative (#2893).
    (contributed by @pljones)

  • RPC: Added new command line switch (--jsonrpcbindip) to specify the bind address for the RPC server (#2917).
    (contributed by @Rob-NY)

  • RPC: jamulusserver/getClients method expanded to include all elements of a user profile as well as the number of active client connections (#2918).
    (contributed by @Rob-NY)

  • CONDENSE with #2833 (#3008).
    (contributed by @ann0see)

  • RPC: Rename directoryServer to directory in jamulusserver/getServerProfile response (#3048).
    (contributed by @pljones)

  • GUI: Make checkboxes self-labelling (#2996).
    (contributed by @pljones)

  • Client: Added SRV-based virtual hosting support (#2930).
    (contributed by @hoffie)

  • Server: ISO country codes can now be supplied in upper or lower case (#2934).
    (contributed by @Rob-NY)

  • Server: Use native file selection dialog for recording directory and persistence file to allow

Jamulus enables real-time jam sessions over the internet.

Updated: 27 Jul, 2023

Fix GPG import error

Import key as file

Move privkey to home which should be the same everywhere

Jamulus enables real-time jam sessions over the internet.

Updated: 27 Jul, 2023

Merge pull request #3077 from ann0see/licensing/addGPLHeader

Add GPL header to autobuild scripts

PipeWire is a server and user space API to deal with multimedia pipelines.

Updated: 27 Jul, 2023

0.3.76

Anklang, a digital audio synthesis application for live creation and composition

Updated: 27 Jul, 2023
  • swesterfeld-piano-roll-note-length:
    UI: b/piano-ctrl.js: cleanup note_duration_delta at the end of a drag
    UI: b/piano-ctrl.js: support resizing multiple notes in a selection

Signed-off-by: Tim Janik timj@gnu.org

MusicBrainz Picard is a cross-platform application written in Python and is the MusicBrainz music tagger

Updated: 26 Jul, 2023

Bugfixes

  • PICARD-2011 - "RuntimeError: dictionary changed size during iteration" in metadatabox
  • PICARD-2685 - Moving files between tracks looses AcoustID fingerprint and ReplayGain tags
  • PICARD-2689 - If the first dragged element is not visible an empty rectangle is shown during drag

Improvements

  • PICARD-2680 - Modal first use and file save confirmation dialogs
  • PICARD-2681 - Revise wording of first use and file save confirmation dialogs

python-rtmidi is a Python wrapper (Cython) for C++ RtMidi using Cython

Updated: 26 Jul, 2023

Fixes:

  • Fixed Cython compilation errors and warnings (#174)

Project infrastructure:

  • Updated requirements-dev.txt with pip-compile (#173).
  • Updated minimum Python version declared in pyproject.toml to 3.8.

Documentation:

  • Updated minimum Python version (3.8) stated in readme and docstring.

Full Changelog: 1.5.4...1.5.5

Radium is a music editor with a tracker and sequencer and mixer interface.

Updated: 22 Jul, 2023
  • Editor: Include the main editor-popup-menu into the
    bottom of the track-header popup menu.
  • Edit: Button to "reverse song" (i.e. all reverse
    all blocks).
  • Edit: Fix the functions to reverse notes. They
    weren't very good before.
  • GUI: Highlight tab elements when mouse hovers
    above.
  • GUI: Add JUCE version to the About-window.
  • GUI: Increase default height of message window
    somewhat.
  • MIDI learn: Fix incremental mode when recording
    automation to editor.
  • API: backwardsSong.

Stargate is an all-in-one DAW and plugin suite

Updated: 22 Jul, 2023
Installation and troubleshooting guides

Download the Stargate DAW sample pack

Changelog
  • Sequencer: Glue: If unselected items are between selected items,
    also glue those. Fixes the previous behavior of gluing as requested and
    then truncating the items
  • Tracks, Items: Fix inconsistency in minimum naming lengths. Require track
    names to be at least 2 characters, reduce minimum length of an item name to
    2 characters to better accomodate Asian languages
  • Sequencer: Set as first beat of song: Fix inconsistencies in selected items
    after the move is complete by clearing the selection
  • Transport: logic improvements, fix bugs when doing weird things with the
    transport buttons
Checksums

Optionally, you can generate a sha256sum of the downloaded file and verify
that it matches this signature.

50583da91b83f6f6a56cc3a7d011a79a6cf809235c4463dbd3d6adb0e080bc38 stargate-23.07.1-1.x86_64.rpm da2f66e8c927c819e14052737efe4743fe6163dada06e9bb0cd5f7cc7c00ff6e stargate-23.07.1-amd64.deb 96f5d3ca270e4d60093c38b643af71075f73a622c298c233d9667d85462ff86c StargateDAW-23.07.1-linux-x86_64.AppImage 953bfcc5f19bcad3c953424dbf4d334ff968c29f1ac61b9ebe4052caea063930 StargateDAW-23.07.1-win64-installer.exe 6ff51e0d2ceb13202bcbf0c65936b742fd8e2b0a8254c36e6aa4c96992a53bed StargateDAW-23.07.1-macos-m1-arm64.dmg ec53f6b657118262fcd35b93dd6b3ae167b2b3ee5949494397449990add94041 StargateDAW-23.07.1-macos-intel-x86_64.dmg

PipeWire is a server and user space API to deal with multimedia pipelines.

Updated: 21 Jul, 2023

0.3.75

Seq66 is a grid style MIDI looper that, a Qt 5 reboot of seq24/sequencer64

Updated: 19 Jul, 2023
- Issue #110 follow-ons: - Fixed saving tempo (BPM) in Windows when changed from main window. Caused by mixing a long and size_t; messed up in Windows builds. - Issue #111 follow-ons: - Fixed initial time-signature drawing in data pane. - Fixed errors in inserting a time-signature. - Added a pulse (tick) calculator to iterate through time-signatures. - Fixed an important port-translation bug in output port-mapping. - Revamped the Playlist tab, as it was confusing and very buggy. - Added auto-play and auto-advance to play-lists. - Issue #102: Added Windows key-mapping to fix processing "native virtual" keys, such as the arrow keys.

Radium is a music editor with a tracker and sequencer and mixer interface.

Updated: 18 Jul, 2023
  • Editor: Fix sligthly wrong memory handling. Might
    have led to crashes sometimes after copying a
    range that contains stops, but only after the
    second time or later, and probably only in very
    rare cases. Bug introduced in V6.6.77.
  • Midi Learn: Rough implementation of
    "incremental mode". The feature is likely to
    require some tweaking though.
  • Sequencer: Make the song tempo automation popup
    menu less confusing.
  • Sequencer: Fix gfx garbage in uppermost pixel row
    when song tempo automation is visible.
  • Editor: Fix a possible, but if so, probably
    extremely rare, crash when creating undo for range.
    The bug seems to have always been there.
  • Internal: Fix memory leak if trying to allocate
    very large memory blocks in realtime code.
  • GUI: Attempt to fix Qt sometimes translating
    strings. (That's not supposed to happen since
    Radium is an English-only program.)
  • Linux: Turn off crash reporter if radium couldn't
    start because of missing AM pitch shift plugin
    during startup. Only for custom builds though.
  • Soundfile saver: Fix pressing "Save" if Qt
    has decided to translate the text "Save" to
    another language. Qt is not supposed to
    translate anything, but reportedly it has.
  • Internal: Fix a bug in a function that divides two
    ratio numbers. The

Cardinal is a virtual Eurorack modular synthesizer platform

Updated: 15 Jul, 2023
  • Add AIDA-X module
  • Add Bogaudio AD to mini variant
  • Add (binary) plugin scanning to Ildaeil plugin hosting (LADSPA, DSSI, VST2, VST3 and CLAP)
  • Add plugin presets to Ildaeil, when exposed on the plugin side
  • Add VST2 plugin folder option to Windows installer
  • Allow custom URL for remote instance connections
  • Allow usage of local user directory and configs, expose related options
  • Fix focus to input text dialogs
  • Fix missing menubar cpu usage
  • Invert scroll X direction
  • Rework file menu
  • Update base VCV Rack to v2.3.0
  • Update Sapphire to v2.2.2 (adds Tube Unit)
  • Update MindMeldModular and SurgeXT, for Rack 2.3 compatibility

Build related changes:

  • Bump minimum required macOS version to 10.15
  • Fix build with GCC13
  • Fix missing make install of mini variant
  • LTO no longer enabled by default for release builds
  • Only enable remote OSC control in headless builds
  • Remove NOPLUGINS build option
  • Remove use of mingw-std-threads
  • Several optimizations and build tweaks

Web version related changes:

  • Add persistent storage (automatic on save, can be manually triggered via File menu)
  • Add local (browser-side) patch loading via File menu (under "Open local patch")
  • Automatically load no-simd version on browsers that do not support web-simd
  • Disable cursor lock by default

See official announcement at https://kx.studio/News/?action=view&url=cardinal-2307-released

screenshot

Gyroflow can stabilize your video using gyroscope and accelerometer motion data

Updated: 12 Jul, 2023

✨ Improvements

  • Added support for vertical and upside-down BRAW videos
  • Added grid guide (G shortcut, and Ctrl+G to invert)
  • Added more precision to advanced smoothness sliders
  • Advanced link is now bold when opened
  • With Sony and BRAW the default lens profile is a better approximation now, so even if you don't have one, you may still get acceptable results
  • Added lens profiles submitted by the community

🐛 Bug fixes

  • Fixed BRAW crashes and playback issues
  • Fixed white pixels clipping when using CPU-encoder
  • Fixed showing keyframes when loading a project file
  • Fixed Insta360 gyro from cameras with older firmware
  • Fixed setting frame rate for VFR files
  • Fixed loading lens profile automatically for some files
  • Fixed rotation info when loading file again
  • Fixed keyframes with VFR videos
  • Fixed GF Recorder parser
  • Fixed rendering background color
  • Fixed merging Caddx Walnut .gcsv
  • Fixed scrolling when opening Advanced panel
  • Don't update output size when loading just the gyro data
  • Set correct fps when loading from video file in core
  • Don't ask for output location when dropping preset into the render queue

PipeWire is a server and user space API to deal with multimedia pipelines.

Updated: 12 Jul, 2023

0.3.74

ChucK is a programming language for real-time sound synthesis and music creation

Updated: 11 Jul, 2023

chuck-1.5.0.7 release

ChucK is a programming language for real-time sound synthesis and music creation

Updated: 08 Jul, 2023

patch release; fix shred replace critical issue in 1.5.0.5

Musescore is an open source and free music notation software.

Updated: 07 Jul, 2023

Port #18463: Fix cross beam force horizontal

Musescore is an open source and free music notation software.

Updated: 07 Jul, 2023

See dedicated project with changelog

by KDE

Kdenlive is video and audio editing software with GPU rendering support. Great variety of video filters available.

Updated: 06 Jul, 2023

Create tag for 23.07.70

MusicBrainz Picard is a cross-platform application written in Python and is the MusicBrainz music tagger

Updated: 06 Jul, 2023

Bugfixes

  • PICARD-2658 - macOS 10.12 build is not responding after launch, no UI shown
  • PICARD-2659 - Picard 2.9.0b2 stuck in login loop if MusicBrainz server port is not set to 443
  • PICARD-2660 - RecursionError: maximum recursion depth exceeded while calling a Python object
  • PICARD-2668 - On application crash the main process does not exist, waits for interprocess communication pipe threads
  • PICARD-2669 - File status icon sometimes shows wrong status

Improvements

  • PICARD-2662 - Give better user message with corrupted file
  • PICARD-2665 - Ignoring artist credits shouldn't be default behavior
  • PICARD-2671 - Show a first run information dialog
  • PICARD-2676 - Show a file save confirmation dialog
  • PICARD-2679 - "Open folder" does not work on Snap install

MusicBrainz Picard is a cross-platform application written in Python and is the MusicBrainz music tagger

Updated: 06 Jul, 2023

Bugfixes

  • PICARD-2481 - Shorten long country lists in search results
  • PICARD-2651 - Repeated / duplicate log lines on console output

Improvements

  • PICARD-2653 - Update alias locales for updated server list
  • PICARD-2654 - Show error message on rating submission failure due to server error

MusicBrainz Picard is a cross-platform application written in Python and is the MusicBrainz music tagger

Updated: 06 Jul, 2023

Bug Fixes

  • PICARD-2534 - Vorbis / FLAC: Trailing null char in date tag causes date to be ignored
  • PICARD-2605 - Windows: libssl-1_1-x64.dll missing
  • PICARD-2608 - Application exit waits for outstanding loading request
  • PICARD-2611 - During clustering selection changes are ignored, can lead to users performing actions on unexpected files
  • PICARD-2615 - Picard does not check for unsaved files when using the QUIT command
  • PICARD-2624 - ValueError writing truncated AIFF / WAVE / DSDIFF files
  • PICARD-2627 - Interprocess communication pipe hangs on quit
  • PICARD-2629 - Keyboard shortcut for "Search for similar albums"
  • PICARD-2630 - Crash at startup due failing to upgrade configuration
  • PICARD-2642 - Submit cluster as release opens on 0.0.0.0 if "Listen only on localhost" is disabled
  • PICARD-2645 - QUIT command only works if there are files that need saving and user cancels the quit

New Features

  • PICARD-711 - New variables for release group, release, recording and work series
  • PICARD-2617 - Add variables for file creation (_file_created_timestamp) and modification date(time) (_file_modified_timestamp)
  • PICARD-2606 - Add _writersort and _lyricistsort variables

Improvements

  • PICARD-900 - Use Id3v24 by default instead of id3v23
  • PICARD-1649 - Allow plugins to link to documentation
  • PICARD-1945 - Option to set the number of parallel fpcalc

ChucK is a programming language for real-time sound synthesis and music creation

Updated: 06 Jul, 2023

fix release notes

PipeWire is a server and user space API to deal with multimedia pipelines.

Updated: 06 Jul, 2023

0.3.73

Pure data is an open source visual programming language

Updated: 03 Jul, 2023

version number to 0.54-0

jack-matchmaker is a small command line utility that listens to port registrations by JACK clients.

Updated: 30 Jun, 2023

Changes:

  • Modernized project setup (#23).
    • Converted to PEP-517 compliant build using hatchling.
    • Removed Python 2 compatibility code and syntax.
    • Converted readme and changelog to markdown format.
    • Updated Arch PKGBUILD file.
    • Dropped official support for Python 3.6/3.7 and declared support for Python 3.10/3.11. Incremented the minor version accordingly.
  • Replaced included jacklib module with dependency on pyjacklib (#24).
  • Added dependency on cachetools.

Enhancements:

  • Added monitoring of input ports (#20, thanks to Peter Fabinski).
  • Evaluate connection patterns when new connections (not made by jack-matchmaker) appear, allowing pattern pairs, where the first part matches input ports, to trigger when new connections to these input ports are made (#22).

Note: Please DO NOT use the source code archives attached below under "Assets"!

The official source distribution is always the one uploaded to the jack-matchmaker's Python Package Index page.

Fasttracker II clone for Windows/macOS/Linux

Updated: 29 Jun, 2023
  • Windows: On double-click of file associated with program, de-minimize window (if minimized) and set input focus
  • De-minimize window (if minimized) and set focus after drag n' drop of file
  • Windows/macOS: Updated SDL to v2.28.0

Musescore is an open source and free music notation software.

Updated: 28 Jun, 2023

…tion_410

silent_buffers_optimization_410

ChucK is a programming language for real-time sound synthesis and music creation

Updated: 27 Jun, 2023

…ck compilation for now

PipeWire is a server and user space API to deal with multimedia pipelines.

Updated: 26 Jun, 2023

0.3.72

LilyPond is a music engraving program, devoted to producing high-quality sheet music

Updated: 24 Jun, 2023

LilyPond 2.25.6

Ardour is a hard disk recorder and digital audio workstation application that runs on Linux, macOS, FreeBSD and Windows

Updated: 23 Jun, 2023

Ardour 7.5 (again)

ChucK is a programming language for real-time sound synthesis and music creation

Updated: 20 Jun, 2023

update version to 1.5.0.3

ChucK is a programming language for real-time sound synthesis and music creation

Updated: 18 Jun, 2023

update release notes

OpenMPT is a popular tracker software for Windows

Updated: 18 Jun, 2023

This small update to OpenMPT 1.31 fixes a number of bugs and adds support for yet another variant of the MOD format. Here's a list of the most notable changes in this version:

  • Can now read modified 8-channel MOD files from the DOS game Aleshar - The World Of Ice.
  • Since OpenMPT 1.31.01.00, refreshing the tree view was much slower than necessary when an item in the file browser was selected.
  • Interpolating a pattern command with two independent nibble parameters caused a wrong result if the direction of interpolation differed between the two nibbles.
  • Trying to load unsupported sample files could sometimes cause the currently loaded sample data in that slot to be removed even if the raw sample import dialog was going to be shown later.
  • Sustain point was disabled on soundfont drum keys with custom envelope, and envelope settings from a drum kit's global zone were not applied to individual drums.
  • Fixed possible crash with some malformed MED files.
  • When updating portable installations, the update is now downloaded into the portable installation directory instead of the system's temporary directory, allowing to update several portable installations at the same time.

For a complete list of changes, have a look

Functional programming language for signal processing and sound synthesis

Updated: 17 Jun, 2023

Change log

WARNING: to get the source version

  • be sure to download the faust-2.59.6.tar.gz file to get a complete source folder (in particular, with all the libraries)
  • on macOS, binary files are still to notarise, you may have to use the 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.

New

  • Improve cmajor-faust-tester tool to display performance ratio.
  • Optimize atan2(x,x) as PI/4.
  • Remove sigTable and use sigWRTbl to code rdtable and rwtable.
  • Adding submodule for faust2ck pointing to Stanford-CCRMA.
  • Add classInit method in dsp_factory class (needed for LLVM backend)
  • Add -double support in faust2bench.
  • Micro optimisation for logical operators.
  • Support for LLVM 17 API.
  • Rework -ftz 0/1/2 mode to directly apply on signals.
  • Rework same path rule for UI items: two input control cannot have a same path (trigger an ERROR), an input control and a bargraph can have the same path (WARNING), two bargraph can have the same path (WARNING)
  • Add fixed-point -fxmode [WIP]
  • Add Trill RING and HEX sensors support in faust2bela
  • Print ASSERT message when faustassert is triggered.
  • Add -fpga-mem option to replace FAUST_MAX_SIZE environment variable.
  • Support for LLVM

SooperLooper is a live looping sampler capable of immediate loop recording, overdubbing, multiplying, reversing and more.

Updated: 17 Jun, 2023

removed debug cerr from plugin

ChucK is a programming language for real-time sound synthesis and music creation

Updated: 14 Jun, 2023

update to version 1.5.0.1

JackTrip is a Linux, Mac OSX, or Windows multi-machine audio system used for network music performance over the Internet.

Updated: 13 Jun, 2023

What's Changed

Full Changelog: v1.10.0-beta3...v1.10.0-beta4

Gyroflow can stabilize your video using gyroscope and accelerometer motion data

Updated: 12 Jun, 2023

✨ Improvements

  • Sony, BRAW and Insta360 are now perfectly synced by default
  • Added output aspect ratio presets - 16:9, 17:9, 9:16 etc, and the menu is user-customizable
  • BRAW and R3D files can be now dropped to render queue directly (eg. to export project file)
  • Rendered file "Creation date" is now the same as the original file
  • Added volume slider (right click on the speaker icon)
  • Added ability to specify comment in exported file metadata
  • Added ability to select the integration method for QuaternionConverter (helps with horizon lock in some cases)
  • Changed behavior of autosync in the render queue - it's now done individually before rendering each file, instead of being a separate step for all files
  • Added option to render stabilized video and export a project file at the same time in render queue
  • "Second smoothing pass" is now always enabled, and the option removed from the UI
  • Added an option to preserve output settings between files (resolution and bitrate)
  • Added a way to select audio codec, currently only AAC or PCM
  • Added "Add keyframe" option in slider context menu
  • Added ability to select output path when merging files
  • Gyroflow will now ask for output folder when dropping files

JackTrip is a Linux, Mac OSX, or Windows multi-machine audio system used for network music performance over the Internet.

Updated: 10 Jun, 2023

What's Changed

Full Changelog: v1.10.0-beta2...v1.10.0-beta3

Ossia Score is a free, open-source, cross-platform intermedia sequencer

Updated: 09 Jun, 2023

Discord Open Collective backers and sponsors GitHub Sponsors

This is a hotfix release for a bug that broke MIDI input on macOS.

New features
  • Allow to expose custom OSC devices over Bonjour
  • Fix MIDI issues on macOS due to a change in the build system in the previous releases
  • Introduce a new UI widget which allows curves to be used as control ports directly, for enabling the creation of new objects

Audacity is a free, easy-to-use, multi-track audio editor and recorder for Windows, macOS, GNU/Linux and other operating systems

Updated: 08 Jun, 2023

This is a hotfix release. It fixes the following bugs:

  • #4618 Fixed EQ not scaling properly when resizing the window.
  • #4743 Fixed the audio.com upload flow.

Rosegarden is a composition and editing environment based around a MIDI sequencer

Updated: 07 Jun, 2023

Release

synthv1 is an old-school all-digital 4-oscillator subtractive polyphonic synthesizer with stereo fx

Updated: 05 Jun, 2023

A Spring'23 Release.

Giada is an open source, minimalistic and hardcore music production tool. Designed for DJs, live performers and electronic music

Updated: 03 Jun, 2023

In Greek mythology, the Dactyls or Daktyloi were the archaic mythical race of male beings, ancient smiths and healing magicians. In some myths they taught metalworking, mathematics, and the alphabet to humans.

Changelog:

  • Revamped MIDI sync Clock support
  • MIDI engine refactoring, featuring multi-threading support
  • UI: Resizable vu-meters
  • UI: New global MIDI activity leds
  • More core classes and functions refactoring
  • More robust persistence mechanism for project and configuration files
  • Add new tests suites for MidiEvent and ChannelFactory
  • Set C++ version to C++20
  • Update FLTK to latest commit available

JackTrip is a Linux, Mac OSX, or Windows multi-machine audio system used for network music performance over the Internet.

Updated: 02 Jun, 2023

What's Changed

Full Changelog: v1.10.0-beta1...v1.10.0-beta2

JackTrip is a Linux, Mac OSX, or Windows multi-machine audio system used for network music performance over the Internet.

Updated: 31 May, 2023

What's Changed

Full Changelog: v1.9.0-beta3...v1.10.0-beta1

Mixxx is Free DJ software that gives you everything you need to perform live mixes.

Updated: 29 May, 2023

Mixxx 2.4-beta

Stargate is an all-in-one DAW and plugin suite

Updated: 23 May, 2023
Installation and troubleshooting guides

Download the Stargate DAW sample pack

Changelog
  • Windows, M1 Mac: Add support for the SBSMS time stretching and pitch shifting
    algorithm (Linux and Intel Mac already had support for SBSMS). Many fixes
    and improvements to SBSMS
  • Hardware MIDI devices: Fix disconnecting after the output track has
    plugin changes
  • Sequencer: Fix items being unexpectedly deleted during a copy/move operation
    where they are put in the exact same position as an identical item. This
    includes just CTRL+clicking one or more selected items
  • Tempo Marker: Fix sequencer selection changing after editing
  • Update Software Dialog: Close Stargate if the user chooses to download
    a new version, prevents installer errors when files cannot be replaced
    because the application is still open
Checksums

Optionally, you can generate a sha256sum of the downloaded file and verify
that it matches this signature.

UPDATE: The original uploads were replaced to fix a small regression, if you downloaded as soon as the release was uploaded, these have changed.

d4c1df3956fccb0cc2a3790d7cd73e85dc7c843649028101eb25d1d9f3ae4174 stargate-23.06.1-1.x86_64.rpm 7a101c168c21c02d905dd4c3239a83c96b2ccddde2dcbcb1aefc00adc691ca57 stargate-23.06.1-amd64.deb e0ca0a41d40c7b3a2815ddd5d5a998b315ba2d71d674a22e4016b2febd191ff2 StargateDAW-23.06.1-linux-x86_64.AppImage fb9932c26efa6bedc906db347310f9c08762e7b65205ecfd28850670b387509c StargateDAW-23.06.1-win64-installer.exe f9e82f297ad770b5225287f8c384908b5de4c0e80084428e6cbac02237bb3d33 StargateDAW-23.06.1-macos-m1-arm64.dmg e0c025902c6fa3fbfd3777ccdf4172a1ff476d44d4384ca595bd7cf539594296 StargateDAW-23.06.1-macos-intel-x86_64.dmg

fmedia is a fast media player/recorder/converter

Updated: 22 May, 2023
": Enable HTTP server for handling remote commands This option allows fmedia to be remotely controlled using web browser. Server address is "http://:7314/". Supported commands: "POST /api/pause": Pause "POST /api/unpause": Unpause "POST /api/next": Play next track + --playlist-heal="": Auto-correct the paths to files inside a .m3u playlist * TUI: colored output * GUI: compress auto-loaded playlists with zstd ("listN.m3uz") * Recording: support --dev=... together with --record * Restore support for old AMD64 CPU (without SSE4.2 support) - Recording: finalize the output file while recording after --globcmd=stop - .mp4(AAC) write: don't write incorrect VBR bitrate & sample rate values - .ogg write: fix (v1.30 bug)"> + --http-ctl="": Enable HTTP server for handling remote commands This option allows fmedia to be remotely controlled using web browser. Server address is "http://:7314/". Supported commands: "POST /api/pause": Pause "POST /api/unpause": Unpause "POST /api/next": Play next track + --playlist-heal="": Auto-correct the paths to files inside a .m3u playlist * TUI: colored output * GUI: compress auto-loaded playlists with zstd ("listN.m3uz") * Recording: support --dev=... together with --record * Restore support for old AMD64 CPU (without SSE4.2 support) - Recording: finalize the output file while recording after --globcmd=stop - .mp4(AAC) write: don't write incorrect VBR bitrate & sample rate values - .ogg write: fix (v1.30 bug)

LilyPond is a music engraving program, devoted to producing high-quality sheet music

Updated: 21 May, 2023

LilyPond 2.25.5

Seq66 is a grid style MIDI looper that, a Qt 5 reboot of seq24/sequencer64

Updated: 20 May, 2023

Apart from some major internal fixes, the big thing about "Wally Windows" is a new Windows installer for the 64-bit version of Seq66. A whole lot of fixes and upgrades since the last Windows release, and no need to go to the Sequencer64 project to get it.

Virtual Midi keyboard and Midi Live Looper for Jack Audio Connection Kit

Updated: 19 May, 2023

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.

mamba
Release v2.5:

  • Fix issue #52 mamba 2.4 segfaults on Manjaro when it connects to JACK
  • Update libxputty to latest revision

Prebuild binary
Mamba.zip

Virtual Midi keyboard and Midi Live Looper for Jack Audio Connection Kit

Updated: 18 May, 2023

Mamba is a Virtual MIDI Keyboard, a 16 Channel Live MIDI Looper and a MIDI File player for ALSA / Jack Audio Connection Kit

mamba
Release v2.4:

  • Fix Segfault when Mamba is started under NSM or RaySession
  • Fix Reset knobs by double-click / right-click
  • Fix Ignore key repeat
  • Fix issues with new fluidsynth API 2.2.3
  • Fix Mamba closes/stops in non-session-manager instead of hiding it's GUI
  • Fix Document new keyboard shortcuts
  • Add MIDI through on/off option in toolbar and/or menu
  • Fix connect to coresponding fluidsynth instance when multiple instances been running
  • Fix build with gcc 13
  • Add Support Just Intonation
  • Add Scala support (.scl) and (.kbm) format files

Prebuild binary
Mamba.zip

ChucK is a programming language for real-time sound synthesis and music creation

Updated: 18 May, 2023

chuck-1.5 major release

PipeWire is a server and user space API to deal with multimedia pipelines.

Updated: 17 May, 2023

0.3.71

Stargate is an all-in-one DAW and plugin suite

Updated: 16 May, 2023
Installation and troubleshooting guides

Download the Stargate DAW sample pack

Changelog
  • Windows, Linux, MacOS: Fixed many locale-related crashes and other bugs on
    non-US-English locales. Stargate DAW now works well on all languages and
    regions that have been tested. The only known issue is that Rubberband time stretching
    may not work on Windows on files with non-English characters, which we will be working
    with them to fix later.
  • Item Editor: Replace menu buttons with toolbars
  • Audio Items: Hide the stretch handle when choosing no time stretching, or
    an algorithm that does not support stretching
  • Windows: Fix project corruption bug when dragging audio files from the
    project folder into the project
  • Song List: Fix various bugs
  • Piano Roll: Fix note previewing on wrong track if using ALT+F to switch
    between 2 items
  • Sampler1: Organize MonoFX groups better in automation dropdown
Checksums

Optionally, you can generate a sha256sum of the downloaded file and verify
that it matches this signature.

d12e87594f0ef1a3de7d787abde3009bd6c2c81cbafbb4909f5e5207986d9d43 stargate-23.05.3-1.x86_64.rpm a3cfdf1db3a5ae90958a751d837a451433de78efddd0ca70edbb03fee93903b7 stargate-23.05.3-amd64.deb 00036894a4defb547bc6704d55de9c8de483210447c99cb4accd269e93f11910 StargateDAW-23.05.3-linux-x86_64.AppImage 5116e831129cfc5d6a5a9cf373eb63c5a8571bcb65ed58ebf64494fa8241c4ab StargateDAW-23.05.3-win64-installer.exe d324b49bccad87e99b1ccbb3d6ac2842a1582a861e70e1cf9a7b30fc011534a5 StargateDAW-23.05.3-macos-m1-arm64.dmg 3c0e849455fc10341819288430b39c2f5186f6a7660d0fa411ef6db82ba521f1 StargateDAW-23.05.3-macos-intel-x86_64.dmg