0110.be logo

~ A user-space macOS driver for the M-Audio FastTrack Pro

M-Audio FastTrack Pro USB audio interface The M-Audio FastTrack Pro is an old but good USB audio interface. On macOS it works out of the box, but only in a reduced mode: Apple’s built-in USB audio driver limits it to 16-bit audio, plays back only at 44.1 kHz and ignores the S/PDIF input. On Linux, the full device is available. To keep the interface useful on a Mac, I instructed Claude to write a user-space macOS driver for the FastTrack Pro. Compared with Apple’s driver, it offers:

Installation requires macOS 15 and the Xcode Command Line Tools:

1
2
3
make            # build
make install    # install and start
make uninstall  # remove, the device goes back to Apple's driver

This effort fits a recent trend of custom drivers and firmware for audio gear. Now that coding is more accessible, vendors see more value in making their gear hackable instead of locking it down. Allowing custom firmware was, of course, always a good idea, but now a much larger group of enthusiasts can actually write it. For example, Akai is opening up the MPC Sample for custom firmware, and Behringer has published the source code of its upcoming KICK sampler and IGNITE sequencer on GitHub. I see this as a good side effect of LLMs: custom drivers extend the life of existing hardware, and because writing firmware is now within reach of many more people, vendors are pushed towards hackable gear.

Check out the FastTrack Pro driver on GitHub. Feedback, bug reports, and pull requests are very welcome.


~ Scareflow: a node-based show controller for Halloween

Every Halloween I build an interactive installation for trick-or-treaters, like last year’s speaking pumpkin. The lesson from last year: keep thing simple. So this year I tried and failed again. But, I learned a few thing and built some reusable software.

Now that LLMs are more capable, it also changed what you can do in a couple of evenings. Before, I did web-based environments since it allowed quickly prototyping by hand, now native applications are feasible which brings a couple of advantages: lower latency, network integration, driving multiple audio devices,… Additionally, there are now AI-systems which are very good at 3D modeling and rigging 3D models: before I was limited to assets I could find.

Scareflow

Scareflow is a node-based show controller. You wire events (key presses, OSC messages) through delay, random and cooldown blocks to sounds, WLED lights, Tasmota smart plugs or OSC output. Sounds start within milliseconds, so thunder, lightning and visuals can be synchronized.


Fig: The Scareflow node editor with the example show.


The glue is Open Sound Control (OSC): small UDP messages with an address like /pierke/scare. It works as low-latency inter-process communication on one machine or across the network. Any environment that speaks OSC can be integrated. If you want to build your own event-based show, Scareflow is a good place to start: the editor needs no code, shows are plain TOML-files. Prompt your LLM for extensions and integrations with other event types.

Check out Scareflow on GitHub to build your own show and extend it with your own events.

A Flipper Zero as remote

This Halloween I rediscovered my Flipper Zero as a programming platform: it has Bluetooth and a Sub-GHz software defined radio built in. Pimpkin Remote is a small Flipper app with two roles.

It acts as a Bluetooth keyboard whose key presses trigger events in Scareflow, and serves as a remote for a smoke machine. The smoke machine responds to 315MHz messages sent from the Flipper Zero directly. Again thanks to LLMs programming the Flipper Zero became much more accessible.

Hallowierke

Hallowierke is a skeleton marionette in the costume of Pierke, the Ghent puppet, projected on a window. It dances, looks around and waves until an OSC message from Scareflow arrives. Then, it is electrocuted by a bolt of lightning. Mwoehahaha.

The player is written in Rust with Bevy. The rigged puppet, 17 bones and nine animations, is generated by a Python script for Blender. Astra by ChatGPT is great at this: it produced a rigged, dressed and animated model, something I would never have attempted by hand. As with Dewey, I now have a moving puppet but learned little about rigging. For a Halloween porch, that is a trade I am willing to make.


Fig: Pimpkin Remote.
Hallowierke dancing, then struck by lightning
Fig: Hallowierke dances until the lightning strikes.

For next year, I will keep it simple.


~ Dewey: a connectome-driven fruit fly living in your macOS menu bar

Recently, researchers released the complete connectome of a male fruit fly: a map of the neural connections in its brain and nerve cord. The accompanying paper describes this work. I have connected a simplified version of part of that connectome to a 3D model of a fly and now have a fly zooming around on my mac. It flies around the desktop, lands on windows, and is scared of the mouse cursor.

I have called it Dewey. That way it should at least like part of its own name: Drosophila means “dew-loving”.

