This commit is contained in:
2023-08-30 20:22:16 +03:00

View File

@ -1,185 +0,0 @@
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));
};
}