Tutorials & Beginner-First May 26, 2026

VO Waveform Consent Metadata Proof in WAV LIST and iXML - Audacity ffprobe and Mux Survival 2026

2026 beginner tutorial—embed consent_record_id in WAV LIST/iXML from Audacity, verify with ffprobe, prove metadata survives ffmpeg mux, and file vo_consent_metadata_receipt_v1.json before highlight reels.

By GamineAI Team

VO Waveform Consent Metadata Proof in WAV LIST and iXML - Audacity ffprobe and Mux Survival 2026

Pixel-art hero for VO waveform consent metadata proof WAV LIST iXML Audacity ffprobe mux survival 2026

Your OBS highlight concat passed. Lesson 243 clip consent is GREEN. Legal still blocked the July playtest reel because the facilitator VO WAV had no consent_record_id embedded in the waveform file—only a spreadsheet row your mux step never read.

June–July 2026 teams scale playtest highlight reels after local Whisper triage and ffmpeg concat decision trees. The July 2026 waveform consent trend playbook explains why post-mux proof became a default gate. The failure mode is video consent without WAV consent: automation can join MKV manifests but cannot join voice lines to the same UUID unless metadata lives inside the WAV (RIFF LIST or iXML chunk) and survives your ffmpeg or DaVinci handoff.

This Tutorials & Beginner-First article is the evening between Audacity export and reel mux: pin export settings, embed four contract fields, ffprobe duration, dry-run mux, file vo_consent_metadata_receipt_v1.json, then promote BUILD_RECEIPT vo_consent_metadata_ok. Pair the ninety-second Audacity VO consent preflight and Lesson 250 BUILD_RECEIPT milestone—this URL is the step-by-step beginner path, not a second checklist with different gates.

Non-repetition note: Lesson 243 owns video clip concat consent; OBS highlight preflight is C1–C6 on MKV manifests. This post owns VO WAV embedded metadata only. Backlog #15 (metadata survives mux challenge) and #23 (ten-minute ritual) are cousins—do not duplicate their primary keywords here.

Who this is for and what you get

Audience You will be able to…
First-time VO editor on playtest reels Export WAV with consent fields that legal automation can read
Audio lead Prove LIST/iXML survival after ffmpeg mux
Producer Require wav_consent_metadata_ok before public reel promotion

Time: one evening (~75 minutes first VO line; ~20 minutes per line after preset pinned).
Prerequisites: Audacity 3.7+, ffprobe on PATH, consent_log.csv from playtest intake, cousin playtest clip consent filed or in progress.

Why this matters now (June–July 2026)

  1. Highlight reel volume — Teams ship face-cam + facilitator VO cuts weekly; legal reviews moved from “do we have a form?” to “does each waveform file carry scope and expiry?”
  2. Automation — BUILD_RECEIPT rows now include vo_consent_metadata beside playtest_clip_consent; spreadsheets alone fail CI.
  3. Mux strip incidents — “Small” ffmpeg -c copy or wrong sample-rate conversion drops custom chunks; teams discover at upload, not in Audacity.
  4. Cousin 243 GREEN, reel RED — Discord threads repeat this pattern; fixing video manifest without WAV metadata wastes a sprint.
  5. July scalingMulti-channel facilitator contracts already require evidence folders—VO metadata is the next column auditors ask for.

Direct answer: Export VO as WAV with consent_record_id, consent_scope, consent_expires, opt_out embedded → verify with RIFF/iXML inspector → ffprobe duration spot → dry-run mux → re-verify fields → file receipt → BUILD_RECEIPT GREEN.

Two-lane mental model (do not merge schemas)

Lane Artifact Proves
Video clips playtest_clip_consent_receipt_v1 Which MKV fragments may appear in public reel
VO waveform vo_consent_metadata_receipt_v1 Which WAV lines carry consent linkage inside the file

Whisper triage (concat evening tutorial) and marketing reels share tools but not receipts. Never paste Whisper merged_playtest.wav paths into highlight reel manifests.

Evening overview (five blocks)

