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