Hey, hi and hello! New things!
Let's jump right into it. First up, piano simulation improvements! Here's a video:
As you can see, a bunch of work has been done on key animations and general piano simulation. I've been wanting to incorporate some sort of pedalling display into Keysight for a long time, and the good-idea fairy finally struck with "what if we just model the dampers?". I know few people care about pedalling to the extent of wanting to show it pretty front-and-centre, so it's disabled by default. Head into Advanced menu mode and Scene > Visibilities to enable dampers. You can also control the material of the dampers, using a semi-transparent black material and disabling felt triangles can make the damper-bar nice and subtle.
In relation to piano animation: piano keys now animate with velocity! Complete with key-bounce on return, if the note-off velocity is high enough. Piano keys also richer material control, an inner wood material, and vastly improved models. Previously, piano keys were simple blocks that clipped into each other when depressed... now, piano keys have all 8 different shapes as found on a real piano! Oh, and the frame model got updated and has lighting channel response support. And piano felt was added. With colour control. Now you too can be one of those weirdos with green piano felt!
Another major change: the randomizer's chance generation has been altered. In version 1.2.0, changing colour randomization settings would have a knock-on effect for the rest of the randomization, as the whole thing used a single incrementing seed. Now, each randomizer branch has its own sub-seed generated from the master seed, so changing randomizer chance branch weights will not impact generation of other categories. This is to make known-good seed values a little more widely applicable over any streams with chat integration! But err, in the process, all old seeds now generate differently.
Oh, and there's a bunch of small fixes, edits and general quality of life things added. Check the changelog for a full list!
To access the beta branch, right click on Keysight in your Steam library, head into Properties > Betas and select "Beta" from the dropdown. Windows-only, this beta is using an experimental plugin for a few secret sauce back-end things which is not compiled for Mac OS just yet.
Roadmap update
It's been a while since talking about plans, so I'm gonna continue with the absolute WALL of text that is this announcement and give a little update! 1.3.0 is gonna be a pretty juicy update when it's all wrapped up. I want to achieve the following "big goals":
- - Piano simulation improvements to support sostenuto pedal and more accurate note activity ***DONE!***
- - Piano model and animation improvements for fancy close-up angles ***DONE!***
- - Natively supported Twitch chat integration Keysight's greatest ability is its potential as a stream-integrated visualiser. Using websockets, it's already possible to have chat-controlled Keysight, but despite the wonderful guide written by a community member, it remains an intimidating prospect to set up a Socket IO server and all the chat-reading things. I would like to set up a global KeysightBot Twitch account and a Twitch tab inside Keysight where you can dial in chat control and just have it... work. As a fair warning, I am intending to charge a $5/month subscription for this element of Keysight (handled through Steam's recurring subscription stuff). Fear not though, manual websockets are not going anywhere!
- - Particle system rework It's been a VERY long time overdue. Keysight's particles might be the weakest part of the visualisation when compared to its visualiser peers, and I want to flip that around. The details are still a little conceptual at this point, I suspect it's going to be quite a fight with the particle systems in Unreal Engine, but I would like particles to be much more modular on the per-system level than they currently are. Instead of selecting a path type, and then slapping in some additional vector field magic or whatever to make them look cooler (which was my original plan), Basic mode will have preset paths and Advanced mode will give you control over all the acceleration and velocity over time elements. Want particles to have gravity? Just add some negative Y axis acceleration. That sort of thing. This rework will also allow for more particles per second from each system, the current solution for randomising particle pathing limits the effective number of particles per second you can really have, as they start occupying the same space as each other.
There's some bad news though: adding all these new features, I've been running into more and more strange behaviour in relation to data handling, and may need to completely rework how preset data is saved. It shouldn't impact anything on the user side, but it might take a loooong time to fix since every. single. reference. to a variable would need to be rewired.
If you're still, somehow, hungry for news and discussion of Keysight, feel free to ask me about it on-stream or in discord!
Full changelog
--- Changes from 1.2.2c to 1.3.0 preview 1 ---
Fixed ambient brightness text having broken mouse-over text
Fixed "cull horizontal" text not being bound to specified menu style text colour
Fixed "refresh midi files" causing duplicate midi devices to appear in midi device menu in Midi tab
Optimised randomize function to only update necessary scene components, potentially resulting in less chance of frame stutter on extremely fast loop-randomizing
Optimised colour picker sliders to only call their update function when needed if snapping is enabled, should make some menu elements more responsive
Changed piano simulation in the upper register. At Ab6 and above, note activity is calculated using sustain lifetime even if not sustained
Changed sorting method for particle materials. Should be more reliable, layering-wise, when using many types of large particle at once
Changed randomizer chance generation ***all old seeds now give different results, sorry!*** Disabling or editing randomizer branch options will no longer impact other branches
Changed dynamic shadow casting settings. Shadow resolutions are now much higher and smoother by default!
Changed midi print text to show the internal control ID used (normalized such that A0 = 0) rather than the pure midi control ID
Changed piano model! Black keys are more accurately positioned, shape and gaps between keys are true to real pianos, frame shape has been updated (accurate to Roland FP-30 style, for the most part)
Added piano key randomization support for Advanced material type
Added damper visualization! Disabled by default, found under Scene > Visibilities
Added realistic key animations! Complete with bounce on fast note-off events
Added sostenuto pedal simulation to note activity simulations!
Added piano felt colour option
Added lighting channel response options to frame
Added midi event log to Midi menu to assist in debugging any strange midi behaviour, or dial in piano simulation variables
Added option to Graphics for controlling shadow quality (maps to r.Shadow.MaxResolution 256 / 512 / 1024 / 2048 / 4096 / 8192, not recommended to use 8192, 1024 was the previous default)
Added option to Graphics for post-process image sharpening
Removed midi device selector in System tab
