关于 win31-audio-design
win31-audio-design 面向为 Web 和移动界面添加 90 年代初 Windows 风格音效的设计者。内容涵盖复古声音特征、CC 授权音源、程序化音频和移动触觉反馈,并强调不要复制 Microsoft 原始音效。
主要功能
- 01复古音效设计指南
- 02CC 授权音源建议
- 03Web Audio 程序化音效示例
- 04移动音效与触觉反馈配合
- 05音量规范与用户控制
适用场景
- 01为 Win31 主题应用添加音效
- 02为复古游戏界面选择音效
- 03在移动端协调触控音效与触觉反馈
- 04为经典系统音效制作合规替代品
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ curiositech/ some_claude_skills --skill win31-audio-design安装后在 Claude Code 中输入/win31-audio-design确认已加载。
附带文件.claude-plugin/plugin.json
详细介绍
Win31 音频设计:令人满足的复古声音词汇
擅长为现代 Web 和移动应用打造真实的 Windows 3.1 时代音效体验。专注于经典声音词汇的 CC 许可替代方案,同时保留 90 年代早期计算机的令人满足的低保真韵味。
适用场景
适用于:
- 需要音频反馈的 Win31 主题 Web 应用
- 使用 90 年代桌面音效的复古游戏界面
- 希望加入令人满足的微交互音效的移动应用
- 将现代扁平音效转换为复古 8 位风格
- 打造唤起早期 Windows 怀旧感的声音组合
不适用于:
- 现代扁平化/材质设计音效 → sound-engineer
- 语音合成 → voice-audio-engineer
- 音乐创作 → DAW 工具
- 电影音效设计 → 线性音频工作流
Windows 3.1 声音词汇
原始音效(受版权保护——切勿使用)
| 文件 | 特征 | 时长 | 功能 |
|---|---|---|---|
| CHIMES.WAV | 空灵的铃声 | ~1.5s | 系统通知 |
| CHORD.WAV | 大调和弦解决 | ~1.2s | 任务完成 |
| DING.WAV | 单次铃声敲击 | ~0.5s | 提醒/警报 |
| TADA.WAV | 胜利号角 | ~2s | 启动/重大成功 |
| RINGIN.WAV | 上升音调 | ~0.3s | 模态窗口打开 |
| RINGOUT.WAV | 下降音调 | ~0.2s | 模态窗口关闭 |
法律警告:这些音效由 Microsoft 享有版权。我们创作的是受其启发的替代音效,而非复制品。
声音特征(令人满足的原因)
| 特性 | Win31 音效特征 |
|---|---|
| 采样率 | 11kHz-22kHz(低保真魅力) |
| 位深度 | 8-bit(量化带来的温暖感) |
| 频率范围 | 400Hz-4kHz(没有超低音,明亮柔和) |
| 包络 | 快速起音、中等衰减、无延音 |
| 混响 | 干声或短混响(没有大教堂式混响) |
| 特质 | 明亮、塑料感、欢快 |
Win31「叮」声公式
┌─────────────────────────────────────────────────────┐
│ 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 许可音效资源
推荐来源
| 来源 | 许可 | 最适合 |
|---|---|---|
| Dominik Braun 的 107 款复古音效 | CC BY 4.0 | UI 短促音、蜂鸣声、正向反馈 |
| LittleRobotSoundFactory(Freesound) | CC0/CC BY | 8 位游戏音效 |
| OpenGameArt 512 种音效 | CC0 | 全面的复古音效库 |
| Gritty Retro UI(Exechamp) | CC0 | UI 专用点击声和音调 |
署名模板
Audio: [Sound Name] by [Creator] from [Source]
Licensed under [CC BY 4.0 / CC0]
https://[source-url]
Win31 应用的声音组合
交互音效
| 操作 | 声音特征 | 时长 | 频率 |
|---|---|---|---|
| 按钮点击 | 柔和的塑料「嗒」声 | 20-40ms | 800-1200Hz |
| 按钮释放 | 轻微的「嗒」声 | 15-30ms | 600-900Hz |
| 切换开启 | 上升的啁啾声 | 80-120ms | 600→1200Hz |
| 切换关闭 | 下降的啁啾声 | 80-120ms | 1200→600Hz |
| 窗口打开 | 上行琶音 | 150-250ms | C4-E4-G4 |
| 窗口关闭 | 下行琶音 | 100-200ms | G4-E4-C4 |
| 错误 | 低沉嗡声 + 下降音 | 300-500ms | 200-400Hz |
| 成功 | 明亮的叮声 + 闪烁音 | 200-400ms | 880Hz + 泛音 |
| 通知 | 双音铃声 | 400-600ms | 660Hz、880Hz |
系统音效
| 事件 | 声音特征 | 时长 |
|---|---|---|
| 启动 | 胜利和弦解决 | 1.5-2.5s |
| 关机 | 柔和的下行乐句 | 1-2s |
| 严重错误 | 刺耳的双重嗡声 | 400-600ms |
| 任务完成 | 令人满足的「哒——叮!」 | 300-500ms |
| 导航 | 轻柔的呼啸声 + 收尾 | 100-200ms |
Web Audio 实现
基本音效播放器
// 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();
合成复古音效
// 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;
}
移动端触觉反馈协调
iOS 触觉反馈与声音配对
| 声音事件 | 触觉类型 | 强度 |
|---|---|---|
| 按钮点击 | .light | 0.5 |
| 开关切换 | .medium | 0.6 |
| 错误嗡鸣 | .heavy | 0.9 |
| 成功提示音 | .selection | 0.4 |
| 窗口打开 | .soft | 0.3 |
React Native 实现
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);
反模式
反模式:高保真采样
表现:48kHz、24 位的清晰音频
问题:听起来太现代,失去了复古韵味
建议:降采样至 22kHz,并应用 8 位量化
反模式:过长的混响尾音
表现:声音在大教堂中回荡
问题:Win31 声音通常是干声或短混响
建议:不加混响,或将衰减时间控制在 <100ms
反模式:超低音
表现:100Hz 以下的深沉轰鸣
问题:90 年代的 PC 扬声器无法重现超低音
建议:切掉 200Hz 以下的所有频率
反模式:复制 Microsoft 声音
表现:使用原版 CHIMES.WAV 或 TADA.WAV
问题:侵犯版权
建议:使用遵循 CC 许可的素材,创作受其启发的替代音效
反模式:声音过多
表现:每个微交互都会发出声音
问题:令人厌烦、疲劳
建议:仅为主要操作添加声音,并提供声音开关
声音级别指南
| 类别 | 级别 | 备注 |
|---|---|---|
| UI 反馈 | -24 至 -18 dB | 轻柔,不要造成干扰 |
| 通知 | -18 至 -12 dB | 能引起注意,但不要太响 |
| 错误 | -15 至 -9 dB | 清晰可察,但不刺耳 |
| 系统声音 | -12 至 -6 dB | 重大事件(启动/关机) |
务必提供:
- 全局声音开关(开/关)
- 音量滑块(0-100%)
- 遵循系统静音模式
快速实现检查清单
- 创建 Win31SoundManager 类
- 加载遵循 CC 许可的基础声音
- 添加程序化备用音效(叮声、铃声)
- 为移动设备实现触觉反馈配对
- 添加全局声音开关
- 使用 Win31 视觉主题进行测试
- 为 CC 声音添加署名
- 验证采样率(最高 22kHz)
集成对象
- windows-3-1-web-designer - Win31 视觉与音频体验
- sound-engineer - 如有需要,可实现高级空间音频
- mobile-ux-optimizer - 触控、触觉反馈与音频协调
- pwa-expert - 离线声音缓存
核心见解:Win31 声音令人满意,是因为它们很简单——短促、明亮、低保真,能够立即提供反馈,又不会分散注意力。8 位量化和有限的频率响应带来的是温暖,而非刺耳。使用遵循 CC 许可的替代素材捕捉这种风格,切勿复制原声。
请记住:务必提供声音开关。未经用户同意,绝不播放声音。在移动设备上将音频与触觉反馈配对,以获得最佳体验。