--- OVERHAULS --- Overhauled midi playback! Midi files are now opened through a standard file selection dialogue, and display useful information on being loaded. Midi can also be time-remapped very precisely via the first-to-last note-on time (or via traditional playback speed if you prefer) with the idea being you can measure your audio file's first-to-last time to ensure absolutely perfect synchronization if Unreal Engine and your audio generation are measuring time slightly differently (in testing, everything matched up perfectly with my files without any intervention though). The file can also be scrubbed through by clicking and dragging the playback slider (finally!). Midi is set to auto-load the last loaded file by default as well! RENDER. TO. VIDEO! It's here! Under the Midi menu, loading a midi file now reveals a nice big "render to video" button and a bunch of configuration. Notable features: - Downsampling! 1080p video looks much better when originally rendered to 4k and then scaled down, and Keysight allows you to do this internally - Custom framerates! I mean, just use 60, but if you wanted something lower or higher for whatever reason, it's supported - (Potentially) fast rendering! Obviously this depends very much on hardware, preset, render settings etc. But on my own machine, generating a perfect quality 1m 8s 1080p60 video file from 4k60 internal sampling took only around 1m 40s! - Audio file downmixing! Select an audio file to be included in the rendered video and create a "working" video without ever having to touch a video editor! Using an audio file rendered from the same midi used for visualisation has always worked flawlessly for me, but there is also an audio offset for manual sync if needed - Branding image overlays! If desired, set images for intro / watermark / outro with configurable fade in / hold / fade out times to further customise your video without needing to touch a video editor. You can also fade in / out the Keysight visuals themselves, and all this combined with audio file support allows for ultimate laziness when it comes to releasing content! - Automatic time-based preset switching! Want to do the perfect colour or preset switch mid-piece but don't want to mess around with midi channel mapping? Queue up some choreographed preset switches! These behave slightly differently to standard automation-based preset switches in that the static scene elements will switch when the new-preset-notes reach the keyboard in top-down mode, rather than switching instantly Some additional technical information, warnings and caveats: - A sizeable workspace on your saved-directory disk (typically C:/) is required, as Keysight is essentially dumping out frames, rendering them to a video, and then deleting those frames. Please ensure you have enough disk space (an estimate is given) before attempting a render to video operation! - Using the highest source resolutions (especially 2880p and 4320p) is incredibly taxing on GPU memory. If you experience issues, crashes or artifacting consider dropping source resolution - Low / medium / high / ultra / overkill source quality equates to: 80 / 85 / 90 / 95 / 100 quality JPEG compression on the source frames - Low / medium / high / overkill output quality gives CRF and encoding preset as: 30+faster / 20+faster / 10+medium / 5+slower - Particle rendering settings relate to frame capture pacing. Under standard operation, particles are updated on one frame and then the image is saved on the next. In "off" mode: particles are not rendered at all but every frame captures an image, leading to vastly increased render speeds. In "safe" mode: particles update; there is a 2 frame wait; and then an image is taken. Safe mode avoids rare instances where particles glitch out for a single frame... I wish I knew why this was necessary, my guess is something about render targets and GPU compute on particles is colliding in VRAM, and on top of THAT it seems to be hardware dependent, so "safe" mode should be a last resort if you experience problems - I would recommend sticking to ultra + high source/output qualities with 2x your output resolution as the source resolution. Overkill takes significantly longer for *almost* no benefit (hence the name), and definitely none once your video is compressed to hell and back on youtube! But hey, it's there if you want it LIGHT BARS! Finally! I know this one has been requested for a long time, and I'm really happy with what I've managed to come up with in this department. Light bars are templated collections of sub-components, similar to particle systems. A preset can contain any number of "Light bars", and a singular "Light bar" can contain any number of: - Cores: these are simple lines, typically emissive - Plasma: these are wiggly lines with variable thickness, displacement, speed etc - Wisps: these are smoky, wispy planes which fade out with distance. Incredibly flexible - Gradients: these are simple colour planes with a fade-out which have a variety of layering blend modes - Lights: these are placeable rectangle lights with configurable light channels. Very performance expensive due to their size Light bars have their own global colour and location/scale (and can be snapped to the bottom, top, sides or centre of the active area!), and then sub-components can have location/scale offsets and position-based hue-shifting away from the base colour. All of this combines to form an amazingly flexible platform to add lines of interesting animated *stuff* to your presets! Better slider and graph interactions! While hovering over a slider or graph, ctrl+C/ctrl+V will copy/paste the variable. Graphs also have more modifier keys: - Holding left ctrl will cause min/max handle movement to move the entire graph structure around the current bounds - Holding left shift will scale the graph structure towards the bottom left / top right corner (depending on handle used) - As a reminder, holding left alt will disable snapping while alt is held (this is not new, but is useful!) This is under the "overhauls" section because in testing, being able to rapidly copy paste variables around the place is *really* nice for building out a preset quickly! --- SMALL ADDITIONS --- Added Ctrl/Cmd + shift + Z shortcut for redo Added toggle under Midi menu to hide no-device-bound watermark warning if no live midi device is bound, and removed the "Suppress midi device" dropdown entry Added block input toggle to Midi menu to stop live input events from doing anything in Keysight. Honestly not sure who needs this or why, but it exists I guess! Added - and = (or left/right bumper while not in fly-cam mode) as hotkeys to traverse backwards/forwards through your preset list. Thank you for the excellent suggestion, Sparky! Added toggle to System > Interface to enable logging of unhandled midi events, which is now off by default. Illegal midi events (if you somehow get them to occur) are still logged regardless of this setting Added toggle to enable or disable pitch bend simulation in Keysight (found under Advanced Core > Piano simulation, off by default). It seems more common for midi files to contain bogus pitch bends causing undesired visual effects than for actual pitch bend to be used Added warning to pulse picker to inform user when a custom image is not a clean square, or not a cleanly-divided sprite sheet Added 4 new particle templates: Burst, Column, Geyser and Tendrils Added 4 new default presets: Quicksilver, Spectrum, Water and Synthwave Added Discord button to startup wizard ( https://discord.gg/EHuJKU9393 ) --- CHANGES --- Changed the Flare default pulse to be *much* nicer looking! Thanks to ComicSansMamba for pushing me down a CG rabbit hole that resulted in knowing how to build my own really sexy, perfect-looping pseudo-lensflares Changed both Flare and Spikes to sit closer to the piano in the Z axis Changed the P key to play/stop+reset midi file playback (if a midi file is loaded) Reverted void colour back to an older style which relies on a skybox rather than postprocessing. Functionally this means that void colour is not a perfectly uniform colour once more, but particles/pulses/other semi-transparent objects will now show up even if the backdrop is disabled Changed log maximum length to 200 messages up from 50 because why not Changed default bloom shape to 0.8, to give cross-shaped bloom. Looks extra nice on the new Quicksilver preset after all Changed note force on particles to decay twice as past if not in sustain mode and note has been released Changed black key note object height offset to allow negative values, -1.0 pushes black key shapes back into line with white keys Changed particle systems to "kill" particles falling below the keyboard line while in cull-vertical mode. Provides minor performance boost for systems like Sandstorm Changed particle note wind calculation to clamp max force applied. This allows attractive forces to not cause "explosions" if the particles get close to the force origin point Changed Basic Spray and Sandstorm particle templates to be more reliably cool, and not fill the screen quite so much Changed default preset order, and added light bars to everything Changed menu tab spacing to isolate Core tab from Effects-type tabs --- BUG FIXES --- Fixed title of second pulse size by lifetime graph Fixed circumstance where "apply to all" button was incorrectly visible in material picker, and clicking it would set invalid textures across material channels Fixed pasting presets not updating scene elements and menu state until switching away and switching back to the preset in question Fixed a couple unhandled events in the default Chopin midi Fixed note objects sometimes failing to have a shape when object pool was exceeded Fixed pitch bend. Not that anyone noticed it was non-functional since inception because like... who even has a pitch bend wheel. Not me, that's for sure Fixed pulse offset failing when offset-upwards + rotation-over-time was enabled, notably fixing the Bubble pulse template Fixed note objects and overlay not layering correctly under some circumstances when in the Transparent material mode Fixed title of horizontal/vertical acceleration-by-lifetime titles in particle options Fixed tooltip for super-randomizing a particle system being misleading Fixed Basic menu pulse and particle system toggles from displaying invalid templates if a template is deleted while Keysight is open Fixed one-frame flash of unwrapped text in the startup wizard Fixed frame top piece scaling incorrectly with piano key length