| license | Apache-2.0 |
| name | win31-audio-design |
| description | Expert in Windows 3.1 era sound vocabulary for modern web/mobile apps. Creates satisfying retro UI sounds using CC-licensed 8-bit audio, Web Audio API, and haptic coordination. Activate on 'win31 sounds', 'retro audio', '90s sound effects', 'chimes', 'tada', 'ding', 'satisfying UI sounds'. NOT for modern flat UI sounds, voice synthesis, or music composition. |
| allowed-tools | Read,Write,Edit,Bash(ffmpeg:*,node:*,npm:*),mcp__ElevenLabs__text_to_sound_effects,WebFetch |
| category | Video & Audio |
| tags | ["windows-31","retro-audio","sound-design","chiptune","8-bit"] |
| pairs-with | [{"skill":"windows-3-1-web-designer","reason":"Visual + audio Win31 experience"},{"skill":"sound-engineer","reason":"Advanced audio processing"},{"skill":"mobile-ux-optimizer","reason":"Mobile haptic-audio coordination"}] |
Win31 Audio Design: Satisfying Retro Sound Vocabulary
Expert in creating authentic Windows 3.1 era sound experiences for modern web and mobile applications using CC-licensed alternatives that capture the satisfying, lo-fi essence of early 90s computing.
Decision Points
Sound Selection Tree
Input Type:
├── UI Feedback
│ ├── High frequency (>20/sec) → Single click (20ms, 800Hz)
│ ├── Medium frequency (5-20/sec) → Toggle chirp (100ms, sweep)
│ └── Low frequency (<5/sec) → Chime variation (400ms, harmonic)
│
├── System Events
│ ├── Success → TADA-style fanfare (1-2s, ascending chord)
│ ├── Error → DING-style alert (300ms, 880Hz + decay)
│ └── Navigation → RINGIN/OUT-style sweep (150ms, pitch slide)
│
└── Device Constraints
├── Mobile → Add haptic pairing + respect silent mode
├── Low bandwidth → Use procedural synthesis over samples
└── Desktop → Full sample library + optional reverb
Frequency/Sample Rate Selection
Sound Type → Sample Rate → Frequency Range:
├── Button clicks → 11kHz → 600-1200Hz
├── System alerts → 22kHz → 400-2000Hz
├── Musical elements → 22kHz → 200-4000Hz
└── Error/warning → 11kHz → 200-800Hz
Device Memory:
├── <100MB available → Procedural only
├── 100-500MB → Core samples + procedural fallbacks
└── >500MB → Full sample library
Failure Modes
| Anti-Pattern | Detection Rule | Symptom | Fix |
|---|
| Modern Clarity | Sounds crisp at 48kHz+ | Too clean, loses retro charm | Downsample to 22kHz max, apply 8-bit quantization |
| Cathedral Reverb | Reverb tail >200ms | Sounds spacious, not desktop-like | Remove reverb or limit to <100ms room |
| Frequency Bloat | Energy below 200Hz or above 8kHz | Muddy bass or harsh highs | High-pass at 200Hz, low-pass at 6kHz |
| Copyright Trap | Using actual .WAV filenames | Legal risk, identical to Windows | Replace with CC-licensed alternatives only |
| Sound Spam | >3 sounds per second | User fatigue, cacophony | Limit to primary actions, add global toggle |
Worked Examples
Mobile Haptic-Audio Sync Example
Scenario: Creating a satisfying toggle switch with coordinated vibration and Win31-style sound
toggleRequirements = {
: ,
: ,
: ,
:
};
(memoryConstraint < 50MB) {
() {
ctx = audioContext;
osc = ctx.();
gain = ctx.();
osc. = ;
startFreq = isOn ? : ;
endFreq = isOn ? : ;
osc..(startFreq, ctx.);
osc..(endFreq, ctx. + );
gain..(, ctx.);
gain..(, ctx. + );
{ : osc, : gain };
}
}
() {
startTime = performance.();
[soundPromise, hapticPromise] = .([
(isOn),
.(..)
]);
endTime = performance.();
(endTime - startTime > ) {
.();
}
}