@kawaijs/audio 0.1.3

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/README.md ADDED
@@ -0,0 +1,20 @@
1
+ # @kawaijs/audio
2
+
3
+ **Web Audio API sound, background music crossfading, and voice playback controller for Kawaijs visual novels.**
4
+
5
+ Part of the [Kawaijs](https://github.com/biagio-scaglia/KawaiJS) visual novel engine.
6
+
7
+ ## Installation
8
+
9
+ ```bash
10
+ npm install @kawaijs/audio
11
+ ```
12
+
13
+ ## Features
14
+ - **BGM Channel**: Smooth fade-in/fade-out crossfading and looping.
15
+ - **SFX Sound Pool**: Concurrent sound effect playback without clipping.
16
+ - **Voice Lines**: Dialogue voice line triggers with auto-stop on new dialogue.
17
+ - **StoryVM Integration**: `audioManager.attachToVM(vm)` automatically binds script `play music`, `play sound`, and `stop music` commands.
18
+
19
+ ## License
20
+ MIT © Biagio Scaglia
@@ -0,0 +1,42 @@
1
+ import type { StoryVM } from '@kawaijs/runtime';
2
+ export interface AudioOptions {
3
+ masterVolume?: number;
4
+ musicVolume?: number;
5
+ soundVolume?: number;
6
+ voiceVolume?: number;
7
+ }
8
+ export interface PlayMusicOptions {
9
+ fadein?: number;
10
+ loop?: boolean;
11
+ volume?: number;
12
+ }
13
+ export interface StopMusicOptions {
14
+ fadeout?: number;
15
+ }
16
+ export declare class AudioManager {
17
+ private masterVolume;
18
+ private musicVolume;
19
+ private soundVolume;
20
+ private voiceVolume;
21
+ private currentMusicAudio;
22
+ private currentMusicTrack;
23
+ private currentVoiceAudio;
24
+ private soundPool;
25
+ constructor(options?: AudioOptions);
26
+ setMasterVolume(val: number): void;
27
+ setMusicVolume(val: number): void;
28
+ setSoundVolume(val: number): void;
29
+ setVoiceVolume(val: number): void;
30
+ playMusic(src: string, options?: PlayMusicOptions): void;
31
+ stopMusic(options?: StopMusicOptions): void;
32
+ playSound(src: string, volume?: number): void;
33
+ playVoice(src: string, volume?: number): void;
34
+ stopVoice(): void;
35
+ /**
36
+ * Attaches the AudioManager to a StoryVM instance to automatically play/stop tracks.
37
+ */
38
+ attachToVM(vm: StoryVM, assetResolver?: (track: string, channel: 'music' | 'sound' | 'voice') => string): () => void;
39
+ private fadeVolume;
40
+ private updateActiveVolumes;
41
+ }
42
+ //# sourceMappingURL=audio-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audio-manager.d.ts","sourceRoot":"","sources":["../src/audio-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAc,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE5D,MAAM,WAAW,YAAY;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,WAAW,CAAS;IAE5B,OAAO,CAAC,iBAAiB,CAAiC;IAC1D,OAAO,CAAC,iBAAiB,CAAuB;IAChD,OAAO,CAAC,iBAAiB,CAAiC;IAC1D,OAAO,CAAC,SAAS,CAA0B;gBAE/B,OAAO,GAAE,YAAiB;IAO/B,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAKlC,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAOjC,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIjC,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAOjC,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB,GAAG,IAAI;IA+B5D,SAAS,CAAC,OAAO,GAAE,gBAAqB,GAAG,IAAI;IAmB/C,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,SAAI,GAAG,IAAI;IAcxC,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,SAAI,GAAG,IAAI;IAcxC,SAAS,IAAI,IAAI;IAQxB;;OAEG;IACI,UAAU,CACf,EAAE,EAAE,OAAO,EACX,aAAa,GAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,KAAK,MAAiB,GACxF,MAAM,IAAI;IAqBb,OAAO,CAAC,UAAU;IAuBlB,OAAO,CAAC,mBAAmB;CAQ5B"}
@@ -0,0 +1,164 @@
1
+ export class AudioManager {
2
+ masterVolume;
3
+ musicVolume;
4
+ soundVolume;
5
+ voiceVolume;
6
+ currentMusicAudio = null;
7
+ currentMusicTrack = null;
8
+ currentVoiceAudio = null;
9
+ soundPool = [];
10
+ constructor(options = {}) {
11
+ this.masterVolume = options.masterVolume ?? 1.0;
12
+ this.musicVolume = options.musicVolume ?? 0.8;
13
+ this.soundVolume = options.soundVolume ?? 1.0;
14
+ this.voiceVolume = options.voiceVolume ?? 1.0;
15
+ }
16
+ setMasterVolume(val) {
17
+ this.masterVolume = Math.max(0, Math.min(1, val));
18
+ this.updateActiveVolumes();
19
+ }
20
+ setMusicVolume(val) {
21
+ this.musicVolume = Math.max(0, Math.min(1, val));
22
+ if (this.currentMusicAudio) {
23
+ this.currentMusicAudio.volume = this.masterVolume * this.musicVolume;
24
+ }
25
+ }
26
+ setSoundVolume(val) {
27
+ this.soundVolume = Math.max(0, Math.min(1, val));
28
+ }
29
+ setVoiceVolume(val) {
30
+ this.voiceVolume = Math.max(0, Math.min(1, val));
31
+ if (this.currentVoiceAudio) {
32
+ this.currentVoiceAudio.volume = this.masterVolume * this.voiceVolume;
33
+ }
34
+ }
35
+ playMusic(src, options = {}) {
36
+ if (typeof Audio === 'undefined')
37
+ return;
38
+ if (this.currentMusicTrack === src && this.currentMusicAudio && !this.currentMusicAudio.paused) {
39
+ return; // already playing this track
40
+ }
41
+ const fadein = options.fadein ?? 0;
42
+ const loop = options.loop ?? true;
43
+ const targetVolume = (options.volume ?? 1) * this.masterVolume * this.musicVolume;
44
+ // Fade out previous music if active
45
+ if (this.currentMusicAudio) {
46
+ this.stopMusic({ fadeout: fadein > 0 ? fadein : 0.3 });
47
+ }
48
+ const audio = new Audio(src);
49
+ audio.loop = loop;
50
+ this.currentMusicAudio = audio;
51
+ this.currentMusicTrack = src;
52
+ if (fadein > 0) {
53
+ audio.volume = 0;
54
+ audio.play().catch(() => { });
55
+ this.fadeVolume(audio, 0, targetVolume, fadein * 1000);
56
+ }
57
+ else {
58
+ audio.volume = targetVolume;
59
+ audio.play().catch(() => { });
60
+ }
61
+ }
62
+ stopMusic(options = {}) {
63
+ const fadeout = options.fadeout ?? 0;
64
+ const audio = this.currentMusicAudio;
65
+ if (!audio)
66
+ return;
67
+ this.currentMusicAudio = null;
68
+ this.currentMusicTrack = null;
69
+ if (fadeout > 0) {
70
+ this.fadeVolume(audio, audio.volume, 0, fadeout * 1000, () => {
71
+ audio.pause();
72
+ audio.src = '';
73
+ });
74
+ }
75
+ else {
76
+ audio.pause();
77
+ audio.src = '';
78
+ }
79
+ }
80
+ playSound(src, volume = 1) {
81
+ if (typeof Audio === 'undefined')
82
+ return;
83
+ const audio = new Audio(src);
84
+ audio.volume = volume * this.masterVolume * this.soundVolume;
85
+ audio.play().catch(() => { });
86
+ this.soundPool.push(audio);
87
+ audio.addEventListener('ended', () => {
88
+ const idx = this.soundPool.indexOf(audio);
89
+ if (idx !== -1)
90
+ this.soundPool.splice(idx, 1);
91
+ });
92
+ }
93
+ playVoice(src, volume = 1) {
94
+ if (typeof Audio === 'undefined')
95
+ return;
96
+ if (this.currentVoiceAudio) {
97
+ this.currentVoiceAudio.pause();
98
+ this.currentVoiceAudio.src = '';
99
+ }
100
+ const audio = new Audio(src);
101
+ audio.volume = volume * this.masterVolume * this.voiceVolume;
102
+ audio.play().catch(() => { });
103
+ this.currentVoiceAudio = audio;
104
+ }
105
+ stopVoice() {
106
+ if (this.currentVoiceAudio) {
107
+ this.currentVoiceAudio.pause();
108
+ this.currentVoiceAudio.src = '';
109
+ this.currentVoiceAudio = null;
110
+ }
111
+ }
112
+ /**
113
+ * Attaches the AudioManager to a StoryVM instance to automatically play/stop tracks.
114
+ */
115
+ attachToVM(vm, assetResolver = (t) => t) {
116
+ return vm.onAudioEvent((event) => {
117
+ if (event.action === 'play' && event.track) {
118
+ const url = assetResolver(event.track, event.channel);
119
+ if (event.channel === 'music') {
120
+ this.playMusic(url, { fadein: event.fade, loop: event.loop });
121
+ }
122
+ else if (event.channel === 'sound') {
123
+ this.playSound(url);
124
+ }
125
+ else if (event.channel === 'voice') {
126
+ this.playVoice(url);
127
+ }
128
+ }
129
+ else if (event.action === 'stop') {
130
+ if (event.channel === 'music') {
131
+ this.stopMusic({ fadeout: event.fade });
132
+ }
133
+ else if (event.channel === 'voice') {
134
+ this.stopVoice();
135
+ }
136
+ }
137
+ });
138
+ }
139
+ fadeVolume(audio, from, to, durationMs, onComplete) {
140
+ const steps = 20;
141
+ const stepTime = durationMs / steps;
142
+ const volumeStep = (to - from) / steps;
143
+ let currentStep = 0;
144
+ const interval = setInterval(() => {
145
+ currentStep++;
146
+ audio.volume = Math.max(0, Math.min(1, from + volumeStep * currentStep));
147
+ if (currentStep >= steps) {
148
+ clearInterval(interval);
149
+ audio.volume = to;
150
+ if (onComplete)
151
+ onComplete();
152
+ }
153
+ }, stepTime);
154
+ }
155
+ updateActiveVolumes() {
156
+ if (this.currentMusicAudio) {
157
+ this.currentMusicAudio.volume = this.masterVolume * this.musicVolume;
158
+ }
159
+ if (this.currentVoiceAudio) {
160
+ this.currentVoiceAudio.volume = this.masterVolume * this.voiceVolume;
161
+ }
162
+ }
163
+ }
164
+ //# sourceMappingURL=audio-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audio-manager.js","sourceRoot":"","sources":["../src/audio-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from './audio-manager.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,2 @@
1
+ export * from './audio-manager.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC"}
package/package.json ADDED
@@ -0,0 +1,41 @@
1
+ {
2
+ "name": "@kawaijs/audio",
3
+ "version": "0.1.3",
4
+ "description": "Web Audio API sound, music crossfading, and voice management engine for Kawaijs visual novels",
5
+ "main": "./dist/index.js",
6
+ "types": "./dist/index.d.ts",
7
+ "type": "module",
8
+ "files": [
9
+ "dist",
10
+ "README.md"
11
+ ],
12
+ "publishConfig": {
13
+ "access": "public"
14
+ },
15
+ "repository": {
16
+ "type": "git",
17
+ "url": "git+https://github.com/biagio-scaglia/KawaiJS.git",
18
+ "directory": "packages/audio"
19
+ },
20
+ "bugs": {
21
+ "url": "https://github.com/biagio-scaglia/KawaiJS/issues"
22
+ },
23
+ "homepage": "https://github.com/biagio-scaglia/KawaiJS#readme",
24
+ "scripts": {
25
+ "build": "tsc",
26
+ "typecheck": "tsc --noEmit"
27
+ },
28
+ "dependencies": {
29
+ "@kawaijs/runtime": "^0.1.3"
30
+ },
31
+ "keywords": [
32
+ "kawaijs",
33
+ "audio",
34
+ "sound",
35
+ "music",
36
+ "web-audio",
37
+ "visual-novel"
38
+ ],
39
+ "author": "Biagio Scaglia",
40
+ "license": "MIT"
41
+ }