A self-contained HTML video sampler that runs entirely in the browser. Load a local video, drop cue markers on the timeline, assign them to keyboard pads, play them live, build sequences, record jam performances, and export everything as JSON.
screenshot here
- Download or clone the project.
- Open
index.htmlin a modern browser. - Click Choose File and select a local video.
- Add markers or click Auto-slice 10.
- Trigger pads with keys
1–0. - Record, sequence, save, reload, repeat.
| Action | Control |
|---|---|
| Play / pause video | Spacebar or Play / Pause button |
| Add marker | M or Add Marker button |
| Add marker on timeline | Shift + click timeline |
| Seek timeline | Click timeline |
| Trigger pads | 1 2 3 4 5 6 7 8 9 0 |
| Start / stop jam recording | R |
| Load recorded jam to sequence | L |
| Nudge playhead | -1s / +1s buttons |
Use the file picker to load any browser-supported video file. The video stays local. The app creates a temporary object URL in your browser and does not upload anything.
Markers are cue points. Each marker has:
- Label
- Pad assignment
- Start time
- Duration
You can create markers manually at the playhead, Shift-click them onto the timeline, or auto-slice the whole video into 10 pads.
Each marker can be assigned to one pad key. Pads use keys:
1 2 3 4 5 6 7 8 9 0
Only one marker can own a pad at a time. If you assign a used pad to a new marker, the previous marker is unassigned.
Click a pad or press its key. The video jumps to that marker and plays for the marker duration.
Optional playback modes:
- Stop at cue end: pauses playback when the cue duration ends.
- Loop selected cue: repeatedly plays the selected marker.
Add pad cues into the sequence panel. Each sequence step can have a custom playback length independent of the marker’s cue duration.
Sequence steps can be:
- Played individually
- Reordered
- Duplicated
- Deleted
- Edited for duration
Click Record Jam or press R, then trigger pads live. The app records the timing of your pad hits and turns the performance into a reusable sequence.
After recording, you can:
- Play the recorded jam directly
- Load it into the editable sequence
- Save it as JSON
Click Save Project JSON to export:
{
"version": 1,
"markers": [],
"sequence": [],
"lastRecordedSequence": [],
"jamEvents": []
}This saves your marker map, current sequence, recorded jam sequence, and raw jam events.
To restore a project, click Load Project JSON and select a previously saved project file.
Click Save Recorded Jam JSON to export only the most recent recorded jam:
{
"version": 1,
"type": "recorded_jam",
"recordedJam": []
}This is useful for saving performances separately from the full project state.
This is currently a single-file prototype. Everything lives in one HTML file: structure, styling, and JavaScript logic.
That makes it easy to run, share, remix, and break apart later.
Possible next steps:
- Add waveform or thumbnail timeline previews
- Add import for recorded jam JSON
- Add MIDI controller support
- Add pad colors
- Add per-pad volume or speed
- Add export to EDL, CSV, or video edit formats
- Package as a reusable JavaScript library
- Add persistent browser storage
- Add project names and metadata
Use a current desktop browser such as Chrome, Edge, Firefox, or Safari. Supported video formats depend on the browser.
Add your preferred license here.