samirpatil2000/veloop

Veloop: instant webcam loop pedal and video soundboard for Google Meet, Zoom, and WebRTC calls. 100% local, open source.

See the code
chrome-extension
google-meet
mediastream
productivity
typescript
video-calls
webcam
webext
webrtc
zoom

See what people are saying (1)

SourceMessageScoreDate

I built a weird Chrome extension because I hated sitting through passive video calls (r/SideProject)

You know the meetings: 12 people, you're presenting nothing, but the camera has to be on. So you sit there nodding at a screen for 45 minutes, afraid to look away in case someone screenshots you mid-yawn. That pent-up frustration turned into the dumbest useful thing I've built: **Veloop**, a Chrome…

1

Sep 19, 2026

README

Veloop Logo

Veloop

Instant video soundboard & loop pedal for Google Meet, Zoom, and WebRTC calls

Chrome Web Store YouTube Demo WebRTC Privacy MIT License


✨ Why Veloop?

  • Pedal-First Video Looping — Step on your pedal or hold a hotkey to record yourself nodding or listening, then release to loop immediately.
  • Instant Soundboard Presets — Save in-meeting loops with custom titles (e.g., "Attentive Nodding", "Sipping Coffee", "Taking Notes") and trigger them on demand with a single click.
  • Hardware Camera Power Management — When looping or playing a preset, physical webcam tracks are detached and released (releaseHardwareCamera()), turning your webcam's green indicator LED OFF.
  • Seamless Seam Dissolves — Crossfade transitions ensure loops and returning-to-live blend smoothly without harsh visual cuts or freezing frames.
  • 100% Private & Local — No external servers, no cloud uploads, zero telemetry. All video encoding (MediaRecorder WebM) and storage run entirely inside local browser IndexedDB.
  • Zero Virtual Camera Drivers — Operates natively inside Chrome via browser canvas.captureStream() and getUserMedia interception without needing OBS or system-level kernel extensions.

📺 Demo Video

https://github.com/user-attachments/assets/e7c2297b-3fb2-44b7-981f-556eb217ce9d

▶️ Also on YouTube — Looping webcam feed during a live video call


Screenshot

Veloop Soundboard in Google Meet


📥 Installation

Install Veloop with one click from the official Chrome Web Store:

Add to Chrome

👉 Get Veloop on the Chrome Web Store


Developer Mode (Local Install)

  1. Clone or download this repository:
    git clone https://github.com/samirpatil2000/veloop.git
    cd veloop
    
  2. Install dependencies and build:
    npm install
    npm run build
    
  3. Open Chrome and navigate to chrome://extensions
  4. Toggle Developer mode on (top-right corner)
  5. Click Load unpacked and select the dist/ directory inside this repository

🚀 How it Works

Veloop 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:

  1. Synthetic Video Stream: The meeting site receives a synthetic MediaStream originating from the compositor canvas.
  2. Pedal Capture & Instant Loop: Holding Right Option / Alt captures uncompressed frames into memory while concurrently recording a compressed WebM stream via hardware-accelerated MediaRecorder.
  3. Webcam LED Extinction: The moment you enter loop mode, the raw camera hardware tracks are terminated. Your laptop or external webcam indicator light clicks off.
  4. Preset Soundboard: In the popup, name any active loop to store it permanently in IndexedDB. Whenever you are in a call, 1-tap any card on your soundboard to replay that clip seamlessly.
  5. Seamless Dissolve to Live: Hitting Right Command or L re-acquires the physical camera in the background and executes an alpha-blended crossfade back to reality.

📖 For complete architecture diagrams, WebRTC interception details, and pipeline specifications, see TECH_DOC.md.


⌨️ Hardware & Keyboard Controls

Shortcut / PedalActionDescription
Right Option / Alt (Hold & Release)Pedal Down / UpHold to record frames, release to immediately start looping
Right Command or LGo LiveSeamlessly dissolves from loop or preset back to live camera feed
RToggle RecordToggle start/stop recording without holding
19 (Popup)Trigger PresetPlay a saved soundboard preset card

