Drum Sound Engine Optimization
Optimized drum sound generation (Hi-Hat, Snare, Cymbal) to eliminate CPU performance spikes that could cause audio dropouts during complex drum patterns
Major Performance Optimizations
512-sample buffer limit removal. Processing only active selected percussion
Eliminated unnecessary buffer chunking in both HiOPL wrapper and DOSBox emulator
Modified GeneratePercussion to only process active percussion instruments
Reduces function call overhead by 66-80% for typical buffer sizes
Reduces percussion mode CPU by ~80% for single drum hits
Expected CPU reduction: 40-50% across all modes
Core Engine Optimizations
Removed artificial 512-sample buffer segmentation causing massive overhead
DOSBox emulator now handles larger buffers efficiently
Smart percussion processing only calculates active drum instruments
System checks regBD register bits to determine which percussion elements are playing
Bass Drum (bit 0x10) - optimized base calculation
Hi-Hat (bit 0x1) - conditional processing
Snare Drum (bit 0x8) - conditional processing
Tom-tom (bit 0x4) - conditional processing
Cymbal (bit 0x2) - conditional processing
Advanced SIMD Vectorization
Implemented JUCE's SIMDRegister for optimal vectorization
Automatically leverages SSE4.1+ on Intel processors
Native NEON optimization for Apple Silicon (M1/M2/M3)
Vectorized scaling and clamping operations
Reduced branching in conversion loops
Automatic fallback for non-SIMD platforms
Optimized memory alignment for SIMD operations
New Bulk Processing APIs
SetEnvelopeParamsBulk() - Process ADSR parameters for multiple channels
SetAttenuationBulk() - Set volume levels across multiple channels
Pre-calculates register values to avoid repeated operations
Validates parameters once per batch operation
Reduces function call overhead and register write overhead
Technical Improvements
Improved intermediate buffer handling with better segmentation logic
Reduced redundant register writes in percussion mode
Optimized shared noise/phase calculations for percussion instruments
Enhanced buffer chunking only when absolutely necessary
Added proper header includes and namespace optimization
Combined conversion and clamping in single optimized loop
Build System Updates
Updated version number to 2.6.0 across all build configurations
Optimized macOS Release build settings for better performance
Updated project configurations for both standard and AAX versions
Enhanced compiler optimization flags for release builds
Updated JuceHeader.h and plugin defines to version 2.6.0
Performance Benefits
Lower CPU Usage: Run more instances of OPL in projects
Better Real-time Performance: Reduced audio dropouts and improved stability
Larger Buffer Support: Better compatibility with high-latency audio interfaces
Improved Percussion: More efficient drum machine and rhythm section performance
Enhanced Stability: Optimized code paths reduce chance of audio glitches
Sound Quality Improvements
New configurable oversampling system with support for 1x, 2x, 4x, 8x, and 16x factors at Documents > discoDSP > OPL > Config.xml
Default oversampling now set to 16x for best sound quality.
Enhanced audio quality with proper MIDI note compensation for oversampling.
Implemented high-quality polyphase IIR filter for superior oversampling results.
Fixed channel configuration issues for improved stereo field accuracy.
Improved oversampling efficiency by processing mono signal internally.
Fixed critical issues with sample rate handling for oversampled audio.
Core Engine Updates
Major framework update for improved performance and stability.
Optimized framework implementation with enhanced preset handling.
Modernized configuration system: migrated from 1x.txt to Config.xml.
Each oversampling octave now correctly shifts MIDI notes for accurate pitch reproduction.
Fixed critical oversampling initialization and processing bugs.
Improved plugin stability with better error handling for oversampling.
Refactored audio engine to properly handle sample rate adjustments for oversampling.
User Interface & Configuration
Optimized initial window size to 580p for better visibility on modern displays.
Export function now automatically includes current preset filename for easier organization.
New Config.xml location: Documents/discoDSP/OPL/Config.xml
Manual XML configuration options available for advanced users to fine-tune oversampling settings.
Improved UI with better color scheme in standalone mode.
Fixed look and feel issues for better readability in the standalone version.
Bug Fixes & Stability
Fixed issues with MIDI note handling during oversampling.
Addressed potential memory issues with large buffer sizes.
Fixed display issues with certain UI elements in dark mode.
Improved stability in offline rendering mode.
Enhanced compatibility with VST3, AU, and standalone hosts.
Framework update for improved stability and performance.
Enhanced preset handling and compatibility.
Improved GUI responsiveness and visual quality.
Bug fixes and performance optimizations.
Significant update with new features and improvements.
Enhanced FM synthesis engine.
Improved preset management system.
Better cross-platform compatibility.
Fixed AAX GUI issues.
Fixed standalone GUI issues.
JUCE framework updated to latest version.
Improved stability and performance.
Framework update with enhanced stability.
AAX ProTools plugin format support.
Universal 2 Binary for Apple Silicon chips.
Improved cross-platform compatibility.
Universal 2 Binary for Apple M1 Silicon chips.
AAX ProTools plugin format support.
Enhanced framework for better performance.
Improved compatibility with modern systems.
Universal 2 Binary for Apple Silicon Mac support.
Available for macOS, Windows and Linux as AAX, AudioUnits, VST, VST3 and Standalone.
Enhanced performance on Apple Silicon processors.
Parameter exposure (AU/iOS AUv3).
Available for iPadOS, iOS, macOS, Windows and Linux as AudioUnits, VST, VST3 and Standalone.
Enhanced iOS and iPadOS compatibility.
Preset name now displays in Load button.
Available for iPadOS, macOS, Windows and Linux as AudioUnits, VST, VST3 and Standalone.
Improved user interface elements.
Fixed AUv3 issue with combo box values.
Available for iPadOS, macOS, Windows and Linux as AudioUnits, VST, VST3 and Standalone.
Enhanced AUv3 plugin stability.
Added 2,000+ categorized presets by Fattening.
Available for iPadOS, macOS, Windows and Linux as AudioUnits, VST, VST3 and Standalone.
Massive preset library expansion.
GUI tweaks.
Larger ADSR faders.
Editable ADSR values.
Available for macOS, Windows and Linux as AudioUnits, VST, VST3 and Standalone.
Improved user interface design.
Scalable GUI.
Fixed file operations issues.
Available for macOS, Windows and Linux as AudioUnits, VST, VST3 and Standalone.
Enhanced user interface scalability.
Initial release of OPL FM synthesizer.
Digital sound synthesis chip developed by Yamaha.
Available for macOS, Windows and Linux as AudioUnits, VST, VST3 and Standalone.
Classic FM synthesis capabilities.
Multiple waveform support.
Built-in preset management.
Cross-platform compatibility.