--- OVERHAULS --- Native preset import/export! Presets can now be exported to a single .kspreset file via an icon on the preset tab. Exporting packs all necessary extra resources, the preset itself, and author + description; which allows easy sharing of a single file if you wish to post your preset somewhere! Importing is equally straightforward, with a new "IMPORT" button in the top left to select a .kspreset. I am intending the Discord to act as the central hub for preset sharing and discussion, make sure to join via the little button at the bottom of the main menu tabs! Overhauled (in a small way) channel-based preset mapping. Now, this system is enabled by default with all 16 channels already set up. Each channel can map to either "use selected preset", "ignore", or "use specified preset" modes. The "ignore" mode will completely drop events using this channel, useful for visualising just specific channels from a midi file containing, say, a lot of instruments --- SMALL ADDITIONS --- Added a new particle template: Streaks! This somewhat emulates the look of spline-based effects as seen in other visualisers Added another new particle template: Drifting specks! This was originally built by Shyked, but I loved it so much I asked if I could include it as a default template. This template provides "ambient" flickering specks that drift around slowly, and build up nicely with more note activity Added some useful links to the main menu list Added text explaining the mysterious text input box under the pitch bend semi-tone displacement slider Added message to screen after closing setup wizard to inform new users that Escape opens the menu Added a "flat midi velocity" mode to Core > Simulation. While in this mode, both note-on and note-off velocity can be explicitly specified and all notes will use these velocities instead of their original velocities Added a global brightness modifier for scene lights, allowing easy raising and lowering of brightness in a scene with lots of lights Added reflection colour multiplication modes: Emissive/Static/None. This allows a reflection image to be selectively multiplied by either the object's emissive colour (colour settings or texture), a static defined colour or just display as-is. Incredibly niche usage, but removes a limitation if trying to achieve very specific reflection implementation Added a flag to particle systems to flip all Y axis effects, including location. This allows easy snapping of an existing system to the top of the active area; especially useful when combined with auto-release and time offsets to match when note objects interact with the top of the active area Added tab key as an additional way of toggling the menu Added lighting channel control to note objects Added lighting channel control to backdrop and octave lines Added lighting channel control to keypresses. Notably: keypresses have an engine-level limitation of only allowing lighting from one scene light due to the semi-transparent material domain they use. This can cause colour flickering in scenes with non-emissive keypresses and multiple scene lights. Light channel control potentially allows finer tuning of how keypresses and scene lights interact to avoid this bug Added and improved a TON of extra resources! These are found under [Keysight install]/Keysight/Extra resources/Special presets/ which should open by default when clicking "Import" for the first time. These presets are intended to give you some inspiration as to what is possible, although by no means are they all the best presets out there. Go join the Discord to see those! --- CHANGES --- Changed setup wizard final page layout to have guide/Discord buttons immediately below the text saying that they exist Changed main menu close menu section spacing to give slightly more room to the main tabs Changed and improved alignment image dropdown and selection in manual camera mode. Now has aspect ratio warning and a useful add-image button to bring it in line with other image pickers Changed spacing and layout of icons on preset tabs, things are now actually centered properly! Changed layout of icons and buttons on preset bar in top left of menu Changed tooltip on "stencil" text inside pulse settings > Appearance to be more descriptive of how sprite sheets work Changed (and fixed) the way camera roll was applied. It was in the wrong place in the chain, resulting in unintuitive behaviour if local roll was not set to the default of 90 while in Manual camera mode Changed keypresses to use normal, non-semi-transparent materials if they are not set to fade in and out over time. This fixes the scene-light-based colour flicker bug if present, and allows shadows to display on top of keypresses Changed "String" particle template to not show up in the randomizer Changed smooth piano key animation to handle repeat note-on events more cleanly. Keys no longer snap back to their initial position when animating downwards if they were already partially depressed --- BUG FIXES --- Fixed midi culling being completely absent, whoops! Fixed pitch bending being completely broken, also whoops! Fixed demo mode not spawning non-note-object effects in top-down mode Fixed material picker not updating mask display when using the new + button to add a custom texture Fixed custom frame and output directory selection resetting on each Keysight launch Fixed keypress advanced materials not correctly displaying reflections Fixed pre-copy object pasting causing unwanted information errors (like the message that says "if you see this, tell Eggly he's a bum") Fixed rare edge case where loading with a system settings file pointing to an invalid preset index would cause a broken preset until a preset switch is manually called Fixed soft pedal bloom/exposure modification not being reflected in renders Fixed particles rotating to face camera when camera is in Manual mode and at an angle Fixed midi playback looping after a render-to-video action. Render-to-video now overrides and disables the playback looping option so as to avoid causing unnecessary strain if you start a render and then leave the PC for a while Fixed pulses using incorrect height for culling if Automatic and Manual camera heights do not match Fixed a tooltip typo. Yes, I am mentioning this in a changelog. Fixed key animations going down and then up when hard panic button is pressed Fixed damper animations not instantly snapping to the reset position when hard panic button is pressed Fixed pulse visibility being incorrect if toggling state and then entering the system and changing a variable Fixed panic button causing midi playback to go backwards in time if midi was playing during panic button press Fixed midi playback not resetting cleanly if loading a midi file while a midi file is playing back Fixed pasting light bar components before copying any giving blank-name components