Block Minutes Output
1 — Consent log row lock 15 One CSV row per VO line
2 — Audacity export V1–V2 20 vo_line_01.wav with metadata preset
3 — Field proof V2–V3 15 Screenshot or script output
4 — ffprobe duration V4 10 Duration matches clip plan
5 — Mux survival V5 + receipt V6 15 Post-mux proof + JSON receipt

Block 1 — Consent log row lock (beginner)

Create or open release-evidence/playtest/consent_log.csv:

column example notes
consent_record_id a1b2c3d4-0001-4000-8000-000000000001 UUID v4
character_id facilitator_vo_07 matches asset folder
consent_scope highlight_reel or internal_only
consent_expires 2027-12-31 ISO date
opt_out false true = exclude from public reel
build_label playtest-july-2027-rc1 matches BUILD_RECEIPT

Common mistake: copying a video consent row UUID into VO without a dedicated VO row—V3 will fail when fields differ.

Developer note: Pin consent_log_version in receipt JSON when legal updates terms mid-wave (facilitator contract references form version).

Block 2 — Audacity export discipline (gate V1)

Document once in art/voice/README-vo-export.md:

Setting Value Why
Format WAV (PCM) MP3/AAC strips custom chunks in most pipelines
Channels Mono or stereo per source Document choice in receipt
Sample rate 48000 Hz (team standard) Matches 14 free LUFS tools fest trailer lane
Metadata Write custom tags enabled Team macro must not strip LIST/iXML

Export steps (beginner path)

  1. Open only the VO track (mute music beds and SFX buses).
  2. Select the line region aligned to highlight script timing.
  3. File → Export Audio → WAV.
  4. Apply pinned metadata preset (your team names it PlaytestVOConsent2026).
  5. Save to art/voice/facilitator/vo_line_01.wav—path must match receipt vo_asset_path.

Red flags for V1 fail:

  • “Export as MP3 for Slack preview” then promote MP3 to reel pipeline.
  • Batch macro that normalizes loudness and removes non-standard chunks.
  • Exporting full session mix instead of isolated VO.

Outbound reference: Audacity manual — Metadata for tag editor basics.

Block 3 — LIST vs iXML (gate V2)

WAV files store custom data in RIFF chunks. Teams pick one convention and document chunk_type in the receipt:

Chunk style When teams pick it Inspector hint
LIST/INFO Legacy pipelines, simpler tooling ffprobe or mediainfo shows INFO tags
iXML Broadcast-style metadata, DaVinci handoffs XML block inside WAV

Required fields inside the waveform file (not only in JSON sidecar):

  • consent_record_id
  • consent_scope
  • consent_expires
  • opt_out

Manual verification (beginner)

  1. Open Metadata Editor on exported WAV (or team RIFF viewer).
  2. Confirm all four keys exist.
  3. Screenshot to release-evidence/audio/proof/vo_line_01_metadata.png.

Scripted spot check (developer path)

ffprobe -hide_banner -show_format -show_streams vo_line_01.wav 2>&1 | tee vo_line_01_ffprobe.txt

Your team may add a small Python script using wave + chunk walk—document the script path in wav_metadata_proof.verification_tool inside the receipt. Pass V2 when all four fields are readable from the file bytes, not from a parallel .txt sidecar only.

Block 4 — Values match consent log (gate V3)

Check Pass when
UUID consent_record_id in WAV equals CSV row
Scope highlight_reel in WAV equals CSV unless deliberately internal_only
Expiry Date string matches CSV (timezone policy documented)
Opt-out opt_out: true in CSV → WAV must not ship in public reel

If opt_out is true: stop. Do not mux into public MP4—even if audio sounds fine. Tag Lesson 239 vod_consent for routing.

Block 5 — ffprobe duration spot (gate V4)

Highlight scripts assume timing. Drift breaks concat with OBS MKV gap preflight. When the reel ships more than one VO line, graduate to the ffprobe duration and sample-rate verification matrix—this block is the single-line spot check, not batch QA.

ffprobe -v error -show_entries format=duration -of default=nw=1:nk=1 vo_line_01.wav

Compare output to clip_plan.csv vo_duration_expected_sec for that line.

Tolerance Team policy example
±0.05 s Single VO line
±0.15 s Line with intentional tail silence

Record duration_seconds and ffprobe_match: true in receipt.

PowerShell variant

