< Back

Beta 0.2.3

2024-7-5

Completion of the External Unit API

  • More improvements made to external unit API, which is now at version 0.3.3
  • Fixed problem with external_unit_directories configuration item, so that it now can deal
  • with addresses that start with a slash
  • Set development_mode configuration item to be false
  • Solidification of external unit file structure
  • Updated "help" menubar item
  • Added error box message for when loading a project file that contains units which Alchemy has trouble with creating or connecting

This is the final update along the External Unit API project path, which started almost a year ago, around July 23rd. There are a number of things I'd still like to add or improve (a better Typescript console, a Rust console, consoles for other languages (Python, C, C++, etc.) better logging, better unit design process, etc.) but I'm going to stop here and work on other things for now.

Something unseen in these updates is all the work done to the website, including an extensive reference library for all communication messages and types used with the External Unit system. I wrote 6 tutorials and even redesigned the whole site along the way.

Another unseen item is the utility program I wrote called "Transcoder" which is used to convert Rust types into types of other languages (currently, just Rust and Typescript) Its also used to generated the data for the website's reference library. This alone took me 3 and a half months to create.

It's been a really long process, and I hope the work I've done here can benefit future development. I'm not very good at recognising milestones - I guess because I focus too much on what needs to be improved - but lets go over what's been achieved here.

  • Added the ability for anyone to create units without the original codebase.
  • You can design these units in a design file read by Alchemy at run time.
  • The units can be controlled by an external process, of any language.
  • This process has access to lots of Alchemy functionality; foremost the audio engine.
  • There is an automatically generated reference library detailing all messages, commands and data structures which are used in this whole system.
  • To aid further, there is a Typescript console which handles a lot of the communication with Alchemy and presents a nice API.
  • There are 6 tutorials on the website on the creation of units.

Sometimes I feel like I'm not working on Alchemy anymore, but instead these parts. I look forward to getting back to the main path.

Here's to the next milestone.