I am not sure what Dewey feels or thinks about being stuck in the matrix. To make it less lonely, I have built in an option to at least add a few friends. There are deeper philosophical questions to raise about simulating neural circuits. Is it purely reflexive? At what point might there be something more? These questions become especially worrying if we start doing this with a social species such as a bee, or eventually animals with more complex nervous systems. Imagining the Umwelt of an animal, is difficult enough in the real world. What an Umwelt would look like in a virtual world breaks my brain.

Seeing Dewey fly around is nice. The process of creating Dewey, much less so. I prompted a recent LLM to connect the brains to a body and essentially guided the process until Dewey appeared. A mere year ago, getting such a result would have taken me days, if not weeks. I would also have had to learn a lot more about neural activation patterns and the intricacies of rendering and animating a 3D fly. Now, I am much less motivated to do that deep dive, since the result is already there. The fly flies. The cursor scares it. I can add friends. There is still plenty to learn, but the immediate reason to learn it has disappeared. If a reward without much effort is within reach, it takes a discipline to go the extra mile, discipline I seem to lack. I have gained a desktop fly and missed out on part of the process of making one.

Anyway, check out the paper, run Dewey on your Mac, or have a look at the code on GitHub.


~ Updates to the Olaf audio fingerprinting system

Over the last few weeks I have been improving Olaf. Olaf is an audio fingerprinting system with its core algorithm written in C. I have been focusing on ergonomics that make the C core easy to use: bindings, sensible CLI interfaces, and a REST interface. The updates:

The updates were an ideal fit for the recent Astra and Opus 5.5 AI models: fingerprinting is a very testable workload, and the already established context makes tasks clear to LLMs. The tech stack also helps: Zig interfacing with a C core have often clear errors during compilation. The risk of things going wrong is also small, since the main functionality in the core is essentially untouched.


Fig: Web-based spectrogram demo via the WASM version of OLAF. Click the image above to try it out.


Check out the OLAF repository on GitHub to explore the code, try the new CLI, REST API, and Python bindings, or run the WASM demo here. Feedback, bug reports, and pull requests are very welcome.


~ Sampo-UI Meets Ontop: Publishing Relational Digital Humanities Data - Semantics 2026

The SEMANTiCS conference took place in Ghent from 15 to 17 September 2026. Our contribution was a collaboration between GhentCDH and the Semantic Computing Research Group at Aalto University on publishing humanities data with Sampo-UI and Ontop.

Sampo-UI Meets Ontop: Publishing Relational Digital Humanities Data on the Semantic Web, Joren Six¹, Jahid Chetti¹, Annastiina Ahola², Frederic Lamsens¹, Heikki Rantala², Eero Hyvönen²
¹ Ghent University, Ghent Centre for Digital Humanities (GhentCDH)
² Aalto University, Department of Computer Science, Semantic Computing Research Group (SeCo)

At GhentCDH, we often publish research datasets in the digital humanities. Several projects need similar search filters, map visualizations and data exports. Sampo-UI makes it possible to reuse these components when the data is available as Linked Data. In collaboration with the original Sampo-UI team, we worked on modernizing the framework. Our first contribution separates the shared core from project-specific configuration, making updates and reuse more manageable. The second uses Ontop to expose existing relational databases through a SPARQL endpoint. This lets us use Sampo-UI while keeping the database infrastructure and tooling we already have. Having one fewer database system to maintain is welcome.

Abstract: The Sampo model and its Sampo-UI framework have become an established approach for publishing Cultural Heritage and Digital Humanities data on the Semantic Web. Sampo-UI enables exploration of data originating from SPARQL endpoints through faceted search across multiple views with seamlessly integrated visualization and data analytic tools. Here, we present two contributions to the Sampo-UI ecosystem: (i) a separation of Sampo-UI core from application-specific configuration; decoupling core and application simplifies updates and facilitates reuse of efforts, and (ii) the use of Ontop — a virtual knowledge graph system — to expose relational databases through a SPARQL endpoint and Sampo-UI. The use of relational databases and reuse of tooling and expertise around relational databases lower the operational burden of publishing small-to-medium-sized datasets typical of digital humanities projects. These contributions originated outside the original Sampo-UI team but were developed in collaboration with it, and are being prepared for upstream integration. We illustrate the approach with two projects at Ghent University: one on Roman coin finds in Belgium (NuMAD) and one on historic Belgian company data (BelHisFirm). Both portals run the same Sampo-UI core with a different configuration, and operate on existing institutional relational database infrastructure without a dedicated graph database.

The demo below shows the NuMAD portal for exploring Roman coin finds in Belgium through the modernized Sampo-UI. Another demo presents historical records of Belgian companies through the BelHisFirm portal. Both portals run the same Sampo-UI core with different configurations, demonstrating the flexibility of the system.

