{
 "timestamp": "2026-06-18T15:15:35.656Z",
 "code": "# Source: https://in-thread.sonic-pi.net/t/lofi-hip-hop-creation/9432\n# Author: boda\n# Title: Lofi hip hop creation\n# Captured: 2026-04-24\n\n# lo-fi\nuse_bpm 60\n\nchords =\n [\n (chord_degree :iv, :C4, :major),\n (chord_degree :iii, :C4, :major),\n (chord_degree :ii, :C4, :major),\n chord(:C4, :major7),\n chord(:C4, :major7),\n ]\n\nlive_loop :chord do\n use_synth :piano\n play chords.tick, decay: 2\n sleep 2\n play chords.tick, decay: 2\n sleep 2\n play chords.tick, decay: 2\n sleep 2\n play chords.tick, decay: 1\n sleep 1\n play chords.tick, decay: 1\n sleep 1\nend\n\nwith_fx :distortion do\n with_fx :lpf do\n\n live_loop :bass do\n use_synth :subpulse\n play chords.tick[-1], decay: 2, amp: 0.1\n sleep 2\n play chords.tick[-1], decay: 2, amp: 0.1\n sleep 2\n play chords.tick[-1], decay: 2, amp: 0.1\n sleep 2\n play chords.tick[-1], decay: 1, amp: 0.1\n sleep 1\n play chords.tick[-1], decay: 1, amp: 0.1\n sleep 1\n end\n end\nend\n\nhats = [1,0,1,0] * 4\nlive_loop :hats do\n sample :hat_bdu if hats.tick == 1\n sleep 0.25\nend\n\ntom = [1,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0]\nlive_loop :clap do\n sample :tabla_ghe1, amp: 0.5 if tom.tick == 1\n sleep 0.5 / 2\nend\n\npattern = [1,0,1,1]\nlive_loop :test do\n sample :perc_snap2, amp: 0.5 if pattern.tick == 1\n sleep 1\nend\n\nwith_fx :bitcrusher do\n live_loop :melody do\n use_synth :kalimba\n use_random_seed 4\n for _ in 1..8 do\n play chord(:F, :major7), amp: 5\n sleep [0.25, 0.25, 0.5, 1].choose\n end\n end\nend\n",
 "duration": 30000,
 "name": "comm-in-thread-forum__46_lofi_hip_hop",
 "desktop": {
 "wavPath": "/Users/mrityunjaybhardwaj/Documents/projects/sonicPiWeb/.captures/desktop-recordings/desktop_2026-06-18T15-14-19-287Z_comm-in-thread-forum__46_lofi_hip_hop.wav",
 "stats": {
 "duration": 31.370666666666665,
 "peak": 0.3908,
 "rms": 0.0525,
 "clipping": 0,
 "sampleRate": 48000,
 "channels": 2
 },
 "ok": true,
 "pitch": {
 "count": 79,
 "median_spacing_s": 0.28,
 "midi": [
 41,
 45,
 41,
 45,
 40,
 45,
 41,
 40,
 43,
 43,
 43,
 43,
 43,
 43,
 41,
 41,
 40,
 47,
 40,
 40,
 41,
 41,
 45,
 41,
 45,
 41,
 45,
 40,
 45,
 40,
 43,
 43,
 43,
 43,
 43,
 48,
 43,
 41,
 41,
 40,
 47,
 40,
 40,
 41,
 40,
 41,
 40,
 45,
 41,
 45,
 41,
 40,
 43,
 43,
 43,
 43,
 41,
 41,
 40,
 47,
 40,
 40,
 41,
 41,
 45,
 41,
 45,
 45,
 41,
 45,
 40,
 43,
 43,
 43,
 43,
 43,
 43,
 41,
 41
 ],
 "pc": [
 5,
 9,
 5,
 9,
 4,
 9,
 5,
 4,
 7,
 7,
 7,
 7,
 7,
 7,
 5,
 5,
 4,
 11,
 4,
 4,
 5,
 5,
 9,
 5,
 9,
 5,
 9,
 4,
 9,
 4,
 7,
 7,
 7,
 7,
 7,
 0,
 7,
 5,
 5,
 4,
 11,
 4,
 4,
 5,
 4,
 5,
 4,
 9,
 5,
 9,
 5,
 4,
 7,
 7,
 7,
 7,
 5,
 5,
 4,
 11,
 4,
 4,
 5,
 5,
 9,
 5,
 9,
 9,
 5,
 9,
 4,
 7,
 7,
 7,
 7,
 7,
 7,
 5,
 5
 ],
 "names": [
 "F2",
 "A2",
 "F2",
 "A2",
 "E2",
 "A2",
 "F2",
 "E2",
 "G2",
 "G2",
 "G2",
 "G2",
 "G2",
 "G2",
 "F2",
 "F2",
 "E2",
 "B2",
 "E2",
 "E2",
 "F2",
 "F2",
 "A2",
 "F2",
 "A2",
 "F2",
 "A2",
 "E2",
 "A2",
 "E2",
 "G2",
 "G2",
 "G2",
 "G2",
 "G2",
 "C3",
 "G2",
 "F2",
 "F2",
 "E2",
 "B2",
 "E2",
 "E2",
 "F2",
 "E2",
 "F2",
 "E2",
 "A2",
 "F2",
 "A2",
 "F2",
 "E2",
 "G2",
 "G2",
 "G2",
 "G2",
 "F2",
 "F2",
 "E2",
 "B2",
 "E2",
 "E2",
 "F2",
 "F2",
 "A2",
 "F2",
 "A2",
 "A2",
 "F2",
 "A2",
 "E2",
 "G2",
 "G2",
 "G2",
 "G2",
 "G2",
 "G2",
 "F2",
 "F2"
 ],
 "method": "contour",
 "confidence": 0.91,
 "inconclusive": false,
 "compare": "pitch_class"
 }
 },
 "web": {
 "wavPath": "/Users/mrityunjaybhardwaj/Documents/projects/sonicPiWeb/.captures/2026-06-18T15-14-20-505Z_inline_audio.wav",
 "stats": {
 "duration": 29.696,
 "peak": 0.2359,
 "rms": 0.0312,
 "clipping": 0,
 "sampleRate": 48000,
 "channels": 2
 },
 "ok": true,
 "pitch": {
 "count": 82,
 "median_spacing_s": 0.23,
 "midi": [
 41,
 41,
 45,
 40,
 45,
 40,
 43,
 43,
 41,
 43,
 50,
 43,
 43,
 50,
 43,
 41,
 47,
 41,
 40,
 40,
 47,
 40,
 40,
 47,
 40,
 41,
 45,
 40,
 43,
 43,
 52,
 43,
 43,
 43,
 41,
 41,
 40,
 41,
 47,
 40,
 40,
 41,
 40,
 41,
 41,
 40,
 45,
 41,
 40,
 43,
 50,
 43,
 43,
 43,
 46,
 41,
 47,
 41,
 40,
 40,
 47,
 40,
 40,
 41,
 41,
 45,
 41,
 45,
 40,
 45,
 40,
 45,
 45,
 40,
 43,
 43,
 43,
 43,
 43,
 43,
 43,
 41
 ],
 "pc": [
 5,
 5,
 9,
 4,
 9,
 4,
 7,
 7,
 5,
 7,
 2,
 7,
 7,
 2,
 7,
 5,
 11,
 5,
 4,
 4,
 11,
 4,
 4,
 11,
 4,
 5,
 9,
 4,
 7,
 7,
 4,
 7,
 7,
 7,
 5,
 5,
 4,
 5,
 11,
 4,
 4,
 5,
 4,
 5,
 5,
 4,
 9,
 5,
 4,
 7,
 2,
 7,
 7,
 7,
 10,
 5,
 11,
 5,
 4,
 4,
 11,
 4,
 4,
 5,
 5,
 9,
 5,
 9,
 4,
 9,
 4,
 9,
 9,
 4,
 7,
 7,
 7,
 7,
 7,
 7,
 7,
 5
 ],
 "names": [
 "F2",
 "F2",
 "A2",
 "E2",
 "A2",
 "E2",
 "G2",
 "G2",
 "F2",
 "G2",
 "D3",
 "G2",
 "G2",
 "D3",
 "G2",
 "F2",
 "B2",
 "F2",
 "E2",
 "E2",
 "B2",
 "E2",
 "E2",
 "B2",
 "E2",
 "F2",
 "A2",
 "E2",
 "G2",
 "G2",
 "E3",
 "G2",
 "G2",
 "G2",
 "F2",
 "F2",
 "E2",
 "F2",
 "B2",
 "E2",
 "E2",
 "F2",
 "E2",
 "F2",
 "F2",
 "E2",
 "A2",
 "F2",
 "E2",
 "G2",
 "D3",
 "G2",
 "G2",
 "G2",
 "A#2",
 "F2",
 "B2",
 "F2",
 "E2",
 "E2",
 "B2",
 "E2",
 "E2",
 "F2",
 "F2",
 "A2",
 "F2",
 "A2",
 "E2",
 "A2",
 "E2",
 "A2",
 "A2",
 "E2",
 "G2",
 "G2",
 "G2",
 "G2",
 "G2",
 "G2",
 "G2",
 "F2"
 ],
 "method": "contour",
 "confidence": 0.92,
 "inconclusive": false,
 "compare": "pitch_class"
 },
 "toolFailReason": null,
 "errors": []
 },
 "spectrogram": {
 "l2_mel_db": 14.824676513671875,
 "mfcc_distance": 130.59800720214844,
 "frames_compared": 2785,
 "spectrogram_png": "/Users/mrityunjaybhardwaj/Documents/projects/sonicPiWeb/.captures/compare_2026-06-18T15-14-56-438Z_comm-in-thread-forum__46_lofi_hip_hop_spectrogram.png",
 "desktop_peak_freq_hz": 331.0098605916355,
 "web_peak_freq_hz": 350.7543103448276,
 "per_beat": null
 },
 "spectrogramError": null,
 "reportPath": "/Users/mrityunjaybhardwaj/Documents/projects/sonicPiWeb/.captures/compare_2026-06-18T15-14-56-438Z_comm-in-thread-forum__46_lofi_hip_hop.md",
 "reconciledPitch": null,
 "eventParity": {
 "report": {
 "verdict": "STRUCTURE-MATCH",
 "isPrng": true,
 "reasons": [
 "Significant layers present on both sides (PRNG piece — counts/choices vary by ).",
 "Significant-layer first-appearance order differs (desktop: piano→basic_mono_player→basic_stereo_player→kalimba | web: piano→basic_stereo_player→kalimba→basic_mono_player) — common for PRNG layer selection."
 ],
 "rows": [
 {
 "synthdef": "sonic-pi-kalimba",
 "desktop": 236,
 "web": 236,
 "ratio": 1,
 "significant": true,
 "status": "match",
 "desktopOnset": 0,
 "webOnset": 0.005
 },
 {
 "synthdef": "sonic-pi-basic_mono_player",
 "desktop": 94,
 "web": 93,
 "ratio": 0.9893617021276596,
 "significant": true,
 "status": "match",
 "desktopOnset": 0,
 "webOnset": 0
 },
 {
 "synthdef": "sonic-pi-piano",
 "desktop": 80,
 "web": 76,
 "ratio": 0.95,
 "significant": true,
 "status": "match",
 "desktopOnset": 0,
 "webOnset": 0
 },
 {
 "synthdef": "sonic-pi-basic_stereo_player",
 "desktop": 24,
 "web": 23,
 "ratio": 0.9583333333333334,
 "significant": true,
 "status": "match",
 "desktopOnset": 0,
 "webOnset": 0
 },
 {
 "synthdef": "sonic-pi-subpulse",
 "desktop": 20,
 "web": 19,
 "ratio": 0.95,
 "significant": false,
 "status": "match",
 "desktopOnset": 0,
 "webOnset": 0
 }
 ],
 "fxRows": [
 {
 "synthdef": "sonic-pi-fx_distortion",
 "desktop": 1,
 "web": 1,
 "ratio": 1,
 "significant": false,
 "status": "match",
 "desktopOnset": 0,
 "webOnset": -2.007
 },
 {
 "synthdef": "sonic-pi-fx_lpf",
 "desktop": 1,
 "web": 1,
 "ratio": 1,
 "significant": false,
 "status": "match",
 "desktopOnset": 0,
 "webOnset": -2.007
 },
 {
 "synthdef": "sonic-pi-fx_bitcrusher",
 "desktop": 1,
 "web": 1,
 "ratio": 1,
 "significant": false,
 "status": "match",
 "desktopOnset": 0,
 "webOnset": -2.007
 }
 ],
 "desktopTotal": 454,
 "webTotal": 447,
 "totalRatio": 0.98,
 "orderMatch": false,
 "desktopOrder": [
 "piano",
 "basic_mono_player",
 "basic_stereo_player",
 "kalimba"
 ],
 "webOrder": [
 "piano",
 "basic_stereo_player",
 "kalimba",
 "basic_mono_player"
 ],
 "sequenceParity": {
 "match": true,
 "epsilonMs": 15,
 "notesChecked": true,
 "rows": [
 {
 "synthdef": "sonic-pi-kalimba",
 "desktopOnsets": [
 0,
 0,
 0,
 0,
 0.25,
 0.25,
 0.25,
 0.25,
 0.75,
 0.75,
 0.75,
 0.75,
 1.75,
 1.75,
 1.75,
 1.75,
 2.25,
 2.25,
 2.25,
 2.25,
 2.5,
 2.5,
 2.5,
 2.5,
 3.5,
 3.5,
 3.5,
 3.5,
 4,
 4,
 4,
 4,
 4.25,
 4.25,
 4.25,
 4.25,
 4.5,
 4.5,
 4.5,
 4.5,
 5,
 5,
 5,
 5,
 6,
 6,
 6,
 6,
 6.5,
 6.5,
 6.5,
 6.5,
 6.75,
 6.75,
 6.75,
 6.75,
 7.75,
 7.75,
 7.75,
 7.75,
 8.25,
 8.25,
 8.25,
 8.25,
 8.5,
 8.5,
 8.5,
 8.5,
 8.75,
 8.75,
 8.75,
 8.75,
 9.25,
 9.25,
 9.25,
 9.25,
 10.25,
 10.25,
 10.25,
 10.25,
 10.75,
 10.75,
 10.75,
 10.75,
 11,
 11,
 11,
 11,
 12,
 12,
 12,
 12,
 12.5,
 12.5,
 12.5,
 12.5,
 12.75,
 12.75,
 12.75,
 12.75,
 13,
 13,
 13,
 13,
 13.5,
 13.5,
 13.5,
 13.5,
 14.5,
 14.5,
 14.5,
 14.5,
 15,
 15,
 15,
 15,
 15.25,
 15.25,
 15.25,
 15.25,
 16.25,
 16.25,
 16.25,
 16.25,
 16.75,
 16.75,
 16.75,
 16.75,
 17,
 17,
 17,
 17,
 17.25,
 17.25,
 17.25,
 17.25,
 17.75,
 17.75,
 17.75,
 17.75,
 18.75,
 18.75,
 18.75,
 18.75,
 19.25,
 19.25,
 19.25,
 19.25,
 19.5,
 19.5,
 19.5,
 19.5,
 20.5,
 20.5,
 20.5,
 20.5,
 21,
 21,
 21,
 21,
 21.25,
 21.25,
 21.25,
 21.25,
 21.5,
 21.5,
 21.5,
 21.5,
 22,
 22,
 22,
 22,
 23,
 23,
 23,
 23,
 23.5,
 23.5,
 23.5,
 23.5,
 23.75,
 23.75,
 23.75,
 23.75,
 24.75,
 24.75,
 24.75,
 24.75,
 25.25,
 25.25,
 25.25,
 25.25,
 25.5,
 25.5,
 25.5,
 25.5,
 25.75,
 25.75,
 25.75,
 25.75,
 26.25,
 26.25,
 26.25,
 26.25,
 27.25,
 27.25,
 27.25,
 27.25,
 27.75,
 27.75,
 27.75,
 27.75,
 28,
 28,
 28,
 28,
 29,
 29,
 29,
 29,
 29.5,
 29.5,
 29.5,
 29.5,
 29.75,
 29.75,
 29.75,
 29.75,
 30,
 30,
 30,
 30,
 30.5,
 30.5,
 30.5,
 30.5
 ],
 "webOnsets": [
 0.005,
 0.005,
 0.005,
 0.005,
 0.255,
 0.255,
 0.255,
 0.255,
 0.755,
 0.755,
 0.755,
 0.755,
 1.755,
 1.755,
 1.755,
 1.755,
 2.255,
 2.255,
 2.255,
 2.255,
 2.505,
 2.505,
 2.505,
 2.505,
 3.505,
 3.505,
 3.505,
 3.505,
 4.005,
 4.005,
 4.005,
 4.005,
 4.255,
 4.255,
 4.255,
 4.255,
 4.505,
 4.505,
 4.505,
 4.505,
 5.005,
 5.005,
 5.005,
 5.005,
 6.005,
 6.005,
 6.005,
 6.005,
 6.505,
 6.505,
 6.505,
 6.505,
 6.755,
 6.755,
 6.755,
 6.755,
 7.755,
 7.755,
 7.755,
 7.755,
 8.255,
 8.255,
 8.255,
 8.255,
 8.505,
 8.505,
 8.505,
 8.505,
 8.755,
 8.755,
 8.755,
 8.755,
 9.255,
 9.255,
 9.255,
 9.255,
 10.255,
 10.255,
 10.255,
 10.255,
 10.755,
 10.755,
 10.755,
 10.755,
 11.005,
 11.005,
 11.005,
 11.005,
 12.005,
 12.005,
 12.005,
 12.005,
 12.505,
 12.505,
 12.505,
 12.505,
 12.755,
 12.755,
 12.755,
 12.755,
 13.005,
 13.005,
 13.005,
 13.005,
 13.505,
 13.505,
 13.505,
 13.505,
 14.505,
 14.505,
 14.505,
 14.505,
 15.005,
 15.005,
 15.005,
 15.005,
 15.255,
 15.255,
 15.255,
 15.255,
 16.255,
 16.255,
 16.255,
 16.255,
 16.755,
 16.755,
 16.755,
 16.755,
 17.005,
 17.005,
 17.005,
 17.005,
 17.255,
 17.255,
 17.255,
 17.255,
 17.755,
 17.755,
 17.755,
 17.755,
 18.755,
 18.755,
 18.755,
 18.755,
 19.255,
 19.255,
 19.255,
 19.255,
 19.505,
 19.505,
 19.505,
 19.505,
 20.505,
 20.505,
 20.505,
 20.505,
 21.005,
 21.005,
 21.005,
 21.005,
 21.255,
 21.255,
 21.255,
 21.255,
 21.505,
 21.505,
 21.505,
 21.505,
 22.005,
 22.005,
 22.005,
 22.005,
 23.005,
 23.005,
 23.005,
 23.005,
 23.505,
 23.505,
 23.505,
 23.505,
 23.755,
 23.755,
 23.755,
 23.755,
 24.755,
 24.755,
 24.755,
 24.755,
 25.255,
 25.255,
 25.255,
 25.255,
 25.505,
 25.505,
 25.505,
 25.505,
 25.755,
 25.755,
 25.755,
 25.755,
 26.255,
 26.255,
 26.255,
 26.255,
 27.255,
 27.255,
 27.255,
 27.255,
 27.755,
 27.755,
 27.755,
 27.755,
 28.005,
 28.005,
 28.005,
 28.005,
 29.005,
 29.005,
 29.005,
 29.005,
 29.505,
 29.505,
 29.505,
 29.505,
 29.755,
 29.755,
 29.755,
 29.755,
 30.005,
 30.005,
 30.005,
 30.005,
 30.505,
 30.505,
 30.505,
 30.505
 ],
 "comparedLen": 236,
 "timingMatched": true,
 "firstMismatchIdx": -1,
 "maxDevMs": 5,
 "noteMatched": true,
 "matched": true
 },
 {
 "synthdef": "sonic-pi-basic_mono_player",
 "desktopOnsets": [
 0,
 0,
 0.5,
 1,
 1.5,
 1.5,
 2,
 2.5,
 2.75,
 3,
 3.5,
 3.5,
 4,
 4,
 4.5,
 5,
 5.5,
 5.5,
 6,
 6.5,
 6.75,
 7,
 7.5,
 7.5,
 8,
 8,
 8.5,
 9,
 9.5,
 9.5,
 10,
 10.5,
 10.75,
 11,
 11.5,
 11.5,
 12,
 12,
 12.5,
 13,
 13.5,
 13.5,
 14,
 14.5,
 14.75,
 15,
 15.5,
 15.5,
 16,
 16,
 16.5,
 17,
 17.5,
 17.5,
 18,
 18.5,
 18.75,
 19,
 19.5,
 19.5,
 20,
 20,
 20.5,
 21,
 21.5,
 21.5,
 22,
 22.5,
 22.75,
 23,
 23.5,
 23.5,
 24,
 24,
 24.5,
 25,
 25.5,
 25.5,
 26,
 26.5,
 26.75,
 27,
 27.5,
 27.5,
 28,
 28,
 28.5,
 29,
 29.5,
 29.5,
 30,
 30.5,
 30.75,
 31
 ],
 "webOnsets": [
 0,
 0,
 0.5,
 1,
 1.5,
 1.5,
 2,
 2.5,
 2.75,
 3,
 3.5,
 3.5,
 4,
 4,
 4.5,
 5,
 5.5,
 5.5,
 6,
 6.5,
 6.75,
 7,
 7.5,
 7.5,
 8,
 8,
 8.5,
 9,
 9.5,
 9.5,
 10,
 10.5,
 10.75,
 11,
 11.5,
 11.5,
 12,
 12,
 12.5,
 13,
 13.5,
 13.5,
 14,
 14.5,
 14.75,
 15,
 15.5,
 15.5,
 16,
 16,
 16.5,
 17,
 17.5,
 17.5,
 18,
 18.5,
 18.75,
 19,
 19.5,
 19.5,
 20,
 20,
 20.5,
 21,
 21.5,
 21.5,
 22,
 22.5,
 22.75,
 23,
 23.5,
 23.5,
 24,
 24,
 24.5,
 25,
 25.5,
 25.5,
 26,
 26.5,
 26.75,
 27,
 27.5,
 27.5,
 28,
 28,
 28.5,
 29,
 29.5,
 29.5,
 30,
 30.5,
 30.75
 ],
 "comparedLen": 93,
 "timingMatched": true,
 "firstMismatchIdx": -1,
 "maxDevMs": 0,
 "noteMatched": true,
 "matched": true
 },
 {
 "synthdef": "sonic-pi-piano",
 "desktopOnsets": [
 0,
 0,
 0,
 0,
 2,
 2,
 2,
 2,
 4,
 4,
 4,
 4,
 6,
 6,
 6,
 6,
 7,
 7,
 7,
 7,
 8,
 8,
 8,
 8,
 10,
 10,
 10,
 10,
 12,
 12,
 12,
 12,
 14,
 14,
 14,
 14,
 15,
 15,
 15,
 15,
 16,
 16,
 16,
 16,
 18,
 18,
 18,
 18,
 20,
 20,
 20,
 20,
 22,
 22,
 22,
 22,
 23,
 23,
 23,
 23,
 24,
 24,
 24,
 24,
 26,
 26,
 26,
 26,
 28,
 28,
 28,
 28,
 30,
 30,
 30,
 30,
 31,
 31,
 31,
 31
 ],
 "webOnsets": [
 0,
 0,
 0,
 0,
 2,
 2,
 2,
 2,
 4,
 4,
 4,
 4,
 6,
 6,
 6,
 6,
 7,
 7,
 7,
 7,
 8,
 8,
 8,
 8,
 10,
 10,
 10,
 10,
 12,
 12,
 12,
 12,
 14,
 14,
 14,
 14,
 15,
 15,
 15,
 15,
 16,
 16,
 16,
 16,
 18,
 18,
 18,
 18,
 20,
 20,
 20,
 20,
 22,
 22,
 22,
 22,
 23,
 23,
 23,
 23,
 24,
 24,
 24,
 24,
 26,
 26,
 26,
 26,
 28,
 28,
 28,
 28,
 30,
 30,
 30,
 30
 ],
 "comparedLen": 76,
 "timingMatched": true,
 "firstMismatchIdx": -1,
 "maxDevMs": 0,
 "noteMatched": true,
 "matched": true
 },
 {
 "synthdef": "sonic-pi-basic_stereo_player",
 "desktopOnsets": [
 0,
 2,
 3,
 4,
 6,
 7,
 8,
 10,
 11,
 12,
 14,
 15,
 16,
 18,
 19,
 20,
 22,
 23,
 24,
 26,
 27,
 28,
 30,
 31
 ],
 "webOnsets": [
 0,
 2,
 3,
 4,
 6,
 7,
 8,
 10,
 11,
 12,
 14,
 15,
 16,
 18,
 19,
 20,
 22,
 23,
 24,
 26,
 27,
 28,
 30
 ],
 "comparedLen": 23,
 "timingMatched": true,
 "firstMismatchIdx": -1,
 "maxDevMs": 0,
 "noteMatched": true,
 "matched": true
 }
 ],
 "reasons": [
 "kalimba: 236 onsets match within ε (max Δ 5ms), notes match",
 "basic_mono_player: 93 onsets match within ε (max Δ 0ms), notes match",
 "piano: 76 onsets match within ε (max Δ 0ms), notes match",
 "basic_stereo_player: 23 onsets match within ε (max Δ 0ms), notes match"
 ]
 }
 },
 "note": "STRUCTURE-MATCH · onset-seq match · d454/w447"
 }
}