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