agentic-video Gallery

Find when a steady tone is heard in the mid band of a clip

SoundCookingVerified
0:12CC-BY-4.0 · WhirlieWheeter (Wikimedia Commons user)

Proof frames

Click a frame to seek

Tool calls

2 calls · agentic-video 0.3.1
spectrogram_windowimac · 397 ms

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_timelineimac · 234 ms

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.
  1. Get the .mcpb file and open it in Claude Desktop.
  2. 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.