Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
erichowens avatar

Win31 Audio Design

  • 103 installs
  • 178 repo stars
  • Updated July 14, 2026
  • erichowens/some_claude_skills

Design retro Windows 3.1 UI sounds using CC-licensed 8-bit audio and Web Audio API.

About

Creates satisfying Win31-era sound vocabulary with dithering patterns and lo-fi charm. Covers CHIMES/CHORD/DING/TADA alternatives and haptic coordination for mobile.

  • Win31 sound characteristics: 11-22kHz sample rate, 8-bit, 400-4kHz frequency range
  • CC-licensed sound resources and attribution templates

Win31 Audio Design by the numbers

  • 103 all-time installs (skills.sh)
  • Ranked #1,119 of 1,880 Design & UI/UX skills by installs in the Skillselion catalog
  • Data as of Aug 4, 2026 (Skillselion catalog sync)
npx skills add https://github.com/erichowens/some_claude_skills --skill win31-audio-design

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs103
repo stars178
Last updatedJuly 14, 2026
Repositoryerichowens/some_claude_skills

What it does

Design retro Windows 3.1 UI sounds using CC-licensed 8-bit audio and Web Audio API.

Files

SKILL.mdMarkdownGitHub ↗

Win31 Audio Design: Satisfying Retro Sound Vocabulary

Expert in creating authentic Windows 3.1 era sound experiences for modern web and mobile applications. Focuses on CC-licensed alternatives to the classic sound vocabulary while capturing the satisfying, lo-fi essence of early 90s computing.

When to Use

Use for:

  • Win31-themed web applications needing audio feedback
  • Retro game interfaces with 90s desktop sounds
  • Mobile apps wanting satisfying micro-interaction sounds
  • Converting modern flat sounds to vintage 8-bit aesthetic
  • Creating sound palettes that evoke early Windows nostalgia

Do NOT use for:

  • Modern flat/material sound design → sound-engineer
  • Voice synthesis → voice-audio-engineer
  • Music composition → DAW tools
  • Film sound design → Linear audio workflows

Windows 3.1 Sound Vocabulary

The Original Sounds (Copyrighted - DO NOT USE)

FileCharacterDurationFunction
CHIMES.WAVEthereal bells~1.5sSystem notifications
CHORD.WAVMajor chord resolve~1.2sTask completion
DING.WAVSingle bell strike~0.5sAttention/alert
TADA.WAVTriumphant fanfare~2sStartup/major success
RINGIN.WAVRising tone~0.3sModal open
RINGOUT.WAVFalling tone~0.2sModal close

Legal Warning: These sounds are copyrighted by Microsoft. We create INSPIRED alternatives, never copies.

Sound Characteristics (What Made Them Satisfying)

QualityWin31 Sound Profile
Sample Rate11kHz-22kHz (lo-fi charm)
Bit Depth8-bit (quantization warmth)
Frequency Range400Hz-4kHz (no sub-bass, gentle highs)
EnvelopeFast attack, medium decay, no sustain
ReverbDry or short room (no cathedral halls)
CharacterBright, plasticky, cheerful

The Win31 "Ding" Formula

┌─────────────────────────────────────────────────────┐
│ Attack: 5-10ms    │ Pure sine starts BRIGHT         │
│ Peak: ~880Hz (A5) │ Classic 8-bit "bleep"           │
│ Decay: 200-400ms  │ Natural damping feel            │
│ Overtones: 2nd+3rd│ Bell-like shimmer               │
│ Processing: 8-bit │ Adds warmth via quantization    │
└─────────────────────────────────────────────────────┘

CC-Licensed Sound Resources

Recommended Sources

SourceLicenseBest For
Dominik Braun's 107 Retro SoundsCC BY 4.0UI blips, beeps, positive feedback
LittleRobotSoundFactory (Freesound)CC0/CC BY8-bit game sounds
OpenGameArt 512 SFXCC0Comprehensive retro library
Gritty Retro UI (Exechamp)CC0UI-specific clicks and tones

Attribution Template

Audio: [Sound Name] by [Creator] from [Source]
Licensed under [CC BY 4.0 / CC0]
https://[source-url]

Sound Palette for Win31 Apps

Interaction Sounds

ActionSound CharacterDurationFrequency
Button clickSoft plastic "tik"20-40ms800-1200Hz
Button releaseSubtle "tok"15-30ms600-900Hz
Toggle onRising chirp80-120ms600→1200Hz
Toggle offFalling chirp80-120ms1200→600Hz
Window openAscending arpeggio150-250msC4-E4-G4
Window closeDescending arpeggio100-200msG4-E4-C4
ErrorLow buzz + descending300-500ms200-400Hz
SuccessBright ding + shimmer200-400ms880Hz + harmonics
NotificationDouble chime400-600ms660Hz, 880Hz

System Sounds

EventSound CharacterDuration
StartupTriumphant chord resolve1.5-2.5s
ShutdownGentle descending phrase1-2s
Critical errorHarsh double-buzz400-600ms
Task completeSatisfying "da-ding!"300-500ms
NavigationSoft whoosh + settle100-200ms

Web Audio Implementation

Basic Sound Player

// Win31-style sound manager for web
class Win31SoundManager {
  private audioContext: AudioContext | null = null;
  private sounds: Map<string, AudioBuffer> = new Map();

  constructor() {
    // Lazy init on first user interaction (browser policy)
  }

  private getContext(): AudioContext {
    if (!this.audioContext) {
      this.audioContext = new AudioContext({ sampleRate: 22050 }); // Lo-fi!
    }
    return this.audioContext;
  }

