UNPKG

@polygonjs/polygonjs

Version:

node-based WebGL 3D engine https://polygonjs.com

46 lines (45 loc) 1.41 kB
"use strict"; import { TypedAudioNode } from "./_Base"; import { NodeParamsConfig } from "../utils/params/ParamsConfig"; import { AudioBuilder } from "../../../core/audio/AudioBuilder"; import { MonoSynth } from "tone/build/esm/instrument/MonoSynth"; import { PolySynth } from "tone/build/esm/instrument/PolySynth"; import { ENVELOPE_DEFAULTS } from "./Envelope"; import { AudioType } from "../../poly/registers/nodes/types/Audio"; class MonoSynthAudioParamsConfig extends NodeParamsConfig { } const ParamsConfig = new MonoSynthAudioParamsConfig(); export class MonoSynthAudioNode extends TypedAudioNode { constructor() { super(...arguments); this.paramsConfig = ParamsConfig; } static type() { return AudioType.MONO_SYNTH; } initializeNode() { this.io.inputs.setCount(0, 1); } cook(inputContents) { const envelopeBuilder = inputContents[0]; const envelopeParams = envelopeBuilder.envelopeParams() || ENVELOPE_DEFAULTS; const synth = new PolySynth(MonoSynth, { volume: -8, oscillator: { type: "square8" }, envelope: envelopeParams, filterEnvelope: { attack: 1e-3, decay: 0.7, sustain: 0.1, release: 0.8, baseFrequency: 300, octaves: 4 } }); const audioBuilder = new AudioBuilder(); audioBuilder.setInstrument(synth); this.setAudioBuilder(audioBuilder); } }