Releases: Zephkek/MIDIPlusPlus
MIDI++ v1.0.4.R3
Changelog:
New:
- Added opacity slider.
- Speed now can go as low as x0.25
Performance:
- Fixed the midi2key microlag issue when playing chords.
- Few performance improvements in the autoplayer (2% aprox)
General fixes:
- Fixed early note cut off in midi2key.
- Fixed GDI+ artifacting under CPU load.
- Improved the overall handling of keypresses.
Other Changes
- Various stability fixes
- Minor parser fixes
- Minor improvements to resource cleanup in midi2key
This will be the last update in 1.0.4, thanks for all the feedback.
MIDI++ v1.0.4.R4 Final Release
MIDI++ v1.0.4.R4 Changelog:
Added:
- Shuffle Play (with previous and next buttons)
- Sub folders
- Add song to favorite feature (right click on the hovered song to add to favorites)
Performance:
- MIDI2Key and MIDIConnect improvements.
- Autoplayer improvements.
Fixes
- Fixed MIDI++ crash when Roblox window hangs.
- Fixed few small bugs.
Other Changes
- Various stability fixes
- More bug fixes
- No more support for windows 7 & 8
This will be the last update to MIDI++ for now until im free from university thanks for the feedback everyone.
MIDI++ v1.0.4.R2
Fixes:
- Fixed note play issues
- Fixed bugs with skip and rewind
- Various stability improvements
- Fixed bugs with Velocity
MIDI++ v1.0.3.R2 TSC
Release Notes: MIDI++ v1.0.3.R2
This release focuses on achieving better playback precision and performance, introducing key enhancements to MIDI++ to meet standard playback requirements.
Key Comparisons (Dependent on System Load):
Metric | Expected Standard | MIDI++ v1.0.3 Results | Improvement |
---|---|---|---|
Timer Accuracy | ±1 ms | ±0.135 ms | ~87% improvement |
Timer Drift (10 sec) | ±1 ms | 0.529 ms | ~50% reduction |
Timer Jitter | ≤0.5 ms | 0.060 ms | ~88% improvement |
Latency | ≤1 ms | 0.001 ms | ~99.9% reduction |
Extended Timer Drift | ±10 ms | 4.58 ms | ~54% reduction |
Key Enhancements
-
TSC-Based High-Precision Timer:
- Introduced an invariant Time Stamp Counter (TSC)-based timer for high precision and reliability under fluctuating system conditions.
- Improved high-frequency callback handling with a reported error margin of 0.031%.
-
Dynamic Batching with Multithreaded Thread Pooling:
- Enhanced playback architecture with adaptive batching, ensuring smooth handling of high-density note sequences.
- Thread pooling ensures optimal CPU utilization, minimizing thread contention during real-time playback.
-
Performance Scaling for Complex Passages:
- Achieves consistent playback for demanding scores with timing errors below 0.1%.
Bug Fixes
- Fixed overshoot errors caused by system power profile changes.
- Resolved synchronization issues during skip and rewind operations.
- Corrected a race condition where shifted keys were erroneously treated as normal keys.
MIDI++ v1.03 TSC (BETA)
MIDI++ v1.0.3 TSC Release Notes
Hello everyone,
It’s been quite a while since the last update, and I want to thank you all for your patience. After weeks of work, I’m pleased to introduce MIDI++ v1.0.3 TSC. This release primarily focuses on fixing core issues that were impacting playback quality and stability while also implementing a host of improvements to the playback system, configuration handling, and overall accuracy.
Fixes and Enhancements
1. Fixes to Core Bugs
-
Note Skipping: A significant issue where specific MIDI files would skip notes has now been resolved. This problem, which many users reported via GitHub, was a major priority. Your bug reports made this fix possible, so thank you!
-
Skip and Rewind Functions: Improvements have been made to ensure that skipping and rewinding within a MIDI file are more reliable and responsive. These features now work seamlessly, addressing the irregularities some users experienced in previous versions.
2. Transition to the TSC-Based Timer
This update introduces a completely overhauled playback system built around a Timestamp Counter (TSC)-based timer. This replaces the older concurrency-based system. Here’s why this has been done:
-
Improved Timing Accuracy: The TSC timer provides more precise playback timing, minimizing drift or inconsistencies during MIDI playback.
-
Hardware-Independent Performance: This approach reduces variability caused by different hardware setups, ensuring a smoother experience across a wider range of devices.
-
Extensive Testing: The TSC timer has undergone weeks of rigorous testing to validate its performance under various conditions, including handling complex MIDI files.
While this change results in improved playback accuracy, there might be a slight performance trade-off in files with dense note spam. However, this compromise is intentional to ensure correctness.
3. Improved Transpose Engine
The transpose engine has been rebuilt from the ground up to provide wider results. It now considers additional variables when analyzing MIDI files, including genre and tonal structure.
- Better Genre Detection: The engine can now identify piano genres more effectively, allowing for tailored transpositions that maintain the original feel of the piece.
- Enhanced Playability: Adjustments ensure transpositions are more practical for playing on physical instruments, especially when dealing with 61-key limitations.
4. Configuration Parser Rewritten
The configuration parser has been entirely rewritten for greater stability and robustness.
- Reduced Errors: Configurations load more reliably, even in cases of unexpected input or file corruption.
- User-Friendly Defaults: If an issue occurs with the configuration file, the system will load sensible defaults and notify the user, avoiding crashes or unexpected behavior.
5. General Codebase Improvements
The entire codebase has been significantly cleaned up and refactored. This results in a more stable and maintainable application while addressing edge cases that could cause playback inconsistencies.
Known Trade-Offs
- Performance Impact in Note-Dense Files: To prioritize playback accuracy, particularly for files with rapid or overlapping notes, some performance optimizations were intentionally scaled back. This ensures that the timing and note events remain as precise as possible, which is essential for accurate MIDI playback.
Looking Ahead
This version marks a significant step forward, but it’s just the beginning. MIDI++ is still in its beta phase, and the next major revision will introduce a complete transition from the current console-based interface to a fully featured graphical user interface (GUI). This change will make the application much more user-friendly and accessible while providing additional customization and control options.
I am looking forward to receiving your feedback on this update. Your insights will be invaluable as I work on future iterations, ensuring MIDI++ meets the needs of its users.
Important Notes for This Release
-
SmartScreen Warnings: If you’re using Microsoft Defender, you may encounter SmartScreen warnings when downloading this release. This is due to Microsoft’s standard review process for new executables and should resolve within 48 hours of release.
-
Beta Phase Reminder: This version is part of the ongoing beta phase. While extensive testing has been conducted, there may still be edge cases or unexpected behaviors. Your feedback is greatly appreciated in identifying and resolving these issues.
Thank you again for your patience and support. This update would not have been possible without the feedback, bug reports, and suggestions provided by the community. I hope you enjoy the improvements, and I’m excited to hear your thoughts.
Best regards,
Zeph
Release V1.0.2
MIDI++ V1.0.2
Hey everyone,
I'm excited to announce a major update for MIDI++ V1.0.2! This release brings a range of new features, enhancements, and bug fixes. Check out the full list of updates below:
New Features and Improvements
-
Drum Filtering
Prevent drums from interfering with piano notes to ensure a cleaner and more accurate piano performance. This option can be configured from the settings to match your preferences. -
Performance Improvements
Fixed several bugs related to threading, including issues with thread hanging when loading new songs, resulting in improved stability and smoother performance. -
Auto Transposition for 61-Key Pianos
Automatically transpose notes that are out of range, providing full support for all MIDI files on 61-key keyboards. This feature ensures no notes are missed during playback, allowing you to enjoy complete MIDI compatibility. -
Auto Velocity for Supported Games
Enable dynamic velocity control using Alt + keys for games that support it, allowing for more expressive performances with good dynamics. Velocity curves can be adjusted from the config to suit your style:LinearCoarse
: Ideal for general use with uniform steps and predictable dynamics.LinearFine
: Provides finer control over velocity, perfect for subtle dynamics.ImprovedLowVolume
: Better control at lower volumes, suitable for soft passages.Logarithmic
: Aligns with human perception of volume changes, offering detailed control at lower velocities.Exponential
: Offers more control over higher velocities, great for dramatic dynamic contrasts.
-
Enhanced Branch Prediction for AMD CPUs
Optimized critical performance sections to better utilize AMD CPUs, improving overall efficiency. -
AVX2 Improvements
Substantial optimizations have been made to AVX2-based operations following weeks of testing and profiling, resulting in better performance and CPU efficiency. -
Redesigned Control Console Interface
The control console interface has been redesigned for a cleaner, more intuitive experience, making it easier to navigate and adjust settings. -
Parser Bug Fixes
Resolved various issues with the MIDI parser to enhance accuracy and reliability in note playback. -
Configurable Handling of Stacked Notes
New methods for managing stacked notes with configurable options:- LIFO (Last In, First Out) and FIFO (First In, First Out) can be selected from the config, providing flexible ways to manage note playback.
Bug Reports
If you encounter any bugs or issues, please report them in the Issues section. Your feedback is crucial to help maintain the best experience for everyone!
Thank you all for your continued support and enjoy the new features!
- Zeph (Developer)
Release V1.0.1
We're excited to bring you the latest update to MIDI++! This version focuses on performance improvements, and overall stability enhancements.
New Features
- Restart Song: Easily replay your current MIDI from the beginning.
- Enhanced Skip and Rewind: Improved navigation through your MIDI files.
Improvements
- Performance Boost: Faster and smoother playback, especially for complex MIDI files
- MIDI Processing: More accurate timing and better sustain pedal handling.
- Configuration: Improved settings management and robust default options.
Bug Fixes
- Various stability improvements to reduce crashes.
- Enhanced error handling for a smoother user experience.
Technical Enhancements
- Optimized memory usage for better performance.
- Improved system compatibility checks.
- General code refactoring.
Additional Notes
- This version requires the latest Visual C++ Redistributable.
- MIDI++ now utilizes AVX2 instructions for improved performance on compatible systems.
Release v1.0.0
[This is a beta version and still has some issues, the main production ready version is next update]
-Added Legit Mode
-Added re-mappable keys for game specific features and piano mappings
-Performance optimizations on AMD hardware
-PGO Optimizations
-Fixed some bugs with playback speed
-Timer improvements (thanks Anger)
Version 1.0.0