Sunday, July 26, 2026

[MusicViz] Spectrochrome Update - Pitches Detected Pane

Had a really productive day and a half on my "Spectrochrome" project again after a 2 week hiatus!

(Apart from running out of steam, I was probably starting to stretch a bit too much on top of still having my day job and/or trying to get some "non-computer-based relaxing/life-living time" in...  And with no external pressures on what should and is largely still an actual fun hobby project, a break was indeed in order!)

Anyway, I finally got back to doing some "new" stuff again, after getting really worn down trying to get that massive colormaps refactor MVP stage sufficiently complete that I could shove it out the door, and not have to deal with the rest of the annoying + HARD problems requiring further intricate refactoring work for a while. Some of the highlights were:


* 1) Got a new "About" / Help-Text panel set up

(Don't read too much into this text in the screenshot just yet! :P  It's still really just a roughly thrown together wad of fluff to have at least *something* - which I've since begun the interminable process of gradual refinement on...)
 

* 2) Also bashed together some stuff to show a floating panel containing details of all the detected notes and their intensities... 

(This was one of the big outstanding features on my roadmap / todo-list, as I needed a faster + more interactive way to see this data, without having to first export it to a CSV file that I then needed to bring into some other tool to read..)

Disclaimer:  This screenshot shows the current "incomplete" state of this - hence why all that empty space to the right of the table is very much needed + justified. Specifically, there's a bunch more work to come soon to show what other contenders for the "strongest pitch" at that moment may be!  (This was actually the way I had the very first version working, but very soon reduced down to just the "strongest pitch", to try and bring that feature under control.  Anyway, hopefully getting this working may reveal some interesting insights!)

Another direction to take this is to try plotting these "strongest pitches" on/near the scrubber while doing the recording

   i.e. There's currently a problem with the generated videos where you can't really get a good feel for the notes that are getting hit / emitted when the scrubber hits them. I feel like we really need some visual feedback that is seen for a few frames before the sound hits and the line actually crosses the point in question to really "sell" the mapping between sounds and visualisation...  (I look forward to that, and/or trying to draw some sort of trace showing how we think the melody might be flowing between these points!

 

* 3) Finally, have managed to do a bit more research into how to try to graft in some "Equal Loudness Curve" support so that I can adjust the intensity that various frequencies are being visualised + processed at - Hopefully when working, this can help dampen out that pesky band between "C7 - C8" that tends to fill into a solid block of bright colour, as it seems all the other harmonics all merge/intersect + resonate at that frequency range... (along with compensating for fundmentals actually rooted at C3/C4 range always ending up triggering a detected peak an octave higher)

(Failing that / or in addition, I really should adjust the colormap to make that range more desaturated so they are play less of a role)

Monday, July 20, 2026

Python Code Style - My Opnionated Import Ordering / Styling Notes

Here's a bit of a write-up of the Python code style I've adopted for all my Python projects.  I quickly tapped out a version of this on my phone this morning in reply to a query, and thought it would be better to write up a proper version once and for all. So, here goes!

 

(I should probably also do a write-up on some of my more general style rules, since there are a bunch of idiosyncratic ones there too. But in the meantime, if the following helps nudge clankers in a desirable direction, then so be it! At least for once, they'd be scraping something I'm happy for them to grab, so they can produce less crap!) 

 

Overall Order 

1) Block 1 = System imports
"import sys" <-- If needed in that file.
"import os" <-- Sometimes... otherwise goes below
"import traceback" <-- Not always historically

2) Signal imports (usually only on the main.py file)
"import signal"
"signal.signal(..., ...)"

3) Stdlib Imports - Alphabetical

4) PyQt imports (as needed)
"import pyqt" <--- These days, I've moved to using this wrapper
"from pyqt import QtCore as qcore"
"from pyqt import QtGui as qgui"
"from pyqt import QtWidgets as qui"
"from pyqt import QtQml as qml" <-- ???
... then any individual direct imports
... then my aliases for "QtProperty" + "Signal"

5) All external libs

6) All libs from own project. Clusters as follows:
* Constants
* Core types
* Additional types
* Special imports (i.e. for the specific module)

 

Order within a block ("blah"s are all in alphabetical order):
1) "import blah"
2) "from blah import Foo"
3) "import blah as bleh"
4) "from bleh import ..."
5) "import blah2"
6) ...

 

Sunday, July 19, 2026

Firefox Tweaking Tips - Easier Access to "Page Info / Media"

I recently learned that there are two ways to make it easier to access the "Page Info" window in Firefox:


