# Tasks: enterprise-audio-analysis-spectrum **Change ID**: enterprise-audio-analysis-spectrum **Package**: `@suaveplan/audio-analysis-spectrum` **Target path**: `packages/media/audio/audio-analysis-spectrum` **Prerequisite packages on Verdaccio**: `@suaveplan/audio-core`, `@suaveplan/error`, `@suaveplan/types` --- ## 1. Scaffold - [ ] Create directory `packages/media/audio/audio-analysis-spectrum/` with `src/`, `tests/`, `src/__benchmarks__/`, and all feature subdirectories per the layout in `proposal.md`. - [ ] Write `package.json` at version `0.1.0` with `"type": "module"`, `"sideEffects": false`, full `exports` map, deps: `@suaveplan/audio-core workspace:^`, `@suaveplan/error workspace:^`, `@suaveplan/types workspace:^`, `@suaveplan/opentelemetry workspace:^`, `zod catalog:forms`. - [ ] Write `tsconfig.json` extending `@suaveplan/typescript-config/library.json`. - [ ] Write `vitest.config.ts` using `createTestConfig()` from `@suaveplan/testing/config`. - [ ] Add `lint`, `typecheck`, `test`, `test:coverage`, `build`, `docs:check` scripts. --- ## 2. Types + errors - [ ] Write `src/error-codes.ts` — `SPECTRUMErrorCode`, `AUDIO_ANALYSIS_SPECTRUM_ERROR_METADATA`, `registerAudioAnalysisErrorCodes()`. - [ ] Write Zod schemas: `SpectrumAnalyzerOptionsSchema`, `SpectrumResultSchema`, `SpectrogramResultSchema`, `MFCCResultSchema`. --- ## 3. Algorithms - [ ] Implement `fft.ts` — real FFT with configurable frame size. - [ ] Write `fft.test.ts` and `fft.md` (≥200 words). - [ ] Implement `window.ts` — Hann, Hamming, Blackman window functions. - [ ] Write `window.test.ts` and `window.md` (≥200 words). - [ ] Implement `mel-scale.ts` — mel-frequency mapping and triangular filterbank. - [ ] Write `mel-scale.test.ts` and `mel-scale.md` (≥200 words). - [ ] Implement `dct.ts` — DCT-II for MFCC computation. - [ ] Write `dct.test.ts` and `dct.md` (≥200 words). --- ## 4. Analyzers - [ ] Implement `SpectrumAnalyzer` class with `analyze()`, `analyzeStream()`, `analyzeBlock()`. - [ ] Write `spectrum-analyzer.test.ts` and `spectrum-analyzer.md` (≥200 words). - [ ] Implement `Spectrogram` class with `analyze()`, `analyzeStream()`. - [ ] Write `spectrogram.test.ts` and `spectrogram.md` (≥200 words). - [ ] Implement `MFCC` class with `analyze()`, `analyzeStream()`. - [ ] Write `mfcc.test.ts` and `mfcc.md` (≥200 words). - [ ] Wire OTel: spans, counters, histograms per analyzer. --- ## 5. Benchmarks - [ ] Write `src/__benchmarks__/spectrum.bench.ts` — spectrogram 1-minute track, MFCC 1-minute track. --- ## 6. Tests - [ ] Write `tests/integration.test.ts` — full spectrum/spectrogram/MFCC round-trip on real audio fixture. - [ ] Write `tests/property.test.ts` (fast-check) — sine wave → single peak, white noise → flat spectrum. --- ## 7. Docs + verify + publish - [ ] All co-located `.md` files (≥200 words each). - [ ] Write `README.md` at package root. - [ ] `bunx turbo lint typecheck test --filter=@suaveplan/audio-analysis-spectrum` — green. - [ ] `bunx turbo test:coverage --filter=@suaveplan/audio-analysis-spectrum` — 100%. - [ ] `bun scripts/publish.ts --package @suaveplan/audio-analysis-spectrum`. - [ ] Fold `specs/audio-analysis-spectrum/spec.md` into `openspec/specs/audio-analysis-spectrum/spec.md`. - [ ] Archive to `openspec/archive/2026-05-14-enterprise-audio-analysis-spectrum/`.