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

  

Sunday, June 14, 2026

On Patterns and Chunks in Music

Sunday morning thoughts on music stuff (since this is the hour when I'd have violin lessons for over a decade)

Something I only really learned / realised in recent years, particularly after watching someone very skilled at sightreading demonstrate their skills [1], which maybe would've been better to know earlier:

Patterns, patterns, patterns.

While many of us of driven mad to the point of curling up in a crumpled mess a few bars in then barely holding on, what higher level performers do here is they are able to quickly deconstruct what they see into the building-block patterns the composer used.

What do I mean?

Scales + Arpeggios.

Ultimately, many composers are relatively "lazy" in that they will use runs of scales + arpeggios to "fill out space / make noise", acting as "connective tissue" between stretches of melody. This is especially true the more "showy" and "virtuostic" the piece is supposed to be...  [2]

This sort of ties into an interesting Ted talk from Benjamin Zander years ago where he talks about the progression of musical skill (i.e. The "one buttock playing" one - IYKYK). The central thesis here is that, what distinguishes beginners from more advanced players is the progression of skill away from trying to tackle things on a note by note basis (i.e. equivalent to kids learning to read having to spell out words letter by letter, stringing those together, then trying to make sense of them), they are instead looking more broadly at larger chunks, eventually focussing a phrase-level progressions.

Yes. These are pretty much the same same kind of fundamental insight as:

"What makes a piece of music memorable / easy for people to understand? Repetition. People need to hear ideas several times, and especially in different ways, for them to start picking up on them, and before recognising and/or even eventually liking them. It's not *boring* that something needs to be repeated several times - as long as you do it to establish a pattern that you then subvert to create some minor novelty / interest... That is just what needs to happen. To satisfy our stupid lizard brains."   [3]

Hopefully this helps unlock something for some music student out there sometime... 


Wednesday, May 20, 2026

MediaSlurper Updates - Launcher works on Linux now

Just a quick WIP teaser tonight:

Today I finally bit the bullet, and figured out all the necessary changes to get MediaSlurper running under Linux  (though to be fair, I'm only really testing this under Kubuntu currently, but may soon also test under Manjaro for good measure)!

MediaSlurper GUI running under Kubuntu, with the "Foreland" wallpaper from Manjaro

 

Saturday, May 16, 2026

Reactions to Baldur Bjarnason's - "The Old World of Tech is Dying"

This morning, I read a fascinating essay from Baldur Bjarnason:

https://www.baldurbjarnason.com/2026/the-old-world-of-tech-is-dying/


A good few things resonated with me quite a bit, so I've pulled them out into a post here:

* 1)  On "Singular Revelatory Events" (aka "Silver Bullets That Fix / Change Everything")

* 2)  On what's rotten with the "Global Tech Industry"


Sunday, May 10, 2026

Old Computer Hardware Revival Saga: Desktop 1 still crashes Kwin using a newer Live USB

Sigh...  this evening, I finally got to test a newer KDE Live USB on Desktop 1 (which had issues with Kubuntu 25.10)


Salient part of the initial coredump - Looks like it's in libgallium *again*...  (i.e. likely the same place as last time too), when doing a framebuffer blit in Kwin

 

Unfortunately, I am still getting crashes with this new version:
* Can now confirm it happens when trying to bring up any window

* Can also confirm that Kwin now pops up a very handy "Crash Handler" that can show the relevant coredump.

* The problem though, was that, after the first crash (from trying to open System Settings), the next dozen in quick succession (when trying to open the "Start" menu after waiting a few minutes) were happening so frequently, that I couldn't inspect if they were all crashing on the same thing.

Friday, May 8, 2026

Recent Linux Learnings + Experiments + Attempts to Upgrade Linux Laptop to Kubuntu 26.04 LTS

After several days of trials, I've been itching to deploy Kubuntu 26.04 LTS to my Linux laptop, as it has so far seemed pretty OK, but with a bunch of cool new things...

This update covers:

* 1) First impressions of the new LTS

* 2) A whole bunch of niggly tech things I've learned in the past 24 hours, either from general poking around and/or from trying to upgrade my test laptop 

Tuesday, April 28, 2026

Photo Organisation Scheme

Someone recently asked me how I currently structure my photo collection. 

 

The short answer - It's a mix of:

* "Structured" stuff for my "proper camera" stuff from 2010 onwards, 

* A similar system for camera photos too this past year and a bit, alongside / integrated

* Haphazard per-device collections for the rest


While I should try to improve this, I have also been burned before, having lost a good few months of stuff (suspected) from one old camera from a botched reorder that I then backed out from...


Monday, April 27, 2026

Windows Terminal Tip - New Tab Behaviour

Saving this here to save me another mad search again next time:

 


If using "Windows Terminal", to make the "New Tab" behaviour sane, go into each relevant profile, and change the "Starting Directory" setting to "./"  (i.e. current directory that the active tab is using)

 

Notes: 

* This makes the behaviour match watch every other OS does, and what you'd naturally expect, when trying to fork up another terminal tab to work on a sub-task from the same deeply nested folder

* The stupid default value here defaults to "%USERPROFILE%, which is akin to opening a new window from the start menu, located miles away from where the files you want to work on here and now live!

Linux Migration Experiments - First Attempt with Desktop 1, and Hardware Upgrade Roadmap Thoughts

Having previously tried with Desktop 2, and on the back of recent success with CodeQuest Laptop, I finally decided to try and brave testing Linux on Desktop 1 for the first time ever, to see how it would fare. 

After all, as soon as I am forced to take it off Windows 10 (if something sufficiently bad comes along that means that all old machines absolutely need to be taken off the internet immediately - and even then, I can buy some more time by just disconnecting its USB wifi dongle (more on that in a moment), then it'd be good to know that I can safely do this with that machine.

Of course, there's a LOT of water to pass under the bridge with this one first... As in - tons of hardware upgrades + tweaks first (which may be somewhat familiar from prior posts in this series). 

This update covers two things:

* 1) The immediate future hardware-upgrade needs of this system, which are still up in the air somewhat

* 2) Tonight's "failed" first experiment running it under Linux