Info
Ok, fair warning, I'm dropping the wiki tone for this and switching to first person! This page feels a little egotistical since I don't think anyone actually cares that much about the deep Keysight Lore, but this information doesn't really exist anywhere in a written form so...
History
Why Keysight?
Way back in April 2018, I started streaming piano performance.➚ To be clear, I am no career musician, and I was very self-conscious about my piano ability and why anyone would be interested in sticking around to hear the same handful of recitals. Around June 2019 I started thinking about dynamic overlays, somewhat inspired by MrGregles'➚ crazy MIDI drum overlay stuff, and wanted to integrate reactive visuals into my stream overlay somehow.
Now, as a person, I love building things for the joy of building them so I wasn't too interested in any existing pre-packaged solutions, and I wanted to leverage my experience in Unreal Engine 4 (as part of my university time studying video game design and production) to make my own unique thing. It was a mess, but it did work! Over the next few months, the overlay got refined to the point of integrating remote chat control (credit to Adam, a long-time developer friend of mine who built the website and suffered through my inexperience with websockets to make it all work) and looked a little something like this! Slightly embarrassed to share this, but it's the only convenient video I have of the old overlay. The sound and performance and overall vibes are not what I am about these days!
Some time around December 2019 was when friend of the stream and piano god Gluecks➚ (formerly known as W3sp, one of the OG Youtube pianists!) asked if I would consider making my overlay distributable, because he would like to use it as well. My overlay was wildly non-configurable and badly constructed, but Gluecks' request was the first instigating "but what if..." thought I had about building an actual product out of live piano visualisation aimed at streamers.
When Keysight?
January 2020 was when Keysight construction began in earnest, with Gluecks and a few other streamers having access to pre-alpha builds for testing and feedback. At this time I was still phenomenally unseasoned in terms of being a developer, and the whole thing was organised and executed in awful ways. However, the whole "quick and dirty, just copy the old stuff and make it configurable in a menu" approach did yield very fast results, and this trailer dates back to just March 2020 and was the first "promotional video" I ever produced.
I paid my $100 to Daddy Gaben and started the Steam release process in April 2020. Keysight released on Steam on June 30th 2020 for $30, and I still cringe looking back at just how bad a value proposition that was! It's actually possible to go back and use one of the oldest versions of Keysight via the "betas" tab in Steam properties, but I recommend backing up and then deleting all your save data(*) before doing so.
Behold, the "pre-rework" menu of Keysight! This is broadly how it looked at launch, albeit with some additions from version 1.1
Notable things Keysight did not have (and I remind you I was asking $30 for this):
- No infinite preset slots. You had 5 preset slots, and that was it!
- No tooltips
- Particles locked to a choice of 3 different types
- Pulses locked to just be rings
- No light bars
- No render to video
- No import/export
- Awful performance ("modern" Keysight runs better than this old verison!)
- No default presets (everything was just this stock white thing)
From there, it became an addiction to just keep adding and reworking things to try and make Keysight better. I wasn't hopeful for this to be "successful" in the sense of becoming a "real job", but Keysight is something that my friends and myself were using regularly so I definitely wanted to keep investing all my free time into it. It was also a playground to develop myself as an Unreal Engine developer, and perhaps more notably, my understanding of all the "peripheral" things to a project like marketing assets, UX, customer support, all that stuff.
Anyway, rather than go through every change in excruciating detail over time, here's a big timeline of Keysight updates! And if you want the excruciating detail, this can be found in the Changelog tab inside Keysight and via these Steam announcements.➚
How Keysight?
Some extra context about me to make sense of Keysight development: I have been a remote 3D artist freelancer since April 2014, and my core interests and skillset lies in rendering (especially materials and lighting). I'm very much used to playing around with Blender➚ Cycles' node-based material editor to create procedural stuff from a bunch of maths, which looks a little something like this:
This is relevant because Unreal Engine has a visual scripting wrapper around C++ called Blueprints, which looks a little something like this:
So making the leap from dynamic materials to developing software was actually very painless. Still, my lack of any actual computer science formal education has definitely been on display plenty of times over the course of Keysight development... Funny story: in my earliest dynamic overlay adventures, I didn't even know what an array was or how to use one, so the collection of 88 point lights representing notes were literally just 88 variables.
I've come a long way since then, and Keysight has definitely been a case of "every project is just practice on how to execute that project in the future" where I have so many ideas on how I would architect things differently for a piano visualiser in the future. Still, there's a lot of heavy lifting I am simply incapable of doing alone, so I would like to take a moment to sincerely thank HeapUnderflow➚ for building tools that Keysight can interface with to perform functions I could never hope to build alone. Heap is responsible for:
- MIDI file playback
- Render-to-video
- Preset import/export
As well as providing substantial amounts of mentoring (like explaining what a "linked list" is and why my objects should probably be pooled using them). Either way, outside of these external tools, Keysight is entirely built in Blueprints visual scripting, and all 3D (and a lot of 2D) assets were built in Blender.
Anyway, something I would like to stress: Keysight is built out of free tools. YOU can learn how to use these tools and make your own things! Building things brings me so much joy, and I would like everyone to share in that joy and be more creative. Start as small as you like, but just make things :)
Future
As far back as November 2022, I had finally had enough of the limitations of the Keysight architecture I had constructed. The phrase "painting yourself into a corner" comes to mind... Keysight is 3+ years of technical debt and hacks piled on top of each other, it's honestly surprising it works at all! And so:
Keysight 2.0
Originally I had envisioned this as some kind of significant (third) menu overhaul and replacing some foundational things, to be released as another free update to Keysight. However, upon further thought about things like Unreal Engine versions and data architecture, I soon knew that an upgrade-in-place strategy was still going to be limiting. With years of building MIDI visualisation under my belt now, I have such a better concept for what a visualiser could be and how to build towards that, and I wanted utter freedom in being able to pursue that goal.
So, in March 2023 as part of the 1.6 update, I announced the start of the Keysight 2.0 project. This is an entirely new program developed from the ground up, working within Unreal Engine 5 and working much more closely with HeapUnderflow to try and make the definitive MIDI visualiser. I am documenting the process and making devlog videos, check out the playlist here!➚
When? WHEN?!
Keysight does make me money (it has a price tag after all), but it doesn't make me enough money to become a full-time, exclusive Keysight developer. I work on Keysight when I can between professional contracts, so the amount of time I can devote to building Keysight 2 is quite variable! I get asked very regularly how Keysight 2 is coming along and when it will be ready, and I simply do not have an answer... it will be done when it's done, alas.
But it's already feeling really nice just to navigate menus, and I'm excited by the foundations that are being laid and the things they allow me to do. Keysight 2 is gonna be awesome, I promise!