Find when a steady tone is heard in the mid band of a clip
0:12CC-BY-4.0 · WhirlieWheeter (Wikimedia Commons user)
Proof frames
Tool calls
spectrogram_window
Arguments
{
"source": "$CLIP",
"start_sec": 2,
"end_sec": 8
}
Result
{
"ok": true,
"data": {
"source_path": "~/hill/gallery/tmp/R-tone/attempt2/tone-cooking/clip.mp4",
"start_sec": 2,
"end_sec": 8,
"file_path": "/private<cache>/9002f7b39b389d9b51e2/audio/spectrogram_v2_v1_29ad05f3f6642e89.png",
"width": 1200,
"height": 600,
"sample_rate": 48000,
"hop_samples": 256,
"timecode_badges": [
"00:00:02.000",
"00:00:03.000",
"00:00:04.000",
"00:00:05.000",
"00:00:06.000",
"00:00:07.000",
"00:00:08.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_29ad05f3f6642e89.png",
"mimeType": "image/png",
"encoding": "base64",
"data": "<894152 base64 chars dropped>",
"byteLength": 670612
}
}
}
loudness_timeline
Arguments
{
"source": "$CLIP",
"start_sec": 2,
"end_sec": 8,
"window_sec": 2
}
Result
{
"ok": true,
"data": {
"source_path": "~/hill/gallery/tmp/R-tone/attempt2/tone-cooking/clip.mp4",
"start_sec": 2,
"end_sec": 8,
"window_sec": 2,
"bpm": null,
"silence_threshold_dbfs": -60,
"peak_dbfs": -3.653,
"peak_sec": 3.414,
"windows": [
{
"start_sec": 2,
"end_sec": 4,
"rms_dbfs": -26.21,
"peak_dbfs": -3.653,
"band_db": {
"sub": -60.383,
"low_mid": -58.112,
"mid": -27.213,
"high": -39.558,
"air": -36.979
},
"spectral_centroid_hz": 3772,
"silent": false
},
{
"start_sec": 4,
"end_sec": 6,
"rms_dbfs": -22.32,
"peak_dbfs": -5.232,
"band_db": {
"sub": -53.182,
"low_mid": -47.235,
"mid": -21.484,
"high": -34.669,
"air": -30.141
},
"spectral_centroid_hz": 4026.183,
"silent": false
},
{
"start_sec": 6,
"end_sec": 8,
"rms_dbfs": -28.795,
"peak_dbfs": -7.248,
"band_db": {
"sub": -54.49,
"low_mid": -54.974,
"mid": -35.514,
"high": -35.682,
"air": -31.837
},
"spectral_centroid_hz": 9784.504,
"silent": false
}
],
"outliers": [
{
"start_sec": 2,
"end_sec": 4,
"band": "low_mid",
"direction": "cut",
"energy_db": -58.112,
"baseline_db": -51.105,
"delta_db": -7.008,
"min_delta_db": -7.008,
"max_delta_db": -7.008,
"energy_start_db": -58.112,
"energy_end_db": -58.112,
"entry_jump_db": null,
"exit_jump_db": -10.877,
"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": 2,
"end_sec": 4,
"band": "sub",
"direction": "cut",
"energy_db": -60.383,
"baseline_db": -53.836,
"delta_db": -6.547,
"min_delta_db": -6.547,
"max_delta_db": -6.547,
"energy_start_db": -60.383,
"energy_end_db": -60.383,
"entry_jump_db": null,
"exit_jump_db": -7.201,
"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": 4,
"end_sec": 6,
"band": "low_mid",
"direction": "boost",
"energy_db": -47.235,
"baseline_db": -56.543,
"delta_db": 9.308,
"min_delta_db": 9.308,
"max_delta_db": 9.308,
"energy_start_db": -47.235,
"energy_end_db": -47.235,
"entry_jump_db": 10.877,
"exit_jump_db": 7.739,
"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": 4,
"end_sec": 6,
"band": "mid",
"direction": "boost",
"energy_db": -21.484,
"baseline_db": -31.364,
"delta_db": 9.88,
"min_delta_db": 9.88,
"max_delta_db": 9.88,
"energy_start_db": -21.484,
"energy_end_db": -21.484,
"entry_jump_db": 5.729,
"exit_jump_db": 14.03,
"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": 6,
"end_sec": 8,
"band": "mid",
"direction": "cut",
"energy_db": -35.514,
"baseline_db": -24.349,
"delta_db": -11.166,
"min_delta_db": -11.166,
"max_delta_db": -11.166,
"energy_start_db": -35.514,
"energy_end_db": -35.514,
"entry_jump_db": -14.03,
"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 4 s to 6 s, +9.9 dB against the other windows.
Check passedIoU 0.67, minimum 0.5
How it was checked
- Truth from
- constructed
- Fixed at
Planted by this recipe before any tool ran: a 2500 Hz sine at gain 0.1 was mixed over the source's own audio from 3.2 s to 6.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, 2 s to 8 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 2500 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 2 to 8 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-4.0
- Author
- WhirlieWheeter (Wikimedia Commons user)
- Source
- commons.wikimedia.org
This file is licensed under the Creative Commons Attribution 4.0 International license.