{
  "assertions": [
    "responds(click)",
    "responds(drag)",
    "responds(audio)",
    "no_motion"
  ],
  "attempts": 5,
  "attribution": "\u201cmake a theremin. move the mouse for pitch and volume, click once to b\u2026\u201d \u2014 sketchgen entry 914, prompted by profcarroll, written by qwen3-coder:30b-a3b-q4_K_M under the control rules file. https://profcarroll.github.io/sketchgen-gallery/e/914/ Licensed CC BY 4.0.",
  "brief": "The canvas displays a visual representation of real-time sound generation. The performance begins when the viewer clicks the canvas, activating the instrument. Moving the mouse across the canvas controls the pitch and volume of the sound. The pitch is dictated by the mouse's vertical position, while the volume is controlled by its horizontal movement. As the mouse moves, the canvas updates with changing sound wave patterns and visual meters that reflect the current output level and frequency.",
  "completion_tokens": 3428,
  "created_utc": "2026-09-18T20:22:37Z",
  "entry_id": 914,
  "executor": "qwen3-coder:30b-a3b-q4_K_M",
  "executor_prompt_version": "executor-v3",
  "gate": [
    {
      "assertions": {
        "no_motion": true,
        "responds(audio)": false,
        "responds(click)": false,
        "responds(drag)": false
      },
      "attempt": 1,
      "checks": {
        "audio_context_running": true,
        "console_clean": false,
        "frame_advancing": false,
        "frame_budget": true,
        "is_looping": true,
        "sound_lib_ok": true
      },
      "completion_tokens": 729,
      "evidence": "gate exit 1: checks failed: console_clean, frame_advancing; assertions failed: responds(click), responds(drag), responds(audio)\n\nFixed checks that failed:\n- console_clean = false\n- frame_advancing = false\n    frame_advancing compares frameCount at frame 84 of the 120-frame idle window (0) with the end of it (0); at load it was 0\n\nAssertions that failed:\n- responds(click): click at canvas centre, 30 frames after: mean abs diff 0.0000/255, 0 of 160000 pixels changed\n- responds(drag): drag across 20%->80% of the canvas width: mean abs diff 0.0000/255, 0 of 160000 pixels changed\n- responds(audio): vs the silent reference run: mean abs pixel diff 0.0000/255 (threshold 1.0), 0 of 160000 pixels changed = 0.00% (threshold 2%); mean canvas brightness 0.000 under 440 Hz vs 0.000 under silence\n\nConsole (1 error line, first 1 shown):\n- [pageerror] fft.disconnect is not a function\n\nRuntime state the gate read:\n- frame_advancing compares frameCount at frame 84 of the 120-frame idle window (0) with the end of it (0); at load it was 0\n- AudioContext state after the click probe: running\n",
      "exit": 1,
      "ghost": null,
      "given": null,
      "model": "qwen3-coder:30b-a3b-q4_K_M",
      "ms_per_frame": 0.1,
      "num_ctx": null,
      "preload_s": null,
      "prompt_tokens": 1758,
      "resources_loaded": [],
      "rules_file": "control",
      "source": "attempt-1",
      "total_s": 5.233,
      "wall_s": 48.87
    },
    {
      "assertions": {
        "no_motion": true,
        "responds(audio)": false,
        "responds(click)": true,
        "responds(drag)": true
      },
      "attempt": 2,
      "checks": {
        "audio_context_running": true,
        "console_clean": true,
        "frame_advancing": true,
        "frame_budget": true,
        "is_looping": true,
        "sound_lib_ok": true
      },
      "completion_tokens": 792,
      "evidence": "gate exit 1: assertions failed: responds(audio)\n\nAssertions that failed:\n- responds(audio): vs the silent reference run: mean abs pixel diff 0.3134/255 (threshold 1.0), 749 of 160000 pixels changed = 0.47% (threshold 2%); mean canvas brightness 26.955 under 440 Hz vs 26.962 under silence\n\nRuntime state the gate read:\n- frame_advancing compares frameCount at frame 84 of the 120-frame idle window (86) with the end of it (122); at load it was 0\n- AudioContext state after the click probe: running\n",
      "exit": 1,
      "ghost": null,
      "given": null,
      "model": "qwen3-coder:30b-a3b-q4_K_M",
      "ms_per_frame": 0.1,
      "num_ctx": null,
      "preload_s": null,
      "prompt_tokens": 2109,
      "resources_loaded": [],
      "rules_file": "control",
      "source": "attempt-2",
      "total_s": 5.344,
      "wall_s": 56.842
    },
    {
      "assertions": {
        "no_motion": true,
        "responds(audio)": false,
        "responds(click)": false,
        "responds(drag)": false
      },
      "attempt": 3,
      "checks": {
        "audio_context_running": true,
        "console_clean": false,
        "frame_advancing": false,
        "frame_budget": true,
        "is_looping": true,
        "sound_lib_ok": true
      },
      "completion_tokens": 634,
      "evidence": "gate exit 1: checks failed: console_clean, frame_advancing; assertions failed: responds(click), responds(drag), responds(audio)\n\nFixed checks that failed:\n- console_clean = false\n- frame_advancing = false\n    frame_advancing compares frameCount at frame 84 of the 120-frame idle window (0) with the end of it (0); at load it was 0\n\nAssertions that failed:\n- responds(click): click at canvas centre, 30 frames after: mean abs diff 0.0000/255, 0 of 160000 pixels changed\n- responds(drag): drag across 20%->80% of the canvas width: mean abs diff 0.0000/255, 0 of 160000 pixels changed\n- responds(audio): vs the silent reference run: mean abs pixel diff 0.0000/255 (threshold 1.0), 0 of 160000 pixels changed = 0.00% (threshold 2%); mean canvas brightness 0.000 under 440 Hz vs 0.000 under silence\n\nConsole (1 error line, first 1 shown):\n- [pageerror] masterOutput is not defined\n\nRuntime state the gate read:\n- frame_advancing compares frameCount at frame 84 of the 120-frame idle window (0) with the end of it (0); at load it was 0\n- AudioContext state after the click probe: running\n",
      "exit": 1,
      "ghost": null,
      "given": null,
      "model": "qwen3-coder:30b-a3b-q4_K_M",
      "ms_per_frame": 0.1,
      "num_ctx": null,
      "preload_s": null,
      "prompt_tokens": 1928,
      "resources_loaded": [],
      "rules_file": "control",
      "source": "attempt-3",
      "total_s": 5.223,
      "wall_s": 46.146
    },
    {
      "assertions": {
        "no_motion": true,
        "responds(audio)": false,
        "responds(click)": false,
        "responds(drag)": false
      },
      "attempt": 4,
      "checks": {
        "audio_context_running": true,
        "console_clean": false,
        "frame_advancing": false,
        "frame_budget": true,
        "is_looping": true,
        "sound_lib_ok": true
      },
      "completion_tokens": 702,
      "evidence": "gate exit 1: checks failed: console_clean, frame_advancing; assertions failed: responds(click), responds(drag), responds(audio)\n\nFixed checks that failed:\n- console_clean = false\n- frame_advancing = false\n    frame_advancing compares frameCount at frame 84 of the 120-frame idle window (0) with the end of it (0); at load it was 0\n\nAssertions that failed:\n- responds(click): click at canvas centre, 30 frames after: mean abs diff 0.0000/255, 0 of 160000 pixels changed\n- responds(drag): drag across 20%->80% of the canvas width: mean abs diff 0.0000/255, 0 of 160000 pixels changed\n- responds(audio): vs the silent reference run: mean abs pixel diff 0.0000/255 (threshold 1.0), 0 of 160000 pixels changed = 0.00% (threshold 2%); mean canvas brightness 0.000 under 440 Hz vs 0.000 under silence\n\nConsole (1 error line, first 1 shown):\n- [pageerror] masterOutput is not defined\n\nRuntime state the gate read:\n- frame_advancing compares frameCount at frame 84 of the 120-frame idle window (0) with the end of it (0); at load it was 0\n- AudioContext state after the click probe: running\n",
      "exit": 1,
      "ghost": null,
      "given": null,
      "model": "qwen3-coder:30b-a3b-q4_K_M",
      "ms_per_frame": 0.1,
      "num_ctx": null,
      "preload_s": null,
      "prompt_tokens": 2108,
      "resources_loaded": [],
      "rules_file": "control",
      "source": "attempt-4",
      "total_s": 5.261,
      "wall_s": 49.25
    },
    {
      "assertions": {
        "no_motion": true,
        "responds(audio)": false,
        "responds(click)": false,
        "responds(drag)": false
      },
      "attempt": 5,
      "checks": {
        "audio_context_running": true,
        "console_clean": false,
        "frame_advancing": false,
        "frame_budget": true,
        "is_looping": true,
        "sound_lib_ok": true
      },
      "completion_tokens": 571,
      "evidence": "gate exit 1: checks failed: console_clean, frame_advancing; assertions failed: responds(click), responds(drag), responds(audio)\n\nFixed checks that failed:\n- console_clean = false\n- frame_advancing = false\n    frame_advancing compares frameCount at frame 84 of the 120-frame idle window (0) with the end of it (0); at load it was 0\n\nAssertions that failed:\n- responds(click): click at canvas centre, 30 frames after: mean abs diff 0.0000/255, 0 of 160000 pixels changed\n- responds(drag): drag across 20%->80% of the canvas width: mean abs diff 0.0000/255, 0 of 160000 pixels changed\n- responds(audio): vs the silent reference run: mean abs pixel diff 0.0000/255 (threshold 1.0), 0 of 160000 pixels changed = 0.00% (threshold 2%); mean canvas brightness 0.000 under 440 Hz vs 0.000 under silence\n\nConsole (1 error line, first 1 shown):\n- [pageerror] masterOutput is not defined\n\nRuntime state the gate read:\n- frame_advancing compares frameCount at frame 84 of the 120-frame idle window (0) with the end of it (0); at load it was 0\n- AudioContext state after the click probe: running\n",
      "exit": 1,
      "ghost": null,
      "given": null,
      "model": "qwen3-coder:30b-a3b-q4_K_M",
      "ms_per_frame": 0.1,
      "num_ctx": null,
      "preload_s": null,
      "prompt_tokens": 2108,
      "resources_loaded": [],
      "rules_file": "control",
      "source": "attempt-5",
      "total_s": 5.259,
      "wall_s": 30.532
    }
  ],
  "ghost": {
    "by": "default",
    "events": 46,
    "script": "click,drag"
  },
  "job_id": 916,
  "last_error": null,
  "licence": "CC BY 4.0",
  "lineage": {
    "children": [
      976
    ],
    "critique": null,
    "critique_by": null,
    "generation": 1,
    "inherits_source": false,
    "parent_entry_id": null,
    "root_entry_id": 914
  },
  "loads": [],
  "note": null,
  "off_node": [],
  "planner": "gemma4:e4b",
  "planner_prompt_version": "planner-v1",
  "process": null,
  "prompt": "make a theremin. move the mouse for pitch and volume, click once to begin.",
  "prompt_tokens": 10011,
  "publish_commit": "fca02fd8cacba1a9a56195debb285690903ce819",
  "published_utc": "2026-09-19T03:40:58Z",
  "rules_file": "control",
  "seed": 1,
  "shape": "VM.Standard.A1.Flex 16/94",
  "source": {
    "attempts": [
      "attempt-1",
      "attempt-2",
      "attempt-3",
      "attempt-4",
      "attempt-5"
    ],
    "entry": "https://profcarroll.github.io/sketchgen-gallery/e/914/",
    "index_html": "sketch/index.html",
    "repository": "https://github.com/profcarroll/sketchgen-gallery/tree/main/e/914",
    "sketch_js": "sketch/sketch.js"
  },
  "state": "published",
  "statement": "This sketch creates an interactive sound visualization that responds to both mouse position and user interaction. When clicked, it activates a sine wave oscillator that generates audio in real-time. The vertical mouse position controls pitch while the horizontal position adjusts volume. As the mouse moves across the canvas, the visual output dynamically updates with animated waveforms and real-time audio meters showing current frequency and amplitude levels. The interface begins in a simple state prompting the user to click before activation, ensuring proper audio context initialization through the required user gesture.",
  "submitted_by": "profcarroll",
  "wall_s": 231.64
}