Physical foot pedals sending standard keyboard keystrokes (like Right Alt or USB pedal switch) work out-of-the-box.


🖥️ UI & Controls

  • Popup Soundboard — Accessible via extension icon or keyboard. Features active recording state badges (LIVE, REC, LOOP, PLAY), 1-tap preset triggers, and one-click preset labeling.
  • Studio Options Control Center — Customize maximum recording length, minimum tap threshold (to prevent accidental triggers), crossfade dissolve duration, and preview opacity.

⏱️ Video Durations & Timing Limits

Configure recording durations, trigger thresholds, and transition times via Options (chrome-extension://<id>/options.html):

SettingDefaultConfigurable RangeDescription
Maximum Loop Duration30s1s120s (2 min)Caps how long a loop can be. Auto-loops immediately if the limit is reached.
Minimum Recording Threshold1.0s0.1s5.0sDiscards brief accidental pedal taps below this duration.
Crossfade Dissolve Time0.5s0.0s3.0sSmooth alpha transition duration when switching between loop and live camera.
Playback Frame Rate30 FPSFixedNative frame rate for seamless WebRTC streaming on Google Meet, Zoom, etc.
Overlay Opacity50%0%100%Ghosting preview opacity for camera alignment.


⚖️ Privacy & Security

  • Zero Cloud & Zero Telemetry: Veloop does not transmit any video, audio, or analytics to any remote server.
  • Pure Local Storage: All saved presets reside exclusively within your browser's private IndexedDB database on your device.
  • Verified Scoped Permissions: Restricts script injection strictly to verified video calling domains (Google Meet, Zoom, Teams, Webex, Discord, Whereby).

📄 License

MIT License — feel free to contribute, build upon, or fork for your own setup.


Made with ❤️ for video meetings

Contributors

samirpatil2000

15 commits

samirpatil2000/veloop

Veloop: instant webcam loop pedal and video soundboard for Google Meet, Zoom, and WebRTC calls. 100% local, open source.

See the code
chrome-extension
google-meet
mediastream
productivity
typescript
video-calls
webcam
webext
webrtc
zoom

See what people are saying (1)

SourceMessageScoreDate

I built a weird Chrome extension because I hated sitting through passive video calls (r/SideProject)

You know the meetings: 12 people, you're presenting nothing, but the camera has to be on. So you sit there nodding at a screen for 45 minutes, afraid to look away in case someone screenshots you mid-yawn. That pent-up frustration turned into the dumbest useful thing I've built: **Veloop**, a Chrome…

1

Sep 19, 2026

README

Veloop Logo

Veloop

Instant video soundboard & loop pedal for Google Meet, Zoom, and WebRTC calls

Chrome Web Store YouTube Demo WebRTC Privacy MIT License


✨ Why Veloop?

  • Pedal-First Video Looping — Step on your pedal or hold a hotkey to record yourself nodding or listening, then release to loop immediately.
  • Instant Soundboard Presets — Save in-meeting loops with custom titles (e.g., "Attentive Nodding", "Sipping Coffee", "Taking Notes") and trigger them on demand with a single click.
  • Hardware Camera Power Management — When looping or playing a preset, physical webcam tracks are detached and released (releaseHardwareCamera()), turning your webcam's green indicator LED OFF.
  • Seamless Seam Dissolves — Crossfade transitions ensure loops and returning-to-live blend smoothly without harsh visual cuts or freezing frames.
  • 100% Private & Local — No external servers, no cloud uploads, zero telemetry. All video encoding (MediaRecorder WebM) and storage run entirely inside local browser IndexedDB.
  • Zero Virtual Camera Drivers — Operates natively inside Chrome via browser canvas.captureStream() and getUserMedia interception without needing OBS or system-level kernel extensions.

📺 Demo Video

https://github.com/user-attachments/assets/e7c2297b-3fb2-44b7-981f-556eb217ce9d

▶️ Also on YouTube — Looping webcam feed during a live video call


Screenshot

Veloop Soundboard in Google Meet


📥 Installation

Install Veloop with one click from the official Chrome Web Store:

Add to Chrome

👉 Get Veloop on the Chrome Web Store


Developer Mode (Local Install)

  1. Clone or download this repository:
    git clone https://github.com/samirpatil2000/veloop.git
    cd veloop
    
  2. Install dependencies and build:
    npm install
    npm run build
    
  3. Open Chrome and navigate to chrome://extensions
  4. Toggle Developer mode on (top-right corner)
  5. Click Load unpacked and select the dist/ directory inside this repository

🚀 How it Works

Veloop 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:

  1. Synthetic Video Stream: The meeting site receives a synthetic MediaStream originating from the compositor canvas.
  2. Pedal Capture & Instant Loop: Holding Right Option / Alt captures uncompressed frames into memory while concurrently recording a compressed WebM stream via hardware-accelerated MediaRecorder.
  3. Webcam LED Extinction: The moment you enter loop mode, the raw camera hardware tracks are terminated. Your laptop or external webcam indicator light clicks off.
  4. Preset Soundboard: In the popup, name any active loop to store it permanently in IndexedDB. Whenever you are in a call, 1-tap any card on your soundboard to replay that clip seamlessly.
  5. Seamless Dissolve to Live: Hitting Right Command or L re-acquires the physical camera in the background and executes an alpha-blended crossfade back to reality.

📖 For complete architecture diagrams, WebRTC interception details, and pipeline specifications, see TECH_DOC.md.


⌨️ Hardware & Keyboard Controls

Shortcut / PedalActionDescription
Right Option / Alt (Hold & Release)Pedal Down / UpHold to record frames, release to immediately start looping
Right Command or LGo LiveSeamlessly dissolves from loop or preset back to live camera feed
RToggle RecordToggle start/stop recording without holding
19 (Popup)Trigger PresetPlay a saved soundboard preset card

Physical foot pedals sending standard keyboard keystrokes (like Right Alt or USB pedal switch) work out-of-the-box.


🖥️ UI & Controls

  • Popup Soundboard — Accessible via extension icon or keyboard. Features active recording state badges (LIVE, REC, LOOP, PLAY), 1-tap preset triggers, and one-click preset labeling.
  • Studio Options Control Center — Customize maximum recording length, minimum tap threshold (to prevent accidental triggers), crossfade dissolve duration, and preview opacity.

⏱️ Video Durations & Timing Limits

Configure recording durations, trigger thresholds, and transition times via Options (chrome-extension://<id>/options.html):

SettingDefaultConfigurable RangeDescription
Maximum Loop Duration30s1s120s (2 min)Caps how long a loop can be. Auto-loops immediately if the limit is reached.
Minimum Recording Threshold1.0s0.1s5.0sDiscards brief accidental pedal taps below this duration.
Crossfade Dissolve Time0.5s0.0s3.0sSmooth alpha transition duration when switching between loop and live camera.
Playback Frame Rate30 FPSFixedNative frame rate for seamless WebRTC streaming on Google Meet, Zoom, etc.
Overlay Opacity50%0%100%Ghosting preview opacity for camera alignment.


⚖️ Privacy & Security

  • Zero Cloud & Zero Telemetry: Veloop does not transmit any video, audio, or analytics to any remote server.
  • Pure Local Storage: All saved presets reside exclusively within your browser's private IndexedDB database on your device.
  • Verified Scoped Permissions: Restricts script injection strictly to verified video calling domains (Google Meet, Zoom, Teams, Webex, Discord, Whereby).

📄 License

MIT License — feel free to contribute, build upon, or fork for your own setup.


Made with ❤️ for video meetings

Contributors

samirpatil2000

15 commits

Languages

TypeScript

62.6%

Python

12.9%

CSS

12.3%

HTML

10.1%

JavaScript

2.0%