(This changelog contains information from all minor revisions since 1.6.1) --- OVERHAULS --- Added an expansion to particles under the "Wind" tab: point-based force! This allows particles to globally be attracted/repulsed by a single point in space and is enormously customisable. "Black hole" has been a popular request, and these new options allow it to happen. But they also allow for all sorts of weird behaviour; I look forward to seeing what people create with it! Removed the limit on colour slots! Previously, Keysight always assumed you had a maximum of 12 colours. The new maximum is 88 (I'll give you three guesses why). Having a lot of slots is unwieldy, but 88 slots in Series mode allows specific notes to have a specific colour (which has long been requested). When using 12 slots or fewer, Keysight will still store the unused colours. Beyond 12 slots, lowering the number of slots WILL remove the colour data, so be cautious! However, adding more slots beyond 12 will make those slots appear with the last-used colour Added a new colour mode as well! "Channel" should be very straightforward: it simply uses the channel to pick a static colour. This channel can come from either midi channels or midi tracks (to use tracks, ensure "use midi track as channel" is enabled in System > Interface > Midi and rendering) Added a new particle render mode to "Quality" settings inside render profiles. The "CPU" render mode will simulate particles on the CPU rather than the GPU, which removes the need to stall the render process while particles simulate cleanly. In testing, CPU performs about the same as FAST, but performs more than 2x faster than SAFE, while retaining the benefits of guaranteed-perfect particles from SAFE. Beware though: do not use CPU on very high-count particle systems (all native templates are fine, but 100k-per-second custom particles will NOT work in CPU mode and may crash Keysight) --- SMALL ADDITIONS --- Added warning to particle Shape tab to warn about non-square resolution images to bring parity to Pulse menu equivalent Added "release-notes" and "panic-button" action option to websocket triggerable actions Added stencil preview to Pulse menu, including showing sprite sheet animations (uses 0.5 velocity, if dynamic framerate is enabled) Added "display message" event to send current preset information to the inbound websocket on first connection (this is basically just something for my own stream, don't worry about it) Added option to disable mirroring of particle systems, allowing them to travel in a specific direction horizontally Added warning to flip-vertically option in particles' Location tab to hint that you probably want to use time-offsets and auto-release to make this effect work nicely --- CHANGES --- Changed render-to-video particle-based "frame gearing" (slowing down of render to ensure particles are correctly rendered) to always take effect specificially on macOS. This is intended to help people running on Apple Silicon where having no particles can cause some code to execute improperly during render-to-video operations; most notably causing jiggling notes Changed particle shape preview to be twice as large Changed wording on high midi event density warning on midi file import Changed render to video output filename formatting to clamp midi file name to 16 characters, removed seconds time from name, and added YYYY-MM-DD after name + render profile Changed full template editor mode in Advanced Particles to be saved to the system settings, so Keysight remembers the status and doesn't need to be re-toggled every time Changed layout of particle ambient wind activity sliders Changed name of "Key position" colour mode to "Gradient", and "Notes per second" to "Notes /sec." Changed "Random" colour mode warning to be red and centered Changed colour slot labels to be more useful in "Gradient" (previously key position) mode. Slots now show the key that the slot will be most visible on (note that the "real" position of a colour slot if using >2 slots for a gradient can be "in between" keys, and therefore the slot label is only approximate) Changed testing note state channel to use channel 0 rather than, for some reason, channel 10 Optimised Pulses to use an easier-to-render material if not using world-masking or sprites Optimised Pulse sprite frame calculation to be more efficient and robust Removed warning for when midi file is on different drive to save data, as this has never actually caused an issue (it seems) --- BUG FIXES --- Fixed critical crash relating to attempting to use a Pulse stencil with a height greater than its width Fixed Fire default preset keypress material not having the intended reflection properties (now looks a lot nicer!) Fixed around 50% of particle templates mysteriously having ambient wind enabled. I have no idea how this turned itself on for just *some* of the particle templates, but it's disabled again now Fixed macOS distribution containing an included backup of a preset which is not supported on macOS Fixed pulses and particles showing a line of pixels at the border if the opposite border had pixels adjacent to it (clamped sampling to avoid resample artifacts at edges) Fixed particle rotation rate randomness applying per-frame to all particles, resulting in jittery notes without any functional rotation rate randomness Fixed particle rotational alignment occasionally doing silly things like spinning the image 360 degrees when velocity direction changed by 180 degrees Fixed regression where midi hotkey action menu simply did not respond when clicking "add" Fixed overlay Z-height not updating when moving slider (required a full preset update). Now responds to live input Fixed splash/watermark/outro images in render-to-video branding not updating to new selection on render until another setting is edited Fixed .kspreset exporting to be much more robust in the face of rogue "." characters in the export path