Files
suaveplan/openspec/archive/2026-05-23-enterprise-audio-analysis-spectrum/tasks.md
2026-05-27 23:29:53 +01:00

3.3 KiB

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/.