mcpField
W
win31-audio-design

win31-audio-design

github.com/curiositechクリエイティブ・メディア257155 回インストール2 日前に更新
リポジトリ

win31-audio-design について

win31-audio-designは、Webやモバイルの画面に1990年代初頭のWindows風サウンドを加えるデザイナー向けのスキルです。レトロ音の特徴、CCライセンス音源、プログラム生成、モバイルの触覚連携を扱い、Microsoftの原音を複製しない方針を示します。

主な機能

  1. 01レトロサウンドの設計指針
  2. 02CCライセンス音源の紹介
  3. 03Web Audioによる生成例
  4. 04モバイル音声と触覚の連携
  5. 05音量基準とユーザー設定

活用シーン

  1. 01Win31風アプリへの効果音追加
  2. 02レトロゲーム画面の音選び
  3. 03モバイルの操作音と触覚の連携
  4. 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 オーディオデザイン:心地よいレトロサウンドの語彙

最新のウェブアプリやモバイルアプリ向けに、本格的な Windows 3.1 時代のサウンド体験を生み出す専門家です。90年代初頭のコンピューティングならではの心地よいローファイな魅力を捉えながら、クラシックなサウンドの語彙を再現する CC ライセンスの代替音源に焦点を当てます。

使用する場面

次の場合に使用します:

  • オーディオフィードバックが必要な Win31 テーマのウェブアプリ
  • 90年代のデスクトップサウンドを取り入れたレトロゲームのインターフェース
  • 心地よいマイクロインタラクションサウンドを取り入れたいモバイルアプリ
  • 現代的なフラットなサウンドをビンテージの 8 ビット風に変換する場合
  • 初期の Windows を懐かしく思い起こさせるサウンドパレットの作成

次の場合には使用しないでください:

  • 現代的なフラット/マテリアルデザインのサウンド設計 → sound-engineer
  • 音声合成 → voice-audio-engineer
  • 作曲 → DAW ツール
  • 映画のサウンドデザイン → リニアオーディオのワークフロー

Windows 3.1 のサウンドの語彙

オリジナルのサウンド(著作権で保護されています - 使用しないでください)
ファイル特徴長さ用途
CHIMES.WAV幻想的な鐘の音約1.5秒システム通知
CHORD.WAV長三和音の解決感約1.2秒タスク完了
DING.WAV単発の鐘の音約0.5秒注意喚起/警告
TADA.WAV勝利を告げるファンファーレ約2秒起動/大きな成功
RINGIN.WAV上昇音約0.3秒モーダルを開く
RINGOUT.WAV下降音約0.2秒モーダルを閉じる

法的警告:これらのサウンドは Microsoft の著作権で保護されています。作成するのはインスピレーションを得た代替音源であり、決して複製ではありません。

サウンドの特徴(心地よさの理由)
品質Win31 サウンドの特性
サンプルレート11kHz~22kHz(ローファイならではの魅力)
ビット深度8ビット(量子化による温かみ)
周波数範囲400Hz~4kHz(サブベースなし、耳当たりの柔らかな高音)
エンベロープアタックは速く、ディケイは中程度、サステインなし
リバーブドライ、または短いルームリバーブ(大聖堂のような響きはなし)
特徴明るく、プラスチックのようで、陽気
Win31 の「Ding」の公式
┌─────────────────────────────────────────────────────┐
│ 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's 107 Retro SoundsCC BY 4.0UI のピッ、ビープ音、ポジティブなフィードバック
LittleRobotSoundFactory (Freesound)CC0/CC BY8 ビットゲームのサウンド
OpenGameArt 512 SFXCC0幅広くそろったレトロ音源ライブラリ
Gritty Retro UI (Exechamp)CC0UI に特化したクリック音やトーン
クレジット表記のテンプレート
Audio: [Sound Name] by [Creator] from [Source]
Licensed under [CC BY 4.0 / CC0]
https://[source-url]

Win31 アプリ向けサウンドパレット

インタラクションサウンド
操作サウンドの特徴長さ周波数
ボタンクリック柔らかなプラスチックの「ティッ」20~40ms800~1200Hz
ボタンを離す控えめな「トッ」15~30ms600~900Hz
切り替えオン上昇するチャープ音80~120ms600→1200Hz
切り替えオフ下降するチャープ音80~120ms1200→600Hz
ウィンドウを開く上昇するアルペジオ150~250msC4-E4-G4
ウィンドウを閉じる下降するアルペジオ100~200msG4-E4-C4
エラー低いブザー音+下降音300~500ms200~400Hz
成功明るいディン音+きらめき200~400ms880Hz + 倍音
通知2音のチャイム400~600ms660Hz、880Hz
システムサウンド
イベントサウンドの特徴長さ
起動勝利を告げる和音の解決感1.5~2.5秒
シャットダウン穏やかな下降フレーズ1~2秒
重大なエラー耳障りな2連ブザー音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 の触覚フィードバックとサウンドの組み合わせ
サウンドイベント触覚の種類強度
ボタンのクリック.light0.5
トグルスイッチ.medium0.6
エラー音.heavy0.9
成功音.selection0.4
ウィンドウを開く.soft0.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 to -18 dB控えめで、決して邪魔にならない
通知-18 to -12 dB注意を引くが、大きすぎない
エラー-15 to -9 dB気づきやすいが、不快ではない
システムサウンド-12 to -6 dB重要なイベント(起動/終了)

必ず用意するもの:

  1. サウンドの全体切り替え(オン/オフ)
  2. 音量スライダー(0-100%)
  3. システムのサイレントモードを尊重する

実装の簡易チェックリスト

  • Win31SoundManager クラスを作成する
  • CC ライセンスのベースサウンドを読み込む
  • プロシージャルな代替音(ディン、チャイム)を追加する
  • モバイル向けの触覚フィードバックとの組み合わせを実装する
  • サウンドの全体切り替えを追加する
  • Win31 のビジュアルテーマでテストする
  • CC サウンドの帰属表示を追加する
  • サンプルレートを確認する(最大 22kHz)

連携先

  • windows-3-1-web-designer - Win31 のビジュアルとオーディオを組み合わせた体験
  • sound-engineer - 必要に応じた高度な空間オーディオ
  • mobile-ux-optimizer - タッチ、触覚フィードバック、オーディオの連携
  • pwa-expert - オフラインでのサウンドキャッシュ

核心となるポイント:Win31 のサウンドが心地よかったのは、シンプルだったからです。短く明るいローファイな音が、気を散らすことなくすぐにフィードバックを返していました。8ビット量子化と限られた周波数特性が、耳障りさではなく温かみを加えていました。コピーではなく、CC ライセンスの代替音源でその精神を再現しましょう。

忘れないでください:必ずサウンドの切り替えを用意してください。ユーザーの同意なくサウンドを再生してはいけません。モバイルではオーディオと触覚フィードバックを組み合わせると、満足度を最大限に高められます。

コメント