TunaCut
Documentation

Getting started

From an empty folder to a published cut. If you read one section, make it your first session.

Installing

TunaCut is a Windows application. An install is one folder containing two programs that share all of their code:

  • TunaCutRecorder.exe — the recorder
  • TunaCutEditor.exe — the same application, starting in the editor

They each get their own icon, Start-menu entry and taskbar button, and either one can hand over to the other without you closing anything. TunaCutTeleprompter.exe is a separate program with its own lifetime, for the reasons on the teleprompter page.

ffmpeg is bundled. TunaCut never opens a capture device itself — every capture, encode, mux and export is an ffmpeg process it supervises — so the build that ships with it is the build it is tested against.

Nothing needs administrator rights. If something asks you to elevate TunaCut, it is not TunaCut asking.

Your first session

  1. Add your sources. One per camera, one per microphone, plus a screen region if you are recording your display. See adding sources.
  2. Save it as a profile. A profile is the whole rig — devices, formats, encoders, order — so tomorrow's shoot is one dropdown rather than a rebuild.
  3. Press Record. With nothing open it asks what you are recording. The answer becomes the folder name and every file name in it.
  4. Mark things as they happen. The red and green buttons — or their keys — stamp the moment. They arrive in the editor as flags on the ruler with your note attached.
  5. Press Stop. You get a summary: duration, frame counts, dropped and duplicated frames per source, and a warning on anything that disagrees with itself by more than half a percent.
  6. Open the editor. The first time a session is opened it runs a five-step wizard — build preview media, mark what is left out, say who is on each microphone and which camera is theirs, match the cameras to each other, and set the reference head for vertical clips.
Do not stop and restart to fix a mistake. Recording again into the same session creates take 2, which is fine — but a stumble is cheaper than a restart, because with three angles a stumble is just a cut.

Adding sources

+ Add Source is a three-step wizard. There are four kinds:

  • Video + audio — a capture card or HDMI device. If the device carries embedded audio, take it here rather than as a separate source: the two can then never drift.
  • Audio only — a microphone or line input, written at 24-bit.
  • Desktop view — pick a monitor, then set the region as four insets from its edges. A red box on screen shows what is included and is bound to the numbers both ways.
  • GoPro over USB — the camera records to its own card at full quality; TunaCut shows a preview, sets the camera's clock, and pulls the clips in when you stop.

Pin the input format explicitly rather than accepting whatever the driver offers first — that is what decides whether you get the resolution and frame rate you think you are getting. The tile's badge tells you what it actually negotiated.

Opening a session

Sessions are listed newest-shot-first, with a state beside each: open, postponed, edited or uploaded. Sources are found by scanning the folder rather than by rebuilding names from your current setup, so renaming a camera later never orphans what it recorded.

Preview media — smaller proxies used only for playback — is built on opening by default. You can move that to the background, or to only-when-asked, in Settings ▸ Playback.

Sync and colour

Offsets are measured by cross-correlating the sources' own audio, and shown as a number: +0.280 s · +8 frames — measured. If you disagree, nudge by one frame or ten, or type the offset.

Match the cameras… takes a sample from each angle at the playhead and pulls them toward one look. Bright, contrast, saturation, gamma and temperature stay available per camera afterwards, and Remember these cameras for next time saves the result as a named camera profile.

Cutting

The program track is a contiguous list of sections, each pointing at one camera. The vocabulary is small:

  • Split (S) — divide the section at the playhead.
  • Press 1–9 while it plays — point the current section at that camera.
  • Mark skip (M) — take this section out of the finished video without deleting anything.
  • In and out (I / O) — work on a range.
  • This change — make any single boundary a cut, a cross dissolve, a dip to black or a wipe.

Sections are never merged behind your back. If you want two adjacent sections on the same camera joined, there is a button for it.

Generating Cuts

A Cut is a complete alternative version of the recording, stored as its own project file beside your rough pass. The Original is never modified, which is what makes one-click generation safe.

  1. Voices ▸ Analyse. Local and free: the speech envelope, who is talking on which microphone, and every pause classified.
  2. Pair each microphone with a camera in ≡ Sources. Nothing that switches cameras from who is talking works until you have.
  3. Cameras ▸ Distribute. Writes a full switching pass into a new Cut and tells you what it did — how many changes, and how many were a speaker change versus a shot going stale.
  4. Cuts ▸ ✨ Shorts… proposes moments worth lifting out and builds each as its own vertical Cut.

