Deeper Guide
Enhance any video or audio with haptics, gaze tracking, and smart loops. Author once, share with anyone running CCP.
On This Page
Overview
Deeper lets you wire haptics, gaze triggers, and timed cues into any audio or video. The file you create (.ccpenh.json) is portable — anyone running CCP can play it.
Two halves to the feature:
- The Player — loads a piece of media plus an enhancement file and runs them together. Haptics, effects, and rules fire on the timeline as the media plays.
- The Editor — a timeline-based authoring tool. Drop effects on the timeline, define regions, attach rules to triggers like gaze or blinks. Save as a portable file or bundle straight into the media.
Works with local audio (MP3, WAV, M4A), local video (MP4, M4V, MOV), and remote video URLs (HypnoTube and similar embed-friendly sources).
Free Feature
Deeper is free. No Patreon required. The 🎓 button inside the Deeper tab opens a one-minute walkthrough whenever you want to revisit it.
The Player
The player runs an enhancement against a piece of media. Pick the audio or video, pick the enhancement, hit play — haptics and rules fire on the timeline.
If an enhancement file sits next to your audio with the same name, it loads automatically. If you import a media file that has an enhancement bundled into it, the player auto-detects that too — no separate file needed.
Controls
- Play / Pause / Stop — standard transport.
- Seek bar — scrub anywhere; rules and effects re-evaluate from the new position.
- Volume — per-player; doesn't affect the rest of CCP's audio.
- 👁 Eye Tracking — turn the webcam on for this playback so gaze, blink, and "looked away" rules can fire. Stop anytime with the same button.
- Event log — the last few actions the engine fired, useful for debugging an enhancement that doesn't behave the way you expect.
Three playback modes
Local audio
Audio plays while a waveform visualization scrolls underneath. All time-based and haptic rules work; webcam-based rules need the eye-tracking toggle on.
Local video
Video preview powered by LibVLC. All triggers including webcam gaze can target regions of the video frame.
HypnoTube / remote
Embedded WebView2 browser plays the URL. Gaze rules can still target rectangles overlaid on the video frame.
First time using webcam triggers?
Webcam tracking needs a one-time consent and calibration in the Lab tab before any gaze or blink rule can fire. Walk through the Webcam & Gaze Tracking guide first.
The Editor
The editor is a two-column window. Left side is preview + timeline; right side is metadata + the editor for whatever item you've selected.
Layout
- Preview pane (top-left) — video frame, audio waveform, or embedded browser depending on the source. Doubles as the surface for placing gaze rectangles.
- Timeline (bottom-left) — horizontal timeline of effects and rule bands. Zoom in and out, scrub the playhead, drag items to reposition.
- Metadata (top-right) — name, creator, remixer (if you're remixing someone else's enhancement), description, tags, license.
- Selected item (bottom-right) — context-sensitive editor for whichever effect, rule, or region you clicked on the timeline.
Timeline shortcuts
- + Effect / + Rule hero buttons add an item at the current playhead.
- Right-click the timeline for the same options in a context menu.
- Shift-drag to mark a region directly on the timeline.
- R drops a 5-second region at the playhead.
- H drops a haptic event at the playhead.
- Preview toggle plays the media inline so you can hear / see your edits in context.
The File menu
Top-left of the editor window. Dark theme, keyboard shortcuts in parentheses.
File Save (Ctrl+S) Save As... (Ctrl+Shift+S) ──────────── Export as Media... (Ctrl+E) ──────────── Close
Validation before save
The bottom strip of the editor shows a live validation summary — "clean" or a count of errors. Saving and exporting are blocked until errors are fixed (orphaned region references, malformed rules, etc.). Click an error to jump to the offending item.
Building Blocks
Three categories of items live on the timeline: Effects (things that happen at a specific time), Triggers (conditions that watch for something), and Actions (what fires when a trigger condition is met). Rules pair a trigger with an action.
Effects
Drop one at a specific time on the timeline. Five types:
Haptic
Patterned vibration with intensity curve. Pick a stock pattern or shape your own envelope by dragging points on the curve editor.
Flash
Image flash, inheriting your CCP Flashes settings. Configurable duration.
Bubble
Bubble burst, inheriting your CCP Bubbles settings. Configurable window and intensity.
Subliminal
Briefly flashed text overlay. You set the words and the duration in milliseconds.
Overlay
Pink filter, spiral, or brain drain blur. Configurable opacity and duration.
Triggers
Eight conditions a rule can watch for:
Reaches a specific time
Fires once when playback reaches the given time. The simplest trigger; use these to script a session.
Enters a region
Fires once each time the playhead enters the named region. Pair with the exit trigger for symmetric setup/teardown.
Leaves a region
Fires once each time the playhead leaves the named region.
Gaze: looks at region
Fires when the user's gaze lands inside a rect for at least min_dwell_ms. Pick a region of the video frame, then choose what should happen.
Gaze: avoids region
Fires when gaze stays OUTSIDE the rect for at least min_dwell_ms. Useful for nudging attention back to where you want it.
Looks away
Fires once when the user's face leaves the camera for at least min_duration_ms and then returns. Use this to pull attention back.
Blinks
Fires on every detected blink. Best paired with cooldowns so back-to-back blinks don't stack effects.
Opens mouth
Fires when the user opens their mouth. Combine with a region constraint if you want it only during specific moments.
Actions
What a rule does when its trigger fires. Eight types:
Jump to time
Jumps playback to a target time, or to the start/end of a named region.
Loop the current region
Seeks back to the start of the current region. Combine with a "reaches a specific time" trigger at the region's end to build a loop.
Pause playback
Pauses media playback. The user has to resume manually.
Play an audio cue
Plays a short audio cue. Path is absolute or relative to the assets folder; ducks other audio by default.
Trigger a haptic pattern
Sends a haptic pattern to the connected device. Pick a stock pattern or design a custom curve.
Fire an effect
Fires a CCP effect (haptic, flash, bubble, subliminal text, or screen overlay) with its own settings.
Shake the screen
Brief camera-shake of every visible window. Higher intensity = bigger jitter; duration controls how long it lasts.
Change session intensity
Adjusts session intensity. Stubbed in v1 — reserved for future central-intensity wiring.
Cooldowns
Every rule has a per-rule cooldown in milliseconds. Add one to anything that could fire repeatedly (blinks, gaze hover) to avoid stacking effects on top of each other.
File Format & Library
The .ccpenh.json file
Enhancements save as plain JSON with a .ccpenh.json extension. Schema version ccp-enhancement/v1. The file contains metadata, regions, haptic tracks, and rules — everything needed to reproduce the experience anywhere CCP runs.
- Human-readable JSON — you can diff and merge them in version control.
- Capped at 1 MB to keep things sane.
- Sidecar pattern: an enhancement file in the same folder as a media file, with the same base name, auto-loads when you open the media.
The Library
Everything in your Deeper folder shows up in the Library card. Double-click to edit, right-click for play / reveal in folder / delete.
The bundled Welcome to Deeper demo lives there on first launch — open it to see a working example with regions, haptics, and rules.
Recent files
Last few files you opened, including anything outside your Library folder. Useful when you're iterating on an enhancement that lives next to its media file rather than in the central library.
Export as Media NEW in v5.9.2
You can now bundle an enhancement directly into a copy of an MP4, MP3, or WAV. Find it in the editor under File → Export as Media... (Ctrl+E), or the button next to Save.
The exported file plays normally in any player — and CCP loads the effects automatically when you open it back in the Deeper player. No more sidecar .ccpenh.json files: hand someone the media and they get the enhancement for free.
Supported formats
| Format | Extension | Where the enhancement lives |
|---|---|---|
| MP4 / M4V / MOV | .mp4 / .m4v / .mov | Top-level UUID box (ISOBMFF). Standard players skip it. |
| M4A audio | .m4a | Same UUID box mechanism. |
| MP3 | .mp3 | ID3v2 TXXX frame with description "CCP_ENHANCEMENT_V1". |
| WAV | .wav | Top-level RIFF chunk "ccpe". |
How it works
- Validation runs first — if the editor shows errors, export is blocked. Fix them and try again.
- Pick a destination path. The exporter copies the source media and embeds the enhancement JSON in standard metadata fields the format already supports.
- Output is written via temp-then-rename, so a crash mid-export can't corrupt the destination.
- Original file is untouched. The new file plays in any standard player (VLC, Windows Media Player, foobar2000) — they ignore the embedded metadata.
- Open the exported file back in the Deeper player and CCP auto-detects and loads the enhancement.
Sharing
This is the recommended way to share a Deeper enhancement: hand someone the bundled file. They get one drop-in file that plays anywhere, with the full enhancement preserved if they're running CCP.
Tutorials
Two tutorial flows ship with Deeper. Both can be re-run any time from the 🎓 button.
Tab tour (~1 minute)
Seven slides walk through the player, the New Enhancement flow, the library, recent files, and the new Export as Media feature. Auto-runs on first launch — close and re-open from the 🎓 button whenever you want to revisit.
Editor walkthroughs
On-rails coachmarks for the editor, with three flavors:
- HypnoTube interactive — walkthrough using a remote video URL.
- Local audio interactive — walkthrough using a local audio file.
- Local video interactive — walkthrough using a local video file. Showcases the "looks away" gaze trigger.
The bundled Welcome to Deeper demo file in your Library is the recommended starting point. Open it once, click around, and the editor side of the walkthrough takes care of itself.
Tips & Limits
- Test gaze rules without a webcam. While previewing an enhancement, press B to fake a blink, M for mouth-open, A for "looks away". Lets you build webcam-driven enhancements before you bother turning the camera on.
- Cooldowns matter. Without one, a blink trigger can fire effects faster than they finish playing. Start with 1000–2000ms and tune from there.
- Validate before sharing. The bottom-bar validation catches orphaned region references and malformed rules. Clean it up before exporting.
- Sidecar or bundled? Use sidecar files while you iterate (faster save), bundle to media when you ship.
- Webcam triggers need calibration. Gaze and attention rules require a working calibration in the Lab tab — see the Webcam & Gaze Tracking guide.
- 1 MB cap. Most enhancements are tiny (a few KB). If you're hitting the cap, you probably have unintended duplicates — check the rule list.
- Beta means breaking changes. The schema is stable but the editor and engine are still moving. Pin a CCP version if you're collaborating on something time-sensitive.
Settings Reference
| Setting | Default | Description |
|---|---|---|
| Enable Deeper tab | On | Show the Deeper tab in the top tab strip. Disable to hide it without losing any data. |
| Recent files | (empty) | List of recently opened enhancement and media files. Auto-managed. |
| Last directory | Deeper folder | Last directory you saved or browsed from. Used to default the file picker. |
| Tab tour seen | No | Tracks whether you've seen the 7-slide tab tour. Re-run it any time from the 🎓 button. |
| Editor intro seen | No | Tracks whether the editor coachmarks have run. |
| Welcome demo seeded | No | Tracks whether the bundled demo enhancement was installed in your Library on first launch. |