$dur = ffprobe -v error -show_entries format=duration -of csv=p=0 vo_line_01.wav
[pscustomobject]@{ file='vo_line_01.wav'; duration_sec=$dur; pass=([double]$dur -gt 0) } | Export-Csv duration_spot.csv -NoTypeInformation

Attach duration_spot.csv to evidence folder for Thursday BUILD_RECEIPT row review.

Block 6 — Mux survival dry run (gate V5)

Most “legal blocked” tickets are V5 failures: metadata present pre-mux, gone post-mux.

Minimal ffmpeg dry run

ffmpeg -y -i highlight_video.mp4 -i vo_line_01.wav -c:v copy -c:a aac -b:a 192k -shortest highlight_with_vo_dryrun.mp4

Then re-extract audio or inspect intermediate WAV your pipeline actually uses:

ffmpeg -y -i highlight_with_vo_dryrun.mp4 -vn -acodec pcm_s16le -ar 48000 post_mux_audio.wav

Re-run V2 checks on post_mux_audio.wav or on the WAV your legal tooling reads—document which path you certify in conversion_survival.mux_step.

mux_step value Meaning
ffmpeg_highlight_mp4 VO burned into H.264/AAC deliverable
wav_pcm_handoff VO stays WAV; video separate until DaVinci
audacity_roundtrip Team normalizes in Audacity again—must re-run full V1–V5

Pass V5 only when consent fields survive your real mux chain—not a hypothetical “we usually don’t strip.”

vo_consent_metadata_receipt_v1.json (gate V6)

Pin under release-evidence/audio/VO_CONSENT_METADATA_RECEIPT.json:

{
  "schema": "vo_consent_metadata_receipt_v1",
  "build_label": "playtest-july-2027-rc1",
  "character_id": "facilitator_vo_07",
  "vo_asset_path": "art/voice/facilitator/vo_line_01.wav",
  "consent_fields": {
    "consent_record_id": "a1b2c3d4-0001-4000-8000-000000000001",
    "consent_scope": "highlight_reel",
    "consent_expires": "2027-12-31",
    "opt_out": false
  },
  "wav_metadata_proof": {
    "chunk_type": "WAV_LIST_OR_IXML",
    "fields_present": true,
    "verification_tool": "manual_metadata_editor_v1"
  },
  "duration": {
    "duration_seconds": 3.21,
    "ffprobe_match": true
  },
  "cousin_receipts": {
    "playtest_clip_consent": "release-evidence/playtest/vod/PLAYTEST_CLIP_CONSENT_RECEIPT.json"
  },
  "conversion_survival": {
    "mux_step": "ffmpeg_highlight_mp4",
    "metadata_survives": true
  },
  "gates": {
    "V1_export_settings": "pass",
    "V2_fields_present": "pass",
    "V3_values_match_consent_log": "pass",
    "V4_duration_stable": "pass",
    "V5_conversion_survives": "pass",
    "V6_build_receipt": "pass"
  },
  "wav_consent_metadata_ok": true,
  "playtest_promotion_allowed": true
}

Promote on BUILD_RECEIPT:

Column Pass when
vo_consent_metadata wav_consent_metadata_ok: true
playtest_clip_consent Cousin Lesson 243 independent

See BUILD_RECEIPT beginner pipeline for build_id alignment.

Gates V1–V6 summary table (developer ramp)

Gate Beginner question Fail when
V1 Did I export WAV with metadata preset? MP3 or stripped export
V2 Are four fields inside the file? Sidecar-only metadata
V3 Do values match consent log? UUID typo
V4 Does duration match plan? ffprobe drift
V5 Did mux strip tags? Post-mux empty LIST/iXML
V6 Is receipt filed + BUILD_RECEIPT updated? JSON only in chat

Scenario A — OBS GREEN, legal RED on VO

Context: Wednesday reel review. Video manifest passes C1–C6. Legal: “VO line 3 has no consent linkage.”

Steps:

  1. Open vo_line_03.wav—V2 fail (missing consent_record_id).
  2. Re-export from Audacity with preset; re-run V2–V3.
  3. Dry-run mux; confirm V5.
  4. File receipt; update BUILD_RECEIPT before re-upload.

