Jivetalking 0.3.0
Changes since 0.2.2
- docs(processor): document Pass 3 and 4 loudness normalisation ordering (010048f)
- style(processor): align NormalisationResult struct fields with gofumpt (733af3d)
- docs(processor): document Pass 3 filter prefix in diagnostics and architecture (c199011)
- refactor(processor): reorder computation and simplify loudnorm signatures (7d6a7c6)
- refactor(processor): extract calculatePreGain and buildPreLimiterPrefix (51f228f)
- test(processor): clarify ClampedTargetPropagation test scope (821ec12)
- fix(processor): pass post-gain input to LUFS16 target calculation (b4abdd1)
- fix(pregain): correct worked example and strengthen limiter test assertions (06152e3)
- docs: document pre-gain compensation for clamped ceilings (95f1f62)
- docs(logging): add pre-gain diagnostics to peak limiter report (ade9512)
- test(processor): verify pre-gain deficit arithmetic and ceiling re-derivation (e77ee6c)
- feat(processor): implement pre-gain compensation before alimiter (b1b2741)
- refactor(processor): extract limiter constants and add pregain diagnostics (0b75807)
- fix(processor): update stale severity comment to match 6.0 dB scaling (4cf4f26)
- perf(processor): increase la2aHighCrestMaxDeficit from 4.0 to 6.0 dB (3da5c81)
- perf(processor): reduce la2aHighCrestMaxDeficit from 8.0 to 4.0 dB (e48b3d3)
- docs: correct LA-2A parameter ranges and remove invalid example values (e5bacc1)
- feat(docs): document high-crest override diagnostics and LUFS formatting fixes (07f04f9)
- feat(processor): add high-crest override diagnostics and fix LUFS truncation (0ece388)
- feat(processor): wire high-crest override system into LA-2A sub-tuners (d6d1005)
- feat(processor): add LA-2A high-crest override detection and parameter calculation (6230ace)
- refactor(processor): add LA-2A high-crest override infrastructure (bb6ef2c)
- refactor(processor): modernise Go code to use builtin functions and range-over-int (4746c7f)
- docs: update AGENTS.md (fda3c0d)
- refactor: resolve golangci-lint violations across codebase (206dc5a)
- ci(release): quote shell variables in GitHub Actions workflow (c6343a3)
- refactor(logging): use zero values instead of math.NaN() for uninitialized variables (d61c5ae)
- build: add linter configuration and tooling (c89b211)
- docs: clarify LUFS terminology and fix normalise parameter comments (c2bfb7c)
- docs: update Levelator gap analysis with more correct "podcast-ready" (6a50038)
- fix(ui): show only input filename during active processing (b2971c8)
- docs: update LUFS target references from -18 to -16 (511a9f9)
- feat(processor,ui,logging): add LUFS value to output filename (648ff45)
- refactor(processor,logging): replace hardcoded LUFS target with NormTargetLUFS constant (3efeb8d)
- feat(processor): migrate LUFS target from -18 to -16 (004d8dd)
- fix(processor,logging): fix compand state leakage and improve noise floor tracking (057c206)
- fix(logging): improve silence detection section display in analysis output (7ac9937)
- fix(logging): display derived noise floor value instead of -Inf in analysis output (06fcb50)
- docs(comparison): clarify NoiseRemove compand and document silence detection capabilities (0daad35)
- docs(processor): update documentation for voice-activated detection and NR compander (9269d0e)
- feat(processor): add adaptive speech RMS minimum threshold (0cc44d3)
- feat(logging): add voice-activated recording indicator and compander annotation (a70f485)
- feat(processor): disable compand for uncalibrated recordings (d0d996a)
- feat(processor): widen speech interruption tolerance for voice-activated recordings (11731d3)
- feat(processor): detect voice-activated recordings from digital silence fraction (33a7983)
- docs(logging): add rejection summary for silence candidates (6d51b60)
- refactor(logging): hide rejected silence candidates in analysis output (657d232)
- feat(processor): reject digital silence in room tone candidate selection (947fdfd)
- fix(processor): prevent panic in silence region test by using fatalf (cff086b)
- docs: clarify silence placement flexibility in recording workflow (9cecb95)
- refactor(logging): restructure silence candidate display with elected-first ordering (ebdfe17)
- feat(processor): refine silence candidates before scoring to reject boundary transients (4b38b1e)
- fix(processor): remove time-based constraints from room tone candidate discovery (8322c62)
- fix(cli): handle user cancellation in analysis mode and nil measurements (47660a4)
- fix(processor): handle planar audio formats in RMS and peak analysis (dbab9e3)
- fix(processor): resolve five robustness and quality issues from PR #49 review (890f47b)
- fix(audio): rename Seek to SeekTo to resolve interface conflict (b99cd12)
- refactor(processor): extract frame processing into dedicated module (7f71743)
- refactor(processor): extract output region measurement into analyzer_output.go (691c617)
- refactor(processor): extract candidate detection and scoring to separate file (14b1afc)
- refactor(processor): extract metrics types and functions to analyzer_metrics.go (2f1a841)
- refactor(processor): embed SpectralMetrics in candidate types (f8ddcf8)
- refactor(processor): add json tags to SilenceCandidateMetrics (51d2677)
- refactor(processor): consolidate measureOutput region functions into generic implementation (0aa0da0)
- refactor(processor): consolidate spectral accumulator in output speech region measurement (5a9f055)
- refactor(processor): consolidate spectral accumulator variables in silence region measurement (8d11317)
- refactor(processor): consolidate final frame loop migration in measureOutputSpeechRegionFromReader (dff8c25)
- refactor(processor): migrate measureOutputSilenceRegionFromReader to runFilterGraph (e0e340d)
- refactor(processor): migrate AnalyzeAudio to use runFilterGraph (a0335fd)
- refactor(processor): migrate processWithFilters to runFilterGraph (7b5c7e1)
- refactor(processor): migrate applyLoudnormAndMeasure to runFilterGraph (104d013)
- refactor(processor): migrate measureWithLoudnorm to use runFilterGraph (9076a50)
- feat(processor): add runFilterGraph function for frame processing abstraction (9d14b9d)
- refactor(processor): remove speculative generality and introduce PassNumber type safety (342f438)
- chore: update integration test justfile (15b8999)
- chore(tailor): fit project with community health files (cbb82d9)
- fix(processor): handle ParseFloat errors in loudnorm measurement parsing (0be23ab)
- refactor(stdlib): modernise to Go 1.21+ features (849b6c9)
- chore(build): upgrade go from 1.24.0 to 1.26.1 (6c7b934)
- chore(deps): bump actions/upload-artifact from 6 to 7 (5667b37)
- chore(deps): bump github.com/alecthomas/kong from 1.13.0 to 1.14.0 (cce45ef)
- docs: add some links to references (4bd173f)
Installation
Download the appropriate binary for your platform below, make it executable, and move it to your PATH:
# Linux (amd64)
chmod +x jivetalking-linux-amd64
sudo mv jivetalking-linux-amd64 /usr/local/bin/jivetalking
# macOS (Apple Silicon)
chmod +x jivetalking-darwin-arm64
sudo mv jivetalking-darwin-arm64 /usr/local/bin/jivetalkingChecksums
SHA256 checksums are provided below for verification.