@mcptoolshop/claude-sfx 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.es.md +188 -0
- package/README.fr.md +188 -0
- package/README.hi.md +188 -0
- package/README.it.md +188 -0
- package/README.ja.md +188 -0
- package/README.md +188 -0
- package/README.pt-BR.md +188 -0
- package/README.zh.md +188 -0
- package/assets/logo.jpg +0 -0
- package/dist/ambient.d.ts +28 -0
- package/dist/ambient.js +179 -0
- package/dist/cli.d.ts +6 -0
- package/dist/cli.js +594 -0
- package/dist/config.d.ts +40 -0
- package/dist/config.js +104 -0
- package/dist/guard.d.ts +19 -0
- package/dist/guard.js +87 -0
- package/dist/hook-handler.d.ts +34 -0
- package/dist/hook-handler.js +200 -0
- package/dist/hooks.d.ts +35 -0
- package/dist/hooks.js +192 -0
- package/dist/player.d.ts +16 -0
- package/dist/player.js +109 -0
- package/dist/profiles.d.ts +103 -0
- package/dist/profiles.js +297 -0
- package/dist/synth.d.ts +72 -0
- package/dist/synth.js +254 -0
- package/dist/verbs.d.ts +25 -0
- package/dist/verbs.js +251 -0
- package/package.json +54 -0
- package/profiles/minimal.json +202 -0
- package/profiles/retro.json +200 -0
package/README.it.md
ADDED
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<a href="README.ja.md">日本語</a> | <a href="README.zh.md">中文</a> | <a href="README.es.md">Español</a> | <a href="README.fr.md">Français</a> | <a href="README.hi.md">हिन्दी</a> | <a href="README.md">English</a> | <a href="README.pt-BR.md">Português (BR)</a>
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
|
+
<p align="center">
|
|
6
|
+
<img src="https://raw.githubusercontent.com/mcp-tool-shop-org/brand/main/logos/claude-sfx/readme.png" width="400" alt="Claude-SFX">
|
|
7
|
+
</p>
|
|
8
|
+
|
|
9
|
+
<p align="center">
|
|
10
|
+
<a href="https://www.npmjs.com/package/claude-sfx"><img src="https://img.shields.io/npm/v/claude-sfx" alt="npm version"></a>
|
|
11
|
+
<a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue" alt="MIT License"></a>
|
|
12
|
+
<a href="https://mcp-tool-shop-org.github.io/claude-sfx/"><img src="https://img.shields.io/badge/Landing_Page-live-blue" alt="Landing Page"></a>
|
|
13
|
+
</p>
|
|
14
|
+
|
|
15
|
+
Feedback audio procedurale per [Claude Code](https://docs.anthropic.com/en/docs/claude-code). Ogni chiamata a uno strumento, modifica di un file, ricerca, push Git e invio di un agente produce un suono distinto, generato tramite calcoli matematici, non tramite file audio.
|
|
16
|
+
|
|
17
|
+
## Guida rapida
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
npm install -g claude-sfx
|
|
21
|
+
cd your-project
|
|
22
|
+
claude-sfx init # install hooks into .claude/settings.json
|
|
23
|
+
claude-sfx demo # hear all 7 verbs
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Ecco tutto. Claude Code ora riprodurrà dei suoni mentre lavora.
|
|
27
|
+
|
|
28
|
+
## Perché il feedback audio?
|
|
29
|
+
|
|
30
|
+
Quando un agente AI legge, scrive, cerca e distribuisce al posto tuo, si perde la visibilità. Si sta fissando un testo che scorre. Il feedback audio ripristina la consapevolezza:
|
|
31
|
+
|
|
32
|
+
- **Accessibilità** — ascoltare i cambiamenti di stato, gli errori e i completamenti senza guardare il terminale.
|
|
33
|
+
- **Fluidità** — sapere se un test è superato o se un aggiornamento è stato completato senza dover cambiare contesto.
|
|
34
|
+
- **Presenza** — l'agente sembra un collaboratore, non una scatola nera.
|
|
35
|
+
|
|
36
|
+
## I 7 verbi
|
|
37
|
+
|
|
38
|
+
Ogni azione di Claude Code corrisponde a uno dei 7 verbi principali. I modificatori (stato, ambito, direzione) alterano il suono senza compromettere la coerenza.
|
|
39
|
+
|
|
40
|
+
| Verbo | Trigger | Suono |
|
|
41
|
+
| --- | --- | --- |
|
|
42
|
+
| **intake** | `Read`, `WebFetch`, `WebSearch` | Onda sinusoidale in aumento — qualcosa sta arrivando |
|
|
43
|
+
| **transform** | `Edit` | Impulso con texture FM — rimodellamento |
|
|
44
|
+
| **commit** | `Write`, `NotebookEdit`, `git commit` | Tono di timbro deciso — completato |
|
|
45
|
+
| **navigate** | `Grep`, `Glob` | Ronzio simile a un sonar — scansione |
|
|
46
|
+
| **execute** | `Bash`, `npm test`, `tsc` | Esplosione di rumore + tono — azione meccanica |
|
|
47
|
+
| **move** | `mv`, `cp`, avvio di un sub-agente | Fruscio del vento — spostamento dell'aria |
|
|
48
|
+
| **sync** | `git push`, `git pull` | Fruscio drammatico + ancoraggio tonale |
|
|
49
|
+
|
|
50
|
+
### Modificatori
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
claude-sfx play navigate --status ok # bright ping (octave harmonic)
|
|
54
|
+
claude-sfx play navigate --status err # low detuned ping (dissonance)
|
|
55
|
+
claude-sfx play navigate --status warn # tremolo ping
|
|
56
|
+
claude-sfx play sync --direction up # rising whoosh (push)
|
|
57
|
+
claude-sfx play sync --direction down # falling whoosh (pull)
|
|
58
|
+
claude-sfx play intake --scope remote # longer tail (distance feel)
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### Rilevamento intelligente di Bash
|
|
62
|
+
|
|
63
|
+
Il gestore degli eventi analizza i comandi Bash per scegliere il suono corretto:
|
|
64
|
+
|
|
65
|
+
| Comando Bash | Verbo | Stato |
|
|
66
|
+
| --- | --- | --- |
|
|
67
|
+
| `git push` | sync (in alto) | dal codice di uscita |
|
|
68
|
+
| `git pull` | sync (in basso) | dal codice di uscita |
|
|
69
|
+
| `npm test`, `pytest` | esegui | dal codice di uscita |
|
|
70
|
+
| `tsc`, `npm run build` | esegui | dal codice di uscita |
|
|
71
|
+
| `mv`, `cp` | sposta | — |
|
|
72
|
+
| `rm` | sposta | avviso |
|
|
73
|
+
| tutto il resto | esegui | dal codice di uscita |
|
|
74
|
+
|
|
75
|
+
## Profili
|
|
76
|
+
|
|
77
|
+
Palette di suoni che cambiano completamente il carattere con un'unica opzione.
|
|
78
|
+
|
|
79
|
+
| Profilo | Carattere |
|
|
80
|
+
| --- | --- |
|
|
81
|
+
| **minimal** (default) | Toni a onda sinusoidale — sottili, professionali, adatti all'uso quotidiano |
|
|
82
|
+
| **retro** | Cinguettii a onda quadra a 8 bit — divertenti ma controllati |
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
claude-sfx demo --profile retro # hear retro palette
|
|
86
|
+
claude-sfx preview minimal # audition all sounds + modifiers
|
|
87
|
+
claude-sfx config set profile retro # change default globally
|
|
88
|
+
claude-sfx config repo retro # use retro in current directory only
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### Profili personalizzati
|
|
92
|
+
|
|
93
|
+
Copia `profiles/minimal.json`, modifica i parametri di sintesi e caricalo:
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
claude-sfx play navigate --profile ./my-profile.json
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
Ogni numero nel file JSON corrisponde direttamente al motore di sintesi: forma d'onda, frequenza, durata, inviluppo (ADSR), profondità FM, larghezza di banda, guadagno.
|
|
100
|
+
|
|
101
|
+
## Anti-fastidio
|
|
102
|
+
|
|
103
|
+
Ciò che distingue un prodotto da un giocattolo.
|
|
104
|
+
|
|
105
|
+
| Funzionalità | Comportamento |
|
|
106
|
+
| --- | --- |
|
|
107
|
+
| **Debounce** | Lo stesso verbo entro 200 ms → un suono |
|
|
108
|
+
| **Rate limit** | Max 8 suoni per una finestra di 10 secondi |
|
|
109
|
+
| **Quiet hours** | Tutti i suoni disattivati durante le ore configurate |
|
|
110
|
+
| **Mute** | Attivazione/disattivazione istantanea, sopravvive al riavvio della sessione |
|
|
111
|
+
| **Volume** | Controllo del guadagno da 0 a 100 |
|
|
112
|
+
| **Per-verb disable** | Disattivare verbi specifici che non si desidera utilizzare |
|
|
113
|
+
|
|
114
|
+
```bash
|
|
115
|
+
claude-sfx mute # instant silence
|
|
116
|
+
claude-sfx unmute
|
|
117
|
+
claude-sfx volume 40 # quieter
|
|
118
|
+
claude-sfx config set quiet-start 22:00 # quiet after 10pm
|
|
119
|
+
claude-sfx config set quiet-end 07:00 # until 7am
|
|
120
|
+
claude-sfx disable navigate # no more search pings
|
|
121
|
+
claude-sfx enable navigate # bring it back
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
## Ambiente (operazioni a lunga esecuzione)
|
|
125
|
+
|
|
126
|
+
Per i comandi che richiedono molto tempo (compilazioni, distribuzioni, suite di test di grandi dimensioni):
|
|
127
|
+
|
|
128
|
+
```bash
|
|
129
|
+
claude-sfx ambient-start # low drone fades in
|
|
130
|
+
# ... operation runs ...
|
|
131
|
+
claude-sfx ambient-resolve # drone stops, resolution stinger plays
|
|
132
|
+
claude-sfx ambient-stop # stop drone silently (no stinger)
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
## Suoni della sessione
|
|
136
|
+
|
|
137
|
+
```bash
|
|
138
|
+
claude-sfx session-start # two-note ascending chime (boot)
|
|
139
|
+
claude-sfx session-end # two-note descending chime (closure)
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
## Tutti i comandi
|
|
143
|
+
|
|
144
|
+
```
|
|
145
|
+
Setup:
|
|
146
|
+
init Install hooks into .claude/settings.json
|
|
147
|
+
uninstall Remove hooks
|
|
148
|
+
|
|
149
|
+
Playback:
|
|
150
|
+
play <verb> [options] Play a sound (goes through guard)
|
|
151
|
+
demo [--profile <name>] Play all 7 verbs
|
|
152
|
+
preview [profile] Audition all sounds in a profile
|
|
153
|
+
session-start / session-end Chimes
|
|
154
|
+
ambient-start / ambient-resolve / ambient-stop
|
|
155
|
+
|
|
156
|
+
Config:
|
|
157
|
+
mute / unmute Toggle all sounds
|
|
158
|
+
volume [0-100] Get or set volume
|
|
159
|
+
config Print current config
|
|
160
|
+
config set <key> <value> Set a value
|
|
161
|
+
config reset Reset to defaults
|
|
162
|
+
config repo <profile|clear> Per-directory profile override
|
|
163
|
+
disable / enable <verb> Toggle specific verbs
|
|
164
|
+
export [dir] [--profile] Export all sounds as .wav files
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
## Come funziona
|
|
168
|
+
|
|
169
|
+
Nessun file audio. Ogni suono è generato al runtime tramite calcoli matematici:
|
|
170
|
+
|
|
171
|
+
- **Oscillatori** — sinusoidale, quadrato, a dente di sega, triangolare, rumore bianco
|
|
172
|
+
- **Involucri ADSR** — attacco, decadimento, sustain, rilascio
|
|
173
|
+
- **Sintesi FM** — modulazione di frequenza per creare texture
|
|
174
|
+
- **Filtro a variabile di stato** — rumore filtrato in banda passante per effetti di "whoosh"
|
|
175
|
+
- **Sweep di frequenza** — interpolazione lineare per creare movimento
|
|
176
|
+
- **Limitatore di volume** — compressione "soft-knee", limite massimo rigido
|
|
177
|
+
|
|
178
|
+
L'intero pacchetto è composto da circa 2.800 righe di codice TypeScript e non presenta dipendenze per la produzione. I suoni vengono generati come buffer PCM, codificati in formato WAV in memoria e riprodotti tramite il lettore audio nativo del sistema operativo (PowerShell su Windows, afplay su macOS, aplay su Linux).
|
|
179
|
+
|
|
180
|
+
## Requisiti
|
|
181
|
+
|
|
182
|
+
- Node.js 18 o superiore
|
|
183
|
+
- Claude Code
|
|
184
|
+
- Uscita audio del sistema (altoparlanti o cuffie)
|
|
185
|
+
|
|
186
|
+
## Licenza
|
|
187
|
+
|
|
188
|
+
[MIT](LICENSE)
|
package/README.ja.md
ADDED
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<a href="README.md">English</a> | <a href="README.zh.md">中文</a> | <a href="README.es.md">Español</a> | <a href="README.fr.md">Français</a> | <a href="README.hi.md">हिन्दी</a> | <a href="README.it.md">Italiano</a> | <a href="README.pt-BR.md">Português (BR)</a>
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
|
+
<p align="center">
|
|
6
|
+
<img src="https://raw.githubusercontent.com/mcp-tool-shop-org/brand/main/logos/claude-sfx/readme.png" width="400" alt="Claude-SFX">
|
|
7
|
+
</p>
|
|
8
|
+
|
|
9
|
+
<p align="center">
|
|
10
|
+
<a href="https://www.npmjs.com/package/claude-sfx"><img src="https://img.shields.io/npm/v/claude-sfx" alt="npm version"></a>
|
|
11
|
+
<a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue" alt="MIT License"></a>
|
|
12
|
+
<a href="https://mcp-tool-shop-org.github.io/claude-sfx/"><img src="https://img.shields.io/badge/Landing_Page-live-blue" alt="Landing Page"></a>
|
|
13
|
+
</p>
|
|
14
|
+
|
|
15
|
+
[Claude Code](https://docs.anthropic.com/en/docs/claude-code) のための、プロシージャルなオーディオフィードバック機能。 ツール呼び出し、ファイル編集、検索、git push、エージェントの起動など、すべての操作に対して、数学に基づいて生成された独特のサウンドが再生されます(オーディオファイルを使用していません)。
|
|
16
|
+
|
|
17
|
+
## クイックスタート
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
npm install -g claude-sfx
|
|
21
|
+
cd your-project
|
|
22
|
+
claude-sfx init # install hooks into .claude/settings.json
|
|
23
|
+
claude-sfx demo # hear all 7 verbs
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
これで完了です。Claude Code は、動作中にサウンドを再生するようになります。
|
|
27
|
+
|
|
28
|
+
## なぜオーディオフィードバックが必要なのか?
|
|
29
|
+
|
|
30
|
+
AIエージェントがあなたの代わりに読み込み、書き込み、検索し、デプロイを行う場合、あなたは状況を把握しにくくなります。 画面に表示されるテキストをただ見ているだけです。 オーディオフィードバックは、状況を把握する能力を取り戻します。
|
|
31
|
+
|
|
32
|
+
- **アクセシビリティ:** ターミナルを見なくても、状態の変化、エラー、完了などを音声で把握できます。
|
|
33
|
+
- **スムーズな作業:** テストが成功したか、push が完了したかを、コンテキストを切り替えることなく音声で知ることができます。
|
|
34
|
+
- **没入感:** エージェントが単なるブラックボックスではなく、協力者のように感じられます。
|
|
35
|
+
|
|
36
|
+
## 7つのアクション
|
|
37
|
+
|
|
38
|
+
Claude Code のすべての操作は、7つのコアアクションのいずれかに対応します。 修飾子(ステータス、範囲、方向)は、サウンドを変更しますが、一貫性を保ちます。
|
|
39
|
+
|
|
40
|
+
| アクション | トリガー | サウンド |
|
|
41
|
+
| --- | --- | --- |
|
|
42
|
+
| **intake** | `Read`, `WebFetch`, `WebSearch` | 緩やかな上昇音 - 何かが始まる |
|
|
43
|
+
| **transform** | `Edit` | FMテクスチャのパルス - 形状の変化 |
|
|
44
|
+
| **commit** | `Write`, `NotebookEdit`, `git commit` | 鋭いスタンプ音 - 完了 |
|
|
45
|
+
| **navigate** | `Grep`, `Glob` | ソナーの音 - スキャン |
|
|
46
|
+
| **execute** | `Bash`, `npm test`, `tsc` | ノイズと音 - 機械的な動作 |
|
|
47
|
+
| **move** | `mv`, `cp`, サージェントの起動 | 風の音 - 空気移動 |
|
|
48
|
+
| **sync** | `git push`, `git pull` | ドラマチックな風の音 + 音のアンカー |
|
|
49
|
+
|
|
50
|
+
### 修飾子
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
claude-sfx play navigate --status ok # bright ping (octave harmonic)
|
|
54
|
+
claude-sfx play navigate --status err # low detuned ping (dissonance)
|
|
55
|
+
claude-sfx play navigate --status warn # tremolo ping
|
|
56
|
+
claude-sfx play sync --direction up # rising whoosh (push)
|
|
57
|
+
claude-sfx play sync --direction down # falling whoosh (pull)
|
|
58
|
+
claude-sfx play intake --scope remote # longer tail (distance feel)
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### スマートなBash検出
|
|
62
|
+
|
|
63
|
+
フックハンドラは、Bashコマンドを検査して、適切なサウンドを選択します。
|
|
64
|
+
|
|
65
|
+
| Bashコマンド | アクション | ステータス |
|
|
66
|
+
| --- | --- | --- |
|
|
67
|
+
| `git push` | `sync (up)` | 終了コードから |
|
|
68
|
+
| `git pull` | `sync (down)` | 終了コードから |
|
|
69
|
+
| `npm test`, `pytest` | 実行 | 終了コードから |
|
|
70
|
+
| `tsc`, `npm run build` | 実行 | 終了コードから |
|
|
71
|
+
| `mv`, `cp` | 移動 | — |
|
|
72
|
+
| `rm` | 移動 | 警告 |
|
|
73
|
+
| その他すべて | 実行 | 終了コードから |
|
|
74
|
+
|
|
75
|
+
## プロファイル
|
|
76
|
+
|
|
77
|
+
1つのフラグで、サウンド全体を変更するサウンドパレット。
|
|
78
|
+
|
|
79
|
+
| プロファイル | サウンド |
|
|
80
|
+
| --- | --- |
|
|
81
|
+
| **minimal** (default) | サイン波の音 - 控えめでプロフェッショナル、日常的に使用可能 |
|
|
82
|
+
| **retro** | 正方形波の8ビットの音 - 楽しいが、コントロールされている |
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
claude-sfx demo --profile retro # hear retro palette
|
|
86
|
+
claude-sfx preview minimal # audition all sounds + modifiers
|
|
87
|
+
claude-sfx config set profile retro # change default globally
|
|
88
|
+
claude-sfx config repo retro # use retro in current directory only
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### カスタムプロファイル
|
|
92
|
+
|
|
93
|
+
`profiles/minimal.json` をコピーし、合成パラメータを編集して、ロードします。
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
claude-sfx play navigate --profile ./my-profile.json
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
JSON内のすべての数値は、シンセエンジンに直接対応します。波形、周波数、持続時間、エンベロープ(ADSR)、FM深度、帯域幅、ゲイン。
|
|
100
|
+
|
|
101
|
+
## 迷惑防止機能
|
|
102
|
+
|
|
103
|
+
製品と玩具の違いを生み出すもの。
|
|
104
|
+
|
|
105
|
+
| 機能 | 動作 |
|
|
106
|
+
| --- | --- |
|
|
107
|
+
| **Debounce** | 同じアクションが200ms以内に発生した場合 → 1つのサウンド |
|
|
108
|
+
| **Rate limit** | 10秒のウィンドウあたり最大8つのサウンド |
|
|
109
|
+
| **Quiet hours** | 設定された時間帯中は、すべてのサウンドが抑制されます。 |
|
|
110
|
+
| **Mute** | インスタントで切り替え可能、セッションの再起動後も有効 |
|
|
111
|
+
| **Volume** | 0~100のゲインコントロール |
|
|
112
|
+
| **Per-verb disable** | 不要な特定のサウンドを無効にできます。 |
|
|
113
|
+
|
|
114
|
+
```bash
|
|
115
|
+
claude-sfx mute # instant silence
|
|
116
|
+
claude-sfx unmute
|
|
117
|
+
claude-sfx volume 40 # quieter
|
|
118
|
+
claude-sfx config set quiet-start 22:00 # quiet after 10pm
|
|
119
|
+
claude-sfx config set quiet-end 07:00 # until 7am
|
|
120
|
+
claude-sfx disable navigate # no more search pings
|
|
121
|
+
claude-sfx enable navigate # bring it back
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
## 環境音(長時間の操作)
|
|
125
|
+
|
|
126
|
+
ビルド、デプロイ、大規模なテストスイートなど、時間がかかるコマンドの場合:
|
|
127
|
+
|
|
128
|
+
```bash
|
|
129
|
+
claude-sfx ambient-start # low drone fades in
|
|
130
|
+
# ... operation runs ...
|
|
131
|
+
claude-sfx ambient-resolve # drone stops, resolution stinger plays
|
|
132
|
+
claude-sfx ambient-stop # stop drone silently (no stinger)
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
## セッションサウンド
|
|
136
|
+
|
|
137
|
+
```bash
|
|
138
|
+
claude-sfx session-start # two-note ascending chime (boot)
|
|
139
|
+
claude-sfx session-end # two-note descending chime (closure)
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
## すべてのコマンド
|
|
143
|
+
|
|
144
|
+
```
|
|
145
|
+
Setup:
|
|
146
|
+
init Install hooks into .claude/settings.json
|
|
147
|
+
uninstall Remove hooks
|
|
148
|
+
|
|
149
|
+
Playback:
|
|
150
|
+
play <verb> [options] Play a sound (goes through guard)
|
|
151
|
+
demo [--profile <name>] Play all 7 verbs
|
|
152
|
+
preview [profile] Audition all sounds in a profile
|
|
153
|
+
session-start / session-end Chimes
|
|
154
|
+
ambient-start / ambient-resolve / ambient-stop
|
|
155
|
+
|
|
156
|
+
Config:
|
|
157
|
+
mute / unmute Toggle all sounds
|
|
158
|
+
volume [0-100] Get or set volume
|
|
159
|
+
config Print current config
|
|
160
|
+
config set <key> <value> Set a value
|
|
161
|
+
config reset Reset to defaults
|
|
162
|
+
config repo <profile|clear> Per-directory profile override
|
|
163
|
+
disable / enable <verb> Toggle specific verbs
|
|
164
|
+
export [dir] [--profile] Export all sounds as .wav files
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
## 仕組み
|
|
168
|
+
|
|
169
|
+
オーディオファイルは一切使用していません。すべてのサウンドは、実行時に数学に基づいて合成されます。
|
|
170
|
+
|
|
171
|
+
- **発振器**:サイン波、矩形波、のこぎり波、三角波、ホワイトノイズ
|
|
172
|
+
- **ADSRエンベロープ**:アタック、ディケイ、サスティン、リリース
|
|
173
|
+
- **FMシンセシス**:テクスチャを作成するための周波数変調
|
|
174
|
+
- **ステートバリアブルフィルター**:ウィーシュ音を作成するためのバンドパスフィルターを通したノイズ
|
|
175
|
+
- **周波数スイープ**:動きを表現するための線形補間
|
|
176
|
+
- **ラウドネスリミッター**:ソフトニー・コンプレッション、ハード・シーリング
|
|
177
|
+
|
|
178
|
+
このパッケージ全体は約2,800行のTypeScriptで記述されており、外部依存性は一切ありません。音はPCMバッファとして生成され、メモリ内でWAV形式にエンコードされ、OSネイティブのオーディオプレイヤーを通じて再生されます(WindowsではPowerShell、macOSではafplay、Linuxではaplay)。
|
|
179
|
+
|
|
180
|
+
## 必要条件
|
|
181
|
+
|
|
182
|
+
- Node.js 18以降
|
|
183
|
+
- Claude Code
|
|
184
|
+
- システムオーディオ出力(スピーカーまたはヘッドホン)
|
|
185
|
+
|
|
186
|
+
## ライセンス
|
|
187
|
+
|
|
188
|
+
[MIT](LICENSE)
|
package/README.md
ADDED
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<a href="README.ja.md">日本語</a> | <a href="README.zh.md">中文</a> | <a href="README.es.md">Español</a> | <a href="README.fr.md">Français</a> | <a href="README.hi.md">हिन्दी</a> | <a href="README.it.md">Italiano</a> | <a href="README.pt-BR.md">Português (BR)</a>
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
|
+
<p align="center">
|
|
6
|
+
<img src="https://raw.githubusercontent.com/mcp-tool-shop-org/brand/main/logos/claude-sfx/readme.png" width="400" alt="Claude-SFX">
|
|
7
|
+
</p>
|
|
8
|
+
|
|
9
|
+
<p align="center">
|
|
10
|
+
<a href="https://www.npmjs.com/package/@mcptoolshop/claude-sfx"><img src="https://img.shields.io/npm/v/@mcptoolshop/claude-sfx" alt="npm version"></a>
|
|
11
|
+
<a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue" alt="MIT License"></a>
|
|
12
|
+
<a href="https://mcp-tool-shop-org.github.io/claude-sfx/"><img src="https://img.shields.io/badge/Landing_Page-live-blue" alt="Landing Page"></a>
|
|
13
|
+
</p>
|
|
14
|
+
|
|
15
|
+
Procedural audio feedback for [Claude Code](https://docs.anthropic.com/en/docs/claude-code). Every tool call, file edit, search, git push, and agent dispatch gets a distinct sound — synthesized from math, not audio files.
|
|
16
|
+
|
|
17
|
+
## Quick Start
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
npm install -g @mcptoolshop/claude-sfx
|
|
21
|
+
cd your-project
|
|
22
|
+
claude-sfx init # install hooks into .claude/settings.json
|
|
23
|
+
claude-sfx demo # hear all 7 verbs
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
That's it. Claude Code will now play sounds as it works.
|
|
27
|
+
|
|
28
|
+
## Why Audio Feedback?
|
|
29
|
+
|
|
30
|
+
When an AI agent reads, writes, searches, and deploys on your behalf, you lose visibility. You're staring at text scrolling past. Audio feedback restores awareness:
|
|
31
|
+
|
|
32
|
+
- **Accessibility** — hear state changes, errors, and completions without watching the terminal
|
|
33
|
+
- **Flow** — know a test passed or a push landed without context-switching
|
|
34
|
+
- **Presence** — the agent feels like a collaborator, not a black box
|
|
35
|
+
|
|
36
|
+
## The 7 Verbs
|
|
37
|
+
|
|
38
|
+
Every Claude Code action maps to one of 7 core verbs. Modifiers (status, scope, direction) alter the sound without breaking coherence.
|
|
39
|
+
|
|
40
|
+
| Verb | Triggers | Sound |
|
|
41
|
+
|---|---|---|
|
|
42
|
+
| **intake** | `Read`, `WebFetch`, `WebSearch` | Soft rising sine — something coming in |
|
|
43
|
+
| **transform** | `Edit` | FM-textured pulse — reshaping |
|
|
44
|
+
| **commit** | `Write`, `NotebookEdit`, `git commit` | Sharp stamp tone — sealed |
|
|
45
|
+
| **navigate** | `Grep`, `Glob` | Sonar ping — scanning |
|
|
46
|
+
| **execute** | `Bash`, `npm test`, `tsc` | Noise burst + tone — mechanical action |
|
|
47
|
+
| **move** | `mv`, `cp`, subagent spawn | Wind whoosh — air displacement |
|
|
48
|
+
| **sync** | `git push`, `git pull` | Dramatic whoosh + tonal anchor |
|
|
49
|
+
|
|
50
|
+
### Modifiers
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
claude-sfx play navigate --status ok # bright ping (octave harmonic)
|
|
54
|
+
claude-sfx play navigate --status err # low detuned ping (dissonance)
|
|
55
|
+
claude-sfx play navigate --status warn # tremolo ping
|
|
56
|
+
claude-sfx play sync --direction up # rising whoosh (push)
|
|
57
|
+
claude-sfx play sync --direction down # falling whoosh (pull)
|
|
58
|
+
claude-sfx play intake --scope remote # longer tail (distance feel)
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### Smart Bash Detection
|
|
62
|
+
|
|
63
|
+
The hook handler inspects Bash commands to pick the right sound:
|
|
64
|
+
|
|
65
|
+
| Bash Command | Verb | Status |
|
|
66
|
+
|---|---|---|
|
|
67
|
+
| `git push` | sync (up) | from exit code |
|
|
68
|
+
| `git pull` | sync (down) | from exit code |
|
|
69
|
+
| `npm test`, `pytest` | execute | from exit code |
|
|
70
|
+
| `tsc`, `npm run build` | execute | from exit code |
|
|
71
|
+
| `mv`, `cp` | move | — |
|
|
72
|
+
| `rm` | move | warn |
|
|
73
|
+
| everything else | execute | from exit code |
|
|
74
|
+
|
|
75
|
+
## Profiles
|
|
76
|
+
|
|
77
|
+
Sound palettes that change the entire character with one flag.
|
|
78
|
+
|
|
79
|
+
| Profile | Character |
|
|
80
|
+
|---|---|
|
|
81
|
+
| **minimal** (default) | Sine-wave tones — subtle, professional, daily-driver |
|
|
82
|
+
| **retro** | Square-wave 8-bit chirps — fun but controlled |
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
claude-sfx demo --profile retro # hear retro palette
|
|
86
|
+
claude-sfx preview minimal # audition all sounds + modifiers
|
|
87
|
+
claude-sfx config set profile retro # change default globally
|
|
88
|
+
claude-sfx config repo retro # use retro in current directory only
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### Custom Profiles
|
|
92
|
+
|
|
93
|
+
Copy `profiles/minimal.json`, edit the synthesis parameters, load it:
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
claude-sfx play navigate --profile ./my-profile.json
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
Every number in the JSON maps directly to the synth engine — waveform, frequency, duration, envelope (ADSR), FM depth, bandwidth, gain.
|
|
100
|
+
|
|
101
|
+
## Anti-Annoyance
|
|
102
|
+
|
|
103
|
+
What separates a product from a toy.
|
|
104
|
+
|
|
105
|
+
| Feature | Behavior |
|
|
106
|
+
|---|---|
|
|
107
|
+
| **Debounce** | Same verb within 200ms → one sound |
|
|
108
|
+
| **Rate limit** | Max 8 sounds per 10-second window |
|
|
109
|
+
| **Quiet hours** | All sounds suppressed during configured hours |
|
|
110
|
+
| **Mute** | Instant toggle, survives session restart |
|
|
111
|
+
| **Volume** | 0–100 gain control |
|
|
112
|
+
| **Per-verb disable** | Turn off specific verbs you don't want |
|
|
113
|
+
|
|
114
|
+
```bash
|
|
115
|
+
claude-sfx mute # instant silence
|
|
116
|
+
claude-sfx unmute
|
|
117
|
+
claude-sfx volume 40 # quieter
|
|
118
|
+
claude-sfx config set quiet-start 22:00 # quiet after 10pm
|
|
119
|
+
claude-sfx config set quiet-end 07:00 # until 7am
|
|
120
|
+
claude-sfx disable navigate # no more search pings
|
|
121
|
+
claude-sfx enable navigate # bring it back
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
## Ambient (Long-Running Operations)
|
|
125
|
+
|
|
126
|
+
For commands that take a while (builds, deploys, large test suites):
|
|
127
|
+
|
|
128
|
+
```bash
|
|
129
|
+
claude-sfx ambient-start # low drone fades in
|
|
130
|
+
# ... operation runs ...
|
|
131
|
+
claude-sfx ambient-resolve # drone stops, resolution stinger plays
|
|
132
|
+
claude-sfx ambient-stop # stop drone silently (no stinger)
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
## Session Sounds
|
|
136
|
+
|
|
137
|
+
```bash
|
|
138
|
+
claude-sfx session-start # two-note ascending chime (boot)
|
|
139
|
+
claude-sfx session-end # two-note descending chime (closure)
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
## All Commands
|
|
143
|
+
|
|
144
|
+
```
|
|
145
|
+
Setup:
|
|
146
|
+
init Install hooks into .claude/settings.json
|
|
147
|
+
uninstall Remove hooks
|
|
148
|
+
|
|
149
|
+
Playback:
|
|
150
|
+
play <verb> [options] Play a sound (goes through guard)
|
|
151
|
+
demo [--profile <name>] Play all 7 verbs
|
|
152
|
+
preview [profile] Audition all sounds in a profile
|
|
153
|
+
session-start / session-end Chimes
|
|
154
|
+
ambient-start / ambient-resolve / ambient-stop
|
|
155
|
+
|
|
156
|
+
Config:
|
|
157
|
+
mute / unmute Toggle all sounds
|
|
158
|
+
volume [0-100] Get or set volume
|
|
159
|
+
config Print current config
|
|
160
|
+
config set <key> <value> Set a value
|
|
161
|
+
config reset Reset to defaults
|
|
162
|
+
config repo <profile|clear> Per-directory profile override
|
|
163
|
+
disable / enable <verb> Toggle specific verbs
|
|
164
|
+
export [dir] [--profile] Export all sounds as .wav files
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
## How It Works
|
|
168
|
+
|
|
169
|
+
Zero audio files. Every sound is synthesized at runtime from math:
|
|
170
|
+
|
|
171
|
+
- **Oscillators** — sine, square, sawtooth, triangle, white noise
|
|
172
|
+
- **ADSR envelopes** — attack, decay, sustain, release
|
|
173
|
+
- **FM synthesis** — frequency modulation for texture
|
|
174
|
+
- **State-variable filter** — bandpass-filtered noise for whooshes
|
|
175
|
+
- **Frequency sweeps** — linear interpolation for movement
|
|
176
|
+
- **Loudness limiter** — soft-knee compression, hard ceiling
|
|
177
|
+
|
|
178
|
+
The entire package is ~2,800 lines of TypeScript with zero production dependencies. Sounds are generated as PCM buffers, encoded to WAV in memory, and played through the OS native audio player (PowerShell on Windows, afplay on macOS, aplay on Linux).
|
|
179
|
+
|
|
180
|
+
## Requirements
|
|
181
|
+
|
|
182
|
+
- Node.js 18+
|
|
183
|
+
- Claude Code
|
|
184
|
+
- System audio output (speakers or headphones)
|
|
185
|
+
|
|
186
|
+
## License
|
|
187
|
+
|
|
188
|
+
[MIT](LICENSE)
|