Standup sentence: “Video consent was GREEN; VO WAV lacked embedded UUID—re-exported with PlaytestVOConsent2026 preset, mux survival verified.”

Scenario B — Metadata stripped after ffmpeg

Context: V2 pass pre-mux, V2 fail post-mux.

Fix paths:

  1. Change ffmpeg audio codec path to preserve handoff WAV (separate lane).
  2. Or embed metadata after mux in team-approved tool (document in receipt—auditors will ask).
  3. Never mark V5 pass on faith.

After first export, run the Metadata Survives Mux Challenge (45 minutes)—this tutorial establishes the first evening habit; the challenge proves post-mux survival (Lesson 250 V5).

Scenario C — opt_out true but line in timeline

Context: Playtester revoked marketing use mid-wave.

Actions:

  1. Set CSV opt_out true.
  2. Remove WAV from DaVinci timeline and delete or quarantine file from art/voice/.
  3. Set wav_consent_metadata_ok: false on BUILD_RECEIPT for that build until replaced.

Consent log + OBS clip crosswalk

Receipt Path Join key
Clip consent PLAYTEST_CLIP_CONSENT_RECEIPT.json clip_idconsent_record_id
VO metadata VO_CONSENT_METADATA_RECEIPT.json character_id + shared consent_record_id

Same UUID may appear in both when facilitator speaks on camera and supplies isolated VO—both receipts still required.

Folder layout (evidence discipline)

release-evidence/
  playtest/
    consent_log.csv
    vod/
      PLAYTEST_CLIP_CONSENT_RECEIPT.json
  audio/
    VO_CONSENT_METADATA_RECEIPT.json
    proof/
      vo_line_01_metadata.png
      vo_line_01_ffprobe.txt
      duration_spot.csv
art/voice/facilitator/
  vo_line_01.wav
  README-vo-export.md

Friday Block 5 maintenance: verify proof/ not empty before fest branch promotion.

Audacity preset checklist (copy into README)

  • [ ] WAV PCM export only
  • [ ] Metadata macro named and versioned
  • [ ] Music beds muted on export
  • [ ] build_label in project notes matches BUILD_RECEIPT
  • [ ] Cousin 243 receipt path recorded before reel upload
  • [ ] V5 dry-run logged in conversion_survival

ffprobe format dump (debug metadata loss)

When V2 fails unexpectedly:

ffprobe -hide_banner -show_format -show_entries format_tags:all vo_line_01.wav

Save output beside vo_line_01_ffprobe.txt. Compare pre- and post-mux dumps—diff is your strip point for case study #16 later.

Relationship to store stereo (Lesson 234)

Lesson 234 — micro-trailer stereo embed is Steam store master loudness and embed—not playtest VO consent. BUILD_RECEIPT keeps separate columns. Do not merge receipts.

Relationship to AI voice pipelines

Model-generated VO may ship WAVs with wrong tags. Governance for reason-codes lives in backlog #22—this tutorial still applies: human-verified fields in LIST/iXML before public mux, regardless of generator.

Internal links map (cluster spine)

Sibling Role
Audacity VO preflight Ninety-second V1–V6
Lesson 250 BUILD_RECEIPT milestone
Lesson 243 Video clip cousin
OBS highlight preflight C1–C6 on MKV
16 OBS/ffmpeg tools Capture stack
Playtest isolation Surface discipline

| Top 20 evidence receipts hub | Receipt #5 in full index |

| Metadata survives mux challenge | 45-minute M1–M6 post-mux proof |

| Missing iXML recovery case study | When legal blocks reel despite export proof |

Forward: backlog #23 ten-minute ritual—distinct URLs, same cluster.

Producer spreadsheet columns (optional dashboard)

column example
vo_asset vo_line_01.wav
V2_fields pass
V5_mux pass
wav_consent_metadata_ok true
cousin_243 pass
blocker none

JSON remains source of truth; spreadsheet is standup-facing.

Anti-patterns (July 2026)

  1. Spreadsheet-only consent — legal automation cannot read Excel inside AAC.
  2. Trusting Audacity screenshot without post-mux re-check — V5 exists for a reason.
  3. Filing VO receipt while 243 fails — cousin gate first.
  4. Using Whisper concat receipt for marketing reel — wrong lane (Lesson 220).
  5. Merging playtest_clip_consent_receipt into VO JSON — separate schemas.

