github ↗

Proof that vibe coding can merge separate projects without catastrophic failure. Two vibe projects — two independent beat engines — folded into one unified codebase. An integration test as art project. Internally it runs as Image → Dubstep (JavaFX) — Sliding Window: the full, grown-up sibling of VIBESMART2.

Where VIBESMART2 was the sketch, this is the studio. It takes an image or a live webcam feed, slides a window across it, vectorizes what it sees, lets a self-organizing map organize those vectors, and routes the result through a real Web-Audio-style node graph — synth voices, multiband buses, a full effects rack, sidechain compression, and a master limiter — into live dubstep you can record. 62 source files; one running instrument.

the signal chain
  1. 01Source. Feed it an uploaded image or a live webcam (pick the camera). A sliding window moves across the frame so the input is continuous, not a single snapshot.
  2. 02Vectorize. The window is read as 8×8 feature vectors — visual structure becomes a stream of numbers.
  3. 03Self-organize. A SOM learns the vector stream (trainer + runtime), mapping visual texture to a 2-D organization that drives the music. Two visualizer walls (SOM Views, a 6×6 random-views grid) let you watch it.
  4. 04Two engines. The merged beat engines (a vector engine and a full beat engine/sequencer) turn the organized map into patterns and notes — the amalgamation's whole point.
  5. 05Synthesize & mix. Voices — kick, sub-bass, noise burst, one-shots, high lines — render through a node graph into Low / Mid / High buses and a Master (with low-band mono).
  6. 06Effects & dynamics. A 9-unit FX rack — reverb, echo, flanger, tremolo/pan, auto-wah, widener, phaser, chorus, bit-crusher — plus sidechain ducking (kick → sub/bass) and a master look-ahead limiter.
  7. 07Perform & record. Play loop / once, test sound, choose your audio output, and record — both the audio (to .wav) and your actions (every slider/button move, to a replayable .actions file). Save / load recordings.
what it means to run it

This isn't a demo — it's a live instrument that happens to be played by what you point it at. The "amalgamation" in the name is literal: two separately vibe-coded engines were stitched into a single graph that doesn't fall over. Running it is the proof. You aim a camera at the world, and the world plays itself through a dubstep rig.

compile & run

Easiest — a prebuilt runnable jar ships with the repo (it bundles JavaFX, so it runs on its own):

java -jar VIBE.jar

From source — a Maven project; needs JDK 21 (Maven pulls JavaFX 21 and webcam-capture):

# clone git clone https://github.com/brackishbert-coder/VIBEAMAGLIMATION cd VIBEAMAGLIMATION # build mvn compile # run (entry point: com.imagedubstep.app.DubstepApp) mvn javafx:run

Or import the folder into Eclipse (.project / .classpath included) and run DubstepApp. The repo also carries example captures — syve.wav, test.wav, and a syve.actions automation recording.

vibe coding integration audio synthesis self-organizing maps webcam javafx
stable
01 screenshot
02 screenshot
03 screenshot

vibe coding is not the absence of a plan — it is trusting that two things built in the dark will fit, because they were both reaching for the same shape.

vectorization is the moment a thing stops being itself and starts being comparable. the image forgets it was an image; only the numbers cross over.

two engines that never met now share one clock. the seam holds. that is the whole experiment.

point it at anything. the machine does not see your face — it sees the distances between the parts of your face, and turns those distances into a beat.

nothing here was composed. it was grown, then merged, then aimed. the future of making things sounds a lot like this.