Loading...
Loading...
Compare original and translation side by side
Game.initpixi-vn-getting-startedtoneGame.initpixi-vn-getting-startedtonesoundSoundManagerInterfaceSoundRegistryimport { sound } from "@drincs/pixi-vn";@drincs/pixi-vn/soundpixi-vn-getting-startedsoundvolumeAllmuteAll()channelsAudioChannelInterface"music""sfx""voice"volumepanmutedsound.defaultChannelAlias"general"mediaMediaInterfaceplay()pausedvolumeParamloopmuteplaybackRatesound.find()pause()resume()stop()assetspixi-vn-assetssound.volumeAll[0, 1]channel.volume = 0.5sound.volumeAll = 0.7volumeParam<"decibels">Tone.Playermedia.volume.value = -6media.volume.rampTo(-Infinity, 2)volumeplay()[0, 1]channel.volume = 90media.volume.value = 9090[0, 1]channel.backgroundsoundSoundManagerInterfaceSoundRegistryimport { sound } from "@drincs/pixi-vn";@drincs/pixi-vn/soundpixi-vn-getting-startedsoundvolumeAllmuteAll()channelsAudioChannelInterface"music""sfx""voice"volumepanmutedsound.defaultChannelAlias"general"mediaMediaInterfaceplay()pausedvolumeParamloopmuteplaybackRatesound.find()pause()resume()stop()assetspixi-vn-assetssound.volumeAll[0, 1]channel.volume = 0.5sound.volumeAll = 0.7volumeTone.PlayerParam<"decibels">media.volume.value = -6media.volume.rampTo(-Infinity, 2)play()volume[0, 1]channel.volume = 90media.volume.value = 9090[0, 1]channel.backgroundimport { sound } from "@drincs/pixi-vn";
// Create a background music channel once (e.g. right after Game.init resolves)
sound.channels.add("music", { background: true, volume: 0.8 });
// Start looping music through it
await sound.play("theme-song", { channel: "music", loop: true, volume: 0.8 });play()sound.play(alias: string, options?: SoundPlayOptionsWithChannel): Promise<MediaInterface>;
sound.play(mediaAlias: string, soundAlias: string, options?: SoundPlayOptionsWithChannel): Promise<MediaInterface>;options.channelsound.defaultChannelAliassound.load()play()play()channelsound.channels.find("music").play("theme-song", { loop: true })import { sound } from "@drincs/pixi-vn";
// Create a background music channel once (e.g. right after Game.init resolves)
sound.channels.add("music", { background: true, volume: 0.8 });
// Start looping music through it
await sound.play("theme-song", { channel: "music", loop: true, volume: 0.8 });play()sound.play(alias: string, options?: SoundPlayOptionsWithChannel): Promise<MediaInterface>;
sound.play(mediaAlias: string, soundAlias: string, options?: SoundPlayOptionsWithChannel): Promise<MediaInterface>;options.channelsound.defaultChannelAlias"general"sound.load()play()play()channelsound.channels.find("music").play("theme-song", { loop: true })play()fadeInfadeOutrampTofadeInfadeOutstop()const music = await sound.play("theme-song", {
channel: "music",
loop: true,
fadeIn: 2, // 2s fade-in on start
fadeOut: 3, // 3s fade-out, applied on both natural end and manual stop()
});
sound.stop("theme-song"); // fades out over the 3s configured above, instead of cutting offplay()fadeInfadeOutrampTofadeInfadeOutstop()const music = await sound.play("theme-song", {
channel: "music",
loop: true,
fadeIn: 2, // 2s fade-in on start
fadeOut: 3, // 3s fade-out, applied on both natural end and manual stop()
});
sound.stop("theme-song"); // fades out over the 3s configured above, instead of cutting offsound.unsaved.playTransientTone.Playersound.find()await sound.unsaved.playTransient("click-sound", { volume: 0.5 });play()"sfx"sound.channels.add("sfx");
await sound.play("explosion", { channel: "sfx", volume: 1 });sound.unsaved.playTransientTone.Playersound.find()await sound.unsaved.playTransient("click-sound", { volume: 0.5 });"sfx"play()sound.channels.add("sfx");
await sound.play("explosion", { channel: "sfx", volume: 1 });sound.channels.add("voice");
const line = await sound.play("narrator-intro", { channel: "voice" });sound.channels.add("voice");
const line = await sound.play("narrator-intro", { channel: "voice" });paused// By media alias, via the manager
sound.pause("narrator-intro");
sound.resume("narrator-intro");
// Or directly on the returned instance
line.paused = true;
line.paused = false;
// Everything on one channel
sound.channels.find("voice").pauseAll();
sound.channels.find("voice").resumeAll();
// Everything, globally
sound.pauseAll();
sound.resumeAll();paused// By media alias, via the manager
sound.pause("narrator-intro");
sound.resume("narrator-intro");
// Or directly on the returned instance
line.paused = true;
line.paused = false;
// Everything on one channel
sound.channels.find("voice").pauseAll();
sound.channels.find("voice").resumeAll();
// Everything, globally
sound.pauseAll();
sound.resumeAll();// Channel volume — linear [0, 1], affects everything played through it
const music = sound.channels.find("music");
music.volume = 0.4;
// Smooth channel-wide fade using the raw Tone.js Param (decibels)
music.volumeParam.rampTo(-12, 3); // fade to -12dB over 3s
music.volumeParam.rampTo(-Infinity, 2); // fade to silence over 2s
// A single playing instance — volume is a Tone.js decibel Param, not linear
const instance = sound.find("narrator-intro");
if (instance) {
instance.volume.value = -6; // set instantly, in decibels
instance.volume.rampTo(0, 1); // fade back up to unity gain over 1s
}
// Global master volume — linear [0, 1]
sound.volumeAll = 0.7;sound.muteAll()sound.unmuteAll()sound.toggleMuteAll()channel.muted = trueinstance.mute = trueMediaInterface.mutedmute// Channel volume — linear [0, 1], affects everything played through it
const music = sound.channels.find("music");
music.volume = 0.4;
// Smooth channel-wide fade using the raw Tone.js Param (decibels)
music.volumeParam.rampTo(-12, 3); // fade to -12dB over 3s
music.volumeParam.rampTo(-Infinity, 2); // fade to silence over 2s
// A single playing instance — volume is a Tone.js decibel Param, not linear
const instance = sound.find("narrator-intro");
if (instance) {
instance.volume.value = -6; // set instantly, in decibels
instance.volume.rampTo(0, 1); // fade back up to unity gain over 1s
}
// Global master volume — linear [0, 1]
sound.volumeAll = 0.7;sound.muteAll()sound.unmuteAll()sound.toggleMuteAll()channel.muted = trueinstance.mute = trueMediaInterface.mutedmutesound.stop("narrator-intro"); // stop one instance by media alias
sound.channels.find("music").stopAll(); // stop everything on a channel
sound.stopAll(); // stop every tracked instance, everywhere
sound.unsaved.stopTransientAll(); // stop one-shot sounds started with playTransientsound.stop("narrator-intro"); // stop one instance by media alias
sound.channels.find("music").stopAll(); // stop everything on a channel
sound.stopAll(); // stop every tracked instance, everywhere
sound.unsaved.stopTransientAll(); // stop one-shot sounds started with playTransienttonenew Tone.Reverb(...)new Tone.FeedbackDelay(...)new Tone.Distortion(...)new Tone.Chorus(...)toneplay()filtersimport * as Tone from "tone";
import { sound } from "@drincs/pixi-vn";
await sound.play("thunder", {
channel: "sfx",
filters: [new Tone.Reverb({ decay: 2.5, wet: 0.4 })],
});chain()sound.channels.add("music", { filters: [new Tone.FeedbackDelay("8n", 0.5)] });
// or on an existing channel
sound.channels.find("music").chain(new Tone.Reverb({ decay: 2.5 }));tonenew Tone.Reverb(...)new Tone.FeedbackDelay(...)new Tone.Distortion(...)new Tone.Chorus(...)toneplay()filtersimport * as Tone from "tone";
import { sound } from "@drincs/pixi-vn";
await sound.play("thunder", {
channel: "sfx",
filters: [new Tone.Reverb({ decay: 2.5, wet: 0.4 })],
});chain()sound.channels.add("music", { filters: [new Tone.FeedbackDelay("8n", 0.5)] });
// or on an existing channel
sound.channels.find("music").chain(new Tone.Reverb({ decay: 2.5 }));unsaved// On menu open: pause everything that isn't already paused
sound.unsaved.pauseAll();
// On menu close: resume only what pauseAll paused (leaves already-paused media alone)
sound.unsaved.resumeAll();sound.unsaved.playTransient()sound.unsaved.stopTransientAll()unsaved// On menu open: pause everything that isn't already paused
sound.unsaved.pauseAll();
// On menu close: resume only what pauseAll paused (leaves already-paused media alone)
sound.unsaved.resumeAll();sound.unsaved.playTransient()sound.unsaved.stopTransientAll()npm create pixi-vn@latest// constants.ts
export const BGM_CHANNEL_NAME = "bgm";
export const SFX_CHANNEL_NAME = "sfx";Game.initbackgroundimport { BGM_CHANNEL_NAME, SFX_CHANNEL_NAME } from "@/constants";
import { sound } from "@drincs/pixi-vn";
Game.init(body, options).then(() => {
sound.channels.add(BGM_CHANNEL_NAME, { background: true }); // looping music
sound.channels.add(SFX_CHANNEL_NAME); // one-shot effects
sound.defaultChannelAlias = SFX_CHANNEL_NAME; // so play() calls needn't pass {channel: ...} every time
});localStorageexport namespace MasterSound {
export function init() {
setVolume(storedVolume); // from localStorage, defaulting to sound.volumeAll * 100
setMuted(storedMuted);
}
export function setVolume(volume: number) {
sound.volumeAll = volume / 100;
localStorage.setItem("master_volume", volume.toString());
}
export function setMuted(muted: boolean) {
muted ? sound.muteAll() : sound.unmuteAll();
localStorage.setItem("master_muted", muted.toString());
}
}sound.channels.find(alias).volume.muted*Allexport function setVolume(alias: string, volume: number) {
sound.channels.find(alias).volume = volume / 100;
localStorage.setItem(`${alias}_volume`, volume.toString());
}
export function setMuted(alias: string, muted: boolean) {
sound.channels.find(alias).muted = muted;
localStorage.setItem(`${alias}_muted`, muted.toString());
}init()Game.init(...).then(...)npm create pixi-vn@latest// constants.ts
export const BGM_CHANNEL_NAME = "bgm";
export const SFX_CHANNEL_NAME = "sfx";Game.initbackgroundimport { BGM_CHANNEL_NAME, SFX_CHANNEL_NAME } from "@/constants";
import { sound } from "@drincs/pixi-vn";
Game.init(body, options).then(() => {
sound.channels.add(BGM_CHANNEL_NAME, { background: true }); // looping music
sound.channels.add(SFX_CHANNEL_NAME); // one-shot effects
sound.defaultChannelAlias = SFX_CHANNEL_NAME; // so play() calls needn't pass {channel: ...} every time
});localStorageexport namespace MasterSound {
export function init() {
setVolume(storedVolume); // from localStorage, defaulting to sound.volumeAll * 100
setMuted(storedMuted);
}
export function setVolume(volume: number) {
sound.volumeAll = volume / 100;
localStorage.setItem("master_volume", volume.toString());
}
export function setMuted(muted: boolean) {
muted ? sound.muteAll() : sound.unmuteAll();
localStorage.setItem("master_muted", muted.toString());
}
}sound.channels.find(alias).volume.muted*Allexport function setVolume(alias: string, volume: number) {
sound.channels.find(alias).volume = volume / 100;
localStorage.setItem(`${alias}_volume`, volume.toString());
}
export function setMuted(alias: string, muted: boolean) {
sound.channels.find(alias).muted = muted;
localStorage.setItem(`${alias}_muted`, muted.toString());
}init()Game.init(...).then(...)