From 01f56276bf424232f85db2223cac8d3281b21d1e Mon Sep 17 00:00:00 2001 From: Raphael Forment Date: Thu, 31 Aug 2023 20:52:38 +0200 Subject: [PATCH 1/2] Fix about page --- src/documentation/about.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/documentation/about.ts b/src/documentation/about.ts index dfbc2b2..0a1b718 100644 --- a/src/documentation/about.ts +++ b/src/documentation/about.ts @@ -4,7 +4,7 @@ export const about = (): string => { ## The Topos Project -Topos is an experimental web based algorithmic sequencer programmed by **BuboBubo** ([Raphaël Forment](https://raphaelforment.fr) and **Amiika** ([Miika Alonen](https//github.com/amiika). It is written using [TypeScript](https://google.fr) and [Vite](https://google.fr). Many thanks to Felix Roos for making the [Superdough](https://www.npmjs.com/package/superdough) audio backend available for experimentation. This project is based on the [Monome Teletype](https://monome.org) by [Brian Crabtree](https://nnnnnnnn.co/) and [Kelli Cain](https://kellicain.com/). We hope to follow and honor the same spirit of sharing and experimentation. How much can the Teletype be extended while staying accessible and installation-free? +Topos is an experimental web based algorithmic sequencer programmed by **BuboBubo** ([Raphaël Forment](https://raphaelforment.fr)) and **Amiika** ([Miika Alonen](https//github.com/amiika)). It is written using [TypeScript](https://google.fr) and [Vite](https://google.fr). Many thanks to Felix Roos for making the [Superdough](https://www.npmjs.com/package/superdough) audio backend available for experimentation. This project is based on the [Monome Teletype](https://monome.org) by [Brian Crabtree](https://nnnnnnnn.co/) and [Kelli Cain](https://kellicain.com/). We hope to follow and honor the same spirit of sharing and experimentation. How much can the Teletype be extended while staying accessible and installation-free? ## About Live Coding @@ -14,6 +14,12 @@ Topos is an experimental web based algorithmic sequencer programmed by **BuboBub Topos is a free and open-source software distributed under [GPL-3.0](https://github.com/Bubobubobubobubo/Topos/blob/main/LICENSE) licence. We welcome all contributions and ideas. You can find the source code on [GitHub](https://github.com/Bubobubobubobubo/topos). You can also join us on [Discord](https://discord.gg/8Q2QV6Z6) to discuss about the project and live coding in general. +## Credits + +- Felix Roos for the [SuperDough](https://www.npmjs.com/package/superdough) audio engine. +- Frank Force for the [ZzFX](https://github.com/KilledByAPixel/ZzFX) synthesizer. +- All the [Topos](https//github.com/Bubobubobubobubo/Topos) contributors! + **Have fun!** `; }; From f82f2735fac0c99b4567d9eef4efe4e79b3d9f14 Mon Sep 17 00:00:00 2001 From: Raphael Forment Date: Thu, 31 Aug 2023 20:56:09 +0200 Subject: [PATCH 2/2] adding public in soundevents --- src/classes/SoundEvent.ts | 191 +++++++++++++++++++------------------- 1 file changed, 97 insertions(+), 94 deletions(-) diff --git a/src/classes/SoundEvent.ts b/src/classes/SoundEvent.ts index c726b96..8f8b7ad 100644 --- a/src/classes/SoundEvent.ts +++ b/src/classes/SoundEvent.ts @@ -23,61 +23,63 @@ export class SoundEvent extends AudibleEvent { // ZZFX Sound Parameters // ================================================================================ - volume = (value: number) => this.updateValue("volume", value); - vol = this.volume; - zrand = (value: number) => this.updateValue("zrand", value); - curve = (value: number) => this.updateValue("curve", value); - slide = (value: number) => this.updateValue("slide", value); - sld = this.slide; - deltaSlide = (value: number) => this.updateValue("deltaSlide", value); - dslide = this.deltaSlide; - pitchJump = (value: number) => this.updateValue("pitchJump", value); - pj = this.pitchJump; - pitchJumpTime = (value: number) => this.updateValue("pitchJumpTime", value); - pjt = this.pitchJumpTime; - lfo = (value: number) => this.updateValue("lfo", value); - noise = (value: number) => this.updateValue("noise", value); - zmod = (value: number) => this.updateValue("zmod", value); - zcrush = (value: number) => this.updateValue("zcrush", value); - zdelay = (value: number) => this.updateValue("zdelay", value); - sustainVolume = (value: number) => this.updateValue("sustainVolume", value); - decay = (value: number) => this.updateValue("decay", value); - dec = this.decay; - tremolo = (value: number) => this.updateValue("tremolo", value); - duration = (value: number) => this.updateValue("duration", value); - zzfx = (value: number[]) => this.updateValue("zzfx", value); + public volume = (value: number) => this.updateValue("volume", value); + public vol = this.volume; + public zrand = (value: number) => this.updateValue("zrand", value); + public curve = (value: number) => this.updateValue("curve", value); + public slide = (value: number) => this.updateValue("slide", value); + public sld = this.slide; + public deltaSlide = (value: number) => this.updateValue("deltaSlide", value); + public dslide = this.deltaSlide; + public pitchJump = (value: number) => this.updateValue("pitchJump", value); + public pj = this.pitchJump; + public pitchJumpTime = (value: number) => + this.updateValue("pitchJumpTime", value); + public pjt = this.pitchJumpTime; + public lfo = (value: number) => this.updateValue("lfo", value); + public noise = (value: number) => this.updateValue("noise", value); + public zmod = (value: number) => this.updateValue("zmod", value); + public zcrush = (value: number) => this.updateValue("zcrush", value); + public zdelay = (value: number) => this.updateValue("zdelay", value); + public sustainVolume = (value: number) => + this.updateValue("sustainVolume", value); + public decay = (value: number) => this.updateValue("decay", value); + public dec = this.decay; + public tremolo = (value: number) => this.updateValue("tremolo", value); + public duration = (value: number) => this.updateValue("duration", value); + public zzfx = (value: number[]) => this.updateValue("zzfx", value); // ================================================================================ // Basic Audio Engine Parameters // ================================================================================ - fmi = (value: number) => this.updateValue("fmi", value); - fmh = (value: number) => this.updateValue("fmh", value); - fmenv = (value: "lin" | "exp") => this.updateValue("fmenv", value); - fmattack = (value: number) => this.updateValue("fmattack", value); - fmatk = this.fmattack; - fmdecay = (value: number) => this.updateValue("fmdecay", value); - fmdec = this.fmdecay; - fmsustain = (value: number) => this.updateValue("fmsustain", value); - fmsus = this.fmsustain; - fmrelease = (value: number) => this.updateValue("fmrelease", value); - fmrel = this.fmrelease; - fmvelocity = (value: number) => this.updateValue("fmvelocity", value); - fmvel = this.fmvelocity; - fmwave = (value: "sine" | "triangle" | "sawtooth" | "square") => + public fmi = (value: number) => this.updateValue("fmi", value); + public fmh = (value: number) => this.updateValue("fmh", value); + public fmenv = (value: "lin" | "exp") => this.updateValue("fmenv", value); + public fmattack = (value: number) => this.updateValue("fmattack", value); + public fmatk = this.fmattack; + public fmdecay = (value: number) => this.updateValue("fmdecay", value); + public fmdec = this.fmdecay; + public fmsustain = (value: number) => this.updateValue("fmsustain", value); + public fmsus = this.fmsustain; + public fmrelease = (value: number) => this.updateValue("fmrelease", value); + public fmrel = this.fmrelease; + public fmvelocity = (value: number) => this.updateValue("fmvelocity", value); + public fmvel = this.fmvelocity; + public fmwave = (value: "sine" | "triangle" | "sawtooth" | "square") => this.updateValue("fmwave", value); - fmw = this.fmwave; - attack = (value: number) => this.updateValue("attack", value); - atk = this.attack; - release = (value: number) => this.updateValue("release", value); - rel = this.release; - sustain = (value: number) => this.updateValue("sustain", value); - sus = this.sustain; - unit = (value: number) => this.updateValue("unit", value); - u = this.unit; - freq = (value: number) => this.updateValue("freq", value); - f = this.freq; - fm = (value: number | string) => { + public fmw = this.fmwave; + public attack = (value: number) => this.updateValue("attack", value); + public atk = this.attack; + public release = (value: number) => this.updateValue("release", value); + public rel = this.release; + public sustain = (value: number) => this.updateValue("sustain", value); + public sus = this.sustain; + public unit = (value: number) => this.updateValue("unit", value); + public u = this.unit; + public freq = (value: number) => this.updateValue("freq", value); + public f = this.freq; + public fm = (value: number | string) => { if (typeof value === "number") { this.values["fmi"] = value; } else { @@ -87,51 +89,52 @@ export class SoundEvent extends AudibleEvent { } return this; }; - sound = (value: string) => this.updateValue("s", value); - snd = this.sound; - nudge = (value: number) => this.updateValue("nudge", value); - cut = (value: number) => this.updateValue("cut", value); - loop = (value: number) => this.updateValue("loop", value); - clip = (value: number) => this.updateValue("clip", value); - n = (value: number) => this.updateValue("n", value); - note = (value: number) => this.updateValue("note", value); - speed = (value: number) => this.updateValue("speed", value); - spd = this.speed; - begin = (value: number) => this.updateValue("begin", value); - end = (value: number) => this.updateValue("end", value); - gain = (value: number) => this.updateValue("gain", value); - cutoff = (value: number) => this.updateValue("cutoff", value); - lpf = this.cutoff; - resonance = (value: number) => this.updateValue("resonance", value); - lpq = this.resonance; - hcutoff = (value: number) => this.updateValue("hcutoff", value); - hpf = this.hcutoff; - hresonance = (value: number) => this.updateValue("hresonance", value); - hpq = this.hresonance; - bandf = (value: number) => this.updateValue("bandf", value); - bpf = this.bandf; - bandq = (value: number) => this.updateValue("bandq", value); - bpq = this.bandq; - coarse = (value: number) => this.updateValue("coarse", value); - crush = (value: number) => this.updateValue("crush", value); - shape = (value: number) => this.updateValue("shape", value); - pan = (value: number) => this.updateValue("pan", value); - vowel = (value: number) => this.updateValue("vowel", value); - vow = this.vowel; - delay = (value: number) => this.updateValue("delay", value); - del = this.delay; - delayfeedback = (value: number) => this.updateValue("delayfeedback", value); - delayfb = this.delayfeedback; - delaytime = (value: number) => this.updateValue("delaytime", value); - delayt = this.delaytime; - orbit = (value: number) => this.updateValue("orbit", value); - o = this.orbit; - room = (value: number) => this.updateValue("room", value); - rm = this.room; - size = (value: number) => this.updateValue("size", value); - sz = this.size; - velocity = (value: number) => this.updateValue("velocity", value); - vel = this.velocity; + public sound = (value: string) => this.updateValue("s", value); + public snd = this.sound; + public nudge = (value: number) => this.updateValue("nudge", value); + public cut = (value: number) => this.updateValue("cut", value); + public loop = (value: number) => this.updateValue("loop", value); + public clip = (value: number) => this.updateValue("clip", value); + public n = (value: number) => this.updateValue("n", value); + public note = (value: number) => this.updateValue("note", value); + public speed = (value: number) => this.updateValue("speed", value); + public spd = this.speed; + public begin = (value: number) => this.updateValue("begin", value); + public end = (value: number) => this.updateValue("end", value); + public gain = (value: number) => this.updateValue("gain", value); + public cutoff = (value: number) => this.updateValue("cutoff", value); + public lpf = this.cutoff; + public resonance = (value: number) => this.updateValue("resonance", value); + public lpq = this.resonance; + public hcutoff = (value: number) => this.updateValue("hcutoff", value); + public hpf = this.hcutoff; + public hresonance = (value: number) => this.updateValue("hresonance", value); + public hpq = this.hresonance; + public bandf = (value: number) => this.updateValue("bandf", value); + public bpf = this.bandf; + public bandq = (value: number) => this.updateValue("bandq", value); + public bpq = this.bandq; + public coarse = (value: number) => this.updateValue("coarse", value); + public crush = (value: number) => this.updateValue("crush", value); + public shape = (value: number) => this.updateValue("shape", value); + public pan = (value: number) => this.updateValue("pan", value); + public vowel = (value: number) => this.updateValue("vowel", value); + public vow = this.vowel; + public delay = (value: number) => this.updateValue("delay", value); + public del = this.delay; + public delayfeedback = (value: number) => + this.updateValue("delayfeedback", value); + public delayfb = this.delayfeedback; + public delaytime = (value: number) => this.updateValue("delaytime", value); + public delayt = this.delaytime; + public orbit = (value: number) => this.updateValue("orbit", value); + public o = this.orbit; + public room = (value: number) => this.updateValue("room", value); + public rm = this.room; + public size = (value: number) => this.updateValue("size", value); + public sz = this.size; + public velocity = (value: number) => this.updateValue("velocity", value); + public vel = this.velocity; update = (): void => { const [note, _] = noteFromPc(