Basic ZZFX object
This commit is contained in:
185
src/classes/ZZFXEvent.ts
Normal file
185
src/classes/ZZFXEvent.ts
Normal file
@ -0,0 +1,185 @@
|
|||||||
|
import { type Editor } from "../main";
|
||||||
|
import { AudibleEvent } from "./AbstractEvents";
|
||||||
|
import * as zzfx from "zzfx";
|
||||||
|
|
||||||
|
interface ZZFXValues {
|
||||||
|
volume: number;
|
||||||
|
randomness: number;
|
||||||
|
frequency: number;
|
||||||
|
attack: number;
|
||||||
|
sustain: number;
|
||||||
|
release: number;
|
||||||
|
shape: number;
|
||||||
|
shapeCurve: number;
|
||||||
|
slide: number;
|
||||||
|
deltaSlide: number;
|
||||||
|
pitchJump: number;
|
||||||
|
pitchJumpTime: number;
|
||||||
|
repeatTime: number;
|
||||||
|
noise: number;
|
||||||
|
modulation: number;
|
||||||
|
bitCrush: number;
|
||||||
|
delay: number;
|
||||||
|
sustainVolume: number;
|
||||||
|
decay: number;
|
||||||
|
tremolo: number;
|
||||||
|
}
|
||||||
|
|
||||||
|
export class ZZFX extends AudibleEvent {
|
||||||
|
/**
|
||||||
|
* This class facilitates the creation of ZZFX Synth events
|
||||||
|
* using method chaining. It leverages ZZFX for having another
|
||||||
|
* synth to play with
|
||||||
|
*/
|
||||||
|
values: ZZFXValues;
|
||||||
|
constructor(sound: object, public app: Editor) {
|
||||||
|
super(app);
|
||||||
|
this.values =
|
||||||
|
{
|
||||||
|
volume: 1,
|
||||||
|
randomness: 0.05,
|
||||||
|
frequency: 220,
|
||||||
|
attack: 0,
|
||||||
|
sustain: 0,
|
||||||
|
release: 0.1,
|
||||||
|
shape: 0,
|
||||||
|
shapeCurve: 1,
|
||||||
|
slide: 0,
|
||||||
|
deltaSlide: 0,
|
||||||
|
pitchJump: 0,
|
||||||
|
pitchJumpTime: 0,
|
||||||
|
repeatTime: 0,
|
||||||
|
noise: 0,
|
||||||
|
modulation: 0,
|
||||||
|
bitCrush: 0,
|
||||||
|
delay: 0,
|
||||||
|
sustainVolume: 1,
|
||||||
|
decay: 0,
|
||||||
|
tremolo: 0,
|
||||||
|
} || sound;
|
||||||
|
}
|
||||||
|
|
||||||
|
volume = (value: number): this => {
|
||||||
|
this.values["volume"] = value;
|
||||||
|
return this;
|
||||||
|
};
|
||||||
|
vol = this.volume;
|
||||||
|
|
||||||
|
randomness = (value: number): this => {
|
||||||
|
this.values["randomness"] = value;
|
||||||
|
return this;
|
||||||
|
};
|
||||||
|
rand = this.randomness;
|
||||||
|
|
||||||
|
frequency = (value: number): this => {
|
||||||
|
this.values["frequency"] = value;
|
||||||
|
return this;
|
||||||
|
};
|
||||||
|
freq = this.frequency;
|
||||||
|
|
||||||
|
attack = (value: number): this => {
|
||||||
|
this.values["attack"] = value;
|
||||||
|
return this;
|
||||||
|
};
|
||||||
|
att = this.attack;
|
||||||
|
|
||||||
|
sustain = (value: number): this => {
|
||||||
|
this.values["sustain"] = value;
|
||||||
|
return this;
|
||||||
|
};
|
||||||
|
sus = this.sustain;
|
||||||
|
|
||||||
|
release = (value: number): this => {
|
||||||
|
this.values["release"] = value;
|
||||||
|
return this;
|
||||||
|
};
|
||||||
|
rel = this.release;
|
||||||
|
|
||||||
|
shape = (value: number): this => {
|
||||||
|
this.values["shape"] = value;
|
||||||
|
return this;
|
||||||
|
};
|
||||||
|
shp = this.shape;
|
||||||
|
|
||||||
|
shapeCurve = (value: number): this => {
|
||||||
|
this.values["shapeCurve"] = value;
|
||||||
|
return this;
|
||||||
|
};
|
||||||
|
shpCurve = this.shapeCurve;
|
||||||
|
|
||||||
|
slide = (value: number): this => {
|
||||||
|
this.values["slide"] = value;
|
||||||
|
return this;
|
||||||
|
};
|
||||||
|
sld = this.slide;
|
||||||
|
|
||||||
|
deltaSlide = (value: number): this => {
|
||||||
|
this.values["deltaSlide"] = value;
|
||||||
|
return this;
|
||||||
|
};
|
||||||
|
dsld = this.deltaSlide;
|
||||||
|
|
||||||
|
pitchJump = (value: number): this => {
|
||||||
|
this.values["pitchJump"] = value;
|
||||||
|
return this;
|
||||||
|
};
|
||||||
|
pitchj = this.pitchJump;
|
||||||
|
|
||||||
|
pitchJumpTime = (value: number): this => {
|
||||||
|
this.values["pitchJumpTime"] = value;
|
||||||
|
return this;
|
||||||
|
};
|
||||||
|
pitchjt = this.pitchJumpTime;
|
||||||
|
|
||||||
|
repeatTime = (value: number): this => {
|
||||||
|
this.values["repeatTime"] = value;
|
||||||
|
return this;
|
||||||
|
};
|
||||||
|
rept = this.repeatTime;
|
||||||
|
|
||||||
|
noise = (value: number): this => {
|
||||||
|
this.values["noise"] = value;
|
||||||
|
return this;
|
||||||
|
};
|
||||||
|
nois = this.noise;
|
||||||
|
|
||||||
|
modulation = (value: number): this => {
|
||||||
|
this.values["modulation"] = value;
|
||||||
|
return this;
|
||||||
|
};
|
||||||
|
mod = this.modulation;
|
||||||
|
|
||||||
|
bitCrush = (value: number): this => {
|
||||||
|
this.values["bitCrush"] = value;
|
||||||
|
return this;
|
||||||
|
};
|
||||||
|
bitc = this.bitCrush;
|
||||||
|
|
||||||
|
delay = (value: number): this => {
|
||||||
|
this.values["delay"] = value;
|
||||||
|
return this;
|
||||||
|
};
|
||||||
|
del = this.delay;
|
||||||
|
|
||||||
|
sustainVolume = (value: number): this => {
|
||||||
|
this.values["sustainVolume"] = value;
|
||||||
|
return this;
|
||||||
|
};
|
||||||
|
susvol = this.sustainVolume;
|
||||||
|
|
||||||
|
decay = (value: number): this => {
|
||||||
|
this.values["decay"] = value;
|
||||||
|
return this;
|
||||||
|
};
|
||||||
|
dec = this.decay;
|
||||||
|
|
||||||
|
tremolo = (value: number): this => {
|
||||||
|
this.values["tremolo"] = value;
|
||||||
|
return this;
|
||||||
|
};
|
||||||
|
trem = this.tremolo;
|
||||||
|
|
||||||
|
play = (): void => {
|
||||||
|
zzfx(...Object.values(this.values));
|
||||||
|
};
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user