Find when a steady tone is heard in the mid band of a clip
0:12CC-BY-3.0 · Blender Foundation (mango.blender.org)
Proof frames
Tool calls
spectrogram_window
Arguments
{
"source": "$CLIP",
"start_sec": 3,
"end_sec": 9
}
Result
{
"ok": true,
"data": {
"source_path": "~/hill/gallery/tmp/R-tone/attempt2/tone-film/clip.mp4",
"start_sec": 3,
"end_sec": 9,
"file_path": "/private<cache>/ae1c3ccc4c3c9aebe9cf/audio/spectrogram_v2_v1_4fe0c540fe3ad271.png",
"width": 1200,
"height": 600,
"sample_rate": 48000,
"hop_samples": 256,
"timecode_badges": [
"00:00:03.000",
"00:00:04.000",
"00:00:05.000",
"00:00:06.000",
"00:00:07.000",
"00:00:08.000",
"00:00:09.000"
],
"frequency_ticks": [
{
"frequency_hz": 50,
"label": "50",
"y_px": 480
},
{
"frequency_hz": 100,
"label": "100",
"y_px": 432
},
{
"frequency_hz": 200,
"label": "200",
"y_px": 383
},
{
"frequency_hz": 500,
"label": "500",
"y_px": 318
},
{
"frequency_hz": 1000,
"label": "1k",
"y_px": 269
},
{
"frequency_hz": 2000,
"label": "2k",
"y_px": 220
},
{
"frequency_hz": 5000,
"label": "5k",
"y_px": 156
},
{
"frequency_hz": 10000,
"label": "10k",
"y_px": 107
},
{
"frequency_hz": 20000,
"label": "20k",
"y_px": 58
}
],
"marks": [],
"tool_file": {
"_tag": "ToolFile",
"name": "spectrogram_v2_v1_4fe0c540fe3ad271.png",
"mimeType": "image/png",
"encoding": "base64",
"data": "<893588 base64 chars dropped>",
"byteLength": 670189
}
}
}
loudness_timeline
Arguments
{
"source": "$CLIP",
"start_sec": 3,
"end_sec": 9,
"window_sec": 2
}
Result
{
"ok": true,
"data": {
"source_path": "~/hill/gallery/tmp/R-tone/attempt2/tone-film/clip.mp4",
"start_sec": 3,
"end_sec": 9,
"window_sec": 2,
"bpm": null,
"silence_threshold_dbfs": -60,
"peak_dbfs": -4.168,
"peak_sec": 8.234,
"windows": [
{
"start_sec": 3,
"end_sec": 5,
"rms_dbfs": -24.349,
"peak_dbfs": -11.48,
"band_db": {
"sub": -28.625,
"low_mid": -35.248,
"mid": -26.55,
"high": -38.427,
"air": -40.176
},
"spectral_centroid_hz": 1120.968,
"silent": false
},
{
"start_sec": 5,
"end_sec": 7,
"rms_dbfs": -19.462,
"peak_dbfs": -5.136,
"band_db": {
"sub": -31.276,
"low_mid": -28.706,
"mid": -20.796,
"high": -34.851,
"air": -45.901
},
"spectral_centroid_hz": 986.788,
"silent": false
},
{
"start_sec": 7,
"end_sec": 9,
"rms_dbfs": -15.487,
"peak_dbfs": -4.168,
"band_db": {
"sub": -30.371,
"low_mid": -21.651,
"mid": -13.37,
"high": -33.159,
"air": -39.957
},
"spectral_centroid_hz": 772.846,
"silent": false
}
],
"outliers": [
{
"start_sec": 3,
"end_sec": 5,
"band": "low_mid",
"direction": "cut",
"energy_db": -35.248,
"baseline_db": -25.178,
"delta_db": -10.069,
"min_delta_db": -10.069,
"max_delta_db": -10.069,
"energy_start_db": -35.248,
"energy_end_db": -35.248,
"entry_jump_db": null,
"exit_jump_db": -6.542,
"internal_range_db": 0,
"trend_db": 0,
"monotonic_fraction": 0,
"shape": "transient",
"window_count": 1,
"fault_level": false,
"classification": "informational",
"ignored": false,
"ignore_reason": null
},
{
"start_sec": 3,
"end_sec": 5,
"band": "mid",
"direction": "cut",
"energy_db": -26.55,
"baseline_db": -17.083,
"delta_db": -9.467,
"min_delta_db": -9.467,
"max_delta_db": -9.467,
"energy_start_db": -26.55,
"energy_end_db": -26.55,
"entry_jump_db": null,
"exit_jump_db": -5.754,
"internal_range_db": 0,
"trend_db": 0,
"monotonic_fraction": 0,
"shape": "transient",
"window_count": 1,
"fault_level": false,
"classification": "informational",
"ignored": false,
"ignore_reason": null
},
{
"start_sec": 7,
"end_sec": 9,
"band": "low_mid",
"direction": "boost",
"energy_db": -21.651,
"baseline_db": -31.977,
"delta_db": 10.326,
"min_delta_db": 10.326,
"max_delta_db": 10.326,
"energy_start_db": -21.651,
"energy_end_db": -21.651,
"entry_jump_db": 7.055,
"exit_jump_db": null,
"internal_range_db": 0,
"trend_db": 0,
"monotonic_fraction": 0,
"shape": "transient",
"window_count": 1,
"fault_level": false,
"classification": "informational",
"ignored": false,
"ignore_reason": null
},
{
"start_sec": 7,
"end_sec": 9,
"band": "mid",
"direction": "boost",
"energy_db": -13.37,
"baseline_db": -23.673,
"delta_db": 10.303,
"min_delta_db": 10.303,
"max_delta_db": 10.303,
"energy_start_db": -13.37,
"energy_end_db": -13.37,
"entry_jump_db": 7.426,
"exit_jump_db": null,
"internal_range_db": 0,
"trend_db": 0,
"monotonic_fraction": 0,
"shape": "transient",
"window_count": 1,
"fault_level": false,
"classification": "informational",
"ignored": false,
"ignore_reason": null
}
],
"ignore_ranges": [],
"silence_gaps": [],
"total": 3
}
}
Question and answer
- Question
- There's a whine in the audio. When does it start and stop?
- Answer
- The loudness check's largest mid-band outlier runs from 7 s to 9 s, +10.3 dB against the other windows.
- Tool returned
- {"start_sec":7,"end_sec":9,"band":"mid","direction":"boost","energy_db":-13.37,"baseline_db":-23.673,"delta_db":10.303,"min_delta_db":10.303,"max_delta_db":10.303,"energy_start_db":-13.37,"energy_end_db":-13.37,"entry_jump_db":7.426,"exit_jump_db":null,"internal_range_db":0,"trend_db":0,"monotonic_fraction":0,"shape":"transient","window_count":1,"fault_level":false,"classification":"informational","ignored":false,"ignore_reason":null}
- Truth
- {"start":4.2,"end":7.2}
Check failedIoU 0.04, minimum 0.5
How it was checked
- Truth from
- constructed
- Fixed at
Planted by this recipe before any tool ran: a 1000 Hz sine at gain 0.1 was mixed over the source's own audio from 4.2 s to 7.2 s in the first 12 s of the clip (the picture is not changed). The truth is that interval, and the tolerance 0.5 is the minimum overlap (IoU) with the answer. The call range, 3 s to 9 s in 2-second windows, is the fixed rule floor(start) minus 1 to floor(start) plus 5, written here before the run.
A script mixed a steady 1000 Hz tone for 3 seconds into this clip's own sound at a time it chose, and the tool gives a frequency band rather than a pitch, so the card gives the time only and no hertz value.
Try it yourself
Using agentic-video, look at the sound in my video from 3 to 9 seconds. Run spectrogram_window on that range, then run loudness_timeline on the same range with 2-second windows. Tell me the start and end, in seconds, of the mid-band outlier with the largest change.
- Get the .mcpb file and open it in Claude Desktop.
- Or:
pip install agentic-video
Clip and licence
- Licence
- CC-BY-3.0
- Author
- Blender Foundation (mango.blender.org)
- Source
- commons.wikimedia.org
This file is licensed under the Creative Commons Attribution 3.0 Unported license.