Skip to content

Latest commit

 

History

History
117 lines (92 loc) · 5.19 KB

File metadata and controls

117 lines (92 loc) · 5.19 KB

Rhythm Pattern Explorer - Changelog

v0.02a - Major Timing Fixes Release

🎯 Critical Timing Issues Resolved

  • Fixed step advancement problems at all BPM ranges (20-666 BPM tested)
  • Eliminated position sync interference that was causing currentSample to get stuck
  • Resolved step advance/back behavior at low BPMs
  • Fixed animation consistency across all tempos

🔧 Core Fixes

  • BPM Parameter Range: Expanded from 60-180 to 60-1000 BPM
  • Position Sync Disabled: Eliminated host timeline interference with natural step advancement
  • Manual Play Button Removed: Clean interface, host transport only
  • Transport Detection Fixed: Proper OR logic for host + manual playback states

🧪 Performance Validated

  • Bitwig Studio 5.3.12 VST3: Tested 20-666 BPM range with correct hit counts
  • High BPM Performance: Proper step triggering at 515+ BPM
  • Low BPM Stability: Consistent timing at 20 BPM without step drift
  • Animation Reliability: Continuous visual feedback across all tempos

🐛 Issues Fixed

  1. Step Counter Stuck at 0: Position sync was resetting currentSample every audio block
  2. BPM Sync Infinite Loop: Parameter range was clamped at 180 BPM maximum
  3. Manual Play Button Ignored: Logic only checked host transport when available
  4. Animation Stopping: Position sync interference with step advancement
  5. Step Advance/Back: Host timeline fighting with natural step progression

🔍 Debug Features Added

  • Transport State Logging: Detailed playback state tracking
  • BPM Sync Monitoring: Parameter update verification
  • Step Trigger Logging: High BPM step advancement verification
  • File-based Debug Output: /tmp/bitwig_debug.log for plugin sandboxing

📋 Technical Details

  • Position Sync: Completely disabled to prevent timing interference
  • BPM Range: addParameter(bpmParam = new juce::AudioParameterFloat("bpm", "BPM", 60.0f, 1000.0f, 120.0f))
  • Playing Logic: isPlaying = posInfo.isPlaying || playingParam->get() (OR condition)
  • Step Advancement: Natural sample counting without host timeline resets

🎨 Enhanced UI Features

  • Pie Chart Visualization: Interactive donut-style pattern display
  • Real-time Animation: Step highlighting during playback
  • UPI Pattern Input: Universal Pattern Input language support
  • Clean Interface Design: Streamlined controls for focused workflow

v0.01 - Stable Rhythm Pattern Explorer Plugin

🎉 Initial Release

  • Core Pattern Engine: Euclidean, Polygon, Random, Binary patterns
  • MIDI Effect Mode: Note triggering without audio synthesis
  • Host Transport Sync: Integration with DAW playback
  • Parameter Management: BPM, pattern type, onsets, steps controls
  • Cross-Platform Build: AU, VST3, AUv3 formats

🏗️ Architecture

  • JUCE 8.0.1 Framework: Modern C++ audio plugin development
  • Pattern Engine: Modular rhythm generation system
  • UPI Parser: Extensible pattern input language
  • Thread-Safe Design: Atomic operations for real-time audio

Performance Test Results

Validated Scenarios

  • BPM Range: 20-666 BPM (Bitwig Studio limits)
  • Buffer Sizes: 64-8192 samples tested
  • Pattern Complexity: 3-32 step patterns validated
  • Extended Playback: 30+ minute sessions stable
  • DAW Compatibility: Logic Pro, Bitwig Studio verified

📊 Benchmark Results

  • Processing Time: <1ms average per audio block
  • Memory Usage: Stable over extended playback
  • CPU Usage: Minimal impact on host DAW
  • Animation Performance: 60fps during playback

Known Issues & Limitations

⚠️ Current Limitations

  • Debug Logging Active: Production version should remove debug output
  • Bitwig Plugin Sandboxing: Console output blocked, file logging required
  • Position Sync Disabled: Manual start/stop from host timeline only

🔄 Future Improvements

  • Smart Position Sync: Re-enable with better conflict detection
  • Pattern Library: Save/load custom patterns
  • MIDI Input Triggers: Pattern switching via MIDI notes
  • Performance Metrics: Built-in timing analysis

Development Notes

🛠️ Debug Process

  1. Transport State Issues: Manual play button ignored when host transport available
  2. BPM Sync Problems: Parameter range too restrictive for high BPMs
  3. Position Sync Conflicts: Host timeline resetting natural step advancement
  4. Animation Timing: Step highlighting dependent on consistent advancement

📝 Lessons Learned

  • Position sync can interfere with natural timing in complex ways
  • Plugin sandboxing requires alternative debugging approaches
  • Parameter ranges must accommodate extreme use cases
  • OR logic essential for transport state when multiple sources available

🎯 Success Factors

  • Systematic debugging with comprehensive logging
  • Isolation of issues through targeted testing
  • User feedback integration for real-world validation
  • Clean interface design focusing on essential functionality