Friday, June 19, 2026

Projects Update - June 2026 Edition

While I've been relatively quiet here on my blog the past few weeks, "project wise", that couldn't be further from the truth!

 

1) Introducing "Spectrochrome" - The biggest news of course that I've finally made a great deal of progress on my MusicViz project again, for the first time in ages.  I plan to share more details about this in a dedicated post in a due course when I complete the last few major chunks of work on it, but before then, here's a brief sneak peak of what's been brewing:

 

Live link to the latest stable version:

 https://aligorith.github.io/musicviz_playpen/spectrochrome.html

What you have here, is a web-based spectrogram tool (built as a single-page tool, that runs completely in your browser on your own machine, using HTML5 technologies), that analyses any audio clip you throw at it (*1), renders each frequency / pitch with a unique colour (i.e. based on the colour scale I covered in the first edition of this series) using a "showcqt" like visualisation, and tries to figure out what the "dominant" pitch at any point is (so that we can then use that in future to drive the "next-step-up" visualisation that will try to do something with the main melodic line detected...

Other stuff it supports (but not really shown in that screenshot) includes:

 * Being able to playback and scrub the audio

 * Being able to render out a video of the spectrogram being progressively drawn as the audio plays

 * A bunch of interactive  adjustment + tweaking tools (i.e. these are some of the active areas of development currently under way)

 

 (*1)    Disclaimer:  It works best for short clips (about 1 - 1.5 minutes in length) - which are the typical ones it is designed to handle (i.e. that's the length of almost all the music I write + record, which is why I need this tool). I can however be used on standard pop-song like songs too (though the processing runs a bit longer, and the longer timeline means that fine details get horizontally compacted / compressed, making any melodic line features less legible.

 

In that sense, this tool is not so much an endpoint in itself, and more of just an intermediate step, intended more for debugging and playing with the concepts to start getting a handle on the data we're playing with, and less as a concrete pinnacle of anything.

What this tool has done though is more practical: It has renewed my energy levels + thrill of chasing a challenging "project development" goal!


2) And since I've been doing all that in Javascript, it has of course reignited my desired to try hacking together a nicer programming language to use for building such things! i.e. "Kea Lite" or "Web Kea" 

I'll say more about this in future, but suffice to say, it's been way to much fun tinkering around with different syntax experiments, and just exploring the possibilities of what the "ideal" syntax for representing a system would look like, if totally freed from the constraints of trying to make that work with an existing language. 

And then, hopefully, once I've reached that point, I can then start working backwards from that to build a working compiler / transpiler system, that will then give me the powerful language I've always dreamed of being able to work with!  And the best part of course is that it is all mine! As I like it! 

The perfect antidote to the depressing world of AI slop we are being bombared with everyday! 

No comments:

Post a Comment