Alongside the Sampo-UI Meets Ontop paper, a conference poster on Sampo-UI that I prepared is also available.

Video: NuMAD — exploring Roman coin finds in Belgium.


~ Explore Intra-Belgian book translation flows with a SAMPO-UI

Another contribution presented at the SEMANTiCS conference in Ghent was a Sampo-UI portal for the BELTRANS project. I made a small contribution to the software and the paper, working with colleagues at KBR, the Royal Library of Belgium.

Explore Intra-Belgian book translation flows with a SAMPO-UI, Sven Lieber¹, Ann Van Camp¹, Joren Six², Julie M. Birkholz¹ ²
¹ KBR — Royal Library of Belgium
² Ghent University, Department of History & Ghent Centre for Digital Humanities

The BELTRANS project studied book translations between Dutch and French from 1970 to 2020, involving at least one Belgian author, scenarist, illustrator or editor. The resulting dataset brings together publication metadata from different libraries. Making these data available is one thing; making them easy to explore is another.

The BELTRANS portal uses Sampo-UI to let researchers filter publications, browse authors and publishers, explore maps and download selected data as CSV. It uses the modernized Sampo-UI core described in my Sampo-UI Meets Ontop post. Here, the data are served by QLever, a graph database with a SPARQL endpoint. The same interface components find another use, this time for translation history.

Abstract: In the field of Big Translation History, (historical) book translation flows are studied based on publication metadata. This research data is often kept internally or only provided as domain-specific MARC21 records, a standard library format. Within the recently completed BELTRANS project, we created a large integrated data corpus of worldwide translations between Dutch and French between 1970 and 2020, where at least one Belgian was involved as author, scenarist, illustrator or editor, to study intra-belgian book translation flows, and published the corpus as FAIR data. In this paper we present the SAMPO-UI-based platform that can be used by non-technical users to explore the underlying BELTRANS Linked Data corpus. The off-the-shelf software SAMPO-UI was configured to build a user interface allowing the exploration of our data related to book publications, authors, publishers and linked temporal and geospatial information. The different search perspectives, filters and visualizations enable researchers to explore the corpus or download self-chosen subsets, without having to process the large underlying data dumps. Both the application and corpus data are opened up in a sustainable way, i.e. besides deposits at research repositories, the application is hosted in the long term at the Royal Library of Belgium (KBR) and the integrated data is equipped with provenance information allowing to click-through to the related metadata records at different national libraries. Future work can extend the application itself with novel visualization techniques or different download formats if necessary. Also, this application can serve as a role model to inspire other researchers to distribute their corpora as Linked Data and via such a SAMPO-UI platform.

The BELTRANS corpus and the portal configuration are available for reuse.


~ Sampo-UI 4.0 released at SEMANTiCS 2026

Sampo-UI 4 was officially released at the SEMANTiCS conference in Ghent. Together with Jahid Chetti, Heikki, Annastiina Ahola and Frederic Lamsens, we worked on bringing the GhentCDH fork back into the main Sampo-UI repository.

The release includes an updated software stack, a clearer separation between the shared core and project-specific configuration, and a new plug-in system. These changes make it easier to reuse components across projects and keep portals up to date.

The GhentCDH fork has now been merged upstream. Our work continues as part of the shared Sampo-UI project, in collaboration with the original SeCo team.

Sampo-UI development and GhentCDH contributions Sampo-UI development at SeCo continues along the main branch. GhentCDH forks the project, modernises its architecture and software stack, and improves modularity. The fork has merged back into upstream development. SeCo · Helsinki / AaltoSampo-UI development Fork Merged upstreamShared development GhentCDH modernisation Architecture · software stack · modularity Contributions return to the shared framework