In short:

1) The "Ctrl-i" shortcut opens it directly

 

2)  Enable the following option:  "browser.menu.showViewImageInfo".   Then, right-clicking on any images will now include a menu entry to directly jump to the "Page Info window's "Media" tab", with the relevant image selected


Apparently the following Bugzilla issue was tracked this through to completion (whereas the linked issue to put back easier access to this in a few extra places is still a pending todo even today, YEARS after the easy access functionality was removed!)

https://bugzilla.mozilla.org/show_bug.cgi?id=1692553


Friday, July 10, 2026

[MusicViz] Spectrochrome - ColorMaps Update

[Disclaimer:  Unfortunately this is still not the full fancy intro post that talks about what this is, and how it came to be... Maybe I'll get around to that someday, or maybe I'll just keep posting the updates, and forget to make that long deferred proper intro... who knows! I certainly don't anymore LOL ðŸ˜œ]

 

Yay! I've just pulled the trigger on getting a major bunch of upgrades done on my Spectrogram project that I've been chipping away at during my free time over the last few weeks.

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


Specifically, I've upgraded the whole "Color Map" / "Legend" functionality so that it now allows all the different colours per pitch to be edited (with each one per pitch + octave now displayed in a nice fancy table in the UI). (I can also load/save these as JSON to test out the tweaks I want)

Technically I still haven't quite finished all this functionality (i.e. the table only shows things for the "common" default naming style, with the other accidentals that are not used unable to be edited, AND the names don't update to match the naming scheme chosen). But, that stuff isn't very fun, and it could've kept this update blocked for ages if not indefinitely (while killing motivation) if I kept waiting to finish it off before releasing it all...

So, who cares! It's my project! That functionality can remain as a "broken" (but well documented!)  TODO in the meantime, while I dive back into doing all the other fun bits that need doing! 😜

 

Thursday, July 9, 2026

Linux Rant - Session Restore Not Working

It seems my ongoing quest to set my machines up to seamlessly maintain state through the inevitable forced updates that still need to happen will likely need to me step in and hack up my own solution!

Right now I need to solve this problem across 2-3 platforms TBH:

1) Gnome - For my work machines, where I've got a specific "6 + 4" window setup I want to have restored each time my VNC session restarts for whatever reason.  i.e. With that, I want a whole bunch of terminal + folder windows opened at specific sizes + positions, each one hosting a mix of some 3-4 different tabs set to specific folders, with specific commands pre-typed into each shell ready to be deployed with a single enter-key press, and/or each maintaining its own command history log.

2) KDE - This is the setup I'm trying to move to for all my personal machines. Currently just on my laptop and a bunch of VM's on my primary workstation. Annoyingly, it looks annoyingly close to doing what I want - but only on a surface glance!

3) Windows -  While in the future this will hopefully no longer be a concern, until then, I still am running Windows as my primary at home, at also have to go via that at work to get into my Linux VNC sessions at work. So, finding *any* way to streamline the process of automating a restore-setup-after-forced-restart is still very important to me...

Monday, July 6, 2026

Hobbies and Storage

Just saw a quote that was too good to not rsshare for posterity in case the original source (or at least the one I saw) goes away: 


"Every hobby starts with curiosity and ends with storage problems"

-- @vinterkarusell@saga.garden


https://saga.garden/@vinterkarusell/116868965992798187

Monday, June 29, 2026

PSA: You're doing wrong when your stuff-ups become a plot point

Jeez (Big)Tech industry! You're doing it very wrong when not only everyday folks are having to regularly warn each other about your antics, BUT you're also being used as a punching bag *PLOT POINT* in topical popular media, where they explicitly show your products as being in the wrong!

Yes, just the other night, I was watching a movie where a major plot point of the story is that an iOS update ended up inadvertently wiping out a whole bunch of precious and irreplaceable memories. And then just now, I'm greeted by a social media post where some everyday folk are warning that the newest iOS update may end up inadvertently deleting your "Shortcut Automations", as the "trigger mechanism has been rewritten to be part of each shortcut".  While I'm not an Apple user myself, this is still embarrassing to see!

Please do better!

🙄 

 

Thursday, June 25, 2026

Memories of NZ's Milk Delivery System

The other day, I saw a post about a migrant to NZ who was surprised about the tokens we used for the milk delivery system that we used to have back when I was a kid.  This got me thinking back to a bunch of cool stories I could tell about this.

For instance:

