Veloop: instant webcam loop pedal and video soundboard for Google Meet, Zoom, and WebRTC calls. 100% local, open source.
TypeScript
4
15 commits
updated Sep 19, 2026
Instant video soundboard & loop pedal for Google Meet, Zoom, and WebRTC calls
releaseHardwareCamera()), turning your webcam's green indicator LED OFF.MediaRecorder WebM) and storage run entirely inside local browser IndexedDB.canvas.captureStream() and getUserMedia interception without needing OBS or system-level kernel extensions.https://github.com/user-attachments/assets/e7c2297b-3fb2-44b7-981f-556eb217ce9d
▶️ Also on YouTube — Looping webcam feed during a live video call
Install Veloop with one click from the official Chrome Web Store:
👉 Get Veloop on the Chrome Web Store
git clone https://github.com/samirpatil2000/veloop.git
cd veloop
npm install
npm run build
chrome://extensionsdist/ directory inside this repositoryVeloop turns your browser into a digital video loop pedal. It intercepts navigator.mediaDevices.getUserMedia at the page level and routes your webcam through an ultra-low-latency 2D canvas compositor:
MediaStream originating from the compositor canvas.MediaRecorder.IndexedDB. Whenever you are in a call, 1-tap any card on your soundboard to replay that clip seamlessly.📖 For complete architecture diagrams, WebRTC interception details, and pipeline specifications, see TECH_DOC.md.
| Shortcut / Pedal | Action | Description |
|---|---|---|
| Right Option / Alt (Hold & Release) | Pedal Down / Up | Hold to record frames, release to immediately start looping |
| Right Command or L | Go Live | Seamlessly dissolves from loop or preset back to live camera feed |
| R | Toggle Record | Toggle start/stop recording without holding |
| 1 – 9 (Popup) | Trigger Preset | Play a saved soundboard preset card |
Physical foot pedals sending standard keyboard keystrokes (like Right Alt or USB pedal switch) work out-of-the-box.
LIVE, REC, LOOP, PLAY), 1-tap preset triggers, and one-click preset labeling.Configure recording durations, trigger thresholds, and transition times via Options (chrome-extension://<id>/options.html):
| Setting | Default | Configurable Range | Description |
|---|---|---|---|
| Maximum Loop Duration | 30s | 1s – 120s (2 min) | Caps how long a loop can be. Auto-loops immediately if the limit is reached. |
| Minimum Recording Threshold | 1.0s | 0.1s – 5.0s | Discards brief accidental pedal taps below this duration. |
| Crossfade Dissolve Time | 0.5s | 0.0s – 3.0s | Smooth alpha transition duration when switching between loop and live camera. |
| Playback Frame Rate | 30 FPS | Fixed | Native frame rate for seamless WebRTC streaming on Google Meet, Zoom, etc. |
| Overlay Opacity | 50% | 0% – 100% | Ghosting preview opacity for camera alignment. |
IndexedDB database on your device.MIT License — feel free to contribute, build upon, or fork for your own setup.
Made with ❤️ for video meetings
15 commits
TypeScript
62.6%
Python
12.9%
CSS
12.3%
HTML
10.1%
JavaScript
2.0%
Veloop: instant webcam loop pedal and video soundboard for Google Meet, Zoom, and WebRTC calls. 100% local, open source.
TypeScript
4
15 commits
updated Sep 19, 2026
Instant video soundboard & loop pedal for Google Meet, Zoom, and WebRTC calls
releaseHardwareCamera()), turning your webcam's green indicator LED OFF.MediaRecorder WebM) and storage run entirely inside local browser IndexedDB.canvas.captureStream() and getUserMedia interception without needing OBS or system-level kernel extensions.https://github.com/user-attachments/assets/e7c2297b-3fb2-44b7-981f-556eb217ce9d
▶️ Also on YouTube — Looping webcam feed during a live video call
Install Veloop with one click from the official Chrome Web Store:
👉 Get Veloop on the Chrome Web Store
git clone https://github.com/samirpatil2000/veloop.git
cd veloop
npm install
npm run build
chrome://extensionsdist/ directory inside this repositoryVeloop turns your browser into a digital video loop pedal. It intercepts navigator.mediaDevices.getUserMedia at the page level and routes your webcam through an ultra-low-latency 2D canvas compositor:
MediaStream originating from the compositor canvas.MediaRecorder.IndexedDB. Whenever you are in a call, 1-tap any card on your soundboard to replay that clip seamlessly.📖 For complete architecture diagrams, WebRTC interception details, and pipeline specifications, see TECH_DOC.md.
| Shortcut / Pedal | Action | Description |
|---|---|---|
| Right Option / Alt (Hold & Release) | Pedal Down / Up | Hold to record frames, release to immediately start looping |
| Right Command or L | Go Live | Seamlessly dissolves from loop or preset back to live camera feed |
| R | Toggle Record | Toggle start/stop recording without holding |
| 1 – 9 (Popup) | Trigger Preset | Play a saved soundboard preset card |
Physical foot pedals sending standard keyboard keystrokes (like Right Alt or USB pedal switch) work out-of-the-box.
LIVE, REC, LOOP, PLAY), 1-tap preset triggers, and one-click preset labeling.Configure recording durations, trigger thresholds, and transition times via Options (chrome-extension://<id>/options.html):
| Setting | Default | Configurable Range | Description |
|---|---|---|---|
| Maximum Loop Duration | 30s | 1s – 120s (2 min) | Caps how long a loop can be. Auto-loops immediately if the limit is reached. |
| Minimum Recording Threshold | 1.0s | 0.1s – 5.0s | Discards brief accidental pedal taps below this duration. |
| Crossfade Dissolve Time | 0.5s | 0.0s – 3.0s | Smooth alpha transition duration when switching between loop and live camera. |
| Playback Frame Rate | 30 FPS | Fixed | Native frame rate for seamless WebRTC streaming on Google Meet, Zoom, etc. |
| Overlay Opacity | 50% | 0% – 100% | Ghosting preview opacity for camera alignment. |
IndexedDB database on your device.MIT License — feel free to contribute, build upon, or fork for your own setup.
Made with ❤️ for video meetings
15 commits
TypeScript
62.6%
Python
12.9%
CSS
12.3%
HTML
10.1%
JavaScript
2.0%