e_midi 0.1.2

An interactive/CLI/library MIDI player with advanced playback options, looping, and scan modes.
Documentation
25/06/19|bdb0e7d|0.1.2
## [0.1.0] - 2025-06-19

### Added
- **Comprehensive Scan Modes**: Sequential, random start, and progressive scanning
- **Advanced Looping**: Both playlist and individual song looping with user control
- **Interactive Settings Menu**: Configure loop and delay settings at startup
- **Progress Reporting**: Real-time progress display with timestamps and percentages
- **Configurable Delays**: Set custom delays between songs (including zero delay)
- **Enhanced Track Selection**: Improved default handling for track and BPM selection
- **Duration Calculation**: Accurate song duration calculation and formatting
- **User Control**: Press 'q' + Enter to quit loops during playback

### Fixed
- **Timing Calculation Bug**: Fixed ms_per_tick truncation for high ticks_per_q values
- **Track Mapping**: Corrected track selection and mapping logic
- **Default Handling**: Proper defaults for empty track and BPM input

### Changed
- **Menu System**: Restructured main menu with clearer options
- **Code Organization**: Refactored playback functions to use LoopConfig
- **User Interface**: Improved prompts and progress indicators
- **Error Handling**: Enhanced error messages and input validation

### Removed
- **Unused Code**: Cleaned up legacy code and compiler warnings
- **Debug Output**: Removed excessive debug printing

### Added
- **Basic MIDI Playback**: Core functionality for playing MIDI files
- **Track Selection**: Choose specific MIDI tracks to play
- **Random Playback**: Random song selection mode
- **BPM Override**: Override default tempo with custom BPM
- **Build-time Processing**: Automatic MIDI file processing and code generation
- **Cross-platform Support**: Works on Windows, macOS, and Linux

### Technical Details
- Uses `midir` for MIDI I/O operations
- Uses `midly` and `rimd` for MIDI file parsing
- Implements timeline-based playback system
- Supports standard MIDI files (SMF)

## [Unreleased]