Newsletter #12 – The First Domain Object
The plan was to build the Piece Settings window. But Piece Settings requires instrument assignments, which require a working Instrument Library – so the Instrument Library came first. This is how the development sequence has always worked: dependencies reveal themselves when you get close enough.
The Instrument Library is the first non-piece backend entity Ooloi manages – global, and the first shared-state object to establish the invalidate/fetch/replace pattern that will govern every piece of shared state going forward: the backend broadcasts that a copy is stale; clients fetch when they need to; one code path handles updates regardless of origin. ADR-0045 has the specification; The Instrument Library describes what it felt like to build.
The bundled library ships roughly 270 instruments across all standard families, documented in the new Instrument Library Catalogue. Glenfiddich Highland Pipes in G sharp explains the scope – and its limits.
Something has shifted in the blog. Horns in Bass Clef is about clef-dependent transposition in the historical horn repertoire – Beethoven through Shostakovich, the convention that outlived its purpose by a century. It is the clearest instance so far of a post that is purely about music rather than architecture. Once the foundations carry weight, matters shift naturally from deep tech to music itself. The technical posts will continue (this remains a development blog), but what has been most telling is the shift in the questions people ask: from how the system works to what it can express musically.
Preparatory work continues – and this comes with a deep nerd alert: ADR-0046 proposes a reference-passing in-process transport that eliminates serialisation overhead for desktop use, before the rendering data volumes to come. Eric Anderson's 2015 gRPC-Java in-process transport applied the same principle at the wire level; this extends it to application data.
/ Peter Bengtson