UNPKG

@polygonjs/polygonjs

Version:

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

55 lines (45 loc) 1.39 kB
/** * creates a monoSynth * * */ 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<MonoSynthAudioParamsConfig> { override paramsConfig = ParamsConfig; static override type() { return AudioType.MONO_SYNTH; } override initializeNode() { this.io.inputs.setCount(0, 1); } override cook(inputContents: AudioBuilder[]) { const envelopeBuilder = inputContents[0]; const envelopeParams = envelopeBuilder.envelopeParams() || ENVELOPE_DEFAULTS; const synth = new PolySynth(MonoSynth, { volume: -8, oscillator: { type: 'square8', }, envelope: envelopeParams, filterEnvelope: { attack: 0.001, decay: 0.7, sustain: 0.1, release: 0.8, baseFrequency: 300, octaves: 4, }, }); const audioBuilder = new AudioBuilder(); audioBuilder.setInstrument(synth); this.setAudioBuilder(audioBuilder); } }