* 1) My parents saved the last 2-3 glass milk bottles we ever got. I've got them now safely stowed away.  (Err... actually, in which cupboard exactly I can't remember just now, but I know I moved them a few years ago to a "safer" + "nicer" spot than I'd been storing them in. I might update this post with a photo when I find them)
 

I think I have the foil lids too, but kept in an old baby food jar (glass with metal lid)

Heck, IIRC, we used to keep the old white metal-wire caddy that these would come in for many years too - we got rid of that though as it was not looking too flash anymore, after years spent in a not so flash cupboard under the sink...

IIRC, some of these tokens at some point became plastic? (I vaguely remember seeing blue + white OR green + white disks / hoops)


* 2) I remember going to the Meadow Fresh factory on a tour in kindergarden, getting to see the section of the factory a massive fancy machine where they washed the bottles for reuse! I always thought that part of that system was so cool! (Take note, Big Recycling: That's my reference point for what true recycling should mean, and how it should work!)

(IIRC, they also had us walk on some clanky exposed gangway high above the factory floor when doing that... By the next time we visited in Primary School, they now had a glass enclosed viewing booth / tunnel instead... Same as with the ice cream factory next door, that we visited later that morning)


* 3) Mum and Dad say that I used to always bolt upright from my naps, Einstein hair + drool (err... not quite, but that's the best description right now) when the milk truck did its rounds in the early evening, blaring its "milk run" song and all!

"AI Smells" in 2026 Software Engineering

Just like how there used to be "Code Smells", there are some remarkably obvious "AI Smells" on code and interactions that feel less than savoury...

* 1) Comment blocks in code that are way more verbose than even most non-lazy humans would produce.  There's nothing quite "wrong" with it - and indeed, in some ways, some of the things it does are quite helpful even for whoever next has to try to unpick how it works - but it also just doesn't feel right...

* 2) Obvious markers and tells - like em-dashes and unicode arrows... (yeah, humans don't do those as they all require looking up the symbols as they're not on most keyboard layouts!)

* 3) Screeds of accompanying  documentation, more verbose than even the most prolific documenters out there (aka *me*!!!) would bother to produce, which also have a nasty habit of burying the lede / not making the key points very obvious to pick out

* 4) Code review comment responses that make you wonder if you should just start being less civil + helpful in your comments, and just more blunt / symbolic (i.e. to "maximise efficiency for the machines"), since it doesn't seem like there's gonna be a human on the other end actually reading those anymore...  

(Hmm... this last part I gotta say does sometimes make you feel a bit empty inside. 

Also, there was a time when I did comment on open source project that seemed to be going on the right track in many ways but had some annoying bugs, only for it to then transpire a few days later that the author admitted the whole thing was "an experiment in getting AI to fully do all the work"... Yeah, I think I swiftly stopped caring about that one right then and there...)

Meh...  😥️

Friday, June 19, 2026

Linux Tweaking - Firefox Scrollbars

Mwhahahaha! I think I've managed to figure out a bunch of settings to force Firefox on Linux to finally keep the scrollbars visible, AND to make them much thicker! (i.e. as seen to the side) 

 


 

Key Points:

*  widget.gtk.overlay-scrollbars.enabled  = false

    This seems to be the key to making them permanently visible, by forcing them to get their own space permanently allocated to them, removing their need to keep fading out

 

*  widget.non-native-theme.gtk.scrollbar.thumb-size

*  widget.non-native-theme.gtk.scrollbar.size   

    These two are used to make the scrollbar a much more decently visible + clickable size.  (#SayNoToSkinny)

 

* widget.non-native-theme.scrollbar.style

    I'm not entirely sure what the various values here that can be used, but will note that the approach used by one commenter of setting it to "4" will give you a massive "square block" design (i.e. no rounded edges, and much thicker)

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.

Linux Annoyances Rant - Solutions for Rough UX Sought

This post covers 3 main annoyances I'm currently working on solving across various Linux machines I have to use. I'm mainly only talking about the issues that I haven't got solved on other machines I used...

 

1) Taskbars - Fully un-grouped windows, absolutely not ordered or grouped by window, and able to be freely reordered.

NOTE: I have long had this problem solved on Windows (i.e. using 7+ Taskbar Tweaker), and also on KDE (yay!  Those guys rock!), but on the RH 9 type Gnome-based Linux we're in the process of migrating to?  That's the one I'm currently seeking solutions!  Of course though, all of these could've been solved if everyone didn't do the stupid thing that they learned from Windows 7, OR perhaps they learned that from Apple first?!  Whatever...

2) Gnome Button Ordering

3) Kubuntu (Auto) Update Checks on Resume from Sleep