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.
+