================================================================================
  MATILDE TRACKER 1.13
================================================================================

Build Date: 2025-12-10

================================================================================
  OVERVIEW
================================================================================

This version includes further SINC interpolation development and improvements.

================================================================================
  VERSION 1.13 CHANGES (2025-12-10)
================================================================================

1. COMPATIBILITY HANDLING
   - Added loop point validation in GetLoopStart() and GetLoopEnd()
   - Prevents out-of-bounds memory reads when v1.10 wavetable data has
     invalid loop points (LoopEnd > numSamples)
   - SINC interpolation (16+ sample lookahead) now safely handles legacy data
   - Fix applies to all filter modes and sample formats

2. CORRECTED NAMING: "SINC 512" → "SINC 256"
   - Renamed "Offline SINC 512 Bounce" to "Offline SINC 256 Bounce"
   - Reflects correct tap count: 257 taps (128 each side + center)
   - Variable names updated throughout codebase for accuracy
   - No functional changes, naming correction only

3. CORRECTED DIALOG BOX BUILD VERSION

================================================================================
  VERSION 1.12 CHANGES (2025-10-12)
================================================================================

1. ADDED SINC 32 INTERPOLATION MODE
   - New default interpolation mode with 33 taps (16 each side)
   - Excellent quality with better performance than SINC 64
   - Full AVX2 SIMD optimization with FMA instructions
   - Adaptive anti-aliasing and Hann windowing
   - Zero-padding bounds checking for edge cases

2. REORGANIZED FILTER MODES
   - SINC 32 now at position 3 (new default)
   - SINC 64 moved from position 3 to position 4
   - Filter Mode max value increased from 3 to 4
   - Default remains at position 3 (now SINC 32)

3. FIXED SINC INTERPOLATION ISSUES
   - Eliminated click artifacts at note start
   - SINC now works from sample 0 with proper bounds checking

4. ADDED ROOT-NOTE INTERPOLATION BYPASS OPTIMIZATION
   - Direct sample copy at 1:1 playback (no pitch change)
   - Bypasses interpolation when not needed
   - Significant CPU savings for unmodified sample playback
   - Applies to all filter modes and sample formats

5. REVERSED OFFLINE SINC 256 BOUNCE VALUES
   - New values: 1 = Enabled (default), 0 = Disabled
   - Changed default from 0 to 1 (enabled by default)
   - More intuitive: 1 = ON, 0 = OFF

6. FIXED CRITICAL BUGS
   - Added missing m_iPosition initialization in Reset()
   - Fixed memory management issues
   - Improved numerical stability

================================================================================
  FILTER MODES
================================================================================

0 = Nearest Neighbor  - No interpolation (lo-fi)
1 = Linear            - Fast, smooth (standard)
2 = Spline            - Cubic interpolation (higher quality)
3 = SINC 32           - Excellent quality, 33 taps (DEFAULT)
4 = SINC 64           - Maximum realtime quality, 65 taps
5 = SINC 256          - Offline only, 257 taps (automatic with Offline Bounce)

* Filter mode 5 (SINC 256) automatically used when "Offline SINC 256 Bounce"
  is enabled (default)

================================================================================
  SINC INTERPOLATION TECHNICAL DETAILS
================================================================================

SINC 32 (33 taps):
  - 16 taps each side of current position
  - 4 AVX2 iterations per sample (processes 8 taps at a time)
  - Best balance of quality and performance for realtime

SINC 64 (65 taps):
  - 32 taps each side of current position
  - 8 AVX2 iterations per sample
  - Maximum quality for realtime playback

SINC 256 (257 taps):
  - 128 taps each side of current position
  - 32 AVX2 iterations per sample
  - Maximum quality for offline bounce

All SINC modes feature:
  - Hann window function: 0.5 + 0.5 * cos(x / num_taps * π)
  - Adaptive anti-aliasing based on playback speed
  - Division-by-zero protection for numerical stability
  - Zero-padding bounds checking for edge cases
  - AVX2 SIMD optimization with FMA instructions

================================================================================
  OFFLINE RENDERING BEHAVIOR
================================================================================

Offline SINC 256 Bounce = ENABLED (1, default):
  - Any filter mode + Offline bounce = SINC 256 (maximum quality)
  - Realtime playback = Selected filter mode

Offline SINC 256 Bounce = DISABLED (0):
  - Offline bounce = Selected filter mode
  - Realtime playback = Selected filter mode
  - Consistent quality between realtime and offline

Examples:
  Filter=Linear,   Attribute=Enabled  → Realtime: Linear,   Offline: SINC 256
  Filter=Linear,   Attribute=Disabled → Realtime: Linear,   Offline: Linear
  Filter=SINC 32,  Attribute=Enabled  → Realtime: SINC 32,  Offline: SINC 256
  Filter=SINC 32,  Attribute=Disabled → Realtime: SINC 32,  Offline: SINC 32
  Filter=SINC 64,  Attribute=Enabled  → Realtime: SINC 64,  Offline: SINC 256
  Filter=SINC 64,  Attribute=Disabled → Realtime: SINC 64,  Offline: SINC 64

================================================================================
  SYSTEM REQUIREMENTS
================================================================================

- Windows 10 or later
- CPU with AVX2 support (recommended, not required)
  * AVX2 available on Intel Haswell (2013+) and AMD Excavator (2015+)
  * Automatic fallback to scalar code on older CPUs

================================================================================
  COMPATIBILITY
================================================================================

- Fully backward compatible with Matilde Tracker 1.10, 1.11, and 1.12
- No changes to saved song format
- v1.13 includes wavetable loop point validation for safe v1.10 compatibility
- Filter mode 3 behavior changed: now SINC 32 instead of SINC 64
  (projects using mode 3 will use SINC 32, slightly faster with similar quality)
- Projects requiring SINC 64 should update filter mode to 4

================================================================================
  CREDITS
================================================================================

Original Matilde Tracker: Carsten Sørensen / https://www.rift.dk
SINC Algorithm & Optimizations: George Reales

For more information, visit: https://forums.jeskola.net/

================================================================================