Mini exercise (75 minutes)

  1. Export one line without metadata—confirm V2 fail.
  2. Add four fields; match consent log—V3 pass.
  3. Run ffprobe duration—V4 pass.
  4. Mux dry-run; re-verify—V5 pass.
  5. File VO_CONSENT_METADATA_RECEIPT.json; BUILD_RECEIPT GREEN.

Extended troubleshooting

Symptom Likely gate Next doc
Legal blocks reel, video OK V2–V3 This article Block 3–4
Duration mismatch in reel V4 MKV gap preflight
Fields visible in Audacity, gone in MP4 V5 Metadata survives mux challenge
Clip in reel, no consent row 243 C3 OBS highlight preflight
Whisper batch blocked 220 Concat decision tree blog

Waveform vs video consent audit script (developer)

Run before #reel-upload in CI or locally:

#!/usr/bin/env bash
set -euo pipefail
VO="art/voice/facilitator/vo_line_01.wav"
test -f "$VO" || { echo "missing VO"; exit 1; }
ffprobe -v error -show_entries format=duration -of default=nw=1:nk=1 "$VO" | tee /tmp/vo_dur.txt
test -f release-evidence/audio/VO_CONSENT_METADATA_RECEIPT.json || { echo "missing receipt"; exit 1; }
test -f release-evidence/playtest/vod/PLAYTEST_CLIP_CONSENT_RECEIPT.json || { echo "cousin 243 missing"; exit 1; }
echo "manual V2/V3/V5 still required"

Document in README-vo-export.md that V2/V3/V5 remain human or custom RIFF tooling—the script only guards file existence and duration probe hook.

LIST INFO tag naming conventions (team policy)

Teams disagree on exact key spellings. Pick one table and never mix:

Policy A (snake_case) Policy B (PascalCase)
consent_record_id ConsentRecordId
consent_scope ConsentScope
consent_expires ConsentExpires
opt_out OptOut

