Skip to content

Latest commit

 

History

History
135 lines (114 loc) · 4.65 KB

File metadata and controls

135 lines (114 loc) · 4.65 KB

Changelog

All notable changes to this project will be documented in this file.

[4.1.4] - 2025-10-10

🎉 Major Upgrade: libprojectM 3.1.12 → 4.1.4

Added

  • OpenGL-based text rendering using FreeType for on-screen display
    • Help overlay (press H) showing all keyboard controls
    • Preset name display with auto-hide after 3 seconds
    • Status messages for lock/unlock and other actions
    • Lock indicator in top-right corner
    • Text rendering with drop shadows for better visibility
  • New keyboard controls:
    • N - Toggle auto-show preset names (perfect for screen recording)
    • H - Toggle help overlay
    • M - Manually toggle preset name display
  • Screen recording mode - Disable preset name popups for clean recordings
  • Improved audio device detection - Now searches for both BlackHole and Multi-Output devices
  • TextRenderer class - Custom OpenGL text rendering implementation
    • Supports TrueType fonts via FreeType
    • Hardware-accelerated rendering
    • Proper alpha blending

Changed

  • Upgraded to libprojectM 4.1.4 (January 2025 release)
    • Complete expression parser rewrite (much faster)
    • Vastly improved Milkdrop compatibility
    • Better audio processing matching Milkdrop exactly
    • Support for new waveform modes (BeatDrop, Milkdrop2077)
    • Smooth preset transitions
  • Migrated from C++ API to C API
    • Future-proof with ABI stability
    • No recompilation needed for future 4.x updates
    • Simply swap library files to upgrade
  • Replaced SDL_Renderer with pure OpenGL rendering
    • Eliminated rendering conflicts between SDL and OpenGL
    • Better performance on Apple Silicon (M1)
    • Proper transparency and layering
  • Updated build system:
    • Added FreeType dependency
    • Added GLM (OpenGL Mathematics) for matrix operations
    • Removed SDL_ttf dependency
    • Updated CMakeLists.txt for projectM 4.x

Fixed

  • Black screen issue - Removed conflicting SDL_Renderer that was blocking OpenGL output
  • Preset path - Updated to use correct Cellar path for .milk preset files
  • Audio capture - Now properly uses BlackHole as input device
  • M1 compatibility - Works natively on Apple Silicon with OpenGL 4.1 support
  • Font loading - Falls back from Monaco.dfont to Menlo.ttc (better compatibility)

Technical Details

  • Platform: Mac Mini M1 (Apple Silicon)
  • OpenGL: Core Profile 3.3 (via Metal compatibility layer)
  • Audio: BlackHole 16ch + Multi-Output Device support
  • Presets: 4,199+ Milkdrop presets loaded from Homebrew installation
  • Build: CMake 3.10+, C++17

Performance

  • Native M1 support with ARM64 architecture
  • 60 FPS target with VSync
  • Hardware-accelerated OpenGL rendering
  • Efficient text rendering with texture caching

Files Modified

  • src/main.cpp - Complete rewrite for C API and OpenGL text rendering
  • src/AudioCapture.cpp - Improved device detection
  • CMakeLists.txt - Updated dependencies and build configuration
  • README.md - Updated documentation for 4.x

Files Added

  • include/TextRenderer.h - OpenGL text rendering header
  • src/TextRenderer.cpp - OpenGL text rendering implementation
  • src/main_3x_backup.cpp - Backup of original 3.x version
  • docs/UPGRADE_TO_4X.md - Upgrade documentation
  • CHANGELOG.md - This file

Dependencies

  • libprojectM 4.1.4 (built from source, installed to /usr/local)
  • SDL2 2.x
  • FreeType 2.x
  • GLM 1.0.1
  • BlackHole 16ch (audio loopback)

Known Issues

  • OpenGL deprecation warnings on macOS (cosmetic only, functionality unaffected)
  • Monaco.dfont font loading fails (automatically falls back to Menlo.ttc)

Migration Notes

  • The C++ API from 3.x is no longer used
  • All projectM calls now use the C API (projectm_* functions)
  • Playlist management uses separate playlist library
  • Text overlays removed from core library (now handled by application)

[3.1.12] - 2024-10-09 (Previous Version)

Initial Implementation

  • Basic projectM integration with C++ API
  • SDL2 window and OpenGL context
  • Audio capture via BlackHole
  • Preset navigation (SPACE, P, R keys)
  • Fullscreen support (F key)
  • Lock/unlock presets (L key)
  • Console-based preset name display

Future Roadmap

Potential Enhancements

  • Metal renderer for native Apple Silicon performance
  • Preset favorites/bookmarks system
  • Audio spectrum analyzer overlay
  • Beat detection visualization
  • Custom color schemes
  • Preset search/filter
  • MIDI controller support
  • Multi-monitor support
  • Recording/screenshot functionality
  • Preset editor integration

Legend:

  • 🎉 Major release
  • ✨ New feature
  • 🐛 Bug fix
  • 🔧 Maintenance
  • 📝 Documentation
  • ⚡ Performance improvement