@drincs/pixi-vn
Version:
Pixi'VN is a npm package that provides various features for creating visual novels.
1 lines • 51 kB
Source Map (JSON)
{"version":3,"sources":["../src/sound/functions/channel-utility.ts","../src/sound/SoundManagerStatic.ts","../src/sound/functions/proxy-utility.ts","../src/sound/classes/AudioChannel.ts","../src/sound/functions/sound-utility.ts","../src/sound/SoundManager.ts","../src/sound/constants.ts","../src/sound/index.ts"],"names":["calculateVolume","mediaVolume","channelVolume","SoundManagerStatic","__publicField","proxyMedia","mediaAlias","media","channel","target","prop","receiver","entry","value","AudioChannel","alias","channelOptions","aliasOrMediaAlias","soundAliasOrOptions","options","soundAlias","oldMedia","sound","timeoutId","item","GameUnifier","mediaId","mediaInstance","mediaMuted","instances","FilterMemoryToFilter","filter","res","f","filters","logger","FilterToFilterMemory","SoundManager","GENERAL_CHANNEL","filtersAll","sourceOptions","s","legacy","autoPause","volume","speed","paramOptions","PIXI","promise","assets","key","Sound","e","a","perChannelOptions","mediaInstances","result","createExportableElement","data","soundsPlaying","promises","usedChannels","channelAlias","promises2","mediaInstanceData","instance","id"],"mappings":"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","file":"sound.mjs","sourcesContent":["/**\n * This function calculates the final volume of a sound by multiplying the media volume and the channel volume.\n * If one of the volumes is undefined, it returns the other volume. If both are undefined, it returns 1.\n * @param mediaVolume The volume of the media instance, which can be undefined.\n * @param channelVolume The volume of the audio channel, which can be undefined.\n * @returns The final volume of the sound, or 1 if both mediaVolume and channelVolume are undefined.\n */\nexport function calculateVolume(mediaVolume: number | undefined, channelVolume: number | undefined): number {\n if (mediaVolume === undefined && channelVolume === undefined) {\n return 1;\n } else if (channelVolume === undefined) {\n return mediaVolume!;\n } else if (mediaVolume === undefined) {\n return channelVolume;\n }\n // if mediaVolume is 0.5 and channelVolume is 0.5, the result should be 0.25\n // if mediaVolume is 0.7 and channelVolume is 0.5, the result should be 0.35\n // if mediaVolume is 0.5 and channelVolume is 0.7, the result should be 0.35\n return mediaVolume * channelVolume;\n}\n","import AudioChannelInterface from \"./interfaces/AudioChannelInterface\";\nimport IMediaInstance from \"./interfaces/IMediaInstance\";\nimport { SoundPlayOptions } from \"./interfaces/SoundOptions\";\n\nexport default class SoundManagerStatic {\n private constructor() {}\n static mediaInstances: {\n [alias: string]: {\n channelAlias: string;\n soundAlias: string;\n instance: IMediaInstance;\n stepCounter: number;\n options: SoundPlayOptions;\n };\n } = {};\n static channels: { [alias: string]: AudioChannelInterface } = {};\n static delayTimeoutInstances: [number | NodeJS.Timeout, string][] = [];\n}\n","import { IMediaInstance } from \"@pixi/sound\";\nimport SoundManagerStatic from \"../SoundManagerStatic\";\nimport type AudioChannel from \"../classes/AudioChannel\";\nimport { calculateVolume } from \"./channel-utility\";\n\nexport function proxyMedia(mediaAlias: string, media: IMediaInstance, channel: AudioChannel): IMediaInstance {\n return new Proxy(media, {\n get(target, prop, receiver) {\n switch (prop) {\n case \"volume\":\n case \"muted\": {\n const entry = SoundManagerStatic.mediaInstances[mediaAlias];\n if (entry) {\n return entry.options[prop as keyof typeof entry.options];\n }\n return Reflect.get(target, prop, receiver);\n }\n case \"paused\":\n default:\n return Reflect.get(target, prop, receiver);\n }\n },\n set(target, prop, value, receiver) {\n if (mediaAlias in SoundManagerStatic.mediaInstances) {\n switch (prop) {\n case \"volume\":\n SoundManagerStatic.mediaInstances[mediaAlias].options[prop] = value;\n value = calculateVolume(value, channel.channelOptions.volume);\n return Reflect.set(target, prop, value, receiver);\n case \"muted\":\n SoundManagerStatic.mediaInstances[mediaAlias].options[prop] = value;\n if (channel.channelOptions.muted) {\n return Reflect.set(target, prop, true, receiver);\n } else {\n return Reflect.set(target, prop, value, receiver);\n }\n case \"loop\":\n case \"delay\":\n case \"end\":\n case \"filters\":\n case \"singleInstance\":\n case \"speed\":\n case \"sprite\":\n case \"start\":\n SoundManagerStatic.mediaInstances[mediaAlias].options[prop] = value;\n default:\n return Reflect.set(target, prop, value, receiver);\n }\n }\n return Reflect.set(target, prop, value, receiver);\n },\n });\n}\n","import { GameUnifier } from \"@drincs/pixi-vn/core\";\nimport { sound } from \"@pixi/sound\";\nimport { calculateVolume } from \"../functions/channel-utility\";\nimport { proxyMedia } from \"../functions/proxy-utility\";\nimport AudioChannelInterface from \"../interfaces/AudioChannelInterface\";\nimport IMediaInstance from \"../interfaces/IMediaInstance\";\nimport { ChannelOptions, SoundPlayOptions } from \"../interfaces/SoundOptions\";\nimport SoundManagerStatic from \"../SoundManagerStatic\";\n\nexport default class AudioChannel implements AudioChannelInterface {\n constructor(\n readonly alias: string,\n readonly channelOptions: ChannelOptions = {},\n ) {}\n async play(alias: string, options?: SoundPlayOptions): Promise<IMediaInstance>;\n async play(mediaAlias: string, soundAlias: string, options?: SoundPlayOptions): Promise<IMediaInstance>;\n async play(\n aliasOrMediaAlias: string,\n soundAliasOrOptions?: string | SoundPlayOptions,\n options?: SoundPlayOptions,\n ): Promise<IMediaInstance> {\n let mediaAlias: string;\n let soundAlias: string;\n if (typeof soundAliasOrOptions === \"string\") {\n mediaAlias = aliasOrMediaAlias;\n soundAlias = soundAliasOrOptions;\n } else {\n mediaAlias = aliasOrMediaAlias;\n soundAlias = aliasOrMediaAlias;\n options = soundAliasOrOptions;\n }\n if (mediaAlias in SoundManagerStatic.mediaInstances) {\n const oldMedia = SoundManagerStatic.mediaInstances[mediaAlias];\n oldMedia.instance.stop();\n options = {\n ...oldMedia.options,\n ...options,\n };\n }\n const media = proxyMedia(\n mediaAlias,\n await sound.play(soundAlias, {\n ...(options ?? {}),\n filters: [...(this.channelOptions.filters || []), ...(options?.filters || [])],\n muted: Boolean(this.channelOptions.muted) || Boolean(options?.muted),\n volume: calculateVolume(options?.volume, this.channelOptions.volume),\n }),\n this,\n );\n if (options?.delay) {\n media.paused = true;\n const timeoutId = setTimeout(() => {\n media.paused = false;\n SoundManagerStatic.delayTimeoutInstances = SoundManagerStatic.delayTimeoutInstances.filter(\n (item) => item[0] !== timeoutId,\n );\n }, options.delay * 1000);\n SoundManagerStatic.delayTimeoutInstances.push([timeoutId, mediaAlias]);\n }\n SoundManagerStatic.mediaInstances[mediaAlias] = {\n channelAlias: this.alias,\n soundAlias: soundAlias,\n instance: media,\n stepCounter: GameUnifier.stepCounter,\n options: {\n volume: options?.volume ?? 1,\n muted: options?.muted ?? false,\n loop: options?.loop ?? false,\n ...(options ?? {}),\n },\n };\n media.on(\"end\", () => {\n delete SoundManagerStatic.mediaInstances[mediaAlias];\n });\n return media;\n }\n private updateMediaVolume() {\n for (const mediaId in SoundManagerStatic.mediaInstances) {\n const mediaInstance = SoundManagerStatic.mediaInstances[mediaId];\n if (mediaInstance.channelAlias === this.alias) {\n const mediaVolume = mediaInstance.options.volume ?? 1;\n mediaInstance.instance.volume = mediaVolume;\n }\n }\n }\n get volume(): number {\n return this.channelOptions.volume ?? 1;\n }\n set volume(value: number) {\n this.channelOptions.volume = value;\n this.updateMediaVolume();\n }\n private updateMediaMuted() {\n for (const mediaId in SoundManagerStatic.mediaInstances) {\n const mediaInstance = SoundManagerStatic.mediaInstances[mediaId];\n if (mediaInstance.channelAlias === this.alias) {\n const mediaMuted = mediaInstance.options.muted ?? false;\n // Apply only the per-media muted state; the proxy is responsible for\n // enforcing channel-level muting without overwriting per-media options.\n mediaInstance.instance.muted = mediaMuted;\n }\n }\n }\n get muted(): boolean {\n return this.channelOptions.muted ?? false;\n }\n set muted(value: boolean) {\n this.channelOptions.muted = value;\n this.updateMediaMuted();\n }\n toggleMuteAll(): boolean {\n this.muted = !this.muted;\n return this.muted;\n }\n get mediaInstances(): IMediaInstance[] {\n return Object.values(SoundManagerStatic.mediaInstances).reduce((instances: IMediaInstance[], mediaInstance) => {\n if (mediaInstance.channelAlias === this.alias) {\n instances.push(mediaInstance.instance);\n }\n return instances;\n }, []);\n }\n get background(): boolean {\n return this.channelOptions.background || false;\n }\n stopAll() {\n for (const mediaAlias in SoundManagerStatic.mediaInstances) {\n const mediaInstance = SoundManagerStatic.mediaInstances[mediaAlias];\n if (mediaInstance.channelAlias === this.alias) {\n mediaInstance.instance.stop();\n delete SoundManagerStatic.mediaInstances[mediaAlias];\n }\n }\n return this;\n }\n pauseAll() {\n for (const mediaId in SoundManagerStatic.mediaInstances) {\n const mediaInstance = SoundManagerStatic.mediaInstances[mediaId];\n if (mediaInstance.channelAlias === this.alias && !mediaInstance.instance.paused) {\n mediaInstance.instance.paused = true;\n }\n }\n return this;\n }\n resumeAll(): this {\n for (const mediaId in SoundManagerStatic.mediaInstances) {\n const mediaInstance = SoundManagerStatic.mediaInstances[mediaId];\n if (mediaInstance.channelAlias === this.alias && mediaInstance.instance.paused) {\n mediaInstance.instance.paused = false;\n }\n }\n return this;\n }\n}\n","import { Filter, filters } from \"@pixi/sound\";\nimport { logger } from \"../../utils/log-utility\";\nimport SoundFilterMemory from \"../types/SoundFilterMemory\";\n\nexport function FilterMemoryToFilter(filter: SoundFilterMemory[]): Filter[] {\n let res: Filter[] = [];\n for (let f of filter) {\n if (f.type === \"TelephoneFilter\") {\n res.push(new filters.TelephoneFilter());\n } else if (f.type === \"StreamFilter\") {\n res.push(new filters.StreamFilter());\n } else if (f.type === \"StereoFilter\") {\n res.push(new filters.StereoFilter(f.pan));\n } else if (f.type === \"ReverbFilter\") {\n res.push(new filters.ReverbFilter(f.seconds, f.decay, f.reverse));\n } else if (f.type === \"MonoFilter\") {\n res.push(new filters.MonoFilter());\n } else if (f.type === \"EqualizerFilter\") {\n res.push(\n new filters.EqualizerFilter(f.f32, f.f64, f.f125, f.f250, f.f500, f.f1k, f.f2k, f.f4k, f.f8k, f.f16k)\n );\n } else if (f.type === \"DistortionFilter\") {\n res.push(new filters.DistortionFilter(f.amount));\n } else {\n logger.error(\"Unknown sound filter type\");\n }\n }\n return res;\n}\n\nexport function FilterToFilterMemory(filter?: Filter[]): SoundFilterMemory[] | undefined {\n if (!filter) return undefined;\n let res: SoundFilterMemory[] = [];\n for (let f of filter) {\n if (f instanceof filters.TelephoneFilter) {\n res.push({\n type: \"TelephoneFilter\",\n });\n } else if (f instanceof filters.StreamFilter) {\n res.push({\n type: \"StreamFilter\",\n });\n } else if (f instanceof filters.StereoFilter) {\n res.push({\n type: \"StereoFilter\",\n pan: f.pan,\n });\n } else if (f instanceof filters.ReverbFilter) {\n res.push({\n type: \"ReverbFilter\",\n seconds: f.seconds,\n decay: f.decay,\n reverse: f.reverse,\n });\n } else if (f instanceof filters.MonoFilter) {\n res.push({\n type: \"MonoFilter\",\n });\n } else if (f instanceof filters.EqualizerFilter) {\n res.push({\n type: \"EqualizerFilter\",\n f32: f.f32,\n f64: f.f64,\n f125: f.f125,\n f250: f.f250,\n f500: f.f500,\n f1k: f.f1k,\n f2k: f.f2k,\n f4k: f.f4k,\n f8k: f.f8k,\n f16k: f.f16k,\n });\n } else if (f instanceof filters.DistortionFilter) {\n res.push({\n type: \"DistortionFilter\",\n amount: f.amount,\n });\n } else {\n logger.error(\"Unknown sound filter type\");\n }\n }\n return res;\n}\n","import { GameUnifier } from \"@drincs/pixi-vn/core\";\nimport { default as PIXI } from \"@drincs/pixi-vn/pixi.js\";\nimport { Filter, filters, IMediaContext, Sound, sound } from \"@pixi/sound\";\nimport { GENERAL_CHANNEL } from \"../constants\";\nimport { createExportableElement } from \"../utils\";\nimport { logger } from \"../utils/log-utility\";\nimport AudioChannel from \"./classes/AudioChannel\";\nimport { FilterMemoryToFilter, FilterToFilterMemory } from \"./functions/sound-utility\";\nimport AudioChannelInterface from \"./interfaces/AudioChannelInterface\";\nimport IMediaInstance from \"./interfaces/IMediaInstance\";\nimport SoundGameState from \"./interfaces/SoundGameState\";\nimport SoundManagerInterface from \"./interfaces/SoundManagerInterface\";\nimport SoundOptions, { ChannelOptions, SoundPlayOptions, SoundPlayOptionsWithChannel } from \"./interfaces/SoundOptions\";\nimport SoundManagerStatic from \"./SoundManagerStatic\";\nimport SoundFilterMemory from \"./types/SoundFilterMemory\";\n\nexport default class SoundManager implements SoundManagerInterface {\n get context(): IMediaContext {\n return sound.context;\n }\n get filtersAll(): Filter[] {\n return sound.filtersAll;\n }\n set filtersAll(filtersAll: Filter[]) {\n sound.filtersAll = filtersAll.filter((f) => {\n return !(f instanceof filters.Filter);\n });\n }\n get supported(): boolean {\n return sound.supported;\n }\n\n _defaultChannelAlias = GENERAL_CHANNEL;\n get defaultChannelAlias(): string {\n return this._defaultChannelAlias;\n }\n set defaultChannelAlias(alias: string) {\n this._defaultChannelAlias = alias;\n }\n\n add(alias: string, sourceOptions: string) {\n return sound.add(alias, sourceOptions);\n }\n async edit(alias: string, options: SoundOptions): Promise<void> {\n let s = sound.find(alias);\n if (!s) {\n await this.load(alias);\n s = sound.find(alias);\n if (!s) {\n logger.error(`Sound with alias ${alias} not found after loading.`);\n return;\n }\n }\n s.options = options;\n }\n get useLegacy(): boolean {\n return sound.useLegacy;\n }\n set useLegacy(legacy: boolean) {\n sound.useLegacy = legacy;\n }\n get disableAutoPause(): boolean {\n return sound.disableAutoPause;\n }\n set disableAutoPause(autoPause: boolean) {\n sound.disableAutoPause = autoPause;\n }\n get volumeAll(): number {\n return sound.volumeAll;\n }\n set volumeAll(volume: number) {\n sound.volumeAll = volume;\n }\n get speedAll(): number {\n return sound.speedAll;\n }\n set speedAll(speed: number) {\n sound.speedAll = speed;\n }\n pauseAll(): this {\n for (const mediaId in SoundManagerStatic.mediaInstances) {\n const mediaInstance = SoundManagerStatic.mediaInstances[mediaId];\n if (!mediaInstance.instance.paused) {\n mediaInstance.instance.paused = true;\n }\n }\n return this;\n }\n resumeAll(): this {\n for (const mediaId in SoundManagerStatic.mediaInstances) {\n const mediaInstance = SoundManagerStatic.mediaInstances[mediaId];\n if (mediaInstance.instance.paused) {\n mediaInstance.instance.paused = false;\n }\n }\n return this;\n }\n toggleMuteAll(): boolean {\n return sound.toggleMuteAll();\n }\n muteAll(): this {\n sound.muteAll();\n return this;\n }\n unmuteAll(): this {\n sound.unmuteAll();\n return this;\n }\n stopAll(): this {\n SoundManagerStatic.mediaInstances = {};\n sound.stopAll();\n return this;\n }\n isPlaying(): boolean {\n return sound.isPlaying();\n }\n async play(alias: string, options?: SoundPlayOptionsWithChannel): Promise<IMediaInstance>;\n async play(mediaAlias: string, soundAlias: string, options?: SoundPlayOptionsWithChannel): Promise<IMediaInstance>;\n async play(\n aliasOrMediaAlias: string,\n soundAliasOrOptions?: string | SoundPlayOptionsWithChannel,\n paramOptions?: SoundPlayOptionsWithChannel,\n ): Promise<IMediaInstance> {\n let mediaAlias: string;\n let soundAlias: string;\n if (typeof soundAliasOrOptions === \"string\") {\n mediaAlias = aliasOrMediaAlias;\n soundAlias = soundAliasOrOptions;\n } else {\n mediaAlias = aliasOrMediaAlias;\n soundAlias = aliasOrMediaAlias;\n paramOptions = soundAliasOrOptions;\n }\n const { channel = this.defaultChannelAlias, ...options } = paramOptions ?? {};\n return await this.findChannel(channel).play(mediaAlias, soundAlias, options);\n }\n find(alias: string): IMediaInstance | undefined {\n return SoundManagerStatic.mediaInstances[alias]?.instance;\n }\n stop(alias: string): void {\n const mediaInstance = this.find(alias);\n if (mediaInstance) {\n mediaInstance.stop();\n delete SoundManagerStatic.mediaInstances[alias];\n } else {\n logger.warn(`No media instance found with alias ${alias} to stop.`);\n }\n }\n pause(alias: string): IMediaInstance | undefined {\n const mediaInstance = this.find(alias);\n if (!mediaInstance) {\n logger.warn(`No media instance found with alias ${alias} to pause.`);\n return;\n }\n mediaInstance.paused = true;\n return mediaInstance;\n }\n resume(alias: string): IMediaInstance | undefined {\n const mediaInstance = this.find(alias);\n if (!mediaInstance) {\n logger.warn(`No media instance found with alias ${alias} to resume.`);\n return;\n }\n mediaInstance.paused = false;\n return mediaInstance;\n }\n duration(alias: string): number {\n return sound.duration(alias);\n }\n async load(alias: string | string[]): Promise<void> {\n await PIXI.Assets.load(alias);\n if (typeof alias === \"string\") {\n alias = [alias];\n }\n alias.forEach((alias) => {\n const item = PIXI.Assets.get<Sound>(alias);\n if (!sound.exists(alias)) sound.add(alias, item);\n });\n }\n backgroundLoad(alias: string | string[]): Promise<void> {\n const promise = PIXI.Assets.backgroundLoad(alias);\n\n promise.then(() => {\n if (typeof alias === \"string\") {\n alias = [alias];\n }\n alias.forEach((alias) => {\n const item = PIXI.Assets.get<Sound>(alias);\n if (!sound.exists(alias)) sound.add(alias, item);\n });\n });\n return promise;\n }\n backgroundLoadBundle(alias: string): Promise<void> {\n const promise = PIXI.Assets.backgroundLoadBundle(alias);\n promise.then(async () => {\n try {\n const assets = await PIXI.Assets.loadBundle(alias);\n for (let key in assets) {\n const item = assets[key];\n if (item instanceof Sound) {\n if (!sound.exists(key)) sound.add(key, item);\n }\n }\n } catch (e) {\n logger.error(\"Error loading sound bundle\", e);\n }\n });\n return promise;\n }\n\n clear() {\n this.stopAll();\n }\n\n /* Channel Methods */\n\n addChannel(alias: string | string[], options: ChannelOptions = {}): AudioChannelInterface | undefined {\n if (typeof alias !== \"string\") {\n alias.forEach((a) => {\n const perChannelOptions: ChannelOptions = {\n ...options,\n filters: options.filters ? [...options.filters] : options.filters,\n };\n this.addChannel(a, perChannelOptions);\n });\n return;\n }\n if (SoundManagerStatic.channels[alias]) {\n logger.warn(`Channel with alias ${alias} already exists.`);\n return;\n }\n const channel = new AudioChannel(alias, options);\n SoundManagerStatic.channels[alias] = channel;\n return channel;\n }\n\n findChannel(alias: string): AudioChannelInterface {\n const channel = SoundManagerStatic.channels[alias];\n if (!channel) {\n return this.addChannel(alias) as AudioChannelInterface;\n }\n return channel;\n }\n\n get channels(): AudioChannelInterface[] {\n return Object.values(SoundManagerStatic.channels);\n }\n\n /* Export and Import Methods */\n\n public export(): SoundGameState {\n let mediaInstances: {\n [key: string]: {\n channelAlias: string;\n soundAlias: string;\n stepCounter: number;\n options: Omit<SoundPlayOptions, \"filters\"> & { filters?: SoundFilterMemory[] };\n paused: boolean;\n };\n } = Object.entries(SoundManagerStatic.mediaInstances).reduce(\n (result, [mediaAlias, mediaInstance]) => {\n result[mediaAlias] = {\n channelAlias: mediaInstance.channelAlias,\n soundAlias: mediaInstance.soundAlias,\n stepCounter: mediaInstance.stepCounter,\n options: { ...mediaInstance.options, filters: FilterToFilterMemory(mediaInstance.options.filters) },\n paused: mediaInstance.instance.paused,\n };\n return result;\n },\n {} as {\n [key: string]: {\n channelAlias: string;\n soundAlias: string;\n stepCounter: number;\n options: Omit<SoundPlayOptions, \"filters\"> & { filters?: SoundFilterMemory[] };\n paused: boolean;\n };\n },\n );\n return {\n mediaInstances: createExportableElement(mediaInstances),\n filters: createExportableElement(FilterToFilterMemory(this.filtersAll)),\n };\n }\n async restore(data: object) {\n try {\n if (data.hasOwnProperty(\"soundsPlaying\")) {\n let soundsPlaying = (data as SoundGameState)[\"soundsPlaying\"];\n if (soundsPlaying) {\n const promises = Object.keys(soundsPlaying).map(async (alias) => {\n await this.load(alias);\n\n await this.play(alias);\n });\n await Promise.all(promises);\n }\n }\n\n if (data.hasOwnProperty(\"mediaInstances\")) {\n let mediaInstances = (data as SoundGameState)[\"mediaInstances\"];\n if (mediaInstances) {\n // load all media first\n const usedChannels = new Set<string>();\n const promises = Object.values(mediaInstances).map(async ({ soundAlias, channelAlias }) => {\n usedChannels.add(channelAlias);\n return await this.load(soundAlias);\n });\n await Promise.all(promises);\n this.channels.forEach((channel) => {\n if (!channel.background || !usedChannels.has(channel.alias)) {\n channel.stopAll();\n }\n });\n const promises2 = Object.keys(mediaInstances).map(async (mediaAlias) => {\n const mediaInstanceData = mediaInstances[mediaAlias];\n const channel = this.findChannel(mediaInstanceData.channelAlias);\n if (!channel.background) {\n const instance = await channel.play(mediaAlias, mediaInstanceData.soundAlias, {\n ...mediaInstanceData.options,\n filters: FilterMemoryToFilter(mediaInstanceData.options.filters || []),\n });\n if (mediaInstanceData.paused) {\n instance.paused = mediaInstanceData.paused;\n }\n } else if (\n mediaInstanceData.stepCounter === GameUnifier.stepCounter ||\n !this.find(mediaAlias)\n ) {\n // if the channel is background, we only restore it if it was played in the current step, to avoid restoring background music that was playing in a previous step\n const instance = await channel.play(mediaAlias, mediaInstanceData.soundAlias, {\n ...mediaInstanceData.options,\n filters: FilterMemoryToFilter(mediaInstanceData.options.filters || []),\n });\n if (mediaInstanceData.paused) {\n instance.paused = mediaInstanceData.paused;\n }\n } else {\n const instance = this.find(mediaAlias);\n if (instance) {\n SoundManagerStatic.mediaInstances[mediaAlias].options = {\n ...mediaInstanceData.options,\n filters: FilterMemoryToFilter(mediaInstanceData.options.filters || []),\n };\n if (instance.paused !== mediaInstanceData.paused) {\n instance.paused = mediaInstanceData.paused;\n }\n if (instance.loop !== (mediaInstanceData.options.loop || false)) {\n instance.loop = mediaInstanceData.options.loop || false;\n }\n if (instance.volume !== (mediaInstanceData.options.volume ?? 1)) {\n instance.volume = mediaInstanceData.options.volume ?? 1;\n }\n if (instance.muted !== (mediaInstanceData.options.muted || false)) {\n instance.muted = mediaInstanceData.options.muted || false;\n }\n if (instance.speed !== (mediaInstanceData.options.speed ?? 1)) {\n instance.speed = mediaInstanceData.options.speed ?? 1;\n }\n }\n }\n });\n await Promise.all(promises2);\n }\n }\n\n if (data.hasOwnProperty(\"filters\")) {\n let f = (data as SoundGameState)[\"filters\"];\n if (f) {\n this.filtersAll = FilterMemoryToFilter(f);\n }\n }\n } catch (e) {\n logger.error(\"Error importing data\", e);\n }\n }\n}\n","import { filters as f } from \"@pixi/sound\";\n\nexport const filters = {\n DistortionFilter: f.DistortionFilter,\n EqualizerFilter: f.EqualizerFilter,\n MonoFilter: f.MonoFilter,\n ReverbFilter: f.ReverbFilter,\n StereoFilter: f.StereoFilter,\n StreamFilter: f.StreamFilter,\n TelephoneFilter: f.TelephoneFilter,\n};\n","import { GameUnifier } from \"@drincs/pixi-vn/core\";\nimport SoundManagerInterface from \"./interfaces/SoundManagerInterface\";\nimport SoundManager from \"./SoundManager\";\nimport SoundManagerStatic from \"./SoundManagerStatic\";\n\nexport { filters } from \"./constants\";\nexport type { default as AudioChannelInterface } from \"./interfaces/AudioChannelInterface\";\nexport type { default as IMediaInstance } from \"./interfaces/IMediaInstance\";\nexport type {\n ExportedSound,\n ExportedSoundPlay,\n default as SoundGameState,\n SoundPlay,\n} from \"./interfaces/SoundGameSta