Compare commits
3 Commits
v1.1.0
...
b447b307f1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b447b307f1 | ||
|
|
dd21f30a7f | ||
|
|
9df7ddbe2d |
28
CHANGELOG.md
28
CHANGELOG.md
@@ -1,33 +1,5 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
## [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
|
## [v1.0.0] - 2024-06-09
|
||||||
### Added
|
### Added
|
||||||
- Initial public release: Valhallir Deconvolver
|
- Initial public release: Valhallir Deconvolver
|
||||||
|
|||||||
29
README.md
29
README.md
@@ -9,12 +9,11 @@ A CLI tool for processing WAV files to generate impulse responses (IR) from swee
|
|||||||
- **Optional output IR length:** Specify output IR length in milliseconds with --length-ms
|
- **Optional output IR length:** Specify output IR length in milliseconds with --length-ms
|
||||||
- **Optional low-cut and high-cut filtering:** Apply Butterworth filters to the recorded sweep before IR extraction (--lowcut, --highcut, --cut-slope)
|
- **Optional low-cut and high-cut filtering:** Apply Butterworth filters to the recorded sweep before IR extraction (--lowcut, --highcut, --cut-slope)
|
||||||
- **Automatic fade-out:** Linear fade-out at the end of the IR to avoid clicks (default 5 ms, configurable with --fade-ms)
|
- **Automatic fade-out:** Linear fade-out at the end of the IR to avoid clicks (default 5 ms, configurable with --fade-ms)
|
||||||
- **IR Visualization:** Generate frequency response and waveform plots with `--plot-ir`
|
|
||||||
- **96kHz 24-bit WAV file support** for high-quality audio processing
|
- **96kHz 24-bit WAV file support** for high-quality audio processing
|
||||||
- **Multiple output formats** with configurable sample rates and bit depths
|
- **Multiple output formats** with configurable sample rates and bit depths
|
||||||
- **Minimum Phase Transform (MPT)** option for reduced latency IRs
|
- **Minimum Phase Transform (MPT)** option for reduced latency IRs
|
||||||
- **Automatic silence trimming** and normalization
|
- **Automatic silence trimming** and normalization
|
||||||
- **Modular design** with separate packages for WAV I/O, convolution, and visualization
|
- **Modular design** with separate packages for WAV I/O and convolution
|
||||||
- **Robust error handling** and validation
|
- **Robust error handling** and validation
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
@@ -88,24 +87,6 @@ You can control the filter steepness (slope) with `--cut-slope` (in dB/octave, d
|
|||||||
|
|
||||||
This applies a 40 Hz low-cut and 18 kHz high-cut, both with a 24 dB/octave slope (steeper than the default 12).
|
This applies a 40 Hz low-cut and 18 kHz high-cut, both with a 24 dB/octave slope (steeper than the default 12).
|
||||||
|
|
||||||
### IR Visualization
|
|
||||||
|
|
||||||
Generate frequency response and waveform plots of your IRs:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
./valhallir-deconvolver --sweep sweep.wav --recorded recorded.wav --output ir.wav --plot-ir
|
|
||||||
```
|
|
||||||
|
|
||||||
This creates:
|
|
||||||
- `ir.wav` - The impulse response file
|
|
||||||
- `ir.png` - A professional plot showing frequency response and waveform
|
|
||||||
|
|
||||||
The plot includes:
|
|
||||||
- **Frequency Response:** dB vs Hz with log frequency scale (20Hz-20kHz)
|
|
||||||
- **Waveform:** Time-domain view of the first 10ms of the IR
|
|
||||||
- **Valhallir Branding:** Logo and filename information
|
|
||||||
- **Professional Layout:** Clean, publication-ready visualization
|
|
||||||
|
|
||||||
### Different Output Formats
|
### Different Output Formats
|
||||||
|
|
||||||
Generate IRs in different sample rates and bit depths:
|
Generate IRs in different sample rates and bit depths:
|
||||||
@@ -169,7 +150,6 @@ Generate IRs in different sample rates and bit depths:
|
|||||||
| `--lowcut` | Low-cut filter (high-pass) cutoff frequency in Hz (recorded sweep) | - | No |
|
| `--lowcut` | Low-cut filter (high-pass) cutoff frequency in Hz (recorded sweep) | - | No |
|
||||||
| `--highcut` | High-cut filter (low-pass) cutoff frequency in Hz (recorded sweep) | - | No |
|
| `--highcut` | High-cut filter (low-pass) cutoff frequency in Hz (recorded sweep) | - | No |
|
||||||
| `--cut-slope` | Filter slope in dB/octave (12, 24, 36, ...; default 12) | 12 | No |
|
| `--cut-slope` | Filter slope in dB/octave (12, 24, 36, ...; default 12) | 12 | No |
|
||||||
| `--plot-ir` | Generate frequency response and waveform plot | false | No |
|
|
||||||
|
|
||||||
## File Requirements
|
## File Requirements
|
||||||
|
|
||||||
@@ -218,13 +198,6 @@ Generate IRs in different sample rates and bit depths:
|
|||||||
- **Maintains frequency response** while optimizing phase characteristics
|
- **Maintains frequency response** while optimizing phase characteristics
|
||||||
- **Suitable for real-time applications** like guitar amp modeling
|
- **Suitable for real-time applications** like guitar amp modeling
|
||||||
|
|
||||||
### IR Visualization
|
|
||||||
- **Frequency Response Plot:** Shows magnitude response in dB vs Hz with log frequency scale
|
|
||||||
- **Waveform Plot:** Displays the first 10ms of the IR in the time domain
|
|
||||||
- **Professional Layout:** Clean, publication-ready plots with Valhallir branding
|
|
||||||
- **Automatic File Naming:** Plots are saved with the same base name as the IR file
|
|
||||||
- **High-Quality Output:** PNG format suitable for documentation and sharing
|
|
||||||
|
|
||||||
### Output Format Options
|
### Output Format Options
|
||||||
- **Sample Rates:** 44.1kHz (CD), 48kHz (studio), 88.2kHz, 96kHz (high-res)
|
- **Sample Rates:** 44.1kHz (CD), 48kHz (studio), 88.2kHz, 96kHz (high-res)
|
||||||
- **Bit Depths:** 16-bit (CD), 24-bit (studio), 32-bit (high-res)
|
- **Bit Depths:** 16-bit (CD), 24-bit (studio), 32-bit (high-res)
|
||||||
|
|||||||
2
main.go
2
main.go
@@ -16,7 +16,7 @@ func main() {
|
|||||||
app := &cli.App{
|
app := &cli.App{
|
||||||
Name: "valhallir-deconvolver",
|
Name: "valhallir-deconvolver",
|
||||||
Usage: "Deconvolve sweep and recorded WAV files to create impulse responses",
|
Usage: "Deconvolve sweep and recorded WAV files to create impulse responses",
|
||||||
Version: "v1.1.0",
|
Version: "v1.0.0",
|
||||||
Flags: []cli.Flag{
|
Flags: []cli.Flag{
|
||||||
&cli.StringFlag{
|
&cli.StringFlag{
|
||||||
Name: "sweep",
|
Name: "sweep",
|
||||||
|
|||||||
Reference in New Issue
Block a user