Releases: EmK530/SharpMIDI
v4.0.0 Beta 5.1
Attempts to fix a bug with tempo events being delayed by other tempo events for midis where they are split up between multiple tracks.
Thanks Piano Arts 2007 for reporting this.
v4.0.0 Beta 5
Found some major memory optimizations and more while talking to ChatGPT, put them to good use.
SynthEvent lists are now trimmed when completely filled, leading to a random large memory reduction.
SynthEvent values now use a custom Int24 struct, leading to a reduction of 12.5% memory usage.
Buffer size is now customizable.
Changed playback SynthEvent iterating, does not seem to impact performance.
In-app shows a drop from 10.4GB usage to 6.4GB when loading TN3 but this doesn't match task manager.
v4.0.0 Beta 4
Enabled optimize flag and changed playback code, performance is no longer worse than the previous major version
Velocity threshold for loading is now controllable
Throttle on lag is now toggleable
Fixed broken "FPS" counter
FPS renamed to UPS to not confuse users
UPS limit is now controllable
Trimmed zip is experimental, do not report issues using it!
v4.0.0 Beta 3
New optional FPS limiter to lower CPU usage during playback.
New speed slider.
New translation code, SharpMIDI now has a Swedish language.
Console removed.
Fixed being unable to unload synth after stopping MIDI playback.
Fixed crash when cancelling file selection when opening MIDI.
Fixed lack of window VSync for some users causing high CPU.
Removed some bad code in the MIDI playback loop.
Trimmed zip is experimental, do not report issues using it!
v4.0.0 Beta 2
Performance improvements and optimized build is published in beta 2
Slight bug fixes
Disabled BPM console print to prevent lag from huge chunks of tempo events
Maybe fixed the randomly incorrect MIDI stats
Other changes I did not remember
Major features still missing for now
Trimmed zip is experimental and may crash!
v4.0.0 Beta 1
Prerelease of the upcoming v4.0.0
(This is a debug build and therefore loses performance)
Download net6.0-windows.zip to get only the software files, Packages.zip if you need the DLLs or the SharpMIDI one if you want both zip files combined.
Changes so far:
Upgraded to ImGui
Remade code to be cleaner
Fixed error when loading .mid format with a track above ~2 billion bytes
Removed conversion from 0 velocity note on to note off
Improved threshold behavior
Missing features:
Archive loading
MIDI unloading
Threshold picking (defaulted to 10)
Track limit
v3.1.3 Tiny Update
v3.1.2
If you want the RTR DLLs that I keep getting in my builds, download from v3.1.1
New MIDI unloading feature.
Changed FPS display from frame time to real FPS, also made clear that the FPS is estimate.
Fixed MIDI clock not resetting causing huge skips when starting playback with throttling disabled.
Fixed MIDI clock not throttling properly and skipping back to the real time position causing missed parts of MIDIs.
Visualized track indexing process on the "Loaded tracks" counter.
Fixed "Select a synth first!" showing up when it's not meant to.
Expanded text width of played events.
Played events counter now resets when you start playback again.
Played events counter now shows total events alongside it.
Removed unused duration text.
Added some fun extra stats to playback:
Tick, shows what tick the MIDI clock is on.
TPS (Ticks per second), directly correlated with PPQ and BPM, shows calculation of how many ticks pass every second.
BPM (Beats per minute), real obvious.
v3.1.1
Some boredom code editing lead to doubled playback performance
Download the RTR (ReadyToRun) builds if you do not have the .NET 6.0 SDK
RTR is also recommended if you don't want the XZ Utils console to pop up
If there are problems with RTR you can try downloading the DLLs for your specific OS arch that keep coming with my Single File builds for some reason...
v3.1.0
Possibly the final major release for SharpMIDI either indefinitely or for a long time.
New MIDI clock created allowing for complete removal of FPS limiter!
Removed track size ignore due to it breaking parsing.
New option to disable lag throttling.