Record metadata_key_policy: snake_case_v1 inside receipt wav_metadata_proof so migrations in consent scope and expiry governance (#20) have a baseline.

DaVinci Resolve handoff notes (V5 variant)

Many teams mux in Resolve instead of ffmpeg:

  1. Import WAV with metadata intact (check Media Pool metadata panel).
  2. Deliver ProRes + separate WAV if legal reads WAV lane.
  3. If delivering single MP4 only, re-run V2 on extracted audio after deliverable.
  4. Log mux_step: davinci_deliverable_v1 in receipt.

Resolve version upgrades have stripped custom metadata in past studio incidents—treat version bumps as V5 regression tests.

Batch export for five VO lines (same evening)

Line consent_record_id suffix Expected duration
vo_line_01 …0001 3.2 s
vo_line_02 …0002 2.8 s
vo_line_03 …0003 4.1 s
vo_line_04 …0004 1.9 s
vo_line_05 …0005 5.0 s

One receipt per line or one receipt with lines[] array—pick one schema and document in release-evidence/audio/README.md. Do not mix styles in one sprint.

Legal review packet (what producers send)

Zip release-evidence/audio/proof/ containing:

  • VO_CONSENT_METADATA_RECEIPT.json
  • Pre-mux metadata screenshot
  • Post-mux metadata screenshot or ffprobe dump
  • duration_spot.csv
  • Cousin PLAYTEST_CLIP_CONSENT_RECEIPT.json path reference

Subject line template: [build_label] VO consent metadata GREEN — 5 lines, V5 ffmpeg_highlight_mp4.

Comparison to Whisper playtest triage receipts

Field Whisper triage VO consent (this article)
Primary file merged_playtest.wav vo_line_XX.wav
Key boolean concat_ok wav_consent_metadata_ok
Cousin concat decision tree Lesson 243 clip consent
Public use Internal triage default Marketing reel

When ffmpeg concat fails solves merge failures; this article solves legal WAV linkage—orthogonal problems.

July readiness checklist (producer)

  • [ ] Consent form version pinned in facilitator contract
  • [ ] Audacity preset PlaytestVOConsent2026 on all editors
  • [ ] consent_log.csv row per VO line
  • [ ] V5 tested on production mux command, not lab-only
  • [ ] BUILD_RECEIPT row shows both playtest_clip_consent and vo_consent_metadata
  • [ ] Thursday row review includes VO metadata line

Engine and tool boundaries

Godot, Unity, and FMOD do not write playtest consent LIST chunks—Audacity export owns V1. Engine code may read receipt JSON for gating cutscenes, but do not duplicate consent fields only in User:// saves without WAV embed if legal requires waveform proof.

Outbound references

Standup one-liners (copy-paste)

GREEN: “VO line 01–05: V1–V6 pass, VO_CONSENT_METADATA_RECEIPT.json filed, cousin 243 linked, BUILD_RECEIPT vo_consent_metadata promoted for playtest-july-2027-rc1.”

BLOCKED: “Reel hold: VO WAV missing embedded consent_record_id on line 03—re-export with PlaytestVOConsent2026, V5 pending after ffmpeg mux.”

MISROUTED: “This is not Whisper concat—route to VO metadata tutorial, not concat decision tree.”

Version pin for facilitators

Add to BUILD_RECEIPT.json optional block:

"vo_consent_metadata_preset": "PlaytestVOConsent2026",
"audacity_min_version": "3.7.0"

When Audacity upgrades, re-run V5 on one sample line before batch exports—metadata macros break silently more often than audio engines.

FAQ addendum — search phrasing

Why do highlight reels fail when OBS clip consent passed

Because video fragment consent and VO waveform consent are separate BUILD_RECEIPT columns. Legal automation reads embedded WAV tags; a GREEN clip manifest does not imply GREEN VO metadata.

Where do I store vo_consent_metadata_receipt_v1.json

Default path: release-evidence/audio/VO_CONSENT_METADATA_RECEIPT.json, referenced from BUILD_RECEIPT and cousin PLAYTEST_CLIP_CONSENT_RECEIPT.json under release-evidence/playtest/vod/.

Key takeaways

  1. Video clip consent (243) ≠ VO waveform metadata (250)—public reels need both.
  2. Embed consent_record_id in WAV LIST or iXML, not spreadsheet alone.
  3. V5 mux survival is mandatory—re-check after ffmpeg or DaVinci.
  4. opt_out: true excludes line from public reel regardless of audio quality.
  5. Audacity preflight is ninety seconds; this blog is the first evening walkthrough.
  6. File vo_consent_metadata_receipt_v1.json under release-evidence/audio/.
  7. ffprobe duration spot catches clip-plan drift before upload.
  8. Cousin PLAYTEST_CLIP_CONSENT_RECEIPT.json must reference same UUID when applicable.
  9. BUILD_RECEIPT vo_consent_metadata is independent from store stereo Lesson 234.
  10. Forward cluster rows #15–#16–#23 for challenge, case study, and ritual angles.

FAQ

What is WAV LIST or iXML consent metadata for playtest reels

It is embedded RIFF data carrying consent_record_id, scope, expiry, and opt_out inside the VO WAV so legal automation can verify voice lines without relying on sidecar spreadsheets alone.

How is this different from OBS playtest clip consent

Lesson 243 proves which video fragments may concat into a reel. This tutorial proves which VO WAV lines carry waveform-level consent fields.

Does ffprobe show LIST and iXML tags

ffprobe proves duration and format (V4). Use your team RIFF/iXML inspector for V2 field presence—document the tool in the receipt.

When should I file vo_consent_metadata_receipt_v1.json

After V1–V5 pass, before public highlight reel upload and before promoting BUILD_RECEIPT vo_consent_metadata_ok.

Can I use MP3 for facilitator VO in July reels

No for this pipeline—export WAV with metadata writing enabled (gate V1). MP3 is preview-only outside the consent lane.

What if ffmpeg strips metadata on mux

V5 fails—change handoff strategy or re-embed per team policy; do not mark GREEN without post-mux proof.


July highlight reels need waveform-level consent proof—export WAV with embedded fields, ffprobe duration, mux survival, cousin 243, then vo_consent_metadata_ok on BUILD_RECEIPT.