first commit

This commit is contained in:
2026-05-29 08:20:56 +01:00
commit 949299f58d
6368 changed files with 527176 additions and 0 deletions

View File

@@ -0,0 +1,43 @@
---
name: sp-audio-fx-plugin-pitch-shifter
description: Pitch shifter FX plugin — time-stretching pitch change without speed alteration. Grain size, overlap, formant preservation. Part of audio-fx-plugin-* family.
---
# sp-audio-fx-plugin-pitch-shifter
| Symbol | Kind | Responsibility |
|---|---|---|
| `PitchShifterPlugin` | Class | Pitch shifter FX plugin extending `AbstractAudioFxPlugin` |
| `PitchShifterPluginOptions` | Type | Semitones, grain size, overlap, formant preserve, mix |
| `PitchShifterPluginOptionsSchema` | Schema | Zod schema for options validation |
| `PitchShifterPresetDataSchema` | Schema | Zod schema for serialisable preset |
**File Structure:** `packages/media/audio-fx/audio-fx-plugin-pitch-shifter/src/{pitch-shifter,schemas}/`
**Sibling packages:**
- `@suaveplan/audio-fx-plugin-base` — FX plugin foundation
- `@suaveplan/audio-fx-plugin-glados` — GLaDOS effect (uses pitch shift)
**Patterns:**
*Quick Start:*
```ts
import { PitchShifterPlugin } from "@suaveplan/audio-fx-plugin-pitch-shifter";
const shifter = new PitchShifterPlugin({ semitones: -7, grainSize: 80, overlap: 0.2 });
```
**Constraints:**
- Extends `AbstractAudioFxPlugin` from `@suaveplan/audio-fx-plugin-base`
- Grain-based time-stretching preserves playback speed
- Formant preservation maintains vocal character during shifts
- Larger grains = smoother sound, more latency
- Overlap controls crossfade between grains
- Mix control for dry/wet blend
- Preset schema validates all parameters
**Checklist:**
- [ ] `PitchShifterPlugin` extends `AbstractAudioFxPlugin`
- [ ] Pitch changes by specified semitones without speed change
- [ ] Formant preservation maintains vocal character
- [ ] Grain size tradeoff between quality and latency
- [ ] Overlap crossfade reduces grain boundary artifacts