Timing comes from the waveform, not from the transcript: every word boundary is snapped to the nearest real speech edge, because transcription drifts by a few frames and a cut lands on a frame.

Sound

The 🔊 Sound window has two jobs. Levels normalises the microphones to a target loudness — −16 LUFS for a podcast, −14 for YouTube — and can even out loud and quiet delivery, reduce the bleed between two microphones in one room, and stop anything clipping. Who is talking controls how the speaker ribbon is drawn.

Nothing here touches your recordings. Back to originals undoes all of it.

Export

Choose a size from 720p to 4K and a quality by intention: for keeping and re-editing, for uploading, or for sending to someone. Software encode gives the best picture; hardware gives it to you sooner. You can keep working while it runs, though playback will be slow.

The Original exports to {session}.mp4. A generated Cut gets its own name so the main cut and nine shorts cannot overwrite each other.

AI and what it costs

Two features spend money, and both tell you the estimate first and keep a running total per session under Settings ▸ AI.

  • Transcription is charged per minute of audio. Multiple microphones are mixed into one upload rather than sent separately, so three mics cost one track, not three.
  • The edit pass is a single call per session, cached on disk. Press it twice and the second press is free.

Keys live in %APPDATA%\TunaCut\.env, which the application reads and never writes:

TUNACUT_OPENAI_API_KEY=…
TUNACUT_ANTHROPIC_API_KEY=…
TUNACUT_CLOUD_TOKEN=…

An environment variable of the same name wins over the file. Settings ▸ AI ▸ Create the .env file writes the template for you.

Measure is free. Everything about who is talking, where the pauses are and how long they run is computed on your machine. Only the words cost anything.

Uploading and publishing

The editor's Cloud button lists what the server already has, uploads what is missing, and schedules a cut without leaving the timeline. Uploads resume: the server owns the offset, so a dropped connection costs you the chunk in flight and nothing else.

Manifests go up before video, so the portal can show the shape of an edit — sources, markers, transcript, every Cut — while the file is still climbing.

Where files live

  • Settings, profiles and credentials%APPDATA%\TunaCut\
  • Recordings%USERPROFILE%\Videos\TunaCut\, or a root you choose

Inside a session folder:

TunaCut Demo\
  tunacut_demo_wide_1.mkv        one file per source, per take
  tunacut_demo_host_mic_1.mka    audio-only sources are .mka
  session.json                   sources, takes, marks, start times
  edit.json                      your rough pass
  cuts\                          every generated version
  .analysis\                     measurements and transcripts (cache)
  logs\                          one ffmpeg log per source
  session_summary.txt            what the last take produced

Video is Matroska and audio-only is .mka, deliberately: both stay playable if the writer is killed. Nothing in a session folder is a proprietary format, and deleting .analysis\ costs you only the time to measure again.

Keyboard

In the recorder, Space starts and stops. In the editor the whole vocabulary is rebindable under Settings ▸ Shortcuts; the defaults worth knowing:

  • Space play / pause · F fit the whole session · F11 full screen
  • 19 point this section at a camera
  • S split · M mark skip · I / O in and out
  • Step a frame, jump to the previous or next camera change, jump to the previous or next mark
  • Play the finished result, and watch it with no editor around it

When something is wrong

  • A tile says MISSING. That device is not present. Everything else still records — plug it in and reopen the profile.
  • A tile says STALLED or FAILED. Its ffmpeg log is in the session's logs\ folder, named after the source.
  • ⚠ DROPPING FRAMES. The machine cannot sustain that format. Lower the resolution or ask that camera for a compressed input.
  • The app died mid-take. The encoders did not. Relaunch: a banner offers to reattach to them or stop them cleanly, and the files are intact either way.
  • The recorder refuses to start. Check the disk floor in Settings — it will not begin a take it does not believe it can finish.

Something missing here?

These docs cover the path most people take. If yours is different, say so and it gets written down.