diff --git a/.gitignore b/.gitignore index a547bf3..e29b090 100644 --- a/.gitignore +++ b/.gitignore @@ -22,3 +22,8 @@ dist-ssr *.njsproj *.sln *.sw? + +# Claude artifacts +.claude/ +.clinerules +CLAUDE.md diff --git a/index.html b/index.html index 99172b1..68e6780 100644 --- a/index.html +++ b/index.html @@ -4,9 +4,9 @@ - + - Vending Machine + Poof
diff --git a/package.json b/package.json index f2d9e78..cbfe7d1 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "vendingmachine", + "name": "poof", "private": true, "version": "0.0.0", "type": "module", diff --git a/public/favicon.svg b/public/favicon.svg index 404b19d..f61934e 100644 --- a/public/favicon.svg +++ b/public/favicon.svg @@ -1,4 +1,7 @@ - VM + + + + diff --git a/src/lib/audio/engines/Benjolin.ts b/src/lib/audio/engines/Benjolin.ts index f8e388d..928aab5 100644 --- a/src/lib/audio/engines/Benjolin.ts +++ b/src/lib/audio/engines/Benjolin.ts @@ -908,7 +908,7 @@ export class Benjolin implements SynthEngine { } // Correlate cross-mod amounts - const crossModDelta = (Math.random() - 0.5) * mutationAmount; + const crossModDelta = (Math.random() - 0.5) * mutAmount; mutated.crossMod1to2 = Math.max(0, Math.min(1, mutated.crossMod1to2 + crossModDelta)); mutated.crossMod2to1 = Math.max(0, Math.min(1, mutated.crossMod2to1 + crossModDelta * 0.7)); diff --git a/src/lib/audio/engines/Input.ts b/src/lib/audio/engines/Input.ts index e204cfb..aee8c12 100644 --- a/src/lib/audio/engines/Input.ts +++ b/src/lib/audio/engines/Input.ts @@ -1,4 +1,4 @@ -import type { SynthEngine } from './SynthEngine'; +import type { SynthEngine, PitchLock } from './SynthEngine'; interface InputParams { recorded: boolean; @@ -110,11 +110,11 @@ export class Input implements SynthEngine { return [leftResampled, rightResampled]; } - randomParams(): InputParams { + randomParams(_pitchLock?: PitchLock): InputParams { return { recorded: this.leftChannel !== null && this.rightChannel !== null }; } - mutateParams(params: InputParams): InputParams { + mutateParams(params: InputParams, _mutationAmount?: number, _pitchLock?: PitchLock): InputParams { return params; } } diff --git a/src/lib/audio/engines/Sample.ts b/src/lib/audio/engines/Sample.ts index 9cec520..e2624c4 100644 --- a/src/lib/audio/engines/Sample.ts +++ b/src/lib/audio/engines/Sample.ts @@ -1,4 +1,4 @@ -import type { SynthEngine } from './SynthEngine'; +import type { SynthEngine, PitchLock } from './SynthEngine'; interface SampleParams { loaded: boolean; @@ -66,11 +66,11 @@ export class Sample implements SynthEngine { return [leftResampled, rightResampled]; } - randomParams(): SampleParams { + randomParams(_pitchLock?: PitchLock): SampleParams { return { loaded: this.leftChannel !== null && this.rightChannel !== null }; } - mutateParams(params: SampleParams): SampleParams { + mutateParams(params: SampleParams, _mutationAmount?: number, _pitchLock?: PitchLock): SampleParams { return params; } } diff --git a/src/lib/audio/engines/WavetableEngine.ts b/src/lib/audio/engines/WavetableEngine.ts index a927e66..6d8229b 100644 --- a/src/lib/audio/engines/WavetableEngine.ts +++ b/src/lib/audio/engines/WavetableEngine.ts @@ -102,7 +102,7 @@ export class WavetableEngine implements SynthEngine { }); const results = await Promise.all(loadPromises); - const loaded = results.filter((wt): wt is Wavetable => wt !== null); + const loaded = results.filter((wt) => wt !== null) as Wavetable[]; if (loaded.length > 0) { this.wavetables = loaded; diff --git a/src/lib/components/WelcomeModal.svelte b/src/lib/components/WelcomeModal.svelte index ac2d878..88629ac 100644 --- a/src/lib/components/WelcomeModal.svelte +++ b/src/lib/components/WelcomeModal.svelte @@ -21,11 +21,23 @@ onclick={(e) => e.stopPropagation()} onkeydown={(e) => e.stopPropagation()} > -

Vending Machine

+

Poof: a sample generator

- Oh, looks like you found a sound vending machine. This one seems slightly - broken and it seems that you can get sounds for free... Have fun! + Do you need to generate audio samples for your projects? Poof, it's + already done! These are not the best samples you'll ever hear, but they + have the right to exist, nonetheless, in the realm of all the random and + haphazardly generated digital sounds. Have fun, give computers some love!

+
    +
  • + Generate audio samples using various audio synthesis generators. Random + parameters. +
  • +
  • + Process each sound with with a growing collection of random effects. +
  • +
  • Export your samples as WAV files.
  • +