# Changelog ## [v1.2.1] - 2024-12-20 ### Added - **High-Quality Filter Implementation**: Direct Form II Transposed filter structure for improved numerical stability - **Filter Warm-Up**: Proper filter initialization to avoid transients, especially important for MPT transforms - **Anti-Aliasing in Resampling**: Automatic anti-aliasing filter when downsampling to prevent aliasing artifacts ### Fixed - **MPT Filter Application**: MPT IRs now correctly use the filtered recorded sweep (same as RAW IRs) - **Filter Response at Lower Sample Rates**: Fixed filter response accuracy when resampling to 48kHz and other lower sample rates - **Resampling Artifacts**: Added proper anti-aliasing to prevent frequency aliasing when downsampling ### Changed - **Filter Quality**: Improved filter implementation with high-precision coefficient calculation and proper state management - **Filter Artifacts**: Reduced artifacts in steep filters (48+ dB/octave) through better numerical stability ### Technical Improvements - **Direct Form II Transposed**: More numerically stable filter structure for cascaded filters - **Filter Warm-Up**: Pre-initialization of filter state to eliminate transients - **Anti-Aliasing**: Steep low-pass filter (48 dB/octave) applied before downsampling to prevent aliasing ## [v1.2.0] - 2024-12-20 ### Added - **Cabpack Generation**: Complete cabpack creation with IRs in 9 different formats organized in structured directory trees - **Default Mode**: Run without command-line options for automatic cabpack generation from current directory - **Executable Directory Detection**: Automatic detection of binary location for double-click support in Finder/Explorer - **Automatic File Organization**: Support for `selection.txt` and `ambient.txt` files to automatically organize IRs - **Mixes Folder Support**: Automatic conversion of ready-to-use IRs from `mixes` folder to all cabpack formats - **IR Filename in Plots**: IR filenames now displayed in plot titles for better identification - **Cabpack Defaults**: Automatic defaults for cabpack mode (fade-ms: 10, lowcut: 40Hz) - **Plots for Mixes**: Automatic plot generation for mix IRs in `plots/mixes` folder - **Logo in Plots**: Valhallir logo automatically displayed in upper-left corner of all generated plots (embedded in binary) ### Changed - **Optional Command-Line Flags**: All main flags (`--sweep`, `--recorded`, `--output`) are now optional with intelligent defaults - **Default Sweep File**: Changed default sweep filename to `sweep.wav` (simpler naming) - **Output Directory**: IRs folder created one directory level up from recorded directory by default - **Directory Structure**: Added `mixes` subfolder to each format folder (only created if `mixes` folder exists) - **Conditional Folder Creation**: `selection`, `ambient mics`, and `mixes` folders are only created if the corresponding files/folders exist in the recorded directory ### Technical Improvements - **Smart Path Detection**: Uses executable directory when double-clicked, current directory when run from command line - **Enhanced Logging**: Better progress information and path logging for debugging - **Improved Error Handling**: Graceful handling of missing optional files (selection.txt, ambient.txt, mixes folder) ## [v1.1.0] - 2024-12-19 ### Added - **IR Visualization**: New `--plot-ir` flag to generate frequency response and waveform plots - **Professional Plotting**: Frequency response (dB vs Hz) and time-aligned waveform visualization - **Valhallir Branding**: Logo and filename information in generated plots - **Modular Architecture**: Separated plotting logic into dedicated `pkg/plot` package - **Enhanced File Management**: Plots are saved in the same directory as IR files with matching names - **Improved Documentation**: Updated README with plotting features and usage examples - **Linear Fade-Out**: New `--fade-ms` option to apply linear fade-out to IRs (default 5ms) - **High/Low-Cut Filtering**: New `--highcut` and `--lowcut` options for frequency filtering - **Configurable Filter Slopes**: New `--cut-slope` option for filter steepness (12, 24, 36, 48 dB/oct) - **Audio Resampling**: Automatic resampling between different sample rates (44.1, 48, 88.2, 96 kHz) - **Enhanced Audio Processing**: Cascade filtering for steeper slopes and better frequency response - **Assets Integration**: Added Valhallir logo for professional plot branding ### Changed - **Package Structure**: Refactored codebase with separate packages for audio processing and visualization - **Plot File Naming**: Plots now use the same base name as IR files (e.g., `ir.png` instead of `ir_plot.png`) - **Repository Organization**: Updated `.gitignore` to exclude generated files while preserving essential test files - **Enhanced Error Handling**: Improved validation and error messages for all new features - **Better Logging**: More detailed progress information during processing ### Technical Improvements - **Clean Architecture**: Separated concerns between audio processing (`pkg/convolve`) and visualization (`pkg/plot`) - **Better Maintainability**: Modular design makes it easier to extend and modify features - **Enhanced Audio Quality**: Improved filtering algorithms with cascade implementation - **Professional Output**: Better IR quality with fade-out and advanced filtering options ## [v1.0.0] - 2024-06-09 ### Added - Initial public release: Valhallir Deconvolver - Fast FFT-based deconvolution for IR extraction - Automatic input conversion: accepts any WAV sample rate, bit depth, or channel count - Output IR in user-selectable sample rate and bit depth (WAV only) - Optional minimum phase transform (MPT) output - Silence trimming and normalization - Optional output IR length control (`--length-ms`) - Mono output (stereo/multichannel inputs are averaged) - CLI with urfave/cli, version flag, and detailed logging - Full documentation and usage examples in README