For more on the changes and their use in our projects, see Sampo-UI Meets Ontop. ```


~ Introduction to Sampo-UI at FedOSC Linked Open Data Visualisation Workshop

FedOSC, the Belgian Federal Open Science Cloud, supports open science and research data management at Belgium’s federal scientific institutions. On 8 September 2026, it organised a day on data visualisation and Linked Open Data at KIK-IRPA in Brussels, with talks, demos and a approaches on cultural heritage datasets.

My contribution to the closing talks was an introduction to Sampo-UI, an open-source framework for building search and visualisation interfaces on top of Linked Open Data. I explained why we use it at the Ghent Centre for Digital Humanities: several projects need similar filters, maps and data exports, so it makes sense to reuse a common framework. The presentation covers how Sampo-UI works, our contributions to it, and a practical example with the NuMAD coin database.

The Sampo-UI presentation is available online and embedded below.



~ The age of AI exploits is here

Fig: Gemini imagining the age of AI exploits.

The following text puts into words a change that I have seen happening the last month. At the Ghent Centre for Digital Humanities we manage a fleet of virtual servers on the Ghent University network and have first-hand experience with security incidents appearing regularly now. It has a different tone than other posts here: it was sent in as a letter for a newspaper but was not published. Let’s see in a few years if the tone was too alarmist or if it holds up:

The newest generation of AI coding tools is a great asset for software developers. They help with understanding complex codebases, and assist in writing code. Used properly, AI coding tools increase software quality and developer productivity. Unfortunately, these powerful tools can also be used with bad intentions. AI coding tools are now sufficiently advanced to find and exploit bugs in software. They pose a threat to essentially all computing systems that form the underpinning of modern infrastructure: banking, aviation, industry, and education.

While earlier reports still used conditional terms to describe these threats, now — only a couple of weeks later — the first effects are already here. With the help of AI coding tools, three bugs were found in Linux, an open-source operating system: Copy.fail, Dirty Frag, and Fragnesia. These first AI-discovered exploits in a broadly deployed system form a watershed moment. The bugs led to service outages, but diligent IT teams quickly patched systems, limiting the impact. The effects of Mythos — widely considered the most capable system for finding bugs in software — are now also clear. Mozilla reported finding and fixing around four hundred bugs last month, where in a typical month around twenty similar bugs are discovered and patched. Not every bug is exploitable, but every exploit starts with a bug. The age of AI exploits is here.

The transition to this new age will be painful. Many unmaintained systems are connected to the internet and will not receive security updates: IoT devices, orphaned servers, smartphones and proprietary systems locked in time. It will become easier to gain illegitimate access to these machines. The skills needed to break into such systems are diminishing. What previously required highly specialized experts or state actors is now within reach of a much broader pool of bad actors, due to the very tools that are meant to help developers.

What can be done? Companies need more stringent cybersecurity policies today. The broader public needs awareness of this evolution and basic cybersecurity hygiene to keep devices up to date. And we need a regulatory framework that holds producers of computing systems responsible for updates over a longer lifespan. Unfortunately, we can not afford to collectively ignore this emerging reality.


~ Interactive slides on sound, waves, grooves

Recently, my son’s school teacher asked parents to come in and read in front of the class. I kindly declined, since I am not very comfortable doing voices in front of a room full of ten to twelve-year-olds. As an alternative, I proposed to explain some properties of sound and music, based on material I used fifteen years ago for the kids’ university: a series of workshops and lectures aimed at children. Unfortunately, after a couple of months, the teacher took me up on the offer.

Fifteen years ago, I painstakingly hand-coded - yes, this is becoming a thing - demos in the Java programming language to show properties of sound: an oscilloscope, a loudness level meter, a spectrogram, a pitch detector. This took ages but worked reasonably well to show basic properties of waves, sounds and music.

This time, I casually vibe-coded similar demos, not in Java but using self-contained, single-page web applications. Below one of the demos - on sound propagation - is included. With the aid of powerful AI coding tools, programming these interactive demos took only a couple of hours. Fifteen years ago, the hand-coded - arguably worse - versions of the demos took weeks. The main downside is that there is less pride or satisfaction in detailed prompting vs hand-coding.

Fig: visualization on sound propagation.

With frameworks like reveal.js it is straightforward to string together html pages in a single presentation. Here is the full presentation on sound, waves and music in Dutch. Or check the sound presentation github repository.

Giving the presentation went well and as far as I could tell, the kids were at least involved and may have learned a couple of things. Afterwards, I got some feedback via a parent that their kid was intrigued and got curious, so I will take that as a win.

Some takeaways:


Previous blog posts

19-03-2026 ~ Robot-mediated haptic feedback outperforms vision in violin duo coordination

13-11-2025 ~ USB MIDI support on ESP32: the ESP32-S3

13-11-2025 ~ Guest lecture on `Music Information Retrieval - Opportunities for digital musicology'

03-11-2025 ~ Pompernikkel - the Interactive speaking pumpkin 🎃

22-10-2025 ~ FFmpeg with Whisper support on macOS via Homebrew

02-10-2025 ~ MIDI and OSC tools improvements - MIDI processing and mDNS support

02-10-2025 ~ MuTechLab - Music Technology Workshop in Luxembourg

24-05-2025 ~ Newline.gent - A yearly hacker conference

21-03-2025 ~ Local TLS certificates with Caddy

26-01-2025 ~ Powering low current electronics projects with power banks