Keysight is a real-time MIDI visualization platform powered by Unreal Engine, built for piano-focused streamers and content creators, and featuring unmatched customization!
[h1]Hello![/h1]
I am very pleased to announce that 1.6.1 is done and live! This update originally started as a simple "let's just quickly add preset import/export", but exploded out into a number of high-priority bugfixes and some small tweaks to existing systems which massively expand the possibility space for what can be achieved with Keysight.
Please note that [b]1.6.1 will be the final update for Keysight 1.X.[/b] However, this is not the end of the Keysight development journey! More information at the end of this announcement, but let us first talk about what's new...
[h1]Preset import / export[/h1]
Sharing presets just got a [i]lot[/i] easier! Thanks to the wonderful work of HeapUnderflow developing another extension to Keysight, presets can now be imported from and exported to ".kspreset" files complete with all their custom images! There's honestly not much more I can say about this; you just click the button, select a file, and it all works as expected.
[img]{STEAM_CLAN_IMAGE}/38079779/19e2905f7f578eb34798f53d9593918fe06c57d6.png[/img][img]{STEAM_CLAN_IMAGE}/38079779/79a98b95b9db26f6fdcd858d8e992ace8df7a0ac.png[/img]
Due to .kspreset files having the ability to contain unmoderated text and images, I am pushing the [url=https://discord.gg/EHuJKU9393]official Keysight Discord[/url] as the best place to share and find files from other users. In fact, we have a #Hall-Of-Fame channel set up in there to showcase and share anything which really makes go you "whoa, Keysight can do that?!" featuring, for example: Shyked's wonderful "Raindrops" preset!
[previewyoutube=5jkKNYpk740;full][/previewyoutube][i]Go grab the preset file from the Discord if you want to use this preset![/i]
[h1]Small additions[/h1]
On top of the main goal of implementing native preset import/export, 1.6.1 also brings with it a number of small feature iterations. 1.6.1 adds:
[list]
[*] Two new particle systems! "Streaks" emulates spline-based trails as seen in other styles of visualisation, and "Drifting specks" emulates an ambient particle system look.
[*] A flag for particle systems to be flipped upside down, and snapped to the top of the active area instead. Makes particle system bursts tied to note spawns in top-down mode a lot easier to achieve!
[*] Global brightness modifier for scene lights, making it a lot easier to turn up or down piano lighting as a whole if built up from multiple lights (as is the case in most default presets)
[*] Lighting channel control to all objects which can receive lighting. This allows much finer control over what is illuminated and is particularly useful for stopping keypresses/note objects from having any other colour than their emissive colour
[*] Reflection colour multiplication modes (for the extra spicy advanced users out there). This allows the reflection image to be much more finely controlled in terms of colour, rather than always using the emissive colour of the material
[*] Flat midi velocity mode. This allows rapid removal of all dynamic effect response with velocity, or remapping the response from midi files with a single midi velocity
[*] Improved repeat note-on piano key animation behaviour. Keys now no longer snap upwards to begin animating downwards if a note-on event occurs while the key is mid-animation, which actually does more than you might think for believability!
[*] Index-based sprite frame display for pulses. Err, that is to say: when using horizontal sprite sheets as the pulse stencil, these can now take the note's pitch as their frame to display. If using a 12 frame sprite sheet, this allows for per-pitch stencil switching on pulses, which in turn allows for note names to be attached to notes!
[/list][img]{STEAM_CLAN_IMAGE}/38079779/6eed90b005a4f3611685b83b48f87c0e2ae8eb25.jpg[/img]
[i]"Note names.kspreset" is included as part of the /Keysight/Extra resources/ folder included in the Keysight install. The Import button goes here by default. Please note that these note names are essentially hard-coded to follow the path of notes in a stock Core > Visual Layout setup at 16:9 resolution, and will require tweaking if you have changed these settings at all.[/i]
[h1]Bugfixes[/h1]
With 1.6.0 bringing a huge overhaul to the state machine in Keysight, it's unsurprising (to me, anyway) that a bunch of bugs slipped through. 1.6.1 squashes a ton of these! Here's a summary:
[list]
[*] Fixed midi culling being completely absent, whoops!
[*] Fixed pitch bending completely breaking note object position, also whoops!
[*] Fixed custom frame and output directory selection resetting on each Keysight launch
[*] Also made custom frame directory write to a sub-folder, fixing file-deletes in the instance of a user specifying a location shared by other files (this is actually by far the worst bug ever to have existed in Keysight, sorry!)
[*] Fixed keypress reflections not behaving as expected compared to other materials
[*] Fixed soft-pedal-based bloom and exposure modification not occurring during render-to-video operations
[*] Fixed key and damper animations not resetting cleanly when the panic button was pressed (a bug which also occurred at the beginning of any render-to-video operation, fade-in would simply mask it)
[*] Fixed midi playback breaking and going backwards in time if the panic button was pressed during playback
[*] Fixed midi playback not resetting cleanly if loading a midi file while midi playback was occurring
[*] Fixed midi playback looping, if enabled, causing the file to play after a render-to-video operation completes (avoiding system strain if you start a render and then walk away, as most people do!)
[*] Fixed particle alignment with non-standard 3D camera angles
[*] Fixed camera roll applying incorrectly (or, rather: unintuitively) when using non-90 local roll values
[*] Fixed various unwanted behaviour when pasting an object type which had not yet been copied
[/list][url=https://egglyberts.live/keysight/changelogs/1-6-1.txt]Full changelog[/url]
[h1]Announcement time![/h1]
I mentioned this at the end of the 1.6.0 announcement, but: I want to completely rebuild Keysight. There is a concept in development called "technical debt", and Keysight suffers from it [i]badly[/i]. The analogy of a house works pretty well here: the foundations of Keysight were laid three years ago (!) without much of a concept for what the actual structure would look like. The resulting structure is a pile of awkward extensions and supports, with many parts being dependent on some rickety little subsystem which cannot be easily replaced without tearing the entire thing down.
So that's what we do! We tear it down. I have a lot of very ambitious goals for Keysight 2.X, but I'll share the ones that I am reasonably confident I can actually achieve:[list]
[*] Building in Unreal Engine 5. This is less exciting than you might think, but still!
[*] A clean and enjoyable menu
[*] Support for localisation down the line (it's currently impossible in 1.X thanks to how I built early systems)
[*] Better preset display and organisation
[*] A consistent way of allowing presets to use a "global" value for a variable, or their own "local override" across every single option
[/list]This will take an unknown amount of time. This time around, I want to properly forward-plan and take the necessary development time to build things [i]right[/i]. If that means spending a month making a really nice slider, then I'm going to spend a month making a really nice slider.
I'll be asking for feedback on prospective ideas and rambling about progress over in [url=https://discord.gg/EHuJKU9393]the Discord[/url] if you want to stay up to date with what's going on. But in the mean-time, I hope preset sharing allows users struggling under the weight of poor user experience to get their hands on some really awesome visuals without having to climb the learning curve themselves!
Oh, and: [b]this 2.0 rebuild will be released for free for all Keysight users.[/b] I hate to mention this at all, but this kind of continuous development on a fixed-price product doesn't make a ton of economic sense, especially not as a sole-developer... As such, if you believe Keysight is worth more than what you paid for it, I set up a [url=https://www.buymeacoffee.com/keysight]buymeacoffee link[/url] to support me further.
Happy Keysighting! <3