A pixel-art 1987 desktop buried in error popups during the drop: 808.EXE, an equalizer, a disk-full warning and a subwoofer that has left the chat
FN·086 · Drop one. Disk C: is full (of 808s)

I asked Claude Code for a synthwave and hip hop mashup with heavy trap bass, about three minutes long, and I asked for it to be built entirely in code. No music software. No sample packs. No AI music generator. Just a program that writes every sound from raw waveforms.

Then I asked for a music video the same way. What came back is NEON DROP: a song, plus a video of a 1987 computer trying to survive the drop. It doesn't. The track took about twelve minutes from my first message. The finished video took about an hour, including two rounds of notes from me.

Key Takeaways

Point Details
What it is A 3:07 synthwave x trap track in F minor and a 1920x1080, 60 fps music video, plus an 11-second studio intro (3:18 total).
What made it About 2,650 lines of Python written by Claude Code: numpy synthesizes the audio, Pillow draws the frames, ffmpeg encodes the files.
What it didn't use No DAW, no samples, no music AI model, no video editor, no stock footage. The only outside assets are two open-license pixel fonts and our logo in the intro.
How it syncs The composer writes a score file with all 2,887 note and drum events. The video reads it, so every kick, snare and 808 slide lands on its frame.
The interesting part The AI can't hear or watch its work, so every check was a measurement: loudness per section, a click detector, spectrograms, rendered stills and a full-frame crash sweep.
FN·086 · NEON DROP, 3:18. Speakers up

What Is NEON DROP?

It is a song in eight sections: intro, verse, a build, the first drop, a breakdown, a second build, the second drop and an outro. The tempo moves on purpose. The verse sits at 100 BPM, the build ramps to 140 for the drop, the breakdown falls to 84, and the second build climbs back to 140.

The video is called DROP.EXE inside the story. A computer called NEON/OS '87 boots up and opens a window for each instrument as it comes in: KICK.EXE, 808.EXE, KEYS.EXE, an equalizer. During the build an installer bar reads "INSTALLING DROP...". When the drop lands, the machine loses control. Error popups pile up ("808.EXE is not responding. It is busy slapping."), the windows slide sideways with every 808 glide, and before the drop a dialog asks "Are you sure you want to drop?" with two buttons: YES and ALSO YES.

The breakdown: a dark pixel-art screensaver with rain, small floating icons and the caption it's okay to feel things at 84 BPM
The breakdown slows to 84 BPM and the desktop turns into a screensaver called feelings.scr

The second drop is labeled THE DROPPENING. It ends on a crash screen (DROP_TOO_HARD, error 0x00000808), a reboot into Safe Mode, and one last line: "It is now safe to turn off your speakers."

How Do You Make a Song With No Instruments?

You build each instrument out of math. The composer script is 882 lines of Python and numpy, and it renders the whole track in about 36 seconds.

  • Synths start as saw and pulse waves with anti-aliasing, so the high notes don't fizz. The big lead is five detuned saws stacked together, the classic supersaw. The electric piano and plucks use phase modulation, the same trick behind 80s FM keyboards.
  • Drums are synthesized too. The kick is a sine wave whose pitch drops fast, plus a click and some saturation. The clap is three short bursts of noise. The hi-hats and crash are built from the six square-wave frequencies the original Roland TR-808 used for its metallic sounds.
  • The 808 bass is one voice that glides between notes, run through saturation and a low-pass filter. 41 of the 160 bass notes are glides.
  • Effects are code as well: sweeping filters, reverbs made from shaped noise (including a gated 80s snare reverb), ping-pong delay, risers, impacts and a tape-stop.
  • Mixing and mastering work like a studio chain, written out: the kick ducks the pads and bass (sidechain), a gate silences the moment before each drop, a loudness curve shapes each section, then a high-pass, a glue stage and a limiter finish it. ffmpeg writes the 24-bit WAV and the MP3.

Alongside the audio, the script writes a score file: the time of every beat and every event, by type. That file is what lets the video follow the music.

How Does the Video Know When the Beat Hits?

It reads the score. The video script (1,310 lines) draws each frame as a function of time: at second 74.2, it looks up what just happened in the music and draws the desktop to match. Each event type has a job.

Event in the score What it does on screen
KickPumps the KICK.EXE speaker, makes the wallpaper glow and the windows bounce, shakes the screen in the drops
Snare / clapFills the installer bar during the build, drops a new error popup in the drop
808 glideDrags the windows sideways as the bass slides
Hi-hat rollTriggers "Hi-hats exceeding legal roll limit"
Lead and keysLight up the piano roll, and become stars and rain ripples in the breakdown
Impact and tape-stopFlash, shake and split the colors, then melt the screen

The meters are the exception. The equalizer, oscilloscope and subwoofer meter read the actual audio, frame by frame, because a real meter should react to the real sound, not to a list of notes.

Everything is drawn at 960x540 with Pillow and scaled up 2x without smoothing, which keeps the pixels crisp. Old-monitor effects (scanlines, a vignette, color fringing, the CRT switching off) are added with numpy. The renderer splits the 11,243 frames across parallel CPU workers and pipes them into ffmpeg. A full render takes about two and a half minutes.

