B-Roller Studio User Guide
macOS app for transcript-based culling, reframing, and color grading
B-Roller Studio is a macOS app for producers, social-media staff, and anyone who needs to turn a card dump into finished media without sitting in front of Premiere or Resolve. You import footage, rate and flag it, cut subclips, transcribe speech, reframe for vertical or square, color-correct, and export — all in one keyboard-driven workflow.
The whole app saves continuously while you work. No "save your project" dance, no autosave timer to worry about. Just keep going.
1. Getting Started
Open the DMG and drag B-Roller Studio to your Applications folder. First launch, macOS will ask you to confirm. Click Open.
Apple Silicon only. B-Roller Studio uses AVFoundation for all video work — GPU-accelerated playback and transcode for HEVC, ProRes, XAVC HS, and the rest of the modern camera codecs. There's no API key, no account, no subscription. Your project files stay on your machine.
Concepts
A project is a .brstudio file that records every video you've imported, every rating, every subclip, every export, every color setting. It auto-saves continuously while you work.
A whole clip is a complete imported video. A subclip is a marked-in/marked-out range inside a whole clip. You can have as many subclips per video as you want, each with its own label, each independently selectable for export.
The modes along the top — Review / Transcript / Reframe / Color — are different views onto the same project. Review is where you cull and rate; Transcript is where you read and clip from speech; Reframe is where you make vertical / square / aspect-cropped versions; Color is where you grade.
The S flag marks an item for export. R marks it as reviewed. X rejects it (rejected things shouldn't ship — rejecting clears the export flag automatically). F is favorite. W marks the clip as containing speech worth transcribing. Most decisions you make in B-Roller Studio are some combination of these flags plus a star rating.
2. The Home Screen
When you open B-Roller Studio with no project loaded, you'll see the Home screen with two big buttons: New Project and Open Project, plus your recent projects below them.
New Project opens a setup sheet asking for a project name and the folder you want to save it in. The folder gets a .brstudio file (the project) and a hidden .brstudio-cache folder (thumbnails, filmstrips, transcripts, color variants — all things B-Roller Studio can regenerate if needed). Once the project is created, the Import wizard opens automatically so you can pull in footage.
Open Project lets you pick an existing .brstudio file. Recent projects show below the buttons; click any of them to open it directly.
3. The Project Header
Once a project is loaded, the top of the window shows a breadcrumb header: B-Roller Studio / your-project-name. Click the B-Roller Studio part to close the project and return Home.
Three buttons sit on the right of the header:
- Import (Cmd-I) opens the Import wizard.
- Export (Cmd-E) opens the Export wizard. Greyed out until at least one clip or subclip carries the S flag.
- Handoff (Shift-Cmd-E) opens the Selects Handoff wizard — a way to bundle selects + media into a portable
.brstudiopackage. - Transcribe is a menu with two bulk options: transcribe selected clips that have the Speech mark, or transcribe every Speech-marked clip that doesn't yet have a transcript. Both options gate on the W flag — see Section 6 (Transcript mode) below.
Below the header, the Studio mode segmented control lets you flip between Review / Transcript / Reframe / Color. Below that, the filter bar lets you narrow what's visible in the sidebar.
4. Importing Footage
Click Import in the header (or hit Cmd-I). The wizard walks you through four stages:
Sources
Click Choose Folder… to pick a card dump or any folder on disk. You can choose multiple folders and they'll all be scanned. Toggle Recursive if your card layout has nested folders (most do). Click Scan when ready.
Results
The wizard lists every video file it found. Each row shows filename, duration, and codec. You can:
- Toggle inclusion per row (uncheck things you don't want).
- Set import mode — Reference in place leaves files where they are and points the project at them; Copy into project folder duplicates each file into a
media/folder next to the.brstudio. Reference is faster for big card dumps where you'll keep the card; Copy makes the project self-contained. - The Speech and transcript section lets you bulk-mark "Contains speech" (sets the W flag on all included rows) and "Auto-transcribe after import" (queues a transcription job per Speech-marked clip once the import finishes). You can override both per-row.
Click Import when you're happy.
Importing
Progress bar shows current file + bytes done. The metadata pass (duration, fps, codec, dimensions, thumbnail extraction, log-format detection) runs alongside. You can cancel mid-flight via the breadcrumb back button or the bottom Cancel button.
Done
Summary of what was imported. Click Done to land on the Review surface with your new clips visible.
5. Review Mode
Review is where you cull and rate. The layout is:
- Sidebar (left): clip list with filters above it.
- Player (center): big video player with scrubber, transport, and a slim subclip drawer below.
- Info panel: a slide-in inspector on the left side, toggled by the chevron pill at the top of the sidebar column.
The Filter Bar
Across the top of the sidebar:
- All — resets every filter.
- Unreviewed — hide clips that already have the R mark.
- Favorites — only F-flagged.
- Selected — only S-flagged (export queue preview).
- Subclips — flatten the sidebar to one entry per subclip across all clips.
- Speech — only clips with the W mark.
- Show rejects — re-include X-flagged clips (hidden by default).
- Search — case-insensitive substring match against filename, notes, tags, and subclip labels.
- Sort — Filename / Imported / Rating / Duration.
- A density toggle flips the sidebar between compact and large-thumbnail rows.
Filters are AND-combined. The All pill at the leftmost resets every filter at once.
Selecting Clips and Subclips
Click any clip row to load it into the player. Subclips are nested under their parent — click a subclip to load the parent and constrain playback to the subclip's [in, out] range. The trim brackets become draggable on the scrubber and you can apply any retrim with Enter (Esc reverts).
Multi-select with Cmd or Shift:
- Cmd-click a clip or subclip to toggle it in/out of the multi-selection.
- Shift-click to extend a range from the most-recent anchor — clips and subclips in between are all included regardless of row type.
- Plain click anywhere clears the multi-selection (Finder convention) and runs the regular focus action.
Multi-selected rows get a gold outline. When the selection is non-empty, the rating and flag keys (0–5, F, S, R, X, W) apply to every selected item at once, in a single Cmd-Z-able batch.
Rating and Flagging
With a clip in focus (or a multi-selection active):
- 0–5 — set rating. 0 clears.
- F — toggle Favorite.
- S — toggle Selected for export. The S flag is what the Export and Handoff wizards key off.
- R — toggle Reviewed. Auto-set when you make any decision (rate, flag, subclip).
- X — toggle Rejected. Rejecting clears the S flag automatically and hides the clip from the sidebar (until you toggle Show rejects).
- W — toggle Speech. Required for any bulk transcription action.
These keys work whether or not the keyboard is "focused" inside any particular control — the app uses an AppKit local key monitor so they fire from anywhere, except inside text fields.
Subclips
To make a subclip:
- Scrub or play the video to where you want the subclip to start.
- Press I to mark in.
- Scrub to where you want it to end.
- Press O to mark out.
- Press Enter to commit. The subclip appears in the drawer below the player.
To retrim an existing subclip: click it in the drawer (or in the sidebar), drag the trim brackets on the scrubber, then press Enter to apply or Esc to revert.
The subclip drawer below the player is collapsed by default — a slim row showing "Subclips (N)" with a chevron in the middle. Click the chevron (or anywhere on the row) to expand it: about 5 subclip rows are visible with a scroll for more. The drawer pushes the player up; it never overlays the video.
The Info Panel
The chevron pill at the top of the sidebar — labeled ‹ Info — slides the inspector panel over the clip list. The panel covers the sidebar entirely and shows:
- Filename + metadata (codec, dimensions, fps, duration).
- Star rating (clickable bar).
- Flag toggles (Favorite / Selected / Rejected / Reviewed / Speech).
- Notes (free-text per clip).
- Tags (typed in, comma-separated, used for search).
- Color summary with a button that jumps to Color mode for the focused clip.
- Rotation override (cycle Auto → 0° → 90° → 180° → 270° → Auto). Replaces the asset's preferred transform; useful for cameras that record orientation metadata inconsistently.
- Source path (full path to the file on disk).
While the panel is open the pill flips to Clips › — click it to return to the sidebar. The panel is disabled when no clip is focused.
Delete and Reject
Press Delete or Backspace:
- If you have a multi-selection — confirm dialog deletes every selected subclip and rejects every selected parent clip in one batch. Cmd-Z restores.
- If a subclip is active — confirm dialog deletes that one subclip.
- If a clip is focused — confirm dialog rejects that clip (does NOT delete; you can un-reject from the Show rejects pill or by pressing X again).
The asymmetry is deliberate: subclips are derived work that can be remade if you delete one by accident, but source clips are decisions in progress. "Delete" on a clip should mean I'm not using this, not erase the file from my project — that's what Reject does.
Esc clears the multi-selection without deleting anything.
Cmd-Z and Cmd-Shift-Z
Project state is snapshotted before every undoable mutation. Cmd-Z restores the previous state; Cmd-Shift-Z redoes. Batch operations (multi-select rating, delete, color apply-to-N, etc.) are coalesced into a single undo entry.
Speech and Transcribe
The W flag (Speech) marks a clip as containing dialogue worth transcribing. Set it manually (W key from anywhere in Review, or the Speech pill in the inspector), or via the Import wizard's bulk fill, or via the inspector's Speech pill. Auto-transcribe-on-import (also in the Import wizard) queues a transcription job for each Speech-marked clip the moment the import commits.
Bulk transcribe from the header's Transcribe menu:
- Transcribe selected clips with Speech mark — every clip that has both S and W.
- Transcribe all Speech-marked clips — every W-marked clip without an existing transcript.
Both options skip clips without W entirely; transcribing music or b-roll wastes compute.
6. Transcript Mode
Transcript mode reads the spoken word in your footage and lets you cut subclips by selecting words. The clip dropdown at the top filters to clips that have W set and aren't rejected.
Transcribing a Clip
If the focused clip has no transcript yet, you'll see a single Transcribe button. Click it to start. The first run downloads the model (a few MB to ~1.5 GB depending on tier); subsequent runs are fast. The default tier is Fast (tiny.en, ~75 MB). The Accurate tier (large-v3-turbo, ~1.5 GB) is available in Studio Preferences for cases where the speaker has an unusual accent or there's noise.
Speaker labels are always on. After transcription the diarization pass groups cues by who's talking, and chips for each speaker appear above the transcript.
Reading and Editing
Each cue is a paragraph in the transcript area. The currently-playing cue is highlighted in cyan. Click any word to seek to it.
Speaker chips (above the transcript): each chip has a color dot, the speaker name, and a … menu (also accessible via right-click on the chip body). The menu lets you:
- Highlight <speaker> — fade others. Visually dims every cue not by this speaker.
- Show only <speaker>. Hides every cue not by this speaker.
- Subclip every turn of <speaker>. Bulk-create one subclip per cue this speaker said.
- Rename the speaker.
- Set color from the palette.
- Delete speaker (clears the speaker assignment from every cue and word).
Plain-clicking a chip cycles a three-state filter on that speaker: none → dim → hide → none. The pill below the chip strip describes the current state and offers "Show all."
Plain-click a chip with text selected assigns that speaker to the cues touching the selection. Useful when diarization missed a turn boundary.
Search
Cmd-F focuses the search bar above the transcript. Per-word match (or cue-level fallback when word timings are unavailable). Hit count "N / M" shows in the search bar; Return / Shift-Return cycles hits with wrap-around. Each hit seeks the player to its start time. Search runs against whatever's currently visible — if a speaker filter is hiding cues, those hits don't surface.
Make Subclip from Words
Select a span of words with the mouse. The transcript view computes the first and last words' timings, applies a small lead/tail padding (defaults: 0.20s lead, 0.35s tail — configurable in Studio Preferences), and the Make Subclip button enables. Click it to create a subclip with those bounds. The new subclip appears in the player's drawer (and in the sidebar list) just like an I/O subclip.
Retrim and Delete
Each subclip in Transcript mode shows compact chevron icons under "In" and "Out" — nudge buttons that adjust the trim by one frame at a time. Enter applies, Esc reverts.
Cmd-click and Shift-click work the same as Review for multi-selecting subclips. Delete / Backspace runs the same dispatch (multi → single subclip → focused clip-reject). The transcript mode's keyboard handler ignores key events while the search bar / rename alert holds focus.
Subclip Underlines
Each existing subclip's text range is underlined in the transcript: thick gold for the active one (the currently-selected subclip), thinner gold for the rest. Click an inactive subclip's underline to activate it; the underline's "double bar" highlight follows live trim drafts so you can see the range grow / shrink as you nudge.
Export Transcript
The Export transcript… button in the transcript header opens a save panel with three formats:
.txt— plain text, one cue per line, blank line on speaker change,[Speaker]:prefix when assigned..srt— standard subtitle format,HH:MM:SS,mmmtimecodes,[Speaker]prefix when assigned..json— the raw transcript struct, lossless.
When a speaker filter is in hide mode, only visible cues are exported (and the suggested filename gets a — <Speaker> only suffix). Dim mode is viewing-only and exports everything.
7. Reframe Mode
Reframe mode crops and resizes a clip into a target aspect ratio. Vertical for TikTok / Reels / Shorts, square for Instagram, 4:5 for portrait, 16:9 for letterboxed delivery — all preset.
Picking an Aspect
Top of the screen: a segmented picker for 9:16 / 1:1 / 4:5 / 16:9 (full). The 16:9 (full) preset uses the whole source frame; the others apply a crop.
The crop rectangle starts centered with the new aspect. Drag any corner to resize (aspect locks to the chosen ratio); drag the body to move; arrow keys nudge by 1px, Shift-arrow by 10px. Numeric x/y/w/h fields are below the canvas — type values directly if you prefer, or click the units toggle to flip between pixels and normalized 0–1.
The canvas shows the source clip playing live with the crop overlay on top, plus optional safe-area lines (TikTok / Reels / Shorts). When the source is high-resolution (4K, 6K, 8K) you'll see a small "headroom" indicator showing how much extra resolution the crop has to spare.
Snap behavior: the crop's center snaps to source center, rule-of-thirds (1/3, 2/3 horizontally and vertically), and any saved preset position. Toggle snap on/off via the small magnet icon.
Pan Mode
To pan from one crop position to another over the duration of the clip:
- Position the canvas crop where you want the pan to start.
- Click Set start.
- Reposition the canvas crop where you want the pan to end.
- Click Set end.
A dashed cyan arrow draws on the canvas from start-center to end-center, with a filled dot at the start and an arrowhead at the end. Each saved keyframe also renders as a faded ghost outline.
Once both keyframes are set, the buttons relabel themselves to Update start / Update end — clicking them again overwrites with the current canvas crop. Recall start / Recall end move the canvas crop back to the saved keyframe so you can fine-tune. Remove pan clears both keyframes; the canvas crop is preserved.
Keyboard shortcuts inside Reframe mode: S = Set/Update start, E = Set/Update end.
Aspect-ratio change clears pan keyframes (they were sized for a previous aspect; not valid for the new one). The canvas crop is recentered.
Trim
Drag the trim brackets on the scrubber, or:
- I at the playhead — mark in.
- O at the playhead — mark out.
- Re-marking past the other side automatically clears the conflicting bracket.
When the trim brackets are at the very edges of the clip, the trim is treated as "no trim" (full clip). Setting brackets inside the clip uses just that range for export.
Other Controls
- Audio toggle — include source audio or output silent. Auto-disabled when the source has no audio track.
- Subclip-only timeline — clicking a subclip in the Reframe sidebar collapses the scrubber to just that subclip's range. Trim brackets clamp inside the subclip; export uses just that range. Selecting the parent clip restores the full timeline.
- Output preset picker (numeric width × height) ships per aspect (e.g., 9:16 → 1080×1920). You can override the dimensions in the right panel if you need a non-standard size.
Filename and Destination
The right panel includes:
- Filename stem — auto-generated from
<clip-name> <aspect-suffix>, lowercase with underscores. You can override; if you don't, it auto-updates when you switch clips. - Destination folder — recent destinations appear in the dropdown; Choose… picks a new one. The last 5 are remembered app-wide.
- Save preset — saves the current aspect / crop / audio / output dimensions as a named preset. Named presets show up in the menu next to Save preset.
Generate
Two buttons cover the export trigger:
- Generate / Add to Queue — for the focused clip. Adds a job to the Reframe queue. Queue runs jobs back-to-back; you can keep configuring more reframes while one runs.
- Apply to N + Queue — when you have multi-selected clips or subclips in the Reframe sidebar, this button replaces Generate. Enqueues one job per selected item using the current aspect / crop / pan / audio settings. Filenames auto-derive per item. For multi-selected subclips, each one's
[in, out]is used as the trim range. For multi-selected parent clips that match the focused clip, the scrubber's current trim brackets are honored.
The queue panel at the bottom shows pending / running / done jobs with progress bars. Reveal the output in Finder once a job completes.
Reframe outputs are recorded internally as derivatives, not as new videos. They don't appear in Review or any clip list — they're not source media. To re-import a reframed output, do an actual Import.
8. Color Mode
Color mode lets you grade footage non-destructively. Every setting is metadata — your source files never change. The grade applies to playback preview, paused-frame preview, thumbnails, filmstrip frames, and (when you choose to) processed exports.
Layout
- Sidebar (left): clip + subclip list with multi-select shared across modes.
- Player (center): PlayerView showing the focused clip with the grade applied. Hover the player for a center play/pause overlay; click anywhere on the player to play/pause.
- Transport (below player): scrubber + play/pause + time readout.
- Controls panel (right): Enable + Reset, Input Transform, LUT, Presets, Sliders.
Enable + Reset
Color is "off" by default on every clip. The first time you move a slider, pick a non-None Input Transform, or apply a LUT, color auto-enables — there's no need to click the Enable checkbox first. The checkbox is an explicit-disable affordance.
Reset wipes the entire grade for the focused clip and returns it to the "Color: off" state.
Input Transform
For log-shot footage (Sony S-Log3, S-Log2; Panasonic V-Log; Canon C-Log2, C-Log3), the input transform decodes the log curve and applies a gamut conversion to Rec.709 — making the footage look "normal" before any further grading. Pick the matching transform from the dropdown.
A small Re-detect button below the picker re-reads the clip's metadata to identify the log format. The status line above shows what was detected (e.g., "Detected: Sony S-Log3 (95%)").
When an actionable log format is detected and color isn't yet enabled, a gold banner appears at the top of the controls panel: This footage appears to be Sony S-Log3. The Apply button enables color and sets the matching transform; Dismiss persists per-clip so you don't see it again.
LUTs
Below the Input Transform, the LUT row lets you import and apply user .cube LUTs.
- Import LUT… opens a file picker restricted to
.cubefiles. The file is copied into Studio's app-wide LUT library at~/Library/Application Support/B-Roller Studio/LUTs/. After import, the LUT appears in the dropdown. - Intensity slider (0–100%): linear blend between the un-LUT'd image and the LUT-applied image. 0% skips the LUT entirely; 100% applies it fully.
- None in the dropdown clears the LUT.
If a LUT goes missing on disk (you deleted the .cube, moved a project to a machine without the LUT installed), an orange warning row appears with a Clear button. Playback / thumbnails / export keep working without the LUT — the renderer just skips that step.
Tip: if your LUT was designed for log footage rather than Rec.709, set Input Transform to None before applying the LUT — applying a log-designed LUT on top of an already-normalized image will look wrong.
Presets
The Presets row sits between LUT and Sliders. The dropdown shows a "None" placeholder at the top, then a Built-in section (Neutral, B&W, Warm, Cool, Punchy, Sony S-Log3 Normalize, Sony S-Log2 Normalize, Panasonic V-Log Normalize, Canon C-Log2 Normalize, Canon C-Log3 Normalize), then a My Presets section if you've saved any. Picking a preset applies it (auto-enabling color) and overwrites any previous grade. Picking None unhooks the preset label without changing the grade — Reset is the explicit affordance to wipe the grade.
Save current… opens a name prompt and stores the current grade as a user preset. Saved presets are app-wide (cross-project).
Sliders
Eight sliders organized into two groups:
- Exposure — ±2 EV.
- Contrast — ±100% around the midpoint.
- Saturation — ±100%. -100 produces full B&W.
- Temperature — ±100% (≈ ±2000K shift). Positive = warmer.
- Tint — ±100%.
Below a divider:
- Shadows / Midtones / Highlights — per-zone luma curves, ±100%. Each slider shifts a control point on a 5-point tone curve; you can pull all three for a custom contour. Pulling adjacent zones in opposite directions can produce non-monotonic curves (visual inversion) — pull back if it looks weird.
Every slider has a small reset chevron next to its value readout (resets just that slider to neutral; doesn't touch the others). Slider release commits the change to the project (with a debounced thumbnail regen ~250ms after settle); during drag, the player updates live but disk doesn't churn.
Cmd-Z restores the previous grade. The view-model resyncs from the store after undo so the sliders snap back to match.
Apply to N Selected
When you multi-select clips in any mode (Review's sidebar, Color's sidebar — they share the same selection set), the Color page shows an Apply current to N bar above the footer. Clicking applies the focused clip's draft grade to all selected parent clips in one Cmd-Z-able batch. (Subclips contribute their parent — color is per-clip, not per-subclip in v1.)
Show Color Correction During Playback
A toggle at the bottom of the controls panel: by default, color is applied to live playback. Disable it if your machine struggles with 4K HEVC + LUT + sliders combined — the paused-frame preview still shows the grade, and processed exports still bake correctly.
9. Export
The Export wizard turns your S-flagged clips and subclips into a folder of media files on disk.
Mode
The Mode picker is the most important choice:
- Export Original — byte-faithful to the source. Whole clips byte-copy; subclips stream-pass-through (GOP-snapped, may extend trim ~1–2s). Color correction is NOT applied — output matches the camera file exactly. Use this when you're handing files to someone who'll grade in their own NLE.
- Export Processed — H.264/AAC re-encode at HighestQuality preset. Frame-accurate trims, output is
.mp4always. Color correction IS baked in for clips that have it enabled. Use this for direct delivery.
If you pick Original but some of your selected clips have color enabled, a yellow caution row appears: "Some selected clips have color correction enabled. Original mode will NOT bake color — choose Processed if you want the grade in the export." The export still runs; you just don't get the grade in the output files.
Output
- Primary only — source-quality export only.
- Primary + HD — primary export plus a 1080p H.264 deliverable in an
HD/subfolder. HD copies always re-encode (so they always bake color when present, regardless of Mode). - HD only — 1080p H.264 deliverable only, no source-quality copy. Always re-encodes.
Include
Toggle whether to include whole-clip selects, subclip selects, or both. Toggle "Export new only" to skip clips that have already been exported.
Subclip Handles
Drop-down: None / 0.5s / 1s / 2s / 4s. Extra time before each subclip's in-point and after its out-point. Useful for room tone or NLE re-trim. Skipped for whole-clip rows.
Naming
Three presets:
- Keep original — whole clips export with their source basename. Subclips export as
<parent-stem>_subclip-N.<ext>(where N is the subclip's creation index — stable across re-exports). - Project name and number —
<project-name>_<seq>plus subclip label when present. Sequential 3-digit numbering. - Custom — exposes every individual naming option (base name, shoot date, sequential numbering, original filename token, original file number tail, subclip label, select-type token).
The manifest preview at the bottom shows exactly what filenames will land on disk. Collisions get auto-deduped with (2), (3), etc.
Start Export
Click Start Export to begin. The running stage shows current file + per-row progress. You can Cancel mid-flight (graceful first, then Force-cancel for a hard stop). The Done stage lists every output with Reveal-in-Finder, plus any failures.
10. Selects Handoff
Selects Handoff is structurally similar to Export but produces a different artifact: a complete portable .brstudio project package — project file + media + cache — that someone else can open and continue working with in their own copy of B-Roller Studio.
What's in the Package
The package folder contains:
<projectName>.brstudio— the new project file.media/— copies (or transcodes) of the selected media.media/HD/— optional 1080p H.264 deliverables..brstudio-cache/— thumbnails, filmstrips, transcripts, color variants.luts/—.cubeLUTs referenced by any clip's grade, plus a small README. Only present when at least one clip uses a user LUT.
The new project carries every clip's full editorial state forward: ratings, flags, notes, tags, color settings, transcripts (whole clips), rotation, log-format detection. Subclip standalones inherit the parent's metadata except the parent's transcript (whose timestamps wouldn't line up with a media file starting at 0).
Mode and Output
Same mode picker as Export — Original (byte/stream copy) or Processed (re-encode). Same output mode (primary only / primary + HD; HD-only is rejected here because the project file would have nothing to point at).
Color Correction
The handoff has its own Color correction section with a checkbox: Bake color correction into output media.
- Off (default) — source media is preserved (or transcoded uncorrected) and the new project carries each clip's color settings forward. The grade stays editable on the receiving machine. Best for handing off between B-Roller Studio installs.
- On — color is baked into the transcoded output media. The new project's clips ship neutral. Choose this when handing the package to a tool that won't honor
colorAdjustment.
The checkbox is disabled in Fast copy mode — passthrough / byte-copy can't bake pixels regardless of the toggle, so settings always carry as metadata in that case.
LUTs
If any clip references a user-imported .cube LUT, the LUT files are automatically copied into the package's luts/ folder along with a small README. The receiving Studio sees the LUT id on each clip's colorAdjustment and surfaces a missing-LUT warning in Color mode until the user imports the matching .cube (drag from the package's luts/ folder via Color → Import LUT…).
11. Keyboard Shortcuts Reference
These work whenever a clip or subclip is in focus (or a multi-selection is active). They do NOT fire while a text field has focus — search bars, notes, tags, rename fields all eat the key as expected.
Global
| Key | Action |
|---|---|
| Cmd-I | Open Import wizard |
| Cmd-E | Open Export wizard |
| Shift-Cmd-E | Open Selects Handoff wizard |
| Cmd-Z | Undo last decision |
| Cmd-Shift-Z | Redo |
| Cmd-Q | Quit (close-main-window also quits) |
| Cmd-? | Open this User Guide |
| Cmd-F | Focus the search bar in Review or Transcript mode |
| Esc | Clear multi-selection without acting; close menus |
Decision keys (Review and Transcript)
| Key | Action |
|---|---|
| 0–5 | Set rating (0 clears) |
| F | Toggle Favorite |
| S | Toggle Selected for export |
| R | Toggle Reviewed |
| X | Toggle Rejected |
| W | Toggle Speech |
| Delete / Backspace | Delete subclip / reject clip / delete-multi (priority-dispatch) |
Player transport (Review, Transcript, Reframe, Color)
| Key | Action |
|---|---|
| Space | Play / pause |
| J / K / L | Scrub backward / pause / scrub forward |
| , / . | Step one frame back / forward |
| ← / → | Seek 5s back / forward |
Subclip and Reframe (Review and Reframe modes)
| Key | Action |
|---|---|
| I | Mark in at playhead |
| O | Mark out at playhead |
| Enter | Apply trim / commit subclip |
| Esc | Revert trim draft |
Reframe-only
| Key | Action |
|---|---|
| S | Set/Update pan start at the current canvas crop |
| E | Set/Update pan end at the current canvas crop |
The pan S/E hotkeys only fire in Reframe mode and don't conflict with the Review-mode S flag because each mode has its own keyboard dispatch.
12. Preferences
Open B-Roller Studio → Settings… (Cmd-,) for app-wide preferences:
- Transcription tier — Fast (default) or Accurate.
- Transcript-to-subclip lead padding — default 0.20s.
- Transcript-to-subclip tail padding — default 0.35s.
- Show color correction during playback — also accessible from the Color mode controls panel. Default on.
These are app-wide, not per-project.
13. Closing the App
Closing the main window quits B-Roller Studio. The app is single-window-document; if you want to switch projects, click B-Roller Studio in the breadcrumb to return Home and pick a different project (or create a new one).
The Help window (this guide) counts as a window, so closing the main window with Help open keeps the app alive until you also close Help.
14. Project Files and the Cache
Every project saves continuously while you work. The save logic is debounced — small rapid changes (a slider drag, a typing burst) coalesce into one save a few moments later.
The .brstudio file is JSON. The .brstudio-cache/ folder next to it holds derived artifacts:
thumbnails/<videoId>.jpg— source thumbnails.thumbnails/<videoId>.color.jpg— color-corrected variant when color is enabled.subclip-thumbs/<subclipId>.jpg— subclip thumbnails.subclip-thumbs/<subclipId>.color.jpg— subclip color variant.<videoId>/filmstrip/frame-NN.jpg— 15-frame filmstrips with.color.jpgsiblings.transcripts/<videoId>.json— transcript sidecars.
The cache is regenerable. If you delete it, B-Roller Studio rebuilds whatever's needed the next time you view a clip. Don't add it to a backup if you're trying to keep the project file size down.
15. Troubleshooting
Sliders don't change the picture
Check that color is actually enabled — the small "Enable color correction" checkbox at the top of the right panel. Sliders auto-enable when you move them, but if you've manually disabled, the player won't show changes. Reset un-disables.
Color shows in the player but not in my export
Check the export Mode. Original preserves source bytes and never bakes color. Processed re-encodes with color baked in.
Reframe export looks "the whole clip" instead of my trim
If you're using the Apply to N + Queue button with a parent clip in the bulk selection, the bulk path uses the focused clip's scrubber trim brackets only when that parent matches the focused clip. Sibling clips in the same selection get whole-clip. Use the single Generate button for granular trim control.
The Transcribe button doesn't work / nothing happens
Make sure the clip has the W (Speech) flag set. The bulk-transcribe options in the header gate on Speech.
Subclip filenames collide on export
The default Keep original preset includes the parent stem in subclip filenames (<parent>_subclip-1.mp4). If you've switched to Custom and turned off "Include original filename" while leaving "Include subclip label" on, two subclips called subclip-1 from different parents will collide and get auto-suffixed. Re-enable the parent-filename token to fix.
LUT import is rejected
B-Roller Studio supports 3D .cube LUTs at sizes 17, 33, and 65. 1D LUTs and unusual sizes are rejected. The error row under the LUT picker says specifically why.
Missing LUT warning
A clip references a LUT that's not in your library on this machine. Open Color mode for the clip and either click Clear (removes the reference; rest of the grade applies) or Import LUT… to add the matching .cube from wherever you have it.
Old icon is showing in the Dock
macOS aggressively caches app icons. Quit the app, run killall Dock Finder from Terminal, and relaunch. New build numbers fix this on shipped releases.
16. Credits
B-Roller Studio is built on a small handful of open-source libraries plus Apple's own frameworks. Per the licenses of those libraries, attribution belongs in the shipped product:
WhisperKit and SpeakerKit
Transcription and speaker diarization are powered by WhisperKit and SpeakerKit by Argmax, Inc. — a unified Swift package wrapping OpenAI Whisper and the SpeakerKit diarizer for Apple Silicon. Source: github.com/argmaxinc/WhisperKit. Licensed under the MIT License.
Copyright (c) 2024 Argmax, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
Sparkle
Software updates are delivered via Sparkle, the macOS update framework. Source: github.com/sparkle-project/Sparkle. Licensed under the MIT License.
Copyright (c) 2006-2024 Andy Matuschak and the Sparkle Project contributors. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
Color formula sources
Sony S-Log3 / S-Gamut3.Cine, Sony S-Log2 / S-Gamut, Panasonic V-Log / V-Gamut, and Canon Log 2 / Log 3 / Cinema Gamut transforms are implemented from the manufacturers' published technical documents. Coefficients cross-checked against the FFmpeg libavfilter log-curve filters and the OpenColorIO reference configs. Trademarks are property of their respective owners; the formulas themselves are not subject to copyright.
Apple frameworks
Built on AVFoundation, Core Image, SwiftUI, AppKit, Metal, and CryptoKit. No attribution required for system frameworks under standard macOS development terms.
17. About B-Roller Studio
Single-window macOS app. Apple Silicon native. AVFoundation for everything visual; WhisperKit for transcription; Core Image for color. No proxies, no transcodes-before-you-can-look, no internet required after the first transcription model download.
B-Roller Studio is made by Brian Paris. For information about this app and other tools by Brian, visit soundsandcolors.com.
For feedback, bug reports, or feature ideas, contact ….