All notable changes to this project will be documented in this file.
- 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 overlayM- 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
- 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
- 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)
- 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
- Native M1 support with ARM64 architecture
- 60 FPS target with VSync
- Hardware-accelerated OpenGL rendering
- Efficient text rendering with texture caching
src/main.cpp- Complete rewrite for C API and OpenGL text renderingsrc/AudioCapture.cpp- Improved device detectionCMakeLists.txt- Updated dependencies and build configurationREADME.md- Updated documentation for 4.x
include/TextRenderer.h- OpenGL text rendering headersrc/TextRenderer.cpp- OpenGL text rendering implementationsrc/main_3x_backup.cpp- Backup of original 3.x versiondocs/UPGRADE_TO_4X.md- Upgrade documentationCHANGELOG.md- This file
- 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)
- OpenGL deprecation warnings on macOS (cosmetic only, functionality unaffected)
- Monaco.dfont font loading fails (automatically falls back to Menlo.ttc)
- 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)
- 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
- 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