Each model was given this exact prompt (with MODELNAME substituted):
Without using the Internet, working in /tmp/MODELNAME, generate an audio file of Bella Ciao, playable in an average web browser, and then drop the final result in ~/static/bella_ciao_MODELNAME.<ext>
All artifacts were inspected after the fact; the table below summarizes their approaches.
| Model | opus-5 | opus-4.8 | opus-4.7 | opus-4.6 | opus-4.5 | sonnet-4.6 | sonnet-4.5 | haiku-4.5 | deepseek-v4-pro | glm-5.1 | glm-5.2 | glm-5.3 | glm-5.3-flash | kimi-k2.6 | kimi-k3 | qwen3.8-2.4t-a95b | qwen3.7-plus | gpt-6-astra | gpt-5.6-sol | gpt-5.6-terra | gpt-5.6-luna | gpt-5.5 | gpt-5.4 | gpt-5.3-codex | gpt-5.2-codex | fable-5.1 | fable-5 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Lang | Python | Python | Python | Python | Python | Python | Python | ? | Python | Python | Python | Python | Python | Python | Python | Python | Python | Python | Python | Python | Python | Python | Python | ? | Python | Python | Python |
| Deps | numpy + scipy | numpy | numpy | stdlib | numpy | stdlib | numpy | ? | stdlib | numpy | numpy | numpy + scipy | numpy | numpy | numpy | numpy + scipy | stdlib | numpy + scipy | stdlib | stdlib + ffmpeg | stdlib | stdlib | stdlib | ? | stdlib | numpy + scipy | numpy |
| Format | MP3 (via ffmpeg) | MP3 (via ffmpeg) | MP3 | WAV | MP3 | OGG | MP3 (via ffmpeg) | MP3 | MP3 (also WAV+OGG locally) | WAV | MP3 (via ffmpeg) | MP3 (via ffmpeg) | MP3 (via ffmpeg) | WAV | MP3 (also OGG) | MP3 (via ffmpeg) | WAV | MP3 (via ffmpeg) | WAV | MP3 (via ffmpeg) | WAV | WAV | MP3 | WAV | MP3 | MP3 (via ffmpeg) | MP3 (via ffmpeg) |
| Size | 1.1 MB | 676 KB | 80 KB | 3.6 MB | 95 KB | 99 KB | 256 KB | 87 KB | 436 KB | 12 MB | 80 KB | 1.5 MB | 556 KB | 2.2 MB | 369 KB | 3.6 MB | 2.6 MB | 1.8 MB | 15 MB | 1.1 MB | 13 MB | 5.4 MB | 249 KB | 2.6 MB | 300 KB | 674 KB | 102 KB |
| Chans | stereo | mono | mono | mono | mono | mono | mono | mono | mono | mono | mono | stereo | stereo (8 ms Haas) | mono | mono | stereo | mono | stereo | stereo | stereo | stereo | stereo | stereo | mono | mono | stereo | mono |
| Key | A minor | A minor | A minor | A minor | A minor | D minor | A minor | ? | A minor | D minor | A minor | A minor | A minor | A minor | C minor | A minor | A minor | A minor | A minor | E minor | A minor | A minor | A minor | ? | A minor | A minor | A minor |
| BPM | 120 | 100 | ~120 | 132 | ~171 | 120 | 150 | ? | 120 | 110 | 100 | 96 | 116 | ~171 (comment says 86; buggy) | 100 | 120 → 80 (ritardando) | 132 | 126 | 118 | 120 | 104 | 124 | 126 | ? | 100 | 128 | 108 |
| Tempo def | BPM=120 → BEAT=60/BPM | BPM=100 → beat=60/BPM | hardcoded sec/note | BPM=132 → BEAT=60/BPM | magic beat=0.35 | hardcoded sec/note | magic DURATION_BEAT=0.4 | ? | TEMPO=120 | BPM=110 | BPM=100 → beat=60/BPM | BPM=96 → BEAT=60/BPM | BPM=116 → BEAT=60/BPM | magic 0.35 s/note | BPM=100 → BEAT=60/BPM | BPM=120 + per-bar TEMPO_CHANGES, eighth-note clock | BPM=132 → beat_dur() | BPM=126 → BEAT=60/BPM | BPM=118 → BEAT=60/BPM | BPM=120 → BEAT=60/BPM | BPM=104 → BEAT=60/BPM | BPM=124 | BPM=126 | ? | bpm=100 | BPM=128 → BEAT=60/BPM | BPM=108 → beat=60/BPM |
| Melody | (note, dur), PHRASE_A/CHORUS lists | (note, beats) | (note, dur_sec) | (note, beats) w/ W/H/Q constants | (note, beats) | (note, dur_sec) | (note, beats) | ? | (freq_Hz, beats) inlined | (note, beats), VERSE/CHORUS sections | (note, beats) | (note, beats) phrases, None = rest | (note, beats), verse + chorus | (note, beats) | (freq_Hz, beats) via nf() | (note, eighths) LINE_A/B/END, 2-bar lines | (note, octave, beats) | (note, beats), asserted 64 beats | (offset, dur, note) | (note, beats) | (note, beats), verse+refrain | (note, beats) | (note, beats) | ? | (note, beats), melody*2 | (note, beats), VERSE + per-bar chords | (note, beats) |
| Synth | 3 detuned saw lead + Karplus-Strong guitar | additive 5 harm. + ADSR | sine + 2,3 harm. | sine + harm. + vibrato | sine + 2,3 harm. | sine + 4 harm. | sine + 2 harm. | ? | sine (lead) + triangle (bass) | sine + 5 harm. | sine + 4 harm. + ADSR | detuned drawbar organ + Karplus-Strong pluck + LP saw pad | 0.6 saw + 0.4 square lead, exp decay | sine + oct/5th/2oct harm. | whistle sine + 2,3 harm. + ADSR; saw/sine harmony a 3rd up | detuned 8-harm. saw stack, LPF in chorus; music-box timbre in v3 | sine + 4 harm. + ADSR (sample-by-sample loops) | detuned accordion reeds + mandolin pluck | reed/softreed additive + ADSR | clarinet/accordion additive + pad + pluck | sine+triangle hybrid + pad | accordion additive + bellows tremolo | sine + 3 harm. (lead), 2 harm. (bass) | ? | pure sine | accordion: 3 detuned additive reeds + ADSR | additive 5 harm. + ADSR/decay |
| Vibrato | ✓ (ramps in) | — | — | ✓ | — | — | — | ? | — | — | — | — | — | ✓ (cumulative-phase FM) | ✓ (5.5 Hz) | ✓ (delayed, resampling) | — | ✓ (+ tremolo) | ✓ | ✓ | ✓ (light) | ✓ | ✓ | ? | — | ✓ (delayed) | — |
| Bass | ✓ (root + fifth walk) | — | — | ✓ | — | — | — | ? | ✓ (triangle) | ✓ (downbeat) | ✓ (quarter-note A/E) | ✓ (walking, E7→B2) | ✓ (triangle, half notes) | — | ✓ (half-note roots) | ✓ (sine+tri oom-pah) | ✓ (sine + 2nd harm., Am/Dm/E roots) | ✓ (upright-ish oom-pah) | ✓ | — (chords cover low end) | ✓ (walking root/fifth) | ✓ (oom-pah) | ✓ | ? | — | ✓ (triangle oom) | ✓ (sine A/E roots) |
| Chords | ✓ (Am/Dm/E7 K-S strums + arps) | ✓ (Am/E/Dm pad) | — | ✓ (Am–Dm–E7–Am pad) | — | — | — | ? | — (bass only) | ✓ (Dm/Gm/A, auto-inferred) | — (bass only) | ✓ (Am/E7/C/G strums + pad) | — (bass roots Am/C/D/E only) | — | ✓ (Cm/Ab/G/Fm rolled strums) | ✓ (Am/E7/Dm plucky stabs, left-panned) | ✓ (power-chord strums on off-beats) | ✓ (Am/Dm/E7 oom-pah + mandolin) | ✓ (Am/Dm/E7 pad) | ✓ (Em/D/G/Am/B + arps) | ✓ (Am/G/C/E7 pad) | ✓ (Am/Dm/E7 stabs) | ✓ (Am/F/G/E triads) | ? | — | ✓ (Am/Dm/E7 square-ish pah) | — |
| Drums | ✓ (noise shakers) | — | — | — | — | — | — | ? | — | — | — | ✓ (kick/frame drum/brushed hat) | ✓ (noise hits every beat) | — | ✓ (kick + hat) | ✓ (kick/snare/hat) | — | ✓ (kick/brush/tambourine) | ✓ (kick + noise hits) | ✓ (kick/snare/hat) | ✓ (kick/snare/hat) | ✓ (deterministic pseudo-noise hits) | — | ? | — | ✓ (kick/snare) | — |
| FX | ✓ (Schroeder reverb, pan) | — | — | — | — | — | — | ? | — | — | ✓ (convolution reverb) | ✓ (Schroeder reverb, tanh saturation, Haas widening) | ✓ (tanh soft clip) | ✓ (comb-filter) | ✓ (slap-back echo, limiter) | ✓ (echo, pan) | — | ✓ (7-tap room reflections, pan) | ✓ (equal-power pan, ambience) | fade in/out | octave shimmer, pan law | ✓ (two-tap echo) | — | ? | — | ✓ (Schroeder reverb, pan, fade) | fade-out tail |
| Structure | intro + 2 stanzas (octave-up 2nd chorus) + outro | verse + chorus once | verse + chorus once | ~3 verse+chorus reps | ~2 verse+chorus reps | verse+chorus w/ repeat | multi verse+chorus | ? | verse+chorus | VERSE; VERSE2; CHORUS; CHORUS2 | verse + chorus | intro + 3 verses + outro | verse+chorus ×2 | long freeform A-min | 2 verses + chorus ×2 | intro + v1 + v2 + octave chorus + v3 + outro w/ fermata | single pass | 4-bar intro + 2×16-bar verses + 4-bar ending | intro + 4 melody statements + outro | 3 phrases + climactic refrain | verse+refrain ×2 | 2 phrases w/ rests | ~2 verse passes | ? | melody literally doubled | intro + verse + verse w/ ±octave doubling + tag | single verse+chorus pass |
| Other | HTML test page, WAV→MP3 @192k | WAV→MP3 @192k | — | longest pure-Python pipeline | — | — | HTML test page + README | cleaned up workdir | HTML player page | auto-derives chords from melody | WAV→MP3, light reverb | rendered a spectrogram PNG to self-check; slowest (~10 min) | shortest script (91 lines), 25 s | HTML test page | only non-A/D/E key; Node decode check | only one with tempo changes; longest (155 s) | tried to start its own server on :8000; never posted a summary | wrote DESIGN.md + JSON render report; longest (80 s) | layered finale, seeded | streaming render, WAV→MP3 | octave shadow at phrase ends | panning, fade in/out | 3 tracks summed | cleaned up workdir | simplest possible | WAV→MP3 VBR | tail fade, WAV→MP3 |
Two models (haiku-4.5 and gpt-5.3-codex) cleaned up their working directories so some details are unknown.