UNPKG

spessasynth_lib

Version:

MIDI and SoundFont2/DLS library for the browsers with no compromises

465 lines (455 loc) 367 kB
// src/synthesizer/basic/key_modifier_manager.ts import { KeyModifier } from "spessasynth_core"; // src/utils/fill_with_defaults.ts function fillWithDefaults(obj, defObj) { return { ...defObj, ...obj ?? {} }; } // src/synthesizer/basic/key_modifier_manager.ts var WorkletKeyModifierManagerWrapper = class { // The velocity override mappings for MIDI keys keyModifiers = []; synth; constructor(synth) { this.synth = synth; } // noinspection JSUnusedGlobalSymbols /** * Modifies a single key. * @param channel The channel affected. Usually 0-15. * @param midiNote The MIDI note to change. 0-127. * @param options The key's modifiers. */ addModifier(channel, midiNote, options) { const mod = new KeyModifier(); mod.gain = options?.gain ?? 1; mod.velocity = options?.velocity ?? -1; mod.patch = fillWithDefaults( options.patch ?? {}, { isGMGSDrum: false, bankLSB: -1, bankMSB: -1, program: -1 } ); this.keyModifiers[channel] ??= []; this.keyModifiers[channel][midiNote] = mod; this.sendToWorklet("addMapping", { channel, midiNote, mapping: mod }); } // noinspection JSUnusedGlobalSymbols /** * Gets a key modifier. * @param channel The channel affected. Usually 0-15. * @param midiNote The MIDI note to change. 0-127. * @returns The key modifier if it exists. */ getModifier(channel, midiNote) { return this.keyModifiers?.[channel]?.[midiNote]; } // noinspection JSUnusedGlobalSymbols /** * Deletes a key modifier. * @param channel The channel affected. Usually 0-15. * @param midiNote The MIDI note to change. 0-127. */ deleteModifier(channel, midiNote) { this.sendToWorklet("deleteMapping", { channel, midiNote }); if (this.keyModifiers[channel]?.[midiNote] === void 0) { return; } this.keyModifiers[channel][midiNote] = void 0; } // noinspection JSUnusedGlobalSymbols /** * Clears ALL Modifiers */ clearModifiers() { this.sendToWorklet("clearMappings", null); this.keyModifiers = []; } sendToWorklet(type, data) { const msg = { type, data }; this.synth.post({ type: "keyModifierManager", channelNumber: -1, data: msg }); } }; // src/synthesizer/basic/sound_bank_manager.ts import { SpessaSynthCoreUtils } from "spessasynth_core"; var SoundBankManager = class { /** * All the sound banks, ordered from the most important to the least. */ soundBankList; synth; /** * Creates a new instance of the sound bank manager. */ constructor(synth) { this.soundBankList = []; this.synth = synth; } // noinspection JSUnusedGlobalSymbols /** * The current sound bank priority order. * @returns The IDs of the sound banks in the current order. */ get priorityOrder() { return this.soundBankList.map((s) => s.id); } // noinspection JSUnusedGlobalSymbols /** * Rearranges the sound banks in a given order. * @param newList The order of sound banks, a list of identifiers, first overwrites second. */ set priorityOrder(newList) { this.sendToWorklet("rearrangeSoundBanks", newList); this.soundBankList.sort( (a, b) => newList.indexOf(a.id) - newList.indexOf(b.id) ); } // noinspection JSUnusedGlobalSymbols /** * Adds a new sound bank buffer with a given ID. * @param soundBankBuffer The sound bank's buffer * @param id The sound bank's unique identifier. * @param bankOffset The sound bank's bank offset. Default is 0. */ async addSoundBank(soundBankBuffer, id, bankOffset = 0) { this.sendToWorklet( "addSoundBank", { soundBankBuffer, bankOffset, id }, [soundBankBuffer] ); await this.awaitResponse(); const found = this.soundBankList.find((s) => s.id === id); if (found !== void 0) { found.bankOffset = bankOffset; } else { this.soundBankList.push({ id, bankOffset }); } } // noinspection JSUnusedGlobalSymbols /** * Deletes a sound bank with the given ID. * @param id The sound bank to delete. */ async deleteSoundBank(id) { if (this.soundBankList.length < 2) { SpessaSynthCoreUtils.SpessaSynthWarn( "1 sound bank left. Aborting!" ); return; } if (this.soundBankList.findIndex((s) => s.id === id) === -1) { SpessaSynthCoreUtils.SpessaSynthWarn( `No sound banks with id of "${id}" found. Aborting!` ); return; } this.sendToWorklet("deleteSoundBank", id); this.soundBankList = this.soundBankList.filter((s) => s.id !== id); await this.awaitResponse(); } async awaitResponse() { return new Promise( (r) => this.synth.awaitWorkerResponse("soundBankManager", r) ); } sendToWorklet(type, data, transferable = []) { const msg = { type: "soundBankManager", channelNumber: -1, data: { type, data } }; this.synth.post(msg, transferable); } }; // src/synthesizer/basic/synth_event_handler.ts var SynthEventHandler = class { /** * The time delay before an event is called. * Set to 0 to disable it. */ timeDelay = 0; /** * The main list of events. * @private */ events = { noteOff: /* @__PURE__ */ new Map(), // Called on a note off message noteOn: /* @__PURE__ */ new Map(), // Called on a note on message pitchWheel: /* @__PURE__ */ new Map(), // Called on a pitch-wheel change controllerChange: /* @__PURE__ */ new Map(), // Called on a controller change programChange: /* @__PURE__ */ new Map(), // Called on a program change channelPressure: /* @__PURE__ */ new Map(), // Called on a channel pressure message polyPressure: /* @__PURE__ */ new Map(), // Called on a poly pressure message drumChange: /* @__PURE__ */ new Map(), // Called when a channel type changes stopAll: /* @__PURE__ */ new Map(), // Called when the synth receives stop all command newChannel: /* @__PURE__ */ new Map(), // Called when a new channel is created muteChannel: /* @__PURE__ */ new Map(), // Called when a channel is muted/unmuted presetListChange: /* @__PURE__ */ new Map(), // Called when the preset list changes (soundfont gets reloaded) allControllerReset: /* @__PURE__ */ new Map(), // Called when all controllers are reset soundBankError: /* @__PURE__ */ new Map(), // Called when a sound bank parsing error occurs synthDisplay: /* @__PURE__ */ new Map(), // Called when there's a SysEx message to display some text masterParameterChange: /* @__PURE__ */ new Map(), // Called when a master parameter changes channelPropertyChange: /* @__PURE__ */ new Map() // Called when a channel property changes }; /** * Adds a new event listener. * @param event The event to listen to. * @param id The unique identifier for the event. It can be used to overwrite existing callback with the same ID. * @param callback The callback for the event. */ addEvent(event, id, callback) { this.events[event].set(id, callback); } // noinspection JSUnusedGlobalSymbols /** * Removes an event listener * @param name The event to remove a listener from. * @param id The unique identifier for the event to remove. */ removeEvent(name, id) { this.events[name].delete(id); } /** * Calls the given event. * INTERNAL USE ONLY! */ callEventInternal(name, eventData) { const eventList = this.events[name]; const callback = () => { eventList.forEach((callback2) => { try { callback2(eventData); } catch (e) { console.error( `Error while executing an event callback for ${name}:`, e ); } }); }; if (this.timeDelay > 0) { setTimeout(callback.bind(this), this.timeDelay * 1e3); } else { callback(); } } }; // src/synthesizer/basic/basic_synthesizer.ts import { ALL_CHANNELS_OR_DIFFERENT_ACTION, DEFAULT_MASTER_PARAMETERS, DEFAULT_PERCUSSION, midiControllers, midiMessageTypes, SpessaSynthCoreUtils as util } from "spessasynth_core"; // src/synthesizer/audio_effects/basic_effects_processor.ts var BasicEffectsProcessor = class { // The input of the processor. input; output; constructor(input, output) { this.input = input; this.output = output; } /** * Connects the processor to a given node. * @param destinationNode The node to connect to. */ connect(destinationNode) { return this.output.connect(destinationNode); } /** * Disconnects the processor from a given node. * @param destinationNode The node to disconnect from. */ disconnect(destinationNode) { if (!destinationNode) { return this.output.disconnect(); } return this.output.disconnect(destinationNode); } /** * Disconnects the effect processor. */ delete() { this.input.disconnect(); this.output.disconnect(); } }; // src/synthesizer/audio_effects/chorus.ts var NODES_AMOUNT = 4; var DEFAULT_DELAY = 0.03; var DELAY_VARIATION = 0.013; var STEREO_DIFF = 0.03; var OSC_FREQ = 0.2; var OSC_FREQ_VARIATION = 0.05; var OSC_GAIN = 3e-3; var DEFAULT_CHORUS_CONFIG = { nodesAmount: NODES_AMOUNT, defaultDelay: DEFAULT_DELAY, delayVariation: DELAY_VARIATION, stereoDifference: STEREO_DIFF, oscillatorFrequency: OSC_FREQ, oscillatorFrequencyVariation: OSC_FREQ_VARIATION, oscillatorGain: OSC_GAIN }; var ChorusProcessor = class extends BasicEffectsProcessor { chorusLeft = []; chorusRight = []; /** * Creates a fancy chorus effect. * @param context The audio context. * @param config The configuration for the chorus. */ constructor(context, config = DEFAULT_CHORUS_CONFIG) { super(context.createChannelSplitter(2), context.createChannelMerger(2)); this.update(config); } _config = DEFAULT_CHORUS_CONFIG; get config() { return this._config; } /** * Updates the chorus with a given config. * @param chorusConfig The config to use. */ update(chorusConfig) { this.deleteNodes(); const config = fillWithDefaults(chorusConfig, DEFAULT_CHORUS_CONFIG); this._config = config; let freq = config.oscillatorFrequency; let delay = config.defaultDelay; for (let i = 0; i < config.nodesAmount; i++) { this.createChorusNode( freq, delay, this.chorusLeft, 0, this.output, 0, config ); this.createChorusNode( freq, delay + config.stereoDifference, this.chorusRight, 1, this.output, 1, config ); freq += config.oscillatorFrequencyVariation; delay += config.delayVariation; } } // noinspection JSUnusedGlobalSymbols /** * Disconnects and deletes the chorus effect. */ delete() { super.delete(); this.deleteNodes(); } deleteNodes() { this.input.disconnect(); for (const node of this.chorusLeft) { node.delay.disconnect(); node.oscillator.disconnect(); node.oscillator.stop(); node.oscillatorGain.disconnect(); } for (const node of this.chorusRight) { node.delay.disconnect(); node.oscillator.disconnect(); node.oscillator.stop(); node.oscillatorGain.disconnect(); } this.chorusLeft.length = 0; this.chorusRight.length = 0; } createChorusNode(freq, delay, list, input, output, outputNum, config) { const context = output.context; const oscillator = context.createOscillator(); oscillator.type = "sine"; oscillator.frequency.value = freq; const gainNode = context.createGain(); gainNode.gain.value = config.oscillatorGain; const delayNode = context.createDelay(); delayNode.delayTime.value = delay; oscillator.connect(gainNode); gainNode.connect(delayNode.delayTime); oscillator.start( context.currentTime /*+ delay*/ ); this.input.connect(delayNode, input); delayNode.connect(output, 0, outputNum); list.push({ oscillator, oscillatorGain: gainNode, delay: delayNode }); } }; // src/synthesizer/audio_effects/effects_config.ts var DEFAULT_SYNTH_CONFIG = { enableEventSystem: true, oneOutput: false, audioNodeCreators: void 0, initializeChorusProcessor: true, initializeReverbProcessor: true }; // src/utils/other.ts import { SpessaSynthCoreUtils as SpessaSynthCoreUtils2 } from "spessasynth_core"; var consoleColors = SpessaSynthCoreUtils2.consoleColors; // src/synthesizer/audio_effects/rb_compressed.min.js var rbCompressed = `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