v1.0.0-beta.4.13
Zrythm is a featureful and easy to use DAW, written in C using the GTK+3 toolkit.
OpenMPT is a popular tracker software for Windows
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
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
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
v0.2.6
ChucK is a programming language for real-time sound synthesis and music creation
chuck-1.5.1.3 release
Anklang, a digital audio synthesis application for live creation and composition
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
Anklang, a digital audio synthesis application for live creation and composition
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
JackTrip is a Linux, Mac OSX, or Windows multi-machine audio system used for network music performance over the Internet.
What's Changed
- Updating manifests for 2.0.0 release by @mikedickey in #1176
- Adding Virtual Studio to docs by @nwang92 in #1177
- Handle invalid device names more gracefully by @mikedickey in #1178
- Fix for mix-to-mono setting causing a loud buzzing noise by @mikedickey in #1180
- Updating version and changelog for 2.0.1 release by @mikedickey in #1181
- Merge dev to main for 2.0.1 release by @mikedickey in #1182
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.
Anklang, a digital audio synthesis application for live creation and composition
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.
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.
Full Changelog: v1.0.0-beta.4.12.5...v1.0.0-beta.4.12.34
PipeWire is a server and user space API to deal with multimedia pipelines.
0.3.79
openFrameworks is an open source toolkit designed for creative coding
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 ).
Drumstick is a a set of GPLv3 licensed C++/Qt libraries for MIDI applications.
Drumstick is a set of MIDI libraries using C++/Qt idioms and style. Includes a C++ wrapper around the ALSA library sequencer interface: ALSA sequencer provides software support for MIDI technology on Linux. A complementary library provides classes for processing SMF (Standard MIDI files: .MID/.KAR), RIFF MIDI (.RMI), and Cakewalk (.WRK) file formats. A multiplatform realtime MIDI I/O library and a GUI Widgets libraries are also provided for Linux, Windows, and Mac OSX.
Changes in v2.8.1:
- Chinese translation updated. Thanks to Hycinth
- CMake config check to avoid mixing Qt6 with Qt5
- Fix for GH ticket #13: errors while building drumstick 2.8.0
Compilation minimum requirements for all platforms:
- C++11 compiler
- CMake 3.14
- Qt5 >= 5.9 or Qt6 >= 6.2 (with Qt6Core5Compat library dependency for Drumstick::File)
Feature dependencies (for some platforms):
- ALSA (Linux only)
- PulseAudio (Unix)
- D-Bus (Unix)
- Sonivox (Unix)
- FluidSynth (All platforms)
Copyright (C) 2009-2023, Pedro Lopez-Cabanillas
License: GPL v3 or later
Project web site:
https://sourceforge.net/p/drumstick
Online documentation:
https://drumstick.sourceforge.io/docs/
Downloads:
https://sourceforge.net/projects/drumstick/files/2.8.1/
Jamulus enables real-time jam sessions over the internet.
-
Client: Added SRV-based virtual hosting support (#2930).
(contributed by @hoffie) -
Server: Improved
--serverinfoargument 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
--directoryserverto--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
ChucK is a programming language for real-time sound synthesis and music creation
chuck-1.5.1.2 release
Zrythm is a featureful and easy to use DAW, written in C using the GTK+3 toolkit.
Full Changelog: v1.0.0-beta.4.12.1...v1.0.0-beta.4.12.5
Zrythm is a featureful and easy to use DAW, written in C using the GTK+3 toolkit.
What's Changed
- Fixed duplicate word between lines 72-73 by @kant in #6
- Gtk4 by @alex-tee in #7
- typo fix by @trebmuh in #9
- Fix various typos by @luzpaz in #10
New Contributors
- @kant made their first contribution in #6
- @alex-tee made their first contribution in #7
- @trebmuh made their first contribution in #9
- @luzpaz made their first contribution in #10
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.
What's Changed
- Fix for failed artifact deployment to google cloud by @mikedickey in #1134
- Add User Feedback Survey by @dhing1024 in #1138
- Adding flag placeholder in case one is not available by @nwang92 in #1139
- Virtual Studio audio cleanup & refactoring by @mikedickey in #1140
- Add QWebChannel for GUI Control by @dhing1024 in #1137
- Moving VS audio device logic into its own worker thread by @mikedickey in #1141
- Removing the screen flicker when you change audio channels or devices by @mikedickey in #1142
- Fixing some regressions involving rtaudio5 support by @mikedickey in #1143
- Adds a boolean flag to network stats When the High Latency flag is triggered by @dhing1024 in #1144
- Making audio error/warning indicators work better by @mikedickey in #1145
- Fixing regression from rtaudio6 updates that broke classic mode by @mikedickey in #1148
- Fixing stuck connection stats in desktop app footer by @mikedickey in #1147
- Fixing deadlock conditions involving studio join by @mikedickey in #1149
- Use the VsAudio device cache when connecting to a JackTrip server by @mikedickey in #1150
- Fixing Virtual Studio deeplinks by @mikedickey in #1151
- Updates to handle bad audio interface buffer sizes by @mikedickey in #1152
- Updated changelog for 2.0.0-beta2 by @mikedickey in #1153
- Fixing
Zrythm is a featureful and easy to use DAW, written in C using the GTK+3 toolkit.
v1.0.0-beta.4.12
Anklang, a digital audio synthesis application for live creation and composition
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
chuck-1.5.1.1 release
PipeWire is a server and user space API to deal with multimedia pipelines.
0.3.78
SVGuitar is a JavaScript (TypeScript) SVG guitar chord renderer library
Anklang, a digital audio synthesis application for live creation and composition
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.
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
audiodirectory todsp - 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.
v1.0.0-beta.4.11
LilyPond is a music engraving program, devoted to producing high-quality sheet music
We are proud to announce the release of GNU LilyPond 2.24.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
PulseAudio is a sound system for POSIX OSes, meaning that it is a proxy for your sound applications
ProTracker 2 clone for Windows/macOS/Linux
Make disk op. entry jumping case-insensitive
ProTracker 2 clone for Windows/macOS/Linux
- 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
ChucK is a programming language for real-time sound synthesis and music creation
chuck-1.5.1.0 release
Zrythm is a featureful and easy to use DAW, written in C using the GTK+3 toolkit.
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.
v1.0.0-beta.4.10
Neothesia is flashy Synthesia-like MIDI file visulisation software
- Play along improvements: user input leeway in play along, ignoring drums, ignoring out of range notes.
- Add extra colors to default config #37 (Thanks to @othello777 🎉 )
- Add attempt to find default.sf2 relative to executable #36 (Thanks to @katyo 🎉 )
With those in store, I'm confident to bump the version to 0.1.0 🚀
This is also the first version to include neothesia-cli/recorder binary (ubuntu-recorder-actifact.zip) for .mp4 output
JackTrip is a Linux, Mac OSX, or Windows multi-machine audio system used for network music performance over the Internet.
What's Changed
- Updating release manifests for 1.10.0 release by @mikedickey in #1077
- Updating some of the packages included in static qt6 builds for WIP by @mikedickey in #1075
- Merge dev to main to update Qt static build cache by @mikedickey in #1078
- Fix WaitFree moc warnings when building with Meson by @ntonnaett in #1080
- Ignore websocket payloads than contain notification information by @nwang92 in #1083
- Updating styles of meter bars to be responsive by @nwang92 in #1085
- Fixing device levels on registration by @nwang92 in #1087
- Blacklisting another broken ASIO driver on Windows, from Steinberg by @mikedickey in #1088
- Moving connection stats into footer by @nwang92 in #1086
- Adding scripts/qt for building qt across platforms by @mikedickey in #1090
- Merge main to dev to pull in qtbuild updates by @mikedickey in #1092
- Adding openssl build to qt cache by @mikedickey in #1094
- Pull latest qt cache updates back into dev by @mikedickey in #1095
- Fixing slider jitter due to int/float casting by @nwang92 in #1097
- Reducing QtGraphicalEffects usage by @nwang92 in #1096
- Switch github actions to using new qt assets built using qtbuild by @mikedickey in #1093
- WiX updates to fix MSI windows installer by @mikedickey in #1100
- Feature/webview nwang
Stargate is an all-in-one DAW and plugin suite
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
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
JackTrip is a Linux, Mac OSX, or Windows multi-machine audio system used for network music performance over the Internet.
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.
0.3.77
Fasttracker II clone for Windows/macOS/Linux
- 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
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
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
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
Anklang, a digital audio synthesis application for live creation and composition
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.
-
Client: Added SRV-based virtual hosting support (#2930).
(contributed by @hoffie) -
Server: Improved
--serverinfoargument 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
--directoryserverto--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.
Update version to 3.10.0beta1 for first beta release
LilyPond is a music engraving program, devoted to producing high-quality sheet music
LilyPond 2.25.7
Jamulus enables real-time jam sessions over the internet.
-
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_tfor 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) -
RPC: Rename
directoryServertodirectoryinjamulusserver/getServerProfileresponse (#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.
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.
Merge pull request #3077 from ann0see/licensing/addGPLHeader
Add GPL header to autobuild scripts
Blue is a music composition environment for Csound, written in Java
[2.9.0] - 2023-07-26
NEW
-
macOS and Windows builds now include embedded Java JDK
-
MIDI Input Panel: Added AmpDBFS mode where amplitude is scaled to 0-1 range.
UPDATED
-
Removed JavaFX: BlueSynthBuilder and Effects reimplemented to Swing GUI
toolkit. -
Redesigned SoundObjectLibrary window: supports drag and drop reorganization,
additional popup menu options for editing and organization -
Issue #639: Added JMask to Pattern Layers
-
JavaScript objects: Replaced Rhino processor with graal.js
-
Issue #625: Implemented resizing multiple selected objects and undo
functionality -
Issue #615: Implemented Looping option for AudioClips and allow resizing from
sides beyond duration of audio clip when looping is enabled. -
Issue #665: Implemented guidelines for start/end boundary of selected objects
for easier visual alignment of objects when moving/resizing -
Issue #696: Added "Reset Line" popup menu option to BSB LineObject editors
-
Issue #697: Added Test Button to slide in right panel for previewing score
generation from object. -
PatternObject:
-
now defaults to time behavior Repeat.
-
Updated UI style
-
Fixed to save pattern when modifying number of beats. (Still clears if
number of subdivisions changes as there isn't a clear mapping.)
-
-
Issue #703: Add ability to edit font for BSBGroup panel title label
-
Issue #672: Reimplemented keyboard
PipeWire is a server and user space API to deal with multimedia pipelines.
0.3.76
Anklang, a digital audio synthesis application for live creation and composition
- 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
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
Fixes:
- Fixed Cython compilation errors and warnings (#174)
Project infrastructure:
- Updated
requirements-dev.txtwithpip-compile(#173). - Updated minimum Python version declared in
pyproject.tomlto 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.
- 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
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
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.
0.3.75
Seq66 is a grid style MIDI looper that, a Qt 5 reboot of seq24/sequencer64
- 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.
- 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
- 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 installof mini variant - LTO no longer enabled by default for release builds
- Only enable remote OSC control in headless builds
- Remove
NOPLUGINSbuild 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
DISTRHO Ildaeil is mini-plugin host working as a plugin
- Add auto-scan of binary plugins (LADSPA, DSSI, VST2, VST3 and CLAP)
- Add enable-input, enable-midi and buffer-size options for standalone
- Add macOS standalone to release binaries
- Add preset selector for plugins that expose them
- Improve VST3 hosting
- Initial experimental web version, public instance running at https://ildaeil.kx.studio/
- Set GUI as resizable when running as standalone
- Use a single standalone program instead of having Synth/FX/MIDI variants
See official announcement at https://kx.studio/News/?action=view&url=ildaeil-v13-released
PipeWire is a server and user space API to deal with multimedia pipelines.
0.3.74
ChucK is a programming language for real-time sound synthesis and music creation
chuck-1.5.0.7 release
ChucK is a programming language for real-time sound synthesis and music creation
patch release; fix shred replace critical issue in 1.5.0.5
Musescore is an open source and free music notation software.
Port #18463: Fix cross beam force horizontal
Musescore is an open source and free music notation software.
See dedicated project with changelog
MusicBrainz Picard is a cross-platform application written in Python and is the MusicBrainz music tagger
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
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
Bug Fixes
- PICARD-2534 - Vorbis / FLAC: Trailing null char in
datetag 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
_writersortand_lyricistsortvariables
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
fix release notes
PipeWire is a server and user space API to deal with multimedia pipelines.
0.3.73
Pure data is an open source visual programming language
version number to 0.54-0
jack-matchmaker is a small command line utility that listens to port registrations by JACK clients.
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
PKGBUILDfile. - 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
jacklibmodule 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
- 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.
…tion_410
silent_buffers_optimization_410
ChucK is a programming language for real-time sound synthesis and music creation
…ck compilation for now
PipeWire is a server and user space API to deal with multimedia pipelines.
0.3.72
LilyPond is a music engraving program, devoted to producing high-quality sheet music
LilyPond 2.25.6
Ardour is a hard disk recorder and digital audio workstation application that runs on Linux, macOS, FreeBSD and Windows
Ardour 7.5 (again)
ChucK is a programming language for real-time sound synthesis and music creation
update version to 1.5.0.3
ChucK is a programming language for real-time sound synthesis and music creation
update release notes
OpenMPT is a popular tracker software for Windows
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
Change log
WARNING: to get the source version
- be sure to download the
faust-2.59.6.tar.gzfile 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 filecommand to remove thecom.apple.quarantineextended attribute. See the xattr man page for details on how to use that tool.
New
- Improve
cmajor-faust-testertool to display performance ratio. - Optimize
atan2(x,x)as PI/4. - Remove
sigTableand usesigWRTblto coderdtableandrwtable. - Adding submodule for
faust2ckpointing to Stanford-CCRMA. - Add
classInitmethod indsp_factoryclass (needed for LLVM backend) - Add -double support in
faust2bench. - Micro optimisation for logical operators.
- Support for LLVM 17 API.
- Rework
-ftz 0/1/2mode 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-memoption 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.
removed debug cerr from plugin
ChucK is a programming language for real-time sound synthesis and music creation
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.
What's Changed
- Update .mailmap by @omarcostahamido in #1061
- Add -DNDEBUG to remove debugging code for release builds by @mikedickey in #1062
- Add a friendly message to the empty window created by the Windows Terminal bug by @mikedickey in #1064
- Fixed issue with RTAudio scanning interfaces several times at startup by @mikedickey in #1063
- Updated changelog and version for 1.10.0-beta4 by @mikedickey in #1067
- Add audio interface blacklist to exclude Realtek ASIO driver by @mikedickey in #1066
Full Changelog: v1.10.0-beta3...v1.10.0-beta4
JackTrip is a Linux, Mac OSX, or Windows multi-machine audio system used for network music performance over the Internet.
What's Changed
- Don't hide buffer strategy and feedback detection settings with JACK by @mikedickey in #1053
- Adjust Feedback Detection Sensitivity by @dhing1024 in #1054
- Addressing some QML errors by @nwang92 in #1056
- Fixing connected view errors by @nwang92 in #1057
- fix graphic glitches with flatpak by setting the quick controls style… by @ntonnaett in #1058
- Improve FFT Performance by @dhing1024 in #1055
- Bump version to 1.10.0-beta3 by @mikedickey in #1060
Full Changelog: v1.10.0-beta2...v1.10.0-beta3
Ossia Score is a free, open-source, cross-platform intermedia sequencer
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
synthv1 is an old-school all-digital 4-oscillator subtractive polyphonic synthesizer with stereo fx
A Spring'23 Release.
Giada is an open source, minimalistic and hardcore music production tool. Designed for DJs, live performers and electronic music
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.
What's Changed
- Detect Feedback Loops by @dhing1024 in #1035
- Optionally Disable Feedback Detection by @dhing1024 in #1049
- Ensure that QTimer objects are stopped before destruction by @mikedickey in #1050
- This fixes an issue with text color of secondary login page buttons by @mikedickey in #1052
- Optimize circular buffer for feedback detection by @mikedickey in #1051
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.
What's Changed
- Updating manifests to match what is on files.jacktrip.org by @mikedickey in #1029
- Fix for broken output volume meter and monitor when using JACK by @mikedickey in #1032
- Updating release manifests for 1.9.0 release by @mikedickey in #1034
- Use Device Authorization Flow by @dhing1024 in #1037
- Improvements and Fixes for Device Flow Code by @dhing1024 in #1039
- More Informative Loading Message by @dhing1024 in #1041
- Use a wait-free packet queue for Regulator worker thread by @mikedickey in #1038
- Cleanup Audio When Switching to Classic Mode by @dhing1024 in #1042
- Optimize PLC regulator performance by using double instead of long double by @mikedickey in #1043
- Optimized performance of virtual studio volume meters by @mikedickey in #1044
- Bump version for 1.10.0 beta1 release by @mikedickey in #1045
- Let people know when they experience a network outage by @mikedickey in #1047
- Updating changelog for 1.10.0-beta1 by @mikedickey in #1046
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.
Mixxx 2.4-beta
Stargate is an all-in-one DAW and plugin suite
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
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
+ --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
LilyPond 2.25.5
Seq66 is a grid style MIDI looper that, a Qt 5 reboot of seq24/sequencer64
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
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.
- 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
Mamba is a Virtual MIDI Keyboard, a 16 Channel Live MIDI Looper and a MIDI File player for ALSA / Jack Audio Connection Kit
- 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
chuck-1.5 major release
PipeWire is a server and user space API to deal with multimedia pipelines.
0.3.71
Stargate is an all-in-one DAW and plugin suite
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
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
JackTrip is a Linux, Mac OSX, or Windows multi-machine audio system used for network music performance over the Internet.
What's Changed
- Fix openssl v3 compatibility failures with Linux static build by @mikedickey in #1005
- Show error message when single studio limit is reached by @nwang92 in #1008
- Fixing Play Test Tone button on Linux by @mikedickey in #1010
- Remove yes/no at first open by @mattahorton in #1009
- Moving faust-generated code out of header files by @mikedickey in #1011
- Enable Local Monitoring of Inputs by @dhing1024 in #1014
- Output Volume Meters Include Monitor by @dhing1024 in #1017
- Adding email address to use for vulnerabilities to README.md by @mikedickey in #1018
- Changing "All Devices" for non-ASIO category to be "High Latency" by @mikedickey in #1020
- Updated warning text for non-ASIO devices on Windows by @mikedickey in #1021
- GHA: add an option to wait for static Qt build by @dyfer in #1023
- Feature/adding icons to connected view by @nwang92 in #1022
- Updating some tooltips, sliders and positioning for connected interface by @mikedickey in #1024
- Hide classic mode link after first launch by @mattahorton in #1025
- Monitor Controls from API by @dhing1024 in #1026
- Enforce Same ASIO Device on Windows by @dhing1024 in #1016
- Adding icons and basic README.md with instructions to Linux package by @mikedickey in #1027
- Refresh devices when opening the
Functional programming language for signal processing and sound synthesis
meters.lv2 is a collection of audio-level meters with GUI in LV2 plugin format.
update man page for v0.9.25
fil4.lv2 aka x42-eq is a 4 Band Parametric EQ
update man page for v0.8.7
stepseq.lv2 is simple step sequencer for moddevices.com
update man page for v0.6.13
Stargate is an all-in-one DAW and plugin suite
Download the Stargate DAW sample pack
Changelog- Sequencer: Replace menu button with more intuitive toolbar
- MacOS: Fix keyboard shortcuts not showing in context menus
- Audio Items context menu: New action: Reset Time/Pitch, reset time
stretching to default un-stretched, un-pitched state - Wave Editor: Add FX transport button to toggle the plugin rack on or off
- Check for updates: Show the installed and available version numbers
- Linux build, install, packaging: Many fixes and improvements
- Arch Linux (and variants): Fix the manual PKGBUILD instructions
Optionally, you can generate a sha256sum of the downloaded file and verify
that it matches this signature.
78868d561c0fa2d47974ad6144d6b96c727637e3a8f6dd71571e18cc8fc20d7a stargate-23.05.2-1.x86_64.rpm
cda243c403862cc4c5336bd8a1a465540530184232eb87612aa1eb3aff26c188 stargate-23.05.2-amd64.deb
6b5a0e3388a5cc681661a8a315c24836467adfd05c7d8bf4bba23bcb0ce56083 StargateDAW-23.05.2-linux-x86_64.AppImage
ded142a4449312cbcdb9ee9002778f1842cab7f524f8aea02d787123f6797ff8 StargateDAW-23.05.2-win64-installer.exe
faf98dbd487349d5560e26e11679a147f09ef249cb5dd0d15ab4722a69ad1fdd StargateDAW-23.05.2-macos-m1-arm64.dmg
1de86d3737872b926cd7908bdcd900e99601126624ee4eea459cdd62e687e68b StargateDAW-23.05.2-macos-intel-x86_64.dmg
OpenMPT is a popular tracker software for Windows
It's been more than a year since the initial release of OpenMPT 1.30, and in the meantime we have provided many updates to make it more stable and add a few new features and improve details. Now we are finally ready to present the first release of OpenMPT 1.31. Again it took us longer than expected, and the number of huge new features is a bit lower than in previous major releases, but we still hope that it was worth the wait.
Here is a short summary of the most notable new features:
General improvements include:
- Removing unused samples now works more reliably in instrument mode.
- Instead of re-adding all non-conflicting default shortcuts every time a keymap is loaded, they will now only be added if the keymap was last saved with an older version of OpenMPT than the version that introduced the default shortcut.
- Channel panning is now exported in MIDI export as MIDI CC 10. If several notes play on the same MIDI channel, the last triggered note's panning is always considered.
- When a text field is focussed, native text field shortcuts (such as Ctrl+A and others) are now preferred over OpenMPT shortcuts that are specific to
Yabridge is Yet Another way to use both 32-bit and 64-bit Windows VST2 and VST3 plugins on Linux
If you need any help setting up yabridge or if you just want to keep up to date with new releases and important Wine related announcements, then feel free to join the Discord.
Changed
- Parameter information for VST3 and CLAP plugins is now queried all at once. This should work around a bug in VST3 Kontakt that would cause loading patches with lots of exposed parameters to become very slow in REAPER (#236).
- When dragging plugin windows around, yabridge now waits for the mouse buttons to be released before informing Wine about the window's new screen coordinates. This prevents constant flickering when dragging plugin windows around with some plugin and window manager combinations.
- Since the above change limits the number of times a plugin GUI potentially has to redraw when dragging the window around to once, the workaround added to yabridge 5.0.2 for Audio Nebula Aurora FM implementing drawing in a very suboptimal way has be reverted. This removes flickering when resizing for a lot of plugin GUIs again.
- Yabridge now preemptively unsets the
WAYLAND_DISPLAYenvironment variable when launching Wine. Upstream Wine currently does not yet have a Wayland driver, but future versions may. When that happens
Jamulus enables real-time jam sessions over the internet.
This is just an internal draft repository release
OpenMPT is a popular tracker software for Windows
This small update to OpenMPT 1.31 is just a quick bugfix release to address a regression introduced in the first OpenMPT 1.31 release in keyboard shortcut handling, as well as a couple of issues found with the experimental builds for Windows XP and Vista. Here's a list of the most notable changes in this version:
- Since OpenMPT 1.31.01.00, switching between module formats could permanently erase user-assigned effect letter shortcuts (smooth MIDI macros, finetune, etc).
- Loading keyboard shortcuts from a file made automatically assigned effect letter shortcuts inaccessible until the user switched to a module with a different format than the currently edited module.
- Special handling of Tab key on input fields in the upper part of the pattern tab was removed. The global shortcut for switching between upper / lower views should be used instead.
- Fixed some rounding issues when transposing samples in the sample tab especially at lower sample rates.
- IT: Improved fingerprinting of early ModPlug Tracker versions.
- XMF: Modules from Astroidea demos can now be read as well.
- Appending a module now also merges its edit history.
- Automatic updates were not available on builds for Windows XP and Vista, despite being advertised to work in OpenMPT 1.31.
- For
Mellite is an environment for creating experimental computer-based music and sound art
version 3.13.7
JackTrip is a Linux, Mac OSX, or Windows multi-machine audio system used for network music performance over the Internet.
What's Changed
- Fix openssl v3 compatibility failures with Linux static build by @mikedickey in #1005
- Show error message when single studio limit is reached by @nwang92 in #1008
- Fixing Play Test Tone button on Linux by @mikedickey in #1010
- Remove yes/no at first open by @mattahorton in #1009
- Moving faust-generated code out of header files by @mikedickey in #1011
- Enable Local Monitoring of Inputs by @dhing1024 in #1014
- Output Volume Meters Include Monitor by @dhing1024 in #1017
- Adding email address to use for vulnerabilities to README.md by @mikedickey in #1018
- Changing "All Devices" for non-ASIO category to be "High Latency" by @mikedickey in #1020
- Updated warning text for non-ASIO devices on Windows by @mikedickey in #1021
- GHA: add an option to wait for static Qt build by @dyfer in #1023
- Feature/adding icons to connected view by @nwang92 in #1022
- Updating some tooltips, sliders and positioning for connected interface by @mikedickey in #1024
- Hide classic mode link after first launch by @mattahorton in #1025
- Monitor Controls from API by @dhing1024 in #1026
- Enforce Same ASIO Device on Windows by @dhing1024 in #1016
- Adding icons and basic README.md with instructions to Linux package by @mikedickey in #1027
- Refresh devices when opening the
Helio Workstation is free and open-source music sequencer, designed to be used on all major platforms.
Misc fixes for mobile platforms
Stargate is an all-in-one DAW and plugin suite
Download the Stargate DAW sample pack
Changelog- DAW Render: Fix small amount of extra audio being rendered at the end of
the file. - Sequencer: Fix items starting on the same beat as a tempo marker displaying
notes and audio at the incorrect tempo in a project with multiple tempos - Audio Items: Fix bug where changing the timestretch mode of an already
stretched item toTime (Affecting Pitch)would stretch the already
stretched file instead of the original, multiplying the stretch factor - Linux: AppImage: Fix on Fedora 38, possibly others (unknown change in F38
broke library linkage, did not affect F37)
Optionally, you can generate a sha256sum of the downloaded file and verify
that it matches this signature.
91f2e4eea198b151f8ba841c55ea2f082d4257f6e26625185c779b3f04a90350 stargate-23.05.1-1.x86_64.rpm
68f5f57f991161c7a4deb976a002d00a733c91e29caa654ad0bdc8c64d605481 stargate-23.05.1-amd64.deb
f998a7dc9b3d9c913feea2abbd6d980b266553c89df8efb2da1df22c8eadabc8 StargateDAW-23.05.1-linux-x86_64.AppImage
a5dffa52cca5fcc90da37ea0418cbaab763cccfb20f20b85336af27eeccad986 StargateDAW-23.05.1-win64-installer.exe
e93863bed9f6cef91305b08006369a7dd71e7bf8495c4c571317363f36d3320b StargateDAW-23.05.1-macos-m1-arm64.dmg
f54dfa6be5ac7de92ba5d2443bf6ef7f31693eb84e7e0ea07b01c2df190d5186 StargateDAW-23.05.1-macos-intel-x86_64.dmg
Seq66 is a grid style MIDI looper that, a Qt 5 reboot of seq24/sequencer64
Work on long-standing issues, recent issues, and a lot of stuff found while fixing them. Also adds some support for Meta Text editing. See README.md and the now plain RELNOTES file.
Zrythm is a featureful and easy to use DAW, written in C using the GTK+3 toolkit.
Added
- Home/End key shortcut for moving to the start/end of the project
- Option to select note notation in the piano roll
- Ability to select notes in a given pitch in the piano roll
- Ctrl+0 shortcut for zooming to default level
Changed
- Show message that BPM/time signature automation is experimental
- Show channel slot context menu on mouse release instead of mouse press
- Skip autosave if any toplevel window is on top
- Update Catalan, French, Japanese, Chinese (Simplified), Czech, Portuguese (Brazil) translations
- Redesign port/arranger object info dialogs
- Disable Guile scripting interface on MacOS
Fixed
- Fix wrong tooltip message on automatable selector in track lanes
- Fix track lane names getting ellipsized despite there being enough space
- Fix crash when splitting large audio clips
- Fix "Move Tracks Under Group" option not working when setting the direct output of selected tracks to a new group
- Fix given time range not being taken into account when exporting MIDI
Zrythm is a featureful and easy to use DAW, written in C using the GTK+3 toolkit.
v1.0.0-beta.4.9
Ardour is a hard disk recorder and digital audio workstation application that runs on Linux, macOS, FreeBSD and Windows
This is Ardour 7.4
Ossia Score is a free, open-source, cross-platform intermedia sequencer
- Proper support for dynamically built and loaded addons, without requiring a complete clone of the score source tree.
Check the docs! https://ossia.io/score-docs/development/plugins/plugins-with-avendish.html - Add a Range Filter object to ignore values outside of a range.
- Implement UI for XY spinboxes and float spinbox
- Avendish plug-ins: allow to have source and sink video objects, not only filters.
- Avendish plug-ins: allow to smooth values over time.
- More GPU texture formats supported for Avendish plug-ins
- It is now possible to drop files directly on the File port to change them, e.g. for instance
in Granola. - Rework of the device enumeration UI to allow multiple categories
- Implement discovery of OSC devices over Bonjour/Zeroconf/DNSSD
- OSCQuery: allow to specify a port for OSC listening if the remote app only has partial OSCQuery support
but can still notify of changes over OSC. 0 will leave the port be randomly generated by the operating system. - OSCQuery: allow to interoperate with servers which use N or no type instead of I for impulses.
- Official releases are now based on Qt 6.5. This comes with numerous improvements:
- Multiple shader viewports now work correctly and don't reduce the framerate.
- Much better hidpi support, especially on Windows and with support
JackTrip is a Linux, Mac OSX, or Windows multi-machine audio system used for network music performance over the Internet.
What's Changed
- Update PLC auto queue to use 5ms headroom in Virtual Studio mode by @mikedickey in #1003
- Adding universal binary support for OSX builds by @mikedickey in #1002
- Update version and changelog for 1.9.0-beta2 by @mattahorton in #1006
Full Changelog: v1.9.0-beta1...v1.9.0-beta2
Fasttracker II clone for Windows/macOS/Linux
- The song-to-WAV export screen now defaults to the tracker's bit depth and audio rate. This was actually the behavior for earlier versions of the FT2 clone, but I decided to change it back.
- The song-to-WAV exporter now allows rates up to 384kHz
- Alpha-based fade in for the about screen content (who cares..? :-)
- Some small text string changes (config and song-to-WAV export screen)
- Windows/macOS: Updated SDL to v2.26.5
Dragonfly Reverb is a bundle of free audio effect plugins (LV2 and VST) for Linux, MacOS, and Windows.
Stargate is an all-in-one DAW and plugin suite
Download the Stargate DAW sample pack
Changelog- Fix: Regression where offline rendering failed
- Windows: Fix bug where changing the time stretch algorithm of a stretched
audio file caused the file stretch factor to multiply itself at each change - Metronome: Fix change in downbeat pattern 1000 beats after the last
tempo/tsig marker - Metronome: Add a keyboard shortcut (CTRL+SHIFT+M)
Optionally, you can generate a sha256sum of the downloaded file and verify
that it matches this signature.
034696b64189e7d34c70074e40956b714c9a5a5939d888e5493eacdd6d383a6f stargate-23.04.2-1.x86_64.rpm
823ca24da04ffee3f61eced9ab65ae46e544abba193ac0871029291e7e356cc3 stargate-23.04.2-debian-11-amd64.deb
efa60f963994349aca67e62b0130d359643acde817c53548d31646827c0e7232 StargateDAW-23.04.2-linux-x86_64.AppImage
f0a16b114521d362fac786fd14c39e91609fd30664877e8026b790cdd181b68b StargateDAW-23.04.2-win64-installer.exe
a8168ff0be186e8172da79ea6411b51f50b42575af57b1ed2e2e7bb31d5d5933 StargateDAW-23.04.2-macos-m1-arm64.dmg
80d964e55347ca1c706d93672b6befeb9d01823da6bbd54f35430338347b5534 StargateDAW-23.04.2-macos-intel-x86_64.dmg
LilyPond is a music engraving program, devoted to producing high-quality sheet music
LilyPond 2.25.4
Stargate is an all-in-one DAW and plugin suite
Download the Stargate DAW sample pack
Changelog- DAW: Add a metronome
- AppImage: Revert to PyQt5 from PyQt6. This seems to make it work much more
reliably on many Linux distros - Sequencer, item context menu: New actions, select all items, to left or right
of the mouse cursor, for a track. - Sequencer, automation context menu: New actions, select all, select left,
select right for current selected automation parameter in track. - Linux: rpm, deb packages: Upgrade the build server from Debian 10
to Debian 11. This will result in better quality packages, but will no
longer work on pre-2020 era Linux distros. - Linux: rpm, deb packages: Install everything to /opt/stargate instead
of /usr, symlink desktop files in. Cleaner, more self-contained install. - Compile C code as C17 standard, previously compiled as C11
Optionally, you can generate a sha256sum of the downloaded file and verify
that it matches this signature.
79015a3357180297ee273f6ec1944006772802acf0f64012d0267a1705e84ff1 stargate-23.04.1-1.x86_64.rpm
c825370aaf6253470ce80627a6c7cb3e84133729753c7edf1ce064b691df7f24 stargate-23.04.1-debian-11-amd64.deb
0b3126711b9e1b14c4262df3bd8baece6c61c32743f2be7e330a38af5a587730 StargateDAW-23.04.1-linux-x86_64.AppImage
f4ebf8a10c19952280de2bd78cdb565ba5ba8ffffc228ac9de7d35671f6891cf StargateDAW-23.04.1-win64-installer.exe
3ae25ea28c94a7678d9e94607d595b9dc99bc07a7fa9d360b7f2d8a9d8d3a137 StargateDAW-23.04.1-macos-m1-arm64.dmg
22a045a8d63f98f2fe58ce07d9343ef4aa760af181cd96d2c21e0203d26a5dec StargateDAW-23.04.1-macos-intel-x86_64.dmg
PipeWire is a server and user space API to deal with multimedia pipelines.
0.3.70
Seq66 is a grid style MIDI looper that, a Qt 5 reboot of seq24/sequencer64
See the README.md and RELNOTES.md files.
JackTrip is a Linux, Mac OSX, or Windows multi-machine audio system used for network music performance over the Internet.
What's Changed
- bufstrategy 4, runs PLC directly in audio callback (the original way)… by @cchafe in #989
- Use realtime priority for regulator worker thread by @mikedickey in #992
- In virtual studio mode, always use bufferStrategy 4 for loss concealment by @mikedickey in #993
- Regulator worker thread cleanup by @mikedickey in #995
- moving push to broadcast ringbuffer into pushPacket() by @mikedickey in #996
- Adding support for reconnect on device change by @nwang92 in #980
- Make loss concealment (PLC) the default for virtual studio mode by @mikedickey in #998
- Update version and changelog for 1.9.0-beta1 by @mattahorton in #999
Full Changelog: v1.8.1...v1.9.0-beta1
Mixxx is Free DJ software that gives you everything you need to perform live mixes.
Mixxx 2.5-alpha
OpenMPT is a popular tracker software for Windows
This small update to OpenMPT 1.30 is mostly a bugfix release and will likely be the last release before OpenMPT 1.31. Here's a list of the most notable changes in this version:
- Stopping a sample preview in the Sample tab could stop unrelated plugin notes.
- Saving ITI files with embedded samples created broken ITI files if the source samples were marked as external.
- VBlank heuristics are now applied to MOD files with M!K! signature.
- NoiseTracker MODs are now always played with VBlank timing.
- MED: Global play transpose value was not considered for MMD0 files. Support for default instrument pitch was added.
- Tab order in Plugin Manager was changed to make the plugin list reachable more easily.
- In OpenMPT 1.30.11.00, browsing for all module types showed all 3-letter file extensions in addition to modules.
- Song length calculation stopped at first encountered
F00command in XM files instead of looking for further subsongs.
For a complete list of changes, have a look at the release notes and the full version history.
libopenmpt has also been updated with the same playback fixes.
Zrythm is a featureful and easy to use DAW, written in C using the GTK+3 toolkit.
Added
- Audition notes when moved with arrow keys
- Show value when hovering faders and balance controls
- Double click on faders and balance controls to set precise values
- Control-click on balance controls to reset their value
Changed
- Audition notes on draw and on click instead of on move
- Show track inspector when double clicking on a track in places other than the track name
- Don't start DnD on tracks until minimum movement threshold is reached
- Minimize waiting time when creating tracks and connections for multi-out plugins
- Scroll to middle of piano roll when first shown
Fixed
- Fix incorrectly allowing bypassing snapping in autofill mode
- Fix editor region being unset when moving tracks
- Fix not propagating errors when performing some actions
- Fix incorrectly allowing auto-save to continue while pre-rolling or counting in
- Fix resetting faders and balance controls not being undoable
- Fix not being able to cut regions near the edges with alt-click
- Fix not being able to change parameter values for VST plugins in generic UI text fields
Zrythm is a featureful and easy to use DAW, written in C using the GTK+3 toolkit.
v1.0.0-beta.4.8
Audacity is a free, easy-to-use, multi-track audio editor and recorder for Windows, macOS, GNU/Linux and other operating systems
Changes
- Some of the built-in effects are now realtime capable (Bass & Treble, Distortion, Phaser, Reverb and Wahwah).
- #4352 Added a new effect: Shelf Filter.
- Added an initial (beta) version of Beats and Bars.
- #4414 Reworked the bottom toolbar dock:
- Project Sample Rate is now found in Audio Setup -> Audio Settings (formerly known as Project Rate).
- The Snapping Toolbar (formerly known as Snap-To) is now independent of the Selection Toolbar.
- Added a new Time Signature Toolbar (beta). It is hidden by default.
- #4212 Improved Zooming behavior slightly (more to come in the future).
- #4393 Added a new ruler, Linear (dB). This ruler goes from 0 dBFS to -∞ dBFS and better reflects the volume as shown in the recording/playback meters.
- #3820 When copying clips between projects, you now can choose between whether to copy smart clips or just the visible portion.
- #4133 Added a delete button to the Cut/Copy/Paste toolbar.
Bugfixes
- #1584 Audacity no longer dithers tracks unnecessarily.
- #2427 Linux playback now handles output latency better (less stutters).
- #3796 The EQ effect no longer resets clip names.
- #3801 Audacity no longer crashes when trying to load projects with plugins that since have been deleted.
- #4417 Resampling a track no
Fasttracker II clone for Windows/macOS/Linux
- Added a 16 point sinc interpolation option (higher quality)
- Changed some settings for the default configuration:
- Palette theme = Dark mode
- Scopes = Lined
Note: Your existing configuration will not be changed!
- Changed the layout a little in the Config section (Audio / "I/O Devices")
- Removed the 192kHz audio output setting. This was a bit extreme to begin with.
Note: You can still select this rate when exporting songs to WAV. - Some code cleanup
PipeWire is a server and user space API to deal with multimedia pipelines.
0.3.69
Radium is a music editor with a tracker and sequencer and mixer interface.
- Demo songs: Added "Test Automation" made by mward25.
- Sequencer: Fix moving seqblocks (and probably other
things) not working when sequencer is inside the
mixer and the mixer is displayed in its own window. - Ladspa plugins: More detailed progress message
during program initialization. May help track down
why it sometimes takes so long time on Windows.
Radium is a music editor with a tracker and sequencer and mixer interface.
- Demo songs: Added "Test Automation" made by mward25.
- Sequencer: Fix moving seqblocks (and probably other
things) not working when sequencer is inside the
mixer and the mixer is displayed in its own window. - Ladspa plugins: More detailed progress message
during program initialization. May help track down
why it sometimes takes so long time on Windows.
JackTrip is a Linux, Mac OSX, or Windows multi-machine audio system used for network music performance over the Internet.
…ealment
moving push to broadcast ringbuffer into pushPacket()
PipeWire is a server and user space API to deal with multimedia pipelines.
0.3.68
Dragonfly Reverb is a bundle of free audio effect plugins (LV2 and VST) for Linux, MacOS, and Windows.
- Disable denormals during all DSP
JackTrip is a Linux, Mac OSX, or Windows multi-machine audio system used for network music performance over the Internet.
What's Changed
- Update manifests for 1.8.0 by @mattahorton in #970
- Add tooltips to audio settings to explain "input device" and "output device" by @mattahorton in #965
- Allow IP check to work with IPv6 only by @psiborg112 in #971
- make buffer size and sample rate settable for Pipewire by @ntonnaett in #972
- Fixes for Special Characters in Device Names by @dhing1024 in #974
- Adding a simple link to create your first studio to VS login page by @mikedickey in #976
- Fixing QML error on undefined boolean by @nwang92 in #977
- mkdocs: make docs look jacktrippy by @ntonnaett in #978
- Fix Windows deeplink when open by @mattahorton in #979
- AudioSettings should show the currently selected device by @nwang92 in #981
- Fix Refresh Button on Windows by @dhing1024 in #983
- Save Output Channels Settings by @dhing1024 in #985
- vsInit cleanup by @psiborg112 in #982
- Update version and changelog for 1.8.1 by @mattahorton in #986
- Temporarily get msys2 from choco by @mattahorton in #988
- Revert #988 by @mattahorton in #990
- Update vcpkg by @mattahorton in #991
- Release 1.8.1 by @mattahorton in #987
Full Changelog: v1.8.0...v1.8.1
LilyPond is a music engraving program, devoted to producing high-quality sheet music
LilyPond 2.25.3
Fire is a multi-band distortion plugin
Zrythm is a featureful and easy to use DAW, written in C using the GTK+3 toolkit.
Added
- Add monitor output meters in the header
- Add Macedonian translations
- Add pitch shift audio function
- Auto-scroll in the tracklist when dragging tracks and hovering towards the edges
Changed
- Update Catalan, Japanese, Russian, French translations
- Stop using
g_slice_*()(deprecated in GLib) - Simplify CSS for separators
- Move velocity settings to new toolbar in the bottom of the piano roll (fixes being unable to drag velocity bars when set to high values)
Fixed
- Fix audio files not being saved properly when saving the project after applying an audio function
- Fix error when routing to/from a port that has display unit info
- Fix minor memory leak
- Fix track/plugin inspect not immediately displaying the track/plugin properties
- Fix occasional crash when exporting the project (fix not deleting the source function after disposing an EditableLabelWidget)
- Fix occasional crash when adding a plugin to a collection
- Fix no sound when using Pipewire (regression from previous release)
- Fix right-clicking on inserts not working on Windows
- Fix error when attempting to paste an empty selection
Zrythm is a featureful and easy to use DAW, written in C using the GTK+3 toolkit.
v1.0.0-beta.4.7
Konfyt is a digital keyboard workstation to easily switch patches for live keyboard playing
Fabla is an open-source LV2 drum sampler plugin instrument
See CHANGELOG for details, thanks David Runge for reminding me to roll the release!
Signed-off-by: Harry van Haaren harryhaaren@gmail.com
synthv1 is an old-school all-digital 4-oscillator subtractive polyphonic synthesizer with stereo fx
An Early-Spring'23 Release.
Valhalla Tracker is MIDI sequencing companion written in a C and Python for GNU/Linux audio setups.
The software should now be good enough now to try and make music in it.
It has now every feature that I figured a basic live MIDI system should have.
There's a lot to build on still, but as far as core functionality goes,
I consider it complete
Jamulus enables real-time jam sessions over the internet.
Linux: Add script to install Debian repository automatically
Bintracker is an advanced cross-platform 9/16-bit chiptune music editor
Second preview release of Bintracker. Here's what's new since the last version:
- 2 new engines for TRS MC-10 and Tandy CoCo 3, by The Invisible Man
- Dragon/Tandy .cas export
- new demo track for AMP16k by @LoKiToon
- basic structured editing capabilities for the REPL
- a plugin for .wav import
- Snippets, a personal library for patches, presets, samples, and more
- various bugfixes and improvements
Bintracker is still rough around the edges, so be prepared for frequent crashes and other nasty surprises. Save often, and most importantly, please report any bugs you come across on the issue tracker (preferred) or through the official contact form.
The "full" Windows package contains everything you need to get started, except the ROM files for MAME. If you already have MAME installed and don't mind doing some configuration, you can chose the "core" package instead.
Giada is an open source, minimalistic and hardcore music production tool. Designed for DJs, live performers and electronic music
2nd bugfix release for version 0.23 Catoblepas.
Changelog:
- 'Kill channel' action now rewinds channels in SINGLE_BASIC_PAUSE mode (#599)
- Update FLTK to latest commit available
- Fix audio recording always getting trimmed to 4 beats (#613)
- Fix weird noise when playing two cloned Sample Channels with altered pitch (#602)
- Fix MIDI channel behavior when key is pressed and channel has ENDING state
- Fix channel's keyboard triggering not working
- Fix missing begin/end points and shift value when cloning Sample channels (#601)
meters.lv2 is a collection of audio-level meters with GUI in LV2 plugin format.
update man page for v0.9.24
fil4.lv2 aka x42-eq is a 4 Band Parametric EQ
update man page for v0.8.6
setBfree is a DSP Tonewheel Organ emulator
finalize changelog v0.8.12
stepseq.lv2 is simple step sequencer for moddevices.com
update man page for v0.6.12
JackTrip is a Linux, Mac OSX, or Windows multi-machine audio system used for network music performance over the Internet.
What's Changed
- Update manifests for 1.8.0-beta1 by @mattahorton in #946
- Fix crash when using JACK by @psiborg112 in #948
- Change text on button when deeplinked by @mattahorton in #950
- Include rtaudio in static Linux build with GUI by @mikedickey in #952
- Select Output Channels by @dhing1024 in #953
- Reinstate backend warning in the classic GUI by @psiborg112 in #951
- Clean up main by @psiborg112 in #939
- Fix updater release scripts by @mattahorton in #949
- Update version and changelog for beta 2 by @mattahorton in #954
Full Changelog: v1.8.0-beta1...v1.8.0-beta2
Stargate is an all-in-one DAW and plugin suite
Download the Stargate DAW sample pack
Changelog- Sequencer timeline context menu: Reorganize into sub-menus
- Sequencer timeline context menu: Various new actions to select all items
in the song or a subset based on the position of the right click - Sequencer timeline context menu, "Set as First Beat of Song": Fix automation
not moving with sequencer items - Tempo/TimeSignature markers: Fix various cosmetic issues in the sequencer
and timeline when using markers, especially when doing tempo ranges - Sequencer automation: Fix cosmetic issues with automation points that are
selected - Minor fixes
Optionally, you can generate a sha256sum of the downloaded file and verify
that it matches this signature.
0d6c8e8bbb8415f17412b512fe9249f3fe2c4aea881b9801b1426084e348d4ff stargate-23.03.1-1.x86_64.rpm
153113d2670b488bd27d0819ed35f7658d389a1791c79623e3dd6f21f2b65973 stargate-23.03.1-amd64.deb
d89cbf15845ffb7cbe19cbcbdb33c625b855fd0dfba3562f678a5528f5bbd6bf StargateDAW-23.03.1-linux-x86_64.AppImage
512e9a10bf1735beb3a93011e88696877ec95a7391185af076aac62857a670d9 StargateDAW-23.03.1-win64-installer.exe
e27866743164c55b67413ee6802cc3faaf8d14d45da5acbc7d43c5e722523c89 StargateDAW-23.03.1-macos-intel-x86_64.dmg
9ed861fb03e7819803ae7a2a583585b162fc7e606fa482ea1b76894161a7b169 StargateDAW-23.03.1-macos-m1-arm64.dmg
PipeWire is a server and user space API to deal with multimedia pipelines.
0.3.67
Loopidity is a multi-track, multi-channel, looping audio recorder for GNU/Linux and Windows - designed for live handsfree use
update autotools
OpenMPT is a popular tracker software for Windows
This small update to OpenMPT 1.30 is mostly a bugfix release:
- When previewing soundfont or MIDI library items in the tree view, a click was heard on note-off.
- After seeking with sample sync, the filter settings of playing notes were not updated since OpenMPT 1.30.09.00.
- The correct endianness of 16SV IFF sample data is now determined heuristically, to support both IFF files created by some (broken) PC software and files using the correct endianness. Fixed single-cycle loops in some IFF samples.
- If the first notes assigned to a sample in a key map required no transposition but the transposition changed for higher notes, the "Transpose Samples / Reset Map" feature was still available, even though it shouldn't be.
- Fixed a possible crash when hovering the envelope area of malformed instruments with a set release node but no envelope points, and whenever such instruments were played.
- MOD commands E10 / E20 / EA0 / EB0 are no longer preserved when converting to other formats, as the MOD format applies no effect memory for them.
- The fix for the OPL cutoff bug introduced in OpenMPT 1.30.09.00 was incomplete.
- ULT: Offset commands exceeding 65535 samples were sometimes not imported correctly even if there