  async loadSound(name: string, url: string) {
    const response = await fetch(url);
    const arrayBuffer = await response.arrayBuffer();
    const audioBuffer = await this.getContext().decodeAudioData(arrayBuffer);
    this.sounds.set(name, audioBuffer);
  }

  play(name: string, volume = 0.5) {
    const buffer = this.sounds.get(name);
    if (!buffer) return;

    const ctx = this.getContext();
    const source = ctx.createBufferSource();
    const gain = ctx.createGain();

    source.buffer = buffer;
    gain.gain.value = volume;

    source.connect(gain);
    gain.connect(ctx.destination);
    source.start(0);
  }

  // Procedural 8-bit "ding"
  playDing(frequency = 880) {
    const ctx = this.getContext();
    const osc = ctx.createOscillator();
    const gain = ctx.createGain();

    osc.type = 'triangle'; // Softer than sine, more 8-bit
    osc.frequency.setValueAtTime(frequency, ctx.currentTime);

    // Fast attack, medium decay
    gain.gain.setValueAtTime(0.3, ctx.currentTime);
    gain.gain.exponentialRampToValueAtTime(0.001, ctx.currentTime + 0.4);

    osc.connect(gain);
    gain.connect(ctx.destination);

    osc.start(ctx.currentTime);
    osc.stop(ctx.currentTime + 0.4);
  }
}

export const win31Sounds = new Win31SoundManager();

Synthesized Retro Sounds

// Generate Win31-style sounds procedurally
function createChime(ctx: AudioContext, baseFreq = 660): AudioBufferSourceNode {
  const duration = 1.5;
  const sampleRate = ctx.sampleRate;
  const buffer = ctx.createBuffer(1, duration * sampleRate, sampleRate);
  const data = buffer.getChannelData(0);

  // Two-tone chime (like CHIMES.WAV character)
  for (let i = 0; i < data.length; i++) {
    const t = i / sampleRate;
    const env = Math.exp(-t * 3); // Decay envelope

    // Two harmonically related tones
    const tone1 = Math.sin(2 * Math.PI * baseFreq * t);
    const tone2 = Math.sin(2 * Math.PI * baseFreq * 1.5 * t) * 0.5;

    data[i] = (tone1 + tone2) * env * 0.3;
  }

  // 8-bit quantization for authentic lo-fi
  for (let i = 0; i < data.length; i++) {
    data[i] = Math.round(data[i] * 127) / 127;
  }

  const source = ctx.createBufferSource();
  source.buffer = buffer;
  return source;
}

Mobile Haptic Coordination

iOS Haptic-Sound Pairing

Sound EventHaptic TypeIntensity
Button click.light0.5
Toggle switch.medium0.6
Error buzz.heavy0.9
Success ding.selection0.4
Window open.soft0.3

React Native Implementation

import * as Haptics from 'expo-haptics';

async function playWithHaptic(soundName: string, hapticType: Haptics.ImpactFeedbackStyle) {
  // Fire both simultaneously
  await Promise.all([
    win31Sounds.play(soundName),
    Haptics.impactAsync(hapticType),
  ]);
}

// Usage
await playWithHaptic('click', Haptics.ImpactFeedbackStyle.Light);
await playWithHaptic('error', Haptics.ImpactFeedbackStyle.Heavy);

Anti-Patterns

Anti-Pattern: High-Fidelity Samples

What it looks like: 48kHz, 24-bit crystal-clear audio Why wrong: Sounds too modern, loses retro charm Instead: Downsample to 22kHz, apply 8-bit quantization

Anti-Pattern: Long Reverb Tails

What it looks like: Sounds echoing in a cathedral Why wrong: Win31 sounds were DRY or short room Instead: No reverb or &lt;100ms decay

Anti-Pattern: Sub-Bass

What it looks like: Deep rumbling under 100Hz Why wrong: 90s PC speakers couldn't reproduce sub-bass Instead: Cut everything below 200Hz

Anti-Pattern: Copying Microsoft Sounds

What it looks like: Using actual CHIMES.WAV or TADA.WAV Why wrong: Copyright infringement Instead: Create inspired alternatives with CC-licensed sources

Anti-Pattern: Too Many Sounds

What it looks like: Every micro-interaction makes noise Why wrong: Becomes annoying, fatiguing Instead: Sounds for primary actions only, user toggle for audio

Sound Level Guidelines

CategoryLevelNotes
UI feedback-24 to -18 dBSubtle, never intrusive
Notifications-18 to -12 dBAttention-getting but not loud
Errors-15 to -9 dBNoticeable but not jarring
System sounds-12 to -6 dBMajor events (startup/shutdown)

Always provide: 1. Global sound toggle (on/off) 2. Volume slider (0-100%) 3. Respect system silent mode

Quick Implementation Checklist

  • [ ] Create Win31SoundManager class
  • [ ] Load CC-licensed base sounds
  • [ ] Add procedural fallbacks (ding, chime)
  • [ ] Implement haptic pairing for mobile
  • [ ] Add global sound toggle
  • [ ] Test with Win31 visual theme
  • [ ] Add attribution for CC sounds
  • [ ] Verify sample rates (22kHz max)

Integrates With

  • windows-3-1-web-designer - Visual + audio Win31 experience
  • sound-engineer - Advanced spatial audio if needed
  • mobile-ux-optimizer - Touch + haptic + audio coordination
  • pwa-expert - Offline sound caching

---

Core insight: Win31 sounds were satisfying because they were SIMPLE—short, bright, lo-fi tones that gave immediate feedback without being distracting. The 8-bit quantization and limited frequency response added warmth, not harshness. Capture that spirit with CC-licensed alternatives, never copies.

Remember: Always include a sound toggle. Never play sounds without user consent. Pair audio with haptics on mobile for maximum satisfaction.

Related skills

Design & UI/UXuibranding

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.