JsonCutDocs
Projects & Schema

Audio, voice and captions

Mix footage, music and narration, then add editable word-timed caption layers.

Video projects can mix multiple video and audio layers. Captions use ordinary text styling plus explicit word timing, so Studio can change the transcript, typography and active-word behavior after creation.

Rendered output

Street question reel

A vertical social format combining real footage, paced captions and independently timed graphic layers.

Video1080 × 192011 secondsEditable V2 source

Audio layer

<audio id="voice" data-jc-clip data-jc-kind="audio" data-jc-name="Voiceover"
  data-jc-start="0.4" data-jc-duration="8.2" data-jc-track="6"
  data-jc-media-start="0" data-jc-playback-rate="1" data-jc-volume="1"
  data-jc-fade-in="0.12" data-jc-fade-out="0.35"
  data-jc-normalize-audio="true"
  src="jsoncut-media://media_voice"></audio>

Audio supports source trim, speed, volume, mute, loop, fades, normalization, ducking and persistent volume keyframes. Multiple audible layers are mixed in the export.

Volume keyframes use the same named and cubic-Bézier curves as visual tracks. The final gain is limited to the supported 0–1 range, including overshooting curves. A range export retains the original clip-local envelope and fade positions rather than restarting them at the cut.

Normalize audio uses the layer's stored normalizationGain (up to 4×), matching the Studio control. Export does not apply an additional automatic loudness-analysis pass behind the preview. Overlapping ducking windows reduce a track once, not repeatedly for each simultaneous speaker.

MCP video renders and playback-review drafts preserve project audio by default. Use muted: true only for an intentionally silent output. Motion review reports audio-stream presence and signal levels over a bounded sample, but these cannot establish audible quality or synchronization. Check the complete final video with sound when audio is part of the brief. Library spectrum effects are decorative unless explicitly driven by an audio analysis; they do not analyze a track automatically.

Drive motion from measured audio

Select a visual video layer and open React to audio in Studio. Choose an uploaded audio/video layer and Analyze & bind. Then select overall energy or low/mid/high frequencies and drive scale, vertical position or opacity. The binding follows the source layer's timeline start, source trim, speed and loop. It measures the source before volume, fades and ducking; muting the mix does not remove the animation.

From MCP use jsoncut_bind_audio_motion with the target layer, source layer and current project version. It analyzes owned media on the server and applies the same editable binding; do not invent sample arrays. API clients can request POST /api/v2/media/{id}/audio-analysis. Sources are limited to 250 MB and 300 seconds, with two concurrent analyses per API process and a 60-second analysis budget. Files are not sent through model text.

Analysis includes a content hash, 20 energy samples per second and transient candidates in beats. These are detected onsets, not a guaranteed musical beat or tempo grid. Replacing the source invalidates its binding: Studio shows a warning and you must reanalyze. Decorative spectrum Library effects remain independent.

Caption layer

<div id="captions" data-jc-clip data-jc-kind="caption" data-jc-name="Captions"
  data-jc-start="0" data-jc-duration="8" data-jc-track="8"
  data-jc-caption-display="active-word"
  data-jc-caption-words-per-page="4"
  data-jc-caption-active-color="#111111"
  data-jc-caption-active-background="#ff9418"
  data-jc-caption-inactive-color="#ffffff"
  data-jc-caption-word-animation="pop"
  data-jc-caption-words="[{&quot;id&quot;:&quot;w1&quot;,&quot;text&quot;:&quot;Build&quot;,&quot;start&quot;:0,&quot;end&quot;:0.42}]">
</div>

Display modes are static, typewriter, word-by-word and active-word. Typography, background, border, radius and shadow remain ordinary text styling and can be applied consistently to the whole caption track in Studio.

Audio property guide

AttributeDefaultPurpose
data-jc-media-start0Source in-point
data-jc-media-endSource durationSource out-point; loops repeat only the trimmed region
data-jc-playback-rate1Playback speed
data-jc-volume1Base clip volume
data-jc-fade-in, data-jc-fade-out0Edge fades in seconds
data-jc-normalize-audiofalseEnables stored normalization gain
data-jc-normalization-gain1Gain used when normalization is enabled
data-jc-ducking1Volume factor while another audible track is active
data-jc-muted, data-jc-loopfalsePlayback flags

A volume animation track adds time-varying automation. Keep values between zero and one.

Caption timing

Caption words contain stable IDs, text and start/end seconds. wordsPerPage is an integer from 1 through 12. Word animation is none, pop or rise.

Studio can turn a transcript into readable cues and can import timed JSON, WebVTT, SRT-like timing and ASS dialogue. After transcription, review wording and timing before treating the caption track as final.

Voiceover and generated sound

Voiceover, music and sound effects generated in Studio are saved as ordinary project audio media. Their generation settings are not embedded as hidden render behavior; the accepted audio file and editable layer are what the final project uses.