Beta 0.4.0
2024-12-11
- Added a "help" command line action
- Added a "list_units" command line action
- Alpha's Musical Keyboard how has a offset octave select
- Converted all units which used the "Musical Instruction" datagram type to instead use the new "Midi" datagram type
- Added the SoundBridge units (midi in, midi out, virtual midi in, virtual midi out) (virtual ports don't work on windows)
As I mentioned at the start of the last news post; over a year ago I decided to come up with a short list of what I called "killer features" for Alchemy. Some things that I imagined if I could add would allow me to produce a really interesting and entertaining demo. The first was External Units, second was Arduino support. Number three; Midi.
SoundBridge
The new SoundBridge Midi input/output units allow you to interface with Midi equipment and software.

"SoundBridge" reflects the nature of what the collection of units do, and has a similar tone to the real-world manufacturer I used for inspiration; Roland
These interfaces allow you to (finally) connect to external midi controllers and synthesizers, meaning that its now possible to break free of the two basic synths that come with Alchemy, and of the very limited sequencers.
In the last news article, I talked about how one might use Arduinos to control stage lights. The Midi protocol takes this a step further. Professional lighting and theatre automation equipment use the Midi protocol as standard, meaning that now we've opened the door to controlling such equipment with Alchemy. These units act as simple conduits for midi messages however, so there is still development to be done to add units which will do the work of processing such messages and communicate with equipment.

These units come with a limitation however, which is that the virtual midi ports do not work on Windows. This is due to Windows not having a way of creating system-wide virtual midi ports like MacOS can (and Linux distributions).
Musical Instruction Upgrade
With this update we've also switched over from using the "Musical Instruction" datagram format to the Midi protocol itself, meaning that a number of existing units have had their internal circuitry upgraded. For many units this change will be invisible, but the Musical Keyboard has received a noticeable upgrade.

It now comes with a way of selecting which octave the keys correspond to. Previously this was locked in, but it is now controllable both manually and by boolean ports on the left side. This is useful for two reasons; one, you can now play notes across the entire midi note spectrum, and two; incoming note data which previously stretched beyond the notes available on the keyboard can now be brought into view.
Version 0.5.0
I'm not totally sure on what path to take from here. From a totally Midi perspective, right now Alchemy sits in this sort of middle-ground. Signals can be sent in from sequencer software or hardware, and they can be sent out to synthesizer software or hardware.. but not a lot happens within Alchemy itself. These two collections of things can already send signals to each other so what value is Alchemy bringing? We need to start thinking about expanding out along both directions of that chain, as well as potential inner expansion.
Towards Synthesizers - Essentially, add more synthesizers to Alchemy. More features, more ability. In turn this would also include more effect units and more mixers. More ways to make sound, and more ways to modify and deal with that sound.
Towards Sequencers - We should develop a sequencer within Alchemy. Whether that be a more complex version of something like the Launchpad, a tracker or a piano-roll editor. This route also includes things like Midi effects units such as Arpeggiators, Chord generators and delays.
Inner Expansion - By this I mean modification of the midi signals and streams themselves. Routing one midi channel into many devices, or many midi channels into one. Removing velocity or note data transposing / offset. Alchemy could allow for routing midi signals across networks too.
There's a lot of possibilities here, and I haven't even touched on stepping outside of purely Midi concepts, like having Midi signals control an Arduino (or the other way around). There's a lot to be done and only one person doing it right now, so it often feels like a mountain of work. I'll have to organise all these ideas and work out which to prioritise.
I'm a slow climber, but I am climbing! See you in version 0.5!