#anklang β Public Fediverse posts
Live and recent posts from across the Fediverse tagged #anklang, aggregated by home.social.
-
#DevLog: #Anklang TypeScript & Sndfile Updates
π #Jsonipc #TypeScript migration complete, including codegen!
π Updated development docs accordingly
π οΈ Manually wrote #libsndfile config.h
-
#DevLog: jj-fzf & #Anklang type safety π‘
π¦ Migrated all #Jsonipc glue code to #TypeScript
π§Ή Finally removed legacy #castxml + #Python based code generator
π§© Next up: porting generated bindings to TypeScript, aiming for fully type-safe #IPC!π Fixed jj-fzf to preserve ::@ history when deleting #git tags
-
#DevLog: #Anklang #IPC Bindings π
π§Ή Cleaned up #API for IPC and simplified it
π οΈ Rewrote C++ <-> #JavaScript binding generator in #TypeScript
β¨ Improved code generation for handling of accessors
π¦ Tested updated #NPM dependencies
-
#DevLog: #Anklang #RPC Evolution π
π§± More JSON marshalling work for method calls
π οΈ Changed Json libraries and conversion logic
π Moved to managed pointers for all API obejcts
π§ Discovered LLMs don't fully understand cross-language RPC nuancesβ¦ πβ Solved the C++ template specialization issues
-
#DevLog: #Anklang Binding Migration π§ͺ
π οΈ Trying to base the C++ <-> JSON bindings on `#clang -extract-api` instead of castxml
πͺ Have prototype code for #JSON call dispatching
π§© Atm fighting #CPlusPlus template specializations for member func with and w/o const
β¨ The ultimate goal is to make the bindings type safe with #Typescript wrappers
-
#DevLog: #Anklang Build Overhaul π οΈ
π§ Reworked build rules to make #Git optional (mostly used to find linting targets)
πͺ Fixed DEB and #AppImage builds
π¦ Added #RPM packages (via Alien)
π€ Automated dist & install verification
π Rewrote the Docker CI container
π‘οΈ Isolated binary builds out-of-tree
π Tagged a nightly release:
-
#DevLog: #Anklang #Submodule Purge
π§ #Github release tar/zip archives cannot include submodule sources
π₯ So, we now fetch all external sources as tarballs (faster anyway)
π§Ή Deleted .gitmodules and all submodule build rules -
#DevLog: #Anklang #Packaging π§
π¦ Tried converting DEB pkgs to RPMs via alien & fakeroot
βοΈ Alien wraps postinstall scripts in uuencoded strings, decodes with #Perl
π₯ #Fedora 42 dropped Perl support!β Seeking solutions to align Alien v8.95.6 with F42, any ideas? π€
-
#DevLog: Revised Deb #Packaging in #Anklang
π¦ Upgraded #Debian dependencies to 24.04
π§ Fixed installation symlinks and prefix
π‘ Adjusted paths to /opt/<vendor>/ convention -
π³ Built #Dockerfile twice:
π« First attempt on Debian Bookworm failed due to libstdc++-12 being too old
β Switched to #ubuntu:22.04 for newer deps
π οΈ Updated Makefiles to remove Git dependency from tarball builds (unfinished)
-
#DevLog: #Anklang #SolidJS Influx
𧬠Fixed some of my #LitElement bugs by migrating to solid
π§© Refactored & simplified modal dialog creationπ― Goal: Robust UI with modern reactivity patterns!
-
In #Anklang, we have been running into warnings from #Lit like:
> Element scheduled an update (generally because a property was set) after an update completed, causing a new update to be scheduled.
You should be good unless you see a warning directing you here:
https://lit.dev/docs/components/properties/#when-properties-change -
For #Anklang we expect to have lots of small updates at the GUI, but the number of components (Tracks, Clips) remains mostly stable throughput the runtime. We do however have some heavy canvas uses (PianoRoll, Spectrogram).
It wasn't too easy to map these requirements onto Vue2/Vue3, which is why we moved to Lit. However for Lit we also have to bundle a Signals library to implement all needed updates and still see missing updates / complains about too many rerenders at the UI.
Since we need Signals anyway, it makes sense to look into SolidJS as a UI solution as well.
So here is a Wiki page with the result of LLMs comparing the two under our requirements:
-
DevLog: #Anklang Tech Stack Juggling
π Deep dive into SolidJS vs. Lit Components trade-offs π
π³ Resolved Dockerfile builds missing pandoc
π§ͺ Looked into combining SolidJS lifecycle with custom class logic -
DevLog: #Anklang Tech Stack Modernization
π Migrated to #TailwindCSS-4 + #Vite (#HMR rocks)
π Replaced Vue with SolidJS signals + #LitElement
π‘ Fixed sidebar overlaps, double-click bugs
π§ Quirk debugging still ongoing, but progress is solid!
-
I'm publicly committing to the 100DaysOfCode Challenge, aiming to work on #Anklang and tweet about it daily.
I expect it to be far easier to spend an hour coding every day than to craft an intelligent microblog message about it...
Join me and learn about it here: https://100DaysOfCode.com
-
TIL about #Clang --extract-api!
Currently rewriting my C++ ββ #JavaScript binding generator for #Anklang based on the #JSON output.
Should also be super useful for generating API #Documentation π€https://www.youtube.com/watch?v=jXrNZ-4Gb-g (shy of 9 minutes)
https://llvm.org/devmtg/2022-11/slides/QuickTalk6-clang-extract-api.pdf
-
Happy to share the release of #Anklang 0.3.0! πΆ
This update brings improved UI & #MIDI handling, bug fixes, and new features like the LiquidSFZ device for #SFZ and #Hydrogen drumkit support. Enjoy enhanced #Freeverb and Blepsynth devices, a new Saturation effect, and CLI improvements. Thanks to contributors @ritschwumm and @swesterfeld for their valuable work.
https://github.com/tim-janik/anklang/releases/tag/v0.3.0
#AudioSynthesis #NewRelease -
*Anklang 0.2.0*
#Anklang is a digital audio synthesis application for live creation and composition of music. It runs on #Linux and is Free Software.
The 0.2.0 release improves audio synthesis capabilities, user interface, documentation, performance, packaging, and testing. We support new CLAP (draft) extensions, non-linear mappings for BlepSynth ADSR times, a Jack PCM driver, context help via F1 key, and improved note editing in the piano roll.
https://github.com/tim-janik/anklang/releases/tag/v0.2.0
https://anklang.testbit.eu/ -
Wrote a #LockFree (and Obstruction-Free) memory #allocator for use in low-latency real-time threads.
Blocks are 64-byte aligned to avoid false sharing, alloc+free calls of the underlying Bucket- and Bump-Allocators are O(1).
A seperate thread is notified when the Bump-Allocator reaches a watermark. It will then extend the pool of pre-allocated (and pre-faulted) memory, so the Bump-Allocator can continue to serve requests concurrently without syscalls.
https://github.com/tim-janik/anklang/blob/trunk/ase/loft.hh
#Anklang -
CLAP - CLever Audio Plug-in API
Last week the CLAP-1.0.0 got tagged and LWN ran an article about it.
Today several projects (and a number high profile companies) announced interest in supporting #CLAP for their #DAW and plugin developments:
https://u-he.com/community/clap/Last weekend I started to implement CLAP support for #Anklang, the API is farily straight forward and Anklang can already recognize the Beta version plugins listed in the above announcement.
LWN article: https://lwn.net/Articles/893048/