How to add an oscilloscope visualizer with Claude

A glowing green X-Y trace on a small gridded scope screen blooms into looping curves on each kick drum, then shrinks back toward a dot.

Get this effect

  1. Switch to Code in your Claude Desktop App

  2. Install the skill (once)

    Show the prompt
    Install the Recharm video effects skill: download https://recharm-growth-staging.s3.us-east-2.amazonaws.com/website/downloads/recharm-video-effects.zip and unzip it into ~/.claude/skills
  3. Ask for the effect

    Add an oscilloscope visualizer to input.mp4
    Trace: rc=12:gc=140:bc=40

Several videos, several effects, one ask

Put your clips in the folder, mention them with @, and ask for everything at once. Claude runs one tested script after another on each clip, then joins them.

Add an oscilloscope visualizer to @clip1.mp4, put a sale badge on @clip2.mp4, give @clip3.mp4 a VHS look, then join all three with crossfades.

Settings you can change

Ask Claude to change any of these, or edit them at the top of the command.

SettingDefaultWhat it does
SIZE260Scope screen width and height in pixels.
X, Y0.5, 0.84Screen center, as shares of the frame width and height.
START0.5Second the scope switches on.
LOWPASS700The trace follows the sound below this many Hz; higher gives busier, spikier curves.
DELAY5Milliseconds the vertical axis lags the horizontal one; it opens the trace into loops.
ZOOM1.2How far the trace reaches toward the screen edge.
TRACErc=12:gc=140:bc=40How much red, green and blue each pass of the trace adds.
FADE60How fast old trace fades, 0-255 per frame.
GLOW5Blur radius of the glow around the trace.

Without the skill

Don’t want to install the skill? Paste this prompt into Claude Code and Claude writes the command itself.

Show the prompt
Add an oscilloscope visualizer to input.mp4 using ffmpeg. Draw a 260x260 pixel scope screen centered at 50% across and 84% down the frame: fill it with dark green (6, 20, 12), draw a 6 by 6 grid of thin (30, 106, 54) lines and a 3 pixel (60, 154, 85) border. On it, draw the soundtrack as an X-Y trace with ffmpeg's avectorscope filter (mode=lissajous_xy, draw=aaline, scale=sqrt, zoom=1.2): take the audio as mono, low-pass it at 700 Hz, and feed it as the horizontal channel with a copy delayed by 5 ms as the vertical one, so it draws loops even from mono sound. Make the trace bright green (about (40, 255, 120)) with a soft glow: add a copy blurred with a Gaussian of sigma 5 and brightened about 3x, and let old trace fade at 60 per frame. Show the scope from 0.5 seconds to the end, and nothing before. Leave the rest of the frame untouched. Don't use ffmpeg's drawtext filter (and draw any text with Pillow if you add some), keep the size, 30 fps and the audio, and save it as output.mp4.

Run it without Claude

This is the exact command we tested. Save it as oscilloscope-visualizer.sh and run:

sh oscilloscope-visualizer.sh input.mp4 output.mp4
Show the command
#!/bin/sh
# Oscilloscope visualizer: a glowing green X-Y trace on a dark scope screen blooms into loops on every beat.
# Usage: sh oscilloscope-visualizer.sh input.mp4 output.mp4  (the input needs an audio track)
# Needs ffmpeg with the avectorscope filter (most builds have it, Homebrew's included).
set -e
IN="$1"; OUT="$2"
SIZE=260         # scope screen width and height in pixels
X=0.5; Y=0.84    # screen center (0-1 across and down the frame)
START=0.5        # second the scope switches on
LOWPASS=700      # Hz; the trace follows the sound below this, which keeps the loops smooth
DELAY=5          # ms the vertical axis lags the horizontal one, so any sound (mono too) draws loops, not a line
ZOOM=1.2         # how far the trace reaches toward the screen edge
TRACE="rc=12:gc=140:bc=40"   # how much red, green and blue each pass of the trace adds
FADE=60          # how fast old trace fades (0-255 per frame)
GLOW=5           # blur radius of the glow around the trace

ffmpeg -y -v error -i "$IN" -filter_complex "
  [0:a]aformat=channel_layouts=mono,lowpass=f=$LOWPASS,asplit[x][y];
  [y]adelay=$DELAY[ylag];
  [x][ylag]amerge=inputs=2,avectorscope=s=${SIZE}x${SIZE}:r=30:mode=lissajous_xy:draw=aaline:scale=sqrt:zoom=$ZOOM:$TRACE:ac=255:rf=$FADE:gf=$FADE:bf=$FADE:af=$FADE,format=gbrap,split[sharp][soft];
  [soft]gblur=sigma=$GLOW,colorlevels=rimax=0.35:gimax=0.35:bimax=0.35[glow];
  [glow][sharp]blend=all_mode=addition[trace];
  color=c=0x06140c:s=${SIZE}x${SIZE}:r=30,drawgrid=w=$((SIZE / 6)):h=$((SIZE / 6)):c=0x1e6a36,drawbox=c=0x3c9a55:t=3,format=gbrap[screen];
  [screen][trace]blend=all_mode=lighten[scope];
  [0:v][scope]overlay=x=W*$X-w/2:y=H*$Y-h/2:enable='gte(t,$START)':shortest=1,format=yuv420p[v]" \
  -map "[v]" -map 0:a -c:v libx264 -crf 18 -r 30 -c:a copy "$OUT"

Find 3x winning ads

Recharm cuts your ad footage into tagged, searchable clips: hooks, testimonials, product shots. Find the shots that win, add the effect with Claude, and ship 3x more ad edits.

Start 14-day free trial