Who Decided What?

I gave the brief and the notes. Claude Code made almost everything else, and I think the split is worth being honest about.

What I said: "synthwave hip hop mashup," "heavy bass similar to trap house," "about 3 minutes," "build it all in code." Then notes after listening: tone down the snare in the first verse, the end of both builds is too loud, and "I also noticed some static noise." For the video I asked it to "make it witty and colorful," to pitch three ideas first, and I picked the second one at 1080p and 60 fps.

What Claude Code chose: the key, the chords, the hook, the tempo map, every sound, the mix, all three video concepts (the other two were a road trip and a fruit band), every joke on screen, and how to check its own work. It also kept the launch copy honest. It wouldn't claim to have "no eyes," because it had looked at rendered stills and spectrograms, so the accurate line was that it "never watched a frame play."

What Broke Along the Way?

Plenty. These are the six problems from the build log, and each one was caught by a measurement or a check rather than by luck.

  1. The verse was nearly as loud as the drop. Measured, the verse sat at about -13 dB and the drop at about -10, so the drop had nowhere to go. A loudness curve across sections fixed it. Its first version also turned the breakdown down by accident, which needed fixed hold points.
  2. The silence before the drop wasn't silent. It measured -15 dB, only 5 dB under the drop. A gate took it to -45 dB, and now the drop actually hits.
  3. I heard static. It was a vinyl crackle layer meant as texture. Claude Code wrote a small detector that found 752 clicks. With the layer removed, 297 still showed up. Those turned out to be hi-hat tails longer than the detector's 15 ms window. Widening it to 60 ms brought the count to zero.
  4. "808.EXE" read as "SOS.EXE". In the pixel font, an 8 at that size looks like an S. The fix: any text containing an 8 switches to a second font where the 8 reads clearly. It was caught by looking at rendered stills.
  5. The first test render crashed. The parallel workers shared a lazily loaded data file and corrupted it. Loading the data up front fixed it.
  6. A full sweep found 47 drawing errors. Claude Code added a check mode that draws every frame without saving it. That surfaced shapes with negative height and a zero-width color split. Small guards took it from 47 errors to 3 to 0 across all 11,243 frames.
The end of the video: the desktop rebooted in Safe Mode with a single small KEYS.EXE window and a basic piano
After the crash: Safe Mode, one window, a basic piano

How Do You Check Work You Can't Hear?

You turn every "sounds right" into a number. Claude Code never listened to the track. It measured loudness section by section, compared the quiet parts to the loud parts, counted sudden spikes, and read spectrograms. For the video it rendered stills at chosen moments and ran the full-frame sweep. The final master lands around -12.5 LUFS with peaks held under -1 dB.

My ears still mattered. The static was something I heard first, and the fix only happened because I said so. But once I named a problem, the AI could find it, count it and prove it was gone, which is more than "sounds fine to me" ever does.

What This Means Outside Music

NEON DROP is a fun project, but the working pattern is the one we use on client systems. An AI agent answering texts at 2am can't see your customer either. What makes it trustworthy is the same loop: a clear brief, a person who gives notes, and checks that turn "seems fine" into something measured. Logs of every conversation. Tests that run before anything ships. A human review gate on the messages that matter.

If you want that loop running on your leads and your phone, that's what our managed setup does, and a custom build is the next step up when you want a system shaped around your shop. Most shops start managed and grow into a rig.

Credits

  • Music, sound design and visuals: generated in Python by Claude Code, directed by Adam Pichardo. No samples, stock footage or sound effects.
  • Fonts (SIL Open Font License 1.1): Press Start 2P by CodeMan38, and VT323 by Peter Hull.
  • Encoding and file conversion: ffmpeg.

FAQ

Can AI Make a Music Video Without Music or Video Software?

It did here. Claude Code wrote Python that synthesizes every sound from waveforms and noise with numpy and draws every frame with Pillow. No DAW, samples, music AI model or video editor was used. ffmpeg only encoded the finished audio and frames and joined the files.

How Long Did NEON DROP Take to Make?

About twelve minutes to the first version of the track and about an hour to the finished music video, including two rounds of mix notes. The 11-second intro and launch copy took roughly another hour. The track renders in about 36 seconds and the video in about two and a half minutes on a desktop CPU.

How Does the Video Sync to the Music?

The composer script writes a score file with the timestamp of all 2,887 note and drum events. The video script reads it, so each kick, snare, 808 glide and impact lands on its exact frame. The equalizer, oscilloscope and bass meters read the rendered audio instead, so they react to the real sound.

How Can an AI Mix Music It Cannot Hear?

By measuring it. Claude Code checked loudness per section, compared quiet and loud parts, ran a click detector and read spectrograms. When a problem was reported, such as static or a too-loud build, it found the cause in the numbers and confirmed the fix the same way.

What Does This Have to Do With AI for a Small Business?

The same working loop makes business AI trustworthy. An agent answering customers can't see them, so it needs a clear brief, a person giving notes, and measured checks: conversation logs, tests before changes ship, and human review on the messages that matter.