From bb2c6c4728b12b3dc6fa832b74c93f0cd69de59e Mon Sep 17 00:00:00 2001 From: davay42 Date: Mon, 20 May 2024 18:58:27 +0000 Subject: [PATCH] deploy: 2bdbfb566d30613f8f73a56402d7cd91905d64c0 --- 404.html | 2 +- README.html | 4 +- ableton/index.html | 8 +-- acid-machine-2/index.html | 8 +-- aqwertyon/index.html | 8 +-- ...E.md.D9FcETfF.js => README.md.C9Wu_do9.js} | 2 +- ...TfF.lean.js => README.md.C9Wu_do9.lean.js} | 2 +- ...4KKF7N.js => ableton_index.md.DZBvrMY6.js} | 2 +- ...n.js => ableton_index.md.DZBvrMY6.lean.js} | 2 +- ...js => acid-machine-2_index.md.fdaF3_po.js} | 2 +- ... acid-machine-2_index.md.fdaF3_po.lean.js} | 2 +- ...lWSG.js => aqwertyon_index.md.CgYlagfO.js} | 2 +- ...js => aqwertyon_index.md.CgYlagfO.lean.js} | 2 +- ...uth.md.D0LWfyqF.js => auth.md.BhfyOX0C.js} | 2 +- ...WfyqF.lean.js => auth.md.BhfyOX0C.lean.js} | 2 +- ...Fnf3Jp_6.js => auth_accept.md.DucFg5Gq.js} | 2 +- ...ean.js => auth_accept.md.DucFg5Gq.lean.js} | 2 +- ....QeBiS1Uo.js => auth_index.md.CCxxwTF6.js} | 2 +- ...lean.js => auth_index.md.CCxxwTF6.lean.js} | 2 +- ...DdrEzK2j.js => auth_invite.md.DYCxXOu5.js} | 2 +- ...ean.js => auth_invite.md.DYCxXOu5.lean.js} | 2 +- ...Cewl1AND.js => auth_logout.md.Ck5mdKg9.js} | 2 +- ...ean.js => auth_logout.md.Ck5mdKg9.lean.js} | 2 +- ....DcV3kbsy.js => auth_reset.md.OAZjQyas.js} | 2 +- ...lean.js => auth_reset.md.OAZjQyas.lean.js} | 2 +- ...kSoO4E.js => bassoon_index.md.DfJY8utO.js} | 2 +- ...n.js => bassoon_index.md.DfJY8utO.lean.js} | 2 +- ...BRBmfz.js => beepbox_index.md.CO50im6t.js} | 2 +- ...n.js => beepbox_index.md.CO50im6t.lean.js} | 2 +- ...uXVPq.js => blokdust_index.md.DjRxTR6L.js} | 2 +- ....js => blokdust_index.md.DjRxTR6L.lean.js} | 2 +- ...s => cardboard-synth_index.md.BWDkKcYV.js} | 2 +- ...cardboard-synth_index.md.BWDkKcYV.lean.js} | 2 +- assets/cardinal_index.md.ClbFNEJu.js | 1 + assets/cardinal_index.md.ClbFNEJu.lean.js | 1 + ...nEa.js => chrome-lab_index.md.BtLHLke3.js} | 2 +- ...s => chrome-lab_index.md.BtLHLke3.lean.js} | 2 +- assets/chunks/SynthPage.B19zwNJN.js | 1 + assets/chunks/SynthPage.DHgkhPru.js | 1 - ...js => disco-computer_index.md.T_rL6HPy.js} | 2 +- ... disco-computer_index.md.T_rL6HPy.lean.js} | 2 +- ...cP1vy.js => dotpiano_index.md.B4corNww.js} | 2 +- ....js => dotpiano_index.md.B4corNww.lean.js} | 2 +- ...d.CTqZumAe.js => dx7_index.md.8RoJDeWM.js} | 2 +- ....lean.js => dx7_index.md.8RoJDeWM.lean.js} | 2 +- ...PnD.js => elementary_index.md.DjWMsgrh.js} | 2 +- ...s => elementary_index.md.DjWMsgrh.lean.js} | 2 +- ...k.js => groove-pizza_index.md.Ddx5mffv.js} | 2 +- ...=> groove-pizza_index.md.Ddx5mffv.lean.js} | 2 +- assets/index.md.Bp19cI6y.js | 1 + assets/index.md.Bp19cI6y.lean.js | 1 + assets/index.md.C7QfLb-F.js | 1 - assets/index.md.C7QfLb-F.lean.js | 1 - ...c9U.js => isleoftune_index.md.CjvOwWsY.js} | 2 +- ...s => isleoftune_index.md.CjvOwWsY.lean.js} | 2 +- ...ewMMo.js => juno-106_index.md.Cei-yIZ_.js} | 2 +- ....js => juno-106_index.md.Cei-yIZ_.lean.js} | 2 +- ... meet-the-heisenberg_index.md.COSkv5m_.js} | 2 +- ...-the-heisenberg_index.md.COSkv5m_.lean.js} | 2 +- ...WcW.js => microtonal_index.md.7zjrkP34.js} | 2 +- ...s => microtonal_index.md.7zjrkP34.lean.js} | 2 +- ...lean.js => midi-city_index.md.quDpD-LH.js} | 2 +- ...js => midi-city_index.md.quDpD-LH.lean.js} | 2 +- ...idi-driven-web-audio_index.md.BHLhzMEc.js} | 2 +- ...riven-web-audio_index.md.BHLhzMEc.lean.js} | 2 +- ...qCk-.js => mod-synth_index.md.C9QKok6-.js} | 2 +- ...js => mod-synth_index.md.C9QKok6-.lean.js} | 2 +- ...ultiplayer-orchestra_index.md.B-NHU8MY.js} | 2 +- ...layer-orchestra_index.md.B-NHU8MY.lean.js} | 2 +- ...=> multiplayer-piano_index.md.C8sFZ0Lc.js} | 2 +- ...ltiplayer-piano_index.md.C8sFZ0Lc.lean.js} | 2 +- ...qgXgG.js => muted-io_index.md.C_wNdUY3.js} | 2 +- ....js => muted-io_index.md.C_wNdUY3.lean.js} | 2 +- ....js => note-sculptor_index.md.qRvnP-u9.js} | 2 +- ...> note-sculptor_index.md.qRvnP-u9.lean.js} | 2 +- ....zz29iYg5.js => nv-1_index.md.DLCJmm76.js} | 2 +- ...lean.js => nv-1_index.md.DLCJmm76.lean.js} | 2 +- ...KR.js => olif-sy-1-k_index.md.BusScNUQ.js} | 2 +- ... => olif-sy-1-k_index.md.BusScNUQ.lean.js} | 2 +- ....CL84VQWW.js => omni_index.md.COPXpr4K.js} | 2 +- ...lean.js => omni_index.md.COPXpr4K.lean.js} | 2 +- ... => online-sequencer_index.md.CD43l8x6.js} | 2 +- ...nline-sequencer_index.md.CD43l8x6.lean.js} | 2 +- ...9_.js => pixel-synth_index.md.DP2JcS10.js} | 2 +- ... => pixel-synth_index.md.DP2JcS10.lean.js} | 2 +- ...qZb-L.js => roland50_index.md.BrTX2pyE.js} | 2 +- ....js => roland50_index.md.BrTX2pyE.lean.js} | 2 +- ...k.js => sample-stich_index.md.CNvttCPH.js} | 2 +- ...=> sample-stich_index.md.CNvttCPH.lean.js} | 2 +- ...lean.js => sound-box_index.md.SIPDrKZA.js} | 2 +- ...js => sound-box_index.md.SIPDrKZA.lean.js} | 2 +- ...tG4.js => sound-trap_index.md.DeUmGQYN.js} | 2 +- ...s => sound-trap_index.md.DeUmGQYN.lean.js} | 2 +- ...-Ban.js => soundfont_index.md.OAkXv37o.js} | 2 +- ...js => soundfont_index.md.OAkXv37o.lean.js} | 2 +- ...QB.js => sympathetic_index.md.CdbkUUzW.js} | 2 +- ... => sympathetic_index.md.CdbkUUzW.lean.js} | 2 +- ...T.js => tanguy-synth_index.md.CmH5Xcd1.js} | 2 +- ...=> tanguy-synth_index.md.CmH5Xcd1.lean.js} | 2 +- ...XJJN1.js => theremin_index.md.CXNtky1n.js} | 2 +- ....js => theremin_index.md.CXNtky1n.lean.js} | 2 +- ....js => touch-pianist_index.md.EQqcc00y.js} | 2 +- ...> touch-pianist_index.md.EQqcc00y.lean.js} | 2 +- ...04O2GJ.js => touchme_index.md.DQ8XRIQ7.js} | 2 +- ...n.js => touchme_index.md.DQ8XRIQ7.lean.js} | 2 +- ...ps.js => typedrummer_index.md.DDcMGeRo.js} | 2 +- ... => typedrummer_index.md.DDcMGeRo.lean.js} | 2 +- ....js => video-sampler_index.md.Fp916520.js} | 2 +- ...> video-sampler_index.md.Fp916520.lean.js} | 2 +- ....js => virtual-piano_index.md.CVkX-1m_.js} | 2 +- ...> virtual-piano_index.md.CVkX-1m_.lean.js} | 2 +- ...1Le1y.js => waveform_index.md.BMgbw7Z5.js} | 2 +- ....js => waveform_index.md.BMgbw7Z5.lean.js} | 2 +- ...> web-audio-synth-v2_index.md.mytGv9SF.js} | 2 +- ...-audio-synth-v2_index.md.mytGv9SF.lean.js} | 2 +- ...qJ.js => web-modular_index.md.CSZ2i0Av.js} | 2 +- ... => web-modular_index.md.CSZ2i0Av.lean.js} | 2 +- ...4SubTk.js => web-sid_index.md.Dr-XVffJ.js} | 2 +- ...n.js => web-sid_index.md.Dr-XVffJ.lean.js} | 2 +- auth.html | 4 +- auth/accept.html | 4 +- auth/index.html | 4 +- auth/invite.html | 4 +- auth/logout.html | 4 +- auth/reset.html | 4 +- bassoon/index.html | 8 +-- beepbox/index.html | 8 +-- blokdust/index.html | 8 +-- cardboard-synth/index.html | 8 +-- cardinal/index.html | 51 ++++++++++++++++++ chrome-lab/index.html | 8 +-- cover/cardinal.webp | Bin 0 -> 111284 bytes disco-computer/index.html | 8 +-- dotpiano/index.html | 8 +-- dx7/index.html | 8 +-- elementary/index.html | 8 +-- groove-pizza/index.html | 8 +-- hashmap.json | 2 +- index.html | 47 ++++++++++++---- isleoftune/index.html | 8 +-- juno-106/index.html | 8 +-- meet-the-heisenberg/index.html | 8 +-- microtonal/index.html | 8 +-- midi-city/index.html | 8 +-- midi-driven-web-audio/index.html | 8 +-- mod-synth/index.html | 8 +-- multiplayer-orchestra/index.html | 8 +-- multiplayer-piano/index.html | 8 +-- muted-io/index.html | 8 +-- note-sculptor/index.html | 8 +-- nv-1/index.html | 8 +-- olif-sy-1-k/index.html | 8 +-- omni/index.html | 8 +-- online-sequencer/index.html | 8 +-- pixel-synth/index.html | 8 +-- roland50/index.html | 8 +-- sample-stich/index.html | 8 +-- sitemap.xml | 2 +- sound-box/index.html | 8 +-- sound-trap/index.html | 8 +-- soundfont/index.html | 8 +-- sw.js | 2 +- sympathetic/index.html | 8 +-- tanguy-synth/index.html | 8 +-- theremin/index.html | 8 +-- touch-pianist/index.html | 8 +-- touchme/index.html | 8 +-- typedrummer/index.html | 8 +-- video-sampler/index.html | 8 +-- virtual-piano/index.html | 8 +-- waveform/index.html | 8 +-- web-audio-synth-v2/index.html | 8 +-- web-modular/index.html | 8 +-- web-sid/index.html | 8 +-- 174 files changed, 402 insertions(+), 320 deletions(-) rename assets/{README.md.D9FcETfF.js => README.md.C9Wu_do9.js} (92%) rename assets/{README.md.D9FcETfF.lean.js => README.md.C9Wu_do9.lean.js} (92%) rename assets/{ableton_index.md.Cg4KKF7N.js => ableton_index.md.DZBvrMY6.js} (93%) rename assets/{ableton_index.md.Cg4KKF7N.lean.js => ableton_index.md.DZBvrMY6.lean.js} (93%) rename assets/{acid-machine-2_index.md.Brd6Zwuh.js => acid-machine-2_index.md.fdaF3_po.js} (87%) rename assets/{acid-machine-2_index.md.Brd6Zwuh.lean.js => acid-machine-2_index.md.fdaF3_po.lean.js} (87%) rename assets/{aqwertyon_index.md.DeEJlWSG.js => aqwertyon_index.md.CgYlagfO.js} (96%) rename assets/{aqwertyon_index.md.DeEJlWSG.lean.js => aqwertyon_index.md.CgYlagfO.lean.js} (96%) rename assets/{auth.md.D0LWfyqF.js => auth.md.BhfyOX0C.js} (97%) rename assets/{auth.md.D0LWfyqF.lean.js => auth.md.BhfyOX0C.lean.js} (83%) rename assets/{auth_accept.md.Fnf3Jp_6.js => auth_accept.md.DucFg5Gq.js} (86%) rename assets/{auth_accept.md.Fnf3Jp_6.lean.js => auth_accept.md.DucFg5Gq.lean.js} (86%) rename assets/{auth_index.md.QeBiS1Uo.js => auth_index.md.CCxxwTF6.js} (98%) rename assets/{auth_index.md.QeBiS1Uo.lean.js => auth_index.md.CCxxwTF6.lean.js} (98%) rename assets/{auth_invite.md.DdrEzK2j.js => auth_invite.md.DYCxXOu5.js} (71%) rename assets/{auth_invite.md.DdrEzK2j.lean.js => auth_invite.md.DYCxXOu5.lean.js} (71%) rename assets/{auth_logout.md.Cewl1AND.js => auth_logout.md.Ck5mdKg9.js} (86%) rename assets/{auth_logout.md.Cewl1AND.lean.js => auth_logout.md.Ck5mdKg9.lean.js} (86%) rename assets/{auth_reset.md.DcV3kbsy.js => auth_reset.md.OAZjQyas.js} (86%) rename assets/{auth_reset.md.DcV3kbsy.lean.js => auth_reset.md.OAZjQyas.lean.js} (86%) rename assets/{bassoon_index.md.CtkSoO4E.js => bassoon_index.md.DfJY8utO.js} (88%) rename assets/{bassoon_index.md.CtkSoO4E.lean.js => bassoon_index.md.DfJY8utO.lean.js} (88%) rename assets/{beepbox_index.md.CnBRBmfz.js => beepbox_index.md.CO50im6t.js} (93%) rename assets/{beepbox_index.md.CnBRBmfz.lean.js => beepbox_index.md.CO50im6t.lean.js} (93%) rename assets/{blokdust_index.md.zxmuXVPq.js => blokdust_index.md.DjRxTR6L.js} (91%) rename assets/{blokdust_index.md.zxmuXVPq.lean.js => blokdust_index.md.DjRxTR6L.lean.js} (91%) rename assets/{cardboard-synth_index.md._wVYXrIB.js => cardboard-synth_index.md.BWDkKcYV.js} (88%) rename assets/{cardboard-synth_index.md._wVYXrIB.lean.js => cardboard-synth_index.md.BWDkKcYV.lean.js} (88%) create mode 100644 assets/cardinal_index.md.ClbFNEJu.js create mode 100644 assets/cardinal_index.md.ClbFNEJu.lean.js rename assets/{chrome-lab_index.md.BvBA9nEa.js => chrome-lab_index.md.BtLHLke3.js} (98%) rename assets/{chrome-lab_index.md.BvBA9nEa.lean.js => chrome-lab_index.md.BtLHLke3.lean.js} (94%) create mode 100644 assets/chunks/SynthPage.B19zwNJN.js delete mode 100644 assets/chunks/SynthPage.DHgkhPru.js rename assets/{disco-computer_index.md.DLthuX7U.js => disco-computer_index.md.T_rL6HPy.js} (88%) rename assets/{disco-computer_index.md.DLthuX7U.lean.js => disco-computer_index.md.T_rL6HPy.lean.js} (88%) rename assets/{dotpiano_index.md.BE4cP1vy.js => dotpiano_index.md.B4corNww.js} (93%) rename assets/{dotpiano_index.md.BE4cP1vy.lean.js => dotpiano_index.md.B4corNww.lean.js} (93%) rename assets/{dx7_index.md.CTqZumAe.js => dx7_index.md.8RoJDeWM.js} (87%) rename assets/{dx7_index.md.CTqZumAe.lean.js => dx7_index.md.8RoJDeWM.lean.js} (87%) rename assets/{elementary_index.md.BwvTZPnD.js => elementary_index.md.DjWMsgrh.js} (94%) rename assets/{elementary_index.md.BwvTZPnD.lean.js => elementary_index.md.DjWMsgrh.lean.js} (94%) rename assets/{groove-pizza_index.md.DJKiVzNk.js => groove-pizza_index.md.Ddx5mffv.js} (90%) rename assets/{groove-pizza_index.md.DJKiVzNk.lean.js => groove-pizza_index.md.Ddx5mffv.lean.js} (90%) create mode 100644 assets/index.md.Bp19cI6y.js create mode 100644 assets/index.md.Bp19cI6y.lean.js delete mode 100644 assets/index.md.C7QfLb-F.js delete mode 100644 assets/index.md.C7QfLb-F.lean.js rename assets/{isleoftune_index.md.DYO1xc9U.js => isleoftune_index.md.CjvOwWsY.js} (88%) rename assets/{isleoftune_index.md.DYO1xc9U.lean.js => isleoftune_index.md.CjvOwWsY.lean.js} (88%) rename assets/{juno-106_index.md.C-HewMMo.js => juno-106_index.md.Cei-yIZ_.js} (93%) rename assets/{juno-106_index.md.C-HewMMo.lean.js => juno-106_index.md.Cei-yIZ_.lean.js} (93%) rename assets/{meet-the-heisenberg_index.md.lkmORynb.js => meet-the-heisenberg_index.md.COSkv5m_.js} (88%) rename assets/{meet-the-heisenberg_index.md.lkmORynb.lean.js => meet-the-heisenberg_index.md.COSkv5m_.lean.js} (88%) rename assets/{microtonal_index.md.hTlkmWcW.js => microtonal_index.md.7zjrkP34.js} (98%) rename assets/{microtonal_index.md.hTlkmWcW.lean.js => microtonal_index.md.7zjrkP34.lean.js} (94%) rename assets/{midi-city_index.md.C_bw8Wmp.lean.js => midi-city_index.md.quDpD-LH.js} (97%) rename assets/{midi-city_index.md.C_bw8Wmp.js => midi-city_index.md.quDpD-LH.lean.js} (97%) rename assets/{midi-driven-web-audio_index.md.B06I4MxK.js => midi-driven-web-audio_index.md.BHLhzMEc.js} (88%) rename assets/{midi-driven-web-audio_index.md.B06I4MxK.lean.js => midi-driven-web-audio_index.md.BHLhzMEc.lean.js} (88%) rename assets/{mod-synth_index.md.DQ7oqCk-.js => mod-synth_index.md.C9QKok6-.js} (87%) rename assets/{mod-synth_index.md.DQ7oqCk-.lean.js => mod-synth_index.md.C9QKok6-.lean.js} (87%) rename assets/{multiplayer-orchestra_index.md.DBDquzNY.js => multiplayer-orchestra_index.md.B-NHU8MY.js} (94%) rename assets/{multiplayer-orchestra_index.md.DBDquzNY.lean.js => multiplayer-orchestra_index.md.B-NHU8MY.lean.js} (89%) rename assets/{multiplayer-piano_index.md.DysQ9-I2.js => multiplayer-piano_index.md.C8sFZ0Lc.js} (89%) rename assets/{multiplayer-piano_index.md.DysQ9-I2.lean.js => multiplayer-piano_index.md.C8sFZ0Lc.lean.js} (89%) rename assets/{muted-io_index.md.7HkqgXgG.js => muted-io_index.md.C_wNdUY3.js} (93%) rename assets/{muted-io_index.md.7HkqgXgG.lean.js => muted-io_index.md.C_wNdUY3.lean.js} (93%) rename assets/{note-sculptor_index.md.C2XwRlKF.js => note-sculptor_index.md.qRvnP-u9.js} (87%) rename assets/{note-sculptor_index.md.C2XwRlKF.lean.js => note-sculptor_index.md.qRvnP-u9.lean.js} (87%) rename assets/{nv-1_index.md.zz29iYg5.js => nv-1_index.md.DLCJmm76.js} (87%) rename assets/{nv-1_index.md.zz29iYg5.lean.js => nv-1_index.md.DLCJmm76.lean.js} (87%) rename assets/{olif-sy-1-k_index.md.Gisa2OKR.js => olif-sy-1-k_index.md.BusScNUQ.js} (87%) rename assets/{olif-sy-1-k_index.md.Gisa2OKR.lean.js => olif-sy-1-k_index.md.BusScNUQ.lean.js} (87%) rename assets/{omni_index.md.CL84VQWW.js => omni_index.md.COPXpr4K.js} (87%) rename assets/{omni_index.md.CL84VQWW.lean.js => omni_index.md.COPXpr4K.lean.js} (87%) rename assets/{online-sequencer_index.md.DVTPW1I8.js => online-sequencer_index.md.CD43l8x6.js} (98%) rename assets/{online-sequencer_index.md.DVTPW1I8.lean.js => online-sequencer_index.md.CD43l8x6.lean.js} (88%) rename assets/{pixel-synth_index.md.DqBlbh9_.js => pixel-synth_index.md.DP2JcS10.js} (87%) rename assets/{pixel-synth_index.md.DqBlbh9_.lean.js => pixel-synth_index.md.DP2JcS10.lean.js} (87%) rename assets/{roland50_index.md.Vb0qZb-L.js => roland50_index.md.BrTX2pyE.js} (91%) rename assets/{roland50_index.md.Vb0qZb-L.lean.js => roland50_index.md.BrTX2pyE.lean.js} (91%) rename assets/{sample-stich_index.md.BEflVudk.js => sample-stich_index.md.CNvttCPH.js} (88%) rename assets/{sample-stich_index.md.BEflVudk.lean.js => sample-stich_index.md.CNvttCPH.lean.js} (88%) rename assets/{sound-box_index.md.CEA_gYvJ.lean.js => sound-box_index.md.SIPDrKZA.js} (89%) rename assets/{sound-box_index.md.CEA_gYvJ.js => sound-box_index.md.SIPDrKZA.lean.js} (89%) rename assets/{sound-trap_index.md.P34yttG4.js => sound-trap_index.md.DeUmGQYN.js} (87%) rename assets/{sound-trap_index.md.P34yttG4.lean.js => sound-trap_index.md.DeUmGQYN.lean.js} (87%) rename assets/{soundfont_index.md.B2d0-Ban.js => soundfont_index.md.OAkXv37o.js} (95%) rename assets/{soundfont_index.md.B2d0-Ban.lean.js => soundfont_index.md.OAkXv37o.lean.js} (95%) rename assets/{sympathetic_index.md.B9hVY9QB.js => sympathetic_index.md.CdbkUUzW.js} (94%) rename assets/{sympathetic_index.md.B9hVY9QB.lean.js => sympathetic_index.md.CdbkUUzW.lean.js} (94%) rename assets/{tanguy-synth_index.md.D5X3OBcT.js => tanguy-synth_index.md.CmH5Xcd1.js} (88%) rename assets/{tanguy-synth_index.md.D5X3OBcT.lean.js => tanguy-synth_index.md.CmH5Xcd1.lean.js} (88%) rename assets/{theremin_index.md.liVXJJN1.js => theremin_index.md.CXNtky1n.js} (93%) rename assets/{theremin_index.md.liVXJJN1.lean.js => theremin_index.md.CXNtky1n.lean.js} (93%) rename assets/{touch-pianist_index.md.JrXfa-Ey.js => touch-pianist_index.md.EQqcc00y.js} (92%) rename assets/{touch-pianist_index.md.JrXfa-Ey.lean.js => touch-pianist_index.md.EQqcc00y.lean.js} (92%) rename assets/{touchme_index.md.BA04O2GJ.js => touchme_index.md.DQ8XRIQ7.js} (93%) rename assets/{touchme_index.md.BA04O2GJ.lean.js => touchme_index.md.DQ8XRIQ7.lean.js} (93%) rename assets/{typedrummer_index.md.BgD7csps.js => typedrummer_index.md.DDcMGeRo.js} (88%) rename assets/{typedrummer_index.md.BgD7csps.lean.js => typedrummer_index.md.DDcMGeRo.lean.js} (88%) rename assets/{video-sampler_index.md.Bbx11FMn.js => video-sampler_index.md.Fp916520.js} (87%) rename assets/{video-sampler_index.md.Bbx11FMn.lean.js => video-sampler_index.md.Fp916520.lean.js} (87%) rename assets/{virtual-piano_index.md.BIU4xc3c.js => virtual-piano_index.md.CVkX-1m_.js} (91%) rename assets/{virtual-piano_index.md.BIU4xc3c.lean.js => virtual-piano_index.md.CVkX-1m_.lean.js} (91%) rename assets/{waveform_index.md.CU21Le1y.js => waveform_index.md.BMgbw7Z5.js} (87%) rename assets/{waveform_index.md.CU21Le1y.lean.js => waveform_index.md.BMgbw7Z5.lean.js} (87%) rename assets/{web-audio-synth-v2_index.md.DVDfxtBK.js => web-audio-synth-v2_index.md.mytGv9SF.js} (87%) rename assets/{web-audio-synth-v2_index.md.DVDfxtBK.lean.js => web-audio-synth-v2_index.md.mytGv9SF.lean.js} (87%) rename assets/{web-modular_index.md.BqKHl3qJ.js => web-modular_index.md.CSZ2i0Av.js} (87%) rename assets/{web-modular_index.md.BqKHl3qJ.lean.js => web-modular_index.md.CSZ2i0Av.lean.js} (87%) rename assets/{web-sid_index.md.BQ4SubTk.js => web-sid_index.md.Dr-XVffJ.js} (88%) rename assets/{web-sid_index.md.BQ4SubTk.lean.js => web-sid_index.md.Dr-XVffJ.lean.js} (88%) create mode 100644 cardinal/index.html create mode 100644 cover/cardinal.webp diff --git a/404.html b/404.html index b4df1ac3..23f0a537 100644 --- a/404.html +++ b/404.html @@ -39,7 +39,7 @@
404 Page Not Found
Made with 🧡 by
Playtronica &Chromatone
- + \ No newline at end of file diff --git a/README.html b/README.html index dd56ef3d..73a9b05b 100644 --- a/README.html +++ b/README.html @@ -11,7 +11,7 @@ - + @@ -42,7 +42,7 @@

WEB SYNTHS ​

TO DO ​

  • SEO proof texts
  • Logos
  • save state
  • favourites
  • ranks + reviews
Made with 🧡 by
Playtronica &Chromatone
- + \ No newline at end of file diff --git a/ableton/index.html b/ableton/index.html index 148a45d1..62e6bab2 100644 --- a/ableton/index.html +++ b/ableton/index.html @@ -11,10 +11,10 @@ - + - + @@ -44,8 +44,8 @@ -
- +
+ \ No newline at end of file diff --git a/acid-machine-2/index.html b/acid-machine-2/index.html index 5e15207e..f129f2ed 100644 --- a/acid-machine-2/index.html +++ b/acid-machine-2/index.html @@ -11,10 +11,10 @@ - + - + @@ -44,8 +44,8 @@ -
- +
+ \ No newline at end of file diff --git a/aqwertyon/index.html b/aqwertyon/index.html index 5674fb77..0f2430e5 100644 --- a/aqwertyon/index.html +++ b/aqwertyon/index.html @@ -11,10 +11,10 @@ - + - + @@ -44,8 +44,8 @@ -

The aQWERTYon (QWERTY accordion) is designed to simplify the process for improvising, learning, and making music with your computer keyboard. Play along with your favorite YouTube videos, learn music theory through our Music Theory for Bedroom Producers course in collaboration with Soundfly, or take advantage of Web MIDI and us it to play and record into your favorite digital audio workstation, such as Soundtrap.com, GarageBand, Logic, or Ableton, or as input into music notation programs like Noteflight.

https://youtu.be/hqFr4lF6u_Y

Made with 🧡 by
Playtronica &Chromatone
- +

The aQWERTYon (QWERTY accordion) is designed to simplify the process for improvising, learning, and making music with your computer keyboard. Play along with your favorite YouTube videos, learn music theory through our Music Theory for Bedroom Producers course in collaboration with Soundfly, or take advantage of Web MIDI and us it to play and record into your favorite digital audio workstation, such as Soundtrap.com, GarageBand, Logic, or Ableton, or as input into music notation programs like Noteflight.

https://youtu.be/hqFr4lF6u_Y

Made with 🧡 by
Playtronica &Chromatone
+ \ No newline at end of file diff --git a/assets/README.md.D9FcETfF.js b/assets/README.md.C9Wu_do9.js similarity index 92% rename from assets/README.md.D9FcETfF.js rename to assets/README.md.C9Wu_do9.js index ec8f8409..693fb1de 100644 --- a/assets/README.md.D9FcETfF.js +++ b/assets/README.md.C9Wu_do9.js @@ -1 +1 @@ -import{_ as a,d as s,b as o,g as e,h as t}from"./chunks/framework.DA3bj7zI.js";const S=JSON.parse('{"title":"WEB SYNTHS","description":"","frontmatter":{},"headers":[],"relativePath":"README.md","filePath":"README.md","lastUpdated":1711550395000}'),l={name:"README.md"},n=e("h1",{id:"web-synths",tabindex:"-1"},[t("WEB SYNTHS "),e("a",{class:"header-anchor",href:"#web-synths","aria-label":'Permalink to "WEB SYNTHS"'},"​")],-1),r=e("h2",{id:"to-do",tabindex:"-1"},[t("TO DO "),e("a",{class:"header-anchor",href:"#to-do","aria-label":'Permalink to "TO DO"'},"​")],-1),i=e("ul",null,[e("li",null,"SEO proof texts"),e("li",null,"Logos"),e("li",null,"save state"),e("li",null,"favourites"),e("li",null,"ranks + reviews")],-1),d=[n,r,i];function c(h,_,p,u,E,f){return o(),s("div",null,d)}const b=a(l,[["render",c]]);export{S as __pageData,b as default}; +import{_ as a,d as s,b as o,g as e,h as t}from"./chunks/framework.DA3bj7zI.js";const S=JSON.parse('{"title":"WEB SYNTHS","description":"","frontmatter":{},"headers":[],"relativePath":"README.md","filePath":"README.md","lastUpdated":1713874304000}'),l={name:"README.md"},n=e("h1",{id:"web-synths",tabindex:"-1"},[t("WEB SYNTHS "),e("a",{class:"header-anchor",href:"#web-synths","aria-label":'Permalink to "WEB SYNTHS"'},"​")],-1),r=e("h2",{id:"to-do",tabindex:"-1"},[t("TO DO "),e("a",{class:"header-anchor",href:"#to-do","aria-label":'Permalink to "TO DO"'},"​")],-1),i=e("ul",null,[e("li",null,"SEO proof texts"),e("li",null,"Logos"),e("li",null,"save state"),e("li",null,"favourites"),e("li",null,"ranks + reviews")],-1),d=[n,r,i];function c(h,_,p,u,E,f){return o(),s("div",null,d)}const b=a(l,[["render",c]]);export{S as __pageData,b as default}; diff --git a/assets/README.md.D9FcETfF.lean.js b/assets/README.md.C9Wu_do9.lean.js similarity index 92% rename from assets/README.md.D9FcETfF.lean.js rename to assets/README.md.C9Wu_do9.lean.js index ec8f8409..693fb1de 100644 --- a/assets/README.md.D9FcETfF.lean.js +++ b/assets/README.md.C9Wu_do9.lean.js @@ -1 +1 @@ -import{_ as a,d as s,b as o,g as e,h as t}from"./chunks/framework.DA3bj7zI.js";const S=JSON.parse('{"title":"WEB SYNTHS","description":"","frontmatter":{},"headers":[],"relativePath":"README.md","filePath":"README.md","lastUpdated":1711550395000}'),l={name:"README.md"},n=e("h1",{id:"web-synths",tabindex:"-1"},[t("WEB SYNTHS "),e("a",{class:"header-anchor",href:"#web-synths","aria-label":'Permalink to "WEB SYNTHS"'},"​")],-1),r=e("h2",{id:"to-do",tabindex:"-1"},[t("TO DO "),e("a",{class:"header-anchor",href:"#to-do","aria-label":'Permalink to "TO DO"'},"​")],-1),i=e("ul",null,[e("li",null,"SEO proof texts"),e("li",null,"Logos"),e("li",null,"save state"),e("li",null,"favourites"),e("li",null,"ranks + reviews")],-1),d=[n,r,i];function c(h,_,p,u,E,f){return o(),s("div",null,d)}const b=a(l,[["render",c]]);export{S as __pageData,b as default}; +import{_ as a,d as s,b as o,g as e,h as t}from"./chunks/framework.DA3bj7zI.js";const S=JSON.parse('{"title":"WEB SYNTHS","description":"","frontmatter":{},"headers":[],"relativePath":"README.md","filePath":"README.md","lastUpdated":1713874304000}'),l={name:"README.md"},n=e("h1",{id:"web-synths",tabindex:"-1"},[t("WEB SYNTHS "),e("a",{class:"header-anchor",href:"#web-synths","aria-label":'Permalink to "WEB SYNTHS"'},"​")],-1),r=e("h2",{id:"to-do",tabindex:"-1"},[t("TO DO "),e("a",{class:"header-anchor",href:"#to-do","aria-label":'Permalink to "TO DO"'},"​")],-1),i=e("ul",null,[e("li",null,"SEO proof texts"),e("li",null,"Logos"),e("li",null,"save state"),e("li",null,"favourites"),e("li",null,"ranks + reviews")],-1),d=[n,r,i];function c(h,_,p,u,E,f){return o(),s("div",null,d)}const b=a(l,[["render",c]]);export{S as __pageData,b as default}; diff --git a/assets/ableton_index.md.Cg4KKF7N.js b/assets/ableton_index.md.DZBvrMY6.js similarity index 93% rename from assets/ableton_index.md.Cg4KKF7N.js rename to assets/ableton_index.md.DZBvrMY6.js index c62bcaad..8edb5073 100644 --- a/assets/ableton_index.md.Cg4KKF7N.js +++ b/assets/ableton_index.md.DZBvrMY6.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as n,y as r,R as l,S as o,f as i,b as c}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://learningsynths.ableton.com/","date_created":"2023-10-27T12:45:54.360Z","title":"Learning synths","slug":"ableton","author":"Ableton","author_link":"https://github.com/Ableton","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":false,"cover":"0bf8312d-c449-4f5c-80ad-36594ef98db6","id":26,"sort":14,"clicks":184,"public":false,"is_new":false,"stats":[13]},"relativePath":"ableton/index.md","filePath":"ableton/index.md","lastUpdated":0}'),p={name:"ableton/index.md"},v=Object.assign(p,{setup(d){const{params:t,frontmatter:m}=s();return(_,f)=>{const e=a;return c(),n("div",null,[r(e,l(o(i(t))),null,16)])}}});export{y as __pageData,v as default}; +import{_ as a}from"./chunks/SynthPage.B19zwNJN.js";import{s,d as n,y as r,R as l,S as o,f as i,b as c}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://learningsynths.ableton.com/","date_created":"2023-10-27T12:45:54.360Z","title":"Learning synths","slug":"ableton","author":"Ableton","author_link":"https://github.com/Ableton","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":false,"cover":"0bf8312d-c449-4f5c-80ad-36594ef98db6","id":26,"sort":14,"clicks":184,"public":false,"is_new":false,"stats":[13]},"relativePath":"ableton/index.md","filePath":"ableton/index.md","lastUpdated":0}'),p={name:"ableton/index.md"},v=Object.assign(p,{setup(d){const{params:t,frontmatter:m}=s();return(_,f)=>{const e=a;return c(),n("div",null,[r(e,l(o(i(t))),null,16)])}}});export{y as __pageData,v as default}; diff --git a/assets/ableton_index.md.Cg4KKF7N.lean.js b/assets/ableton_index.md.DZBvrMY6.lean.js similarity index 93% rename from assets/ableton_index.md.Cg4KKF7N.lean.js rename to assets/ableton_index.md.DZBvrMY6.lean.js index c62bcaad..8edb5073 100644 --- a/assets/ableton_index.md.Cg4KKF7N.lean.js +++ b/assets/ableton_index.md.DZBvrMY6.lean.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as n,y as r,R as l,S as o,f as i,b as c}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://learningsynths.ableton.com/","date_created":"2023-10-27T12:45:54.360Z","title":"Learning synths","slug":"ableton","author":"Ableton","author_link":"https://github.com/Ableton","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":false,"cover":"0bf8312d-c449-4f5c-80ad-36594ef98db6","id":26,"sort":14,"clicks":184,"public":false,"is_new":false,"stats":[13]},"relativePath":"ableton/index.md","filePath":"ableton/index.md","lastUpdated":0}'),p={name:"ableton/index.md"},v=Object.assign(p,{setup(d){const{params:t,frontmatter:m}=s();return(_,f)=>{const e=a;return c(),n("div",null,[r(e,l(o(i(t))),null,16)])}}});export{y as __pageData,v as default}; +import{_ as a}from"./chunks/SynthPage.B19zwNJN.js";import{s,d as n,y as r,R as l,S as o,f as i,b as c}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://learningsynths.ableton.com/","date_created":"2023-10-27T12:45:54.360Z","title":"Learning synths","slug":"ableton","author":"Ableton","author_link":"https://github.com/Ableton","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":false,"cover":"0bf8312d-c449-4f5c-80ad-36594ef98db6","id":26,"sort":14,"clicks":184,"public":false,"is_new":false,"stats":[13]},"relativePath":"ableton/index.md","filePath":"ableton/index.md","lastUpdated":0}'),p={name:"ableton/index.md"},v=Object.assign(p,{setup(d){const{params:t,frontmatter:m}=s();return(_,f)=>{const e=a;return c(),n("div",null,[r(e,l(o(i(t))),null,16)])}}});export{y as __pageData,v as default}; diff --git a/assets/acid-machine-2_index.md.Brd6Zwuh.js b/assets/acid-machine-2_index.md.fdaF3_po.js similarity index 87% rename from assets/acid-machine-2_index.md.Brd6Zwuh.js rename to assets/acid-machine-2_index.md.fdaF3_po.js index 55229eb0..4d5a42c7 100644 --- a/assets/acid-machine-2_index.md.Brd6Zwuh.js +++ b/assets/acid-machine-2_index.md.fdaF3_po.js @@ -1 +1 @@ -import{_ as t}from"./chunks/SynthPage.DHgkhPru.js";import{s as r,d as s,y as i,R as c,S as n,f as o,b as l}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const v=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://errozero.co.uk/acid-machine/","date_created":"2023-10-27T12:45:54.333Z","title":"Acid Machine 2","slug":"acid-machine-2","author":"Errozero","author_link":"https://www.errozero.co.uk/","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"031eab3e-2f21-442a-8fdc-9769907824e0","id":25,"sort":31,"clicks":166,"public":false,"is_new":false,"stats":[26]},"relativePath":"acid-machine-2/index.md","filePath":"acid-machine-2/index.md","lastUpdated":0}'),d={name:"acid-machine-2/index.md"},x=Object.assign(d,{setup(m){const{params:e,frontmatter:p}=r();return(u,_)=>{const a=t;return l(),s("div",null,[i(a,c(n(o(e))),null,16)])}}});export{v as __pageData,x as default}; +import{_ as t}from"./chunks/SynthPage.B19zwNJN.js";import{s as r,d as s,y as i,R as c,S as n,f as o,b as l}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const v=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://errozero.co.uk/acid-machine/","date_created":"2023-10-27T12:45:54.333Z","title":"Acid Machine 2","slug":"acid-machine-2","author":"Errozero","author_link":"https://www.errozero.co.uk/","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"031eab3e-2f21-442a-8fdc-9769907824e0","id":25,"sort":32,"clicks":166,"public":false,"is_new":false,"stats":[26]},"relativePath":"acid-machine-2/index.md","filePath":"acid-machine-2/index.md","lastUpdated":0}'),d={name:"acid-machine-2/index.md"},x=Object.assign(d,{setup(m){const{params:e,frontmatter:p}=r();return(u,_)=>{const a=t;return l(),s("div",null,[i(a,c(n(o(e))),null,16)])}}});export{v as __pageData,x as default}; diff --git a/assets/acid-machine-2_index.md.Brd6Zwuh.lean.js b/assets/acid-machine-2_index.md.fdaF3_po.lean.js similarity index 87% rename from assets/acid-machine-2_index.md.Brd6Zwuh.lean.js rename to assets/acid-machine-2_index.md.fdaF3_po.lean.js index 55229eb0..4d5a42c7 100644 --- a/assets/acid-machine-2_index.md.Brd6Zwuh.lean.js +++ b/assets/acid-machine-2_index.md.fdaF3_po.lean.js @@ -1 +1 @@ -import{_ as t}from"./chunks/SynthPage.DHgkhPru.js";import{s as r,d as s,y as i,R as c,S as n,f as o,b as l}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const v=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://errozero.co.uk/acid-machine/","date_created":"2023-10-27T12:45:54.333Z","title":"Acid Machine 2","slug":"acid-machine-2","author":"Errozero","author_link":"https://www.errozero.co.uk/","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"031eab3e-2f21-442a-8fdc-9769907824e0","id":25,"sort":31,"clicks":166,"public":false,"is_new":false,"stats":[26]},"relativePath":"acid-machine-2/index.md","filePath":"acid-machine-2/index.md","lastUpdated":0}'),d={name:"acid-machine-2/index.md"},x=Object.assign(d,{setup(m){const{params:e,frontmatter:p}=r();return(u,_)=>{const a=t;return l(),s("div",null,[i(a,c(n(o(e))),null,16)])}}});export{v as __pageData,x as default}; +import{_ as t}from"./chunks/SynthPage.B19zwNJN.js";import{s as r,d as s,y as i,R as c,S as n,f as o,b as l}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const v=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://errozero.co.uk/acid-machine/","date_created":"2023-10-27T12:45:54.333Z","title":"Acid Machine 2","slug":"acid-machine-2","author":"Errozero","author_link":"https://www.errozero.co.uk/","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"031eab3e-2f21-442a-8fdc-9769907824e0","id":25,"sort":32,"clicks":166,"public":false,"is_new":false,"stats":[26]},"relativePath":"acid-machine-2/index.md","filePath":"acid-machine-2/index.md","lastUpdated":0}'),d={name:"acid-machine-2/index.md"},x=Object.assign(d,{setup(m){const{params:e,frontmatter:p}=r();return(u,_)=>{const a=t;return l(),s("div",null,[i(a,c(n(o(e))),null,16)])}}});export{v as __pageData,x as default}; diff --git a/assets/aqwertyon_index.md.DeEJlWSG.js b/assets/aqwertyon_index.md.CgYlagfO.js similarity index 96% rename from assets/aqwertyon_index.md.DeEJlWSG.js rename to assets/aqwertyon_index.md.CgYlagfO.js index ba920486..f6b1f9ed 100644 --- a/assets/aqwertyon_index.md.DeEJlWSG.js +++ b/assets/aqwertyon_index.md.CgYlagfO.js @@ -1 +1 @@ -import{_ as r}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as n,y as i,R as l,S as u,f as c,g as e,h as t,b as d}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const p=e("p",null,[t("The "),e("strong",null,"aQWERTYon"),t(" (QWERTY accordion) is designed to simplify the process for improvising, learning, and making music with your computer keyboard. Play along with your favorite YouTube videos, learn music theory through our Music Theory for Bedroom Producers course in collaboration with Soundfly, or take advantage of Web MIDI and us it to play and record into your favorite digital audio workstation, such as Soundtrap.com, GarageBand, Logic, or Ableton, or as input into music notation programs like Noteflight.")],-1),m=e("p",null,[e("a",{href:"https://youtu.be/hqFr4lF6u_Y",target:"_blank",rel:"noreferrer"},"https://youtu.be/hqFr4lF6u_Y")],-1),T=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://apps.musedlab.org/aqwertyon/theory/","date_created":"2023-10-27T12:45:54.711Z","title":"aQWERTYon","slug":"aqwertyon","author":"Mused lab","author_link":"https://musedlab.org/","description":null,"tags":["polyphonic","samples"],"archive_link":null,"archive":false,"iframe":true,"cover":"e7c87de8-c290-4da9-b0e0-eed73871b27a","id":42,"sort":10,"clicks":348,"public":false,"is_new":false,"stats":[8]},"relativePath":"aqwertyon/index.md","filePath":"aqwertyon/index.md","lastUpdated":0}'),h={name:"aqwertyon/index.md"},q=Object.assign(h,{setup(_){const{params:a,frontmatter:f}=s();return(g,y)=>{const o=r;return d(),n("div",null,[i(o,l(u(c(a))),null,16),p,m])}}});export{T as __pageData,q as default}; +import{_ as r}from"./chunks/SynthPage.B19zwNJN.js";import{s,d as n,y as i,R as l,S as u,f as c,g as e,h as t,b as d}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const p=e("p",null,[t("The "),e("strong",null,"aQWERTYon"),t(" (QWERTY accordion) is designed to simplify the process for improvising, learning, and making music with your computer keyboard. Play along with your favorite YouTube videos, learn music theory through our Music Theory for Bedroom Producers course in collaboration with Soundfly, or take advantage of Web MIDI and us it to play and record into your favorite digital audio workstation, such as Soundtrap.com, GarageBand, Logic, or Ableton, or as input into music notation programs like Noteflight.")],-1),m=e("p",null,[e("a",{href:"https://youtu.be/hqFr4lF6u_Y",target:"_blank",rel:"noreferrer"},"https://youtu.be/hqFr4lF6u_Y")],-1),T=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://apps.musedlab.org/aqwertyon/theory/","date_created":"2023-10-27T12:45:54.711Z","title":"aQWERTYon","slug":"aqwertyon","author":"Mused lab","author_link":"https://musedlab.org/","description":null,"tags":["polyphonic","samples"],"archive_link":null,"archive":false,"iframe":true,"cover":"e7c87de8-c290-4da9-b0e0-eed73871b27a","id":42,"sort":10,"clicks":348,"public":false,"is_new":false,"stats":[8]},"relativePath":"aqwertyon/index.md","filePath":"aqwertyon/index.md","lastUpdated":0}'),h={name:"aqwertyon/index.md"},q=Object.assign(h,{setup(_){const{params:a,frontmatter:f}=s();return(g,y)=>{const o=r;return d(),n("div",null,[i(o,l(u(c(a))),null,16),p,m])}}});export{T as __pageData,q as default}; diff --git a/assets/aqwertyon_index.md.DeEJlWSG.lean.js b/assets/aqwertyon_index.md.CgYlagfO.lean.js similarity index 96% rename from assets/aqwertyon_index.md.DeEJlWSG.lean.js rename to assets/aqwertyon_index.md.CgYlagfO.lean.js index ba920486..f6b1f9ed 100644 --- a/assets/aqwertyon_index.md.DeEJlWSG.lean.js +++ b/assets/aqwertyon_index.md.CgYlagfO.lean.js @@ -1 +1 @@ -import{_ as r}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as n,y as i,R as l,S as u,f as c,g as e,h as t,b as d}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const p=e("p",null,[t("The "),e("strong",null,"aQWERTYon"),t(" (QWERTY accordion) is designed to simplify the process for improvising, learning, and making music with your computer keyboard. Play along with your favorite YouTube videos, learn music theory through our Music Theory for Bedroom Producers course in collaboration with Soundfly, or take advantage of Web MIDI and us it to play and record into your favorite digital audio workstation, such as Soundtrap.com, GarageBand, Logic, or Ableton, or as input into music notation programs like Noteflight.")],-1),m=e("p",null,[e("a",{href:"https://youtu.be/hqFr4lF6u_Y",target:"_blank",rel:"noreferrer"},"https://youtu.be/hqFr4lF6u_Y")],-1),T=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://apps.musedlab.org/aqwertyon/theory/","date_created":"2023-10-27T12:45:54.711Z","title":"aQWERTYon","slug":"aqwertyon","author":"Mused lab","author_link":"https://musedlab.org/","description":null,"tags":["polyphonic","samples"],"archive_link":null,"archive":false,"iframe":true,"cover":"e7c87de8-c290-4da9-b0e0-eed73871b27a","id":42,"sort":10,"clicks":348,"public":false,"is_new":false,"stats":[8]},"relativePath":"aqwertyon/index.md","filePath":"aqwertyon/index.md","lastUpdated":0}'),h={name:"aqwertyon/index.md"},q=Object.assign(h,{setup(_){const{params:a,frontmatter:f}=s();return(g,y)=>{const o=r;return d(),n("div",null,[i(o,l(u(c(a))),null,16),p,m])}}});export{T as __pageData,q as default}; +import{_ as r}from"./chunks/SynthPage.B19zwNJN.js";import{s,d as n,y as i,R as l,S as u,f as c,g as e,h as t,b as d}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const p=e("p",null,[t("The "),e("strong",null,"aQWERTYon"),t(" (QWERTY accordion) is designed to simplify the process for improvising, learning, and making music with your computer keyboard. Play along with your favorite YouTube videos, learn music theory through our Music Theory for Bedroom Producers course in collaboration with Soundfly, or take advantage of Web MIDI and us it to play and record into your favorite digital audio workstation, such as Soundtrap.com, GarageBand, Logic, or Ableton, or as input into music notation programs like Noteflight.")],-1),m=e("p",null,[e("a",{href:"https://youtu.be/hqFr4lF6u_Y",target:"_blank",rel:"noreferrer"},"https://youtu.be/hqFr4lF6u_Y")],-1),T=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://apps.musedlab.org/aqwertyon/theory/","date_created":"2023-10-27T12:45:54.711Z","title":"aQWERTYon","slug":"aqwertyon","author":"Mused lab","author_link":"https://musedlab.org/","description":null,"tags":["polyphonic","samples"],"archive_link":null,"archive":false,"iframe":true,"cover":"e7c87de8-c290-4da9-b0e0-eed73871b27a","id":42,"sort":10,"clicks":348,"public":false,"is_new":false,"stats":[8]},"relativePath":"aqwertyon/index.md","filePath":"aqwertyon/index.md","lastUpdated":0}'),h={name:"aqwertyon/index.md"},q=Object.assign(h,{setup(_){const{params:a,frontmatter:f}=s();return(g,y)=>{const o=r;return d(),n("div",null,[i(o,l(u(c(a))),null,16),p,m])}}});export{T as __pageData,q as default}; diff --git a/assets/auth.md.D0LWfyqF.js b/assets/auth.md.BhfyOX0C.js similarity index 97% rename from assets/auth.md.D0LWfyqF.js rename to assets/auth.md.BhfyOX0C.js index 62693901..9f1cb030 100644 --- a/assets/auth.md.D0LWfyqF.js +++ b/assets/auth.md.BhfyOX0C.js @@ -1 +1 @@ -import{_ as t,d as e,b as r,B as s}from"./chunks/framework.DA3bj7zI.js";const f=JSON.parse('{"title":"Directus auth links","description":"","frontmatter":{},"headers":[],"relativePath":"auth.md","filePath":"auth.md","lastUpdated":1711550395000}'),i={name:"auth.md"},a=s('

Directus auth links ​

https://docs.directus.io/guides/real-time/getting-started/websockets.html

',4),c=[a];function o(n,l,u,d,h,p){return r(),e("div",null,c)}const g=t(i,[["render",o]]);export{f as __pageData,g as default}; +import{_ as t,d as e,b as r,B as s}from"./chunks/framework.DA3bj7zI.js";const f=JSON.parse('{"title":"Directus auth links","description":"","frontmatter":{},"headers":[],"relativePath":"auth.md","filePath":"auth.md","lastUpdated":1713874304000}'),i={name:"auth.md"},a=s('

Directus auth links ​

https://docs.directus.io/guides/real-time/getting-started/websockets.html

',4),c=[a];function o(n,l,u,d,h,p){return r(),e("div",null,c)}const g=t(i,[["render",o]]);export{f as __pageData,g as default}; diff --git a/assets/auth.md.D0LWfyqF.lean.js b/assets/auth.md.BhfyOX0C.lean.js similarity index 83% rename from assets/auth.md.D0LWfyqF.lean.js rename to assets/auth.md.BhfyOX0C.lean.js index 6801c5bb..d263d40d 100644 --- a/assets/auth.md.D0LWfyqF.lean.js +++ b/assets/auth.md.BhfyOX0C.lean.js @@ -1 +1 @@ -import{_ as t,d as e,b as r,B as s}from"./chunks/framework.DA3bj7zI.js";const f=JSON.parse('{"title":"Directus auth links","description":"","frontmatter":{},"headers":[],"relativePath":"auth.md","filePath":"auth.md","lastUpdated":1711550395000}'),i={name:"auth.md"},a=s("",4),c=[a];function o(n,l,u,d,h,p){return r(),e("div",null,c)}const g=t(i,[["render",o]]);export{f as __pageData,g as default}; +import{_ as t,d as e,b as r,B as s}from"./chunks/framework.DA3bj7zI.js";const f=JSON.parse('{"title":"Directus auth links","description":"","frontmatter":{},"headers":[],"relativePath":"auth.md","filePath":"auth.md","lastUpdated":1713874304000}'),i={name:"auth.md"},a=s("",4),c=[a];function o(n,l,u,d,h,p){return r(),e("div",null,c)}const g=t(i,[["render",o]]);export{f as __pageData,g as default}; diff --git a/assets/auth_accept.md.Fnf3Jp_6.js b/assets/auth_accept.md.DucFg5Gq.js similarity index 86% rename from assets/auth_accept.md.Fnf3Jp_6.js rename to assets/auth_accept.md.DucFg5Gq.js index 174d058f..26a92601 100644 --- a/assets/auth_accept.md.Fnf3Jp_6.js +++ b/assets/auth_accept.md.DucFg5Gq.js @@ -1 +1 @@ -import{_ as t,d as e,b as a,g as c}from"./chunks/framework.DA3bj7zI.js";const u=JSON.parse('{"title":"Accept an invite","description":"","frontmatter":{"title":"Accept an invite"},"headers":[],"relativePath":"auth/accept.md","filePath":"auth/accept.md","lastUpdated":1711550395000}'),n={name:"auth/accept.md"},s=c("p",null,"ACCEPT INVITE PAGE",-1),o=[s];function p(r,i,d,_,l,h){return a(),e("div",null,o)}const f=t(n,[["render",p]]);export{u as __pageData,f as default}; +import{_ as t,d as e,b as a,g as c}from"./chunks/framework.DA3bj7zI.js";const u=JSON.parse('{"title":"Accept an invite","description":"","frontmatter":{"title":"Accept an invite"},"headers":[],"relativePath":"auth/accept.md","filePath":"auth/accept.md","lastUpdated":1713874304000}'),n={name:"auth/accept.md"},s=c("p",null,"ACCEPT INVITE PAGE",-1),o=[s];function p(r,i,d,_,l,h){return a(),e("div",null,o)}const f=t(n,[["render",p]]);export{u as __pageData,f as default}; diff --git a/assets/auth_accept.md.Fnf3Jp_6.lean.js b/assets/auth_accept.md.DucFg5Gq.lean.js similarity index 86% rename from assets/auth_accept.md.Fnf3Jp_6.lean.js rename to assets/auth_accept.md.DucFg5Gq.lean.js index 174d058f..26a92601 100644 --- a/assets/auth_accept.md.Fnf3Jp_6.lean.js +++ b/assets/auth_accept.md.DucFg5Gq.lean.js @@ -1 +1 @@ -import{_ as t,d as e,b as a,g as c}from"./chunks/framework.DA3bj7zI.js";const u=JSON.parse('{"title":"Accept an invite","description":"","frontmatter":{"title":"Accept an invite"},"headers":[],"relativePath":"auth/accept.md","filePath":"auth/accept.md","lastUpdated":1711550395000}'),n={name:"auth/accept.md"},s=c("p",null,"ACCEPT INVITE PAGE",-1),o=[s];function p(r,i,d,_,l,h){return a(),e("div",null,o)}const f=t(n,[["render",p]]);export{u as __pageData,f as default}; +import{_ as t,d as e,b as a,g as c}from"./chunks/framework.DA3bj7zI.js";const u=JSON.parse('{"title":"Accept an invite","description":"","frontmatter":{"title":"Accept an invite"},"headers":[],"relativePath":"auth/accept.md","filePath":"auth/accept.md","lastUpdated":1713874304000}'),n={name:"auth/accept.md"},s=c("p",null,"ACCEPT INVITE PAGE",-1),o=[s];function p(r,i,d,_,l,h){return a(),e("div",null,o)}const f=t(n,[["render",p]]);export{u as __pageData,f as default}; diff --git a/assets/auth_index.md.QeBiS1Uo.js b/assets/auth_index.md.CCxxwTF6.js similarity index 98% rename from assets/auth_index.md.QeBiS1Uo.js rename to assets/auth_index.md.CCxxwTF6.js index 800fe317..b69b57fe 100644 --- a/assets/auth_index.md.QeBiS1Uo.js +++ b/assets/auth_index.md.CCxxwTF6.js @@ -1 +1 @@ -import{_ as R}from"./chunks/theme.TKyytG40.js";import{u as V,D as I,a as J,A as M,f as O,x as T}from"./chunks/index.OsI8M1nP.js";import{r as l,o as j,b as f,d as g,g as s,t as h,f as o,e as y,j as w,k as $,C as q,y as k,_ as E}from"./chunks/framework.DA3bj7zI.js";class G{get(){return JSON.parse(localStorage.getItem("directus-data"))}set(a){localStorage.setItem("directus-data",JSON.stringify(a))}}const n=V("https://dbs.chromatone.center/").with(I({credentials:"include"})).with(J("json",{credentials:"include",storage:new G})).with(M({credentials:"include"})),p=l(),C=l(""),P=l(""),_=l({}),b=l("");let D=!1;function U(){return D||(j(async()=>{await S(),await L()}),D=!0),{access_token:b,email:C,password:P,authData:_,user:p,userDB:n,userCreate:F,userRead:L,refreshToken:S,submitLogin:z,logoutUser:H}}async function S(){try{let e=await n.refresh();b.value=e.access_token,delete e.access_token,_.value=e}catch(e){console.log(e.errors[0])}}async function z(){try{let e=await n.login(C.value,P.value);b.value=e.access_token,delete e.access_token,_.value={...e}}catch(e){console.log(e.errors[0])}}async function L(){try{return p.value=await n.request(O()),p.value.players=await n.request(T("players",{fields:["*",{synths:["*",{synths_id:["*"]}]}]})),p.value}catch(e){console.log(e)}}async function F({email:e}){}async function H(){await n.logout(),b.value="",_.value=""}const K={class:"flex flex-col gap-4 p-4"},Q=s("div",{class:"text-xl"},"Profile",-1),W={class:"text-sm"},X={__name:"AuthProfile",setup(e){const{user:a}=U();return(x,v)=>(f(),g("div",K,[Q,s("pre",W,h(o(a)),1)]))}},Y=s("div",{class:"text-4xl"},"Login to your account",-1),Z=s("label",{class:"text-xl",for:"email"},"E-mail*:",-1),ee=s("label",{class:"text-xl",for:"email"},"Password:",-1),te={key:1,class:"flex flex-col gap-2"},se={class:"font-mono text-xs"},oe={class:"text-sm"},re={class:"flex"},ae={__name:"AuthLogin",setup(e){const{userRead:a,user:x,userDB:v,email:d,password:i,authData:m,access_token:c,submitLogin:u,refreshToken:A,logoutUser:B}=U();return(de,t)=>{const N=X;return o(c)?(f(),g("div",te,[s("p",se,"."+h(o(c).split(".")[2]),1),s("pre",oe,h(o(m)),1),s("div",re,[s("button",{class:"text-xl font-bold rounded-lg p-4 border-2 border-solid dark-border-light-300 border-dark-800 shadow-lg dark-bg-dark-200",type:"submit",onClick:t[4]||(t[4]=r=>o(A)())},"Refresh"),s("button",{class:"text-xl font-bold rounded-lg p-4 border-2 border-solid dark-border-light-300 border-dark-800 shadow-lg dark-bg-dark-200",type:"submit",onClick:t[5]||(t[5]=r=>o(B)())},"Log out")]),s("button",{class:"text-xl font-bold rounded-lg p-4 border-2 border-solid dark-border-light-300 border-dark-800 shadow-lg dark-bg-dark-200",type:"submit",onClick:t[6]||(t[6]=r=>o(a)())},"Read user"),k(N)])):(f(),g("form",{key:0,class:"flex flex-col gap-4",onSubmit:t[3]||(t[3]=q((...r)=>o(u)&&o(u)(...r),["prevent"]))},[Y,Z,y(s("input",{class:"text-lg rounded-lg p-4 border-2 border-solid dark-border-light-300 border-dark-800 shadow-inner dark-bg-dark-200",id:"email",type:"text","onUpdate:modelValue":t[0]||(t[0]=r=>$(d)?d.value=r:null)},null,512),[[w,o(d)]]),ee,y(s("input",{class:"rounded-lg p-4 border-2 border-solid dark-border-light-300 border-dark-800 shadow-inner dark-bg-dark-200",type:"password","onUpdate:modelValue":t[1]||(t[1]=r=>$(i)?i.value=r:null)},null,512),[[w,o(i)]]),s("button",{class:"text-xl font-bold rounded-lg p-4 border-2 border-solid dark-border-light-300 border-dark-800 shadow-lg dark-bg-dark-200",type:"submit",onClick:t[2]||(t[2]=(...r)=>o(u)&&o(u)(...r))},"Sign In")],32))}}},pe=JSON.parse('{"title":"Login","description":"","frontmatter":{"title":"Login","desctiption":"Get in touch with community through contributions"},"headers":[],"relativePath":"auth/index.md","filePath":"auth/index.md","lastUpdated":1711550395000}'),ne={name:"auth/index.md"};function le(e,a,x,v,d,i){const m=ae,c=R;return f(),g("div",null,[k(m),k(c)])}const fe=E(ne,[["render",le]]);export{pe as __pageData,fe as default}; +import{_ as R}from"./chunks/theme.TKyytG40.js";import{u as V,D as I,a as J,A as M,f as O,x as T}from"./chunks/index.OsI8M1nP.js";import{r as l,o as j,b as f,d as g,g as s,t as h,f as o,e as y,j as w,k as $,C as q,y as k,_ as E}from"./chunks/framework.DA3bj7zI.js";class G{get(){return JSON.parse(localStorage.getItem("directus-data"))}set(a){localStorage.setItem("directus-data",JSON.stringify(a))}}const n=V("https://dbs.chromatone.center/").with(I({credentials:"include"})).with(J("json",{credentials:"include",storage:new G})).with(M({credentials:"include"})),p=l(),C=l(""),P=l(""),_=l({}),b=l("");let D=!1;function U(){return D||(j(async()=>{await S(),await L()}),D=!0),{access_token:b,email:C,password:P,authData:_,user:p,userDB:n,userCreate:F,userRead:L,refreshToken:S,submitLogin:z,logoutUser:H}}async function S(){try{let e=await n.refresh();b.value=e.access_token,delete e.access_token,_.value=e}catch(e){console.log(e.errors[0])}}async function z(){try{let e=await n.login(C.value,P.value);b.value=e.access_token,delete e.access_token,_.value={...e}}catch(e){console.log(e.errors[0])}}async function L(){try{return p.value=await n.request(O()),p.value.players=await n.request(T("players",{fields:["*",{synths:["*",{synths_id:["*"]}]}]})),p.value}catch(e){console.log(e)}}async function F({email:e}){}async function H(){await n.logout(),b.value="",_.value=""}const K={class:"flex flex-col gap-4 p-4"},Q=s("div",{class:"text-xl"},"Profile",-1),W={class:"text-sm"},X={__name:"AuthProfile",setup(e){const{user:a}=U();return(x,v)=>(f(),g("div",K,[Q,s("pre",W,h(o(a)),1)]))}},Y=s("div",{class:"text-4xl"},"Login to your account",-1),Z=s("label",{class:"text-xl",for:"email"},"E-mail*:",-1),ee=s("label",{class:"text-xl",for:"email"},"Password:",-1),te={key:1,class:"flex flex-col gap-2"},se={class:"font-mono text-xs"},oe={class:"text-sm"},re={class:"flex"},ae={__name:"AuthLogin",setup(e){const{userRead:a,user:x,userDB:v,email:d,password:i,authData:m,access_token:c,submitLogin:u,refreshToken:A,logoutUser:B}=U();return(de,t)=>{const N=X;return o(c)?(f(),g("div",te,[s("p",se,"."+h(o(c).split(".")[2]),1),s("pre",oe,h(o(m)),1),s("div",re,[s("button",{class:"text-xl font-bold rounded-lg p-4 border-2 border-solid dark-border-light-300 border-dark-800 shadow-lg dark-bg-dark-200",type:"submit",onClick:t[4]||(t[4]=r=>o(A)())},"Refresh"),s("button",{class:"text-xl font-bold rounded-lg p-4 border-2 border-solid dark-border-light-300 border-dark-800 shadow-lg dark-bg-dark-200",type:"submit",onClick:t[5]||(t[5]=r=>o(B)())},"Log out")]),s("button",{class:"text-xl font-bold rounded-lg p-4 border-2 border-solid dark-border-light-300 border-dark-800 shadow-lg dark-bg-dark-200",type:"submit",onClick:t[6]||(t[6]=r=>o(a)())},"Read user"),k(N)])):(f(),g("form",{key:0,class:"flex flex-col gap-4",onSubmit:t[3]||(t[3]=q((...r)=>o(u)&&o(u)(...r),["prevent"]))},[Y,Z,y(s("input",{class:"text-lg rounded-lg p-4 border-2 border-solid dark-border-light-300 border-dark-800 shadow-inner dark-bg-dark-200",id:"email",type:"text","onUpdate:modelValue":t[0]||(t[0]=r=>$(d)?d.value=r:null)},null,512),[[w,o(d)]]),ee,y(s("input",{class:"rounded-lg p-4 border-2 border-solid dark-border-light-300 border-dark-800 shadow-inner dark-bg-dark-200",type:"password","onUpdate:modelValue":t[1]||(t[1]=r=>$(i)?i.value=r:null)},null,512),[[w,o(i)]]),s("button",{class:"text-xl font-bold rounded-lg p-4 border-2 border-solid dark-border-light-300 border-dark-800 shadow-lg dark-bg-dark-200",type:"submit",onClick:t[2]||(t[2]=(...r)=>o(u)&&o(u)(...r))},"Sign In")],32))}}},pe=JSON.parse('{"title":"Login","description":"","frontmatter":{"title":"Login","desctiption":"Get in touch with community through contributions"},"headers":[],"relativePath":"auth/index.md","filePath":"auth/index.md","lastUpdated":1713874304000}'),ne={name:"auth/index.md"};function le(e,a,x,v,d,i){const m=ae,c=R;return f(),g("div",null,[k(m),k(c)])}const fe=E(ne,[["render",le]]);export{pe as __pageData,fe as default}; diff --git a/assets/auth_index.md.QeBiS1Uo.lean.js b/assets/auth_index.md.CCxxwTF6.lean.js similarity index 98% rename from assets/auth_index.md.QeBiS1Uo.lean.js rename to assets/auth_index.md.CCxxwTF6.lean.js index 800fe317..b69b57fe 100644 --- a/assets/auth_index.md.QeBiS1Uo.lean.js +++ b/assets/auth_index.md.CCxxwTF6.lean.js @@ -1 +1 @@ -import{_ as R}from"./chunks/theme.TKyytG40.js";import{u as V,D as I,a as J,A as M,f as O,x as T}from"./chunks/index.OsI8M1nP.js";import{r as l,o as j,b as f,d as g,g as s,t as h,f as o,e as y,j as w,k as $,C as q,y as k,_ as E}from"./chunks/framework.DA3bj7zI.js";class G{get(){return JSON.parse(localStorage.getItem("directus-data"))}set(a){localStorage.setItem("directus-data",JSON.stringify(a))}}const n=V("https://dbs.chromatone.center/").with(I({credentials:"include"})).with(J("json",{credentials:"include",storage:new G})).with(M({credentials:"include"})),p=l(),C=l(""),P=l(""),_=l({}),b=l("");let D=!1;function U(){return D||(j(async()=>{await S(),await L()}),D=!0),{access_token:b,email:C,password:P,authData:_,user:p,userDB:n,userCreate:F,userRead:L,refreshToken:S,submitLogin:z,logoutUser:H}}async function S(){try{let e=await n.refresh();b.value=e.access_token,delete e.access_token,_.value=e}catch(e){console.log(e.errors[0])}}async function z(){try{let e=await n.login(C.value,P.value);b.value=e.access_token,delete e.access_token,_.value={...e}}catch(e){console.log(e.errors[0])}}async function L(){try{return p.value=await n.request(O()),p.value.players=await n.request(T("players",{fields:["*",{synths:["*",{synths_id:["*"]}]}]})),p.value}catch(e){console.log(e)}}async function F({email:e}){}async function H(){await n.logout(),b.value="",_.value=""}const K={class:"flex flex-col gap-4 p-4"},Q=s("div",{class:"text-xl"},"Profile",-1),W={class:"text-sm"},X={__name:"AuthProfile",setup(e){const{user:a}=U();return(x,v)=>(f(),g("div",K,[Q,s("pre",W,h(o(a)),1)]))}},Y=s("div",{class:"text-4xl"},"Login to your account",-1),Z=s("label",{class:"text-xl",for:"email"},"E-mail*:",-1),ee=s("label",{class:"text-xl",for:"email"},"Password:",-1),te={key:1,class:"flex flex-col gap-2"},se={class:"font-mono text-xs"},oe={class:"text-sm"},re={class:"flex"},ae={__name:"AuthLogin",setup(e){const{userRead:a,user:x,userDB:v,email:d,password:i,authData:m,access_token:c,submitLogin:u,refreshToken:A,logoutUser:B}=U();return(de,t)=>{const N=X;return o(c)?(f(),g("div",te,[s("p",se,"."+h(o(c).split(".")[2]),1),s("pre",oe,h(o(m)),1),s("div",re,[s("button",{class:"text-xl font-bold rounded-lg p-4 border-2 border-solid dark-border-light-300 border-dark-800 shadow-lg dark-bg-dark-200",type:"submit",onClick:t[4]||(t[4]=r=>o(A)())},"Refresh"),s("button",{class:"text-xl font-bold rounded-lg p-4 border-2 border-solid dark-border-light-300 border-dark-800 shadow-lg dark-bg-dark-200",type:"submit",onClick:t[5]||(t[5]=r=>o(B)())},"Log out")]),s("button",{class:"text-xl font-bold rounded-lg p-4 border-2 border-solid dark-border-light-300 border-dark-800 shadow-lg dark-bg-dark-200",type:"submit",onClick:t[6]||(t[6]=r=>o(a)())},"Read user"),k(N)])):(f(),g("form",{key:0,class:"flex flex-col gap-4",onSubmit:t[3]||(t[3]=q((...r)=>o(u)&&o(u)(...r),["prevent"]))},[Y,Z,y(s("input",{class:"text-lg rounded-lg p-4 border-2 border-solid dark-border-light-300 border-dark-800 shadow-inner dark-bg-dark-200",id:"email",type:"text","onUpdate:modelValue":t[0]||(t[0]=r=>$(d)?d.value=r:null)},null,512),[[w,o(d)]]),ee,y(s("input",{class:"rounded-lg p-4 border-2 border-solid dark-border-light-300 border-dark-800 shadow-inner dark-bg-dark-200",type:"password","onUpdate:modelValue":t[1]||(t[1]=r=>$(i)?i.value=r:null)},null,512),[[w,o(i)]]),s("button",{class:"text-xl font-bold rounded-lg p-4 border-2 border-solid dark-border-light-300 border-dark-800 shadow-lg dark-bg-dark-200",type:"submit",onClick:t[2]||(t[2]=(...r)=>o(u)&&o(u)(...r))},"Sign In")],32))}}},pe=JSON.parse('{"title":"Login","description":"","frontmatter":{"title":"Login","desctiption":"Get in touch with community through contributions"},"headers":[],"relativePath":"auth/index.md","filePath":"auth/index.md","lastUpdated":1711550395000}'),ne={name:"auth/index.md"};function le(e,a,x,v,d,i){const m=ae,c=R;return f(),g("div",null,[k(m),k(c)])}const fe=E(ne,[["render",le]]);export{pe as __pageData,fe as default}; +import{_ as R}from"./chunks/theme.TKyytG40.js";import{u as V,D as I,a as J,A as M,f as O,x as T}from"./chunks/index.OsI8M1nP.js";import{r as l,o as j,b as f,d as g,g as s,t as h,f as o,e as y,j as w,k as $,C as q,y as k,_ as E}from"./chunks/framework.DA3bj7zI.js";class G{get(){return JSON.parse(localStorage.getItem("directus-data"))}set(a){localStorage.setItem("directus-data",JSON.stringify(a))}}const n=V("https://dbs.chromatone.center/").with(I({credentials:"include"})).with(J("json",{credentials:"include",storage:new G})).with(M({credentials:"include"})),p=l(),C=l(""),P=l(""),_=l({}),b=l("");let D=!1;function U(){return D||(j(async()=>{await S(),await L()}),D=!0),{access_token:b,email:C,password:P,authData:_,user:p,userDB:n,userCreate:F,userRead:L,refreshToken:S,submitLogin:z,logoutUser:H}}async function S(){try{let e=await n.refresh();b.value=e.access_token,delete e.access_token,_.value=e}catch(e){console.log(e.errors[0])}}async function z(){try{let e=await n.login(C.value,P.value);b.value=e.access_token,delete e.access_token,_.value={...e}}catch(e){console.log(e.errors[0])}}async function L(){try{return p.value=await n.request(O()),p.value.players=await n.request(T("players",{fields:["*",{synths:["*",{synths_id:["*"]}]}]})),p.value}catch(e){console.log(e)}}async function F({email:e}){}async function H(){await n.logout(),b.value="",_.value=""}const K={class:"flex flex-col gap-4 p-4"},Q=s("div",{class:"text-xl"},"Profile",-1),W={class:"text-sm"},X={__name:"AuthProfile",setup(e){const{user:a}=U();return(x,v)=>(f(),g("div",K,[Q,s("pre",W,h(o(a)),1)]))}},Y=s("div",{class:"text-4xl"},"Login to your account",-1),Z=s("label",{class:"text-xl",for:"email"},"E-mail*:",-1),ee=s("label",{class:"text-xl",for:"email"},"Password:",-1),te={key:1,class:"flex flex-col gap-2"},se={class:"font-mono text-xs"},oe={class:"text-sm"},re={class:"flex"},ae={__name:"AuthLogin",setup(e){const{userRead:a,user:x,userDB:v,email:d,password:i,authData:m,access_token:c,submitLogin:u,refreshToken:A,logoutUser:B}=U();return(de,t)=>{const N=X;return o(c)?(f(),g("div",te,[s("p",se,"."+h(o(c).split(".")[2]),1),s("pre",oe,h(o(m)),1),s("div",re,[s("button",{class:"text-xl font-bold rounded-lg p-4 border-2 border-solid dark-border-light-300 border-dark-800 shadow-lg dark-bg-dark-200",type:"submit",onClick:t[4]||(t[4]=r=>o(A)())},"Refresh"),s("button",{class:"text-xl font-bold rounded-lg p-4 border-2 border-solid dark-border-light-300 border-dark-800 shadow-lg dark-bg-dark-200",type:"submit",onClick:t[5]||(t[5]=r=>o(B)())},"Log out")]),s("button",{class:"text-xl font-bold rounded-lg p-4 border-2 border-solid dark-border-light-300 border-dark-800 shadow-lg dark-bg-dark-200",type:"submit",onClick:t[6]||(t[6]=r=>o(a)())},"Read user"),k(N)])):(f(),g("form",{key:0,class:"flex flex-col gap-4",onSubmit:t[3]||(t[3]=q((...r)=>o(u)&&o(u)(...r),["prevent"]))},[Y,Z,y(s("input",{class:"text-lg rounded-lg p-4 border-2 border-solid dark-border-light-300 border-dark-800 shadow-inner dark-bg-dark-200",id:"email",type:"text","onUpdate:modelValue":t[0]||(t[0]=r=>$(d)?d.value=r:null)},null,512),[[w,o(d)]]),ee,y(s("input",{class:"rounded-lg p-4 border-2 border-solid dark-border-light-300 border-dark-800 shadow-inner dark-bg-dark-200",type:"password","onUpdate:modelValue":t[1]||(t[1]=r=>$(i)?i.value=r:null)},null,512),[[w,o(i)]]),s("button",{class:"text-xl font-bold rounded-lg p-4 border-2 border-solid dark-border-light-300 border-dark-800 shadow-lg dark-bg-dark-200",type:"submit",onClick:t[2]||(t[2]=(...r)=>o(u)&&o(u)(...r))},"Sign In")],32))}}},pe=JSON.parse('{"title":"Login","description":"","frontmatter":{"title":"Login","desctiption":"Get in touch with community through contributions"},"headers":[],"relativePath":"auth/index.md","filePath":"auth/index.md","lastUpdated":1713874304000}'),ne={name:"auth/index.md"};function le(e,a,x,v,d,i){const m=ae,c=R;return f(),g("div",null,[k(m),k(c)])}const fe=E(ne,[["render",le]]);export{pe as __pageData,fe as default}; diff --git a/assets/auth_invite.md.DdrEzK2j.js b/assets/auth_invite.md.DYCxXOu5.js similarity index 71% rename from assets/auth_invite.md.DdrEzK2j.js rename to assets/auth_invite.md.DYCxXOu5.js index d5603c92..cb39d1e3 100644 --- a/assets/auth_invite.md.DdrEzK2j.js +++ b/assets/auth_invite.md.DYCxXOu5.js @@ -1 +1 @@ -import{_ as t,d as e,b as a,g as n}from"./chunks/framework.DA3bj7zI.js";const m=JSON.parse('{"title":"Invite","description":"","frontmatter":{"title":"Invite"},"headers":[],"relativePath":"auth/invite.md","filePath":"auth/invite.md","lastUpdated":1711550395000}'),i={name:"auth/invite.md"},s=n("p",null,"Invite a new user PAGE",-1),o=[s];function r(c,d,_,l,p,u){return a(),e("div",null,o)}const v=t(i,[["render",r]]);export{m as __pageData,v as default}; +import{_ as t,d as e,b as a,g as n}from"./chunks/framework.DA3bj7zI.js";const m=JSON.parse('{"title":"Invite","description":"","frontmatter":{"title":"Invite"},"headers":[],"relativePath":"auth/invite.md","filePath":"auth/invite.md","lastUpdated":1713874304000}'),i={name:"auth/invite.md"},s=n("p",null,"Invite a new user PAGE",-1),o=[s];function r(c,d,_,l,p,u){return a(),e("div",null,o)}const v=t(i,[["render",r]]);export{m as __pageData,v as default}; diff --git a/assets/auth_invite.md.DdrEzK2j.lean.js b/assets/auth_invite.md.DYCxXOu5.lean.js similarity index 71% rename from assets/auth_invite.md.DdrEzK2j.lean.js rename to assets/auth_invite.md.DYCxXOu5.lean.js index d5603c92..cb39d1e3 100644 --- a/assets/auth_invite.md.DdrEzK2j.lean.js +++ b/assets/auth_invite.md.DYCxXOu5.lean.js @@ -1 +1 @@ -import{_ as t,d as e,b as a,g as n}from"./chunks/framework.DA3bj7zI.js";const m=JSON.parse('{"title":"Invite","description":"","frontmatter":{"title":"Invite"},"headers":[],"relativePath":"auth/invite.md","filePath":"auth/invite.md","lastUpdated":1711550395000}'),i={name:"auth/invite.md"},s=n("p",null,"Invite a new user PAGE",-1),o=[s];function r(c,d,_,l,p,u){return a(),e("div",null,o)}const v=t(i,[["render",r]]);export{m as __pageData,v as default}; +import{_ as t,d as e,b as a,g as n}from"./chunks/framework.DA3bj7zI.js";const m=JSON.parse('{"title":"Invite","description":"","frontmatter":{"title":"Invite"},"headers":[],"relativePath":"auth/invite.md","filePath":"auth/invite.md","lastUpdated":1713874304000}'),i={name:"auth/invite.md"},s=n("p",null,"Invite a new user PAGE",-1),o=[s];function r(c,d,_,l,p,u){return a(),e("div",null,o)}const v=t(i,[["render",r]]);export{m as __pageData,v as default}; diff --git a/assets/auth_logout.md.Cewl1AND.js b/assets/auth_logout.md.Ck5mdKg9.js similarity index 86% rename from assets/auth_logout.md.Cewl1AND.js rename to assets/auth_logout.md.Ck5mdKg9.js index 7864b530..856e18c1 100644 --- a/assets/auth_logout.md.Cewl1AND.js +++ b/assets/auth_logout.md.Ck5mdKg9.js @@ -1 +1 @@ -import{_ as t,d as e,b as o,g as a}from"./chunks/framework.DA3bj7zI.js";const m=JSON.parse('{"title":"Log Out","description":"","frontmatter":{"title":"Log Out","desctiption":"Log out from the site"},"headers":[],"relativePath":"auth/logout.md","filePath":"auth/logout.md","lastUpdated":1711550395000}'),s={name:"auth/logout.md"},n=a("p",null,"LOGIN PAGE",-1),r=[n];function c(d,l,i,u,_,p){return o(),e("div",null,r)}const f=t(s,[["render",c]]);export{m as __pageData,f as default}; +import{_ as t,d as e,b as o,g as a}from"./chunks/framework.DA3bj7zI.js";const m=JSON.parse('{"title":"Log Out","description":"","frontmatter":{"title":"Log Out","desctiption":"Log out from the site"},"headers":[],"relativePath":"auth/logout.md","filePath":"auth/logout.md","lastUpdated":1713874304000}'),s={name:"auth/logout.md"},n=a("p",null,"LOGIN PAGE",-1),r=[n];function c(d,l,i,u,_,p){return o(),e("div",null,r)}const f=t(s,[["render",c]]);export{m as __pageData,f as default}; diff --git a/assets/auth_logout.md.Cewl1AND.lean.js b/assets/auth_logout.md.Ck5mdKg9.lean.js similarity index 86% rename from assets/auth_logout.md.Cewl1AND.lean.js rename to assets/auth_logout.md.Ck5mdKg9.lean.js index 7864b530..856e18c1 100644 --- a/assets/auth_logout.md.Cewl1AND.lean.js +++ b/assets/auth_logout.md.Ck5mdKg9.lean.js @@ -1 +1 @@ -import{_ as t,d as e,b as o,g as a}from"./chunks/framework.DA3bj7zI.js";const m=JSON.parse('{"title":"Log Out","description":"","frontmatter":{"title":"Log Out","desctiption":"Log out from the site"},"headers":[],"relativePath":"auth/logout.md","filePath":"auth/logout.md","lastUpdated":1711550395000}'),s={name:"auth/logout.md"},n=a("p",null,"LOGIN PAGE",-1),r=[n];function c(d,l,i,u,_,p){return o(),e("div",null,r)}const f=t(s,[["render",c]]);export{m as __pageData,f as default}; +import{_ as t,d as e,b as o,g as a}from"./chunks/framework.DA3bj7zI.js";const m=JSON.parse('{"title":"Log Out","description":"","frontmatter":{"title":"Log Out","desctiption":"Log out from the site"},"headers":[],"relativePath":"auth/logout.md","filePath":"auth/logout.md","lastUpdated":1713874304000}'),s={name:"auth/logout.md"},n=a("p",null,"LOGIN PAGE",-1),r=[n];function c(d,l,i,u,_,p){return o(),e("div",null,r)}const f=t(s,[["render",c]]);export{m as __pageData,f as default}; diff --git a/assets/auth_reset.md.DcV3kbsy.js b/assets/auth_reset.md.OAZjQyas.js similarity index 86% rename from assets/auth_reset.md.DcV3kbsy.js rename to assets/auth_reset.md.OAZjQyas.js index 73703e9b..b24a69fe 100644 --- a/assets/auth_reset.md.DcV3kbsy.js +++ b/assets/auth_reset.md.OAZjQyas.js @@ -1 +1 @@ -import{_ as e,d as t,b as s,g as a}from"./chunks/framework.DA3bj7zI.js";const u=JSON.parse('{"title":"Reset password","description":"","frontmatter":{"title":"Reset password"},"headers":[],"relativePath":"auth/reset.md","filePath":"auth/reset.md","lastUpdated":1711550395000}'),r={name:"auth/reset.md"},o=a("p",null,"PASSWORD RESET PAGE",-1),n=[o];function d(c,p,_,i,l,h){return s(),t("div",null,n)}const f=e(r,[["render",d]]);export{u as __pageData,f as default}; +import{_ as e,d as t,b as s,g as a}from"./chunks/framework.DA3bj7zI.js";const u=JSON.parse('{"title":"Reset password","description":"","frontmatter":{"title":"Reset password"},"headers":[],"relativePath":"auth/reset.md","filePath":"auth/reset.md","lastUpdated":1713874304000}'),r={name:"auth/reset.md"},o=a("p",null,"PASSWORD RESET PAGE",-1),n=[o];function d(c,p,_,i,l,h){return s(),t("div",null,n)}const f=e(r,[["render",d]]);export{u as __pageData,f as default}; diff --git a/assets/auth_reset.md.DcV3kbsy.lean.js b/assets/auth_reset.md.OAZjQyas.lean.js similarity index 86% rename from assets/auth_reset.md.DcV3kbsy.lean.js rename to assets/auth_reset.md.OAZjQyas.lean.js index 73703e9b..b24a69fe 100644 --- a/assets/auth_reset.md.DcV3kbsy.lean.js +++ b/assets/auth_reset.md.OAZjQyas.lean.js @@ -1 +1 @@ -import{_ as e,d as t,b as s,g as a}from"./chunks/framework.DA3bj7zI.js";const u=JSON.parse('{"title":"Reset password","description":"","frontmatter":{"title":"Reset password"},"headers":[],"relativePath":"auth/reset.md","filePath":"auth/reset.md","lastUpdated":1711550395000}'),r={name:"auth/reset.md"},o=a("p",null,"PASSWORD RESET PAGE",-1),n=[o];function d(c,p,_,i,l,h){return s(),t("div",null,n)}const f=e(r,[["render",d]]);export{u as __pageData,f as default}; +import{_ as e,d as t,b as s,g as a}from"./chunks/framework.DA3bj7zI.js";const u=JSON.parse('{"title":"Reset password","description":"","frontmatter":{"title":"Reset password"},"headers":[],"relativePath":"auth/reset.md","filePath":"auth/reset.md","lastUpdated":1713874304000}'),r={name:"auth/reset.md"},o=a("p",null,"PASSWORD RESET PAGE",-1),n=[o];function d(c,p,_,i,l,h){return s(),t("div",null,n)}const f=e(r,[["render",d]]);export{u as __pageData,f as default}; diff --git a/assets/bassoon_index.md.CtkSoO4E.js b/assets/bassoon_index.md.DfJY8utO.js similarity index 88% rename from assets/bassoon_index.md.CtkSoO4E.js rename to assets/bassoon_index.md.DfJY8utO.js index 11354cdc..74fdbd70 100644 --- a/assets/bassoon_index.md.CtkSoO4E.js +++ b/assets/bassoon_index.md.DfJY8utO.js @@ -1 +1 @@ -import{_ as t}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as r,y as o,R as n,S as c,f as i,b as l}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const w=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.stef.be/bassoontracker/","date_created":"2024-03-14T07:04:03.311Z","title":"Bassoon Tracker","slug":"bassoon","author":"Steffest","author_link":" https://www.stef.be","description":"Browser-based old-school Amiga Music Tracker in plain old JavaScript.","tags":["FM","tracker","8-bit","low-fi"],"archive_link":null,"archive":false,"iframe":true,"cover":"70c9db80-8ef8-4aa5-9dcd-6b5c3c0da5b2","id":53,"sort":23,"clicks":10,"public":false,"is_new":true,"stats":[45]},"relativePath":"bassoon/index.md","filePath":"bassoon/index.md","lastUpdated":0}'),d={name:"bassoon/index.md"},g=Object.assign(d,{setup(p){const{params:a,frontmatter:m}=s();return(_,f)=>{const e=t;return l(),r("div",null,[o(e,n(c(i(a))),null,16)])}}});export{w as __pageData,g as default}; +import{_ as t}from"./chunks/SynthPage.B19zwNJN.js";import{s,d as r,y as o,R as n,S as c,f as i,b as l}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const w=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.stef.be/bassoontracker/","date_created":"2024-03-14T07:04:03.311Z","title":"Bassoon Tracker","slug":"bassoon","author":"Steffest","author_link":" https://www.stef.be","description":"Browser-based old-school Amiga Music Tracker in plain old JavaScript.","tags":["FM","tracker","8-bit","low-fi"],"archive_link":null,"archive":false,"iframe":true,"cover":"70c9db80-8ef8-4aa5-9dcd-6b5c3c0da5b2","id":53,"sort":24,"clicks":10,"public":false,"is_new":true,"stats":[45]},"relativePath":"bassoon/index.md","filePath":"bassoon/index.md","lastUpdated":0}'),d={name:"bassoon/index.md"},g=Object.assign(d,{setup(p){const{params:a,frontmatter:m}=s();return(_,f)=>{const e=t;return l(),r("div",null,[o(e,n(c(i(a))),null,16)])}}});export{w as __pageData,g as default}; diff --git a/assets/bassoon_index.md.CtkSoO4E.lean.js b/assets/bassoon_index.md.DfJY8utO.lean.js similarity index 88% rename from assets/bassoon_index.md.CtkSoO4E.lean.js rename to assets/bassoon_index.md.DfJY8utO.lean.js index 11354cdc..74fdbd70 100644 --- a/assets/bassoon_index.md.CtkSoO4E.lean.js +++ b/assets/bassoon_index.md.DfJY8utO.lean.js @@ -1 +1 @@ -import{_ as t}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as r,y as o,R as n,S as c,f as i,b as l}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const w=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.stef.be/bassoontracker/","date_created":"2024-03-14T07:04:03.311Z","title":"Bassoon Tracker","slug":"bassoon","author":"Steffest","author_link":" https://www.stef.be","description":"Browser-based old-school Amiga Music Tracker in plain old JavaScript.","tags":["FM","tracker","8-bit","low-fi"],"archive_link":null,"archive":false,"iframe":true,"cover":"70c9db80-8ef8-4aa5-9dcd-6b5c3c0da5b2","id":53,"sort":23,"clicks":10,"public":false,"is_new":true,"stats":[45]},"relativePath":"bassoon/index.md","filePath":"bassoon/index.md","lastUpdated":0}'),d={name:"bassoon/index.md"},g=Object.assign(d,{setup(p){const{params:a,frontmatter:m}=s();return(_,f)=>{const e=t;return l(),r("div",null,[o(e,n(c(i(a))),null,16)])}}});export{w as __pageData,g as default}; +import{_ as t}from"./chunks/SynthPage.B19zwNJN.js";import{s,d as r,y as o,R as n,S as c,f as i,b as l}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const w=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.stef.be/bassoontracker/","date_created":"2024-03-14T07:04:03.311Z","title":"Bassoon Tracker","slug":"bassoon","author":"Steffest","author_link":" https://www.stef.be","description":"Browser-based old-school Amiga Music Tracker in plain old JavaScript.","tags":["FM","tracker","8-bit","low-fi"],"archive_link":null,"archive":false,"iframe":true,"cover":"70c9db80-8ef8-4aa5-9dcd-6b5c3c0da5b2","id":53,"sort":24,"clicks":10,"public":false,"is_new":true,"stats":[45]},"relativePath":"bassoon/index.md","filePath":"bassoon/index.md","lastUpdated":0}'),d={name:"bassoon/index.md"},g=Object.assign(d,{setup(p){const{params:a,frontmatter:m}=s();return(_,f)=>{const e=t;return l(),r("div",null,[o(e,n(c(i(a))),null,16)])}}});export{w as __pageData,g as default}; diff --git a/assets/beepbox_index.md.CnBRBmfz.js b/assets/beepbox_index.md.CO50im6t.js similarity index 93% rename from assets/beepbox_index.md.CnBRBmfz.js rename to assets/beepbox_index.md.CO50im6t.js index ed7eb42e..24f599be 100644 --- a/assets/beepbox_index.md.CnBRBmfz.js +++ b/assets/beepbox_index.md.CO50im6t.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as n,y as r,R as i,S as d,f as l,g as e,b as c}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const p=e("p",null,"BeepBox is developed by John Nesky.",-1),h=e("p",null,"BeepBox does not claim ownership over songs created with it, so original songs belong to their authors.",-1),u=e("p",null,"Neither John Nesky nor BeepBox assume responsibility for any copyrighted material played on BeepBox. No songs are ever received, recorded, or distributed by BeepBox's servers. All song data is contained in the URL after the hash (#) mark, and your song data will not leave your device unless you copy and share the URL. BeepBox does not collect, track, or share any user data.",-1),k=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.beepbox.co","date_created":"2024-03-21T02:43:35.749Z","title":"BeepBox","slug":"beepbox","author":"John Nesky","author_link":"https://johnnesky.com/","description":"BeepBox is an online tool for sketching and sharing instrumental music.\\n\\nAll song data is contained in the URL at the top of your browser. When you make changes to the song, the URL is updated to reflect your changes. When you are satisfied with your song, just copy and paste the URL to save and share your song!\\n\\nBeepBox is a passion project, and will always be free to use. ","tags":["Poly","Sequencer","FM"],"archive_link":null,"archive":false,"iframe":true,"cover":"dea37f5f-504c-443f-ba9a-3dff4d583506","id":54,"sort":18,"clicks":10,"public":false,"is_new":true,"stats":[46]},"relativePath":"beepbox/index.md","filePath":"beepbox/index.md","lastUpdated":0}'),m={name:"beepbox/index.md"},w=Object.assign(m,{setup(y){const{params:o,frontmatter:_}=s();return(f,g)=>{const t=a;return c(),n("div",null,[r(t,i(d(l(o))),null,16),p,h,u])}}});export{k as __pageData,w as default}; +import{_ as a}from"./chunks/SynthPage.B19zwNJN.js";import{s,d as n,y as r,R as i,S as d,f as l,g as e,b as c}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const p=e("p",null,"BeepBox is developed by John Nesky.",-1),h=e("p",null,"BeepBox does not claim ownership over songs created with it, so original songs belong to their authors.",-1),u=e("p",null,"Neither John Nesky nor BeepBox assume responsibility for any copyrighted material played on BeepBox. No songs are ever received, recorded, or distributed by BeepBox's servers. All song data is contained in the URL after the hash (#) mark, and your song data will not leave your device unless you copy and share the URL. BeepBox does not collect, track, or share any user data.",-1),k=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.beepbox.co","date_created":"2024-03-21T02:43:35.749Z","title":"BeepBox","slug":"beepbox","author":"John Nesky","author_link":"https://johnnesky.com/","description":"BeepBox is an online tool for sketching and sharing instrumental music.\\n\\nAll song data is contained in the URL at the top of your browser. When you make changes to the song, the URL is updated to reflect your changes. When you are satisfied with your song, just copy and paste the URL to save and share your song!\\n\\nBeepBox is a passion project, and will always be free to use. ","tags":["Poly","Sequencer","FM"],"archive_link":null,"archive":false,"iframe":true,"cover":"dea37f5f-504c-443f-ba9a-3dff4d583506","id":54,"sort":19,"clicks":10,"public":false,"is_new":true,"stats":[46]},"relativePath":"beepbox/index.md","filePath":"beepbox/index.md","lastUpdated":0}'),m={name:"beepbox/index.md"},w=Object.assign(m,{setup(y){const{params:o,frontmatter:_}=s();return(f,g)=>{const t=a;return c(),n("div",null,[r(t,i(d(l(o))),null,16),p,h,u])}}});export{k as __pageData,w as default}; diff --git a/assets/beepbox_index.md.CnBRBmfz.lean.js b/assets/beepbox_index.md.CO50im6t.lean.js similarity index 93% rename from assets/beepbox_index.md.CnBRBmfz.lean.js rename to assets/beepbox_index.md.CO50im6t.lean.js index ed7eb42e..24f599be 100644 --- a/assets/beepbox_index.md.CnBRBmfz.lean.js +++ b/assets/beepbox_index.md.CO50im6t.lean.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as n,y as r,R as i,S as d,f as l,g as e,b as c}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const p=e("p",null,"BeepBox is developed by John Nesky.",-1),h=e("p",null,"BeepBox does not claim ownership over songs created with it, so original songs belong to their authors.",-1),u=e("p",null,"Neither John Nesky nor BeepBox assume responsibility for any copyrighted material played on BeepBox. No songs are ever received, recorded, or distributed by BeepBox's servers. All song data is contained in the URL after the hash (#) mark, and your song data will not leave your device unless you copy and share the URL. BeepBox does not collect, track, or share any user data.",-1),k=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.beepbox.co","date_created":"2024-03-21T02:43:35.749Z","title":"BeepBox","slug":"beepbox","author":"John Nesky","author_link":"https://johnnesky.com/","description":"BeepBox is an online tool for sketching and sharing instrumental music.\\n\\nAll song data is contained in the URL at the top of your browser. When you make changes to the song, the URL is updated to reflect your changes. When you are satisfied with your song, just copy and paste the URL to save and share your song!\\n\\nBeepBox is a passion project, and will always be free to use. ","tags":["Poly","Sequencer","FM"],"archive_link":null,"archive":false,"iframe":true,"cover":"dea37f5f-504c-443f-ba9a-3dff4d583506","id":54,"sort":18,"clicks":10,"public":false,"is_new":true,"stats":[46]},"relativePath":"beepbox/index.md","filePath":"beepbox/index.md","lastUpdated":0}'),m={name:"beepbox/index.md"},w=Object.assign(m,{setup(y){const{params:o,frontmatter:_}=s();return(f,g)=>{const t=a;return c(),n("div",null,[r(t,i(d(l(o))),null,16),p,h,u])}}});export{k as __pageData,w as default}; +import{_ as a}from"./chunks/SynthPage.B19zwNJN.js";import{s,d as n,y as r,R as i,S as d,f as l,g as e,b as c}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const p=e("p",null,"BeepBox is developed by John Nesky.",-1),h=e("p",null,"BeepBox does not claim ownership over songs created with it, so original songs belong to their authors.",-1),u=e("p",null,"Neither John Nesky nor BeepBox assume responsibility for any copyrighted material played on BeepBox. No songs are ever received, recorded, or distributed by BeepBox's servers. All song data is contained in the URL after the hash (#) mark, and your song data will not leave your device unless you copy and share the URL. BeepBox does not collect, track, or share any user data.",-1),k=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.beepbox.co","date_created":"2024-03-21T02:43:35.749Z","title":"BeepBox","slug":"beepbox","author":"John Nesky","author_link":"https://johnnesky.com/","description":"BeepBox is an online tool for sketching and sharing instrumental music.\\n\\nAll song data is contained in the URL at the top of your browser. When you make changes to the song, the URL is updated to reflect your changes. When you are satisfied with your song, just copy and paste the URL to save and share your song!\\n\\nBeepBox is a passion project, and will always be free to use. ","tags":["Poly","Sequencer","FM"],"archive_link":null,"archive":false,"iframe":true,"cover":"dea37f5f-504c-443f-ba9a-3dff4d583506","id":54,"sort":19,"clicks":10,"public":false,"is_new":true,"stats":[46]},"relativePath":"beepbox/index.md","filePath":"beepbox/index.md","lastUpdated":0}'),m={name:"beepbox/index.md"},w=Object.assign(m,{setup(y){const{params:o,frontmatter:_}=s();return(f,g)=>{const t=a;return c(),n("div",null,[r(t,i(d(l(o))),null,16),p,h,u])}}});export{k as __pageData,w as default}; diff --git a/assets/blokdust_index.md.zxmuXVPq.js b/assets/blokdust_index.md.DjRxTR6L.js similarity index 91% rename from assets/blokdust_index.md.zxmuXVPq.js rename to assets/blokdust_index.md.DjRxTR6L.js index f5604a09..57e97cb5 100644 --- a/assets/blokdust_index.md.zxmuXVPq.js +++ b/assets/blokdust_index.md.DjRxTR6L.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as o,y as i,R as r,S as n,f as l,g as d,b as c}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const u=d("p",null,"Luke Twyman - project concept, design & Ul. whitevinyldesign.com @whitevinylUK Luke Phillips - audio development & musical interaction. femurdesign.com @lukephills Edward Silverton - client & server architecture & core development. edsilv.com @edsilv",-1),b=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.blokdust.com/","date_created":"2023-11-25T06:31:23.261Z","title":"BlokDust","slug":"blokdust","author":"Luke Twyman, Luke Phillips, Edward Silverton","author_link":"https://wvnl.xyz/","description":"BlokDust is a creative visual drag and drop music exploration tool. Developed in Brighton UK and released in 2016, BlokDust uses the Web Audio API and makes use of Tone.js as an audio framework.","tags":["creative","sequencer"],"archive_link":null,"archive":false,"iframe":true,"cover":"7e5bcda8-f37a-46c0-91d9-0a6ea501a101","id":47,"sort":40,"clicks":19,"public":false,"is_new":false,"stats":[35]},"relativePath":"blokdust/index.md","filePath":"blokdust/index.md","lastUpdated":0}'),p={name:"blokdust/index.md"},y=Object.assign(p,{setup(m){const{params:e,frontmatter:_}=s();return(h,f)=>{const t=a;return c(),o("div",null,[i(t,r(n(l(e))),null,16),u])}}});export{b as __pageData,y as default}; +import{_ as a}from"./chunks/SynthPage.B19zwNJN.js";import{s,d as o,y as i,R as r,S as n,f as l,g as d,b as c}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const u=d("p",null,"Luke Twyman - project concept, design & Ul. whitevinyldesign.com @whitevinylUK Luke Phillips - audio development & musical interaction. femurdesign.com @lukephills Edward Silverton - client & server architecture & core development. edsilv.com @edsilv",-1),b=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.blokdust.com/","date_created":"2023-11-25T06:31:23.261Z","title":"BlokDust","slug":"blokdust","author":"Luke Twyman, Luke Phillips, Edward Silverton","author_link":"https://wvnl.xyz/","description":"BlokDust is a creative visual drag and drop music exploration tool. Developed in Brighton UK and released in 2016, BlokDust uses the Web Audio API and makes use of Tone.js as an audio framework.","tags":["creative","sequencer"],"archive_link":null,"archive":false,"iframe":true,"cover":"7e5bcda8-f37a-46c0-91d9-0a6ea501a101","id":47,"sort":41,"clicks":19,"public":false,"is_new":false,"stats":[35]},"relativePath":"blokdust/index.md","filePath":"blokdust/index.md","lastUpdated":0}'),p={name:"blokdust/index.md"},y=Object.assign(p,{setup(m){const{params:e,frontmatter:_}=s();return(h,f)=>{const t=a;return c(),o("div",null,[i(t,r(n(l(e))),null,16),u])}}});export{b as __pageData,y as default}; diff --git a/assets/blokdust_index.md.zxmuXVPq.lean.js b/assets/blokdust_index.md.DjRxTR6L.lean.js similarity index 91% rename from assets/blokdust_index.md.zxmuXVPq.lean.js rename to assets/blokdust_index.md.DjRxTR6L.lean.js index f5604a09..57e97cb5 100644 --- a/assets/blokdust_index.md.zxmuXVPq.lean.js +++ b/assets/blokdust_index.md.DjRxTR6L.lean.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as o,y as i,R as r,S as n,f as l,g as d,b as c}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const u=d("p",null,"Luke Twyman - project concept, design & Ul. whitevinyldesign.com @whitevinylUK Luke Phillips - audio development & musical interaction. femurdesign.com @lukephills Edward Silverton - client & server architecture & core development. edsilv.com @edsilv",-1),b=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.blokdust.com/","date_created":"2023-11-25T06:31:23.261Z","title":"BlokDust","slug":"blokdust","author":"Luke Twyman, Luke Phillips, Edward Silverton","author_link":"https://wvnl.xyz/","description":"BlokDust is a creative visual drag and drop music exploration tool. Developed in Brighton UK and released in 2016, BlokDust uses the Web Audio API and makes use of Tone.js as an audio framework.","tags":["creative","sequencer"],"archive_link":null,"archive":false,"iframe":true,"cover":"7e5bcda8-f37a-46c0-91d9-0a6ea501a101","id":47,"sort":40,"clicks":19,"public":false,"is_new":false,"stats":[35]},"relativePath":"blokdust/index.md","filePath":"blokdust/index.md","lastUpdated":0}'),p={name:"blokdust/index.md"},y=Object.assign(p,{setup(m){const{params:e,frontmatter:_}=s();return(h,f)=>{const t=a;return c(),o("div",null,[i(t,r(n(l(e))),null,16),u])}}});export{b as __pageData,y as default}; +import{_ as a}from"./chunks/SynthPage.B19zwNJN.js";import{s,d as o,y as i,R as r,S as n,f as l,g as d,b as c}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const u=d("p",null,"Luke Twyman - project concept, design & Ul. whitevinyldesign.com @whitevinylUK Luke Phillips - audio development & musical interaction. femurdesign.com @lukephills Edward Silverton - client & server architecture & core development. edsilv.com @edsilv",-1),b=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.blokdust.com/","date_created":"2023-11-25T06:31:23.261Z","title":"BlokDust","slug":"blokdust","author":"Luke Twyman, Luke Phillips, Edward Silverton","author_link":"https://wvnl.xyz/","description":"BlokDust is a creative visual drag and drop music exploration tool. Developed in Brighton UK and released in 2016, BlokDust uses the Web Audio API and makes use of Tone.js as an audio framework.","tags":["creative","sequencer"],"archive_link":null,"archive":false,"iframe":true,"cover":"7e5bcda8-f37a-46c0-91d9-0a6ea501a101","id":47,"sort":41,"clicks":19,"public":false,"is_new":false,"stats":[35]},"relativePath":"blokdust/index.md","filePath":"blokdust/index.md","lastUpdated":0}'),p={name:"blokdust/index.md"},y=Object.assign(p,{setup(m){const{params:e,frontmatter:_}=s();return(h,f)=>{const t=a;return c(),o("div",null,[i(t,r(n(l(e))),null,16),u])}}});export{b as __pageData,y as default}; diff --git a/assets/cardboard-synth_index.md._wVYXrIB.js b/assets/cardboard-synth_index.md.BWDkKcYV.js similarity index 88% rename from assets/cardboard-synth_index.md._wVYXrIB.js rename to assets/cardboard-synth_index.md.BWDkKcYV.js index 42679d39..54c59e45 100644 --- a/assets/cardboard-synth_index.md._wVYXrIB.js +++ b/assets/cardboard-synth_index.md.BWDkKcYV.js @@ -1 +1 @@ -import{_ as e}from"./chunks/SynthPage.DHgkhPru.js";import{s as r,d as s,y as n,R as o,S as c,f as i,b as d}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.gsn-lib.org/apps/cardboardsynth/index.html","date_created":"2023-10-27T12:45:54.002Z","title":"Cardboard Synth","slug":"cardboard-synth","author":" Thorsten Thormählen","author_link":"https://www.uni-marburg.de/en/fb12/research-groups/grafikmultimedia/thormae","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"29fe1fcc-ca85-41b3-ab1e-7f10770f2c1f","id":9,"sort":38,"clicks":184,"public":false,"is_new":false,"stats":[33]},"relativePath":"cardboard-synth/index.md","filePath":"cardboard-synth/index.md","lastUpdated":0}'),l={name:"cardboard-synth/index.md"},w=Object.assign(l,{setup(p){const{params:a,frontmatter:m}=r();return(h,u)=>{const t=e;return d(),s("div",null,[n(t,o(c(i(a))),null,16)])}}});export{y as __pageData,w as default}; +import{_ as e}from"./chunks/SynthPage.B19zwNJN.js";import{s as r,d as s,y as n,R as o,S as c,f as i,b as d}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.gsn-lib.org/apps/cardboardsynth/index.html","date_created":"2023-10-27T12:45:54.002Z","title":"Cardboard Synth","slug":"cardboard-synth","author":" Thorsten Thormählen","author_link":"https://www.uni-marburg.de/en/fb12/research-groups/grafikmultimedia/thormae","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"29fe1fcc-ca85-41b3-ab1e-7f10770f2c1f","id":9,"sort":39,"clicks":184,"public":false,"is_new":false,"stats":[33]},"relativePath":"cardboard-synth/index.md","filePath":"cardboard-synth/index.md","lastUpdated":0}'),l={name:"cardboard-synth/index.md"},w=Object.assign(l,{setup(p){const{params:a,frontmatter:m}=r();return(h,u)=>{const t=e;return d(),s("div",null,[n(t,o(c(i(a))),null,16)])}}});export{y as __pageData,w as default}; diff --git a/assets/cardboard-synth_index.md._wVYXrIB.lean.js b/assets/cardboard-synth_index.md.BWDkKcYV.lean.js similarity index 88% rename from assets/cardboard-synth_index.md._wVYXrIB.lean.js rename to assets/cardboard-synth_index.md.BWDkKcYV.lean.js index 42679d39..54c59e45 100644 --- a/assets/cardboard-synth_index.md._wVYXrIB.lean.js +++ b/assets/cardboard-synth_index.md.BWDkKcYV.lean.js @@ -1 +1 @@ -import{_ as e}from"./chunks/SynthPage.DHgkhPru.js";import{s as r,d as s,y as n,R as o,S as c,f as i,b as d}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.gsn-lib.org/apps/cardboardsynth/index.html","date_created":"2023-10-27T12:45:54.002Z","title":"Cardboard Synth","slug":"cardboard-synth","author":" Thorsten Thormählen","author_link":"https://www.uni-marburg.de/en/fb12/research-groups/grafikmultimedia/thormae","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"29fe1fcc-ca85-41b3-ab1e-7f10770f2c1f","id":9,"sort":38,"clicks":184,"public":false,"is_new":false,"stats":[33]},"relativePath":"cardboard-synth/index.md","filePath":"cardboard-synth/index.md","lastUpdated":0}'),l={name:"cardboard-synth/index.md"},w=Object.assign(l,{setup(p){const{params:a,frontmatter:m}=r();return(h,u)=>{const t=e;return d(),s("div",null,[n(t,o(c(i(a))),null,16)])}}});export{y as __pageData,w as default}; +import{_ as e}from"./chunks/SynthPage.B19zwNJN.js";import{s as r,d as s,y as n,R as o,S as c,f as i,b as d}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.gsn-lib.org/apps/cardboardsynth/index.html","date_created":"2023-10-27T12:45:54.002Z","title":"Cardboard Synth","slug":"cardboard-synth","author":" Thorsten Thormählen","author_link":"https://www.uni-marburg.de/en/fb12/research-groups/grafikmultimedia/thormae","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"29fe1fcc-ca85-41b3-ab1e-7f10770f2c1f","id":9,"sort":39,"clicks":184,"public":false,"is_new":false,"stats":[33]},"relativePath":"cardboard-synth/index.md","filePath":"cardboard-synth/index.md","lastUpdated":0}'),l={name:"cardboard-synth/index.md"},w=Object.assign(l,{setup(p){const{params:a,frontmatter:m}=r();return(h,u)=>{const t=e;return d(),s("div",null,[n(t,o(c(i(a))),null,16)])}}});export{y as __pageData,w as default}; diff --git a/assets/cardinal_index.md.ClbFNEJu.js b/assets/cardinal_index.md.ClbFNEJu.js new file mode 100644 index 00000000..7cf27e71 --- /dev/null +++ b/assets/cardinal_index.md.ClbFNEJu.js @@ -0,0 +1 @@ +import{_ as t}from"./chunks/SynthPage.B19zwNJN.js";import{s as o,d as s,y as n,R as i,S as r,f as l,B as d,b as c}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const p=d('

Cardinal is a free and open-source virtual modular synthesizer plugin, available in AudioUnit/CLAP/LV2/VST2/VST3 plugin formats and as a standalone app for FreeBSD, Linux, macOS, Windows and the Web. It is based on the popular VCV Rack but with a focus on being a fully self-contained plugin version.

More specifically, this is a DPF-based plugin wrapper around VCV Rack, using its code directly instead of forking the project, with the target of having a self-contained, fully free and open-source plugin version of Rack. See the why section below for the reasons Cardinal exists, also for frequently asked questions check this FAQ document.

Cardinal contains Rack, some 3rd-party modules and a few internal utilities all in a single binary. All "Core" modules from Rack have been replaced by Cardinal equivalents, simplified to better work for an audio plugin.

Cardinal does not load external modules and does not connect to the official Rack library/store. All VCV branding has been removed (to the best of our knowledge) in order to avoid any trademark issues.

Why ​

Cardinal was created first and foremost as a way to have Rack as a proper open-source audio plugin. A proper audio plugin should be self-contained as much as possible, as to not interfere with the DAW/Host. Loading external modules clearly goes against this idea. Not to mention being open-source, otherwise we are at the mercy of the wishes of a company for what we can and cannot do, which is not something Cardinal's authors wish to abide by.

A self-contained plugin can't be overstated, as DLL/shared-object symbol conflicts can trigger hard-to-debug crashes. While Rack tries to mitigate this as much as possible, crashes due to conflicting modules have already been seen in v2 builds. On the other side, Cardinal redefines class and function names as needed to avoid as many conflicts as possible.

Support for ARM and non-mainstream platforms (for example BSD) has also always been missing from the official Rack since the start. While we can patch the Rack free version to support these, same can't be done with Rack Pro with it being a closed-source product. The online library/store only supports a very specific set of platforms too, so non-supported platforms would need any 3rd-party modules to be manually compiled to make them usable.

Unhappiness with the audio threading behaviour of Rack also plays a role. Both audio and MIDI should be locked to the host audio thread as to minimize (or even altogether remove) latency and jitter. The use of separate threads for MIDI is bad design, one that has been corrected in DAWs and JACK-MIDI for several years... But Rack's use of RtMidi requires separate threading, so Cardinal does not use it.

',9),v=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://cardinal.kx.studio/live","date_created":"2024-05-20T18:57:14.836Z","title":" DISTRHO Cardinal","slug":"cardinal","author":"Filipe Coelho, aka falkTX","author_link":"https://falktx.berlin/","description":"Cardinal is a free and open-source virtual modular synthesizer plugin, available in AudioUnit/CLAP/LV2/VST2/VST3 plugin formats and as a standalone app for FreeBSD, Linux, macOS, Windows and the Web.","tags":["Modular","FM","Poly"],"archive_link":null,"archive":false,"iframe":true,"cover":"dc7070e1-66fd-4f74-95d2-92d8388864e2","id":56,"sort":16,"clicks":5,"public":false,"is_new":true,"stats":[48]},"relativePath":"cardinal/index.md","filePath":"cardinal/index.md","lastUpdated":0}'),u={name:"cardinal/index.md"},w=Object.assign(u,{setup(h){const{params:e,frontmatter:f}=o();return(m,b)=>{const a=t;return c(),s("div",null,[n(a,i(r(l(e))),null,16),p])}}});export{v as __pageData,w as default}; diff --git a/assets/cardinal_index.md.ClbFNEJu.lean.js b/assets/cardinal_index.md.ClbFNEJu.lean.js new file mode 100644 index 00000000..a8118016 --- /dev/null +++ b/assets/cardinal_index.md.ClbFNEJu.lean.js @@ -0,0 +1 @@ +import{_ as t}from"./chunks/SynthPage.B19zwNJN.js";import{s as o,d as s,y as n,R as i,S as r,f as l,B as d,b as c}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const p=d("",9),v=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://cardinal.kx.studio/live","date_created":"2024-05-20T18:57:14.836Z","title":" DISTRHO Cardinal","slug":"cardinal","author":"Filipe Coelho, aka falkTX","author_link":"https://falktx.berlin/","description":"Cardinal is a free and open-source virtual modular synthesizer plugin, available in AudioUnit/CLAP/LV2/VST2/VST3 plugin formats and as a standalone app for FreeBSD, Linux, macOS, Windows and the Web.","tags":["Modular","FM","Poly"],"archive_link":null,"archive":false,"iframe":true,"cover":"dc7070e1-66fd-4f74-95d2-92d8388864e2","id":56,"sort":16,"clicks":5,"public":false,"is_new":true,"stats":[48]},"relativePath":"cardinal/index.md","filePath":"cardinal/index.md","lastUpdated":0}'),u={name:"cardinal/index.md"},w=Object.assign(u,{setup(h){const{params:e,frontmatter:f}=o();return(m,b)=>{const a=t;return c(),s("div",null,[n(a,i(r(l(e))),null,16),p])}}});export{v as __pageData,w as default}; diff --git a/assets/chrome-lab_index.md.BvBA9nEa.js b/assets/chrome-lab_index.md.BtLHLke3.js similarity index 98% rename from assets/chrome-lab_index.md.BvBA9nEa.js rename to assets/chrome-lab_index.md.BtLHLke3.js index 3d77713a..955bf2c7 100644 --- a/assets/chrome-lab_index.md.BvBA9nEa.js +++ b/assets/chrome-lab_index.md.BtLHLke3.js @@ -1 +1 @@ -import{_ as t}from"./chunks/SynthPage.DHgkhPru.js";import{s as o,d as s,y as n,R as r,S as i,f as c,B as h,b as l}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const u=h('

What can it be used for? ​

Many teachers have been using Chrome Music Lab as a tool in their classrooms to explore music and its connections to science, math, art, and more. They’ve been combining it with dance and live instruments. Here’s a collection of some uses we’ve found on Twitter.

Can I use it to make my own songs? ​

Yes. Check out the Song Maker experiment, which lets you make and share your own songs.

Do I need to make an account? ​

Nope. Just open any experiment and start playing.

How were these built? ​

All our experiments are all built with freely accessible web technology such as Web Audio API, WebMIDI, Tone.js, and more. These tools make it easier for coders to build new interactive music experiences. You can get the open-source code to lots of these experiments here on Github.

What devices do these work on? ​

You can play with these experiments across devices – phones, tablets, laptops – just by opening the site on a web browser such as Chrome.

',10),y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://musiclab.chromeexperiments.com/","date_created":"2023-11-26T08:23:47.351Z","title":"Chrome Music Lab","slug":"chrome-lab","author":"Google","author_link":"https://github.com/googlecreativelab/chrome-music-lab","description":"Chrome Music Lab is a website that makes learning music more accessible through fun, hands-on experiments.","tags":["Educational","Keyboard","MIDI","Poly","Piano","Analysis","Mic","Visuals"],"archive_link":null,"archive":false,"iframe":true,"cover":"297b059e-a6fa-4faa-91b2-c2e1e68cf98f","id":50,"sort":11,"clicks":304,"public":false,"is_new":false,"stats":[9]},"relativePath":"chrome-lab/index.md","filePath":"chrome-lab/index.md","lastUpdated":0}'),m={name:"chrome-lab/index.md"},x=Object.assign(m,{setup(d){const{params:e,frontmatter:b}=o();return(p,f)=>{const a=t;return l(),s("div",null,[n(a,r(i(c(e))),null,16),u])}}});export{y as __pageData,x as default}; +import{_ as t}from"./chunks/SynthPage.B19zwNJN.js";import{s as o,d as s,y as n,R as r,S as i,f as c,B as h,b as l}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const u=h('

What can it be used for? ​

Many teachers have been using Chrome Music Lab as a tool in their classrooms to explore music and its connections to science, math, art, and more. They’ve been combining it with dance and live instruments. Here’s a collection of some uses we’ve found on Twitter.

Can I use it to make my own songs? ​

Yes. Check out the Song Maker experiment, which lets you make and share your own songs.

Do I need to make an account? ​

Nope. Just open any experiment and start playing.

How were these built? ​

All our experiments are all built with freely accessible web technology such as Web Audio API, WebMIDI, Tone.js, and more. These tools make it easier for coders to build new interactive music experiences. You can get the open-source code to lots of these experiments here on Github.

What devices do these work on? ​

You can play with these experiments across devices – phones, tablets, laptops – just by opening the site on a web browser such as Chrome.

',10),y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://musiclab.chromeexperiments.com/","date_created":"2023-11-26T08:23:47.351Z","title":"Chrome Music Lab","slug":"chrome-lab","author":"Google","author_link":"https://github.com/googlecreativelab/chrome-music-lab","description":"Chrome Music Lab is a website that makes learning music more accessible through fun, hands-on experiments.","tags":["Educational","Keyboard","MIDI","Poly","Piano","Analysis","Mic","Visuals"],"archive_link":null,"archive":false,"iframe":true,"cover":"297b059e-a6fa-4faa-91b2-c2e1e68cf98f","id":50,"sort":11,"clicks":304,"public":false,"is_new":false,"stats":[9]},"relativePath":"chrome-lab/index.md","filePath":"chrome-lab/index.md","lastUpdated":0}'),m={name:"chrome-lab/index.md"},x=Object.assign(m,{setup(d){const{params:e,frontmatter:b}=o();return(p,f)=>{const a=t;return l(),s("div",null,[n(a,r(i(c(e))),null,16),u])}}});export{y as __pageData,x as default}; diff --git a/assets/chrome-lab_index.md.BvBA9nEa.lean.js b/assets/chrome-lab_index.md.BtLHLke3.lean.js similarity index 94% rename from assets/chrome-lab_index.md.BvBA9nEa.lean.js rename to assets/chrome-lab_index.md.BtLHLke3.lean.js index aa0d4f36..f7cb08aa 100644 --- a/assets/chrome-lab_index.md.BvBA9nEa.lean.js +++ b/assets/chrome-lab_index.md.BtLHLke3.lean.js @@ -1 +1 @@ -import{_ as t}from"./chunks/SynthPage.DHgkhPru.js";import{s as o,d as s,y as n,R as r,S as i,f as c,B as h,b as l}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const u=h("",10),y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://musiclab.chromeexperiments.com/","date_created":"2023-11-26T08:23:47.351Z","title":"Chrome Music Lab","slug":"chrome-lab","author":"Google","author_link":"https://github.com/googlecreativelab/chrome-music-lab","description":"Chrome Music Lab is a website that makes learning music more accessible through fun, hands-on experiments.","tags":["Educational","Keyboard","MIDI","Poly","Piano","Analysis","Mic","Visuals"],"archive_link":null,"archive":false,"iframe":true,"cover":"297b059e-a6fa-4faa-91b2-c2e1e68cf98f","id":50,"sort":11,"clicks":304,"public":false,"is_new":false,"stats":[9]},"relativePath":"chrome-lab/index.md","filePath":"chrome-lab/index.md","lastUpdated":0}'),m={name:"chrome-lab/index.md"},x=Object.assign(m,{setup(d){const{params:e,frontmatter:b}=o();return(p,f)=>{const a=t;return l(),s("div",null,[n(a,r(i(c(e))),null,16),u])}}});export{y as __pageData,x as default}; +import{_ as t}from"./chunks/SynthPage.B19zwNJN.js";import{s as o,d as s,y as n,R as r,S as i,f as c,B as h,b as l}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const u=h("",10),y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://musiclab.chromeexperiments.com/","date_created":"2023-11-26T08:23:47.351Z","title":"Chrome Music Lab","slug":"chrome-lab","author":"Google","author_link":"https://github.com/googlecreativelab/chrome-music-lab","description":"Chrome Music Lab is a website that makes learning music more accessible through fun, hands-on experiments.","tags":["Educational","Keyboard","MIDI","Poly","Piano","Analysis","Mic","Visuals"],"archive_link":null,"archive":false,"iframe":true,"cover":"297b059e-a6fa-4faa-91b2-c2e1e68cf98f","id":50,"sort":11,"clicks":304,"public":false,"is_new":false,"stats":[9]},"relativePath":"chrome-lab/index.md","filePath":"chrome-lab/index.md","lastUpdated":0}'),m={name:"chrome-lab/index.md"},x=Object.assign(m,{setup(d){const{params:e,frontmatter:b}=o();return(p,f)=>{const a=t;return l(),s("div",null,[n(a,r(i(c(e))),null,16),u])}}});export{y as __pageData,x as default}; diff --git a/assets/chunks/SynthPage.B19zwNJN.js b/assets/chunks/SynthPage.B19zwNJN.js new file mode 100644 index 00000000..0812bf6e --- /dev/null +++ b/assets/chunks/SynthPage.B19zwNJN.js @@ -0,0 +1 @@ +import{u as b,b as w,_ as S}from"./useClicks.DKflLG6D.js";import{r as g,w as p,o as _,b as l,d as i,g as t,e as C,v as B,n as N,J as z,y as v,z as m,T as $,t as s,A as L,h as y,K as V,q as c,f as D,I,L as T,i as A}from"./framework.DA3bj7zI.js";const F={class:"flex flex-col gap-4 bg-light-300 dark-bg-dark-300 rounded-lg shadow-xl overflow-hidden mx-auto"},q={class:"h-70vh h-70svh"},E=["title","src"],J={class:"flex flex-col p-4 gap-1 bottom-0 bg-light-100 dark-bg-dark-200 w-full max-w-180 mx-auto mb-12 relative"},K={class:"text-xl flex items-center gap-4"},M={class:"font-bold"},P=t("div",{class:"flex-auto"},null,-1),j={class:"p-0 flex gap-4"},G=["href"],H={class:"px-2 py-0 bg-light-800 dark-bg-dark-800 rounded-xl transition text-sm select-none text-center z-200 flex items-center gap-1 opacity-40 hover-opacity-100 transition"},O=t("div",{class:"i-la-eye"},null,-1),Q={key:0,class:"flex-1 flex items-end flex flex-wrap gap-2"},R={key:1,class:"p-0"},U={class:"mt-4"},Y={__name:"SynthPage",props:{title:{type:String,default:""},description:{type:String,default:""},author:{type:String,default:""},author_link:{type:String,default:""},cover:{type:String,default:""},slug:{type:String,default:""},url:{type:String,default:""},tags:{type:Array,default:[]},archive:{type:Boolean,default:!1},archive_link:{type:String,default:""},iframe:{type:Boolean,default:!1},clicks:{type:Number,default:0},id:{type:Number,default:0}},setup(e){const d=e,n=g(!1),{clickSynth:k,clicksCount:u}=b(d.id);p(()=>d.clicks,a=>u.value=a,{immediate:!0});const h=g(0);return _(async()=>{await k();let a=await w("synth_stats",d.id);h.value=(a==null?void 0:a.stars)||0}),(a,o)=>{var f;const x=S;return l(),i("div",F,[t("div",q,[C(t("div",{class:N(["h-70vh h-70svh bg-cover bg-center absolute z-100 w-full",{"animate-pulse":e.iframe&&!n.value}]),onClick:o[0]||(o[0]=r=>n.value=!0),style:z({backgroundImage:`url(/cover/${e.slug}.webp)`})},null,6),[[B,!n.value]]),v($,{name:"fade"},{default:m(()=>[t("iframe",{class:"w-full h-70vh h-70svh bg-light-100 dark-bg-dark-800",allow:"midi *",onLoad:o[1]||(o[1]=r=>n.value=!0),title:e.title,src:e.archive?e.archive_link:e.url},null,40,E)]),_:1})]),t("div",J,[t("div",K,[t("div",M,s(e.title),1),e.author?(l(),L(V(e.author_link?"a":"div"),{key:0,class:"text-lg font-300",target:"_blank",href:e.author_link},{default:m(()=>[y("by "+s(e.author),1)]),_:1},8,["href"])):c("",!0),P,v(x,{id:e.id,stars:h.value},null,8,["id","stars"])]),t("div",j,[t("a",{class:"my-2 font-mono text-sm",href:e.url,target:"_blank"},s(e.url),9,G),t("div",H,[y(s(D(u)),1),O])]),((f=e.tags)==null?void 0:f.length)>0?(l(),i("div",Q,[(l(!0),i(I,null,T(e.tags,r=>(l(),i("div",{class:"px-2 py-1 text-sm bg-light-800 dark-bg-dark-500 rounded-lg",key:r},s(r),1))),128))])):c("",!0),e.description?(l(),i("div",R,s(e.description),1)):c("",!0),t("div",U,[A(a.$slots,"default")])])])}}};export{Y as _}; diff --git a/assets/chunks/SynthPage.DHgkhPru.js b/assets/chunks/SynthPage.DHgkhPru.js deleted file mode 100644 index f85cbaed..00000000 --- a/assets/chunks/SynthPage.DHgkhPru.js +++ /dev/null @@ -1 +0,0 @@ -import{u as b,b as S,_ as w}from"./useClicks.DKflLG6D.js";import{r as h,w as p,o as _,b as l,d as i,g as t,y as g,z as m,e as B,v as C,T as N,n as L,J as z,t as s,A as V,h as v,K as D,q as o,f as F,I,L as T,i as $}from"./framework.DA3bj7zI.js";const A={class:"flex flex-col gap-4 bg-light-300 dark-bg-dark-300 rounded-lg shadow-xl overflow-hidden mx-auto"},q=["title","src"],E={class:"flex flex-col p-4 gap-1 bottom-0 bg-light-100 dark-bg-dark-200 w-full max-w-180 mx-auto mb-12 relative"},J={class:"text-xl flex items-center gap-4"},K={class:"font-bold"},M=t("div",{class:"flex-auto"},null,-1),P={class:"p-0 flex gap-4"},j=["href"],G={class:"px-2 py-0 bg-light-800 dark-bg-dark-800 rounded-xl transition text-sm select-none text-center z-200 flex items-center gap-1 opacity-40 hover-opacity-100 transition"},H=t("div",{class:"i-la-eye"},null,-1),O={key:0,class:"flex-1 flex items-end flex flex-wrap gap-2"},Q={key:1,class:"p-0"},R={class:"mt-4"},Y={__name:"SynthPage",props:{title:{type:String,default:""},description:{type:String,default:""},author:{type:String,default:""},author_link:{type:String,default:""},cover:{type:String,default:""},slug:{type:String,default:""},url:{type:String,default:""},tags:{type:Array,default:[]},archive:{type:Boolean,default:!1},archive_link:{type:String,default:""},iframe:{type:Boolean,default:!1},clicks:{type:Number,default:0},id:{type:Number,default:0}},setup(e){const n=e,r=h(!1);function y(a){a.timeStamp<5e3&&(r.value=!0)}const{clickSynth:k,clicksCount:d}=b(n.id);p(()=>n.clicks,a=>d.value=a,{immediate:!0});const c=h(0);return _(async()=>{await k();let a=await S("synth_stats",n.id);c.value=(a==null?void 0:a.stars)||0}),(a,U)=>{var u;const x=w;return l(),i("div",A,[t("div",{class:L(["p-0l h-70vh h-70svh bg-cover bg-center",{"animate-pulse":e.iframe&&!r.value}]),style:z({backgroundImage:`url(/cover/${e.slug}.webp)`})},[g(N,{name:"fade"},{default:m(()=>[B(t("iframe",{class:"w-full h-70vh h-70svh bg-light-100 dark-bg-dark-800",allow:"midi *",onLoad:y,title:e.title,src:e.archive?e.archive_link:e.url},null,40,q),[[C,r.value]])]),_:1})],6),t("div",E,[t("div",J,[t("div",K,s(e.title),1),e.author?(l(),V(D(e.author_link?"a":"div"),{key:0,class:"text-lg font-300",target:"_blank",href:e.author_link},{default:m(()=>[v("by "+s(e.author),1)]),_:1},8,["href"])):o("",!0),M,g(x,{id:e.id,stars:c.value},null,8,["id","stars"])]),t("div",P,[t("a",{class:"my-2 font-mono text-sm",href:e.url,target:"_blank"},s(e.url),9,j),t("div",G,[v(s(F(d)),1),H])]),((u=e.tags)==null?void 0:u.length)>0?(l(),i("div",O,[(l(!0),i(I,null,T(e.tags,f=>(l(),i("div",{class:"px-2 py-1 text-sm bg-light-800 dark-bg-dark-500 rounded-lg",key:f},s(f),1))),128))])):o("",!0),e.description?(l(),i("div",Q,s(e.description),1)):o("",!0),t("div",R,[$(a.$slots,"default")])])])}}};export{Y as _}; diff --git a/assets/disco-computer_index.md.DLthuX7U.js b/assets/disco-computer_index.md.T_rL6HPy.js similarity index 88% rename from assets/disco-computer_index.md.DLthuX7U.js rename to assets/disco-computer_index.md.T_rL6HPy.js index a530a55f..82491010 100644 --- a/assets/disco-computer_index.md.DLthuX7U.js +++ b/assets/disco-computer_index.md.T_rL6HPy.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as r,y as c,R as o,S as i,f as n,b as p}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const k=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.disco-computer.com/synthesizer/synth.html","date_created":"2023-10-27T12:45:54.270Z","title":"Disco-computer","slug":"disco-computer","author":"Patrick Sawyer","author_link":null,"description":null,"tags":["polyphonic","fm","keyboard"],"archive_link":"/archive/synthescheisse/index.html","archive":true,"iframe":true,"cover":"0d0183e6-8964-4246-a18c-a6ca0a0f2794","id":22,"sort":20,"clicks":269,"public":false,"is_new":false,"stats":[17]},"relativePath":"disco-computer/index.md","filePath":"disco-computer/index.md","lastUpdated":0}'),m={name:"disco-computer/index.md"},v=Object.assign(m,{setup(l){const{params:e,frontmatter:d}=s();return(u,_)=>{const t=a;return p(),r("div",null,[c(t,o(i(n(e))),null,16)])}}});export{k as __pageData,v as default}; +import{_ as a}from"./chunks/SynthPage.B19zwNJN.js";import{s,d as r,y as c,R as o,S as i,f as n,b as p}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const k=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.disco-computer.com/synthesizer/synth.html","date_created":"2023-10-27T12:45:54.270Z","title":"Disco-computer","slug":"disco-computer","author":"Patrick Sawyer","author_link":null,"description":null,"tags":["polyphonic","fm","keyboard"],"archive_link":"/archive/synthescheisse/index.html","archive":true,"iframe":true,"cover":"0d0183e6-8964-4246-a18c-a6ca0a0f2794","id":22,"sort":21,"clicks":269,"public":false,"is_new":false,"stats":[17]},"relativePath":"disco-computer/index.md","filePath":"disco-computer/index.md","lastUpdated":0}'),m={name:"disco-computer/index.md"},v=Object.assign(m,{setup(l){const{params:e,frontmatter:d}=s();return(u,_)=>{const t=a;return p(),r("div",null,[c(t,o(i(n(e))),null,16)])}}});export{k as __pageData,v as default}; diff --git a/assets/disco-computer_index.md.DLthuX7U.lean.js b/assets/disco-computer_index.md.T_rL6HPy.lean.js similarity index 88% rename from assets/disco-computer_index.md.DLthuX7U.lean.js rename to assets/disco-computer_index.md.T_rL6HPy.lean.js index a530a55f..82491010 100644 --- a/assets/disco-computer_index.md.DLthuX7U.lean.js +++ b/assets/disco-computer_index.md.T_rL6HPy.lean.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as r,y as c,R as o,S as i,f as n,b as p}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const k=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.disco-computer.com/synthesizer/synth.html","date_created":"2023-10-27T12:45:54.270Z","title":"Disco-computer","slug":"disco-computer","author":"Patrick Sawyer","author_link":null,"description":null,"tags":["polyphonic","fm","keyboard"],"archive_link":"/archive/synthescheisse/index.html","archive":true,"iframe":true,"cover":"0d0183e6-8964-4246-a18c-a6ca0a0f2794","id":22,"sort":20,"clicks":269,"public":false,"is_new":false,"stats":[17]},"relativePath":"disco-computer/index.md","filePath":"disco-computer/index.md","lastUpdated":0}'),m={name:"disco-computer/index.md"},v=Object.assign(m,{setup(l){const{params:e,frontmatter:d}=s();return(u,_)=>{const t=a;return p(),r("div",null,[c(t,o(i(n(e))),null,16)])}}});export{k as __pageData,v as default}; +import{_ as a}from"./chunks/SynthPage.B19zwNJN.js";import{s,d as r,y as c,R as o,S as i,f as n,b as p}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const k=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.disco-computer.com/synthesizer/synth.html","date_created":"2023-10-27T12:45:54.270Z","title":"Disco-computer","slug":"disco-computer","author":"Patrick Sawyer","author_link":null,"description":null,"tags":["polyphonic","fm","keyboard"],"archive_link":"/archive/synthescheisse/index.html","archive":true,"iframe":true,"cover":"0d0183e6-8964-4246-a18c-a6ca0a0f2794","id":22,"sort":21,"clicks":269,"public":false,"is_new":false,"stats":[17]},"relativePath":"disco-computer/index.md","filePath":"disco-computer/index.md","lastUpdated":0}'),m={name:"disco-computer/index.md"},v=Object.assign(m,{setup(l){const{params:e,frontmatter:d}=s();return(u,_)=>{const t=a;return p(),r("div",null,[c(t,o(i(n(e))),null,16)])}}});export{k as __pageData,v as default}; diff --git a/assets/dotpiano_index.md.BE4cP1vy.js b/assets/dotpiano_index.md.B4corNww.js similarity index 93% rename from assets/dotpiano_index.md.BE4cP1vy.js rename to assets/dotpiano_index.md.B4corNww.js index bfa84130..686e2519 100644 --- a/assets/dotpiano_index.md.BE4cP1vy.js +++ b/assets/dotpiano_index.md.B4corNww.js @@ -1 +1 @@ -import{_ as e}from"./chunks/SynthPage.DHgkhPru.js";import{s as o,d as n,y as r,R as s,S as i,f as l,b as p}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const b=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://dotpiano.com/","date_created":"2023-10-27T12:45:53.887Z","title":"Dotpiano","slug":"dotpiano","author":"Alex Chen and Yotam Mann","author_link":null,"description":null,"tags":["polyphonic","midi","keyboard","Multiplayer"],"archive_link":null,"archive":false,"iframe":true,"cover":"6dac5187-213f-4eb8-96ed-63c2e689b206","id":1,"sort":1,"clicks":6424,"public":true,"is_new":false,"stats":[1]},"relativePath":"dotpiano/index.md","filePath":"dotpiano/index.md","lastUpdated":0}'),c={name:"dotpiano/index.md"},k=Object.assign(c,{setup(d){const{params:a,frontmatter:m}=o();return(u,_)=>{const t=e;return p(),n("div",null,[r(t,s(i(l(a))),null,16)])}}});export{b as __pageData,k as default}; +import{_ as e}from"./chunks/SynthPage.B19zwNJN.js";import{s as o,d as n,y as r,R as s,S as i,f as l,b as p}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const b=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://dotpiano.com/","date_created":"2023-10-27T12:45:53.887Z","title":"Dotpiano","slug":"dotpiano","author":"Alex Chen and Yotam Mann","author_link":null,"description":null,"tags":["polyphonic","midi","keyboard","Multiplayer"],"archive_link":null,"archive":false,"iframe":true,"cover":"6dac5187-213f-4eb8-96ed-63c2e689b206","id":1,"sort":1,"clicks":6424,"public":true,"is_new":false,"stats":[1]},"relativePath":"dotpiano/index.md","filePath":"dotpiano/index.md","lastUpdated":0}'),c={name:"dotpiano/index.md"},k=Object.assign(c,{setup(d){const{params:a,frontmatter:m}=o();return(u,_)=>{const t=e;return p(),n("div",null,[r(t,s(i(l(a))),null,16)])}}});export{b as __pageData,k as default}; diff --git a/assets/dotpiano_index.md.BE4cP1vy.lean.js b/assets/dotpiano_index.md.B4corNww.lean.js similarity index 93% rename from assets/dotpiano_index.md.BE4cP1vy.lean.js rename to assets/dotpiano_index.md.B4corNww.lean.js index bfa84130..686e2519 100644 --- a/assets/dotpiano_index.md.BE4cP1vy.lean.js +++ b/assets/dotpiano_index.md.B4corNww.lean.js @@ -1 +1 @@ -import{_ as e}from"./chunks/SynthPage.DHgkhPru.js";import{s as o,d as n,y as r,R as s,S as i,f as l,b as p}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const b=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://dotpiano.com/","date_created":"2023-10-27T12:45:53.887Z","title":"Dotpiano","slug":"dotpiano","author":"Alex Chen and Yotam Mann","author_link":null,"description":null,"tags":["polyphonic","midi","keyboard","Multiplayer"],"archive_link":null,"archive":false,"iframe":true,"cover":"6dac5187-213f-4eb8-96ed-63c2e689b206","id":1,"sort":1,"clicks":6424,"public":true,"is_new":false,"stats":[1]},"relativePath":"dotpiano/index.md","filePath":"dotpiano/index.md","lastUpdated":0}'),c={name:"dotpiano/index.md"},k=Object.assign(c,{setup(d){const{params:a,frontmatter:m}=o();return(u,_)=>{const t=e;return p(),n("div",null,[r(t,s(i(l(a))),null,16)])}}});export{b as __pageData,k as default}; +import{_ as e}from"./chunks/SynthPage.B19zwNJN.js";import{s as o,d as n,y as r,R as s,S as i,f as l,b as p}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const b=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://dotpiano.com/","date_created":"2023-10-27T12:45:53.887Z","title":"Dotpiano","slug":"dotpiano","author":"Alex Chen and Yotam Mann","author_link":null,"description":null,"tags":["polyphonic","midi","keyboard","Multiplayer"],"archive_link":null,"archive":false,"iframe":true,"cover":"6dac5187-213f-4eb8-96ed-63c2e689b206","id":1,"sort":1,"clicks":6424,"public":true,"is_new":false,"stats":[1]},"relativePath":"dotpiano/index.md","filePath":"dotpiano/index.md","lastUpdated":0}'),c={name:"dotpiano/index.md"},k=Object.assign(c,{setup(d){const{params:a,frontmatter:m}=o();return(u,_)=>{const t=e;return p(),n("div",null,[r(t,s(i(l(a))),null,16)])}}});export{b as __pageData,k as default}; diff --git a/assets/dx7_index.md.CTqZumAe.js b/assets/dx7_index.md.8RoJDeWM.js similarity index 87% rename from assets/dx7_index.md.CTqZumAe.js rename to assets/dx7_index.md.8RoJDeWM.js index e20a5a64..0a6a5cd3 100644 --- a/assets/dx7_index.md.CTqZumAe.js +++ b/assets/dx7_index.md.8RoJDeWM.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as r,y as n,R as o,S as i,f as c,b as l}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const b=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://mmontag.github.io/dx7-synth-js/","date_created":"2023-10-27T12:45:54.477Z","title":"DX7 Synth","slug":"dx7","author":"Matt Montag ","author_link":"https://github.com/mmontag","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"f3b285ee-6b82-453b-9ff6-aeda18ec675b","id":30,"sort":5,"clicks":2716,"public":true,"is_new":false,"stats":[5]},"relativePath":"dx7/index.md","filePath":"dx7/index.md","lastUpdated":0}'),d={name:"dx7/index.md"},y=Object.assign(d,{setup(m){const{params:t,frontmatter:p}=s();return(u,_)=>{const e=a;return l(),r("div",null,[n(e,o(i(c(t))),null,16)])}}});export{b as __pageData,y as default}; +import{_ as a}from"./chunks/SynthPage.B19zwNJN.js";import{s,d as r,y as n,R as o,S as i,f as c,b as l}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const b=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://mmontag.github.io/dx7-synth-js/","date_created":"2023-10-27T12:45:54.477Z","title":"DX7 Synth","slug":"dx7","author":"Matt Montag ","author_link":"https://github.com/mmontag","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"f3b285ee-6b82-453b-9ff6-aeda18ec675b","id":30,"sort":5,"clicks":2718,"public":true,"is_new":false,"stats":[5]},"relativePath":"dx7/index.md","filePath":"dx7/index.md","lastUpdated":0}'),d={name:"dx7/index.md"},y=Object.assign(d,{setup(m){const{params:t,frontmatter:p}=s();return(u,_)=>{const e=a;return l(),r("div",null,[n(e,o(i(c(t))),null,16)])}}});export{b as __pageData,y as default}; diff --git a/assets/dx7_index.md.CTqZumAe.lean.js b/assets/dx7_index.md.8RoJDeWM.lean.js similarity index 87% rename from assets/dx7_index.md.CTqZumAe.lean.js rename to assets/dx7_index.md.8RoJDeWM.lean.js index e20a5a64..0a6a5cd3 100644 --- a/assets/dx7_index.md.CTqZumAe.lean.js +++ b/assets/dx7_index.md.8RoJDeWM.lean.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as r,y as n,R as o,S as i,f as c,b as l}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const b=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://mmontag.github.io/dx7-synth-js/","date_created":"2023-10-27T12:45:54.477Z","title":"DX7 Synth","slug":"dx7","author":"Matt Montag ","author_link":"https://github.com/mmontag","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"f3b285ee-6b82-453b-9ff6-aeda18ec675b","id":30,"sort":5,"clicks":2716,"public":true,"is_new":false,"stats":[5]},"relativePath":"dx7/index.md","filePath":"dx7/index.md","lastUpdated":0}'),d={name:"dx7/index.md"},y=Object.assign(d,{setup(m){const{params:t,frontmatter:p}=s();return(u,_)=>{const e=a;return l(),r("div",null,[n(e,o(i(c(t))),null,16)])}}});export{b as __pageData,y as default}; +import{_ as a}from"./chunks/SynthPage.B19zwNJN.js";import{s,d as r,y as n,R as o,S as i,f as c,b as l}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const b=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://mmontag.github.io/dx7-synth-js/","date_created":"2023-10-27T12:45:54.477Z","title":"DX7 Synth","slug":"dx7","author":"Matt Montag ","author_link":"https://github.com/mmontag","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"f3b285ee-6b82-453b-9ff6-aeda18ec675b","id":30,"sort":5,"clicks":2718,"public":true,"is_new":false,"stats":[5]},"relativePath":"dx7/index.md","filePath":"dx7/index.md","lastUpdated":0}'),d={name:"dx7/index.md"},y=Object.assign(d,{setup(m){const{params:t,frontmatter:p}=s();return(u,_)=>{const e=a;return l(),r("div",null,[n(e,o(i(c(t))),null,16)])}}});export{b as __pageData,y as default}; diff --git a/assets/elementary_index.md.BwvTZPnD.js b/assets/elementary_index.md.DjWMsgrh.js similarity index 94% rename from assets/elementary_index.md.BwvTZPnD.js rename to assets/elementary_index.md.DjWMsgrh.js index 28e8f303..e2006648 100644 --- a/assets/elementary_index.md.BwvTZPnD.js +++ b/assets/elementary_index.md.DjWMsgrh.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s as r,d as n,y as s,R as o,S as c,f as l,b as i}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://chromatone.center/practice/synth/elementary/","date_created":"2023-10-27T12:45:54.453Z","title":"Elementary synth","slug":"elementary","author":"Chromatone","author_link":"https://chromatone.center","description":null,"tags":["chromatone","polyphonic","keyboard"],"archive_link":null,"archive":false,"iframe":true,"cover":"21070a51-6089-48bd-8840-ba37b5f2963d","id":29,"sort":4,"clicks":3186,"public":true,"is_new":false,"stats":[4]},"relativePath":"elementary/index.md","filePath":"elementary/index.md","lastUpdated":0}'),m={name:"elementary/index.md"},k=Object.assign(m,{setup(p){const{params:e,frontmatter:d}=r();return(_,u)=>{const t=a;return i(),n("div",null,[s(t,o(c(l(e))),null,16)])}}});export{g as __pageData,k as default}; +import{_ as a}from"./chunks/SynthPage.B19zwNJN.js";import{s as r,d as n,y as s,R as o,S as c,f as l,b as i}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://chromatone.center/practice/synth/elementary/","date_created":"2023-10-27T12:45:54.453Z","title":"Elementary synth","slug":"elementary","author":"Chromatone","author_link":"https://chromatone.center","description":null,"tags":["chromatone","polyphonic","keyboard"],"archive_link":null,"archive":false,"iframe":true,"cover":"21070a51-6089-48bd-8840-ba37b5f2963d","id":29,"sort":4,"clicks":3186,"public":true,"is_new":false,"stats":[4]},"relativePath":"elementary/index.md","filePath":"elementary/index.md","lastUpdated":0}'),m={name:"elementary/index.md"},k=Object.assign(m,{setup(p){const{params:e,frontmatter:d}=r();return(_,u)=>{const t=a;return i(),n("div",null,[s(t,o(c(l(e))),null,16)])}}});export{g as __pageData,k as default}; diff --git a/assets/elementary_index.md.BwvTZPnD.lean.js b/assets/elementary_index.md.DjWMsgrh.lean.js similarity index 94% rename from assets/elementary_index.md.BwvTZPnD.lean.js rename to assets/elementary_index.md.DjWMsgrh.lean.js index 28e8f303..e2006648 100644 --- a/assets/elementary_index.md.BwvTZPnD.lean.js +++ b/assets/elementary_index.md.DjWMsgrh.lean.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s as r,d as n,y as s,R as o,S as c,f as l,b as i}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://chromatone.center/practice/synth/elementary/","date_created":"2023-10-27T12:45:54.453Z","title":"Elementary synth","slug":"elementary","author":"Chromatone","author_link":"https://chromatone.center","description":null,"tags":["chromatone","polyphonic","keyboard"],"archive_link":null,"archive":false,"iframe":true,"cover":"21070a51-6089-48bd-8840-ba37b5f2963d","id":29,"sort":4,"clicks":3186,"public":true,"is_new":false,"stats":[4]},"relativePath":"elementary/index.md","filePath":"elementary/index.md","lastUpdated":0}'),m={name:"elementary/index.md"},k=Object.assign(m,{setup(p){const{params:e,frontmatter:d}=r();return(_,u)=>{const t=a;return i(),n("div",null,[s(t,o(c(l(e))),null,16)])}}});export{g as __pageData,k as default}; +import{_ as a}from"./chunks/SynthPage.B19zwNJN.js";import{s as r,d as n,y as s,R as o,S as c,f as l,b as i}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://chromatone.center/practice/synth/elementary/","date_created":"2023-10-27T12:45:54.453Z","title":"Elementary synth","slug":"elementary","author":"Chromatone","author_link":"https://chromatone.center","description":null,"tags":["chromatone","polyphonic","keyboard"],"archive_link":null,"archive":false,"iframe":true,"cover":"21070a51-6089-48bd-8840-ba37b5f2963d","id":29,"sort":4,"clicks":3186,"public":true,"is_new":false,"stats":[4]},"relativePath":"elementary/index.md","filePath":"elementary/index.md","lastUpdated":0}'),m={name:"elementary/index.md"},k=Object.assign(m,{setup(p){const{params:e,frontmatter:d}=r();return(_,u)=>{const t=a;return i(),n("div",null,[s(t,o(c(l(e))),null,16)])}}});export{g as __pageData,k as default}; diff --git a/assets/groove-pizza_index.md.DJKiVzNk.js b/assets/groove-pizza_index.md.Ddx5mffv.js similarity index 90% rename from assets/groove-pizza_index.md.DJKiVzNk.js rename to assets/groove-pizza_index.md.Ddx5mffv.js index dafee323..84f4d0ff 100644 --- a/assets/groove-pizza_index.md.DJKiVzNk.js +++ b/assets/groove-pizza_index.md.Ddx5mffv.js @@ -1 +1 @@ -import{_ as t}from"./chunks/SynthPage.DHgkhPru.js";import{s as r,d as s,y as o,R as i,S as n,f as c,b as p}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const v=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://apps.musedlab.org/groovepizza/","date_created":"2023-11-21T04:30:41.565Z","title":"Groove Pizza","slug":"groove-pizza","author":"NYU Music Experience Design Lab","author_link":"https://musedlab.org/groovepizza/","description":"Groove Pizza is a circular rhythm app for creative music making and learning! It’s also a playful tool for creating grooves using math concepts like shapes, angles and patterns","tags":["drums","sequencer","Educational"],"archive_link":null,"archive":false,"iframe":true,"cover":"50d7bc15-edd5-4261-bc2a-1b173b5a1547","id":44,"sort":32,"clicks":91,"public":false,"is_new":false,"stats":[27]},"relativePath":"groove-pizza/index.md","filePath":"groove-pizza/index.md","lastUpdated":0}'),l={name:"groove-pizza/index.md"},b=Object.assign(l,{setup(d){const{params:a,frontmatter:m}=r();return(u,g)=>{const e=t;return p(),s("div",null,[o(e,i(n(c(a))),null,16)])}}});export{v as __pageData,b as default}; +import{_ as t}from"./chunks/SynthPage.B19zwNJN.js";import{s as r,d as s,y as o,R as i,S as n,f as c,b as p}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const v=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://apps.musedlab.org/groovepizza/","date_created":"2023-11-21T04:30:41.565Z","title":"Groove Pizza","slug":"groove-pizza","author":"NYU Music Experience Design Lab","author_link":"https://musedlab.org/groovepizza/","description":"Groove Pizza is a circular rhythm app for creative music making and learning! It’s also a playful tool for creating grooves using math concepts like shapes, angles and patterns","tags":["drums","sequencer","Educational"],"archive_link":null,"archive":false,"iframe":true,"cover":"50d7bc15-edd5-4261-bc2a-1b173b5a1547","id":44,"sort":33,"clicks":91,"public":false,"is_new":false,"stats":[27]},"relativePath":"groove-pizza/index.md","filePath":"groove-pizza/index.md","lastUpdated":0}'),l={name:"groove-pizza/index.md"},b=Object.assign(l,{setup(d){const{params:a,frontmatter:m}=r();return(u,g)=>{const e=t;return p(),s("div",null,[o(e,i(n(c(a))),null,16)])}}});export{v as __pageData,b as default}; diff --git a/assets/groove-pizza_index.md.DJKiVzNk.lean.js b/assets/groove-pizza_index.md.Ddx5mffv.lean.js similarity index 90% rename from assets/groove-pizza_index.md.DJKiVzNk.lean.js rename to assets/groove-pizza_index.md.Ddx5mffv.lean.js index dafee323..84f4d0ff 100644 --- a/assets/groove-pizza_index.md.DJKiVzNk.lean.js +++ b/assets/groove-pizza_index.md.Ddx5mffv.lean.js @@ -1 +1 @@ -import{_ as t}from"./chunks/SynthPage.DHgkhPru.js";import{s as r,d as s,y as o,R as i,S as n,f as c,b as p}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const v=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://apps.musedlab.org/groovepizza/","date_created":"2023-11-21T04:30:41.565Z","title":"Groove Pizza","slug":"groove-pizza","author":"NYU Music Experience Design Lab","author_link":"https://musedlab.org/groovepizza/","description":"Groove Pizza is a circular rhythm app for creative music making and learning! It’s also a playful tool for creating grooves using math concepts like shapes, angles and patterns","tags":["drums","sequencer","Educational"],"archive_link":null,"archive":false,"iframe":true,"cover":"50d7bc15-edd5-4261-bc2a-1b173b5a1547","id":44,"sort":32,"clicks":91,"public":false,"is_new":false,"stats":[27]},"relativePath":"groove-pizza/index.md","filePath":"groove-pizza/index.md","lastUpdated":0}'),l={name:"groove-pizza/index.md"},b=Object.assign(l,{setup(d){const{params:a,frontmatter:m}=r();return(u,g)=>{const e=t;return p(),s("div",null,[o(e,i(n(c(a))),null,16)])}}});export{v as __pageData,b as default}; +import{_ as t}from"./chunks/SynthPage.B19zwNJN.js";import{s as r,d as s,y as o,R as i,S as n,f as c,b as p}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const v=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://apps.musedlab.org/groovepizza/","date_created":"2023-11-21T04:30:41.565Z","title":"Groove Pizza","slug":"groove-pizza","author":"NYU Music Experience Design Lab","author_link":"https://musedlab.org/groovepizza/","description":"Groove Pizza is a circular rhythm app for creative music making and learning! It’s also a playful tool for creating grooves using math concepts like shapes, angles and patterns","tags":["drums","sequencer","Educational"],"archive_link":null,"archive":false,"iframe":true,"cover":"50d7bc15-edd5-4261-bc2a-1b173b5a1547","id":44,"sort":33,"clicks":91,"public":false,"is_new":false,"stats":[27]},"relativePath":"groove-pizza/index.md","filePath":"groove-pizza/index.md","lastUpdated":0}'),l={name:"groove-pizza/index.md"},b=Object.assign(l,{setup(d){const{params:a,frontmatter:m}=r();return(u,g)=>{const e=t;return p(),s("div",null,[o(e,i(n(c(a))),null,16)])}}});export{v as __pageData,b as default}; diff --git a/assets/index.md.Bp19cI6y.js b/assets/index.md.Bp19cI6y.js new file mode 100644 index 00000000..98bca678 --- /dev/null +++ b/assets/index.md.Bp19cI6y.js @@ -0,0 +1 @@ +import{D as $e,b,d as y,g as p,f as T,q as _,r as P,E as fe,F as Oe,G as Pe,t as O,H as Re,I as j,e as X,j as ee,h as U,_ as ve,s as De,x as Be,J as te,y as N,z as G,A as se,K as Ne,i as ze,L as we,C as We,M as Fe,N as je,a as Ze,c as J,o as Ve,w as Ye,T as qe,n as Ue,O as Ge,P as Ke,Q as He}from"./chunks/framework.DA3bj7zI.js";import{u as Je,f as q,_ as Qe,a as Xe}from"./chunks/useClicks.DKflLG6D.js";import{u as ke}from"./chunks/theme.TKyytG40.js";import"./chunks/index.OsI8M1nP.js";const et={class:"text-center line-height-loose text-md"},tt={class:"mx-auto max-w-75ch intro md-text-lg"},st=p("div",{class:"i-mdi-share"},null,-1),nt=p("span",null,"Share to save for later",-1),at=[st,nt],it={__name:"AboutShare",setup(t){const{share:e,isSupported:s}=$e();function n(){e({title:"Web synths collection",text:"Look at this online synthesizer collection. No need to install anything - just your browser and any MIDI controller will do.",url:location.href})}return(a,i)=>(b(),y("div",et,[p("div",tt,[T(s)?(b(),y("button",{key:0,class:"mx-auto flex items-center gap-2 text-white py-2 px-4 mt-6 shadow-lg rounded-lg cursor-pointer bg-green-600 -hover-translate-y-2px transition",onClick:i[0]||(i[0]=o=>n()),"data-umami-event":"Shared via button"},at)):_("",!0)])]))}},ne=JSON.parse(`[{"url":"https://dotpiano.com/","date_created":"2023-10-27T12:45:53.887Z","title":"Dotpiano","slug":"dotpiano","author":"Alex Chen and Yotam Mann","author_link":null,"description":null,"tags":["polyphonic","midi","keyboard","Multiplayer"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"6dac5187-213f-4eb8-96ed-63c2e689b206","id":1,"sort":1,"clicks":6424,"public":true,"is_new":false,"stats":[1]},{"url":"https://waveform.playtronica.com/","date_created":"2023-10-27T12:45:54.644Z","title":"Waveform","slug":"waveform","author":"Qvantor","author_link":"https://github.com/qvantor/","description":null,"tags":["playtronica","polyphonic","midi"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"86cb9385-9deb-4f10-95cb-765980156e65","id":39,"sort":2,"clicks":6795,"public":true,"is_new":false,"stats":[2]},{"url":"https://juno-106.js.org/","date_created":"2023-10-27T12:45:54.085Z","title":"Juno-106","slug":"juno-106","author":"Steve Goldberg ","author_link":"https://github.com/stevengoldberg","description":null,"tags":["fm","midi"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"b54cfce7-af2f-4e03-a5b3-81fc853d2cc8","id":14,"sort":3,"clicks":5014,"public":true,"is_new":false,"stats":[3]},{"url":"https://chromatone.center/practice/synth/elementary/","date_created":"2023-10-27T12:45:54.453Z","title":"Elementary synth","slug":"elementary","author":"Chromatone","author_link":"https://chromatone.center","description":null,"tags":["chromatone","polyphonic","keyboard"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"21070a51-6089-48bd-8840-ba37b5f2963d","id":29,"sort":4,"clicks":3186,"public":true,"is_new":false,"stats":[4]},{"url":"https://mmontag.github.io/dx7-synth-js/","date_created":"2023-10-27T12:45:54.477Z","title":"DX7 Synth","slug":"dx7","author":"Matt Montag ","author_link":"https://github.com/mmontag","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"f3b285ee-6b82-453b-9ff6-aeda18ec675b","id":30,"sort":5,"clicks":2718,"public":true,"is_new":false,"stats":[5]},{"url":"https://touchme.chromatone.center/","date_created":"2023-10-27T12:45:53.941Z","title":"TouchME","slug":"touchme","author":"Chromatone","author_link":"https://chromatone.center","description":null,"tags":["chromatone","playtronica"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"68062279-8e08-4953-ae8f-7a77c584948e","id":3,"sort":6,"clicks":3416,"public":true,"is_new":false,"stats":[6]},{"url":"https://muted.io/","date_created":"2023-10-27T12:45:54.742Z","title":"Muted.io","slug":"muted-io","author":"Sébastien Noël","author_link":"https://twitter.com/muted_io","description":null,"tags":["educational","midi"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"5c08ac7d-4414-47c0-b7d1-a9867ba3949f","id":43,"sort":7,"clicks":175,"public":false,"is_new":false,"stats":[10]},{"url":"https://chromatone.center/practice/synth/soundfont/","date_created":"2023-12-18T10:20:56.985Z","title":"Soundfont Sampler Synth","slug":"soundfont","author":"Chromatone","author_link":"https://github.com/chromatone","description":"Free open source soundfont sampler online synthesizer. Very robust and hassle free way to play some straightforward sampled instruments like horns, xylophones and just piano sounds. Instantly playable instrument with about 90 presets out of the box. ","tags":["Poly","Keyboard","Sampler","MIDI"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"26704e9d-5964-4a0f-940c-370c14777e95","id":51,"sort":8,"clicks":0,"public":true,"is_new":true,"stats":[43]},{"url":"https://midi.city/","date_created":"2023-12-28T05:40:45.140Z","title":"MIDI.city","slug":"midi-city","author":"Astral Digital","author_link":"https://astral.digital/","description":"midi.city is a free online synthesizer, built by Jack.\\n\\nmidi.city has over 128 different instruments including: Pianos, Saxophones, Drums, Trumpets, Synth Pads, Guitar, Violins and all other instruments defined in the General Midi specification.","tags":null,"archive_link":null,"archive":false,"content":"midi.city has been created with the help of hundreds of different open-source projects and with contributions from many others.\\n\\n- Tone.js by Yotam Mann: the Web Audio API-based sound engine that implements a majority of nodes used in the audio graph. It powers many of the advanced features used such as Granular Synthesis, Reverb, and timing.\\n- Groove Monkee: graciously provided the MIDI files that are used for the percussion loops.\\n- Keenan Brand: created the midi.city logo and various icons used on the site.\\n- Noun Project: various icons are used via a Pro license.\\n- Google Material Design: various icons.\\n- Compifont by Marcin Dziembor: the soundfont powering the samples and many the audio graph definitions, is originally . Several modifications have been made to adapt to midi.city and the Web Audio API. ","iframe":true,"cover":"8cb479ba-e4e0-42f2-986c-597b68b8e639","id":52,"sort":9,"clicks":10,"public":false,"is_new":false,"stats":[44]},{"url":"https://apps.musedlab.org/aqwertyon/theory/","date_created":"2023-10-27T12:45:54.711Z","title":"aQWERTYon","slug":"aqwertyon","author":"Mused lab","author_link":"https://musedlab.org/","description":null,"tags":["polyphonic","samples"],"archive_link":null,"archive":false,"content":"The **aQWERTYon** (QWERTY accordion) is designed to simplify the process for improvising, learning, and making music with your computer keyboard. Play along with your favorite YouTube videos, learn music theory through our Music Theory for Bedroom Producers course in collaboration with Soundfly, or take advantage of Web MIDI and us it to play and record into your favorite digital audio workstation, such as Soundtrap.com, GarageBand, Logic, or Ableton, or as input into music notation programs like Noteflight.\\n\\nhttps://youtu.be/hqFr4lF6u_Y","iframe":true,"cover":"e7c87de8-c290-4da9-b0e0-eed73871b27a","id":42,"sort":10,"clicks":348,"public":false,"is_new":false,"stats":[8]},{"url":"https://musiclab.chromeexperiments.com/","date_created":"2023-11-26T08:23:47.351Z","title":"Chrome Music Lab","slug":"chrome-lab","author":"Google","author_link":"https://github.com/googlecreativelab/chrome-music-lab","description":"Chrome Music Lab is a website that makes learning music more accessible through fun, hands-on experiments.","tags":["Educational","Keyboard","MIDI","Poly","Piano","Analysis","Mic","Visuals"],"archive_link":null,"archive":false,"content":"## What can it be used for?\\n\\nMany teachers have been using Chrome Music Lab as a tool in their classrooms to explore music and its connections to science, math, art, and more. They’ve been combining it with dance and live instruments. Here’s a collection of some uses we’ve found on Twitter.\\n\\n## Can I use it to make my own songs?\\n\\nYes. Check out the Song Maker experiment, which lets you make and share your own songs.\\n\\n## Do I need to make an account?\\n\\nNope. Just open any experiment and start playing.\\n\\n## How were these built?\\n\\nAll our experiments are all built with freely accessible web technology such as Web Audio API, WebMIDI, Tone.js, and more. These tools make it easier for coders to build new interactive music experiences. You can get the open-source code to lots of these experiments here on [Github](https://github.com/googlecreativelab/chrome-music-lab).\\n\\n## What devices do these work on?\\n\\nYou can play with these experiments across devices – phones, tablets, laptops – just by opening the site on a web browser such as Chrome.","iframe":true,"cover":"297b059e-a6fa-4faa-91b2-c2e1e68cf98f","id":50,"sort":11,"clicks":304,"public":false,"is_new":false,"stats":[9]},{"url":"https://websynths.com/","date_created":"2023-10-27T12:45:54.019Z","title":"Websynths Microtonal","slug":"microtonal","author":"WebSynths","author_link":"https://www.websynths.com/microtonal/","description":"The deepest internet synthesizer","tags":null,"archive_link":null,"archive":false,"content":"\\nWebSynths is a free resource for any musician with internet access! But, it is made possible by support from our patrons. Please consider helping if you can: patreon.com/WebSynths\\n\\n- You can use your QWERTY keyboard, mouse, mobile touch or MIDI keyboard to play the sounds.\\n- You can change the tuning of the keys, or select a scale, by clicking the tuning button.\\n- MIDI is a way to use an external physical instrument to play it. If you have a MIDI keyboard that you wish to use, hit the MIDI button to set it up.\\n- If a note gets stuck, hit the panic button, it will stop all voices from playing.\\n- You can use the arrows on your computer keyboard to scroll through the presets.\\n\\nA simple explanation of Subtractive Synthesis:\\n\\n- Subtractive Synthesis works by taking one or more oscillators, setting the pitch of their oscillation (usually to the note of the key being pressed,) setting the shape of their oscillation to the desired timbre (Sine, Saw, Square or more complex shapes,) mixing them together and running them through a filter to change their EQ (usually filtering out the highest or lowest frequencies... this is why it is called \\"subtractive\\"), then running them through an envelope so the note can be heard on when a key is pressed down and is silenced when the key is released. In the case of WebSynths Microtonal, the sound is then sent through effects like delay, chorus and reverb and out to your speakers.\\n- Oscillators are the voices. This synth has 3 of them in the left column. You can change the character of each voice by changing the parameters of them. The 'Shape' menu allows you to choose from different styles of voice for each oscillator. You can turn each voice on or off and mix them together.\\n- The filter section applies equalization to your oscillators via the cutoff and emphasis controls. You can change the equalization filter type to 'low pass / high pass' and many more. You can use the LFOs and/or Envelopes to change how the filtration changes over time. An LFO is just a slow oscillator that is uses to automatically move a parameter over time.\\n- The amplitude envelope changes how your sound is played, volume-wise, when you hit a note. For example, having a long release time will mean that once you let go of the note you are playing it will tail off until fading out. Having a slow attack will mean that your note will fade in instead of playing at full volume straight away.\\n- The effects section allows you to add various effects to your overall sound. You can change the effects, mix them together and toggle them on or off too.\\n\\n","iframe":false,"cover":"ffc54664-7ba4-4855-a56a-6657a5542a04","id":10,"sort":12,"clicks":172,"public":false,"is_new":false,"stats":[11]},{"url":"https://stuartmemo.com/synth/","date_created":"2023-10-27T12:45:54.586Z","title":"Sympathetic Synthesizer System Mk 1","slug":"sympathetic","author":"Stuart Memo ","author_link":"https://github.com/stuartmemo","description":null,"tags":["keyboard","midi","additive"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"123aeb6d-c7b0-43dd-a852-98660bdf03f0","id":37,"sort":13,"clicks":302,"public":false,"is_new":false,"stats":[12]},{"url":"https://learningsynths.ableton.com/","date_created":"2023-10-27T12:45:54.360Z","title":"Learning synths","slug":"ableton","author":"Ableton","author_link":"https://github.com/Ableton","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":false,"cover":"0bf8312d-c449-4f5c-80ad-36594ef98db6","id":26,"sort":14,"clicks":184,"public":false,"is_new":false,"stats":[13]},{"url":"https://www.femurdesign.com/theremin/","date_created":"2023-10-27T12:45:54.206Z","title":"Theremin","slug":"theremin","author":"Femur","author_link":"https://femurdesign.com/","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"6b22ef48-6830-4cf2-810d-809408033450","id":19,"sort":15,"clicks":320,"public":false,"is_new":false,"stats":[14]},{"url":"https://cardinal.kx.studio/live","date_created":"2024-05-20T18:57:14.836Z","title":" DISTRHO Cardinal","slug":"cardinal","author":"Filipe Coelho, aka falkTX","author_link":"https://falktx.berlin/","description":"Cardinal is a free and open-source virtual modular synthesizer plugin, available in AudioUnit/CLAP/LV2/VST2/VST3 plugin formats and as a standalone app for FreeBSD, Linux, macOS, Windows and the Web.","tags":["Modular","FM","Poly"],"archive_link":null,"archive":false,"content":"Cardinal is a free and open-source virtual modular synthesizer plugin, available in AudioUnit/CLAP/LV2/VST2/VST3 plugin formats and as a standalone app for FreeBSD, Linux, macOS, Windows and the Web.\\nIt is based on the popular VCV Rack but with a focus on being a fully self-contained plugin version.\\n\\nMore specifically, this is a DPF-based plugin wrapper around VCV Rack, using its code directly instead of forking the project, with the target of having a self-contained, fully free and open-source plugin version of Rack.\\nSee the why section below for the reasons Cardinal exists, also for frequently asked questions check this FAQ document.\\n\\nCardinal contains Rack, some 3rd-party modules and a few internal utilities all in a single binary.\\nAll \\"Core\\" modules from Rack have been replaced by Cardinal equivalents, simplified to better work for an audio plugin.\\n\\nCardinal does not load external modules and does not connect to the official Rack library/store.\\nAll VCV branding has been removed (to the best of our knowledge) in order to avoid any trademark issues.\\n\\n## Why\\n\\nCardinal was created first and foremost as a way to have Rack as a proper open-source audio plugin.\\nA proper audio plugin should be self-contained as much as possible, as to not interfere with the DAW/Host. Loading external modules clearly goes against this idea.\\nNot to mention being open-source, otherwise we are at the mercy of the wishes of a company for what we can and cannot do, which is not something Cardinal's authors wish to abide by.\\n\\nA self-contained plugin can't be overstated, as DLL/shared-object symbol conflicts can trigger hard-to-debug crashes.\\nWhile Rack tries to mitigate this as much as possible, crashes due to conflicting modules have already been seen in v2 builds.\\nOn the other side, Cardinal redefines class and function names as needed to avoid as many conflicts as possible.\\n\\nSupport for ARM and non-mainstream platforms (for example BSD) has also always been missing from the official Rack since the start.\\nWhile we can patch the Rack free version to support these, same can't be done with Rack Pro with it being a closed-source product.\\nThe online library/store only supports a very specific set of platforms too, so non-supported platforms would need any 3rd-party modules to be manually compiled to make them usable.\\n\\nUnhappiness with the audio threading behaviour of Rack also plays a role.\\nBoth audio and MIDI should be locked to the host audio thread as to minimize (or even altogether remove) latency and jitter.\\nThe use of separate threads for MIDI is bad design, one that has been corrected in DAWs and JACK-MIDI for several years...\\nBut Rack's use of RtMidi requires separate threading, so Cardinal does not use it.","iframe":true,"cover":"dc7070e1-66fd-4f74-95d2-92d8388864e2","id":56,"sort":16,"clicks":5,"public":false,"is_new":true,"stats":[48]},{"url":"https://multiplayer-orchestra.com","date_created":"2024-04-23T08:07:22.796Z","title":"Multiplayer Orchestra","slug":"multiplayer-orchestra","author":"Mutli_Orchestra","author_link":"https://twitter.com/Mutli_Orchestra","description":"Play in real time with people from all around the world with more than 400 instruments.","tags":["Poly","MIDI","Keyboard","Collaborative","Online"],"archive_link":null,"archive":false,"content":"Multiplayer Orchestra ([https://www.multiplayer-orchestra.com/](https://www.multiplayer-orchestra.com/)) is a web application that allows you to virtually collaborate with musicians from around the world in real-time. Here are some key features:\\n\\n* **Large instrument selection:** Choose from over 400 instruments, including pianos, guitars, drums, and orchestral instruments.\\n* **Real-time collaboration:** Play music simultaneously with other users, creating a virtual orchestra.\\n* **Public and private rooms:** Join public rooms to jam with others or create private rooms with a password for specific collaborations.\\n* **Contests:** Participate in contests to win prizes like Amazon gift cards by recording solo performances.\\n\\n**It's important to note that the website seems to be in beta based on the version information listed (Beta 0.30).** ","iframe":true,"cover":"d743d9ea-d73f-4593-a70e-58a3e4deaa1b","id":55,"sort":17,"clicks":5,"public":false,"is_new":true,"stats":[47]},{"url":"https://touchpianist.com/","date_created":"2023-10-27T12:45:54.691Z","title":"Touch Pianist","slug":"touch-pianist","author":"EarSlap","author_link":null,"description":null,"tags":["entertainment","piano"],"archive_link":null,"archive":false,"content":"Touch Pianist is a musical toy / instrument that allows the user to perform hard-to-play classical piano music favorites (from composers like Beethoven, Mozart, Bach, Satie, Debussy to name a few) just by tapping the rhythm of the piece's particular sound events on a computer keyboard or a touch screen.\\n\\nIt also provides live visualisation of the pieces that are being performed. There is no score keeping, the user is free to perform the music in any way they wish. The premise is that it is really fun to perform a piece you know well, exactly like you feel it with so little effort.\\n\\nTouch Pianist has CoreMIDI support so you can use your favorite piano / sound plug-in in your computer as a sound source if you wish.","iframe":false,"cover":"415deeeb-a843-4363-b6c9-78918aa688af","id":41,"sort":18,"clicks":177,"public":false,"is_new":false,"stats":[15]},{"url":"https://www.beepbox.co","date_created":"2024-03-21T02:43:35.749Z","title":"BeepBox","slug":"beepbox","author":"John Nesky","author_link":"https://johnnesky.com/","description":"BeepBox is an online tool for sketching and sharing instrumental music.\\n\\nAll song data is contained in the URL at the top of your browser. When you make changes to the song, the URL is updated to reflect your changes. When you are satisfied with your song, just copy and paste the URL to save and share your song!\\n\\nBeepBox is a passion project, and will always be free to use. ","tags":["Poly","Sequencer","FM"],"archive_link":null,"archive":false,"content":" BeepBox is developed by John Nesky.\\n\\nBeepBox does not claim ownership over songs created with it, so original songs belong to their authors.\\n\\nNeither John Nesky nor BeepBox assume responsibility for any copyrighted material played on BeepBox. No songs are ever received, recorded, or distributed by BeepBox's servers. All song data is contained in the URL after the hash (#) mark, and your song data will not leave your device unless you copy and share the URL. BeepBox does not collect, track, or share any user data. ","iframe":true,"cover":"dea37f5f-504c-443f-ba9a-3dff4d583506","id":54,"sort":19,"clicks":10,"public":false,"is_new":true,"stats":[46]},{"url":"https://roland50.studio/","date_created":"2023-11-25T05:42:57.573Z","title":"Roland 50 Studio","slug":"roland50","author":"Yuri Suzuki","author_link":"https://www.yurisuzuki.com/","description":"It's a professional sounding online musical interface, which records your masterpieces and allows you to share your creations through social media, messaging and also as a download.\\nOn top of the TR-808 drum machine and TB-303 bass synthesizer featured at the original 2020 release, now the sound of SH-101 synthesizer is added, and more sounds to come later in the year 2022, commemorating Roland's 50th anniversary.","tags":["drum machine","SP404","TR808","TB303","Step sequencer"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"3b5aec13-7e50-475c-9165-bc963872515d","id":45,"sort":20,"clicks":17,"public":false,"is_new":false,"stats":[16]},{"url":"https://www.disco-computer.com/synthesizer/synth.html","date_created":"2023-10-27T12:45:54.270Z","title":"Disco-computer","slug":"disco-computer","author":"Patrick Sawyer","author_link":null,"description":null,"tags":["polyphonic","fm","keyboard"],"archive_link":"/archive/synthescheisse/index.html","archive":true,"content":null,"iframe":true,"cover":"0d0183e6-8964-4246-a18c-a6ca0a0f2794","id":22,"sort":21,"clicks":269,"public":false,"is_new":false,"stats":[17]},{"url":"https://seeing-sound.netlify.app/","date_created":"2023-10-27T12:45:54.492Z","title":"Video Sampler","slug":"video-sampler","author":"Playtronica","author_link":"https://shop.playtronica.com","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"b39cc546-2571-4402-84cd-f8497e27d0c9","id":31,"sort":22,"clicks":256,"public":false,"is_new":false,"stats":[18]},{"url":"https://www.stef.be/bassoontracker/","date_created":"2024-03-14T07:04:03.311Z","title":"Bassoon Tracker","slug":"bassoon","author":"Steffest","author_link":" https://www.stef.be","description":"Browser-based old-school Amiga Music Tracker in plain old JavaScript.","tags":["FM","tracker","8-bit","low-fi"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"70c9db80-8ef8-4aa5-9dcd-6b5c3c0da5b2","id":53,"sort":24,"clicks":10,"public":false,"is_new":true,"stats":[45]},{"url":"https://www.igorski.nl/experiment/websid","date_created":"2023-10-27T12:45:54.438Z","title":"WebSID Commodore 64","slug":"web-sid","author":"Igor Zinken","author_link":"https://www.igorski.nl/","description":null,"tags":["polyphonic","keyboard","midi","additive"],"archive_link":null,"archive":false,"content":null,"iframe":false,"cover":"932e0ae0-0048-4c6d-92bb-a4a17a8a4dd4","id":28,"sort":25,"clicks":156,"public":false,"is_new":false,"stats":[19]},{"url":"https://nicroto.github.io/viktor/","date_created":"2023-10-27T12:45:54.388Z","title":"Viktor NV-1","slug":"nv-1","author":"Nikolay Tsenkov ","author_link":"https://github.com/nicroto","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"ff3082ad-3c38-4880-ab23-35711c97ea71","id":27,"sort":26,"clicks":496,"public":false,"is_new":false,"stats":[20]},{"url":"https://virtualpiano.eu/","date_created":"2023-10-27T12:45:54.542Z","title":"VirtualPiano.eu","slug":"virtual-piano","author":"WebSyrup","author_link":"https://websyrup.net/","description":null,"tags":["midi","keyboard"],"archive_link":null,"archive":false,"content":"VirtualPiano.eu is the online synthesizer that allows you to play 128 musical instruments for free using your PC keyboard, the mouse or by connecting an external MIDI keyboard.\\n\\nYou can adjust Volume, Reverb, Loop and quality. Use the sustain and adjust the octaves, you can also select and set different channels including the one for the drums.\\n\\nCreate your own melodies, have fun playing or use VirtualPiano to learn how to play the Piano online on your own. ","iframe":true,"cover":"9a59eea5-c77f-483c-9443-1cd0727e6dcc","id":35,"sort":27,"clicks":282,"public":false,"is_new":false,"stats":[21]},{"url":"https://onlinesequencer.net/","date_created":"2023-10-27T12:45:54.565Z","title":"Online sequencer","slug":"online-sequencer","author":"Jacob Morgan and George Burdell","author_link":"https://github.com/buildist","description":null,"tags":["sequencer"],"archive_link":null,"archive":false,"content":"**Online Sequencer** is a web-based music sequencer that allows users to create music saved online, or on their computer. The piano roll is essential to the sequencer, which is on the left of the screen, with 72 notes from C2-B7 (labelled differently from a piano, C2 on the sequencer corresponds to C1 on a piano). In addition to several parameters which can be modified to change the sound of the music, additional functionality can be accessed via the console.\\n\\nUpon opening the site, users can begin composing and \\"drawing\\" notes on the grid, with the default instrument being Electric Piano. By default, a sequence's time signature is set to 4/4, and the grid spacing is set to 1/4 (16 notes per measure). The note lengths can be adjusted by dragging the dark tab on the right of each note, and precision can be afforded by changing the 'Grid' option to other note divisions. \\n\\n## History\\n\\nOnline Sequencer was created on January 2, 2013 by Jacob Morgan during a break at Georgia Tech.\\n\\nBeginning in the fall of 2013, accounts were available but were separate from the music portion of the site. They were only used in the forum and the website chat.\\n\\nIn 2015, accounts were linked to the main website and allowed songs to be saved under someone's username.\\n\\nThe World Update in 2018 added several new instruments and changed the landscape of sound design on the site. The \\"World Update Contest\\" was held for the update.\\n\\nStarting in late 2020, OS began to receive a variety of updates which vastly improved the functionality of the site. These updates introduced features like custom grid sizes, automation with markers, extra reverb options, detune, and distortion. In 2021, the \\"Space Race\\" contest was held, as to see who could work best with the changes.\\n\\nIn late 2022, newer, higher-quality instruments were added. Some of the instruments, such as Electric Piano, Grand Piano, Violin, and Cello got an updated sustained version, while the original versions still exist under the \\"classic\\" designation.\\n\\nCurrently, the 10-Year Anniversary Contest is being held.\\n\\n## Features\\n\\nWithin the editor, numerous user interface features allow for various changes which will impact the individual sequence on that page.\\n\\n### Basic features\\n\\nUI features include:\\n\\n- Tempo (10-999 BPM)\\n- Measure count or Time count (MM: SS.ssss)\\n- Time signature (2/4, 3/4, 4/4, 5/4)\\n- Grid size (This correlates to note divisions; 1/16, 1/12, 1/8, 1/6, 1/4, 1/3, 1/2)\\n- Auto Scroll (Fast, Smooth, Off; how the sequencer displays measures off-screen as a sequence plays)\\n- Add an Audio Track (This won't be saved to the sequence but will play alongside it for ease of transcription)\\n- Title input\\n- Draw, select, and erase\\n- Instrument dropdown, instrument options, and select instrument (selects all notes of the current instrument)\\n- Select all, Cut, Copy, and Paste\\n- Zoom options\\n- Export options\\n- Help\\n- Fullscreen\\n- Tooltips\\n\\n### Advanced features\\n\\nUsers can access more advanced features for use in their sequences by clicking the advanced tab on the instrument they wish to change. This menu contains options to change volume, panning, detune (-1200 to +1200), reverb, distortion, and an equalizer. This array lets users configure specific instruments to create specific sounds, and textures, or to accompany other instruments as a layer or development of the original sound.\\n\\nOS also allows for commands to be entered in the browser console to manipulate different options in specific ways, such as setting custom to detune values (0-infinity), custom grid sizes, note divisions, and sequence ID amongst other things. These options bring OS closer to that of classic Digital Audio Workstations (DAWs) but are still limited in terms of accessibility and availability.\\n\\n### Browser and device support\\n\\nOnline Sequencer supports Chrome and other Chromium-based browsers, such as Microsoft Edge, Opera, and Brave. Firefox is also supported, but often with limited functionality. Safari and Internet Explorer are not supported, due to engine issues.\\n\\nOther mobile browsers support sequence playback, but not editing. However, iOS users have the same problem with WebKit on macOS. However, unlike in macOS, all browsers (even Chromium-based browsers) use WebKit as the engine for iOS due to Apple prohibiting other engines for security reasons; iOS does not support Online Sequencer, other than chat and forums.\\n\\nThe website's user interface is formatted for proper use on desktops, but some pages such as the chat page, playlists, and forums should be formatted well on mobile devices. ","iframe":true,"cover":"ec08ba72-8157-4415-8b34-aea1fe686e09","id":36,"sort":28,"clicks":321,"public":false,"is_new":false,"stats":[22]},{"url":"https://sb.bitsnbites.eu/","date_created":"2023-10-27T12:45:54.625Z","title":"Sound Box","slug":"sound-box","author":"Bits'n'bites","author_link":"https://gitlab.com/mbitsnbites","description":null,"tags":["tracker"],"archive_link":null,"archive":false,"content":"https://github.com/mbitsnbites/soundbox","iframe":true,"cover":"f2f825f3-a084-408b-86d1-2b64cf822c3c","id":38,"sort":29,"clicks":209,"public":false,"is_new":false,"stats":[23]},{"url":"https://femurdesign.com/omni/","date_created":"2023-10-27T12:45:54.224Z","title":"Omni","slug":"omni","author":"Luke Phillips","author_link":"https://femurdesign.com/","description":null,"tags":["polyphonic","keyboard"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"fbb1364f-53cf-4f71-8f29-d7f572308e78","id":20,"sort":30,"clicks":210,"public":false,"is_new":false,"stats":[24]},{"url":"https://www.g200kg.com/docs/webmodular/","date_created":"2023-10-27T12:45:54.252Z","title":"Web Modular","slug":"web-modular","author":"g200kg","author_link":"https://www.g200kg.com/","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"48e0280c-f7ff-4308-bde3-973b7febe89c","id":21,"sort":31,"clicks":202,"public":false,"is_new":false,"stats":[25]},{"url":"https://errozero.co.uk/acid-machine/","date_created":"2023-10-27T12:45:54.333Z","title":"Acid Machine 2","slug":"acid-machine-2","author":"Errozero","author_link":"https://www.errozero.co.uk/","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"031eab3e-2f21-442a-8fdc-9769907824e0","id":25,"sort":32,"clicks":166,"public":false,"is_new":false,"stats":[26]},{"url":"https://apps.musedlab.org/groovepizza/","date_created":"2023-11-21T04:30:41.565Z","title":"Groove Pizza","slug":"groove-pizza","author":"NYU Music Experience Design Lab","author_link":"https://musedlab.org/groovepizza/","description":"Groove Pizza is a circular rhythm app for creative music making and learning! It’s also a playful tool for creating grooves using math concepts like shapes, angles and patterns","tags":["drums","sequencer","Educational"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"50d7bc15-edd5-4261-bc2a-1b173b5a1547","id":44,"sort":33,"clicks":91,"public":false,"is_new":false,"stats":[27]},{"url":"https://ojack.github.io/PIXELSYNTH/","date_created":"2023-10-27T12:45:54.286Z","title":"PixelSynth","slug":"pixel-synth","author":"Olivia Jack","author_link":"https://ojack.xyz/","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"77369c22-944c-4f6a-83b5-85e16fe43abc","id":24,"sort":34,"clicks":217,"public":false,"is_new":false,"stats":[28]},{"url":"https://www.multiplayerpiano.org/","date_created":"2023-11-26T08:06:18.875Z","title":"Multiplayer Piano","slug":"multiplayer-piano","author":"Brandon Lockaby","author_link":"https://github.com/Multiplayer-Piano","description":"Online piano, that can be played by any site visitor together in a virtual room or alone.","tags":["Piano","MIDI","Poly","Multiplayer"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"9c10771b-e38f-469f-b58b-c9e6bb91a072","id":49,"sort":35,"clicks":4,"public":false,"is_new":false,"stats":[29]},{"url":"https://webaudiodemos.appspot.com/midi-synth/index.html","date_created":"2023-10-27T12:45:53.963Z","title":"MIDI–driven Web Audio","slug":"midi-driven-web-audio","author":"Chris Wilson","author_link":"https://github.com/cwilso","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":false,"cover":"0005a0c9-c7e7-4922-a1e5-49d4326d2f77","id":6,"sort":36,"clicks":127,"public":false,"is_new":false,"stats":[30]},{"url":"https://samplestitch.com.s3-website-us-east-1.amazonaws.com/","date_created":"2023-10-27T12:45:54.185Z","title":"Samplestich","slug":"sample-stich","author":"Matt Daniels","author_link":"https://mdaniels.com","description":null,"tags":["samples","keyboard"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"89859f9f-0d45-44dc-93b6-98dfa2e7d799","id":18,"sort":37,"clicks":164,"public":false,"is_new":false,"stats":[31]},{"url":"https://www.audiotool.com/product/device/heisenberg/","date_created":"2023-10-27T12:45:53.983Z","title":"Meet the Heisenberg","slug":"meet-the-heisenberg","author":"AudioTool","author_link":"https://www.audiotool.com","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"a2397ce6-7712-40e5-b4e0-df95c7992662","id":8,"sort":38,"clicks":255,"public":false,"is_new":false,"stats":[32]},{"url":"https://www.gsn-lib.org/apps/cardboardsynth/index.html","date_created":"2023-10-27T12:45:54.002Z","title":"Cardboard Synth","slug":"cardboard-synth","author":" Thorsten Thormählen","author_link":"https://www.uni-marburg.de/en/fb12/research-groups/grafikmultimedia/thormae","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"29fe1fcc-ca85-41b3-ab1e-7f10770f2c1f","id":9,"sort":39,"clicks":184,"public":false,"is_new":false,"stats":[33]},{"url":"https://tanguysynth.com/","date_created":"2023-10-27T12:45:54.036Z","title":"Tanguy synth","slug":"tanguy-synth","author":"Luke Teaford","author_link":"https://github.com/luketeaford","description":null,"tags":["monophonic","additive","keyboard"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"5471a71e-7c5b-4ea6-aee0-1b394873c381","id":11,"sort":40,"clicks":117,"public":false,"is_new":false,"stats":[34]},{"url":"https://www.blokdust.com/","date_created":"2023-11-25T06:31:23.261Z","title":"BlokDust","slug":"blokdust","author":"Luke Twyman, Luke Phillips, Edward Silverton","author_link":"https://wvnl.xyz/","description":"BlokDust is a creative visual drag and drop music exploration tool. Developed in Brighton UK and released in 2016, BlokDust uses the Web Audio API and makes use of Tone.js as an audio framework.","tags":["creative","sequencer"],"archive_link":null,"archive":false,"content":"Luke Twyman - project concept, design & Ul.\\nwhitevinyldesign.com\\n@whitevinylUK\\nLuke Phillips - audio development & musical interaction.\\nfemurdesign.com\\n@lukephills\\nEdward Silverton - client & server architecture & core development.\\nedsilv.com\\n@edsilv","iframe":true,"cover":"7e5bcda8-f37a-46c0-91d9-0a6ea501a101","id":47,"sort":41,"clicks":19,"public":false,"is_new":false,"stats":[35]},{"url":"https://mod-synth.io/","date_created":"2023-10-27T12:45:54.052Z","title":"MOD synth","slug":"mod-synth","author":"André Venâncio ","author_link":"https://github.com/andrevenancio","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"31564bf3-fca9-41a4-b390-d78ccd848107","id":12,"sort":42,"clicks":146,"public":false,"is_new":false,"stats":[36]},{"url":"https://perso.numericable.fr/olivier.friker/synth/O3-synth%20V1.3.html","date_created":"2023-10-27T12:45:54.069Z","title":"OLIF SY1K","slug":"olif-sy-1-k","author":"Olivier Friker","author_link":null,"description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"3b9a5e11-3de3-46fe-9cdc-e1668b152f31","id":13,"sort":43,"clicks":145,"public":false,"is_new":false,"stats":[37]},{"url":"http://www.noisesculptor.com/","date_created":"2023-10-27T12:45:54.104Z","title":"Note Sculptor","slug":"note-sculptor","author":"Ruin Technology","author_link":null,"description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":false,"cover":"a01968d1-3f88-4522-9752-1c33d10d90d9","id":15,"sort":44,"clicks":129,"public":false,"is_new":false,"stats":[38]},{"url":"https://aikelab.net/websynthv2/","date_created":"2023-10-27T12:45:54.141Z","title":"WebAudioSynth V2","slug":"web-audio-synth-v2","author":"like","author_link":"https://github.com/aike/","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"ac668fba-7226-43dc-a91f-bd21a31446e5","id":16,"sort":45,"clicks":305,"public":false,"is_new":false,"stats":[39]},{"url":"https://isleoftune.com/","date_created":"2023-11-25T06:22:15.184Z","title":"Isle of Tune","slug":"isleoftune","author":"Jim Hall","author_link":"https://twitter.com/isleoftune","description":"Draw an island, where everything plays music.","tags":["game","sequencer"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"6830c24f-c7bf-430f-abc1-3d7fbf5f2557","id":46,"sort":46,"clicks":15,"public":false,"is_new":false,"stats":[40]},{"url":"https://www.soundtrap.com/","date_created":"2023-10-27T12:45:54.155Z","title":"Sound Trap","slug":"sound-trap","author":"Soundtrap","author_link":"https://www.soundtrap.com/about","description":null,"tags":["daw"],"archive_link":null,"archive":false,"content":null,"iframe":false,"cover":"63ef832a-f7da-4536-851f-4964005a89f1","id":17,"sort":47,"clicks":124,"public":false,"is_new":false,"stats":[41]},{"url":"http://typedrummer.com/","date_created":"2023-11-25T06:34:10.166Z","title":"Type Drummer","slug":"typedrummer","author":"Kyle Stetz","author_link":"http://kylestetz.com/","description":"Type your drum loops","tags":["sequencer","drums","Keyboard"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"19454c82-7338-4144-9f1c-010c80a70a6e","id":48,"sort":48,"clicks":21,"public":false,"is_new":false,"stats":[42]}]`),ot={class:"text-center line-height-loose text-md"},rt={class:"mx-auto max-w-75ch intro md-text-lg"},lt={class:"p-2 flex flex-col mt-8"},ct={class:"text-4xl font-bold"},ut=p("div",{class:"text-lg"},"web synths",-1),ht={class:"p-2 flex flex-col mt-8"},dt={class:"text-4xl font-bold"},ft=p("div",{class:"text-lg"},"web musicians",-1),pt={__name:"AboutCount",setup(t){const e=P(),s=P(0),n=P(0),a=fe(s),i=fe(n),o=Oe(e);return Pe(o,async r=>{if(r){s.value=ne.length;const c=await(await fetch("https://dbs.chromatone.center/flows/trigger/0c0e8d82-8e12-44a6-867a-57ddeec9d774",{type:"GET",mode:"cors",headers:{"Content-Type":"application/json"}})).json();n.value=c.count}}),(r,l)=>(b(),y("div",ot,[p("div",rt,[p("div",{class:"flex justify-center",ref_key:"counters",ref:e},[p("div",lt,[p("div",ct,O(T(a).toFixed()),1),ut]),p("div",ht,[p("div",dt,O(T(i).toFixed()||5e3)+"+",1),ft])],512)])]))}},mt={class:"flex flex-col text-center gap-4 bg-light-700 dark-bg-dark-200 dark-bg-opacity-20 p-4 rounded-lg shadow-lg mb-8"},gt=p("div",{class:"text-xl font-bold my-2"},"Suggest a new web-synth to the collection",-1),bt=["disabled"],yt={__name:"FormSynth",emits:["submitted"],setup(t,{emit:e}){const s=e,n=Re({url:"",text:""}),a=/[(http(s) ?): \/\/(www\.)?a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)/;function i(l){return a.test(l)}const o=P();async function r(){var l,c,u;try{const h=await fetch("https://dbs.chromatone.center/flows/trigger/dc8ca96f-76e6-4cac-b26c-10751746eb89",{method:"POST",mode:"cors",cache:"no-cache",credentials:"same-origin",headers:{"Content-Type":"application/json"},redirect:"follow",referrerPolicy:"no-referrer",body:JSON.stringify(n)});o.value=await(h==null?void 0:h.json()),n.url="",n.text="",setTimeout(()=>{s("submitted")},2e3)}catch(h){console.error(h,(c=(l=h==null?void 0:h.errors)==null?void 0:l[0])==null?void 0:c.message,(u=h==null?void 0:h.response)==null?void 0:u.status)}}return(l,c)=>(b(),y("div",mt,[o.value?(b(),y(j,{key:1},[U("Thanks for your suggestion!")],64)):(b(),y(j,{key:0},[gt,X(p("input",{class:"py-2 px-4 rounded bg-light-200 dark-bg-dark-200",type:"text",placeholder:"https://new.synth.url/","onUpdate:modelValue":c[0]||(c[0]=u=>n.url=u)},null,512),[[ee,n.url]]),X(p("textarea",{class:"py-2 px-4 rounded bg-light-200 dark-bg-dark-200",oninput:"this.style.height = ''; this.style.height = this.scrollHeight +'px'",placeholder:"Describe the web-app and how do you use it musically","onUpdate:modelValue":c[1]||(c[1]=u=>n.text=u)},null,512),[[ee,n.text]]),p("button",{class:"text-xl py-2 px-4 rounded bg-dark-100 text-light-200 dark-bg-light-700 dark-text-dark-500 shadow-lg disabled-opacity-20",disabled:!i(n.url),onClick:c[2]||(c[2]=u=>r())},O(i(n.url)?"Submit":"Please provide a valid URL"),9,bt)],64))]))}},_e=t=>(Fe("data-v-f3c34bc1"),t=t(),je(),t),vt={key:0,class:"px-2 py-1 bg-light-800 dark-bg-dark-800 rounded-xl transition text-sm select-none absolute bottom-2 left-2 text-center z-200 flex items-center gap-1 opacity-70 hover-opacity-100",title:"Since 28 Oct 2023"},wt=_e(()=>p("div",{class:"i-la-eye"},null,-1)),kt={class:"p-0 mt-2px"},_t={class:"p-4 flex flex-col items-start justify-between gap-2",style:{flex:"10 0 200px"}},xt={class:"flex items-center gap-2 flex-0 w-full"},St={class:"transition text-xl select-none absolute top-4 left-4 text-center z-200"},Mt={class:"flex-auto"},Tt={class:"flex items-center gap-2"},It={class:"text-2xl font-bold"},At={key:0,class:"font-normal",title:"Archived locally by us"},Ct=_e(()=>p("div",{class:"i-ph-archive-duotone"},null,-1)),Et=[Ct],Lt={class:"flex-1"},$t={key:1,class:"flex-1 flex items-end flex flex-wrap gap-2"},Ot=["href"],Pt={key:3,class:"text-xl p-2 absolute left-2 top-4 bg-yellow-600 rounded-xl shadow font-bold z-1000 transform -rotate-10"},Rt={__name:"SynthCard",props:{pos:{type:Number,default:0},sort:{type:Number,default:0},public:{type:Boolean,default:!1},title:{type:String,default:""},id:{type:Number,default:0},slug:{type:String,default:""},description:{type:String,default:""},cover:{type:String,default:""},url:{type:String,default:""},author:{type:String,default:""},author_link:{type:String,default:""},tags:{type:Array,default:()=>[]},archive:{type:Boolean,default:!1},archive_link:{type:String,default:""},iframe:{type:Boolean,default:null},clicks:{type:Number,default:0},stars:{type:Number,default:0},counter:{type:Number,default:0},is_new:{type:Boolean,default:null}},setup(t){const{isDark:e}=De(),s=t,{isFormOpen:n,isAccessGranted:a}=ke(),{clicksCount:i,clickSynth:o}=Je(s.id);async function r(){!s.public&&!a.value?n.value=!n.value:(o(s.id),s.iframe?window.open(s.slug+"/","_self"):window.open(s.archive?s.archive_link:s.url,"_blank"))}return(l,c)=>{var d;const u=Qe,h=Be("ClientOnly");return b(),y("button",{class:"max-w-180 w-full flex flex-wrap items-stretch text-left relative bg-light-500 dark-bg-dark-300 -hover-translate-y-6px transition duration-200 hover-shadow-lg rounded-lg overflow-hidden relative border-1 border-dark-100 border-opacity-20 shadow-sm dark-border-light-800 dark-border-opacity-20",style:te({borderColor:T(q)[t.id]?T(e)?"hsl(50deg,80%,35%)":"hsl(40deg,90%,80%)":null}),onClick:r},[p("div",{class:"cover min-h-50 bg-cover bg-center filter transition",style:te([{backgroundImage:`url(/cover/${t.slug}.webp)`},{flex:"1 1 280px"}])},[T(i)||t.counter?(b(),y("div",vt,[wt,p("div",kt,O(T(i)||t.counter),1)])):_("",!0)],4),p("div",_t,[p("div",xt,[p("div",St,O(t.sort),1),p("div",Mt,[p("span",Tt,[p("div",It,O(t.title),1),t.archive?(b(),y("span",At,Et)):_("",!0)])]),N(h,null,{default:G(()=>[N(u,{class:"text-xl mr-2 absolute z-200",id:t.id,stars:t.stars},null,8,["id","stars"])]),_:1})]),t.author?(b(),se(Ne(t.author_link?"a":"div"),{key:0,class:"p-0 text-md",href:t.author_link,target:"_blank"},{default:G(()=>[U("by "+O(t.author),1)]),_:1},8,["href"])):_("",!0),p("div",Lt,[ze(l.$slots,"default",{},void 0,!0)]),((d=t.tags)==null?void 0:d.length)>0?(b(),y("div",$t,[(b(!0),y(j,null,we(t.tags,g=>(b(),y("div",{class:"px-2 py-1 text-sm bg-light-800 dark-bg-dark-500 rounded-lg",key:g},O(g),1))),128))])):_("",!0),t.iframe?_("",!0):(b(),y("a",{key:2,class:"absolute bottom-4 right-4 i-la-external-link-square-alt text-lg opacity-40 transition transition hover-opacity-100",onClick:c[0]||(c[0]=We(()=>{},["stop"])),href:`/${t.slug}/`,title:"Opens in a new window"},null,8,Ot)),t.is_new?(b(),y("div",Pt,"NEW!")):_("",!0)])],4)}}},Dt=ve(Rt,[["__scopeId","data-v-f3c34bc1"]]);function $(t){return Array.isArray?Array.isArray(t):Me(t)==="[object Array]"}const Bt=1/0;function Nt(t){if(typeof t=="string")return t;let e=t+"";return e=="0"&&1/t==-Bt?"-0":e}function zt(t){return t==null?"":Nt(t)}function E(t){return typeof t=="string"}function xe(t){return typeof t=="number"}function Wt(t){return t===!0||t===!1||Ft(t)&&Me(t)=="[object Boolean]"}function Se(t){return typeof t=="object"}function Ft(t){return Se(t)&&t!==null}function x(t){return t!=null}function Q(t){return!t.trim().length}function Me(t){return t==null?t===void 0?"[object Undefined]":"[object Null]":Object.prototype.toString.call(t)}const jt="Incorrect 'index' type",Zt=t=>`Invalid value for key ${t}`,Vt=t=>`Pattern length exceeds max of ${t}.`,Yt=t=>`Missing ${t} property in key`,qt=t=>`Property 'weight' in key '${t}' must be a positive integer`,pe=Object.prototype.hasOwnProperty;class Ut{constructor(e){this._keys=[],this._keyMap={};let s=0;e.forEach(n=>{let a=Te(n);this._keys.push(a),this._keyMap[a.id]=a,s+=a.weight}),this._keys.forEach(n=>{n.weight/=s})}get(e){return this._keyMap[e]}keys(){return this._keys}toJSON(){return JSON.stringify(this._keys)}}function Te(t){let e=null,s=null,n=null,a=1,i=null;if(E(t)||$(t))n=t,e=me(t),s=ae(t);else{if(!pe.call(t,"name"))throw new Error(Yt("name"));const o=t.name;if(n=o,pe.call(t,"weight")&&(a=t.weight,a<=0))throw new Error(qt(o));e=me(o),s=ae(o),i=t.getFn}return{path:e,id:s,weight:a,src:n,getFn:i}}function me(t){return $(t)?t:t.split(".")}function ae(t){return $(t)?t.join("."):t}function Gt(t,e){let s=[],n=!1;const a=(i,o,r)=>{if(x(i))if(!o[r])s.push(i);else{let l=o[r];const c=i[l];if(!x(c))return;if(r===o.length-1&&(E(c)||xe(c)||Wt(c)))s.push(zt(c));else if($(c)){n=!0;for(let u=0,h=c.length;ut.score===e.score?t.idx{this._keysMap[s.id]=n})}create(){this.isCreated||!this.docs.length||(this.isCreated=!0,E(this.docs[0])?this.docs.forEach((e,s)=>{this._addString(e,s)}):this.docs.forEach((e,s)=>{this._addObject(e,s)}),this.norm.clear())}add(e){const s=this.size();E(e)?this._addString(e,s):this._addObject(e,s)}removeAt(e){this.records.splice(e,1);for(let s=e,n=this.size();s{let o=a.getFn?a.getFn(e):this.getFn(e,a.path);if(x(o)){if($(o)){let r=[];const l=[{nestedArrIndex:-1,value:o}];for(;l.length;){const{nestedArrIndex:c,value:u}=l.pop();if(x(u))if(E(u)&&!Q(u)){let h={v:u,i:c,n:this.norm.get(u)};r.push(h)}else $(u)&&u.forEach((h,d)=>{l.push({nestedArrIndex:d,value:h})})}n.$[i]=r}else if(E(o)&&!Q(o)){let r={v:o,n:this.norm.get(o)};n.$[i]=r}}}),this.records.push(n)}toJSON(){return{keys:this.keys,records:this.records}}}function Ie(t,e,{getFn:s=f.getFn,fieldNormWeight:n=f.fieldNormWeight}={}){const a=new ue({getFn:s,fieldNormWeight:n});return a.setKeys(t.map(Te)),a.setSources(e),a.create(),a}function ts(t,{getFn:e=f.getFn,fieldNormWeight:s=f.fieldNormWeight}={}){const{keys:n,records:a}=t,i=new ue({getFn:e,fieldNormWeight:s});return i.setKeys(n),i.setIndexRecords(a),i}function Y(t,{errors:e=0,currentLocation:s=0,expectedLocation:n=0,distance:a=f.distance,ignoreLocation:i=f.ignoreLocation}={}){const o=e/t.length;if(i)return o;const r=Math.abs(n-s);return a?o+r/a:r?1:o}function ss(t=[],e=f.minMatchCharLength){let s=[],n=-1,a=-1,i=0;for(let o=t.length;i=e&&s.push([n,a]),n=-1)}return t[i-1]&&i-n>=e&&s.push([n,i-1]),s}const B=32;function ns(t,e,s,{location:n=f.location,distance:a=f.distance,threshold:i=f.threshold,findAllMatches:o=f.findAllMatches,minMatchCharLength:r=f.minMatchCharLength,includeMatches:l=f.includeMatches,ignoreLocation:c=f.ignoreLocation}={}){if(e.length>B)throw new Error(Vt(B));const u=e.length,h=t.length,d=Math.max(0,Math.min(n,h));let g=i,v=d;const m=r>1||l,S=m?Array(h):[];let M;for(;(M=t.indexOf(e,v))>-1;){let k=Y(e,{currentLocation:M,expectedLocation:d,distance:a,ignoreLocation:c});if(g=Math.min(k,g),v=M+u,m){let I=0;for(;I=he;A-=1){let V=A-1,de=s[t.charAt(V)];if(m&&(S[V]=+!!de),W[A]=(W[A+1]<<1|1)&de,k&&(W[A]|=(L[A+1]|L[A])<<1|1|L[A+1]),W[A]&Z&&(C=Y(e,{errors:k,currentLocation:V,expectedLocation:d,distance:a,ignoreLocation:c}),C<=g)){if(g=C,v=V,v<=d)break;he=Math.max(1,2*d-v)}}if(Y(e,{errors:k+1,currentLocation:d,expectedLocation:d,distance:a,ignoreLocation:c})>g)break;L=W}const z={isMatch:v>=0,score:Math.max(.001,C)};if(m){const k=ss(S,r);k.length?l&&(z.indices=k):z.isMatch=!1}return z}function as(t){let e={};for(let s=0,n=t.length;s{this.chunks.push({pattern:d,alphabet:as(d),startIndex:g})},h=this.pattern.length;if(h>B){let d=0;const g=h%B,v=h-g;for(;d{const{isMatch:M,score:L,indices:C}=ns(e,v,m,{location:a+S,distance:i,threshold:o,findAllMatches:r,minMatchCharLength:l,includeMatches:n,ignoreLocation:c});M&&(d=!0),h+=L,M&&C&&(u=[...u,...C])});let g={isMatch:d,score:d?h/this.chunks.length:1};return d&&n&&(g.indices=u),g}}class R{constructor(e){this.pattern=e}static isMultiMatch(e){return ge(e,this.multiRegex)}static isSingleMatch(e){return ge(e,this.singleRegex)}search(){}}function ge(t,e){const s=t.match(e);return s?s[1]:null}class is extends R{constructor(e){super(e)}static get type(){return"exact"}static get multiRegex(){return/^="(.*)"$/}static get singleRegex(){return/^=(.*)$/}search(e){const s=e===this.pattern;return{isMatch:s,score:s?0:1,indices:[0,this.pattern.length-1]}}}class os extends R{constructor(e){super(e)}static get type(){return"inverse-exact"}static get multiRegex(){return/^!"(.*)"$/}static get singleRegex(){return/^!(.*)$/}search(e){const n=e.indexOf(this.pattern)===-1;return{isMatch:n,score:n?0:1,indices:[0,e.length-1]}}}class rs extends R{constructor(e){super(e)}static get type(){return"prefix-exact"}static get multiRegex(){return/^\^"(.*)"$/}static get singleRegex(){return/^\^(.*)$/}search(e){const s=e.startsWith(this.pattern);return{isMatch:s,score:s?0:1,indices:[0,this.pattern.length-1]}}}class ls extends R{constructor(e){super(e)}static get type(){return"inverse-prefix-exact"}static get multiRegex(){return/^!\^"(.*)"$/}static get singleRegex(){return/^!\^(.*)$/}search(e){const s=!e.startsWith(this.pattern);return{isMatch:s,score:s?0:1,indices:[0,e.length-1]}}}class cs extends R{constructor(e){super(e)}static get type(){return"suffix-exact"}static get multiRegex(){return/^"(.*)"\$$/}static get singleRegex(){return/^(.*)\$$/}search(e){const s=e.endsWith(this.pattern);return{isMatch:s,score:s?0:1,indices:[e.length-this.pattern.length,e.length-1]}}}class us extends R{constructor(e){super(e)}static get type(){return"inverse-suffix-exact"}static get multiRegex(){return/^!"(.*)"\$$/}static get singleRegex(){return/^!(.*)\$$/}search(e){const s=!e.endsWith(this.pattern);return{isMatch:s,score:s?0:1,indices:[0,e.length-1]}}}class Ce extends R{constructor(e,{location:s=f.location,threshold:n=f.threshold,distance:a=f.distance,includeMatches:i=f.includeMatches,findAllMatches:o=f.findAllMatches,minMatchCharLength:r=f.minMatchCharLength,isCaseSensitive:l=f.isCaseSensitive,ignoreLocation:c=f.ignoreLocation}={}){super(e),this._bitapSearch=new Ae(e,{location:s,threshold:n,distance:a,includeMatches:i,findAllMatches:o,minMatchCharLength:r,isCaseSensitive:l,ignoreLocation:c})}static get type(){return"fuzzy"}static get multiRegex(){return/^"(.*)"$/}static get singleRegex(){return/^(.*)$/}search(e){return this._bitapSearch.searchIn(e)}}class Ee extends R{constructor(e){super(e)}static get type(){return"include"}static get multiRegex(){return/^'"(.*)"$/}static get singleRegex(){return/^'(.*)$/}search(e){let s=0,n;const a=[],i=this.pattern.length;for(;(n=e.indexOf(this.pattern,s))>-1;)s=n+i,a.push([n,s-1]);const o=!!a.length;return{isMatch:o,score:o?0:1,indices:a}}}const ie=[is,Ee,rs,ls,us,cs,os,Ce],be=ie.length,hs=/ +(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)/,ds="|";function fs(t,e={}){return t.split(ds).map(s=>{let n=s.trim().split(hs).filter(i=>i&&!!i.trim()),a=[];for(let i=0,o=n.length;i!!(t[K.AND]||t[K.OR]),bs=t=>!!t[le.PATH],ys=t=>!$(t)&&Se(t)&&!ce(t),ye=t=>({[K.AND]:Object.keys(t).map(e=>({[e]:t[e]}))});function Le(t,e,{auto:s=!0}={}){const n=a=>{let i=Object.keys(a);const o=bs(a);if(!o&&i.length>1&&!ce(a))return n(ye(a));if(ys(a)){const l=o?a[le.PATH]:i[0],c=o?a[le.PATTERN]:a[l];if(!E(c))throw new Error(Zt(l));const u={keyId:ae(l),pattern:c};return s&&(u.searcher=re(c,e)),u}let r={children:[],operator:i[0]};return i.forEach(l=>{const c=a[l];$(c)&&c.forEach(u=>{r.children.push(n(u))})}),r};return ce(t)||(t=ye(t)),n(t)}function vs(t,{ignoreFieldNorm:e=f.ignoreFieldNorm}){t.forEach(s=>{let n=1;s.matches.forEach(({key:a,norm:i,score:o})=>{const r=a?a.weight:null;n*=Math.pow(o===0&&r?Number.EPSILON:o,(r||1)*(e?1:i))}),s.score=n})}function ws(t,e){const s=t.matches;e.matches=[],x(s)&&s.forEach(n=>{if(!x(n.indices)||!n.indices.length)return;const{indices:a,value:i}=n;let o={indices:a,value:i};n.key&&(o.key=n.key.src),n.idx>-1&&(o.refIndex=n.idx),e.matches.push(o)})}function ks(t,e){e.score=t.score}function _s(t,e,{includeMatches:s=f.includeMatches,includeScore:n=f.includeScore}={}){const a=[];return s&&a.push(ws),n&&a.push(ks),t.map(i=>{const{idx:o}=i,r={item:e[o],refIndex:o};return a.length&&a.forEach(l=>{l(i,r)}),r})}class F{constructor(e,s={},n){this.options={...f,...s},this.options.useExtendedSearch,this._keyStore=new Ut(this.options.keys),this.setCollection(e,n)}setCollection(e,s){if(this._docs=e,s&&!(s instanceof ue))throw new Error(jt);this._myIndex=s||Ie(this.options.keys,this._docs,{getFn:this.options.getFn,fieldNormWeight:this.options.fieldNormWeight})}add(e){x(e)&&(this._docs.push(e),this._myIndex.add(e))}remove(e=()=>!1){const s=[];for(let n=0,a=this._docs.length;n-1&&(l=l.slice(0,s)),_s(l,this._docs,{includeMatches:n,includeScore:a})}_searchStringList(e){const s=re(e,this.options),{records:n}=this._myIndex,a=[];return n.forEach(({v:i,i:o,n:r})=>{if(!x(i))return;const{isMatch:l,score:c,indices:u}=s.searchIn(i);l&&a.push({item:i,idx:o,matches:[{score:c,value:i,norm:r,indices:u}]})}),a}_searchLogical(e){const s=Le(e,this.options),n=(r,l,c)=>{if(!r.children){const{keyId:h,searcher:d}=r,g=this._findMatches({key:this._keyStore.get(h),value:this._myIndex.getValueForItemAtKeyId(l,h),searcher:d});return g&&g.length?[{idx:c,item:l,matches:g}]:[]}const u=[];for(let h=0,d=r.children.length;h{if(x(r)){let c=n(s,r,l);c.length&&(i[l]||(i[l]={idx:l,item:r,matches:[]},o.push(i[l])),c.forEach(({matches:u})=>{i[l].matches.push(...u)}))}}),o}_searchObjectList(e){const s=re(e,this.options),{keys:n,records:a}=this._myIndex,i=[];return a.forEach(({$:o,i:r})=>{if(!x(o))return;let l=[];n.forEach((c,u)=>{l.push(...this._findMatches({key:c,value:o[u],searcher:s}))}),l.length&&i.push({idx:r,item:o,matches:l})}),i}_findMatches({key:e,value:s,searcher:n}){if(!x(s))return[];let a=[];if($(s))s.forEach(({v:i,i:o,n:r})=>{if(!x(i))return;const{isMatch:l,score:c,indices:u}=n.searchIn(i);l&&a.push({score:c,key:e,value:i,idx:o,norm:r,indices:u})});else{const{v:i,n:o}=s,{isMatch:r,score:l,indices:c}=n.searchIn(i);r&&a.push({score:l,key:e,value:i,norm:o,indices:c})}return a}}F.version="7.0.0";F.createIndex=Ie;F.parseIndex=ts;F.config=f;F.parseQuery=Le;gs(ms);const xs={class:"flex flex-col items-center mb-2 px-8"},Ss={class:"w-full max-w-110 flex items-center relative my-4 gap-2"},Ms=["placeholder"],Ts=p("div",{class:"i-la-search absolute left-2 text-xl opacity-40"},null,-1),Is=["title"],As={key:0,class:"i-la-star-solid"},Cs={key:1,class:"i-la-star"},Es={class:"flex flex-col items-center gap-8 p-2 max-w-160 mx-auto mb-12"},Ls=["index"],$s={class:"p-2",key:"nnn"},Os={key:0,class:"animate-pulse text-center"},Ps={__name:"SynthList",setup(t){const{isAccessGranted:e}=ke(),s=P(ne),n=new F(ne,{includeScore:!0,ignoreLocation:!0,shouldSort:!0,keys:["title","slug","author"]}),a=Ze("fav-filter",!1),i=P(""),o=P(!1),r=J(()=>n.search(i.value)),l=J(()=>r.value.filter(h=>h.score<.2).sort((h,d)=>h.score>d.score?1:0).map(h=>h.item.slug)),c=J(()=>s.value.filter(h=>i.value?l.value.includes(h.slug):a.value?q.value[h.id]:!0)),u=P([]);return Ve(async()=>{u.value=await Xe("synths",{fields:["id",{stats:["views","stars"]}]})}),Ye(q,h=>{Object.values(h).filter(Boolean).length==0&&(a.value=!1)},{deep:!0,immediate:!0}),(h,d)=>{const g=Dt,v=yt;return b(),y(j,null,[p("div",xs,[p("div",Ss,[X(p("input",{class:"w-full focus text-xl py-2 pl-9 bg-light-50 bg-opacity-100 shadow-inner border-1 border-dark-100 border-opacity-10 rounded-lg dark-bg-dark-200 outline-none focus-border-opacity-90",placeholder:"Type to search...","onUpdate:modelValue":d[0]||(d[0]=m=>i.value=m)},null,8,Ms),[[ee,i.value]]),Ts,i.value?(b(),y("div",{key:0,class:"i-la-times absolute right-2 text-xl opacity-40 hover-opacity-80 transition cursor-pointer",onClick:d[1]||(d[1]=m=>i.value="")})):_("",!0),Object.values(T(q)).filter(Boolean).length>0&&!i.value?(b(),y("button",{key:1,class:"transition p-2 shadow dark-bg-dark-200 dark-hover-bg-dark-100 bg-light-300 hover-bg-light-100 rounded-lg flex items-center gap-2 text-xl text-yellow",title:T(a)?"Only favourites are shown":"Show only favourites",onClick:d[2]||(d[2]=m=>a.value=!T(a))},[N(qe,{name:"fade"},{default:G(()=>[T(a)?(b(),y("div",As)):(b(),y("div",Cs))]),_:1})],8,Is)):_("",!0),i.value?_("",!0):(b(),y("button",{key:2,class:"transition p-2 shadow dark-bg-dark-200 dark-hover-bg-dark-100 bg-light-300 hover-bg-light-100 rounded-lg flex items-center gap-2 text-xl",title:"Suggest a new link to the collection",onClick:d[3]||(d[3]=m=>o.value=!o.value)},[p("div",{class:Ue(["i-la-plus transform transition",{"rotate-45":o.value}])},null,2)]))])]),p("div",Es,[o.value?_("",!0):(b(),se(Ke,{key:0,name:"fade"},{default:G(()=>[(b(!0),y(j,null,we(c.value,(m,S)=>{var M,L,C,D,Z,z,k,I;return b(),y("div",{class:"flex w-full sticky",style:te([{top:`${80+S*4}px`,zIndex:S+10},{flex:"1 1 240px"}]),key:m.id,index:S},[(b(),se(g,Ge({pos:S,style:{filter:!m.public&&!T(e)?"contrast(70%) blur(2px) opacity(80%)":""},key:m.id},m,{counter:(D=(C=(L=(M=u.value)==null?void 0:M.find(w=>(w==null?void 0:w.id)==(m==null?void 0:m.id)))==null?void 0:L.stats)==null?void 0:C[0])==null?void 0:D.views,stars:(I=(k=(z=(Z=u.value)==null?void 0:Z.find(w=>(w==null?void 0:w.id)==(m==null?void 0:m.id)))==null?void 0:z.stats)==null?void 0:k[0])==null?void 0:I.stars}),null,16,["pos","style","counter","stars"]))],12,Ls)}),128))]),_:1})),c.value.length==0||o.value?(b(),y("div",$s,[o.value?_("",!0):(b(),y("div",Os,"We don't know such a web-app yet. ")),N(v,{class:"max-w-140 mx-auto mt-6",onSubmitted:d[4]||(d[4]=m=>o.value=!1)})])):_("",!0)])],64)}}},Ks=JSON.parse('{"title":"Web synths","description":"Web synthesizers to play with MIDI controllers","frontmatter":{"title":"Web synths","description":"Web synthesizers to play with MIDI controllers","date":"2023-06-22T00:00:00.000Z","layout":"home"},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":1713874304000}'),Rs={name:"index.md"},Ds=p("h1",{class:"text-center text-2xl sm-text-3xl font-bold mt-8",style:{padding:"0.1rem 1rem"}},"Online synthesizers and web piano apps",-1),Bs=p("h2",{class:"text-xl sm-text-2xl text-center my-2",style:{padding:"0 1rem"}},"Curated collection of free music creation resources",-1),Ns={class:"px-4 text-lg text-center mb-8 max-w-150 mx-auto"},zs=p("a",{class:"font-bold",href:"https://chromatone.center",target:"_blank",rel:"noopener"}," Chromatone",-1),Ws=p("a",{class:"font-bold",href:"https://playtronica.com",target:"_blank",rel:"noopener"}," Playtronica",-1),Fs=p("h3",{class:"font-bold text-xl"},"Welcome to the community of web-based musicians!",-1),js=p("p",null,[p("a",{target:"_blank",href:"https://chromatone.center/"},[p("img",{src:He,class:"max-w-16 mx-auto"})])],-1);function Zs(t,e,s,n,a,i){const o=Ps,r=pt,l=it;return b(),y("div",null,[Ds,Bs,N(o),p("div",Ns,[zs,U(" is an open source visual music language for education, research and performance. We develop a new universal way to communicate music. "),Ws,U(" is a digital playground that explores the possibilities of the material world through technology, creating gadgets that make the world musical. Together we share our passion for online music instruments. "),N(r),Fs,js,N(l)])])}const Hs=ve(Rs,[["render",Zs]]);export{Ks as __pageData,Hs as default}; diff --git a/assets/index.md.Bp19cI6y.lean.js b/assets/index.md.Bp19cI6y.lean.js new file mode 100644 index 00000000..98bca678 --- /dev/null +++ b/assets/index.md.Bp19cI6y.lean.js @@ -0,0 +1 @@ +import{D as $e,b,d as y,g as p,f as T,q as _,r as P,E as fe,F as Oe,G as Pe,t as O,H as Re,I as j,e as X,j as ee,h as U,_ as ve,s as De,x as Be,J as te,y as N,z as G,A as se,K as Ne,i as ze,L as we,C as We,M as Fe,N as je,a as Ze,c as J,o as Ve,w as Ye,T as qe,n as Ue,O as Ge,P as Ke,Q as He}from"./chunks/framework.DA3bj7zI.js";import{u as Je,f as q,_ as Qe,a as Xe}from"./chunks/useClicks.DKflLG6D.js";import{u as ke}from"./chunks/theme.TKyytG40.js";import"./chunks/index.OsI8M1nP.js";const et={class:"text-center line-height-loose text-md"},tt={class:"mx-auto max-w-75ch intro md-text-lg"},st=p("div",{class:"i-mdi-share"},null,-1),nt=p("span",null,"Share to save for later",-1),at=[st,nt],it={__name:"AboutShare",setup(t){const{share:e,isSupported:s}=$e();function n(){e({title:"Web synths collection",text:"Look at this online synthesizer collection. No need to install anything - just your browser and any MIDI controller will do.",url:location.href})}return(a,i)=>(b(),y("div",et,[p("div",tt,[T(s)?(b(),y("button",{key:0,class:"mx-auto flex items-center gap-2 text-white py-2 px-4 mt-6 shadow-lg rounded-lg cursor-pointer bg-green-600 -hover-translate-y-2px transition",onClick:i[0]||(i[0]=o=>n()),"data-umami-event":"Shared via button"},at)):_("",!0)])]))}},ne=JSON.parse(`[{"url":"https://dotpiano.com/","date_created":"2023-10-27T12:45:53.887Z","title":"Dotpiano","slug":"dotpiano","author":"Alex Chen and Yotam Mann","author_link":null,"description":null,"tags":["polyphonic","midi","keyboard","Multiplayer"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"6dac5187-213f-4eb8-96ed-63c2e689b206","id":1,"sort":1,"clicks":6424,"public":true,"is_new":false,"stats":[1]},{"url":"https://waveform.playtronica.com/","date_created":"2023-10-27T12:45:54.644Z","title":"Waveform","slug":"waveform","author":"Qvantor","author_link":"https://github.com/qvantor/","description":null,"tags":["playtronica","polyphonic","midi"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"86cb9385-9deb-4f10-95cb-765980156e65","id":39,"sort":2,"clicks":6795,"public":true,"is_new":false,"stats":[2]},{"url":"https://juno-106.js.org/","date_created":"2023-10-27T12:45:54.085Z","title":"Juno-106","slug":"juno-106","author":"Steve Goldberg ","author_link":"https://github.com/stevengoldberg","description":null,"tags":["fm","midi"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"b54cfce7-af2f-4e03-a5b3-81fc853d2cc8","id":14,"sort":3,"clicks":5014,"public":true,"is_new":false,"stats":[3]},{"url":"https://chromatone.center/practice/synth/elementary/","date_created":"2023-10-27T12:45:54.453Z","title":"Elementary synth","slug":"elementary","author":"Chromatone","author_link":"https://chromatone.center","description":null,"tags":["chromatone","polyphonic","keyboard"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"21070a51-6089-48bd-8840-ba37b5f2963d","id":29,"sort":4,"clicks":3186,"public":true,"is_new":false,"stats":[4]},{"url":"https://mmontag.github.io/dx7-synth-js/","date_created":"2023-10-27T12:45:54.477Z","title":"DX7 Synth","slug":"dx7","author":"Matt Montag ","author_link":"https://github.com/mmontag","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"f3b285ee-6b82-453b-9ff6-aeda18ec675b","id":30,"sort":5,"clicks":2718,"public":true,"is_new":false,"stats":[5]},{"url":"https://touchme.chromatone.center/","date_created":"2023-10-27T12:45:53.941Z","title":"TouchME","slug":"touchme","author":"Chromatone","author_link":"https://chromatone.center","description":null,"tags":["chromatone","playtronica"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"68062279-8e08-4953-ae8f-7a77c584948e","id":3,"sort":6,"clicks":3416,"public":true,"is_new":false,"stats":[6]},{"url":"https://muted.io/","date_created":"2023-10-27T12:45:54.742Z","title":"Muted.io","slug":"muted-io","author":"Sébastien Noël","author_link":"https://twitter.com/muted_io","description":null,"tags":["educational","midi"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"5c08ac7d-4414-47c0-b7d1-a9867ba3949f","id":43,"sort":7,"clicks":175,"public":false,"is_new":false,"stats":[10]},{"url":"https://chromatone.center/practice/synth/soundfont/","date_created":"2023-12-18T10:20:56.985Z","title":"Soundfont Sampler Synth","slug":"soundfont","author":"Chromatone","author_link":"https://github.com/chromatone","description":"Free open source soundfont sampler online synthesizer. Very robust and hassle free way to play some straightforward sampled instruments like horns, xylophones and just piano sounds. Instantly playable instrument with about 90 presets out of the box. ","tags":["Poly","Keyboard","Sampler","MIDI"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"26704e9d-5964-4a0f-940c-370c14777e95","id":51,"sort":8,"clicks":0,"public":true,"is_new":true,"stats":[43]},{"url":"https://midi.city/","date_created":"2023-12-28T05:40:45.140Z","title":"MIDI.city","slug":"midi-city","author":"Astral Digital","author_link":"https://astral.digital/","description":"midi.city is a free online synthesizer, built by Jack.\\n\\nmidi.city has over 128 different instruments including: Pianos, Saxophones, Drums, Trumpets, Synth Pads, Guitar, Violins and all other instruments defined in the General Midi specification.","tags":null,"archive_link":null,"archive":false,"content":"midi.city has been created with the help of hundreds of different open-source projects and with contributions from many others.\\n\\n- Tone.js by Yotam Mann: the Web Audio API-based sound engine that implements a majority of nodes used in the audio graph. It powers many of the advanced features used such as Granular Synthesis, Reverb, and timing.\\n- Groove Monkee: graciously provided the MIDI files that are used for the percussion loops.\\n- Keenan Brand: created the midi.city logo and various icons used on the site.\\n- Noun Project: various icons are used via a Pro license.\\n- Google Material Design: various icons.\\n- Compifont by Marcin Dziembor: the soundfont powering the samples and many the audio graph definitions, is originally . Several modifications have been made to adapt to midi.city and the Web Audio API. ","iframe":true,"cover":"8cb479ba-e4e0-42f2-986c-597b68b8e639","id":52,"sort":9,"clicks":10,"public":false,"is_new":false,"stats":[44]},{"url":"https://apps.musedlab.org/aqwertyon/theory/","date_created":"2023-10-27T12:45:54.711Z","title":"aQWERTYon","slug":"aqwertyon","author":"Mused lab","author_link":"https://musedlab.org/","description":null,"tags":["polyphonic","samples"],"archive_link":null,"archive":false,"content":"The **aQWERTYon** (QWERTY accordion) is designed to simplify the process for improvising, learning, and making music with your computer keyboard. Play along with your favorite YouTube videos, learn music theory through our Music Theory for Bedroom Producers course in collaboration with Soundfly, or take advantage of Web MIDI and us it to play and record into your favorite digital audio workstation, such as Soundtrap.com, GarageBand, Logic, or Ableton, or as input into music notation programs like Noteflight.\\n\\nhttps://youtu.be/hqFr4lF6u_Y","iframe":true,"cover":"e7c87de8-c290-4da9-b0e0-eed73871b27a","id":42,"sort":10,"clicks":348,"public":false,"is_new":false,"stats":[8]},{"url":"https://musiclab.chromeexperiments.com/","date_created":"2023-11-26T08:23:47.351Z","title":"Chrome Music Lab","slug":"chrome-lab","author":"Google","author_link":"https://github.com/googlecreativelab/chrome-music-lab","description":"Chrome Music Lab is a website that makes learning music more accessible through fun, hands-on experiments.","tags":["Educational","Keyboard","MIDI","Poly","Piano","Analysis","Mic","Visuals"],"archive_link":null,"archive":false,"content":"## What can it be used for?\\n\\nMany teachers have been using Chrome Music Lab as a tool in their classrooms to explore music and its connections to science, math, art, and more. They’ve been combining it with dance and live instruments. Here’s a collection of some uses we’ve found on Twitter.\\n\\n## Can I use it to make my own songs?\\n\\nYes. Check out the Song Maker experiment, which lets you make and share your own songs.\\n\\n## Do I need to make an account?\\n\\nNope. Just open any experiment and start playing.\\n\\n## How were these built?\\n\\nAll our experiments are all built with freely accessible web technology such as Web Audio API, WebMIDI, Tone.js, and more. These tools make it easier for coders to build new interactive music experiences. You can get the open-source code to lots of these experiments here on [Github](https://github.com/googlecreativelab/chrome-music-lab).\\n\\n## What devices do these work on?\\n\\nYou can play with these experiments across devices – phones, tablets, laptops – just by opening the site on a web browser such as Chrome.","iframe":true,"cover":"297b059e-a6fa-4faa-91b2-c2e1e68cf98f","id":50,"sort":11,"clicks":304,"public":false,"is_new":false,"stats":[9]},{"url":"https://websynths.com/","date_created":"2023-10-27T12:45:54.019Z","title":"Websynths Microtonal","slug":"microtonal","author":"WebSynths","author_link":"https://www.websynths.com/microtonal/","description":"The deepest internet synthesizer","tags":null,"archive_link":null,"archive":false,"content":"\\nWebSynths is a free resource for any musician with internet access! But, it is made possible by support from our patrons. Please consider helping if you can: patreon.com/WebSynths\\n\\n- You can use your QWERTY keyboard, mouse, mobile touch or MIDI keyboard to play the sounds.\\n- You can change the tuning of the keys, or select a scale, by clicking the tuning button.\\n- MIDI is a way to use an external physical instrument to play it. If you have a MIDI keyboard that you wish to use, hit the MIDI button to set it up.\\n- If a note gets stuck, hit the panic button, it will stop all voices from playing.\\n- You can use the arrows on your computer keyboard to scroll through the presets.\\n\\nA simple explanation of Subtractive Synthesis:\\n\\n- Subtractive Synthesis works by taking one or more oscillators, setting the pitch of their oscillation (usually to the note of the key being pressed,) setting the shape of their oscillation to the desired timbre (Sine, Saw, Square or more complex shapes,) mixing them together and running them through a filter to change their EQ (usually filtering out the highest or lowest frequencies... this is why it is called \\"subtractive\\"), then running them through an envelope so the note can be heard on when a key is pressed down and is silenced when the key is released. In the case of WebSynths Microtonal, the sound is then sent through effects like delay, chorus and reverb and out to your speakers.\\n- Oscillators are the voices. This synth has 3 of them in the left column. You can change the character of each voice by changing the parameters of them. The 'Shape' menu allows you to choose from different styles of voice for each oscillator. You can turn each voice on or off and mix them together.\\n- The filter section applies equalization to your oscillators via the cutoff and emphasis controls. You can change the equalization filter type to 'low pass / high pass' and many more. You can use the LFOs and/or Envelopes to change how the filtration changes over time. An LFO is just a slow oscillator that is uses to automatically move a parameter over time.\\n- The amplitude envelope changes how your sound is played, volume-wise, when you hit a note. For example, having a long release time will mean that once you let go of the note you are playing it will tail off until fading out. Having a slow attack will mean that your note will fade in instead of playing at full volume straight away.\\n- The effects section allows you to add various effects to your overall sound. You can change the effects, mix them together and toggle them on or off too.\\n\\n","iframe":false,"cover":"ffc54664-7ba4-4855-a56a-6657a5542a04","id":10,"sort":12,"clicks":172,"public":false,"is_new":false,"stats":[11]},{"url":"https://stuartmemo.com/synth/","date_created":"2023-10-27T12:45:54.586Z","title":"Sympathetic Synthesizer System Mk 1","slug":"sympathetic","author":"Stuart Memo ","author_link":"https://github.com/stuartmemo","description":null,"tags":["keyboard","midi","additive"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"123aeb6d-c7b0-43dd-a852-98660bdf03f0","id":37,"sort":13,"clicks":302,"public":false,"is_new":false,"stats":[12]},{"url":"https://learningsynths.ableton.com/","date_created":"2023-10-27T12:45:54.360Z","title":"Learning synths","slug":"ableton","author":"Ableton","author_link":"https://github.com/Ableton","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":false,"cover":"0bf8312d-c449-4f5c-80ad-36594ef98db6","id":26,"sort":14,"clicks":184,"public":false,"is_new":false,"stats":[13]},{"url":"https://www.femurdesign.com/theremin/","date_created":"2023-10-27T12:45:54.206Z","title":"Theremin","slug":"theremin","author":"Femur","author_link":"https://femurdesign.com/","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"6b22ef48-6830-4cf2-810d-809408033450","id":19,"sort":15,"clicks":320,"public":false,"is_new":false,"stats":[14]},{"url":"https://cardinal.kx.studio/live","date_created":"2024-05-20T18:57:14.836Z","title":" DISTRHO Cardinal","slug":"cardinal","author":"Filipe Coelho, aka falkTX","author_link":"https://falktx.berlin/","description":"Cardinal is a free and open-source virtual modular synthesizer plugin, available in AudioUnit/CLAP/LV2/VST2/VST3 plugin formats and as a standalone app for FreeBSD, Linux, macOS, Windows and the Web.","tags":["Modular","FM","Poly"],"archive_link":null,"archive":false,"content":"Cardinal is a free and open-source virtual modular synthesizer plugin, available in AudioUnit/CLAP/LV2/VST2/VST3 plugin formats and as a standalone app for FreeBSD, Linux, macOS, Windows and the Web.\\nIt is based on the popular VCV Rack but with a focus on being a fully self-contained plugin version.\\n\\nMore specifically, this is a DPF-based plugin wrapper around VCV Rack, using its code directly instead of forking the project, with the target of having a self-contained, fully free and open-source plugin version of Rack.\\nSee the why section below for the reasons Cardinal exists, also for frequently asked questions check this FAQ document.\\n\\nCardinal contains Rack, some 3rd-party modules and a few internal utilities all in a single binary.\\nAll \\"Core\\" modules from Rack have been replaced by Cardinal equivalents, simplified to better work for an audio plugin.\\n\\nCardinal does not load external modules and does not connect to the official Rack library/store.\\nAll VCV branding has been removed (to the best of our knowledge) in order to avoid any trademark issues.\\n\\n## Why\\n\\nCardinal was created first and foremost as a way to have Rack as a proper open-source audio plugin.\\nA proper audio plugin should be self-contained as much as possible, as to not interfere with the DAW/Host. Loading external modules clearly goes against this idea.\\nNot to mention being open-source, otherwise we are at the mercy of the wishes of a company for what we can and cannot do, which is not something Cardinal's authors wish to abide by.\\n\\nA self-contained plugin can't be overstated, as DLL/shared-object symbol conflicts can trigger hard-to-debug crashes.\\nWhile Rack tries to mitigate this as much as possible, crashes due to conflicting modules have already been seen in v2 builds.\\nOn the other side, Cardinal redefines class and function names as needed to avoid as many conflicts as possible.\\n\\nSupport for ARM and non-mainstream platforms (for example BSD) has also always been missing from the official Rack since the start.\\nWhile we can patch the Rack free version to support these, same can't be done with Rack Pro with it being a closed-source product.\\nThe online library/store only supports a very specific set of platforms too, so non-supported platforms would need any 3rd-party modules to be manually compiled to make them usable.\\n\\nUnhappiness with the audio threading behaviour of Rack also plays a role.\\nBoth audio and MIDI should be locked to the host audio thread as to minimize (or even altogether remove) latency and jitter.\\nThe use of separate threads for MIDI is bad design, one that has been corrected in DAWs and JACK-MIDI for several years...\\nBut Rack's use of RtMidi requires separate threading, so Cardinal does not use it.","iframe":true,"cover":"dc7070e1-66fd-4f74-95d2-92d8388864e2","id":56,"sort":16,"clicks":5,"public":false,"is_new":true,"stats":[48]},{"url":"https://multiplayer-orchestra.com","date_created":"2024-04-23T08:07:22.796Z","title":"Multiplayer Orchestra","slug":"multiplayer-orchestra","author":"Mutli_Orchestra","author_link":"https://twitter.com/Mutli_Orchestra","description":"Play in real time with people from all around the world with more than 400 instruments.","tags":["Poly","MIDI","Keyboard","Collaborative","Online"],"archive_link":null,"archive":false,"content":"Multiplayer Orchestra ([https://www.multiplayer-orchestra.com/](https://www.multiplayer-orchestra.com/)) is a web application that allows you to virtually collaborate with musicians from around the world in real-time. Here are some key features:\\n\\n* **Large instrument selection:** Choose from over 400 instruments, including pianos, guitars, drums, and orchestral instruments.\\n* **Real-time collaboration:** Play music simultaneously with other users, creating a virtual orchestra.\\n* **Public and private rooms:** Join public rooms to jam with others or create private rooms with a password for specific collaborations.\\n* **Contests:** Participate in contests to win prizes like Amazon gift cards by recording solo performances.\\n\\n**It's important to note that the website seems to be in beta based on the version information listed (Beta 0.30).** ","iframe":true,"cover":"d743d9ea-d73f-4593-a70e-58a3e4deaa1b","id":55,"sort":17,"clicks":5,"public":false,"is_new":true,"stats":[47]},{"url":"https://touchpianist.com/","date_created":"2023-10-27T12:45:54.691Z","title":"Touch Pianist","slug":"touch-pianist","author":"EarSlap","author_link":null,"description":null,"tags":["entertainment","piano"],"archive_link":null,"archive":false,"content":"Touch Pianist is a musical toy / instrument that allows the user to perform hard-to-play classical piano music favorites (from composers like Beethoven, Mozart, Bach, Satie, Debussy to name a few) just by tapping the rhythm of the piece's particular sound events on a computer keyboard or a touch screen.\\n\\nIt also provides live visualisation of the pieces that are being performed. There is no score keeping, the user is free to perform the music in any way they wish. The premise is that it is really fun to perform a piece you know well, exactly like you feel it with so little effort.\\n\\nTouch Pianist has CoreMIDI support so you can use your favorite piano / sound plug-in in your computer as a sound source if you wish.","iframe":false,"cover":"415deeeb-a843-4363-b6c9-78918aa688af","id":41,"sort":18,"clicks":177,"public":false,"is_new":false,"stats":[15]},{"url":"https://www.beepbox.co","date_created":"2024-03-21T02:43:35.749Z","title":"BeepBox","slug":"beepbox","author":"John Nesky","author_link":"https://johnnesky.com/","description":"BeepBox is an online tool for sketching and sharing instrumental music.\\n\\nAll song data is contained in the URL at the top of your browser. When you make changes to the song, the URL is updated to reflect your changes. When you are satisfied with your song, just copy and paste the URL to save and share your song!\\n\\nBeepBox is a passion project, and will always be free to use. ","tags":["Poly","Sequencer","FM"],"archive_link":null,"archive":false,"content":" BeepBox is developed by John Nesky.\\n\\nBeepBox does not claim ownership over songs created with it, so original songs belong to their authors.\\n\\nNeither John Nesky nor BeepBox assume responsibility for any copyrighted material played on BeepBox. No songs are ever received, recorded, or distributed by BeepBox's servers. All song data is contained in the URL after the hash (#) mark, and your song data will not leave your device unless you copy and share the URL. BeepBox does not collect, track, or share any user data. ","iframe":true,"cover":"dea37f5f-504c-443f-ba9a-3dff4d583506","id":54,"sort":19,"clicks":10,"public":false,"is_new":true,"stats":[46]},{"url":"https://roland50.studio/","date_created":"2023-11-25T05:42:57.573Z","title":"Roland 50 Studio","slug":"roland50","author":"Yuri Suzuki","author_link":"https://www.yurisuzuki.com/","description":"It's a professional sounding online musical interface, which records your masterpieces and allows you to share your creations through social media, messaging and also as a download.\\nOn top of the TR-808 drum machine and TB-303 bass synthesizer featured at the original 2020 release, now the sound of SH-101 synthesizer is added, and more sounds to come later in the year 2022, commemorating Roland's 50th anniversary.","tags":["drum machine","SP404","TR808","TB303","Step sequencer"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"3b5aec13-7e50-475c-9165-bc963872515d","id":45,"sort":20,"clicks":17,"public":false,"is_new":false,"stats":[16]},{"url":"https://www.disco-computer.com/synthesizer/synth.html","date_created":"2023-10-27T12:45:54.270Z","title":"Disco-computer","slug":"disco-computer","author":"Patrick Sawyer","author_link":null,"description":null,"tags":["polyphonic","fm","keyboard"],"archive_link":"/archive/synthescheisse/index.html","archive":true,"content":null,"iframe":true,"cover":"0d0183e6-8964-4246-a18c-a6ca0a0f2794","id":22,"sort":21,"clicks":269,"public":false,"is_new":false,"stats":[17]},{"url":"https://seeing-sound.netlify.app/","date_created":"2023-10-27T12:45:54.492Z","title":"Video Sampler","slug":"video-sampler","author":"Playtronica","author_link":"https://shop.playtronica.com","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"b39cc546-2571-4402-84cd-f8497e27d0c9","id":31,"sort":22,"clicks":256,"public":false,"is_new":false,"stats":[18]},{"url":"https://www.stef.be/bassoontracker/","date_created":"2024-03-14T07:04:03.311Z","title":"Bassoon Tracker","slug":"bassoon","author":"Steffest","author_link":" https://www.stef.be","description":"Browser-based old-school Amiga Music Tracker in plain old JavaScript.","tags":["FM","tracker","8-bit","low-fi"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"70c9db80-8ef8-4aa5-9dcd-6b5c3c0da5b2","id":53,"sort":24,"clicks":10,"public":false,"is_new":true,"stats":[45]},{"url":"https://www.igorski.nl/experiment/websid","date_created":"2023-10-27T12:45:54.438Z","title":"WebSID Commodore 64","slug":"web-sid","author":"Igor Zinken","author_link":"https://www.igorski.nl/","description":null,"tags":["polyphonic","keyboard","midi","additive"],"archive_link":null,"archive":false,"content":null,"iframe":false,"cover":"932e0ae0-0048-4c6d-92bb-a4a17a8a4dd4","id":28,"sort":25,"clicks":156,"public":false,"is_new":false,"stats":[19]},{"url":"https://nicroto.github.io/viktor/","date_created":"2023-10-27T12:45:54.388Z","title":"Viktor NV-1","slug":"nv-1","author":"Nikolay Tsenkov ","author_link":"https://github.com/nicroto","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"ff3082ad-3c38-4880-ab23-35711c97ea71","id":27,"sort":26,"clicks":496,"public":false,"is_new":false,"stats":[20]},{"url":"https://virtualpiano.eu/","date_created":"2023-10-27T12:45:54.542Z","title":"VirtualPiano.eu","slug":"virtual-piano","author":"WebSyrup","author_link":"https://websyrup.net/","description":null,"tags":["midi","keyboard"],"archive_link":null,"archive":false,"content":"VirtualPiano.eu is the online synthesizer that allows you to play 128 musical instruments for free using your PC keyboard, the mouse or by connecting an external MIDI keyboard.\\n\\nYou can adjust Volume, Reverb, Loop and quality. Use the sustain and adjust the octaves, you can also select and set different channels including the one for the drums.\\n\\nCreate your own melodies, have fun playing or use VirtualPiano to learn how to play the Piano online on your own. ","iframe":true,"cover":"9a59eea5-c77f-483c-9443-1cd0727e6dcc","id":35,"sort":27,"clicks":282,"public":false,"is_new":false,"stats":[21]},{"url":"https://onlinesequencer.net/","date_created":"2023-10-27T12:45:54.565Z","title":"Online sequencer","slug":"online-sequencer","author":"Jacob Morgan and George Burdell","author_link":"https://github.com/buildist","description":null,"tags":["sequencer"],"archive_link":null,"archive":false,"content":"**Online Sequencer** is a web-based music sequencer that allows users to create music saved online, or on their computer. The piano roll is essential to the sequencer, which is on the left of the screen, with 72 notes from C2-B7 (labelled differently from a piano, C2 on the sequencer corresponds to C1 on a piano). In addition to several parameters which can be modified to change the sound of the music, additional functionality can be accessed via the console.\\n\\nUpon opening the site, users can begin composing and \\"drawing\\" notes on the grid, with the default instrument being Electric Piano. By default, a sequence's time signature is set to 4/4, and the grid spacing is set to 1/4 (16 notes per measure). The note lengths can be adjusted by dragging the dark tab on the right of each note, and precision can be afforded by changing the 'Grid' option to other note divisions. \\n\\n## History\\n\\nOnline Sequencer was created on January 2, 2013 by Jacob Morgan during a break at Georgia Tech.\\n\\nBeginning in the fall of 2013, accounts were available but were separate from the music portion of the site. They were only used in the forum and the website chat.\\n\\nIn 2015, accounts were linked to the main website and allowed songs to be saved under someone's username.\\n\\nThe World Update in 2018 added several new instruments and changed the landscape of sound design on the site. The \\"World Update Contest\\" was held for the update.\\n\\nStarting in late 2020, OS began to receive a variety of updates which vastly improved the functionality of the site. These updates introduced features like custom grid sizes, automation with markers, extra reverb options, detune, and distortion. In 2021, the \\"Space Race\\" contest was held, as to see who could work best with the changes.\\n\\nIn late 2022, newer, higher-quality instruments were added. Some of the instruments, such as Electric Piano, Grand Piano, Violin, and Cello got an updated sustained version, while the original versions still exist under the \\"classic\\" designation.\\n\\nCurrently, the 10-Year Anniversary Contest is being held.\\n\\n## Features\\n\\nWithin the editor, numerous user interface features allow for various changes which will impact the individual sequence on that page.\\n\\n### Basic features\\n\\nUI features include:\\n\\n- Tempo (10-999 BPM)\\n- Measure count or Time count (MM: SS.ssss)\\n- Time signature (2/4, 3/4, 4/4, 5/4)\\n- Grid size (This correlates to note divisions; 1/16, 1/12, 1/8, 1/6, 1/4, 1/3, 1/2)\\n- Auto Scroll (Fast, Smooth, Off; how the sequencer displays measures off-screen as a sequence plays)\\n- Add an Audio Track (This won't be saved to the sequence but will play alongside it for ease of transcription)\\n- Title input\\n- Draw, select, and erase\\n- Instrument dropdown, instrument options, and select instrument (selects all notes of the current instrument)\\n- Select all, Cut, Copy, and Paste\\n- Zoom options\\n- Export options\\n- Help\\n- Fullscreen\\n- Tooltips\\n\\n### Advanced features\\n\\nUsers can access more advanced features for use in their sequences by clicking the advanced tab on the instrument they wish to change. This menu contains options to change volume, panning, detune (-1200 to +1200), reverb, distortion, and an equalizer. This array lets users configure specific instruments to create specific sounds, and textures, or to accompany other instruments as a layer or development of the original sound.\\n\\nOS also allows for commands to be entered in the browser console to manipulate different options in specific ways, such as setting custom to detune values (0-infinity), custom grid sizes, note divisions, and sequence ID amongst other things. These options bring OS closer to that of classic Digital Audio Workstations (DAWs) but are still limited in terms of accessibility and availability.\\n\\n### Browser and device support\\n\\nOnline Sequencer supports Chrome and other Chromium-based browsers, such as Microsoft Edge, Opera, and Brave. Firefox is also supported, but often with limited functionality. Safari and Internet Explorer are not supported, due to engine issues.\\n\\nOther mobile browsers support sequence playback, but not editing. However, iOS users have the same problem with WebKit on macOS. However, unlike in macOS, all browsers (even Chromium-based browsers) use WebKit as the engine for iOS due to Apple prohibiting other engines for security reasons; iOS does not support Online Sequencer, other than chat and forums.\\n\\nThe website's user interface is formatted for proper use on desktops, but some pages such as the chat page, playlists, and forums should be formatted well on mobile devices. ","iframe":true,"cover":"ec08ba72-8157-4415-8b34-aea1fe686e09","id":36,"sort":28,"clicks":321,"public":false,"is_new":false,"stats":[22]},{"url":"https://sb.bitsnbites.eu/","date_created":"2023-10-27T12:45:54.625Z","title":"Sound Box","slug":"sound-box","author":"Bits'n'bites","author_link":"https://gitlab.com/mbitsnbites","description":null,"tags":["tracker"],"archive_link":null,"archive":false,"content":"https://github.com/mbitsnbites/soundbox","iframe":true,"cover":"f2f825f3-a084-408b-86d1-2b64cf822c3c","id":38,"sort":29,"clicks":209,"public":false,"is_new":false,"stats":[23]},{"url":"https://femurdesign.com/omni/","date_created":"2023-10-27T12:45:54.224Z","title":"Omni","slug":"omni","author":"Luke Phillips","author_link":"https://femurdesign.com/","description":null,"tags":["polyphonic","keyboard"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"fbb1364f-53cf-4f71-8f29-d7f572308e78","id":20,"sort":30,"clicks":210,"public":false,"is_new":false,"stats":[24]},{"url":"https://www.g200kg.com/docs/webmodular/","date_created":"2023-10-27T12:45:54.252Z","title":"Web Modular","slug":"web-modular","author":"g200kg","author_link":"https://www.g200kg.com/","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"48e0280c-f7ff-4308-bde3-973b7febe89c","id":21,"sort":31,"clicks":202,"public":false,"is_new":false,"stats":[25]},{"url":"https://errozero.co.uk/acid-machine/","date_created":"2023-10-27T12:45:54.333Z","title":"Acid Machine 2","slug":"acid-machine-2","author":"Errozero","author_link":"https://www.errozero.co.uk/","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"031eab3e-2f21-442a-8fdc-9769907824e0","id":25,"sort":32,"clicks":166,"public":false,"is_new":false,"stats":[26]},{"url":"https://apps.musedlab.org/groovepizza/","date_created":"2023-11-21T04:30:41.565Z","title":"Groove Pizza","slug":"groove-pizza","author":"NYU Music Experience Design Lab","author_link":"https://musedlab.org/groovepizza/","description":"Groove Pizza is a circular rhythm app for creative music making and learning! It’s also a playful tool for creating grooves using math concepts like shapes, angles and patterns","tags":["drums","sequencer","Educational"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"50d7bc15-edd5-4261-bc2a-1b173b5a1547","id":44,"sort":33,"clicks":91,"public":false,"is_new":false,"stats":[27]},{"url":"https://ojack.github.io/PIXELSYNTH/","date_created":"2023-10-27T12:45:54.286Z","title":"PixelSynth","slug":"pixel-synth","author":"Olivia Jack","author_link":"https://ojack.xyz/","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"77369c22-944c-4f6a-83b5-85e16fe43abc","id":24,"sort":34,"clicks":217,"public":false,"is_new":false,"stats":[28]},{"url":"https://www.multiplayerpiano.org/","date_created":"2023-11-26T08:06:18.875Z","title":"Multiplayer Piano","slug":"multiplayer-piano","author":"Brandon Lockaby","author_link":"https://github.com/Multiplayer-Piano","description":"Online piano, that can be played by any site visitor together in a virtual room or alone.","tags":["Piano","MIDI","Poly","Multiplayer"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"9c10771b-e38f-469f-b58b-c9e6bb91a072","id":49,"sort":35,"clicks":4,"public":false,"is_new":false,"stats":[29]},{"url":"https://webaudiodemos.appspot.com/midi-synth/index.html","date_created":"2023-10-27T12:45:53.963Z","title":"MIDI–driven Web Audio","slug":"midi-driven-web-audio","author":"Chris Wilson","author_link":"https://github.com/cwilso","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":false,"cover":"0005a0c9-c7e7-4922-a1e5-49d4326d2f77","id":6,"sort":36,"clicks":127,"public":false,"is_new":false,"stats":[30]},{"url":"https://samplestitch.com.s3-website-us-east-1.amazonaws.com/","date_created":"2023-10-27T12:45:54.185Z","title":"Samplestich","slug":"sample-stich","author":"Matt Daniels","author_link":"https://mdaniels.com","description":null,"tags":["samples","keyboard"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"89859f9f-0d45-44dc-93b6-98dfa2e7d799","id":18,"sort":37,"clicks":164,"public":false,"is_new":false,"stats":[31]},{"url":"https://www.audiotool.com/product/device/heisenberg/","date_created":"2023-10-27T12:45:53.983Z","title":"Meet the Heisenberg","slug":"meet-the-heisenberg","author":"AudioTool","author_link":"https://www.audiotool.com","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"a2397ce6-7712-40e5-b4e0-df95c7992662","id":8,"sort":38,"clicks":255,"public":false,"is_new":false,"stats":[32]},{"url":"https://www.gsn-lib.org/apps/cardboardsynth/index.html","date_created":"2023-10-27T12:45:54.002Z","title":"Cardboard Synth","slug":"cardboard-synth","author":" Thorsten Thormählen","author_link":"https://www.uni-marburg.de/en/fb12/research-groups/grafikmultimedia/thormae","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"29fe1fcc-ca85-41b3-ab1e-7f10770f2c1f","id":9,"sort":39,"clicks":184,"public":false,"is_new":false,"stats":[33]},{"url":"https://tanguysynth.com/","date_created":"2023-10-27T12:45:54.036Z","title":"Tanguy synth","slug":"tanguy-synth","author":"Luke Teaford","author_link":"https://github.com/luketeaford","description":null,"tags":["monophonic","additive","keyboard"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"5471a71e-7c5b-4ea6-aee0-1b394873c381","id":11,"sort":40,"clicks":117,"public":false,"is_new":false,"stats":[34]},{"url":"https://www.blokdust.com/","date_created":"2023-11-25T06:31:23.261Z","title":"BlokDust","slug":"blokdust","author":"Luke Twyman, Luke Phillips, Edward Silverton","author_link":"https://wvnl.xyz/","description":"BlokDust is a creative visual drag and drop music exploration tool. Developed in Brighton UK and released in 2016, BlokDust uses the Web Audio API and makes use of Tone.js as an audio framework.","tags":["creative","sequencer"],"archive_link":null,"archive":false,"content":"Luke Twyman - project concept, design & Ul.\\nwhitevinyldesign.com\\n@whitevinylUK\\nLuke Phillips - audio development & musical interaction.\\nfemurdesign.com\\n@lukephills\\nEdward Silverton - client & server architecture & core development.\\nedsilv.com\\n@edsilv","iframe":true,"cover":"7e5bcda8-f37a-46c0-91d9-0a6ea501a101","id":47,"sort":41,"clicks":19,"public":false,"is_new":false,"stats":[35]},{"url":"https://mod-synth.io/","date_created":"2023-10-27T12:45:54.052Z","title":"MOD synth","slug":"mod-synth","author":"André Venâncio ","author_link":"https://github.com/andrevenancio","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"31564bf3-fca9-41a4-b390-d78ccd848107","id":12,"sort":42,"clicks":146,"public":false,"is_new":false,"stats":[36]},{"url":"https://perso.numericable.fr/olivier.friker/synth/O3-synth%20V1.3.html","date_created":"2023-10-27T12:45:54.069Z","title":"OLIF SY1K","slug":"olif-sy-1-k","author":"Olivier Friker","author_link":null,"description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"3b9a5e11-3de3-46fe-9cdc-e1668b152f31","id":13,"sort":43,"clicks":145,"public":false,"is_new":false,"stats":[37]},{"url":"http://www.noisesculptor.com/","date_created":"2023-10-27T12:45:54.104Z","title":"Note Sculptor","slug":"note-sculptor","author":"Ruin Technology","author_link":null,"description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":false,"cover":"a01968d1-3f88-4522-9752-1c33d10d90d9","id":15,"sort":44,"clicks":129,"public":false,"is_new":false,"stats":[38]},{"url":"https://aikelab.net/websynthv2/","date_created":"2023-10-27T12:45:54.141Z","title":"WebAudioSynth V2","slug":"web-audio-synth-v2","author":"like","author_link":"https://github.com/aike/","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"ac668fba-7226-43dc-a91f-bd21a31446e5","id":16,"sort":45,"clicks":305,"public":false,"is_new":false,"stats":[39]},{"url":"https://isleoftune.com/","date_created":"2023-11-25T06:22:15.184Z","title":"Isle of Tune","slug":"isleoftune","author":"Jim Hall","author_link":"https://twitter.com/isleoftune","description":"Draw an island, where everything plays music.","tags":["game","sequencer"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"6830c24f-c7bf-430f-abc1-3d7fbf5f2557","id":46,"sort":46,"clicks":15,"public":false,"is_new":false,"stats":[40]},{"url":"https://www.soundtrap.com/","date_created":"2023-10-27T12:45:54.155Z","title":"Sound Trap","slug":"sound-trap","author":"Soundtrap","author_link":"https://www.soundtrap.com/about","description":null,"tags":["daw"],"archive_link":null,"archive":false,"content":null,"iframe":false,"cover":"63ef832a-f7da-4536-851f-4964005a89f1","id":17,"sort":47,"clicks":124,"public":false,"is_new":false,"stats":[41]},{"url":"http://typedrummer.com/","date_created":"2023-11-25T06:34:10.166Z","title":"Type Drummer","slug":"typedrummer","author":"Kyle Stetz","author_link":"http://kylestetz.com/","description":"Type your drum loops","tags":["sequencer","drums","Keyboard"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"19454c82-7338-4144-9f1c-010c80a70a6e","id":48,"sort":48,"clicks":21,"public":false,"is_new":false,"stats":[42]}]`),ot={class:"text-center line-height-loose text-md"},rt={class:"mx-auto max-w-75ch intro md-text-lg"},lt={class:"p-2 flex flex-col mt-8"},ct={class:"text-4xl font-bold"},ut=p("div",{class:"text-lg"},"web synths",-1),ht={class:"p-2 flex flex-col mt-8"},dt={class:"text-4xl font-bold"},ft=p("div",{class:"text-lg"},"web musicians",-1),pt={__name:"AboutCount",setup(t){const e=P(),s=P(0),n=P(0),a=fe(s),i=fe(n),o=Oe(e);return Pe(o,async r=>{if(r){s.value=ne.length;const c=await(await fetch("https://dbs.chromatone.center/flows/trigger/0c0e8d82-8e12-44a6-867a-57ddeec9d774",{type:"GET",mode:"cors",headers:{"Content-Type":"application/json"}})).json();n.value=c.count}}),(r,l)=>(b(),y("div",ot,[p("div",rt,[p("div",{class:"flex justify-center",ref_key:"counters",ref:e},[p("div",lt,[p("div",ct,O(T(a).toFixed()),1),ut]),p("div",ht,[p("div",dt,O(T(i).toFixed()||5e3)+"+",1),ft])],512)])]))}},mt={class:"flex flex-col text-center gap-4 bg-light-700 dark-bg-dark-200 dark-bg-opacity-20 p-4 rounded-lg shadow-lg mb-8"},gt=p("div",{class:"text-xl font-bold my-2"},"Suggest a new web-synth to the collection",-1),bt=["disabled"],yt={__name:"FormSynth",emits:["submitted"],setup(t,{emit:e}){const s=e,n=Re({url:"",text:""}),a=/[(http(s) ?): \/\/(www\.)?a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)/;function i(l){return a.test(l)}const o=P();async function r(){var l,c,u;try{const h=await fetch("https://dbs.chromatone.center/flows/trigger/dc8ca96f-76e6-4cac-b26c-10751746eb89",{method:"POST",mode:"cors",cache:"no-cache",credentials:"same-origin",headers:{"Content-Type":"application/json"},redirect:"follow",referrerPolicy:"no-referrer",body:JSON.stringify(n)});o.value=await(h==null?void 0:h.json()),n.url="",n.text="",setTimeout(()=>{s("submitted")},2e3)}catch(h){console.error(h,(c=(l=h==null?void 0:h.errors)==null?void 0:l[0])==null?void 0:c.message,(u=h==null?void 0:h.response)==null?void 0:u.status)}}return(l,c)=>(b(),y("div",mt,[o.value?(b(),y(j,{key:1},[U("Thanks for your suggestion!")],64)):(b(),y(j,{key:0},[gt,X(p("input",{class:"py-2 px-4 rounded bg-light-200 dark-bg-dark-200",type:"text",placeholder:"https://new.synth.url/","onUpdate:modelValue":c[0]||(c[0]=u=>n.url=u)},null,512),[[ee,n.url]]),X(p("textarea",{class:"py-2 px-4 rounded bg-light-200 dark-bg-dark-200",oninput:"this.style.height = ''; this.style.height = this.scrollHeight +'px'",placeholder:"Describe the web-app and how do you use it musically","onUpdate:modelValue":c[1]||(c[1]=u=>n.text=u)},null,512),[[ee,n.text]]),p("button",{class:"text-xl py-2 px-4 rounded bg-dark-100 text-light-200 dark-bg-light-700 dark-text-dark-500 shadow-lg disabled-opacity-20",disabled:!i(n.url),onClick:c[2]||(c[2]=u=>r())},O(i(n.url)?"Submit":"Please provide a valid URL"),9,bt)],64))]))}},_e=t=>(Fe("data-v-f3c34bc1"),t=t(),je(),t),vt={key:0,class:"px-2 py-1 bg-light-800 dark-bg-dark-800 rounded-xl transition text-sm select-none absolute bottom-2 left-2 text-center z-200 flex items-center gap-1 opacity-70 hover-opacity-100",title:"Since 28 Oct 2023"},wt=_e(()=>p("div",{class:"i-la-eye"},null,-1)),kt={class:"p-0 mt-2px"},_t={class:"p-4 flex flex-col items-start justify-between gap-2",style:{flex:"10 0 200px"}},xt={class:"flex items-center gap-2 flex-0 w-full"},St={class:"transition text-xl select-none absolute top-4 left-4 text-center z-200"},Mt={class:"flex-auto"},Tt={class:"flex items-center gap-2"},It={class:"text-2xl font-bold"},At={key:0,class:"font-normal",title:"Archived locally by us"},Ct=_e(()=>p("div",{class:"i-ph-archive-duotone"},null,-1)),Et=[Ct],Lt={class:"flex-1"},$t={key:1,class:"flex-1 flex items-end flex flex-wrap gap-2"},Ot=["href"],Pt={key:3,class:"text-xl p-2 absolute left-2 top-4 bg-yellow-600 rounded-xl shadow font-bold z-1000 transform -rotate-10"},Rt={__name:"SynthCard",props:{pos:{type:Number,default:0},sort:{type:Number,default:0},public:{type:Boolean,default:!1},title:{type:String,default:""},id:{type:Number,default:0},slug:{type:String,default:""},description:{type:String,default:""},cover:{type:String,default:""},url:{type:String,default:""},author:{type:String,default:""},author_link:{type:String,default:""},tags:{type:Array,default:()=>[]},archive:{type:Boolean,default:!1},archive_link:{type:String,default:""},iframe:{type:Boolean,default:null},clicks:{type:Number,default:0},stars:{type:Number,default:0},counter:{type:Number,default:0},is_new:{type:Boolean,default:null}},setup(t){const{isDark:e}=De(),s=t,{isFormOpen:n,isAccessGranted:a}=ke(),{clicksCount:i,clickSynth:o}=Je(s.id);async function r(){!s.public&&!a.value?n.value=!n.value:(o(s.id),s.iframe?window.open(s.slug+"/","_self"):window.open(s.archive?s.archive_link:s.url,"_blank"))}return(l,c)=>{var d;const u=Qe,h=Be("ClientOnly");return b(),y("button",{class:"max-w-180 w-full flex flex-wrap items-stretch text-left relative bg-light-500 dark-bg-dark-300 -hover-translate-y-6px transition duration-200 hover-shadow-lg rounded-lg overflow-hidden relative border-1 border-dark-100 border-opacity-20 shadow-sm dark-border-light-800 dark-border-opacity-20",style:te({borderColor:T(q)[t.id]?T(e)?"hsl(50deg,80%,35%)":"hsl(40deg,90%,80%)":null}),onClick:r},[p("div",{class:"cover min-h-50 bg-cover bg-center filter transition",style:te([{backgroundImage:`url(/cover/${t.slug}.webp)`},{flex:"1 1 280px"}])},[T(i)||t.counter?(b(),y("div",vt,[wt,p("div",kt,O(T(i)||t.counter),1)])):_("",!0)],4),p("div",_t,[p("div",xt,[p("div",St,O(t.sort),1),p("div",Mt,[p("span",Tt,[p("div",It,O(t.title),1),t.archive?(b(),y("span",At,Et)):_("",!0)])]),N(h,null,{default:G(()=>[N(u,{class:"text-xl mr-2 absolute z-200",id:t.id,stars:t.stars},null,8,["id","stars"])]),_:1})]),t.author?(b(),se(Ne(t.author_link?"a":"div"),{key:0,class:"p-0 text-md",href:t.author_link,target:"_blank"},{default:G(()=>[U("by "+O(t.author),1)]),_:1},8,["href"])):_("",!0),p("div",Lt,[ze(l.$slots,"default",{},void 0,!0)]),((d=t.tags)==null?void 0:d.length)>0?(b(),y("div",$t,[(b(!0),y(j,null,we(t.tags,g=>(b(),y("div",{class:"px-2 py-1 text-sm bg-light-800 dark-bg-dark-500 rounded-lg",key:g},O(g),1))),128))])):_("",!0),t.iframe?_("",!0):(b(),y("a",{key:2,class:"absolute bottom-4 right-4 i-la-external-link-square-alt text-lg opacity-40 transition transition hover-opacity-100",onClick:c[0]||(c[0]=We(()=>{},["stop"])),href:`/${t.slug}/`,title:"Opens in a new window"},null,8,Ot)),t.is_new?(b(),y("div",Pt,"NEW!")):_("",!0)])],4)}}},Dt=ve(Rt,[["__scopeId","data-v-f3c34bc1"]]);function $(t){return Array.isArray?Array.isArray(t):Me(t)==="[object Array]"}const Bt=1/0;function Nt(t){if(typeof t=="string")return t;let e=t+"";return e=="0"&&1/t==-Bt?"-0":e}function zt(t){return t==null?"":Nt(t)}function E(t){return typeof t=="string"}function xe(t){return typeof t=="number"}function Wt(t){return t===!0||t===!1||Ft(t)&&Me(t)=="[object Boolean]"}function Se(t){return typeof t=="object"}function Ft(t){return Se(t)&&t!==null}function x(t){return t!=null}function Q(t){return!t.trim().length}function Me(t){return t==null?t===void 0?"[object Undefined]":"[object Null]":Object.prototype.toString.call(t)}const jt="Incorrect 'index' type",Zt=t=>`Invalid value for key ${t}`,Vt=t=>`Pattern length exceeds max of ${t}.`,Yt=t=>`Missing ${t} property in key`,qt=t=>`Property 'weight' in key '${t}' must be a positive integer`,pe=Object.prototype.hasOwnProperty;class Ut{constructor(e){this._keys=[],this._keyMap={};let s=0;e.forEach(n=>{let a=Te(n);this._keys.push(a),this._keyMap[a.id]=a,s+=a.weight}),this._keys.forEach(n=>{n.weight/=s})}get(e){return this._keyMap[e]}keys(){return this._keys}toJSON(){return JSON.stringify(this._keys)}}function Te(t){let e=null,s=null,n=null,a=1,i=null;if(E(t)||$(t))n=t,e=me(t),s=ae(t);else{if(!pe.call(t,"name"))throw new Error(Yt("name"));const o=t.name;if(n=o,pe.call(t,"weight")&&(a=t.weight,a<=0))throw new Error(qt(o));e=me(o),s=ae(o),i=t.getFn}return{path:e,id:s,weight:a,src:n,getFn:i}}function me(t){return $(t)?t:t.split(".")}function ae(t){return $(t)?t.join("."):t}function Gt(t,e){let s=[],n=!1;const a=(i,o,r)=>{if(x(i))if(!o[r])s.push(i);else{let l=o[r];const c=i[l];if(!x(c))return;if(r===o.length-1&&(E(c)||xe(c)||Wt(c)))s.push(zt(c));else if($(c)){n=!0;for(let u=0,h=c.length;ut.score===e.score?t.idx{this._keysMap[s.id]=n})}create(){this.isCreated||!this.docs.length||(this.isCreated=!0,E(this.docs[0])?this.docs.forEach((e,s)=>{this._addString(e,s)}):this.docs.forEach((e,s)=>{this._addObject(e,s)}),this.norm.clear())}add(e){const s=this.size();E(e)?this._addString(e,s):this._addObject(e,s)}removeAt(e){this.records.splice(e,1);for(let s=e,n=this.size();s{let o=a.getFn?a.getFn(e):this.getFn(e,a.path);if(x(o)){if($(o)){let r=[];const l=[{nestedArrIndex:-1,value:o}];for(;l.length;){const{nestedArrIndex:c,value:u}=l.pop();if(x(u))if(E(u)&&!Q(u)){let h={v:u,i:c,n:this.norm.get(u)};r.push(h)}else $(u)&&u.forEach((h,d)=>{l.push({nestedArrIndex:d,value:h})})}n.$[i]=r}else if(E(o)&&!Q(o)){let r={v:o,n:this.norm.get(o)};n.$[i]=r}}}),this.records.push(n)}toJSON(){return{keys:this.keys,records:this.records}}}function Ie(t,e,{getFn:s=f.getFn,fieldNormWeight:n=f.fieldNormWeight}={}){const a=new ue({getFn:s,fieldNormWeight:n});return a.setKeys(t.map(Te)),a.setSources(e),a.create(),a}function ts(t,{getFn:e=f.getFn,fieldNormWeight:s=f.fieldNormWeight}={}){const{keys:n,records:a}=t,i=new ue({getFn:e,fieldNormWeight:s});return i.setKeys(n),i.setIndexRecords(a),i}function Y(t,{errors:e=0,currentLocation:s=0,expectedLocation:n=0,distance:a=f.distance,ignoreLocation:i=f.ignoreLocation}={}){const o=e/t.length;if(i)return o;const r=Math.abs(n-s);return a?o+r/a:r?1:o}function ss(t=[],e=f.minMatchCharLength){let s=[],n=-1,a=-1,i=0;for(let o=t.length;i=e&&s.push([n,a]),n=-1)}return t[i-1]&&i-n>=e&&s.push([n,i-1]),s}const B=32;function ns(t,e,s,{location:n=f.location,distance:a=f.distance,threshold:i=f.threshold,findAllMatches:o=f.findAllMatches,minMatchCharLength:r=f.minMatchCharLength,includeMatches:l=f.includeMatches,ignoreLocation:c=f.ignoreLocation}={}){if(e.length>B)throw new Error(Vt(B));const u=e.length,h=t.length,d=Math.max(0,Math.min(n,h));let g=i,v=d;const m=r>1||l,S=m?Array(h):[];let M;for(;(M=t.indexOf(e,v))>-1;){let k=Y(e,{currentLocation:M,expectedLocation:d,distance:a,ignoreLocation:c});if(g=Math.min(k,g),v=M+u,m){let I=0;for(;I=he;A-=1){let V=A-1,de=s[t.charAt(V)];if(m&&(S[V]=+!!de),W[A]=(W[A+1]<<1|1)&de,k&&(W[A]|=(L[A+1]|L[A])<<1|1|L[A+1]),W[A]&Z&&(C=Y(e,{errors:k,currentLocation:V,expectedLocation:d,distance:a,ignoreLocation:c}),C<=g)){if(g=C,v=V,v<=d)break;he=Math.max(1,2*d-v)}}if(Y(e,{errors:k+1,currentLocation:d,expectedLocation:d,distance:a,ignoreLocation:c})>g)break;L=W}const z={isMatch:v>=0,score:Math.max(.001,C)};if(m){const k=ss(S,r);k.length?l&&(z.indices=k):z.isMatch=!1}return z}function as(t){let e={};for(let s=0,n=t.length;s{this.chunks.push({pattern:d,alphabet:as(d),startIndex:g})},h=this.pattern.length;if(h>B){let d=0;const g=h%B,v=h-g;for(;d{const{isMatch:M,score:L,indices:C}=ns(e,v,m,{location:a+S,distance:i,threshold:o,findAllMatches:r,minMatchCharLength:l,includeMatches:n,ignoreLocation:c});M&&(d=!0),h+=L,M&&C&&(u=[...u,...C])});let g={isMatch:d,score:d?h/this.chunks.length:1};return d&&n&&(g.indices=u),g}}class R{constructor(e){this.pattern=e}static isMultiMatch(e){return ge(e,this.multiRegex)}static isSingleMatch(e){return ge(e,this.singleRegex)}search(){}}function ge(t,e){const s=t.match(e);return s?s[1]:null}class is extends R{constructor(e){super(e)}static get type(){return"exact"}static get multiRegex(){return/^="(.*)"$/}static get singleRegex(){return/^=(.*)$/}search(e){const s=e===this.pattern;return{isMatch:s,score:s?0:1,indices:[0,this.pattern.length-1]}}}class os extends R{constructor(e){super(e)}static get type(){return"inverse-exact"}static get multiRegex(){return/^!"(.*)"$/}static get singleRegex(){return/^!(.*)$/}search(e){const n=e.indexOf(this.pattern)===-1;return{isMatch:n,score:n?0:1,indices:[0,e.length-1]}}}class rs extends R{constructor(e){super(e)}static get type(){return"prefix-exact"}static get multiRegex(){return/^\^"(.*)"$/}static get singleRegex(){return/^\^(.*)$/}search(e){const s=e.startsWith(this.pattern);return{isMatch:s,score:s?0:1,indices:[0,this.pattern.length-1]}}}class ls extends R{constructor(e){super(e)}static get type(){return"inverse-prefix-exact"}static get multiRegex(){return/^!\^"(.*)"$/}static get singleRegex(){return/^!\^(.*)$/}search(e){const s=!e.startsWith(this.pattern);return{isMatch:s,score:s?0:1,indices:[0,e.length-1]}}}class cs extends R{constructor(e){super(e)}static get type(){return"suffix-exact"}static get multiRegex(){return/^"(.*)"\$$/}static get singleRegex(){return/^(.*)\$$/}search(e){const s=e.endsWith(this.pattern);return{isMatch:s,score:s?0:1,indices:[e.length-this.pattern.length,e.length-1]}}}class us extends R{constructor(e){super(e)}static get type(){return"inverse-suffix-exact"}static get multiRegex(){return/^!"(.*)"\$$/}static get singleRegex(){return/^!(.*)\$$/}search(e){const s=!e.endsWith(this.pattern);return{isMatch:s,score:s?0:1,indices:[0,e.length-1]}}}class Ce extends R{constructor(e,{location:s=f.location,threshold:n=f.threshold,distance:a=f.distance,includeMatches:i=f.includeMatches,findAllMatches:o=f.findAllMatches,minMatchCharLength:r=f.minMatchCharLength,isCaseSensitive:l=f.isCaseSensitive,ignoreLocation:c=f.ignoreLocation}={}){super(e),this._bitapSearch=new Ae(e,{location:s,threshold:n,distance:a,includeMatches:i,findAllMatches:o,minMatchCharLength:r,isCaseSensitive:l,ignoreLocation:c})}static get type(){return"fuzzy"}static get multiRegex(){return/^"(.*)"$/}static get singleRegex(){return/^(.*)$/}search(e){return this._bitapSearch.searchIn(e)}}class Ee extends R{constructor(e){super(e)}static get type(){return"include"}static get multiRegex(){return/^'"(.*)"$/}static get singleRegex(){return/^'(.*)$/}search(e){let s=0,n;const a=[],i=this.pattern.length;for(;(n=e.indexOf(this.pattern,s))>-1;)s=n+i,a.push([n,s-1]);const o=!!a.length;return{isMatch:o,score:o?0:1,indices:a}}}const ie=[is,Ee,rs,ls,us,cs,os,Ce],be=ie.length,hs=/ +(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)/,ds="|";function fs(t,e={}){return t.split(ds).map(s=>{let n=s.trim().split(hs).filter(i=>i&&!!i.trim()),a=[];for(let i=0,o=n.length;i!!(t[K.AND]||t[K.OR]),bs=t=>!!t[le.PATH],ys=t=>!$(t)&&Se(t)&&!ce(t),ye=t=>({[K.AND]:Object.keys(t).map(e=>({[e]:t[e]}))});function Le(t,e,{auto:s=!0}={}){const n=a=>{let i=Object.keys(a);const o=bs(a);if(!o&&i.length>1&&!ce(a))return n(ye(a));if(ys(a)){const l=o?a[le.PATH]:i[0],c=o?a[le.PATTERN]:a[l];if(!E(c))throw new Error(Zt(l));const u={keyId:ae(l),pattern:c};return s&&(u.searcher=re(c,e)),u}let r={children:[],operator:i[0]};return i.forEach(l=>{const c=a[l];$(c)&&c.forEach(u=>{r.children.push(n(u))})}),r};return ce(t)||(t=ye(t)),n(t)}function vs(t,{ignoreFieldNorm:e=f.ignoreFieldNorm}){t.forEach(s=>{let n=1;s.matches.forEach(({key:a,norm:i,score:o})=>{const r=a?a.weight:null;n*=Math.pow(o===0&&r?Number.EPSILON:o,(r||1)*(e?1:i))}),s.score=n})}function ws(t,e){const s=t.matches;e.matches=[],x(s)&&s.forEach(n=>{if(!x(n.indices)||!n.indices.length)return;const{indices:a,value:i}=n;let o={indices:a,value:i};n.key&&(o.key=n.key.src),n.idx>-1&&(o.refIndex=n.idx),e.matches.push(o)})}function ks(t,e){e.score=t.score}function _s(t,e,{includeMatches:s=f.includeMatches,includeScore:n=f.includeScore}={}){const a=[];return s&&a.push(ws),n&&a.push(ks),t.map(i=>{const{idx:o}=i,r={item:e[o],refIndex:o};return a.length&&a.forEach(l=>{l(i,r)}),r})}class F{constructor(e,s={},n){this.options={...f,...s},this.options.useExtendedSearch,this._keyStore=new Ut(this.options.keys),this.setCollection(e,n)}setCollection(e,s){if(this._docs=e,s&&!(s instanceof ue))throw new Error(jt);this._myIndex=s||Ie(this.options.keys,this._docs,{getFn:this.options.getFn,fieldNormWeight:this.options.fieldNormWeight})}add(e){x(e)&&(this._docs.push(e),this._myIndex.add(e))}remove(e=()=>!1){const s=[];for(let n=0,a=this._docs.length;n-1&&(l=l.slice(0,s)),_s(l,this._docs,{includeMatches:n,includeScore:a})}_searchStringList(e){const s=re(e,this.options),{records:n}=this._myIndex,a=[];return n.forEach(({v:i,i:o,n:r})=>{if(!x(i))return;const{isMatch:l,score:c,indices:u}=s.searchIn(i);l&&a.push({item:i,idx:o,matches:[{score:c,value:i,norm:r,indices:u}]})}),a}_searchLogical(e){const s=Le(e,this.options),n=(r,l,c)=>{if(!r.children){const{keyId:h,searcher:d}=r,g=this._findMatches({key:this._keyStore.get(h),value:this._myIndex.getValueForItemAtKeyId(l,h),searcher:d});return g&&g.length?[{idx:c,item:l,matches:g}]:[]}const u=[];for(let h=0,d=r.children.length;h{if(x(r)){let c=n(s,r,l);c.length&&(i[l]||(i[l]={idx:l,item:r,matches:[]},o.push(i[l])),c.forEach(({matches:u})=>{i[l].matches.push(...u)}))}}),o}_searchObjectList(e){const s=re(e,this.options),{keys:n,records:a}=this._myIndex,i=[];return a.forEach(({$:o,i:r})=>{if(!x(o))return;let l=[];n.forEach((c,u)=>{l.push(...this._findMatches({key:c,value:o[u],searcher:s}))}),l.length&&i.push({idx:r,item:o,matches:l})}),i}_findMatches({key:e,value:s,searcher:n}){if(!x(s))return[];let a=[];if($(s))s.forEach(({v:i,i:o,n:r})=>{if(!x(i))return;const{isMatch:l,score:c,indices:u}=n.searchIn(i);l&&a.push({score:c,key:e,value:i,idx:o,norm:r,indices:u})});else{const{v:i,n:o}=s,{isMatch:r,score:l,indices:c}=n.searchIn(i);r&&a.push({score:l,key:e,value:i,norm:o,indices:c})}return a}}F.version="7.0.0";F.createIndex=Ie;F.parseIndex=ts;F.config=f;F.parseQuery=Le;gs(ms);const xs={class:"flex flex-col items-center mb-2 px-8"},Ss={class:"w-full max-w-110 flex items-center relative my-4 gap-2"},Ms=["placeholder"],Ts=p("div",{class:"i-la-search absolute left-2 text-xl opacity-40"},null,-1),Is=["title"],As={key:0,class:"i-la-star-solid"},Cs={key:1,class:"i-la-star"},Es={class:"flex flex-col items-center gap-8 p-2 max-w-160 mx-auto mb-12"},Ls=["index"],$s={class:"p-2",key:"nnn"},Os={key:0,class:"animate-pulse text-center"},Ps={__name:"SynthList",setup(t){const{isAccessGranted:e}=ke(),s=P(ne),n=new F(ne,{includeScore:!0,ignoreLocation:!0,shouldSort:!0,keys:["title","slug","author"]}),a=Ze("fav-filter",!1),i=P(""),o=P(!1),r=J(()=>n.search(i.value)),l=J(()=>r.value.filter(h=>h.score<.2).sort((h,d)=>h.score>d.score?1:0).map(h=>h.item.slug)),c=J(()=>s.value.filter(h=>i.value?l.value.includes(h.slug):a.value?q.value[h.id]:!0)),u=P([]);return Ve(async()=>{u.value=await Xe("synths",{fields:["id",{stats:["views","stars"]}]})}),Ye(q,h=>{Object.values(h).filter(Boolean).length==0&&(a.value=!1)},{deep:!0,immediate:!0}),(h,d)=>{const g=Dt,v=yt;return b(),y(j,null,[p("div",xs,[p("div",Ss,[X(p("input",{class:"w-full focus text-xl py-2 pl-9 bg-light-50 bg-opacity-100 shadow-inner border-1 border-dark-100 border-opacity-10 rounded-lg dark-bg-dark-200 outline-none focus-border-opacity-90",placeholder:"Type to search...","onUpdate:modelValue":d[0]||(d[0]=m=>i.value=m)},null,8,Ms),[[ee,i.value]]),Ts,i.value?(b(),y("div",{key:0,class:"i-la-times absolute right-2 text-xl opacity-40 hover-opacity-80 transition cursor-pointer",onClick:d[1]||(d[1]=m=>i.value="")})):_("",!0),Object.values(T(q)).filter(Boolean).length>0&&!i.value?(b(),y("button",{key:1,class:"transition p-2 shadow dark-bg-dark-200 dark-hover-bg-dark-100 bg-light-300 hover-bg-light-100 rounded-lg flex items-center gap-2 text-xl text-yellow",title:T(a)?"Only favourites are shown":"Show only favourites",onClick:d[2]||(d[2]=m=>a.value=!T(a))},[N(qe,{name:"fade"},{default:G(()=>[T(a)?(b(),y("div",As)):(b(),y("div",Cs))]),_:1})],8,Is)):_("",!0),i.value?_("",!0):(b(),y("button",{key:2,class:"transition p-2 shadow dark-bg-dark-200 dark-hover-bg-dark-100 bg-light-300 hover-bg-light-100 rounded-lg flex items-center gap-2 text-xl",title:"Suggest a new link to the collection",onClick:d[3]||(d[3]=m=>o.value=!o.value)},[p("div",{class:Ue(["i-la-plus transform transition",{"rotate-45":o.value}])},null,2)]))])]),p("div",Es,[o.value?_("",!0):(b(),se(Ke,{key:0,name:"fade"},{default:G(()=>[(b(!0),y(j,null,we(c.value,(m,S)=>{var M,L,C,D,Z,z,k,I;return b(),y("div",{class:"flex w-full sticky",style:te([{top:`${80+S*4}px`,zIndex:S+10},{flex:"1 1 240px"}]),key:m.id,index:S},[(b(),se(g,Ge({pos:S,style:{filter:!m.public&&!T(e)?"contrast(70%) blur(2px) opacity(80%)":""},key:m.id},m,{counter:(D=(C=(L=(M=u.value)==null?void 0:M.find(w=>(w==null?void 0:w.id)==(m==null?void 0:m.id)))==null?void 0:L.stats)==null?void 0:C[0])==null?void 0:D.views,stars:(I=(k=(z=(Z=u.value)==null?void 0:Z.find(w=>(w==null?void 0:w.id)==(m==null?void 0:m.id)))==null?void 0:z.stats)==null?void 0:k[0])==null?void 0:I.stars}),null,16,["pos","style","counter","stars"]))],12,Ls)}),128))]),_:1})),c.value.length==0||o.value?(b(),y("div",$s,[o.value?_("",!0):(b(),y("div",Os,"We don't know such a web-app yet. ")),N(v,{class:"max-w-140 mx-auto mt-6",onSubmitted:d[4]||(d[4]=m=>o.value=!1)})])):_("",!0)])],64)}}},Ks=JSON.parse('{"title":"Web synths","description":"Web synthesizers to play with MIDI controllers","frontmatter":{"title":"Web synths","description":"Web synthesizers to play with MIDI controllers","date":"2023-06-22T00:00:00.000Z","layout":"home"},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":1713874304000}'),Rs={name:"index.md"},Ds=p("h1",{class:"text-center text-2xl sm-text-3xl font-bold mt-8",style:{padding:"0.1rem 1rem"}},"Online synthesizers and web piano apps",-1),Bs=p("h2",{class:"text-xl sm-text-2xl text-center my-2",style:{padding:"0 1rem"}},"Curated collection of free music creation resources",-1),Ns={class:"px-4 text-lg text-center mb-8 max-w-150 mx-auto"},zs=p("a",{class:"font-bold",href:"https://chromatone.center",target:"_blank",rel:"noopener"}," Chromatone",-1),Ws=p("a",{class:"font-bold",href:"https://playtronica.com",target:"_blank",rel:"noopener"}," Playtronica",-1),Fs=p("h3",{class:"font-bold text-xl"},"Welcome to the community of web-based musicians!",-1),js=p("p",null,[p("a",{target:"_blank",href:"https://chromatone.center/"},[p("img",{src:He,class:"max-w-16 mx-auto"})])],-1);function Zs(t,e,s,n,a,i){const o=Ps,r=pt,l=it;return b(),y("div",null,[Ds,Bs,N(o),p("div",Ns,[zs,U(" is an open source visual music language for education, research and performance. We develop a new universal way to communicate music. "),Ws,U(" is a digital playground that explores the possibilities of the material world through technology, creating gadgets that make the world musical. Together we share our passion for online music instruments. "),N(r),Fs,js,N(l)])])}const Hs=ve(Rs,[["render",Zs]]);export{Ks as __pageData,Hs as default}; diff --git a/assets/index.md.C7QfLb-F.js b/assets/index.md.C7QfLb-F.js deleted file mode 100644 index 47f1e6c1..00000000 --- a/assets/index.md.C7QfLb-F.js +++ /dev/null @@ -1 +0,0 @@ -import{D as Oe,b,d as y,g as p,f as T,q as k,r as P,E as fe,F as Le,G as Pe,t as L,H as Ne,I as F,e as X,j as ee,h as G,_ as ve,s as Be,x as Re,J as te,y as z,z as U,A as se,K as ze,i as De,L as we,C as je,M as We,N as Fe,a as Ze,c as J,o as Ye,w as Ve,T as qe,n as Ge,O as Ue,P as Ke,Q as He}from"./chunks/framework.DA3bj7zI.js";import{u as Je,f as q,_ as Qe,a as Xe}from"./chunks/useClicks.DKflLG6D.js";import{u as _e}from"./chunks/theme.TKyytG40.js";import"./chunks/index.OsI8M1nP.js";const et={class:"text-center line-height-loose text-md"},tt={class:"mx-auto max-w-75ch intro md-text-lg"},st=p("div",{class:"i-mdi-share"},null,-1),nt=p("span",null,"Share to save for later",-1),it=[st,nt],at={__name:"AboutShare",setup(t){const{share:e,isSupported:s}=Oe();function n(){e({title:"Web synths collection",text:"Look at this online synthesizer collection. No need to install anything - just your browser and any MIDI controller will do.",url:location.href})}return(i,a)=>(b(),y("div",et,[p("div",tt,[T(s)?(b(),y("button",{key:0,class:"mx-auto flex items-center gap-2 text-white py-2 px-4 mt-6 shadow-lg rounded-lg cursor-pointer bg-green-600 -hover-translate-y-2px transition",onClick:a[0]||(a[0]=o=>n()),"data-umami-event":"Shared via button"},it)):k("",!0)])]))}},ne=JSON.parse(`[{"url":"https://dotpiano.com/","date_created":"2023-10-27T12:45:53.887Z","title":"Dotpiano","slug":"dotpiano","author":"Alex Chen and Yotam Mann","author_link":null,"description":null,"tags":["polyphonic","midi","keyboard","Multiplayer"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"6dac5187-213f-4eb8-96ed-63c2e689b206","id":1,"sort":1,"clicks":6424,"public":true,"is_new":false,"stats":[1]},{"url":"https://waveform.playtronica.com/","date_created":"2023-10-27T12:45:54.644Z","title":"Waveform","slug":"waveform","author":"Qvantor","author_link":"https://github.com/qvantor/","description":null,"tags":["playtronica","polyphonic","midi"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"86cb9385-9deb-4f10-95cb-765980156e65","id":39,"sort":2,"clicks":6794,"public":true,"is_new":false,"stats":[2]},{"url":"https://juno-106.js.org/","date_created":"2023-10-27T12:45:54.085Z","title":"Juno-106","slug":"juno-106","author":"Steve Goldberg ","author_link":"https://github.com/stevengoldberg","description":null,"tags":["fm","midi"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"b54cfce7-af2f-4e03-a5b3-81fc853d2cc8","id":14,"sort":3,"clicks":5014,"public":true,"is_new":false,"stats":[3]},{"url":"https://chromatone.center/practice/synth/elementary/","date_created":"2023-10-27T12:45:54.453Z","title":"Elementary synth","slug":"elementary","author":"Chromatone","author_link":"https://chromatone.center","description":null,"tags":["chromatone","polyphonic","keyboard"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"21070a51-6089-48bd-8840-ba37b5f2963d","id":29,"sort":4,"clicks":3186,"public":true,"is_new":false,"stats":[4]},{"url":"https://mmontag.github.io/dx7-synth-js/","date_created":"2023-10-27T12:45:54.477Z","title":"DX7 Synth","slug":"dx7","author":"Matt Montag ","author_link":"https://github.com/mmontag","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"f3b285ee-6b82-453b-9ff6-aeda18ec675b","id":30,"sort":5,"clicks":2716,"public":true,"is_new":false,"stats":[5]},{"url":"https://touchme.chromatone.center/","date_created":"2023-10-27T12:45:53.941Z","title":"TouchME","slug":"touchme","author":"Chromatone","author_link":"https://chromatone.center","description":null,"tags":["chromatone","playtronica"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"68062279-8e08-4953-ae8f-7a77c584948e","id":3,"sort":6,"clicks":3416,"public":true,"is_new":false,"stats":[6]},{"url":"https://muted.io/","date_created":"2023-10-27T12:45:54.742Z","title":"Muted.io","slug":"muted-io","author":"Sébastien Noël","author_link":"https://twitter.com/muted_io","description":null,"tags":["educational","midi"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"5c08ac7d-4414-47c0-b7d1-a9867ba3949f","id":43,"sort":7,"clicks":175,"public":false,"is_new":false,"stats":[10]},{"url":"https://chromatone.center/practice/synth/soundfont/","date_created":"2023-12-18T10:20:56.985Z","title":"Soundfont Sampler Synth","slug":"soundfont","author":"Chromatone","author_link":"https://github.com/chromatone","description":"Free open source soundfont sampler online synthesizer. Very robust and hassle free way to play some straightforward sampled instruments like horns, xylophones and just piano sounds. Instantly playable instrument with about 90 presets out of the box. ","tags":["Poly","Keyboard","Sampler","MIDI"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"26704e9d-5964-4a0f-940c-370c14777e95","id":51,"sort":8,"clicks":0,"public":true,"is_new":true,"stats":[43]},{"url":"https://midi.city/","date_created":"2023-12-28T05:40:45.140Z","title":"MIDI.city","slug":"midi-city","author":"Astral Digital","author_link":"https://astral.digital/","description":"midi.city is a free online synthesizer, built by Jack.\\n\\nmidi.city has over 128 different instruments including: Pianos, Saxophones, Drums, Trumpets, Synth Pads, Guitar, Violins and all other instruments defined in the General Midi specification.","tags":null,"archive_link":null,"archive":false,"content":"midi.city has been created with the help of hundreds of different open-source projects and with contributions from many others.\\n\\n- Tone.js by Yotam Mann: the Web Audio API-based sound engine that implements a majority of nodes used in the audio graph. It powers many of the advanced features used such as Granular Synthesis, Reverb, and timing.\\n- Groove Monkee: graciously provided the MIDI files that are used for the percussion loops.\\n- Keenan Brand: created the midi.city logo and various icons used on the site.\\n- Noun Project: various icons are used via a Pro license.\\n- Google Material Design: various icons.\\n- Compifont by Marcin Dziembor: the soundfont powering the samples and many the audio graph definitions, is originally . Several modifications have been made to adapt to midi.city and the Web Audio API. ","iframe":true,"cover":"8cb479ba-e4e0-42f2-986c-597b68b8e639","id":52,"sort":9,"clicks":10,"public":false,"is_new":false,"stats":[44]},{"url":"https://apps.musedlab.org/aqwertyon/theory/","date_created":"2023-10-27T12:45:54.711Z","title":"aQWERTYon","slug":"aqwertyon","author":"Mused lab","author_link":"https://musedlab.org/","description":null,"tags":["polyphonic","samples"],"archive_link":null,"archive":false,"content":"The **aQWERTYon** (QWERTY accordion) is designed to simplify the process for improvising, learning, and making music with your computer keyboard. Play along with your favorite YouTube videos, learn music theory through our Music Theory for Bedroom Producers course in collaboration with Soundfly, or take advantage of Web MIDI and us it to play and record into your favorite digital audio workstation, such as Soundtrap.com, GarageBand, Logic, or Ableton, or as input into music notation programs like Noteflight.\\n\\nhttps://youtu.be/hqFr4lF6u_Y","iframe":true,"cover":"e7c87de8-c290-4da9-b0e0-eed73871b27a","id":42,"sort":10,"clicks":348,"public":false,"is_new":false,"stats":[8]},{"url":"https://musiclab.chromeexperiments.com/","date_created":"2023-11-26T08:23:47.351Z","title":"Chrome Music Lab","slug":"chrome-lab","author":"Google","author_link":"https://github.com/googlecreativelab/chrome-music-lab","description":"Chrome Music Lab is a website that makes learning music more accessible through fun, hands-on experiments.","tags":["Educational","Keyboard","MIDI","Poly","Piano","Analysis","Mic","Visuals"],"archive_link":null,"archive":false,"content":"## What can it be used for?\\n\\nMany teachers have been using Chrome Music Lab as a tool in their classrooms to explore music and its connections to science, math, art, and more. They’ve been combining it with dance and live instruments. Here’s a collection of some uses we’ve found on Twitter.\\n\\n## Can I use it to make my own songs?\\n\\nYes. Check out the Song Maker experiment, which lets you make and share your own songs.\\n\\n## Do I need to make an account?\\n\\nNope. Just open any experiment and start playing.\\n\\n## How were these built?\\n\\nAll our experiments are all built with freely accessible web technology such as Web Audio API, WebMIDI, Tone.js, and more. These tools make it easier for coders to build new interactive music experiences. You can get the open-source code to lots of these experiments here on [Github](https://github.com/googlecreativelab/chrome-music-lab).\\n\\n## What devices do these work on?\\n\\nYou can play with these experiments across devices – phones, tablets, laptops – just by opening the site on a web browser such as Chrome.","iframe":true,"cover":"297b059e-a6fa-4faa-91b2-c2e1e68cf98f","id":50,"sort":11,"clicks":304,"public":false,"is_new":false,"stats":[9]},{"url":"https://websynths.com/","date_created":"2023-10-27T12:45:54.019Z","title":"Websynths Microtonal","slug":"microtonal","author":"WebSynths","author_link":"https://www.websynths.com/microtonal/","description":"The deepest internet synthesizer","tags":null,"archive_link":null,"archive":false,"content":"\\nWebSynths is a free resource for any musician with internet access! But, it is made possible by support from our patrons. Please consider helping if you can: patreon.com/WebSynths\\n\\n- You can use your QWERTY keyboard, mouse, mobile touch or MIDI keyboard to play the sounds.\\n- You can change the tuning of the keys, or select a scale, by clicking the tuning button.\\n- MIDI is a way to use an external physical instrument to play it. If you have a MIDI keyboard that you wish to use, hit the MIDI button to set it up.\\n- If a note gets stuck, hit the panic button, it will stop all voices from playing.\\n- You can use the arrows on your computer keyboard to scroll through the presets.\\n\\nA simple explanation of Subtractive Synthesis:\\n\\n- Subtractive Synthesis works by taking one or more oscillators, setting the pitch of their oscillation (usually to the note of the key being pressed,) setting the shape of their oscillation to the desired timbre (Sine, Saw, Square or more complex shapes,) mixing them together and running them through a filter to change their EQ (usually filtering out the highest or lowest frequencies... this is why it is called \\"subtractive\\"), then running them through an envelope so the note can be heard on when a key is pressed down and is silenced when the key is released. In the case of WebSynths Microtonal, the sound is then sent through effects like delay, chorus and reverb and out to your speakers.\\n- Oscillators are the voices. This synth has 3 of them in the left column. You can change the character of each voice by changing the parameters of them. The 'Shape' menu allows you to choose from different styles of voice for each oscillator. You can turn each voice on or off and mix them together.\\n- The filter section applies equalization to your oscillators via the cutoff and emphasis controls. You can change the equalization filter type to 'low pass / high pass' and many more. You can use the LFOs and/or Envelopes to change how the filtration changes over time. An LFO is just a slow oscillator that is uses to automatically move a parameter over time.\\n- The amplitude envelope changes how your sound is played, volume-wise, when you hit a note. For example, having a long release time will mean that once you let go of the note you are playing it will tail off until fading out. Having a slow attack will mean that your note will fade in instead of playing at full volume straight away.\\n- The effects section allows you to add various effects to your overall sound. You can change the effects, mix them together and toggle them on or off too.\\n\\n","iframe":false,"cover":"ffc54664-7ba4-4855-a56a-6657a5542a04","id":10,"sort":12,"clicks":172,"public":false,"is_new":false,"stats":[11]},{"url":"https://stuartmemo.com/synth/","date_created":"2023-10-27T12:45:54.586Z","title":"Sympathetic Synthesizer System Mk 1","slug":"sympathetic","author":"Stuart Memo ","author_link":"https://github.com/stuartmemo","description":null,"tags":["keyboard","midi","additive"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"123aeb6d-c7b0-43dd-a852-98660bdf03f0","id":37,"sort":13,"clicks":302,"public":false,"is_new":false,"stats":[12]},{"url":"https://learningsynths.ableton.com/","date_created":"2023-10-27T12:45:54.360Z","title":"Learning synths","slug":"ableton","author":"Ableton","author_link":"https://github.com/Ableton","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":false,"cover":"0bf8312d-c449-4f5c-80ad-36594ef98db6","id":26,"sort":14,"clicks":184,"public":false,"is_new":false,"stats":[13]},{"url":"https://www.femurdesign.com/theremin/","date_created":"2023-10-27T12:45:54.206Z","title":"Theremin","slug":"theremin","author":"Femur","author_link":"https://femurdesign.com/","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"6b22ef48-6830-4cf2-810d-809408033450","id":19,"sort":15,"clicks":320,"public":false,"is_new":false,"stats":[14]},{"url":"https://multiplayer-orchestra.com","date_created":"2024-04-23T08:07:22.796Z","title":"Multiplayer Orchestra","slug":"multiplayer-orchestra","author":"Mutli_Orchestra","author_link":"https://twitter.com/Mutli_Orchestra","description":"Play in real time with people from all around the world with more than 400 instruments.","tags":["Poly","MIDI","Keyboard","Collaborative","Online"],"archive_link":null,"archive":false,"content":"Multiplayer Orchestra ([https://www.multiplayer-orchestra.com/](https://www.multiplayer-orchestra.com/)) is a web application that allows you to virtually collaborate with musicians from around the world in real-time. Here are some key features:\\n\\n* **Large instrument selection:** Choose from over 400 instruments, including pianos, guitars, drums, and orchestral instruments.\\n* **Real-time collaboration:** Play music simultaneously with other users, creating a virtual orchestra.\\n* **Public and private rooms:** Join public rooms to jam with others or create private rooms with a password for specific collaborations.\\n* **Contests:** Participate in contests to win prizes like Amazon gift cards by recording solo performances.\\n\\n**It's important to note that the website seems to be in beta based on the version information listed (Beta 0.30).** ","iframe":true,"cover":"d743d9ea-d73f-4593-a70e-58a3e4deaa1b","id":55,"sort":16,"clicks":5,"public":false,"is_new":true,"stats":[47]},{"url":"https://touchpianist.com/","date_created":"2023-10-27T12:45:54.691Z","title":"Touch Pianist","slug":"touch-pianist","author":"EarSlap","author_link":null,"description":null,"tags":["entertainment","piano"],"archive_link":null,"archive":false,"content":"Touch Pianist is a musical toy / instrument that allows the user to perform hard-to-play classical piano music favorites (from composers like Beethoven, Mozart, Bach, Satie, Debussy to name a few) just by tapping the rhythm of the piece's particular sound events on a computer keyboard or a touch screen.\\n\\nIt also provides live visualisation of the pieces that are being performed. There is no score keeping, the user is free to perform the music in any way they wish. The premise is that it is really fun to perform a piece you know well, exactly like you feel it with so little effort.\\n\\nTouch Pianist has CoreMIDI support so you can use your favorite piano / sound plug-in in your computer as a sound source if you wish.","iframe":false,"cover":"415deeeb-a843-4363-b6c9-78918aa688af","id":41,"sort":17,"clicks":177,"public":false,"is_new":false,"stats":[15]},{"url":"https://www.beepbox.co","date_created":"2024-03-21T02:43:35.749Z","title":"BeepBox","slug":"beepbox","author":"John Nesky","author_link":"https://johnnesky.com/","description":"BeepBox is an online tool for sketching and sharing instrumental music.\\n\\nAll song data is contained in the URL at the top of your browser. When you make changes to the song, the URL is updated to reflect your changes. When you are satisfied with your song, just copy and paste the URL to save and share your song!\\n\\nBeepBox is a passion project, and will always be free to use. ","tags":["Poly","Sequencer","FM"],"archive_link":null,"archive":false,"content":" BeepBox is developed by John Nesky.\\n\\nBeepBox does not claim ownership over songs created with it, so original songs belong to their authors.\\n\\nNeither John Nesky nor BeepBox assume responsibility for any copyrighted material played on BeepBox. No songs are ever received, recorded, or distributed by BeepBox's servers. All song data is contained in the URL after the hash (#) mark, and your song data will not leave your device unless you copy and share the URL. BeepBox does not collect, track, or share any user data. ","iframe":true,"cover":"dea37f5f-504c-443f-ba9a-3dff4d583506","id":54,"sort":18,"clicks":10,"public":false,"is_new":true,"stats":[46]},{"url":"https://roland50.studio/","date_created":"2023-11-25T05:42:57.573Z","title":"Roland 50 Studio","slug":"roland50","author":"Yuri Suzuki","author_link":"https://www.yurisuzuki.com/","description":"It's a professional sounding online musical interface, which records your masterpieces and allows you to share your creations through social media, messaging and also as a download.\\nOn top of the TR-808 drum machine and TB-303 bass synthesizer featured at the original 2020 release, now the sound of SH-101 synthesizer is added, and more sounds to come later in the year 2022, commemorating Roland's 50th anniversary.","tags":["drum machine","SP404","TR808","TB303","Step sequencer"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"3b5aec13-7e50-475c-9165-bc963872515d","id":45,"sort":19,"clicks":17,"public":false,"is_new":false,"stats":[16]},{"url":"https://www.disco-computer.com/synthesizer/synth.html","date_created":"2023-10-27T12:45:54.270Z","title":"Disco-computer","slug":"disco-computer","author":"Patrick Sawyer","author_link":null,"description":null,"tags":["polyphonic","fm","keyboard"],"archive_link":"/archive/synthescheisse/index.html","archive":true,"content":null,"iframe":true,"cover":"0d0183e6-8964-4246-a18c-a6ca0a0f2794","id":22,"sort":20,"clicks":269,"public":false,"is_new":false,"stats":[17]},{"url":"https://seeing-sound.netlify.app/","date_created":"2023-10-27T12:45:54.492Z","title":"Video Sampler","slug":"video-sampler","author":"Playtronica","author_link":"https://shop.playtronica.com","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"b39cc546-2571-4402-84cd-f8497e27d0c9","id":31,"sort":21,"clicks":256,"public":false,"is_new":false,"stats":[18]},{"url":"https://www.stef.be/bassoontracker/","date_created":"2024-03-14T07:04:03.311Z","title":"Bassoon Tracker","slug":"bassoon","author":"Steffest","author_link":" https://www.stef.be","description":"Browser-based old-school Amiga Music Tracker in plain old JavaScript.","tags":["FM","tracker","8-bit","low-fi"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"70c9db80-8ef8-4aa5-9dcd-6b5c3c0da5b2","id":53,"sort":23,"clicks":10,"public":false,"is_new":true,"stats":[45]},{"url":"https://www.igorski.nl/experiment/websid","date_created":"2023-10-27T12:45:54.438Z","title":"WebSID Commodore 64","slug":"web-sid","author":"Igor Zinken","author_link":"https://www.igorski.nl/","description":null,"tags":["polyphonic","keyboard","midi","additive"],"archive_link":null,"archive":false,"content":null,"iframe":false,"cover":"932e0ae0-0048-4c6d-92bb-a4a17a8a4dd4","id":28,"sort":24,"clicks":155,"public":false,"is_new":false,"stats":[19]},{"url":"https://nicroto.github.io/viktor/","date_created":"2023-10-27T12:45:54.388Z","title":"Viktor NV-1","slug":"nv-1","author":"Nikolay Tsenkov ","author_link":"https://github.com/nicroto","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"ff3082ad-3c38-4880-ab23-35711c97ea71","id":27,"sort":25,"clicks":495,"public":false,"is_new":false,"stats":[20]},{"url":"https://virtualpiano.eu/","date_created":"2023-10-27T12:45:54.542Z","title":"VirtualPiano.eu","slug":"virtual-piano","author":"WebSyrup","author_link":"https://websyrup.net/","description":null,"tags":["midi","keyboard"],"archive_link":null,"archive":false,"content":"VirtualPiano.eu is the online synthesizer that allows you to play 128 musical instruments for free using your PC keyboard, the mouse or by connecting an external MIDI keyboard.\\n\\nYou can adjust Volume, Reverb, Loop and quality. Use the sustain and adjust the octaves, you can also select and set different channels including the one for the drums.\\n\\nCreate your own melodies, have fun playing or use VirtualPiano to learn how to play the Piano online on your own. ","iframe":true,"cover":"9a59eea5-c77f-483c-9443-1cd0727e6dcc","id":35,"sort":26,"clicks":282,"public":false,"is_new":false,"stats":[21]},{"url":"https://onlinesequencer.net/","date_created":"2023-10-27T12:45:54.565Z","title":"Online sequencer","slug":"online-sequencer","author":"Jacob Morgan and George Burdell","author_link":"https://github.com/buildist","description":null,"tags":["sequencer"],"archive_link":null,"archive":false,"content":"**Online Sequencer** is a web-based music sequencer that allows users to create music saved online, or on their computer. The piano roll is essential to the sequencer, which is on the left of the screen, with 72 notes from C2-B7 (labelled differently from a piano, C2 on the sequencer corresponds to C1 on a piano). In addition to several parameters which can be modified to change the sound of the music, additional functionality can be accessed via the console.\\n\\nUpon opening the site, users can begin composing and \\"drawing\\" notes on the grid, with the default instrument being Electric Piano. By default, a sequence's time signature is set to 4/4, and the grid spacing is set to 1/4 (16 notes per measure). The note lengths can be adjusted by dragging the dark tab on the right of each note, and precision can be afforded by changing the 'Grid' option to other note divisions. \\n\\n## History\\n\\nOnline Sequencer was created on January 2, 2013 by Jacob Morgan during a break at Georgia Tech.\\n\\nBeginning in the fall of 2013, accounts were available but were separate from the music portion of the site. They were only used in the forum and the website chat.\\n\\nIn 2015, accounts were linked to the main website and allowed songs to be saved under someone's username.\\n\\nThe World Update in 2018 added several new instruments and changed the landscape of sound design on the site. The \\"World Update Contest\\" was held for the update.\\n\\nStarting in late 2020, OS began to receive a variety of updates which vastly improved the functionality of the site. These updates introduced features like custom grid sizes, automation with markers, extra reverb options, detune, and distortion. In 2021, the \\"Space Race\\" contest was held, as to see who could work best with the changes.\\n\\nIn late 2022, newer, higher-quality instruments were added. Some of the instruments, such as Electric Piano, Grand Piano, Violin, and Cello got an updated sustained version, while the original versions still exist under the \\"classic\\" designation.\\n\\nCurrently, the 10-Year Anniversary Contest is being held.\\n\\n## Features\\n\\nWithin the editor, numerous user interface features allow for various changes which will impact the individual sequence on that page.\\n\\n### Basic features\\n\\nUI features include:\\n\\n- Tempo (10-999 BPM)\\n- Measure count or Time count (MM: SS.ssss)\\n- Time signature (2/4, 3/4, 4/4, 5/4)\\n- Grid size (This correlates to note divisions; 1/16, 1/12, 1/8, 1/6, 1/4, 1/3, 1/2)\\n- Auto Scroll (Fast, Smooth, Off; how the sequencer displays measures off-screen as a sequence plays)\\n- Add an Audio Track (This won't be saved to the sequence but will play alongside it for ease of transcription)\\n- Title input\\n- Draw, select, and erase\\n- Instrument dropdown, instrument options, and select instrument (selects all notes of the current instrument)\\n- Select all, Cut, Copy, and Paste\\n- Zoom options\\n- Export options\\n- Help\\n- Fullscreen\\n- Tooltips\\n\\n### Advanced features\\n\\nUsers can access more advanced features for use in their sequences by clicking the advanced tab on the instrument they wish to change. This menu contains options to change volume, panning, detune (-1200 to +1200), reverb, distortion, and an equalizer. This array lets users configure specific instruments to create specific sounds, and textures, or to accompany other instruments as a layer or development of the original sound.\\n\\nOS also allows for commands to be entered in the browser console to manipulate different options in specific ways, such as setting custom to detune values (0-infinity), custom grid sizes, note divisions, and sequence ID amongst other things. These options bring OS closer to that of classic Digital Audio Workstations (DAWs) but are still limited in terms of accessibility and availability.\\n\\n### Browser and device support\\n\\nOnline Sequencer supports Chrome and other Chromium-based browsers, such as Microsoft Edge, Opera, and Brave. Firefox is also supported, but often with limited functionality. Safari and Internet Explorer are not supported, due to engine issues.\\n\\nOther mobile browsers support sequence playback, but not editing. However, iOS users have the same problem with WebKit on macOS. However, unlike in macOS, all browsers (even Chromium-based browsers) use WebKit as the engine for iOS due to Apple prohibiting other engines for security reasons; iOS does not support Online Sequencer, other than chat and forums.\\n\\nThe website's user interface is formatted for proper use on desktops, but some pages such as the chat page, playlists, and forums should be formatted well on mobile devices. ","iframe":true,"cover":"ec08ba72-8157-4415-8b34-aea1fe686e09","id":36,"sort":27,"clicks":320,"public":false,"is_new":false,"stats":[22]},{"url":"https://sb.bitsnbites.eu/","date_created":"2023-10-27T12:45:54.625Z","title":"Sound Box","slug":"sound-box","author":"Bits'n'bites","author_link":"https://gitlab.com/mbitsnbites","description":null,"tags":["tracker"],"archive_link":null,"archive":false,"content":"https://github.com/mbitsnbites/soundbox","iframe":true,"cover":"f2f825f3-a084-408b-86d1-2b64cf822c3c","id":38,"sort":28,"clicks":209,"public":false,"is_new":false,"stats":[23]},{"url":"https://femurdesign.com/omni/","date_created":"2023-10-27T12:45:54.224Z","title":"Omni","slug":"omni","author":"Luke Phillips","author_link":"https://femurdesign.com/","description":null,"tags":["polyphonic","keyboard"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"fbb1364f-53cf-4f71-8f29-d7f572308e78","id":20,"sort":29,"clicks":210,"public":false,"is_new":false,"stats":[24]},{"url":"https://www.g200kg.com/docs/webmodular/","date_created":"2023-10-27T12:45:54.252Z","title":"Web Modular","slug":"web-modular","author":"g200kg","author_link":"https://www.g200kg.com/","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"48e0280c-f7ff-4308-bde3-973b7febe89c","id":21,"sort":30,"clicks":202,"public":false,"is_new":false,"stats":[25]},{"url":"https://errozero.co.uk/acid-machine/","date_created":"2023-10-27T12:45:54.333Z","title":"Acid Machine 2","slug":"acid-machine-2","author":"Errozero","author_link":"https://www.errozero.co.uk/","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"031eab3e-2f21-442a-8fdc-9769907824e0","id":25,"sort":31,"clicks":166,"public":false,"is_new":false,"stats":[26]},{"url":"https://apps.musedlab.org/groovepizza/","date_created":"2023-11-21T04:30:41.565Z","title":"Groove Pizza","slug":"groove-pizza","author":"NYU Music Experience Design Lab","author_link":"https://musedlab.org/groovepizza/","description":"Groove Pizza is a circular rhythm app for creative music making and learning! It’s also a playful tool for creating grooves using math concepts like shapes, angles and patterns","tags":["drums","sequencer","Educational"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"50d7bc15-edd5-4261-bc2a-1b173b5a1547","id":44,"sort":32,"clicks":91,"public":false,"is_new":false,"stats":[27]},{"url":"https://ojack.github.io/PIXELSYNTH/","date_created":"2023-10-27T12:45:54.286Z","title":"PixelSynth","slug":"pixel-synth","author":"Olivia Jack","author_link":"https://ojack.xyz/","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"77369c22-944c-4f6a-83b5-85e16fe43abc","id":24,"sort":33,"clicks":217,"public":false,"is_new":false,"stats":[28]},{"url":"https://www.multiplayerpiano.org/","date_created":"2023-11-26T08:06:18.875Z","title":"Multiplayer Piano","slug":"multiplayer-piano","author":"Brandon Lockaby","author_link":"https://github.com/Multiplayer-Piano","description":"Online piano, that can be played by any site visitor together in a virtual room or alone.","tags":["Piano","MIDI","Poly","Multiplayer"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"9c10771b-e38f-469f-b58b-c9e6bb91a072","id":49,"sort":34,"clicks":4,"public":false,"is_new":false,"stats":[29]},{"url":"https://webaudiodemos.appspot.com/midi-synth/index.html","date_created":"2023-10-27T12:45:53.963Z","title":"MIDI–driven Web Audio","slug":"midi-driven-web-audio","author":"Chris Wilson","author_link":"https://github.com/cwilso","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":false,"cover":"0005a0c9-c7e7-4922-a1e5-49d4326d2f77","id":6,"sort":35,"clicks":127,"public":false,"is_new":false,"stats":[30]},{"url":"https://samplestitch.com.s3-website-us-east-1.amazonaws.com/","date_created":"2023-10-27T12:45:54.185Z","title":"Samplestich","slug":"sample-stich","author":"Matt Daniels","author_link":"https://mdaniels.com","description":null,"tags":["samples","keyboard"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"89859f9f-0d45-44dc-93b6-98dfa2e7d799","id":18,"sort":36,"clicks":164,"public":false,"is_new":false,"stats":[31]},{"url":"https://www.audiotool.com/product/device/heisenberg/","date_created":"2023-10-27T12:45:53.983Z","title":"Meet the Heisenberg","slug":"meet-the-heisenberg","author":"AudioTool","author_link":"https://www.audiotool.com","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"a2397ce6-7712-40e5-b4e0-df95c7992662","id":8,"sort":37,"clicks":255,"public":false,"is_new":false,"stats":[32]},{"url":"https://www.gsn-lib.org/apps/cardboardsynth/index.html","date_created":"2023-10-27T12:45:54.002Z","title":"Cardboard Synth","slug":"cardboard-synth","author":" Thorsten Thormählen","author_link":"https://www.uni-marburg.de/en/fb12/research-groups/grafikmultimedia/thormae","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"29fe1fcc-ca85-41b3-ab1e-7f10770f2c1f","id":9,"sort":38,"clicks":184,"public":false,"is_new":false,"stats":[33]},{"url":"https://tanguysynth.com/","date_created":"2023-10-27T12:45:54.036Z","title":"Tanguy synth","slug":"tanguy-synth","author":"Luke Teaford","author_link":"https://github.com/luketeaford","description":null,"tags":["monophonic","additive","keyboard"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"5471a71e-7c5b-4ea6-aee0-1b394873c381","id":11,"sort":39,"clicks":117,"public":false,"is_new":false,"stats":[34]},{"url":"https://www.blokdust.com/","date_created":"2023-11-25T06:31:23.261Z","title":"BlokDust","slug":"blokdust","author":"Luke Twyman, Luke Phillips, Edward Silverton","author_link":"https://wvnl.xyz/","description":"BlokDust is a creative visual drag and drop music exploration tool. Developed in Brighton UK and released in 2016, BlokDust uses the Web Audio API and makes use of Tone.js as an audio framework.","tags":["creative","sequencer"],"archive_link":null,"archive":false,"content":"Luke Twyman - project concept, design & Ul.\\nwhitevinyldesign.com\\n@whitevinylUK\\nLuke Phillips - audio development & musical interaction.\\nfemurdesign.com\\n@lukephills\\nEdward Silverton - client & server architecture & core development.\\nedsilv.com\\n@edsilv","iframe":true,"cover":"7e5bcda8-f37a-46c0-91d9-0a6ea501a101","id":47,"sort":40,"clicks":19,"public":false,"is_new":false,"stats":[35]},{"url":"https://mod-synth.io/","date_created":"2023-10-27T12:45:54.052Z","title":"MOD synth","slug":"mod-synth","author":"André Venâncio ","author_link":"https://github.com/andrevenancio","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"31564bf3-fca9-41a4-b390-d78ccd848107","id":12,"sort":41,"clicks":146,"public":false,"is_new":false,"stats":[36]},{"url":"https://perso.numericable.fr/olivier.friker/synth/O3-synth%20V1.3.html","date_created":"2023-10-27T12:45:54.069Z","title":"OLIF SY1K","slug":"olif-sy-1-k","author":"Olivier Friker","author_link":null,"description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"3b9a5e11-3de3-46fe-9cdc-e1668b152f31","id":13,"sort":42,"clicks":145,"public":false,"is_new":false,"stats":[37]},{"url":"http://www.noisesculptor.com/","date_created":"2023-10-27T12:45:54.104Z","title":"Note Sculptor","slug":"note-sculptor","author":"Ruin Technology","author_link":null,"description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":false,"cover":"a01968d1-3f88-4522-9752-1c33d10d90d9","id":15,"sort":43,"clicks":129,"public":false,"is_new":false,"stats":[38]},{"url":"https://aikelab.net/websynthv2/","date_created":"2023-10-27T12:45:54.141Z","title":"WebAudioSynth V2","slug":"web-audio-synth-v2","author":"like","author_link":"https://github.com/aike/","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"ac668fba-7226-43dc-a91f-bd21a31446e5","id":16,"sort":44,"clicks":305,"public":false,"is_new":false,"stats":[39]},{"url":"https://isleoftune.com/","date_created":"2023-11-25T06:22:15.184Z","title":"Isle of Tune","slug":"isleoftune","author":"Jim Hall","author_link":"https://twitter.com/isleoftune","description":"Draw an island, where everything plays music.","tags":["game","sequencer"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"6830c24f-c7bf-430f-abc1-3d7fbf5f2557","id":46,"sort":45,"clicks":15,"public":false,"is_new":false,"stats":[40]},{"url":"https://www.soundtrap.com/","date_created":"2023-10-27T12:45:54.155Z","title":"Sound Trap","slug":"sound-trap","author":"Soundtrap","author_link":"https://www.soundtrap.com/about","description":null,"tags":["daw"],"archive_link":null,"archive":false,"content":null,"iframe":false,"cover":"63ef832a-f7da-4536-851f-4964005a89f1","id":17,"sort":46,"clicks":124,"public":false,"is_new":false,"stats":[41]},{"url":"http://typedrummer.com/","date_created":"2023-11-25T06:34:10.166Z","title":"Type Drummer","slug":"typedrummer","author":"Kyle Stetz","author_link":"http://kylestetz.com/","description":"Type your drum loops","tags":["sequencer","drums","Keyboard"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"19454c82-7338-4144-9f1c-010c80a70a6e","id":48,"sort":47,"clicks":21,"public":false,"is_new":false,"stats":[42]}]`),ot={class:"text-center line-height-loose text-md"},rt={class:"mx-auto max-w-75ch intro md-text-lg"},lt={class:"p-2 flex flex-col mt-8"},ct={class:"text-4xl font-bold"},ut=p("div",{class:"text-lg"},"web synths",-1),ht={class:"p-2 flex flex-col mt-8"},dt={class:"text-4xl font-bold"},ft=p("div",{class:"text-lg"},"web musicians",-1),pt={__name:"AboutCount",setup(t){const e=P(),s=P(0),n=P(0),i=fe(s),a=fe(n),o=Le(e);return Pe(o,async r=>{if(r){s.value=ne.length;const c=await(await fetch("https://dbs.chromatone.center/flows/trigger/0c0e8d82-8e12-44a6-867a-57ddeec9d774",{type:"GET",mode:"cors",headers:{"Content-Type":"application/json"}})).json();n.value=c.count}}),(r,l)=>(b(),y("div",ot,[p("div",rt,[p("div",{class:"flex justify-center",ref_key:"counters",ref:e},[p("div",lt,[p("div",ct,L(T(i).toFixed()),1),ut]),p("div",ht,[p("div",dt,L(T(a).toFixed()||5e3)+"+",1),ft])],512)])]))}},mt={class:"flex flex-col text-center gap-4 bg-light-700 dark-bg-dark-200 dark-bg-opacity-20 p-4 rounded-lg shadow-lg mb-8"},gt=p("div",{class:"text-xl font-bold my-2"},"Suggest a new web-synth to the collection",-1),bt=["disabled"],yt={__name:"FormSynth",emits:["submitted"],setup(t,{emit:e}){const s=e,n=Ne({url:"",text:""}),i=/[(http(s) ?): \/\/(www\.)?a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)/;function a(l){return i.test(l)}const o=P();async function r(){var l,c,u;try{const h=await fetch("https://dbs.chromatone.center/flows/trigger/dc8ca96f-76e6-4cac-b26c-10751746eb89",{method:"POST",mode:"cors",cache:"no-cache",credentials:"same-origin",headers:{"Content-Type":"application/json"},redirect:"follow",referrerPolicy:"no-referrer",body:JSON.stringify(n)});o.value=await(h==null?void 0:h.json()),n.url="",n.text="",setTimeout(()=>{s("submitted")},2e3)}catch(h){console.error(h,(c=(l=h==null?void 0:h.errors)==null?void 0:l[0])==null?void 0:c.message,(u=h==null?void 0:h.response)==null?void 0:u.status)}}return(l,c)=>(b(),y("div",mt,[o.value?(b(),y(F,{key:1},[G("Thanks for your suggestion!")],64)):(b(),y(F,{key:0},[gt,X(p("input",{class:"py-2 px-4 rounded bg-light-200 dark-bg-dark-200",type:"text",placeholder:"https://new.synth.url/","onUpdate:modelValue":c[0]||(c[0]=u=>n.url=u)},null,512),[[ee,n.url]]),X(p("textarea",{class:"py-2 px-4 rounded bg-light-200 dark-bg-dark-200",oninput:"this.style.height = ''; this.style.height = this.scrollHeight +'px'",placeholder:"Describe the web-app and how do you use it musically","onUpdate:modelValue":c[1]||(c[1]=u=>n.text=u)},null,512),[[ee,n.text]]),p("button",{class:"text-xl py-2 px-4 rounded bg-dark-100 text-light-200 dark-bg-light-700 dark-text-dark-500 shadow-lg disabled-opacity-20",disabled:!a(n.url),onClick:c[2]||(c[2]=u=>r())},L(a(n.url)?"Submit":"Please provide a valid URL"),9,bt)],64))]))}},ke=t=>(We("data-v-f3c34bc1"),t=t(),Fe(),t),vt={key:0,class:"px-2 py-1 bg-light-800 dark-bg-dark-800 rounded-xl transition text-sm select-none absolute bottom-2 left-2 text-center z-200 flex items-center gap-1 opacity-70 hover-opacity-100",title:"Since 28 Oct 2023"},wt=ke(()=>p("div",{class:"i-la-eye"},null,-1)),_t={class:"p-0 mt-2px"},kt={class:"p-4 flex flex-col items-start justify-between gap-2",style:{flex:"10 0 200px"}},xt={class:"flex items-center gap-2 flex-0 w-full"},St={class:"transition text-xl select-none absolute top-4 left-4 text-center z-200"},Mt={class:"flex-auto"},Tt={class:"flex items-center gap-2"},It={class:"text-2xl font-bold"},At={key:0,class:"font-normal",title:"Archived locally by us"},Et=ke(()=>p("div",{class:"i-ph-archive-duotone"},null,-1)),$t=[Et],Ct={class:"flex-1"},Ot={key:1,class:"flex-1 flex items-end flex flex-wrap gap-2"},Lt=["href"],Pt={key:3,class:"text-xl p-2 absolute left-2 top-4 bg-yellow-600 rounded-xl shadow font-bold z-1000 transform -rotate-10"},Nt={__name:"SynthCard",props:{pos:{type:Number,default:0},sort:{type:Number,default:0},public:{type:Boolean,default:!1},title:{type:String,default:""},id:{type:Number,default:0},slug:{type:String,default:""},description:{type:String,default:""},cover:{type:String,default:""},url:{type:String,default:""},author:{type:String,default:""},author_link:{type:String,default:""},tags:{type:Array,default:()=>[]},archive:{type:Boolean,default:!1},archive_link:{type:String,default:""},iframe:{type:Boolean,default:null},clicks:{type:Number,default:0},stars:{type:Number,default:0},counter:{type:Number,default:0},is_new:{type:Boolean,default:null}},setup(t){const{isDark:e}=Be(),s=t,{isFormOpen:n,isAccessGranted:i}=_e(),{clicksCount:a,clickSynth:o}=Je(s.id);async function r(){!s.public&&!i.value?n.value=!n.value:(o(s.id),s.iframe?window.open(s.slug+"/","_self"):window.open(s.archive?s.archive_link:s.url,"_blank"))}return(l,c)=>{var d;const u=Qe,h=Re("ClientOnly");return b(),y("button",{class:"max-w-180 w-full flex flex-wrap items-stretch text-left relative bg-light-500 dark-bg-dark-300 -hover-translate-y-6px transition duration-200 hover-shadow-lg rounded-lg overflow-hidden relative border-1 border-dark-100 border-opacity-20 shadow-sm dark-border-light-800 dark-border-opacity-20",style:te({borderColor:T(q)[t.id]?T(e)?"hsl(50deg,80%,35%)":"hsl(40deg,90%,80%)":null}),onClick:r},[p("div",{class:"cover min-h-50 bg-cover bg-center filter transition",style:te([{backgroundImage:`url(/cover/${t.slug}.webp)`},{flex:"1 1 280px"}])},[T(a)||t.counter?(b(),y("div",vt,[wt,p("div",_t,L(T(a)||t.counter),1)])):k("",!0)],4),p("div",kt,[p("div",xt,[p("div",St,L(t.sort),1),p("div",Mt,[p("span",Tt,[p("div",It,L(t.title),1),t.archive?(b(),y("span",At,$t)):k("",!0)])]),z(h,null,{default:U(()=>[z(u,{class:"text-xl mr-2 absolute z-200",id:t.id,stars:t.stars},null,8,["id","stars"])]),_:1})]),t.author?(b(),se(ze(t.author_link?"a":"div"),{key:0,class:"p-0 text-md",href:t.author_link,target:"_blank"},{default:U(()=>[G("by "+L(t.author),1)]),_:1},8,["href"])):k("",!0),p("div",Ct,[De(l.$slots,"default",{},void 0,!0)]),((d=t.tags)==null?void 0:d.length)>0?(b(),y("div",Ot,[(b(!0),y(F,null,we(t.tags,g=>(b(),y("div",{class:"px-2 py-1 text-sm bg-light-800 dark-bg-dark-500 rounded-lg",key:g},L(g),1))),128))])):k("",!0),t.iframe?k("",!0):(b(),y("a",{key:2,class:"absolute bottom-4 right-4 i-la-external-link-square-alt text-lg opacity-40 transition transition hover-opacity-100",onClick:c[0]||(c[0]=je(()=>{},["stop"])),href:`/${t.slug}/`,title:"Opens in a new window"},null,8,Lt)),t.is_new?(b(),y("div",Pt,"NEW!")):k("",!0)])],4)}}},Bt=ve(Nt,[["__scopeId","data-v-f3c34bc1"]]);function O(t){return Array.isArray?Array.isArray(t):Me(t)==="[object Array]"}const Rt=1/0;function zt(t){if(typeof t=="string")return t;let e=t+"";return e=="0"&&1/t==-Rt?"-0":e}function Dt(t){return t==null?"":zt(t)}function $(t){return typeof t=="string"}function xe(t){return typeof t=="number"}function jt(t){return t===!0||t===!1||Wt(t)&&Me(t)=="[object Boolean]"}function Se(t){return typeof t=="object"}function Wt(t){return Se(t)&&t!==null}function x(t){return t!=null}function Q(t){return!t.trim().length}function Me(t){return t==null?t===void 0?"[object Undefined]":"[object Null]":Object.prototype.toString.call(t)}const Ft="Incorrect 'index' type",Zt=t=>`Invalid value for key ${t}`,Yt=t=>`Pattern length exceeds max of ${t}.`,Vt=t=>`Missing ${t} property in key`,qt=t=>`Property 'weight' in key '${t}' must be a positive integer`,pe=Object.prototype.hasOwnProperty;class Gt{constructor(e){this._keys=[],this._keyMap={};let s=0;e.forEach(n=>{let i=Te(n);this._keys.push(i),this._keyMap[i.id]=i,s+=i.weight}),this._keys.forEach(n=>{n.weight/=s})}get(e){return this._keyMap[e]}keys(){return this._keys}toJSON(){return JSON.stringify(this._keys)}}function Te(t){let e=null,s=null,n=null,i=1,a=null;if($(t)||O(t))n=t,e=me(t),s=ie(t);else{if(!pe.call(t,"name"))throw new Error(Vt("name"));const o=t.name;if(n=o,pe.call(t,"weight")&&(i=t.weight,i<=0))throw new Error(qt(o));e=me(o),s=ie(o),a=t.getFn}return{path:e,id:s,weight:i,src:n,getFn:a}}function me(t){return O(t)?t:t.split(".")}function ie(t){return O(t)?t.join("."):t}function Ut(t,e){let s=[],n=!1;const i=(a,o,r)=>{if(x(a))if(!o[r])s.push(a);else{let l=o[r];const c=a[l];if(!x(c))return;if(r===o.length-1&&($(c)||xe(c)||jt(c)))s.push(Dt(c));else if(O(c)){n=!0;for(let u=0,h=c.length;ut.score===e.score?t.idx{this._keysMap[s.id]=n})}create(){this.isCreated||!this.docs.length||(this.isCreated=!0,$(this.docs[0])?this.docs.forEach((e,s)=>{this._addString(e,s)}):this.docs.forEach((e,s)=>{this._addObject(e,s)}),this.norm.clear())}add(e){const s=this.size();$(e)?this._addString(e,s):this._addObject(e,s)}removeAt(e){this.records.splice(e,1);for(let s=e,n=this.size();s{let o=i.getFn?i.getFn(e):this.getFn(e,i.path);if(x(o)){if(O(o)){let r=[];const l=[{nestedArrIndex:-1,value:o}];for(;l.length;){const{nestedArrIndex:c,value:u}=l.pop();if(x(u))if($(u)&&!Q(u)){let h={v:u,i:c,n:this.norm.get(u)};r.push(h)}else O(u)&&u.forEach((h,d)=>{l.push({nestedArrIndex:d,value:h})})}n.$[a]=r}else if($(o)&&!Q(o)){let r={v:o,n:this.norm.get(o)};n.$[a]=r}}}),this.records.push(n)}toJSON(){return{keys:this.keys,records:this.records}}}function Ie(t,e,{getFn:s=f.getFn,fieldNormWeight:n=f.fieldNormWeight}={}){const i=new ue({getFn:s,fieldNormWeight:n});return i.setKeys(t.map(Te)),i.setSources(e),i.create(),i}function ts(t,{getFn:e=f.getFn,fieldNormWeight:s=f.fieldNormWeight}={}){const{keys:n,records:i}=t,a=new ue({getFn:e,fieldNormWeight:s});return a.setKeys(n),a.setIndexRecords(i),a}function V(t,{errors:e=0,currentLocation:s=0,expectedLocation:n=0,distance:i=f.distance,ignoreLocation:a=f.ignoreLocation}={}){const o=e/t.length;if(a)return o;const r=Math.abs(n-s);return i?o+r/i:r?1:o}function ss(t=[],e=f.minMatchCharLength){let s=[],n=-1,i=-1,a=0;for(let o=t.length;a=e&&s.push([n,i]),n=-1)}return t[a-1]&&a-n>=e&&s.push([n,a-1]),s}const R=32;function ns(t,e,s,{location:n=f.location,distance:i=f.distance,threshold:a=f.threshold,findAllMatches:o=f.findAllMatches,minMatchCharLength:r=f.minMatchCharLength,includeMatches:l=f.includeMatches,ignoreLocation:c=f.ignoreLocation}={}){if(e.length>R)throw new Error(Yt(R));const u=e.length,h=t.length,d=Math.max(0,Math.min(n,h));let g=a,v=d;const m=r>1||l,S=m?Array(h):[];let M;for(;(M=t.indexOf(e,v))>-1;){let _=V(e,{currentLocation:M,expectedLocation:d,distance:i,ignoreLocation:c});if(g=Math.min(_,g),v=M+u,m){let I=0;for(;I=he;A-=1){let Y=A-1,de=s[t.charAt(Y)];if(m&&(S[Y]=+!!de),j[A]=(j[A+1]<<1|1)&de,_&&(j[A]|=(C[A+1]|C[A])<<1|1|C[A+1]),j[A]&Z&&(E=V(e,{errors:_,currentLocation:Y,expectedLocation:d,distance:i,ignoreLocation:c}),E<=g)){if(g=E,v=Y,v<=d)break;he=Math.max(1,2*d-v)}}if(V(e,{errors:_+1,currentLocation:d,expectedLocation:d,distance:i,ignoreLocation:c})>g)break;C=j}const D={isMatch:v>=0,score:Math.max(.001,E)};if(m){const _=ss(S,r);_.length?l&&(D.indices=_):D.isMatch=!1}return D}function is(t){let e={};for(let s=0,n=t.length;s{this.chunks.push({pattern:d,alphabet:is(d),startIndex:g})},h=this.pattern.length;if(h>R){let d=0;const g=h%R,v=h-g;for(;d{const{isMatch:M,score:C,indices:E}=ns(e,v,m,{location:i+S,distance:a,threshold:o,findAllMatches:r,minMatchCharLength:l,includeMatches:n,ignoreLocation:c});M&&(d=!0),h+=C,M&&E&&(u=[...u,...E])});let g={isMatch:d,score:d?h/this.chunks.length:1};return d&&n&&(g.indices=u),g}}class N{constructor(e){this.pattern=e}static isMultiMatch(e){return ge(e,this.multiRegex)}static isSingleMatch(e){return ge(e,this.singleRegex)}search(){}}function ge(t,e){const s=t.match(e);return s?s[1]:null}class as extends N{constructor(e){super(e)}static get type(){return"exact"}static get multiRegex(){return/^="(.*)"$/}static get singleRegex(){return/^=(.*)$/}search(e){const s=e===this.pattern;return{isMatch:s,score:s?0:1,indices:[0,this.pattern.length-1]}}}class os extends N{constructor(e){super(e)}static get type(){return"inverse-exact"}static get multiRegex(){return/^!"(.*)"$/}static get singleRegex(){return/^!(.*)$/}search(e){const n=e.indexOf(this.pattern)===-1;return{isMatch:n,score:n?0:1,indices:[0,e.length-1]}}}class rs extends N{constructor(e){super(e)}static get type(){return"prefix-exact"}static get multiRegex(){return/^\^"(.*)"$/}static get singleRegex(){return/^\^(.*)$/}search(e){const s=e.startsWith(this.pattern);return{isMatch:s,score:s?0:1,indices:[0,this.pattern.length-1]}}}class ls extends N{constructor(e){super(e)}static get type(){return"inverse-prefix-exact"}static get multiRegex(){return/^!\^"(.*)"$/}static get singleRegex(){return/^!\^(.*)$/}search(e){const s=!e.startsWith(this.pattern);return{isMatch:s,score:s?0:1,indices:[0,e.length-1]}}}class cs extends N{constructor(e){super(e)}static get type(){return"suffix-exact"}static get multiRegex(){return/^"(.*)"\$$/}static get singleRegex(){return/^(.*)\$$/}search(e){const s=e.endsWith(this.pattern);return{isMatch:s,score:s?0:1,indices:[e.length-this.pattern.length,e.length-1]}}}class us extends N{constructor(e){super(e)}static get type(){return"inverse-suffix-exact"}static get multiRegex(){return/^!"(.*)"\$$/}static get singleRegex(){return/^!(.*)\$$/}search(e){const s=!e.endsWith(this.pattern);return{isMatch:s,score:s?0:1,indices:[0,e.length-1]}}}class Ee extends N{constructor(e,{location:s=f.location,threshold:n=f.threshold,distance:i=f.distance,includeMatches:a=f.includeMatches,findAllMatches:o=f.findAllMatches,minMatchCharLength:r=f.minMatchCharLength,isCaseSensitive:l=f.isCaseSensitive,ignoreLocation:c=f.ignoreLocation}={}){super(e),this._bitapSearch=new Ae(e,{location:s,threshold:n,distance:i,includeMatches:a,findAllMatches:o,minMatchCharLength:r,isCaseSensitive:l,ignoreLocation:c})}static get type(){return"fuzzy"}static get multiRegex(){return/^"(.*)"$/}static get singleRegex(){return/^(.*)$/}search(e){return this._bitapSearch.searchIn(e)}}class $e extends N{constructor(e){super(e)}static get type(){return"include"}static get multiRegex(){return/^'"(.*)"$/}static get singleRegex(){return/^'(.*)$/}search(e){let s=0,n;const i=[],a=this.pattern.length;for(;(n=e.indexOf(this.pattern,s))>-1;)s=n+a,i.push([n,s-1]);const o=!!i.length;return{isMatch:o,score:o?0:1,indices:i}}}const ae=[as,$e,rs,ls,us,cs,os,Ee],be=ae.length,hs=/ +(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)/,ds="|";function fs(t,e={}){return t.split(ds).map(s=>{let n=s.trim().split(hs).filter(a=>a&&!!a.trim()),i=[];for(let a=0,o=n.length;a!!(t[K.AND]||t[K.OR]),bs=t=>!!t[le.PATH],ys=t=>!O(t)&&Se(t)&&!ce(t),ye=t=>({[K.AND]:Object.keys(t).map(e=>({[e]:t[e]}))});function Ce(t,e,{auto:s=!0}={}){const n=i=>{let a=Object.keys(i);const o=bs(i);if(!o&&a.length>1&&!ce(i))return n(ye(i));if(ys(i)){const l=o?i[le.PATH]:a[0],c=o?i[le.PATTERN]:i[l];if(!$(c))throw new Error(Zt(l));const u={keyId:ie(l),pattern:c};return s&&(u.searcher=re(c,e)),u}let r={children:[],operator:a[0]};return a.forEach(l=>{const c=i[l];O(c)&&c.forEach(u=>{r.children.push(n(u))})}),r};return ce(t)||(t=ye(t)),n(t)}function vs(t,{ignoreFieldNorm:e=f.ignoreFieldNorm}){t.forEach(s=>{let n=1;s.matches.forEach(({key:i,norm:a,score:o})=>{const r=i?i.weight:null;n*=Math.pow(o===0&&r?Number.EPSILON:o,(r||1)*(e?1:a))}),s.score=n})}function ws(t,e){const s=t.matches;e.matches=[],x(s)&&s.forEach(n=>{if(!x(n.indices)||!n.indices.length)return;const{indices:i,value:a}=n;let o={indices:i,value:a};n.key&&(o.key=n.key.src),n.idx>-1&&(o.refIndex=n.idx),e.matches.push(o)})}function _s(t,e){e.score=t.score}function ks(t,e,{includeMatches:s=f.includeMatches,includeScore:n=f.includeScore}={}){const i=[];return s&&i.push(ws),n&&i.push(_s),t.map(a=>{const{idx:o}=a,r={item:e[o],refIndex:o};return i.length&&i.forEach(l=>{l(a,r)}),r})}class W{constructor(e,s={},n){this.options={...f,...s},this.options.useExtendedSearch,this._keyStore=new Gt(this.options.keys),this.setCollection(e,n)}setCollection(e,s){if(this._docs=e,s&&!(s instanceof ue))throw new Error(Ft);this._myIndex=s||Ie(this.options.keys,this._docs,{getFn:this.options.getFn,fieldNormWeight:this.options.fieldNormWeight})}add(e){x(e)&&(this._docs.push(e),this._myIndex.add(e))}remove(e=()=>!1){const s=[];for(let n=0,i=this._docs.length;n-1&&(l=l.slice(0,s)),ks(l,this._docs,{includeMatches:n,includeScore:i})}_searchStringList(e){const s=re(e,this.options),{records:n}=this._myIndex,i=[];return n.forEach(({v:a,i:o,n:r})=>{if(!x(a))return;const{isMatch:l,score:c,indices:u}=s.searchIn(a);l&&i.push({item:a,idx:o,matches:[{score:c,value:a,norm:r,indices:u}]})}),i}_searchLogical(e){const s=Ce(e,this.options),n=(r,l,c)=>{if(!r.children){const{keyId:h,searcher:d}=r,g=this._findMatches({key:this._keyStore.get(h),value:this._myIndex.getValueForItemAtKeyId(l,h),searcher:d});return g&&g.length?[{idx:c,item:l,matches:g}]:[]}const u=[];for(let h=0,d=r.children.length;h{if(x(r)){let c=n(s,r,l);c.length&&(a[l]||(a[l]={idx:l,item:r,matches:[]},o.push(a[l])),c.forEach(({matches:u})=>{a[l].matches.push(...u)}))}}),o}_searchObjectList(e){const s=re(e,this.options),{keys:n,records:i}=this._myIndex,a=[];return i.forEach(({$:o,i:r})=>{if(!x(o))return;let l=[];n.forEach((c,u)=>{l.push(...this._findMatches({key:c,value:o[u],searcher:s}))}),l.length&&a.push({idx:r,item:o,matches:l})}),a}_findMatches({key:e,value:s,searcher:n}){if(!x(s))return[];let i=[];if(O(s))s.forEach(({v:a,i:o,n:r})=>{if(!x(a))return;const{isMatch:l,score:c,indices:u}=n.searchIn(a);l&&i.push({score:c,key:e,value:a,idx:o,norm:r,indices:u})});else{const{v:a,n:o}=s,{isMatch:r,score:l,indices:c}=n.searchIn(a);r&&i.push({score:l,key:e,value:a,norm:o,indices:c})}return i}}W.version="7.0.0";W.createIndex=Ie;W.parseIndex=ts;W.config=f;W.parseQuery=Ce;gs(ms);const xs={class:"flex flex-col items-center mb-2 px-8"},Ss={class:"w-full max-w-110 flex items-center relative my-4 gap-2"},Ms=["placeholder"],Ts=p("div",{class:"i-la-search absolute left-2 text-xl opacity-40"},null,-1),Is=["title"],As={key:0,class:"i-la-star-solid"},Es={key:1,class:"i-la-star"},$s={class:"flex flex-col items-center gap-8 p-2 max-w-160 mx-auto mb-12"},Cs=["index"],Os={class:"p-2",key:"nnn"},Ls={key:0,class:"animate-pulse text-center"},Ps={__name:"SynthList",setup(t){const{isAccessGranted:e}=_e(),s=P(ne),n=new W(ne,{includeScore:!0,ignoreLocation:!0,shouldSort:!0,keys:["title","slug","author"]}),i=Ze("fav-filter",!1),a=P(""),o=P(!1),r=J(()=>n.search(a.value)),l=J(()=>r.value.filter(h=>h.score<.2).sort((h,d)=>h.score>d.score?1:0).map(h=>h.item.slug)),c=J(()=>s.value.filter(h=>a.value?l.value.includes(h.slug):i.value?q.value[h.id]:!0)),u=P([]);return Ye(async()=>{u.value=await Xe("synths",{fields:["id",{stats:["views","stars"]}]})}),Ve(q,h=>{Object.values(h).filter(Boolean).length==0&&(i.value=!1)},{deep:!0,immediate:!0}),(h,d)=>{const g=Bt,v=yt;return b(),y(F,null,[p("div",xs,[p("div",Ss,[X(p("input",{class:"w-full focus text-xl py-2 pl-9 bg-light-50 bg-opacity-100 shadow-inner border-1 border-dark-100 border-opacity-10 rounded-lg dark-bg-dark-200 outline-none focus-border-opacity-90",placeholder:"Type to search...","onUpdate:modelValue":d[0]||(d[0]=m=>a.value=m)},null,8,Ms),[[ee,a.value]]),Ts,a.value?(b(),y("div",{key:0,class:"i-la-times absolute right-2 text-xl opacity-40 hover-opacity-80 transition cursor-pointer",onClick:d[1]||(d[1]=m=>a.value="")})):k("",!0),Object.values(T(q)).filter(Boolean).length>0&&!a.value?(b(),y("button",{key:1,class:"transition p-2 shadow dark-bg-dark-200 dark-hover-bg-dark-100 bg-light-300 hover-bg-light-100 rounded-lg flex items-center gap-2 text-xl text-yellow",title:T(i)?"Only favourites are shown":"Show only favourites",onClick:d[2]||(d[2]=m=>i.value=!T(i))},[z(qe,{name:"fade"},{default:U(()=>[T(i)?(b(),y("div",As)):(b(),y("div",Es))]),_:1})],8,Is)):k("",!0),a.value?k("",!0):(b(),y("button",{key:2,class:"transition p-2 shadow dark-bg-dark-200 dark-hover-bg-dark-100 bg-light-300 hover-bg-light-100 rounded-lg flex items-center gap-2 text-xl",title:"Suggest a new link to the collection",onClick:d[3]||(d[3]=m=>o.value=!o.value)},[p("div",{class:Ge(["i-la-plus transform transition",{"rotate-45":o.value}])},null,2)]))])]),p("div",$s,[o.value?k("",!0):(b(),se(Ke,{key:0,name:"fade"},{default:U(()=>[(b(!0),y(F,null,we(c.value,(m,S)=>{var M,C,E,B,Z,D,_,I;return b(),y("div",{class:"flex w-full sticky",style:te([{top:`${80+S*4}px`,zIndex:S+10},{flex:"1 1 240px"}]),key:m.id,index:S},[(b(),se(g,Ue({pos:S,style:{filter:!m.public&&!T(e)?"contrast(70%) blur(2px) opacity(80%)":""},key:m.id},m,{counter:(B=(E=(C=(M=u.value)==null?void 0:M.find(w=>(w==null?void 0:w.id)==(m==null?void 0:m.id)))==null?void 0:C.stats)==null?void 0:E[0])==null?void 0:B.views,stars:(I=(_=(D=(Z=u.value)==null?void 0:Z.find(w=>(w==null?void 0:w.id)==(m==null?void 0:m.id)))==null?void 0:D.stats)==null?void 0:_[0])==null?void 0:I.stars}),null,16,["pos","style","counter","stars"]))],12,Cs)}),128))]),_:1})),c.value.length==0||o.value?(b(),y("div",Os,[o.value?k("",!0):(b(),y("div",Ls,"We don't know such a web-app yet. ")),z(v,{class:"max-w-140 mx-auto mt-6",onSubmitted:d[4]||(d[4]=m=>o.value=!1)})])):k("",!0)])],64)}}},Ks=JSON.parse('{"title":"Web synths","description":"Web synthesizers to play with MIDI controllers","frontmatter":{"title":"Web synths","description":"Web synthesizers to play with MIDI controllers","date":"2023-06-22T00:00:00.000Z","layout":"home"},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":1711550395000}'),Ns={name:"index.md"},Bs=p("h1",{class:"text-center text-2xl sm-text-3xl font-bold mt-8",style:{padding:"0.1rem 1rem"}},"Online synthesizers and web piano apps",-1),Rs=p("h2",{class:"text-xl sm-text-2xl text-center my-2",style:{padding:"0 1rem"}},"Curated collection of free music creation resources",-1),zs={class:"px-4 text-lg text-center mb-8 max-w-150 mx-auto"},Ds=p("a",{class:"font-bold",href:"https://chromatone.center",target:"_blank",rel:"noopener"}," Chromatone",-1),js=p("a",{class:"font-bold",href:"https://playtronica.com",target:"_blank",rel:"noopener"}," Playtronica",-1),Ws=p("h3",{class:"font-bold text-xl"},"Welcome to the community of web-based musicians!",-1),Fs=p("p",null,[p("a",{target:"_blank",href:"https://chromatone.center/"},[p("img",{src:He,class:"max-w-16 mx-auto"})])],-1);function Zs(t,e,s,n,i,a){const o=Ps,r=pt,l=at;return b(),y("div",null,[Bs,Rs,z(o),p("div",zs,[Ds,G(" is an open source visual music language for education, research and performance. We develop a new universal way to communicate music. "),js,G(" is a digital playground that explores the possibilities of the material world through technology, creating gadgets that make the world musical. Together we share our passion for online music instruments. "),z(r),Ws,Fs,z(l)])])}const Hs=ve(Ns,[["render",Zs]]);export{Ks as __pageData,Hs as default}; diff --git a/assets/index.md.C7QfLb-F.lean.js b/assets/index.md.C7QfLb-F.lean.js deleted file mode 100644 index 47f1e6c1..00000000 --- a/assets/index.md.C7QfLb-F.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{D as Oe,b,d as y,g as p,f as T,q as k,r as P,E as fe,F as Le,G as Pe,t as L,H as Ne,I as F,e as X,j as ee,h as G,_ as ve,s as Be,x as Re,J as te,y as z,z as U,A as se,K as ze,i as De,L as we,C as je,M as We,N as Fe,a as Ze,c as J,o as Ye,w as Ve,T as qe,n as Ge,O as Ue,P as Ke,Q as He}from"./chunks/framework.DA3bj7zI.js";import{u as Je,f as q,_ as Qe,a as Xe}from"./chunks/useClicks.DKflLG6D.js";import{u as _e}from"./chunks/theme.TKyytG40.js";import"./chunks/index.OsI8M1nP.js";const et={class:"text-center line-height-loose text-md"},tt={class:"mx-auto max-w-75ch intro md-text-lg"},st=p("div",{class:"i-mdi-share"},null,-1),nt=p("span",null,"Share to save for later",-1),it=[st,nt],at={__name:"AboutShare",setup(t){const{share:e,isSupported:s}=Oe();function n(){e({title:"Web synths collection",text:"Look at this online synthesizer collection. No need to install anything - just your browser and any MIDI controller will do.",url:location.href})}return(i,a)=>(b(),y("div",et,[p("div",tt,[T(s)?(b(),y("button",{key:0,class:"mx-auto flex items-center gap-2 text-white py-2 px-4 mt-6 shadow-lg rounded-lg cursor-pointer bg-green-600 -hover-translate-y-2px transition",onClick:a[0]||(a[0]=o=>n()),"data-umami-event":"Shared via button"},it)):k("",!0)])]))}},ne=JSON.parse(`[{"url":"https://dotpiano.com/","date_created":"2023-10-27T12:45:53.887Z","title":"Dotpiano","slug":"dotpiano","author":"Alex Chen and Yotam Mann","author_link":null,"description":null,"tags":["polyphonic","midi","keyboard","Multiplayer"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"6dac5187-213f-4eb8-96ed-63c2e689b206","id":1,"sort":1,"clicks":6424,"public":true,"is_new":false,"stats":[1]},{"url":"https://waveform.playtronica.com/","date_created":"2023-10-27T12:45:54.644Z","title":"Waveform","slug":"waveform","author":"Qvantor","author_link":"https://github.com/qvantor/","description":null,"tags":["playtronica","polyphonic","midi"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"86cb9385-9deb-4f10-95cb-765980156e65","id":39,"sort":2,"clicks":6794,"public":true,"is_new":false,"stats":[2]},{"url":"https://juno-106.js.org/","date_created":"2023-10-27T12:45:54.085Z","title":"Juno-106","slug":"juno-106","author":"Steve Goldberg ","author_link":"https://github.com/stevengoldberg","description":null,"tags":["fm","midi"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"b54cfce7-af2f-4e03-a5b3-81fc853d2cc8","id":14,"sort":3,"clicks":5014,"public":true,"is_new":false,"stats":[3]},{"url":"https://chromatone.center/practice/synth/elementary/","date_created":"2023-10-27T12:45:54.453Z","title":"Elementary synth","slug":"elementary","author":"Chromatone","author_link":"https://chromatone.center","description":null,"tags":["chromatone","polyphonic","keyboard"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"21070a51-6089-48bd-8840-ba37b5f2963d","id":29,"sort":4,"clicks":3186,"public":true,"is_new":false,"stats":[4]},{"url":"https://mmontag.github.io/dx7-synth-js/","date_created":"2023-10-27T12:45:54.477Z","title":"DX7 Synth","slug":"dx7","author":"Matt Montag ","author_link":"https://github.com/mmontag","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"f3b285ee-6b82-453b-9ff6-aeda18ec675b","id":30,"sort":5,"clicks":2716,"public":true,"is_new":false,"stats":[5]},{"url":"https://touchme.chromatone.center/","date_created":"2023-10-27T12:45:53.941Z","title":"TouchME","slug":"touchme","author":"Chromatone","author_link":"https://chromatone.center","description":null,"tags":["chromatone","playtronica"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"68062279-8e08-4953-ae8f-7a77c584948e","id":3,"sort":6,"clicks":3416,"public":true,"is_new":false,"stats":[6]},{"url":"https://muted.io/","date_created":"2023-10-27T12:45:54.742Z","title":"Muted.io","slug":"muted-io","author":"Sébastien Noël","author_link":"https://twitter.com/muted_io","description":null,"tags":["educational","midi"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"5c08ac7d-4414-47c0-b7d1-a9867ba3949f","id":43,"sort":7,"clicks":175,"public":false,"is_new":false,"stats":[10]},{"url":"https://chromatone.center/practice/synth/soundfont/","date_created":"2023-12-18T10:20:56.985Z","title":"Soundfont Sampler Synth","slug":"soundfont","author":"Chromatone","author_link":"https://github.com/chromatone","description":"Free open source soundfont sampler online synthesizer. Very robust and hassle free way to play some straightforward sampled instruments like horns, xylophones and just piano sounds. Instantly playable instrument with about 90 presets out of the box. ","tags":["Poly","Keyboard","Sampler","MIDI"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"26704e9d-5964-4a0f-940c-370c14777e95","id":51,"sort":8,"clicks":0,"public":true,"is_new":true,"stats":[43]},{"url":"https://midi.city/","date_created":"2023-12-28T05:40:45.140Z","title":"MIDI.city","slug":"midi-city","author":"Astral Digital","author_link":"https://astral.digital/","description":"midi.city is a free online synthesizer, built by Jack.\\n\\nmidi.city has over 128 different instruments including: Pianos, Saxophones, Drums, Trumpets, Synth Pads, Guitar, Violins and all other instruments defined in the General Midi specification.","tags":null,"archive_link":null,"archive":false,"content":"midi.city has been created with the help of hundreds of different open-source projects and with contributions from many others.\\n\\n- Tone.js by Yotam Mann: the Web Audio API-based sound engine that implements a majority of nodes used in the audio graph. It powers many of the advanced features used such as Granular Synthesis, Reverb, and timing.\\n- Groove Monkee: graciously provided the MIDI files that are used for the percussion loops.\\n- Keenan Brand: created the midi.city logo and various icons used on the site.\\n- Noun Project: various icons are used via a Pro license.\\n- Google Material Design: various icons.\\n- Compifont by Marcin Dziembor: the soundfont powering the samples and many the audio graph definitions, is originally . Several modifications have been made to adapt to midi.city and the Web Audio API. ","iframe":true,"cover":"8cb479ba-e4e0-42f2-986c-597b68b8e639","id":52,"sort":9,"clicks":10,"public":false,"is_new":false,"stats":[44]},{"url":"https://apps.musedlab.org/aqwertyon/theory/","date_created":"2023-10-27T12:45:54.711Z","title":"aQWERTYon","slug":"aqwertyon","author":"Mused lab","author_link":"https://musedlab.org/","description":null,"tags":["polyphonic","samples"],"archive_link":null,"archive":false,"content":"The **aQWERTYon** (QWERTY accordion) is designed to simplify the process for improvising, learning, and making music with your computer keyboard. Play along with your favorite YouTube videos, learn music theory through our Music Theory for Bedroom Producers course in collaboration with Soundfly, or take advantage of Web MIDI and us it to play and record into your favorite digital audio workstation, such as Soundtrap.com, GarageBand, Logic, or Ableton, or as input into music notation programs like Noteflight.\\n\\nhttps://youtu.be/hqFr4lF6u_Y","iframe":true,"cover":"e7c87de8-c290-4da9-b0e0-eed73871b27a","id":42,"sort":10,"clicks":348,"public":false,"is_new":false,"stats":[8]},{"url":"https://musiclab.chromeexperiments.com/","date_created":"2023-11-26T08:23:47.351Z","title":"Chrome Music Lab","slug":"chrome-lab","author":"Google","author_link":"https://github.com/googlecreativelab/chrome-music-lab","description":"Chrome Music Lab is a website that makes learning music more accessible through fun, hands-on experiments.","tags":["Educational","Keyboard","MIDI","Poly","Piano","Analysis","Mic","Visuals"],"archive_link":null,"archive":false,"content":"## What can it be used for?\\n\\nMany teachers have been using Chrome Music Lab as a tool in their classrooms to explore music and its connections to science, math, art, and more. They’ve been combining it with dance and live instruments. Here’s a collection of some uses we’ve found on Twitter.\\n\\n## Can I use it to make my own songs?\\n\\nYes. Check out the Song Maker experiment, which lets you make and share your own songs.\\n\\n## Do I need to make an account?\\n\\nNope. Just open any experiment and start playing.\\n\\n## How were these built?\\n\\nAll our experiments are all built with freely accessible web technology such as Web Audio API, WebMIDI, Tone.js, and more. These tools make it easier for coders to build new interactive music experiences. You can get the open-source code to lots of these experiments here on [Github](https://github.com/googlecreativelab/chrome-music-lab).\\n\\n## What devices do these work on?\\n\\nYou can play with these experiments across devices – phones, tablets, laptops – just by opening the site on a web browser such as Chrome.","iframe":true,"cover":"297b059e-a6fa-4faa-91b2-c2e1e68cf98f","id":50,"sort":11,"clicks":304,"public":false,"is_new":false,"stats":[9]},{"url":"https://websynths.com/","date_created":"2023-10-27T12:45:54.019Z","title":"Websynths Microtonal","slug":"microtonal","author":"WebSynths","author_link":"https://www.websynths.com/microtonal/","description":"The deepest internet synthesizer","tags":null,"archive_link":null,"archive":false,"content":"\\nWebSynths is a free resource for any musician with internet access! But, it is made possible by support from our patrons. Please consider helping if you can: patreon.com/WebSynths\\n\\n- You can use your QWERTY keyboard, mouse, mobile touch or MIDI keyboard to play the sounds.\\n- You can change the tuning of the keys, or select a scale, by clicking the tuning button.\\n- MIDI is a way to use an external physical instrument to play it. If you have a MIDI keyboard that you wish to use, hit the MIDI button to set it up.\\n- If a note gets stuck, hit the panic button, it will stop all voices from playing.\\n- You can use the arrows on your computer keyboard to scroll through the presets.\\n\\nA simple explanation of Subtractive Synthesis:\\n\\n- Subtractive Synthesis works by taking one or more oscillators, setting the pitch of their oscillation (usually to the note of the key being pressed,) setting the shape of their oscillation to the desired timbre (Sine, Saw, Square or more complex shapes,) mixing them together and running them through a filter to change their EQ (usually filtering out the highest or lowest frequencies... this is why it is called \\"subtractive\\"), then running them through an envelope so the note can be heard on when a key is pressed down and is silenced when the key is released. In the case of WebSynths Microtonal, the sound is then sent through effects like delay, chorus and reverb and out to your speakers.\\n- Oscillators are the voices. This synth has 3 of them in the left column. You can change the character of each voice by changing the parameters of them. The 'Shape' menu allows you to choose from different styles of voice for each oscillator. You can turn each voice on or off and mix them together.\\n- The filter section applies equalization to your oscillators via the cutoff and emphasis controls. You can change the equalization filter type to 'low pass / high pass' and many more. You can use the LFOs and/or Envelopes to change how the filtration changes over time. An LFO is just a slow oscillator that is uses to automatically move a parameter over time.\\n- The amplitude envelope changes how your sound is played, volume-wise, when you hit a note. For example, having a long release time will mean that once you let go of the note you are playing it will tail off until fading out. Having a slow attack will mean that your note will fade in instead of playing at full volume straight away.\\n- The effects section allows you to add various effects to your overall sound. You can change the effects, mix them together and toggle them on or off too.\\n\\n","iframe":false,"cover":"ffc54664-7ba4-4855-a56a-6657a5542a04","id":10,"sort":12,"clicks":172,"public":false,"is_new":false,"stats":[11]},{"url":"https://stuartmemo.com/synth/","date_created":"2023-10-27T12:45:54.586Z","title":"Sympathetic Synthesizer System Mk 1","slug":"sympathetic","author":"Stuart Memo ","author_link":"https://github.com/stuartmemo","description":null,"tags":["keyboard","midi","additive"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"123aeb6d-c7b0-43dd-a852-98660bdf03f0","id":37,"sort":13,"clicks":302,"public":false,"is_new":false,"stats":[12]},{"url":"https://learningsynths.ableton.com/","date_created":"2023-10-27T12:45:54.360Z","title":"Learning synths","slug":"ableton","author":"Ableton","author_link":"https://github.com/Ableton","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":false,"cover":"0bf8312d-c449-4f5c-80ad-36594ef98db6","id":26,"sort":14,"clicks":184,"public":false,"is_new":false,"stats":[13]},{"url":"https://www.femurdesign.com/theremin/","date_created":"2023-10-27T12:45:54.206Z","title":"Theremin","slug":"theremin","author":"Femur","author_link":"https://femurdesign.com/","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"6b22ef48-6830-4cf2-810d-809408033450","id":19,"sort":15,"clicks":320,"public":false,"is_new":false,"stats":[14]},{"url":"https://multiplayer-orchestra.com","date_created":"2024-04-23T08:07:22.796Z","title":"Multiplayer Orchestra","slug":"multiplayer-orchestra","author":"Mutli_Orchestra","author_link":"https://twitter.com/Mutli_Orchestra","description":"Play in real time with people from all around the world with more than 400 instruments.","tags":["Poly","MIDI","Keyboard","Collaborative","Online"],"archive_link":null,"archive":false,"content":"Multiplayer Orchestra ([https://www.multiplayer-orchestra.com/](https://www.multiplayer-orchestra.com/)) is a web application that allows you to virtually collaborate with musicians from around the world in real-time. Here are some key features:\\n\\n* **Large instrument selection:** Choose from over 400 instruments, including pianos, guitars, drums, and orchestral instruments.\\n* **Real-time collaboration:** Play music simultaneously with other users, creating a virtual orchestra.\\n* **Public and private rooms:** Join public rooms to jam with others or create private rooms with a password for specific collaborations.\\n* **Contests:** Participate in contests to win prizes like Amazon gift cards by recording solo performances.\\n\\n**It's important to note that the website seems to be in beta based on the version information listed (Beta 0.30).** ","iframe":true,"cover":"d743d9ea-d73f-4593-a70e-58a3e4deaa1b","id":55,"sort":16,"clicks":5,"public":false,"is_new":true,"stats":[47]},{"url":"https://touchpianist.com/","date_created":"2023-10-27T12:45:54.691Z","title":"Touch Pianist","slug":"touch-pianist","author":"EarSlap","author_link":null,"description":null,"tags":["entertainment","piano"],"archive_link":null,"archive":false,"content":"Touch Pianist is a musical toy / instrument that allows the user to perform hard-to-play classical piano music favorites (from composers like Beethoven, Mozart, Bach, Satie, Debussy to name a few) just by tapping the rhythm of the piece's particular sound events on a computer keyboard or a touch screen.\\n\\nIt also provides live visualisation of the pieces that are being performed. There is no score keeping, the user is free to perform the music in any way they wish. The premise is that it is really fun to perform a piece you know well, exactly like you feel it with so little effort.\\n\\nTouch Pianist has CoreMIDI support so you can use your favorite piano / sound plug-in in your computer as a sound source if you wish.","iframe":false,"cover":"415deeeb-a843-4363-b6c9-78918aa688af","id":41,"sort":17,"clicks":177,"public":false,"is_new":false,"stats":[15]},{"url":"https://www.beepbox.co","date_created":"2024-03-21T02:43:35.749Z","title":"BeepBox","slug":"beepbox","author":"John Nesky","author_link":"https://johnnesky.com/","description":"BeepBox is an online tool for sketching and sharing instrumental music.\\n\\nAll song data is contained in the URL at the top of your browser. When you make changes to the song, the URL is updated to reflect your changes. When you are satisfied with your song, just copy and paste the URL to save and share your song!\\n\\nBeepBox is a passion project, and will always be free to use. ","tags":["Poly","Sequencer","FM"],"archive_link":null,"archive":false,"content":" BeepBox is developed by John Nesky.\\n\\nBeepBox does not claim ownership over songs created with it, so original songs belong to their authors.\\n\\nNeither John Nesky nor BeepBox assume responsibility for any copyrighted material played on BeepBox. No songs are ever received, recorded, or distributed by BeepBox's servers. All song data is contained in the URL after the hash (#) mark, and your song data will not leave your device unless you copy and share the URL. BeepBox does not collect, track, or share any user data. ","iframe":true,"cover":"dea37f5f-504c-443f-ba9a-3dff4d583506","id":54,"sort":18,"clicks":10,"public":false,"is_new":true,"stats":[46]},{"url":"https://roland50.studio/","date_created":"2023-11-25T05:42:57.573Z","title":"Roland 50 Studio","slug":"roland50","author":"Yuri Suzuki","author_link":"https://www.yurisuzuki.com/","description":"It's a professional sounding online musical interface, which records your masterpieces and allows you to share your creations through social media, messaging and also as a download.\\nOn top of the TR-808 drum machine and TB-303 bass synthesizer featured at the original 2020 release, now the sound of SH-101 synthesizer is added, and more sounds to come later in the year 2022, commemorating Roland's 50th anniversary.","tags":["drum machine","SP404","TR808","TB303","Step sequencer"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"3b5aec13-7e50-475c-9165-bc963872515d","id":45,"sort":19,"clicks":17,"public":false,"is_new":false,"stats":[16]},{"url":"https://www.disco-computer.com/synthesizer/synth.html","date_created":"2023-10-27T12:45:54.270Z","title":"Disco-computer","slug":"disco-computer","author":"Patrick Sawyer","author_link":null,"description":null,"tags":["polyphonic","fm","keyboard"],"archive_link":"/archive/synthescheisse/index.html","archive":true,"content":null,"iframe":true,"cover":"0d0183e6-8964-4246-a18c-a6ca0a0f2794","id":22,"sort":20,"clicks":269,"public":false,"is_new":false,"stats":[17]},{"url":"https://seeing-sound.netlify.app/","date_created":"2023-10-27T12:45:54.492Z","title":"Video Sampler","slug":"video-sampler","author":"Playtronica","author_link":"https://shop.playtronica.com","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"b39cc546-2571-4402-84cd-f8497e27d0c9","id":31,"sort":21,"clicks":256,"public":false,"is_new":false,"stats":[18]},{"url":"https://www.stef.be/bassoontracker/","date_created":"2024-03-14T07:04:03.311Z","title":"Bassoon Tracker","slug":"bassoon","author":"Steffest","author_link":" https://www.stef.be","description":"Browser-based old-school Amiga Music Tracker in plain old JavaScript.","tags":["FM","tracker","8-bit","low-fi"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"70c9db80-8ef8-4aa5-9dcd-6b5c3c0da5b2","id":53,"sort":23,"clicks":10,"public":false,"is_new":true,"stats":[45]},{"url":"https://www.igorski.nl/experiment/websid","date_created":"2023-10-27T12:45:54.438Z","title":"WebSID Commodore 64","slug":"web-sid","author":"Igor Zinken","author_link":"https://www.igorski.nl/","description":null,"tags":["polyphonic","keyboard","midi","additive"],"archive_link":null,"archive":false,"content":null,"iframe":false,"cover":"932e0ae0-0048-4c6d-92bb-a4a17a8a4dd4","id":28,"sort":24,"clicks":155,"public":false,"is_new":false,"stats":[19]},{"url":"https://nicroto.github.io/viktor/","date_created":"2023-10-27T12:45:54.388Z","title":"Viktor NV-1","slug":"nv-1","author":"Nikolay Tsenkov ","author_link":"https://github.com/nicroto","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"ff3082ad-3c38-4880-ab23-35711c97ea71","id":27,"sort":25,"clicks":495,"public":false,"is_new":false,"stats":[20]},{"url":"https://virtualpiano.eu/","date_created":"2023-10-27T12:45:54.542Z","title":"VirtualPiano.eu","slug":"virtual-piano","author":"WebSyrup","author_link":"https://websyrup.net/","description":null,"tags":["midi","keyboard"],"archive_link":null,"archive":false,"content":"VirtualPiano.eu is the online synthesizer that allows you to play 128 musical instruments for free using your PC keyboard, the mouse or by connecting an external MIDI keyboard.\\n\\nYou can adjust Volume, Reverb, Loop and quality. Use the sustain and adjust the octaves, you can also select and set different channels including the one for the drums.\\n\\nCreate your own melodies, have fun playing or use VirtualPiano to learn how to play the Piano online on your own. ","iframe":true,"cover":"9a59eea5-c77f-483c-9443-1cd0727e6dcc","id":35,"sort":26,"clicks":282,"public":false,"is_new":false,"stats":[21]},{"url":"https://onlinesequencer.net/","date_created":"2023-10-27T12:45:54.565Z","title":"Online sequencer","slug":"online-sequencer","author":"Jacob Morgan and George Burdell","author_link":"https://github.com/buildist","description":null,"tags":["sequencer"],"archive_link":null,"archive":false,"content":"**Online Sequencer** is a web-based music sequencer that allows users to create music saved online, or on their computer. The piano roll is essential to the sequencer, which is on the left of the screen, with 72 notes from C2-B7 (labelled differently from a piano, C2 on the sequencer corresponds to C1 on a piano). In addition to several parameters which can be modified to change the sound of the music, additional functionality can be accessed via the console.\\n\\nUpon opening the site, users can begin composing and \\"drawing\\" notes on the grid, with the default instrument being Electric Piano. By default, a sequence's time signature is set to 4/4, and the grid spacing is set to 1/4 (16 notes per measure). The note lengths can be adjusted by dragging the dark tab on the right of each note, and precision can be afforded by changing the 'Grid' option to other note divisions. \\n\\n## History\\n\\nOnline Sequencer was created on January 2, 2013 by Jacob Morgan during a break at Georgia Tech.\\n\\nBeginning in the fall of 2013, accounts were available but were separate from the music portion of the site. They were only used in the forum and the website chat.\\n\\nIn 2015, accounts were linked to the main website and allowed songs to be saved under someone's username.\\n\\nThe World Update in 2018 added several new instruments and changed the landscape of sound design on the site. The \\"World Update Contest\\" was held for the update.\\n\\nStarting in late 2020, OS began to receive a variety of updates which vastly improved the functionality of the site. These updates introduced features like custom grid sizes, automation with markers, extra reverb options, detune, and distortion. In 2021, the \\"Space Race\\" contest was held, as to see who could work best with the changes.\\n\\nIn late 2022, newer, higher-quality instruments were added. Some of the instruments, such as Electric Piano, Grand Piano, Violin, and Cello got an updated sustained version, while the original versions still exist under the \\"classic\\" designation.\\n\\nCurrently, the 10-Year Anniversary Contest is being held.\\n\\n## Features\\n\\nWithin the editor, numerous user interface features allow for various changes which will impact the individual sequence on that page.\\n\\n### Basic features\\n\\nUI features include:\\n\\n- Tempo (10-999 BPM)\\n- Measure count or Time count (MM: SS.ssss)\\n- Time signature (2/4, 3/4, 4/4, 5/4)\\n- Grid size (This correlates to note divisions; 1/16, 1/12, 1/8, 1/6, 1/4, 1/3, 1/2)\\n- Auto Scroll (Fast, Smooth, Off; how the sequencer displays measures off-screen as a sequence plays)\\n- Add an Audio Track (This won't be saved to the sequence but will play alongside it for ease of transcription)\\n- Title input\\n- Draw, select, and erase\\n- Instrument dropdown, instrument options, and select instrument (selects all notes of the current instrument)\\n- Select all, Cut, Copy, and Paste\\n- Zoom options\\n- Export options\\n- Help\\n- Fullscreen\\n- Tooltips\\n\\n### Advanced features\\n\\nUsers can access more advanced features for use in their sequences by clicking the advanced tab on the instrument they wish to change. This menu contains options to change volume, panning, detune (-1200 to +1200), reverb, distortion, and an equalizer. This array lets users configure specific instruments to create specific sounds, and textures, or to accompany other instruments as a layer or development of the original sound.\\n\\nOS also allows for commands to be entered in the browser console to manipulate different options in specific ways, such as setting custom to detune values (0-infinity), custom grid sizes, note divisions, and sequence ID amongst other things. These options bring OS closer to that of classic Digital Audio Workstations (DAWs) but are still limited in terms of accessibility and availability.\\n\\n### Browser and device support\\n\\nOnline Sequencer supports Chrome and other Chromium-based browsers, such as Microsoft Edge, Opera, and Brave. Firefox is also supported, but often with limited functionality. Safari and Internet Explorer are not supported, due to engine issues.\\n\\nOther mobile browsers support sequence playback, but not editing. However, iOS users have the same problem with WebKit on macOS. However, unlike in macOS, all browsers (even Chromium-based browsers) use WebKit as the engine for iOS due to Apple prohibiting other engines for security reasons; iOS does not support Online Sequencer, other than chat and forums.\\n\\nThe website's user interface is formatted for proper use on desktops, but some pages such as the chat page, playlists, and forums should be formatted well on mobile devices. ","iframe":true,"cover":"ec08ba72-8157-4415-8b34-aea1fe686e09","id":36,"sort":27,"clicks":320,"public":false,"is_new":false,"stats":[22]},{"url":"https://sb.bitsnbites.eu/","date_created":"2023-10-27T12:45:54.625Z","title":"Sound Box","slug":"sound-box","author":"Bits'n'bites","author_link":"https://gitlab.com/mbitsnbites","description":null,"tags":["tracker"],"archive_link":null,"archive":false,"content":"https://github.com/mbitsnbites/soundbox","iframe":true,"cover":"f2f825f3-a084-408b-86d1-2b64cf822c3c","id":38,"sort":28,"clicks":209,"public":false,"is_new":false,"stats":[23]},{"url":"https://femurdesign.com/omni/","date_created":"2023-10-27T12:45:54.224Z","title":"Omni","slug":"omni","author":"Luke Phillips","author_link":"https://femurdesign.com/","description":null,"tags":["polyphonic","keyboard"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"fbb1364f-53cf-4f71-8f29-d7f572308e78","id":20,"sort":29,"clicks":210,"public":false,"is_new":false,"stats":[24]},{"url":"https://www.g200kg.com/docs/webmodular/","date_created":"2023-10-27T12:45:54.252Z","title":"Web Modular","slug":"web-modular","author":"g200kg","author_link":"https://www.g200kg.com/","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"48e0280c-f7ff-4308-bde3-973b7febe89c","id":21,"sort":30,"clicks":202,"public":false,"is_new":false,"stats":[25]},{"url":"https://errozero.co.uk/acid-machine/","date_created":"2023-10-27T12:45:54.333Z","title":"Acid Machine 2","slug":"acid-machine-2","author":"Errozero","author_link":"https://www.errozero.co.uk/","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"031eab3e-2f21-442a-8fdc-9769907824e0","id":25,"sort":31,"clicks":166,"public":false,"is_new":false,"stats":[26]},{"url":"https://apps.musedlab.org/groovepizza/","date_created":"2023-11-21T04:30:41.565Z","title":"Groove Pizza","slug":"groove-pizza","author":"NYU Music Experience Design Lab","author_link":"https://musedlab.org/groovepizza/","description":"Groove Pizza is a circular rhythm app for creative music making and learning! It’s also a playful tool for creating grooves using math concepts like shapes, angles and patterns","tags":["drums","sequencer","Educational"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"50d7bc15-edd5-4261-bc2a-1b173b5a1547","id":44,"sort":32,"clicks":91,"public":false,"is_new":false,"stats":[27]},{"url":"https://ojack.github.io/PIXELSYNTH/","date_created":"2023-10-27T12:45:54.286Z","title":"PixelSynth","slug":"pixel-synth","author":"Olivia Jack","author_link":"https://ojack.xyz/","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"77369c22-944c-4f6a-83b5-85e16fe43abc","id":24,"sort":33,"clicks":217,"public":false,"is_new":false,"stats":[28]},{"url":"https://www.multiplayerpiano.org/","date_created":"2023-11-26T08:06:18.875Z","title":"Multiplayer Piano","slug":"multiplayer-piano","author":"Brandon Lockaby","author_link":"https://github.com/Multiplayer-Piano","description":"Online piano, that can be played by any site visitor together in a virtual room or alone.","tags":["Piano","MIDI","Poly","Multiplayer"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"9c10771b-e38f-469f-b58b-c9e6bb91a072","id":49,"sort":34,"clicks":4,"public":false,"is_new":false,"stats":[29]},{"url":"https://webaudiodemos.appspot.com/midi-synth/index.html","date_created":"2023-10-27T12:45:53.963Z","title":"MIDI–driven Web Audio","slug":"midi-driven-web-audio","author":"Chris Wilson","author_link":"https://github.com/cwilso","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":false,"cover":"0005a0c9-c7e7-4922-a1e5-49d4326d2f77","id":6,"sort":35,"clicks":127,"public":false,"is_new":false,"stats":[30]},{"url":"https://samplestitch.com.s3-website-us-east-1.amazonaws.com/","date_created":"2023-10-27T12:45:54.185Z","title":"Samplestich","slug":"sample-stich","author":"Matt Daniels","author_link":"https://mdaniels.com","description":null,"tags":["samples","keyboard"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"89859f9f-0d45-44dc-93b6-98dfa2e7d799","id":18,"sort":36,"clicks":164,"public":false,"is_new":false,"stats":[31]},{"url":"https://www.audiotool.com/product/device/heisenberg/","date_created":"2023-10-27T12:45:53.983Z","title":"Meet the Heisenberg","slug":"meet-the-heisenberg","author":"AudioTool","author_link":"https://www.audiotool.com","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"a2397ce6-7712-40e5-b4e0-df95c7992662","id":8,"sort":37,"clicks":255,"public":false,"is_new":false,"stats":[32]},{"url":"https://www.gsn-lib.org/apps/cardboardsynth/index.html","date_created":"2023-10-27T12:45:54.002Z","title":"Cardboard Synth","slug":"cardboard-synth","author":" Thorsten Thormählen","author_link":"https://www.uni-marburg.de/en/fb12/research-groups/grafikmultimedia/thormae","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"29fe1fcc-ca85-41b3-ab1e-7f10770f2c1f","id":9,"sort":38,"clicks":184,"public":false,"is_new":false,"stats":[33]},{"url":"https://tanguysynth.com/","date_created":"2023-10-27T12:45:54.036Z","title":"Tanguy synth","slug":"tanguy-synth","author":"Luke Teaford","author_link":"https://github.com/luketeaford","description":null,"tags":["monophonic","additive","keyboard"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"5471a71e-7c5b-4ea6-aee0-1b394873c381","id":11,"sort":39,"clicks":117,"public":false,"is_new":false,"stats":[34]},{"url":"https://www.blokdust.com/","date_created":"2023-11-25T06:31:23.261Z","title":"BlokDust","slug":"blokdust","author":"Luke Twyman, Luke Phillips, Edward Silverton","author_link":"https://wvnl.xyz/","description":"BlokDust is a creative visual drag and drop music exploration tool. Developed in Brighton UK and released in 2016, BlokDust uses the Web Audio API and makes use of Tone.js as an audio framework.","tags":["creative","sequencer"],"archive_link":null,"archive":false,"content":"Luke Twyman - project concept, design & Ul.\\nwhitevinyldesign.com\\n@whitevinylUK\\nLuke Phillips - audio development & musical interaction.\\nfemurdesign.com\\n@lukephills\\nEdward Silverton - client & server architecture & core development.\\nedsilv.com\\n@edsilv","iframe":true,"cover":"7e5bcda8-f37a-46c0-91d9-0a6ea501a101","id":47,"sort":40,"clicks":19,"public":false,"is_new":false,"stats":[35]},{"url":"https://mod-synth.io/","date_created":"2023-10-27T12:45:54.052Z","title":"MOD synth","slug":"mod-synth","author":"André Venâncio ","author_link":"https://github.com/andrevenancio","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"31564bf3-fca9-41a4-b390-d78ccd848107","id":12,"sort":41,"clicks":146,"public":false,"is_new":false,"stats":[36]},{"url":"https://perso.numericable.fr/olivier.friker/synth/O3-synth%20V1.3.html","date_created":"2023-10-27T12:45:54.069Z","title":"OLIF SY1K","slug":"olif-sy-1-k","author":"Olivier Friker","author_link":null,"description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"3b9a5e11-3de3-46fe-9cdc-e1668b152f31","id":13,"sort":42,"clicks":145,"public":false,"is_new":false,"stats":[37]},{"url":"http://www.noisesculptor.com/","date_created":"2023-10-27T12:45:54.104Z","title":"Note Sculptor","slug":"note-sculptor","author":"Ruin Technology","author_link":null,"description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":false,"cover":"a01968d1-3f88-4522-9752-1c33d10d90d9","id":15,"sort":43,"clicks":129,"public":false,"is_new":false,"stats":[38]},{"url":"https://aikelab.net/websynthv2/","date_created":"2023-10-27T12:45:54.141Z","title":"WebAudioSynth V2","slug":"web-audio-synth-v2","author":"like","author_link":"https://github.com/aike/","description":null,"tags":null,"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"ac668fba-7226-43dc-a91f-bd21a31446e5","id":16,"sort":44,"clicks":305,"public":false,"is_new":false,"stats":[39]},{"url":"https://isleoftune.com/","date_created":"2023-11-25T06:22:15.184Z","title":"Isle of Tune","slug":"isleoftune","author":"Jim Hall","author_link":"https://twitter.com/isleoftune","description":"Draw an island, where everything plays music.","tags":["game","sequencer"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"6830c24f-c7bf-430f-abc1-3d7fbf5f2557","id":46,"sort":45,"clicks":15,"public":false,"is_new":false,"stats":[40]},{"url":"https://www.soundtrap.com/","date_created":"2023-10-27T12:45:54.155Z","title":"Sound Trap","slug":"sound-trap","author":"Soundtrap","author_link":"https://www.soundtrap.com/about","description":null,"tags":["daw"],"archive_link":null,"archive":false,"content":null,"iframe":false,"cover":"63ef832a-f7da-4536-851f-4964005a89f1","id":17,"sort":46,"clicks":124,"public":false,"is_new":false,"stats":[41]},{"url":"http://typedrummer.com/","date_created":"2023-11-25T06:34:10.166Z","title":"Type Drummer","slug":"typedrummer","author":"Kyle Stetz","author_link":"http://kylestetz.com/","description":"Type your drum loops","tags":["sequencer","drums","Keyboard"],"archive_link":null,"archive":false,"content":null,"iframe":true,"cover":"19454c82-7338-4144-9f1c-010c80a70a6e","id":48,"sort":47,"clicks":21,"public":false,"is_new":false,"stats":[42]}]`),ot={class:"text-center line-height-loose text-md"},rt={class:"mx-auto max-w-75ch intro md-text-lg"},lt={class:"p-2 flex flex-col mt-8"},ct={class:"text-4xl font-bold"},ut=p("div",{class:"text-lg"},"web synths",-1),ht={class:"p-2 flex flex-col mt-8"},dt={class:"text-4xl font-bold"},ft=p("div",{class:"text-lg"},"web musicians",-1),pt={__name:"AboutCount",setup(t){const e=P(),s=P(0),n=P(0),i=fe(s),a=fe(n),o=Le(e);return Pe(o,async r=>{if(r){s.value=ne.length;const c=await(await fetch("https://dbs.chromatone.center/flows/trigger/0c0e8d82-8e12-44a6-867a-57ddeec9d774",{type:"GET",mode:"cors",headers:{"Content-Type":"application/json"}})).json();n.value=c.count}}),(r,l)=>(b(),y("div",ot,[p("div",rt,[p("div",{class:"flex justify-center",ref_key:"counters",ref:e},[p("div",lt,[p("div",ct,L(T(i).toFixed()),1),ut]),p("div",ht,[p("div",dt,L(T(a).toFixed()||5e3)+"+",1),ft])],512)])]))}},mt={class:"flex flex-col text-center gap-4 bg-light-700 dark-bg-dark-200 dark-bg-opacity-20 p-4 rounded-lg shadow-lg mb-8"},gt=p("div",{class:"text-xl font-bold my-2"},"Suggest a new web-synth to the collection",-1),bt=["disabled"],yt={__name:"FormSynth",emits:["submitted"],setup(t,{emit:e}){const s=e,n=Ne({url:"",text:""}),i=/[(http(s) ?): \/\/(www\.)?a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)/;function a(l){return i.test(l)}const o=P();async function r(){var l,c,u;try{const h=await fetch("https://dbs.chromatone.center/flows/trigger/dc8ca96f-76e6-4cac-b26c-10751746eb89",{method:"POST",mode:"cors",cache:"no-cache",credentials:"same-origin",headers:{"Content-Type":"application/json"},redirect:"follow",referrerPolicy:"no-referrer",body:JSON.stringify(n)});o.value=await(h==null?void 0:h.json()),n.url="",n.text="",setTimeout(()=>{s("submitted")},2e3)}catch(h){console.error(h,(c=(l=h==null?void 0:h.errors)==null?void 0:l[0])==null?void 0:c.message,(u=h==null?void 0:h.response)==null?void 0:u.status)}}return(l,c)=>(b(),y("div",mt,[o.value?(b(),y(F,{key:1},[G("Thanks for your suggestion!")],64)):(b(),y(F,{key:0},[gt,X(p("input",{class:"py-2 px-4 rounded bg-light-200 dark-bg-dark-200",type:"text",placeholder:"https://new.synth.url/","onUpdate:modelValue":c[0]||(c[0]=u=>n.url=u)},null,512),[[ee,n.url]]),X(p("textarea",{class:"py-2 px-4 rounded bg-light-200 dark-bg-dark-200",oninput:"this.style.height = ''; this.style.height = this.scrollHeight +'px'",placeholder:"Describe the web-app and how do you use it musically","onUpdate:modelValue":c[1]||(c[1]=u=>n.text=u)},null,512),[[ee,n.text]]),p("button",{class:"text-xl py-2 px-4 rounded bg-dark-100 text-light-200 dark-bg-light-700 dark-text-dark-500 shadow-lg disabled-opacity-20",disabled:!a(n.url),onClick:c[2]||(c[2]=u=>r())},L(a(n.url)?"Submit":"Please provide a valid URL"),9,bt)],64))]))}},ke=t=>(We("data-v-f3c34bc1"),t=t(),Fe(),t),vt={key:0,class:"px-2 py-1 bg-light-800 dark-bg-dark-800 rounded-xl transition text-sm select-none absolute bottom-2 left-2 text-center z-200 flex items-center gap-1 opacity-70 hover-opacity-100",title:"Since 28 Oct 2023"},wt=ke(()=>p("div",{class:"i-la-eye"},null,-1)),_t={class:"p-0 mt-2px"},kt={class:"p-4 flex flex-col items-start justify-between gap-2",style:{flex:"10 0 200px"}},xt={class:"flex items-center gap-2 flex-0 w-full"},St={class:"transition text-xl select-none absolute top-4 left-4 text-center z-200"},Mt={class:"flex-auto"},Tt={class:"flex items-center gap-2"},It={class:"text-2xl font-bold"},At={key:0,class:"font-normal",title:"Archived locally by us"},Et=ke(()=>p("div",{class:"i-ph-archive-duotone"},null,-1)),$t=[Et],Ct={class:"flex-1"},Ot={key:1,class:"flex-1 flex items-end flex flex-wrap gap-2"},Lt=["href"],Pt={key:3,class:"text-xl p-2 absolute left-2 top-4 bg-yellow-600 rounded-xl shadow font-bold z-1000 transform -rotate-10"},Nt={__name:"SynthCard",props:{pos:{type:Number,default:0},sort:{type:Number,default:0},public:{type:Boolean,default:!1},title:{type:String,default:""},id:{type:Number,default:0},slug:{type:String,default:""},description:{type:String,default:""},cover:{type:String,default:""},url:{type:String,default:""},author:{type:String,default:""},author_link:{type:String,default:""},tags:{type:Array,default:()=>[]},archive:{type:Boolean,default:!1},archive_link:{type:String,default:""},iframe:{type:Boolean,default:null},clicks:{type:Number,default:0},stars:{type:Number,default:0},counter:{type:Number,default:0},is_new:{type:Boolean,default:null}},setup(t){const{isDark:e}=Be(),s=t,{isFormOpen:n,isAccessGranted:i}=_e(),{clicksCount:a,clickSynth:o}=Je(s.id);async function r(){!s.public&&!i.value?n.value=!n.value:(o(s.id),s.iframe?window.open(s.slug+"/","_self"):window.open(s.archive?s.archive_link:s.url,"_blank"))}return(l,c)=>{var d;const u=Qe,h=Re("ClientOnly");return b(),y("button",{class:"max-w-180 w-full flex flex-wrap items-stretch text-left relative bg-light-500 dark-bg-dark-300 -hover-translate-y-6px transition duration-200 hover-shadow-lg rounded-lg overflow-hidden relative border-1 border-dark-100 border-opacity-20 shadow-sm dark-border-light-800 dark-border-opacity-20",style:te({borderColor:T(q)[t.id]?T(e)?"hsl(50deg,80%,35%)":"hsl(40deg,90%,80%)":null}),onClick:r},[p("div",{class:"cover min-h-50 bg-cover bg-center filter transition",style:te([{backgroundImage:`url(/cover/${t.slug}.webp)`},{flex:"1 1 280px"}])},[T(a)||t.counter?(b(),y("div",vt,[wt,p("div",_t,L(T(a)||t.counter),1)])):k("",!0)],4),p("div",kt,[p("div",xt,[p("div",St,L(t.sort),1),p("div",Mt,[p("span",Tt,[p("div",It,L(t.title),1),t.archive?(b(),y("span",At,$t)):k("",!0)])]),z(h,null,{default:U(()=>[z(u,{class:"text-xl mr-2 absolute z-200",id:t.id,stars:t.stars},null,8,["id","stars"])]),_:1})]),t.author?(b(),se(ze(t.author_link?"a":"div"),{key:0,class:"p-0 text-md",href:t.author_link,target:"_blank"},{default:U(()=>[G("by "+L(t.author),1)]),_:1},8,["href"])):k("",!0),p("div",Ct,[De(l.$slots,"default",{},void 0,!0)]),((d=t.tags)==null?void 0:d.length)>0?(b(),y("div",Ot,[(b(!0),y(F,null,we(t.tags,g=>(b(),y("div",{class:"px-2 py-1 text-sm bg-light-800 dark-bg-dark-500 rounded-lg",key:g},L(g),1))),128))])):k("",!0),t.iframe?k("",!0):(b(),y("a",{key:2,class:"absolute bottom-4 right-4 i-la-external-link-square-alt text-lg opacity-40 transition transition hover-opacity-100",onClick:c[0]||(c[0]=je(()=>{},["stop"])),href:`/${t.slug}/`,title:"Opens in a new window"},null,8,Lt)),t.is_new?(b(),y("div",Pt,"NEW!")):k("",!0)])],4)}}},Bt=ve(Nt,[["__scopeId","data-v-f3c34bc1"]]);function O(t){return Array.isArray?Array.isArray(t):Me(t)==="[object Array]"}const Rt=1/0;function zt(t){if(typeof t=="string")return t;let e=t+"";return e=="0"&&1/t==-Rt?"-0":e}function Dt(t){return t==null?"":zt(t)}function $(t){return typeof t=="string"}function xe(t){return typeof t=="number"}function jt(t){return t===!0||t===!1||Wt(t)&&Me(t)=="[object Boolean]"}function Se(t){return typeof t=="object"}function Wt(t){return Se(t)&&t!==null}function x(t){return t!=null}function Q(t){return!t.trim().length}function Me(t){return t==null?t===void 0?"[object Undefined]":"[object Null]":Object.prototype.toString.call(t)}const Ft="Incorrect 'index' type",Zt=t=>`Invalid value for key ${t}`,Yt=t=>`Pattern length exceeds max of ${t}.`,Vt=t=>`Missing ${t} property in key`,qt=t=>`Property 'weight' in key '${t}' must be a positive integer`,pe=Object.prototype.hasOwnProperty;class Gt{constructor(e){this._keys=[],this._keyMap={};let s=0;e.forEach(n=>{let i=Te(n);this._keys.push(i),this._keyMap[i.id]=i,s+=i.weight}),this._keys.forEach(n=>{n.weight/=s})}get(e){return this._keyMap[e]}keys(){return this._keys}toJSON(){return JSON.stringify(this._keys)}}function Te(t){let e=null,s=null,n=null,i=1,a=null;if($(t)||O(t))n=t,e=me(t),s=ie(t);else{if(!pe.call(t,"name"))throw new Error(Vt("name"));const o=t.name;if(n=o,pe.call(t,"weight")&&(i=t.weight,i<=0))throw new Error(qt(o));e=me(o),s=ie(o),a=t.getFn}return{path:e,id:s,weight:i,src:n,getFn:a}}function me(t){return O(t)?t:t.split(".")}function ie(t){return O(t)?t.join("."):t}function Ut(t,e){let s=[],n=!1;const i=(a,o,r)=>{if(x(a))if(!o[r])s.push(a);else{let l=o[r];const c=a[l];if(!x(c))return;if(r===o.length-1&&($(c)||xe(c)||jt(c)))s.push(Dt(c));else if(O(c)){n=!0;for(let u=0,h=c.length;ut.score===e.score?t.idx{this._keysMap[s.id]=n})}create(){this.isCreated||!this.docs.length||(this.isCreated=!0,$(this.docs[0])?this.docs.forEach((e,s)=>{this._addString(e,s)}):this.docs.forEach((e,s)=>{this._addObject(e,s)}),this.norm.clear())}add(e){const s=this.size();$(e)?this._addString(e,s):this._addObject(e,s)}removeAt(e){this.records.splice(e,1);for(let s=e,n=this.size();s{let o=i.getFn?i.getFn(e):this.getFn(e,i.path);if(x(o)){if(O(o)){let r=[];const l=[{nestedArrIndex:-1,value:o}];for(;l.length;){const{nestedArrIndex:c,value:u}=l.pop();if(x(u))if($(u)&&!Q(u)){let h={v:u,i:c,n:this.norm.get(u)};r.push(h)}else O(u)&&u.forEach((h,d)=>{l.push({nestedArrIndex:d,value:h})})}n.$[a]=r}else if($(o)&&!Q(o)){let r={v:o,n:this.norm.get(o)};n.$[a]=r}}}),this.records.push(n)}toJSON(){return{keys:this.keys,records:this.records}}}function Ie(t,e,{getFn:s=f.getFn,fieldNormWeight:n=f.fieldNormWeight}={}){const i=new ue({getFn:s,fieldNormWeight:n});return i.setKeys(t.map(Te)),i.setSources(e),i.create(),i}function ts(t,{getFn:e=f.getFn,fieldNormWeight:s=f.fieldNormWeight}={}){const{keys:n,records:i}=t,a=new ue({getFn:e,fieldNormWeight:s});return a.setKeys(n),a.setIndexRecords(i),a}function V(t,{errors:e=0,currentLocation:s=0,expectedLocation:n=0,distance:i=f.distance,ignoreLocation:a=f.ignoreLocation}={}){const o=e/t.length;if(a)return o;const r=Math.abs(n-s);return i?o+r/i:r?1:o}function ss(t=[],e=f.minMatchCharLength){let s=[],n=-1,i=-1,a=0;for(let o=t.length;a=e&&s.push([n,i]),n=-1)}return t[a-1]&&a-n>=e&&s.push([n,a-1]),s}const R=32;function ns(t,e,s,{location:n=f.location,distance:i=f.distance,threshold:a=f.threshold,findAllMatches:o=f.findAllMatches,minMatchCharLength:r=f.minMatchCharLength,includeMatches:l=f.includeMatches,ignoreLocation:c=f.ignoreLocation}={}){if(e.length>R)throw new Error(Yt(R));const u=e.length,h=t.length,d=Math.max(0,Math.min(n,h));let g=a,v=d;const m=r>1||l,S=m?Array(h):[];let M;for(;(M=t.indexOf(e,v))>-1;){let _=V(e,{currentLocation:M,expectedLocation:d,distance:i,ignoreLocation:c});if(g=Math.min(_,g),v=M+u,m){let I=0;for(;I=he;A-=1){let Y=A-1,de=s[t.charAt(Y)];if(m&&(S[Y]=+!!de),j[A]=(j[A+1]<<1|1)&de,_&&(j[A]|=(C[A+1]|C[A])<<1|1|C[A+1]),j[A]&Z&&(E=V(e,{errors:_,currentLocation:Y,expectedLocation:d,distance:i,ignoreLocation:c}),E<=g)){if(g=E,v=Y,v<=d)break;he=Math.max(1,2*d-v)}}if(V(e,{errors:_+1,currentLocation:d,expectedLocation:d,distance:i,ignoreLocation:c})>g)break;C=j}const D={isMatch:v>=0,score:Math.max(.001,E)};if(m){const _=ss(S,r);_.length?l&&(D.indices=_):D.isMatch=!1}return D}function is(t){let e={};for(let s=0,n=t.length;s{this.chunks.push({pattern:d,alphabet:is(d),startIndex:g})},h=this.pattern.length;if(h>R){let d=0;const g=h%R,v=h-g;for(;d{const{isMatch:M,score:C,indices:E}=ns(e,v,m,{location:i+S,distance:a,threshold:o,findAllMatches:r,minMatchCharLength:l,includeMatches:n,ignoreLocation:c});M&&(d=!0),h+=C,M&&E&&(u=[...u,...E])});let g={isMatch:d,score:d?h/this.chunks.length:1};return d&&n&&(g.indices=u),g}}class N{constructor(e){this.pattern=e}static isMultiMatch(e){return ge(e,this.multiRegex)}static isSingleMatch(e){return ge(e,this.singleRegex)}search(){}}function ge(t,e){const s=t.match(e);return s?s[1]:null}class as extends N{constructor(e){super(e)}static get type(){return"exact"}static get multiRegex(){return/^="(.*)"$/}static get singleRegex(){return/^=(.*)$/}search(e){const s=e===this.pattern;return{isMatch:s,score:s?0:1,indices:[0,this.pattern.length-1]}}}class os extends N{constructor(e){super(e)}static get type(){return"inverse-exact"}static get multiRegex(){return/^!"(.*)"$/}static get singleRegex(){return/^!(.*)$/}search(e){const n=e.indexOf(this.pattern)===-1;return{isMatch:n,score:n?0:1,indices:[0,e.length-1]}}}class rs extends N{constructor(e){super(e)}static get type(){return"prefix-exact"}static get multiRegex(){return/^\^"(.*)"$/}static get singleRegex(){return/^\^(.*)$/}search(e){const s=e.startsWith(this.pattern);return{isMatch:s,score:s?0:1,indices:[0,this.pattern.length-1]}}}class ls extends N{constructor(e){super(e)}static get type(){return"inverse-prefix-exact"}static get multiRegex(){return/^!\^"(.*)"$/}static get singleRegex(){return/^!\^(.*)$/}search(e){const s=!e.startsWith(this.pattern);return{isMatch:s,score:s?0:1,indices:[0,e.length-1]}}}class cs extends N{constructor(e){super(e)}static get type(){return"suffix-exact"}static get multiRegex(){return/^"(.*)"\$$/}static get singleRegex(){return/^(.*)\$$/}search(e){const s=e.endsWith(this.pattern);return{isMatch:s,score:s?0:1,indices:[e.length-this.pattern.length,e.length-1]}}}class us extends N{constructor(e){super(e)}static get type(){return"inverse-suffix-exact"}static get multiRegex(){return/^!"(.*)"\$$/}static get singleRegex(){return/^!(.*)\$$/}search(e){const s=!e.endsWith(this.pattern);return{isMatch:s,score:s?0:1,indices:[0,e.length-1]}}}class Ee extends N{constructor(e,{location:s=f.location,threshold:n=f.threshold,distance:i=f.distance,includeMatches:a=f.includeMatches,findAllMatches:o=f.findAllMatches,minMatchCharLength:r=f.minMatchCharLength,isCaseSensitive:l=f.isCaseSensitive,ignoreLocation:c=f.ignoreLocation}={}){super(e),this._bitapSearch=new Ae(e,{location:s,threshold:n,distance:i,includeMatches:a,findAllMatches:o,minMatchCharLength:r,isCaseSensitive:l,ignoreLocation:c})}static get type(){return"fuzzy"}static get multiRegex(){return/^"(.*)"$/}static get singleRegex(){return/^(.*)$/}search(e){return this._bitapSearch.searchIn(e)}}class $e extends N{constructor(e){super(e)}static get type(){return"include"}static get multiRegex(){return/^'"(.*)"$/}static get singleRegex(){return/^'(.*)$/}search(e){let s=0,n;const i=[],a=this.pattern.length;for(;(n=e.indexOf(this.pattern,s))>-1;)s=n+a,i.push([n,s-1]);const o=!!i.length;return{isMatch:o,score:o?0:1,indices:i}}}const ae=[as,$e,rs,ls,us,cs,os,Ee],be=ae.length,hs=/ +(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)/,ds="|";function fs(t,e={}){return t.split(ds).map(s=>{let n=s.trim().split(hs).filter(a=>a&&!!a.trim()),i=[];for(let a=0,o=n.length;a!!(t[K.AND]||t[K.OR]),bs=t=>!!t[le.PATH],ys=t=>!O(t)&&Se(t)&&!ce(t),ye=t=>({[K.AND]:Object.keys(t).map(e=>({[e]:t[e]}))});function Ce(t,e,{auto:s=!0}={}){const n=i=>{let a=Object.keys(i);const o=bs(i);if(!o&&a.length>1&&!ce(i))return n(ye(i));if(ys(i)){const l=o?i[le.PATH]:a[0],c=o?i[le.PATTERN]:i[l];if(!$(c))throw new Error(Zt(l));const u={keyId:ie(l),pattern:c};return s&&(u.searcher=re(c,e)),u}let r={children:[],operator:a[0]};return a.forEach(l=>{const c=i[l];O(c)&&c.forEach(u=>{r.children.push(n(u))})}),r};return ce(t)||(t=ye(t)),n(t)}function vs(t,{ignoreFieldNorm:e=f.ignoreFieldNorm}){t.forEach(s=>{let n=1;s.matches.forEach(({key:i,norm:a,score:o})=>{const r=i?i.weight:null;n*=Math.pow(o===0&&r?Number.EPSILON:o,(r||1)*(e?1:a))}),s.score=n})}function ws(t,e){const s=t.matches;e.matches=[],x(s)&&s.forEach(n=>{if(!x(n.indices)||!n.indices.length)return;const{indices:i,value:a}=n;let o={indices:i,value:a};n.key&&(o.key=n.key.src),n.idx>-1&&(o.refIndex=n.idx),e.matches.push(o)})}function _s(t,e){e.score=t.score}function ks(t,e,{includeMatches:s=f.includeMatches,includeScore:n=f.includeScore}={}){const i=[];return s&&i.push(ws),n&&i.push(_s),t.map(a=>{const{idx:o}=a,r={item:e[o],refIndex:o};return i.length&&i.forEach(l=>{l(a,r)}),r})}class W{constructor(e,s={},n){this.options={...f,...s},this.options.useExtendedSearch,this._keyStore=new Gt(this.options.keys),this.setCollection(e,n)}setCollection(e,s){if(this._docs=e,s&&!(s instanceof ue))throw new Error(Ft);this._myIndex=s||Ie(this.options.keys,this._docs,{getFn:this.options.getFn,fieldNormWeight:this.options.fieldNormWeight})}add(e){x(e)&&(this._docs.push(e),this._myIndex.add(e))}remove(e=()=>!1){const s=[];for(let n=0,i=this._docs.length;n-1&&(l=l.slice(0,s)),ks(l,this._docs,{includeMatches:n,includeScore:i})}_searchStringList(e){const s=re(e,this.options),{records:n}=this._myIndex,i=[];return n.forEach(({v:a,i:o,n:r})=>{if(!x(a))return;const{isMatch:l,score:c,indices:u}=s.searchIn(a);l&&i.push({item:a,idx:o,matches:[{score:c,value:a,norm:r,indices:u}]})}),i}_searchLogical(e){const s=Ce(e,this.options),n=(r,l,c)=>{if(!r.children){const{keyId:h,searcher:d}=r,g=this._findMatches({key:this._keyStore.get(h),value:this._myIndex.getValueForItemAtKeyId(l,h),searcher:d});return g&&g.length?[{idx:c,item:l,matches:g}]:[]}const u=[];for(let h=0,d=r.children.length;h{if(x(r)){let c=n(s,r,l);c.length&&(a[l]||(a[l]={idx:l,item:r,matches:[]},o.push(a[l])),c.forEach(({matches:u})=>{a[l].matches.push(...u)}))}}),o}_searchObjectList(e){const s=re(e,this.options),{keys:n,records:i}=this._myIndex,a=[];return i.forEach(({$:o,i:r})=>{if(!x(o))return;let l=[];n.forEach((c,u)=>{l.push(...this._findMatches({key:c,value:o[u],searcher:s}))}),l.length&&a.push({idx:r,item:o,matches:l})}),a}_findMatches({key:e,value:s,searcher:n}){if(!x(s))return[];let i=[];if(O(s))s.forEach(({v:a,i:o,n:r})=>{if(!x(a))return;const{isMatch:l,score:c,indices:u}=n.searchIn(a);l&&i.push({score:c,key:e,value:a,idx:o,norm:r,indices:u})});else{const{v:a,n:o}=s,{isMatch:r,score:l,indices:c}=n.searchIn(a);r&&i.push({score:l,key:e,value:a,norm:o,indices:c})}return i}}W.version="7.0.0";W.createIndex=Ie;W.parseIndex=ts;W.config=f;W.parseQuery=Ce;gs(ms);const xs={class:"flex flex-col items-center mb-2 px-8"},Ss={class:"w-full max-w-110 flex items-center relative my-4 gap-2"},Ms=["placeholder"],Ts=p("div",{class:"i-la-search absolute left-2 text-xl opacity-40"},null,-1),Is=["title"],As={key:0,class:"i-la-star-solid"},Es={key:1,class:"i-la-star"},$s={class:"flex flex-col items-center gap-8 p-2 max-w-160 mx-auto mb-12"},Cs=["index"],Os={class:"p-2",key:"nnn"},Ls={key:0,class:"animate-pulse text-center"},Ps={__name:"SynthList",setup(t){const{isAccessGranted:e}=_e(),s=P(ne),n=new W(ne,{includeScore:!0,ignoreLocation:!0,shouldSort:!0,keys:["title","slug","author"]}),i=Ze("fav-filter",!1),a=P(""),o=P(!1),r=J(()=>n.search(a.value)),l=J(()=>r.value.filter(h=>h.score<.2).sort((h,d)=>h.score>d.score?1:0).map(h=>h.item.slug)),c=J(()=>s.value.filter(h=>a.value?l.value.includes(h.slug):i.value?q.value[h.id]:!0)),u=P([]);return Ye(async()=>{u.value=await Xe("synths",{fields:["id",{stats:["views","stars"]}]})}),Ve(q,h=>{Object.values(h).filter(Boolean).length==0&&(i.value=!1)},{deep:!0,immediate:!0}),(h,d)=>{const g=Bt,v=yt;return b(),y(F,null,[p("div",xs,[p("div",Ss,[X(p("input",{class:"w-full focus text-xl py-2 pl-9 bg-light-50 bg-opacity-100 shadow-inner border-1 border-dark-100 border-opacity-10 rounded-lg dark-bg-dark-200 outline-none focus-border-opacity-90",placeholder:"Type to search...","onUpdate:modelValue":d[0]||(d[0]=m=>a.value=m)},null,8,Ms),[[ee,a.value]]),Ts,a.value?(b(),y("div",{key:0,class:"i-la-times absolute right-2 text-xl opacity-40 hover-opacity-80 transition cursor-pointer",onClick:d[1]||(d[1]=m=>a.value="")})):k("",!0),Object.values(T(q)).filter(Boolean).length>0&&!a.value?(b(),y("button",{key:1,class:"transition p-2 shadow dark-bg-dark-200 dark-hover-bg-dark-100 bg-light-300 hover-bg-light-100 rounded-lg flex items-center gap-2 text-xl text-yellow",title:T(i)?"Only favourites are shown":"Show only favourites",onClick:d[2]||(d[2]=m=>i.value=!T(i))},[z(qe,{name:"fade"},{default:U(()=>[T(i)?(b(),y("div",As)):(b(),y("div",Es))]),_:1})],8,Is)):k("",!0),a.value?k("",!0):(b(),y("button",{key:2,class:"transition p-2 shadow dark-bg-dark-200 dark-hover-bg-dark-100 bg-light-300 hover-bg-light-100 rounded-lg flex items-center gap-2 text-xl",title:"Suggest a new link to the collection",onClick:d[3]||(d[3]=m=>o.value=!o.value)},[p("div",{class:Ge(["i-la-plus transform transition",{"rotate-45":o.value}])},null,2)]))])]),p("div",$s,[o.value?k("",!0):(b(),se(Ke,{key:0,name:"fade"},{default:U(()=>[(b(!0),y(F,null,we(c.value,(m,S)=>{var M,C,E,B,Z,D,_,I;return b(),y("div",{class:"flex w-full sticky",style:te([{top:`${80+S*4}px`,zIndex:S+10},{flex:"1 1 240px"}]),key:m.id,index:S},[(b(),se(g,Ue({pos:S,style:{filter:!m.public&&!T(e)?"contrast(70%) blur(2px) opacity(80%)":""},key:m.id},m,{counter:(B=(E=(C=(M=u.value)==null?void 0:M.find(w=>(w==null?void 0:w.id)==(m==null?void 0:m.id)))==null?void 0:C.stats)==null?void 0:E[0])==null?void 0:B.views,stars:(I=(_=(D=(Z=u.value)==null?void 0:Z.find(w=>(w==null?void 0:w.id)==(m==null?void 0:m.id)))==null?void 0:D.stats)==null?void 0:_[0])==null?void 0:I.stars}),null,16,["pos","style","counter","stars"]))],12,Cs)}),128))]),_:1})),c.value.length==0||o.value?(b(),y("div",Os,[o.value?k("",!0):(b(),y("div",Ls,"We don't know such a web-app yet. ")),z(v,{class:"max-w-140 mx-auto mt-6",onSubmitted:d[4]||(d[4]=m=>o.value=!1)})])):k("",!0)])],64)}}},Ks=JSON.parse('{"title":"Web synths","description":"Web synthesizers to play with MIDI controllers","frontmatter":{"title":"Web synths","description":"Web synthesizers to play with MIDI controllers","date":"2023-06-22T00:00:00.000Z","layout":"home"},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":1711550395000}'),Ns={name:"index.md"},Bs=p("h1",{class:"text-center text-2xl sm-text-3xl font-bold mt-8",style:{padding:"0.1rem 1rem"}},"Online synthesizers and web piano apps",-1),Rs=p("h2",{class:"text-xl sm-text-2xl text-center my-2",style:{padding:"0 1rem"}},"Curated collection of free music creation resources",-1),zs={class:"px-4 text-lg text-center mb-8 max-w-150 mx-auto"},Ds=p("a",{class:"font-bold",href:"https://chromatone.center",target:"_blank",rel:"noopener"}," Chromatone",-1),js=p("a",{class:"font-bold",href:"https://playtronica.com",target:"_blank",rel:"noopener"}," Playtronica",-1),Ws=p("h3",{class:"font-bold text-xl"},"Welcome to the community of web-based musicians!",-1),Fs=p("p",null,[p("a",{target:"_blank",href:"https://chromatone.center/"},[p("img",{src:He,class:"max-w-16 mx-auto"})])],-1);function Zs(t,e,s,n,i,a){const o=Ps,r=pt,l=at;return b(),y("div",null,[Bs,Rs,z(o),p("div",zs,[Ds,G(" is an open source visual music language for education, research and performance. We develop a new universal way to communicate music. "),js,G(" is a digital playground that explores the possibilities of the material world through technology, creating gadgets that make the world musical. Together we share our passion for online music instruments. "),z(r),Ws,Fs,z(l)])])}const Hs=ve(Ns,[["render",Zs]]);export{Ks as __pageData,Hs as default}; diff --git a/assets/isleoftune_index.md.DYO1xc9U.js b/assets/isleoftune_index.md.CjvOwWsY.js similarity index 88% rename from assets/isleoftune_index.md.DYO1xc9U.js rename to assets/isleoftune_index.md.CjvOwWsY.js index 38649a65..06d9bb2f 100644 --- a/assets/isleoftune_index.md.DYO1xc9U.js +++ b/assets/isleoftune_index.md.CjvOwWsY.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as r,y as n,R as i,S as o,f as l,b as c}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://isleoftune.com/","date_created":"2023-11-25T06:22:15.184Z","title":"Isle of Tune","slug":"isleoftune","author":"Jim Hall","author_link":"https://twitter.com/isleoftune","description":"Draw an island, where everything plays music.","tags":["game","sequencer"],"archive_link":null,"archive":false,"iframe":true,"cover":"6830c24f-c7bf-430f-abc1-3d7fbf5f2557","id":46,"sort":45,"clicks":15,"public":false,"is_new":false,"stats":[40]},"relativePath":"isleoftune/index.md","filePath":"isleoftune/index.md","lastUpdated":0}'),f={name:"isleoftune/index.md"},b=Object.assign(f,{setup(u){const{params:e,frontmatter:m}=s();return(p,d)=>{const t=a;return c(),r("div",null,[n(t,i(o(l(e))),null,16)])}}});export{y as __pageData,b as default}; +import{_ as a}from"./chunks/SynthPage.B19zwNJN.js";import{s,d as r,y as n,R as i,S as o,f as l,b as c}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://isleoftune.com/","date_created":"2023-11-25T06:22:15.184Z","title":"Isle of Tune","slug":"isleoftune","author":"Jim Hall","author_link":"https://twitter.com/isleoftune","description":"Draw an island, where everything plays music.","tags":["game","sequencer"],"archive_link":null,"archive":false,"iframe":true,"cover":"6830c24f-c7bf-430f-abc1-3d7fbf5f2557","id":46,"sort":46,"clicks":15,"public":false,"is_new":false,"stats":[40]},"relativePath":"isleoftune/index.md","filePath":"isleoftune/index.md","lastUpdated":0}'),f={name:"isleoftune/index.md"},b=Object.assign(f,{setup(u){const{params:e,frontmatter:m}=s();return(p,d)=>{const t=a;return c(),r("div",null,[n(t,i(o(l(e))),null,16)])}}});export{y as __pageData,b as default}; diff --git a/assets/isleoftune_index.md.DYO1xc9U.lean.js b/assets/isleoftune_index.md.CjvOwWsY.lean.js similarity index 88% rename from assets/isleoftune_index.md.DYO1xc9U.lean.js rename to assets/isleoftune_index.md.CjvOwWsY.lean.js index 38649a65..06d9bb2f 100644 --- a/assets/isleoftune_index.md.DYO1xc9U.lean.js +++ b/assets/isleoftune_index.md.CjvOwWsY.lean.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as r,y as n,R as i,S as o,f as l,b as c}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://isleoftune.com/","date_created":"2023-11-25T06:22:15.184Z","title":"Isle of Tune","slug":"isleoftune","author":"Jim Hall","author_link":"https://twitter.com/isleoftune","description":"Draw an island, where everything plays music.","tags":["game","sequencer"],"archive_link":null,"archive":false,"iframe":true,"cover":"6830c24f-c7bf-430f-abc1-3d7fbf5f2557","id":46,"sort":45,"clicks":15,"public":false,"is_new":false,"stats":[40]},"relativePath":"isleoftune/index.md","filePath":"isleoftune/index.md","lastUpdated":0}'),f={name:"isleoftune/index.md"},b=Object.assign(f,{setup(u){const{params:e,frontmatter:m}=s();return(p,d)=>{const t=a;return c(),r("div",null,[n(t,i(o(l(e))),null,16)])}}});export{y as __pageData,b as default}; +import{_ as a}from"./chunks/SynthPage.B19zwNJN.js";import{s,d as r,y as n,R as i,S as o,f as l,b as c}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://isleoftune.com/","date_created":"2023-11-25T06:22:15.184Z","title":"Isle of Tune","slug":"isleoftune","author":"Jim Hall","author_link":"https://twitter.com/isleoftune","description":"Draw an island, where everything plays music.","tags":["game","sequencer"],"archive_link":null,"archive":false,"iframe":true,"cover":"6830c24f-c7bf-430f-abc1-3d7fbf5f2557","id":46,"sort":46,"clicks":15,"public":false,"is_new":false,"stats":[40]},"relativePath":"isleoftune/index.md","filePath":"isleoftune/index.md","lastUpdated":0}'),f={name:"isleoftune/index.md"},b=Object.assign(f,{setup(u){const{params:e,frontmatter:m}=s();return(p,d)=>{const t=a;return c(),r("div",null,[n(t,i(o(l(e))),null,16)])}}});export{y as __pageData,b as default}; diff --git a/assets/juno-106_index.md.C-HewMMo.js b/assets/juno-106_index.md.Cei-yIZ_.js similarity index 93% rename from assets/juno-106_index.md.C-HewMMo.js rename to assets/juno-106_index.md.Cei-yIZ_.js index a0f2473c..0b0f93e2 100644 --- a/assets/juno-106_index.md.C-HewMMo.js +++ b/assets/juno-106_index.md.Cei-yIZ_.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s as r,d as s,y as n,R as o,S as i,f as c,b as l}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const v=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://juno-106.js.org/","date_created":"2023-10-27T12:45:54.085Z","title":"Juno-106","slug":"juno-106","author":"Steve Goldberg ","author_link":"https://github.com/stevengoldberg","description":null,"tags":["fm","midi"],"archive_link":null,"archive":false,"iframe":true,"cover":"b54cfce7-af2f-4e03-a5b3-81fc853d2cc8","id":14,"sort":3,"clicks":5014,"public":true,"is_new":false,"stats":[3]},"relativePath":"juno-106/index.md","filePath":"juno-106/index.md","lastUpdated":0}'),u={name:"juno-106/index.md"},j=Object.assign(u,{setup(d){const{params:e,frontmatter:p}=r();return(m,_)=>{const t=a;return l(),s("div",null,[n(t,o(i(c(e))),null,16)])}}});export{v as __pageData,j as default}; +import{_ as a}from"./chunks/SynthPage.B19zwNJN.js";import{s as r,d as s,y as n,R as o,S as i,f as c,b as l}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const v=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://juno-106.js.org/","date_created":"2023-10-27T12:45:54.085Z","title":"Juno-106","slug":"juno-106","author":"Steve Goldberg ","author_link":"https://github.com/stevengoldberg","description":null,"tags":["fm","midi"],"archive_link":null,"archive":false,"iframe":true,"cover":"b54cfce7-af2f-4e03-a5b3-81fc853d2cc8","id":14,"sort":3,"clicks":5014,"public":true,"is_new":false,"stats":[3]},"relativePath":"juno-106/index.md","filePath":"juno-106/index.md","lastUpdated":0}'),u={name:"juno-106/index.md"},j=Object.assign(u,{setup(d){const{params:e,frontmatter:p}=r();return(m,_)=>{const t=a;return l(),s("div",null,[n(t,o(i(c(e))),null,16)])}}});export{v as __pageData,j as default}; diff --git a/assets/juno-106_index.md.C-HewMMo.lean.js b/assets/juno-106_index.md.Cei-yIZ_.lean.js similarity index 93% rename from assets/juno-106_index.md.C-HewMMo.lean.js rename to assets/juno-106_index.md.Cei-yIZ_.lean.js index a0f2473c..0b0f93e2 100644 --- a/assets/juno-106_index.md.C-HewMMo.lean.js +++ b/assets/juno-106_index.md.Cei-yIZ_.lean.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s as r,d as s,y as n,R as o,S as i,f as c,b as l}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const v=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://juno-106.js.org/","date_created":"2023-10-27T12:45:54.085Z","title":"Juno-106","slug":"juno-106","author":"Steve Goldberg ","author_link":"https://github.com/stevengoldberg","description":null,"tags":["fm","midi"],"archive_link":null,"archive":false,"iframe":true,"cover":"b54cfce7-af2f-4e03-a5b3-81fc853d2cc8","id":14,"sort":3,"clicks":5014,"public":true,"is_new":false,"stats":[3]},"relativePath":"juno-106/index.md","filePath":"juno-106/index.md","lastUpdated":0}'),u={name:"juno-106/index.md"},j=Object.assign(u,{setup(d){const{params:e,frontmatter:p}=r();return(m,_)=>{const t=a;return l(),s("div",null,[n(t,o(i(c(e))),null,16)])}}});export{v as __pageData,j as default}; +import{_ as a}from"./chunks/SynthPage.B19zwNJN.js";import{s as r,d as s,y as n,R as o,S as i,f as c,b as l}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const v=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://juno-106.js.org/","date_created":"2023-10-27T12:45:54.085Z","title":"Juno-106","slug":"juno-106","author":"Steve Goldberg ","author_link":"https://github.com/stevengoldberg","description":null,"tags":["fm","midi"],"archive_link":null,"archive":false,"iframe":true,"cover":"b54cfce7-af2f-4e03-a5b3-81fc853d2cc8","id":14,"sort":3,"clicks":5014,"public":true,"is_new":false,"stats":[3]},"relativePath":"juno-106/index.md","filePath":"juno-106/index.md","lastUpdated":0}'),u={name:"juno-106/index.md"},j=Object.assign(u,{setup(d){const{params:e,frontmatter:p}=r();return(m,_)=>{const t=a;return l(),s("div",null,[n(t,o(i(c(e))),null,16)])}}});export{v as __pageData,j as default}; diff --git a/assets/meet-the-heisenberg_index.md.lkmORynb.js b/assets/meet-the-heisenberg_index.md.COSkv5m_.js similarity index 88% rename from assets/meet-the-heisenberg_index.md.lkmORynb.js rename to assets/meet-the-heisenberg_index.md.COSkv5m_.js index 2daba085..c3cce534 100644 --- a/assets/meet-the-heisenberg_index.md.lkmORynb.js +++ b/assets/meet-the-heisenberg_index.md.COSkv5m_.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as r,y as o,R as i,S as n,f as c,b as l}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const v=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.audiotool.com/product/device/heisenberg/","date_created":"2023-10-27T12:45:53.983Z","title":"Meet the Heisenberg","slug":"meet-the-heisenberg","author":"AudioTool","author_link":"https://www.audiotool.com","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"a2397ce6-7712-40e5-b4e0-df95c7992662","id":8,"sort":37,"clicks":255,"public":false,"is_new":false,"stats":[32]},"relativePath":"meet-the-heisenberg/index.md","filePath":"meet-the-heisenberg/index.md","lastUpdated":0}'),d={name:"meet-the-heisenberg/index.md"},w=Object.assign(d,{setup(m){const{params:e,frontmatter:p}=s();return(u,h)=>{const t=a;return l(),r("div",null,[o(t,i(n(c(e))),null,16)])}}});export{v as __pageData,w as default}; +import{_ as a}from"./chunks/SynthPage.B19zwNJN.js";import{s,d as r,y as o,R as i,S as n,f as c,b as l}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const v=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.audiotool.com/product/device/heisenberg/","date_created":"2023-10-27T12:45:53.983Z","title":"Meet the Heisenberg","slug":"meet-the-heisenberg","author":"AudioTool","author_link":"https://www.audiotool.com","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"a2397ce6-7712-40e5-b4e0-df95c7992662","id":8,"sort":38,"clicks":255,"public":false,"is_new":false,"stats":[32]},"relativePath":"meet-the-heisenberg/index.md","filePath":"meet-the-heisenberg/index.md","lastUpdated":0}'),d={name:"meet-the-heisenberg/index.md"},w=Object.assign(d,{setup(m){const{params:e,frontmatter:p}=s();return(u,h)=>{const t=a;return l(),r("div",null,[o(t,i(n(c(e))),null,16)])}}});export{v as __pageData,w as default}; diff --git a/assets/meet-the-heisenberg_index.md.lkmORynb.lean.js b/assets/meet-the-heisenberg_index.md.COSkv5m_.lean.js similarity index 88% rename from assets/meet-the-heisenberg_index.md.lkmORynb.lean.js rename to assets/meet-the-heisenberg_index.md.COSkv5m_.lean.js index 2daba085..c3cce534 100644 --- a/assets/meet-the-heisenberg_index.md.lkmORynb.lean.js +++ b/assets/meet-the-heisenberg_index.md.COSkv5m_.lean.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as r,y as o,R as i,S as n,f as c,b as l}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const v=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.audiotool.com/product/device/heisenberg/","date_created":"2023-10-27T12:45:53.983Z","title":"Meet the Heisenberg","slug":"meet-the-heisenberg","author":"AudioTool","author_link":"https://www.audiotool.com","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"a2397ce6-7712-40e5-b4e0-df95c7992662","id":8,"sort":37,"clicks":255,"public":false,"is_new":false,"stats":[32]},"relativePath":"meet-the-heisenberg/index.md","filePath":"meet-the-heisenberg/index.md","lastUpdated":0}'),d={name:"meet-the-heisenberg/index.md"},w=Object.assign(d,{setup(m){const{params:e,frontmatter:p}=s();return(u,h)=>{const t=a;return l(),r("div",null,[o(t,i(n(c(e))),null,16)])}}});export{v as __pageData,w as default}; +import{_ as a}from"./chunks/SynthPage.B19zwNJN.js";import{s,d as r,y as o,R as i,S as n,f as c,b as l}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const v=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.audiotool.com/product/device/heisenberg/","date_created":"2023-10-27T12:45:53.983Z","title":"Meet the Heisenberg","slug":"meet-the-heisenberg","author":"AudioTool","author_link":"https://www.audiotool.com","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"a2397ce6-7712-40e5-b4e0-df95c7992662","id":8,"sort":38,"clicks":255,"public":false,"is_new":false,"stats":[32]},"relativePath":"meet-the-heisenberg/index.md","filePath":"meet-the-heisenberg/index.md","lastUpdated":0}'),d={name:"meet-the-heisenberg/index.md"},w=Object.assign(d,{setup(m){const{params:e,frontmatter:p}=s();return(u,h)=>{const t=a;return l(),r("div",null,[o(t,i(n(c(e))),null,16)])}}});export{v as __pageData,w as default}; diff --git a/assets/microtonal_index.md.hTlkmWcW.js b/assets/microtonal_index.md.7zjrkP34.js similarity index 98% rename from assets/microtonal_index.md.hTlkmWcW.js rename to assets/microtonal_index.md.7zjrkP34.js index 1bc11d6c..381361ff 100644 --- a/assets/microtonal_index.md.hTlkmWcW.js +++ b/assets/microtonal_index.md.7zjrkP34.js @@ -1 +1 @@ -import{_ as o}from"./chunks/SynthPage.DHgkhPru.js";import{s as a,d as s,y as i,R as n,S as l,f as r,B as h,b as c}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const u=h("

WebSynths is a free resource for any musician with internet access! But, it is made possible by support from our patrons. Please consider helping if you can: patreon.com/WebSynths

  • You can use your QWERTY keyboard, mouse, mobile touch or MIDI keyboard to play the sounds.
  • You can change the tuning of the keys, or select a scale, by clicking the tuning button.
  • MIDI is a way to use an external physical instrument to play it. If you have a MIDI keyboard that you wish to use, hit the MIDI button to set it up.
  • If a note gets stuck, hit the panic button, it will stop all voices from playing.
  • You can use the arrows on your computer keyboard to scroll through the presets.

A simple explanation of Subtractive Synthesis:

  • Subtractive Synthesis works by taking one or more oscillators, setting the pitch of their oscillation (usually to the note of the key being pressed,) setting the shape of their oscillation to the desired timbre (Sine, Saw, Square or more complex shapes,) mixing them together and running them through a filter to change their EQ (usually filtering out the highest or lowest frequencies... this is why it is called "subtractive"), then running them through an envelope so the note can be heard on when a key is pressed down and is silenced when the key is released. In the case of WebSynths Microtonal, the sound is then sent through effects like delay, chorus and reverb and out to your speakers.
  • Oscillators are the voices. This synth has 3 of them in the left column. You can change the character of each voice by changing the parameters of them. The 'Shape' menu allows you to choose from different styles of voice for each oscillator. You can turn each voice on or off and mix them together.
  • The filter section applies equalization to your oscillators via the cutoff and emphasis controls. You can change the equalization filter type to 'low pass / high pass' and many more. You can use the LFOs and/or Envelopes to change how the filtration changes over time. An LFO is just a slow oscillator that is uses to automatically move a parameter over time.
  • The amplitude envelope changes how your sound is played, volume-wise, when you hit a note. For example, having a long release time will mean that once you let go of the note you are playing it will tail off until fading out. Having a slow attack will mean that your note will fade in instead of playing at full volume straight away.
  • The effects section allows you to add various effects to your overall sound. You can change the effects, mix them together and toggle them on or off too.
",4),v=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://websynths.com/","date_created":"2023-10-27T12:45:54.019Z","title":"Websynths Microtonal","slug":"microtonal","author":"WebSynths","author_link":"https://www.websynths.com/microtonal/","description":"The deepest internet synthesizer","tags":null,"archive_link":null,"archive":false,"iframe":false,"cover":"ffc54664-7ba4-4855-a56a-6657a5542a04","id":10,"sort":12,"clicks":172,"public":false,"is_new":false,"stats":[11]},"relativePath":"microtonal/index.md","filePath":"microtonal/index.md","lastUpdated":0}'),m={name:"microtonal/index.md"},k=Object.assign(m,{setup(p){const{params:e,frontmatter:f}=a();return(d,y)=>{const t=o;return c(),s("div",null,[i(t,n(l(r(e))),null,16),u])}}});export{v as __pageData,k as default}; +import{_ as o}from"./chunks/SynthPage.B19zwNJN.js";import{s as a,d as s,y as i,R as n,S as l,f as r,B as h,b as c}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const u=h("

WebSynths is a free resource for any musician with internet access! But, it is made possible by support from our patrons. Please consider helping if you can: patreon.com/WebSynths

  • You can use your QWERTY keyboard, mouse, mobile touch or MIDI keyboard to play the sounds.
  • You can change the tuning of the keys, or select a scale, by clicking the tuning button.
  • MIDI is a way to use an external physical instrument to play it. If you have a MIDI keyboard that you wish to use, hit the MIDI button to set it up.
  • If a note gets stuck, hit the panic button, it will stop all voices from playing.
  • You can use the arrows on your computer keyboard to scroll through the presets.

A simple explanation of Subtractive Synthesis:

  • Subtractive Synthesis works by taking one or more oscillators, setting the pitch of their oscillation (usually to the note of the key being pressed,) setting the shape of their oscillation to the desired timbre (Sine, Saw, Square or more complex shapes,) mixing them together and running them through a filter to change their EQ (usually filtering out the highest or lowest frequencies... this is why it is called "subtractive"), then running them through an envelope so the note can be heard on when a key is pressed down and is silenced when the key is released. In the case of WebSynths Microtonal, the sound is then sent through effects like delay, chorus and reverb and out to your speakers.
  • Oscillators are the voices. This synth has 3 of them in the left column. You can change the character of each voice by changing the parameters of them. The 'Shape' menu allows you to choose from different styles of voice for each oscillator. You can turn each voice on or off and mix them together.
  • The filter section applies equalization to your oscillators via the cutoff and emphasis controls. You can change the equalization filter type to 'low pass / high pass' and many more. You can use the LFOs and/or Envelopes to change how the filtration changes over time. An LFO is just a slow oscillator that is uses to automatically move a parameter over time.
  • The amplitude envelope changes how your sound is played, volume-wise, when you hit a note. For example, having a long release time will mean that once you let go of the note you are playing it will tail off until fading out. Having a slow attack will mean that your note will fade in instead of playing at full volume straight away.
  • The effects section allows you to add various effects to your overall sound. You can change the effects, mix them together and toggle them on or off too.
",4),v=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://websynths.com/","date_created":"2023-10-27T12:45:54.019Z","title":"Websynths Microtonal","slug":"microtonal","author":"WebSynths","author_link":"https://www.websynths.com/microtonal/","description":"The deepest internet synthesizer","tags":null,"archive_link":null,"archive":false,"iframe":false,"cover":"ffc54664-7ba4-4855-a56a-6657a5542a04","id":10,"sort":12,"clicks":172,"public":false,"is_new":false,"stats":[11]},"relativePath":"microtonal/index.md","filePath":"microtonal/index.md","lastUpdated":0}'),m={name:"microtonal/index.md"},k=Object.assign(m,{setup(p){const{params:e,frontmatter:f}=a();return(d,y)=>{const t=o;return c(),s("div",null,[i(t,n(l(r(e))),null,16),u])}}});export{v as __pageData,k as default}; diff --git a/assets/microtonal_index.md.hTlkmWcW.lean.js b/assets/microtonal_index.md.7zjrkP34.lean.js similarity index 94% rename from assets/microtonal_index.md.hTlkmWcW.lean.js rename to assets/microtonal_index.md.7zjrkP34.lean.js index ae805cee..705da7d2 100644 --- a/assets/microtonal_index.md.hTlkmWcW.lean.js +++ b/assets/microtonal_index.md.7zjrkP34.lean.js @@ -1 +1 @@ -import{_ as o}from"./chunks/SynthPage.DHgkhPru.js";import{s as a,d as s,y as i,R as n,S as l,f as r,B as h,b as c}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const u=h("",4),v=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://websynths.com/","date_created":"2023-10-27T12:45:54.019Z","title":"Websynths Microtonal","slug":"microtonal","author":"WebSynths","author_link":"https://www.websynths.com/microtonal/","description":"The deepest internet synthesizer","tags":null,"archive_link":null,"archive":false,"iframe":false,"cover":"ffc54664-7ba4-4855-a56a-6657a5542a04","id":10,"sort":12,"clicks":172,"public":false,"is_new":false,"stats":[11]},"relativePath":"microtonal/index.md","filePath":"microtonal/index.md","lastUpdated":0}'),m={name:"microtonal/index.md"},k=Object.assign(m,{setup(p){const{params:e,frontmatter:f}=a();return(d,y)=>{const t=o;return c(),s("div",null,[i(t,n(l(r(e))),null,16),u])}}});export{v as __pageData,k as default}; +import{_ as o}from"./chunks/SynthPage.B19zwNJN.js";import{s as a,d as s,y as i,R as n,S as l,f as r,B as h,b as c}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const u=h("",4),v=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://websynths.com/","date_created":"2023-10-27T12:45:54.019Z","title":"Websynths Microtonal","slug":"microtonal","author":"WebSynths","author_link":"https://www.websynths.com/microtonal/","description":"The deepest internet synthesizer","tags":null,"archive_link":null,"archive":false,"iframe":false,"cover":"ffc54664-7ba4-4855-a56a-6657a5542a04","id":10,"sort":12,"clicks":172,"public":false,"is_new":false,"stats":[11]},"relativePath":"microtonal/index.md","filePath":"microtonal/index.md","lastUpdated":0}'),m={name:"microtonal/index.md"},k=Object.assign(m,{setup(p){const{params:e,frontmatter:f}=a();return(d,y)=>{const t=o;return c(),s("div",null,[i(t,n(l(r(e))),null,16),u])}}});export{v as __pageData,k as default}; diff --git a/assets/midi-city_index.md.C_bw8Wmp.lean.js b/assets/midi-city_index.md.quDpD-LH.js similarity index 97% rename from assets/midi-city_index.md.C_bw8Wmp.lean.js rename to assets/midi-city_index.md.quDpD-LH.js index 5c0abade..92f4a5ec 100644 --- a/assets/midi-city_index.md.C_bw8Wmp.lean.js +++ b/assets/midi-city_index.md.quDpD-LH.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s as n,d as s,y as o,R as r,S as l,f as d,g as e,b as c}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const u=e("p",null,"midi.city has been created with the help of hundreds of different open-source projects and with contributions from many others.",-1),m=e("ul",null,[e("li",null,"Tone.js by Yotam Mann: the Web Audio API-based sound engine that implements a majority of nodes used in the audio graph. It powers many of the advanced features used such as Granular Synthesis, Reverb, and timing."),e("li",null,"Groove Monkee: graciously provided the MIDI files that are used for the percussion loops."),e("li",null,"Keenan Brand: created the midi.city logo and various icons used on the site."),e("li",null,"Noun Project: various icons are used via a Pro license."),e("li",null,"Google Material Design: various icons."),e("li",null,"Compifont by Marcin Dziembor: the soundfont powering the samples and many the audio graph definitions, is originally . Several modifications have been made to adapt to midi.city and the Web Audio API.")],-1),D=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://midi.city/","date_created":"2023-12-28T05:40:45.140Z","title":"MIDI.city","slug":"midi-city","author":"Astral Digital","author_link":"https://astral.digital/","description":"midi.city is a free online synthesizer, built by Jack.\\n\\nmidi.city has over 128 different instruments including: Pianos, Saxophones, Drums, Trumpets, Synth Pads, Guitar, Violins and all other instruments defined in the General Midi specification.","tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"8cb479ba-e4e0-42f2-986c-597b68b8e639","id":52,"sort":9,"clicks":10,"public":false,"is_new":false,"stats":[44]},"relativePath":"midi-city/index.md","filePath":"midi-city/index.md","lastUpdated":0}'),h={name:"midi-city/index.md"},k=Object.assign(h,{setup(p){const{params:i,frontmatter:f}=n();return(y,_)=>{const t=a;return c(),s("div",null,[o(t,r(l(d(i))),null,16),u,m])}}});export{D as __pageData,k as default}; +import{_ as a}from"./chunks/SynthPage.B19zwNJN.js";import{s as n,d as s,y as o,R as r,S as l,f as d,g as e,b as c}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const u=e("p",null,"midi.city has been created with the help of hundreds of different open-source projects and with contributions from many others.",-1),m=e("ul",null,[e("li",null,"Tone.js by Yotam Mann: the Web Audio API-based sound engine that implements a majority of nodes used in the audio graph. It powers many of the advanced features used such as Granular Synthesis, Reverb, and timing."),e("li",null,"Groove Monkee: graciously provided the MIDI files that are used for the percussion loops."),e("li",null,"Keenan Brand: created the midi.city logo and various icons used on the site."),e("li",null,"Noun Project: various icons are used via a Pro license."),e("li",null,"Google Material Design: various icons."),e("li",null,"Compifont by Marcin Dziembor: the soundfont powering the samples and many the audio graph definitions, is originally . Several modifications have been made to adapt to midi.city and the Web Audio API.")],-1),D=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://midi.city/","date_created":"2023-12-28T05:40:45.140Z","title":"MIDI.city","slug":"midi-city","author":"Astral Digital","author_link":"https://astral.digital/","description":"midi.city is a free online synthesizer, built by Jack.\\n\\nmidi.city has over 128 different instruments including: Pianos, Saxophones, Drums, Trumpets, Synth Pads, Guitar, Violins and all other instruments defined in the General Midi specification.","tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"8cb479ba-e4e0-42f2-986c-597b68b8e639","id":52,"sort":9,"clicks":10,"public":false,"is_new":false,"stats":[44]},"relativePath":"midi-city/index.md","filePath":"midi-city/index.md","lastUpdated":0}'),h={name:"midi-city/index.md"},k=Object.assign(h,{setup(p){const{params:i,frontmatter:f}=n();return(y,_)=>{const t=a;return c(),s("div",null,[o(t,r(l(d(i))),null,16),u,m])}}});export{D as __pageData,k as default}; diff --git a/assets/midi-city_index.md.C_bw8Wmp.js b/assets/midi-city_index.md.quDpD-LH.lean.js similarity index 97% rename from assets/midi-city_index.md.C_bw8Wmp.js rename to assets/midi-city_index.md.quDpD-LH.lean.js index 5c0abade..92f4a5ec 100644 --- a/assets/midi-city_index.md.C_bw8Wmp.js +++ b/assets/midi-city_index.md.quDpD-LH.lean.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s as n,d as s,y as o,R as r,S as l,f as d,g as e,b as c}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const u=e("p",null,"midi.city has been created with the help of hundreds of different open-source projects and with contributions from many others.",-1),m=e("ul",null,[e("li",null,"Tone.js by Yotam Mann: the Web Audio API-based sound engine that implements a majority of nodes used in the audio graph. It powers many of the advanced features used such as Granular Synthesis, Reverb, and timing."),e("li",null,"Groove Monkee: graciously provided the MIDI files that are used for the percussion loops."),e("li",null,"Keenan Brand: created the midi.city logo and various icons used on the site."),e("li",null,"Noun Project: various icons are used via a Pro license."),e("li",null,"Google Material Design: various icons."),e("li",null,"Compifont by Marcin Dziembor: the soundfont powering the samples and many the audio graph definitions, is originally . Several modifications have been made to adapt to midi.city and the Web Audio API.")],-1),D=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://midi.city/","date_created":"2023-12-28T05:40:45.140Z","title":"MIDI.city","slug":"midi-city","author":"Astral Digital","author_link":"https://astral.digital/","description":"midi.city is a free online synthesizer, built by Jack.\\n\\nmidi.city has over 128 different instruments including: Pianos, Saxophones, Drums, Trumpets, Synth Pads, Guitar, Violins and all other instruments defined in the General Midi specification.","tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"8cb479ba-e4e0-42f2-986c-597b68b8e639","id":52,"sort":9,"clicks":10,"public":false,"is_new":false,"stats":[44]},"relativePath":"midi-city/index.md","filePath":"midi-city/index.md","lastUpdated":0}'),h={name:"midi-city/index.md"},k=Object.assign(h,{setup(p){const{params:i,frontmatter:f}=n();return(y,_)=>{const t=a;return c(),s("div",null,[o(t,r(l(d(i))),null,16),u,m])}}});export{D as __pageData,k as default}; +import{_ as a}from"./chunks/SynthPage.B19zwNJN.js";import{s as n,d as s,y as o,R as r,S as l,f as d,g as e,b as c}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const u=e("p",null,"midi.city has been created with the help of hundreds of different open-source projects and with contributions from many others.",-1),m=e("ul",null,[e("li",null,"Tone.js by Yotam Mann: the Web Audio API-based sound engine that implements a majority of nodes used in the audio graph. It powers many of the advanced features used such as Granular Synthesis, Reverb, and timing."),e("li",null,"Groove Monkee: graciously provided the MIDI files that are used for the percussion loops."),e("li",null,"Keenan Brand: created the midi.city logo and various icons used on the site."),e("li",null,"Noun Project: various icons are used via a Pro license."),e("li",null,"Google Material Design: various icons."),e("li",null,"Compifont by Marcin Dziembor: the soundfont powering the samples and many the audio graph definitions, is originally . Several modifications have been made to adapt to midi.city and the Web Audio API.")],-1),D=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://midi.city/","date_created":"2023-12-28T05:40:45.140Z","title":"MIDI.city","slug":"midi-city","author":"Astral Digital","author_link":"https://astral.digital/","description":"midi.city is a free online synthesizer, built by Jack.\\n\\nmidi.city has over 128 different instruments including: Pianos, Saxophones, Drums, Trumpets, Synth Pads, Guitar, Violins and all other instruments defined in the General Midi specification.","tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"8cb479ba-e4e0-42f2-986c-597b68b8e639","id":52,"sort":9,"clicks":10,"public":false,"is_new":false,"stats":[44]},"relativePath":"midi-city/index.md","filePath":"midi-city/index.md","lastUpdated":0}'),h={name:"midi-city/index.md"},k=Object.assign(h,{setup(p){const{params:i,frontmatter:f}=n();return(y,_)=>{const t=a;return c(),s("div",null,[o(t,r(l(d(i))),null,16),u,m])}}});export{D as __pageData,k as default}; diff --git a/assets/midi-driven-web-audio_index.md.B06I4MxK.js b/assets/midi-driven-web-audio_index.md.BHLhzMEc.js similarity index 88% rename from assets/midi-driven-web-audio_index.md.B06I4MxK.js rename to assets/midi-driven-web-audio_index.md.BHLhzMEc.js index ed84b727..86da14b1 100644 --- a/assets/midi-driven-web-audio_index.md.B06I4MxK.js +++ b/assets/midi-driven-web-audio_index.md.BHLhzMEc.js @@ -1 +1 @@ -import{_ as t}from"./chunks/SynthPage.DHgkhPru.js";import{s as i,d as s,y as r,R as n,S as o,f as d,b as l}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://webaudiodemos.appspot.com/midi-synth/index.html","date_created":"2023-10-27T12:45:53.963Z","title":"MIDI–driven Web Audio","slug":"midi-driven-web-audio","author":"Chris Wilson","author_link":"https://github.com/cwilso","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":false,"cover":"0005a0c9-c7e7-4922-a1e5-49d4326d2f77","id":6,"sort":35,"clicks":127,"public":false,"is_new":false,"stats":[30]},"relativePath":"midi-driven-web-audio/index.md","filePath":"midi-driven-web-audio/index.md","lastUpdated":0}'),c={name:"midi-driven-web-audio/index.md"},w=Object.assign(c,{setup(m){const{params:e,frontmatter:p}=i();return(u,_)=>{const a=t;return l(),s("div",null,[r(a,n(o(d(e))),null,16)])}}});export{g as __pageData,w as default}; +import{_ as t}from"./chunks/SynthPage.B19zwNJN.js";import{s as i,d as s,y as r,R as n,S as o,f as d,b as l}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://webaudiodemos.appspot.com/midi-synth/index.html","date_created":"2023-10-27T12:45:53.963Z","title":"MIDI–driven Web Audio","slug":"midi-driven-web-audio","author":"Chris Wilson","author_link":"https://github.com/cwilso","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":false,"cover":"0005a0c9-c7e7-4922-a1e5-49d4326d2f77","id":6,"sort":36,"clicks":127,"public":false,"is_new":false,"stats":[30]},"relativePath":"midi-driven-web-audio/index.md","filePath":"midi-driven-web-audio/index.md","lastUpdated":0}'),c={name:"midi-driven-web-audio/index.md"},w=Object.assign(c,{setup(m){const{params:e,frontmatter:p}=i();return(u,_)=>{const a=t;return l(),s("div",null,[r(a,n(o(d(e))),null,16)])}}});export{g as __pageData,w as default}; diff --git a/assets/midi-driven-web-audio_index.md.B06I4MxK.lean.js b/assets/midi-driven-web-audio_index.md.BHLhzMEc.lean.js similarity index 88% rename from assets/midi-driven-web-audio_index.md.B06I4MxK.lean.js rename to assets/midi-driven-web-audio_index.md.BHLhzMEc.lean.js index ed84b727..86da14b1 100644 --- a/assets/midi-driven-web-audio_index.md.B06I4MxK.lean.js +++ b/assets/midi-driven-web-audio_index.md.BHLhzMEc.lean.js @@ -1 +1 @@ -import{_ as t}from"./chunks/SynthPage.DHgkhPru.js";import{s as i,d as s,y as r,R as n,S as o,f as d,b as l}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://webaudiodemos.appspot.com/midi-synth/index.html","date_created":"2023-10-27T12:45:53.963Z","title":"MIDI–driven Web Audio","slug":"midi-driven-web-audio","author":"Chris Wilson","author_link":"https://github.com/cwilso","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":false,"cover":"0005a0c9-c7e7-4922-a1e5-49d4326d2f77","id":6,"sort":35,"clicks":127,"public":false,"is_new":false,"stats":[30]},"relativePath":"midi-driven-web-audio/index.md","filePath":"midi-driven-web-audio/index.md","lastUpdated":0}'),c={name:"midi-driven-web-audio/index.md"},w=Object.assign(c,{setup(m){const{params:e,frontmatter:p}=i();return(u,_)=>{const a=t;return l(),s("div",null,[r(a,n(o(d(e))),null,16)])}}});export{g as __pageData,w as default}; +import{_ as t}from"./chunks/SynthPage.B19zwNJN.js";import{s as i,d as s,y as r,R as n,S as o,f as d,b as l}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://webaudiodemos.appspot.com/midi-synth/index.html","date_created":"2023-10-27T12:45:53.963Z","title":"MIDI–driven Web Audio","slug":"midi-driven-web-audio","author":"Chris Wilson","author_link":"https://github.com/cwilso","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":false,"cover":"0005a0c9-c7e7-4922-a1e5-49d4326d2f77","id":6,"sort":36,"clicks":127,"public":false,"is_new":false,"stats":[30]},"relativePath":"midi-driven-web-audio/index.md","filePath":"midi-driven-web-audio/index.md","lastUpdated":0}'),c={name:"midi-driven-web-audio/index.md"},w=Object.assign(c,{setup(m){const{params:e,frontmatter:p}=i();return(u,_)=>{const a=t;return l(),s("div",null,[r(a,n(o(d(e))),null,16)])}}});export{g as __pageData,w as default}; diff --git a/assets/mod-synth_index.md.DQ7oqCk-.js b/assets/mod-synth_index.md.C9QKok6-.js similarity index 87% rename from assets/mod-synth_index.md.DQ7oqCk-.js rename to assets/mod-synth_index.md.C9QKok6-.js index 7003a0ba..52b783b7 100644 --- a/assets/mod-synth_index.md.DQ7oqCk-.js +++ b/assets/mod-synth_index.md.C9QKok6-.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as n,y as r,R as o,S as i,f as c,b as d}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const v=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://mod-synth.io/","date_created":"2023-10-27T12:45:54.052Z","title":"MOD synth","slug":"mod-synth","author":"André Venâncio ","author_link":"https://github.com/andrevenancio","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"31564bf3-fca9-41a4-b390-d78ccd848107","id":12,"sort":41,"clicks":146,"public":false,"is_new":false,"stats":[36]},"relativePath":"mod-synth/index.md","filePath":"mod-synth/index.md","lastUpdated":0}'),l={name:"mod-synth/index.md"},b=Object.assign(l,{setup(m){const{params:t,frontmatter:p}=s();return(_,u)=>{const e=a;return d(),n("div",null,[r(e,o(i(c(t))),null,16)])}}});export{v as __pageData,b as default}; +import{_ as a}from"./chunks/SynthPage.B19zwNJN.js";import{s,d as n,y as r,R as o,S as i,f as c,b as d}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const v=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://mod-synth.io/","date_created":"2023-10-27T12:45:54.052Z","title":"MOD synth","slug":"mod-synth","author":"André Venâncio ","author_link":"https://github.com/andrevenancio","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"31564bf3-fca9-41a4-b390-d78ccd848107","id":12,"sort":42,"clicks":146,"public":false,"is_new":false,"stats":[36]},"relativePath":"mod-synth/index.md","filePath":"mod-synth/index.md","lastUpdated":0}'),l={name:"mod-synth/index.md"},b=Object.assign(l,{setup(m){const{params:t,frontmatter:p}=s();return(_,u)=>{const e=a;return d(),n("div",null,[r(e,o(i(c(t))),null,16)])}}});export{v as __pageData,b as default}; diff --git a/assets/mod-synth_index.md.DQ7oqCk-.lean.js b/assets/mod-synth_index.md.C9QKok6-.lean.js similarity index 87% rename from assets/mod-synth_index.md.DQ7oqCk-.lean.js rename to assets/mod-synth_index.md.C9QKok6-.lean.js index 7003a0ba..52b783b7 100644 --- a/assets/mod-synth_index.md.DQ7oqCk-.lean.js +++ b/assets/mod-synth_index.md.C9QKok6-.lean.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as n,y as r,R as o,S as i,f as c,b as d}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const v=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://mod-synth.io/","date_created":"2023-10-27T12:45:54.052Z","title":"MOD synth","slug":"mod-synth","author":"André Venâncio ","author_link":"https://github.com/andrevenancio","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"31564bf3-fca9-41a4-b390-d78ccd848107","id":12,"sort":41,"clicks":146,"public":false,"is_new":false,"stats":[36]},"relativePath":"mod-synth/index.md","filePath":"mod-synth/index.md","lastUpdated":0}'),l={name:"mod-synth/index.md"},b=Object.assign(l,{setup(m){const{params:t,frontmatter:p}=s();return(_,u)=>{const e=a;return d(),n("div",null,[r(e,o(i(c(t))),null,16)])}}});export{v as __pageData,b as default}; +import{_ as a}from"./chunks/SynthPage.B19zwNJN.js";import{s,d as n,y as r,R as o,S as i,f as c,b as d}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const v=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://mod-synth.io/","date_created":"2023-10-27T12:45:54.052Z","title":"MOD synth","slug":"mod-synth","author":"André Venâncio ","author_link":"https://github.com/andrevenancio","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"31564bf3-fca9-41a4-b390-d78ccd848107","id":12,"sort":42,"clicks":146,"public":false,"is_new":false,"stats":[36]},"relativePath":"mod-synth/index.md","filePath":"mod-synth/index.md","lastUpdated":0}'),l={name:"mod-synth/index.md"},b=Object.assign(l,{setup(m){const{params:t,frontmatter:p}=s();return(_,u)=>{const e=a;return d(),n("div",null,[r(e,o(i(c(t))),null,16)])}}});export{v as __pageData,b as default}; diff --git a/assets/multiplayer-orchestra_index.md.DBDquzNY.js b/assets/multiplayer-orchestra_index.md.B-NHU8MY.js similarity index 94% rename from assets/multiplayer-orchestra_index.md.DBDquzNY.js rename to assets/multiplayer-orchestra_index.md.B-NHU8MY.js index 5dfbb05f..6036d73d 100644 --- a/assets/multiplayer-orchestra_index.md.DBDquzNY.js +++ b/assets/multiplayer-orchestra_index.md.B-NHU8MY.js @@ -1 +1 @@ -import{_ as r}from"./chunks/SynthPage.DHgkhPru.js";import{s as a,d as o,y as s,R as i,S as l,f as n,B as c,b as m}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const p=c('

Multiplayer Orchestra (https://www.multiplayer-orchestra.com/) is a web application that allows you to virtually collaborate with musicians from around the world in real-time. Here are some key features:

  • Large instrument selection: Choose from over 400 instruments, including pianos, guitars, drums, and orchestral instruments.
  • Real-time collaboration: Play music simultaneously with other users, creating a virtual orchestra.
  • Public and private rooms: Join public rooms to jam with others or create private rooms with a password for specific collaborations.
  • Contests: Participate in contests to win prizes like Amazon gift cards by recording solo performances.

It's important to note that the website seems to be in beta based on the version information listed (Beta 0.30).

',3),v=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://multiplayer-orchestra.com","date_created":"2024-04-23T08:07:22.796Z","title":"Multiplayer Orchestra","slug":"multiplayer-orchestra","author":"Mutli_Orchestra","author_link":"https://twitter.com/Mutli_Orchestra","description":"Play in real time with people from all around the world with more than 400 instruments.","tags":["Poly","MIDI","Keyboard","Collaborative","Online"],"archive_link":null,"archive":false,"iframe":true,"cover":"d743d9ea-d73f-4593-a70e-58a3e4deaa1b","id":55,"sort":16,"clicks":5,"public":false,"is_new":true,"stats":[47]},"relativePath":"multiplayer-orchestra/index.md","filePath":"multiplayer-orchestra/index.md","lastUpdated":0}'),u={name:"multiplayer-orchestra/index.md"},P=Object.assign(u,{setup(h){const{params:t,frontmatter:d}=a();return(_,f)=>{const e=r;return m(),o("div",null,[s(e,i(l(n(t))),null,16),p])}}});export{v as __pageData,P as default}; +import{_ as r}from"./chunks/SynthPage.B19zwNJN.js";import{s as a,d as o,y as s,R as i,S as l,f as n,B as c,b as m}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const p=c('

Multiplayer Orchestra (https://www.multiplayer-orchestra.com/) is a web application that allows you to virtually collaborate with musicians from around the world in real-time. Here are some key features:

  • Large instrument selection: Choose from over 400 instruments, including pianos, guitars, drums, and orchestral instruments.
  • Real-time collaboration: Play music simultaneously with other users, creating a virtual orchestra.
  • Public and private rooms: Join public rooms to jam with others or create private rooms with a password for specific collaborations.
  • Contests: Participate in contests to win prizes like Amazon gift cards by recording solo performances.

It's important to note that the website seems to be in beta based on the version information listed (Beta 0.30).

',3),v=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://multiplayer-orchestra.com","date_created":"2024-04-23T08:07:22.796Z","title":"Multiplayer Orchestra","slug":"multiplayer-orchestra","author":"Mutli_Orchestra","author_link":"https://twitter.com/Mutli_Orchestra","description":"Play in real time with people from all around the world with more than 400 instruments.","tags":["Poly","MIDI","Keyboard","Collaborative","Online"],"archive_link":null,"archive":false,"iframe":true,"cover":"d743d9ea-d73f-4593-a70e-58a3e4deaa1b","id":55,"sort":17,"clicks":5,"public":false,"is_new":true,"stats":[47]},"relativePath":"multiplayer-orchestra/index.md","filePath":"multiplayer-orchestra/index.md","lastUpdated":0}'),u={name:"multiplayer-orchestra/index.md"},P=Object.assign(u,{setup(h){const{params:t,frontmatter:d}=a();return(_,f)=>{const e=r;return m(),o("div",null,[s(e,i(l(n(t))),null,16),p])}}});export{v as __pageData,P as default}; diff --git a/assets/multiplayer-orchestra_index.md.DBDquzNY.lean.js b/assets/multiplayer-orchestra_index.md.B-NHU8MY.lean.js similarity index 89% rename from assets/multiplayer-orchestra_index.md.DBDquzNY.lean.js rename to assets/multiplayer-orchestra_index.md.B-NHU8MY.lean.js index 9f36c045..f90caaa0 100644 --- a/assets/multiplayer-orchestra_index.md.DBDquzNY.lean.js +++ b/assets/multiplayer-orchestra_index.md.B-NHU8MY.lean.js @@ -1 +1 @@ -import{_ as r}from"./chunks/SynthPage.DHgkhPru.js";import{s as a,d as o,y as s,R as i,S as l,f as n,B as c,b as m}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const p=c("",3),v=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://multiplayer-orchestra.com","date_created":"2024-04-23T08:07:22.796Z","title":"Multiplayer Orchestra","slug":"multiplayer-orchestra","author":"Mutli_Orchestra","author_link":"https://twitter.com/Mutli_Orchestra","description":"Play in real time with people from all around the world with more than 400 instruments.","tags":["Poly","MIDI","Keyboard","Collaborative","Online"],"archive_link":null,"archive":false,"iframe":true,"cover":"d743d9ea-d73f-4593-a70e-58a3e4deaa1b","id":55,"sort":16,"clicks":5,"public":false,"is_new":true,"stats":[47]},"relativePath":"multiplayer-orchestra/index.md","filePath":"multiplayer-orchestra/index.md","lastUpdated":0}'),u={name:"multiplayer-orchestra/index.md"},P=Object.assign(u,{setup(h){const{params:t,frontmatter:d}=a();return(_,f)=>{const e=r;return m(),o("div",null,[s(e,i(l(n(t))),null,16),p])}}});export{v as __pageData,P as default}; +import{_ as r}from"./chunks/SynthPage.B19zwNJN.js";import{s as a,d as o,y as s,R as i,S as l,f as n,B as c,b as m}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const p=c("",3),v=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://multiplayer-orchestra.com","date_created":"2024-04-23T08:07:22.796Z","title":"Multiplayer Orchestra","slug":"multiplayer-orchestra","author":"Mutli_Orchestra","author_link":"https://twitter.com/Mutli_Orchestra","description":"Play in real time with people from all around the world with more than 400 instruments.","tags":["Poly","MIDI","Keyboard","Collaborative","Online"],"archive_link":null,"archive":false,"iframe":true,"cover":"d743d9ea-d73f-4593-a70e-58a3e4deaa1b","id":55,"sort":17,"clicks":5,"public":false,"is_new":true,"stats":[47]},"relativePath":"multiplayer-orchestra/index.md","filePath":"multiplayer-orchestra/index.md","lastUpdated":0}'),u={name:"multiplayer-orchestra/index.md"},P=Object.assign(u,{setup(h){const{params:t,frontmatter:d}=a();return(_,f)=>{const e=r;return m(),o("div",null,[s(e,i(l(n(t))),null,16),p])}}});export{v as __pageData,P as default}; diff --git a/assets/multiplayer-piano_index.md.DysQ9-I2.js b/assets/multiplayer-piano_index.md.C8sFZ0Lc.js similarity index 89% rename from assets/multiplayer-piano_index.md.DysQ9-I2.js rename to assets/multiplayer-piano_index.md.C8sFZ0Lc.js index 7b4186b8..56f9a0e6 100644 --- a/assets/multiplayer-piano_index.md.DysQ9-I2.js +++ b/assets/multiplayer-piano_index.md.C8sFZ0Lc.js @@ -1 +1 @@ -import{_ as e}from"./chunks/SynthPage.DHgkhPru.js";import{s as r,d as i,y as n,R as o,S as l,f as s,b as p}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.multiplayerpiano.org/","date_created":"2023-11-26T08:06:18.875Z","title":"Multiplayer Piano","slug":"multiplayer-piano","author":"Brandon Lockaby","author_link":"https://github.com/Multiplayer-Piano","description":"Online piano, that can be played by any site visitor together in a virtual room or alone.","tags":["Piano","MIDI","Poly","Multiplayer"],"archive_link":null,"archive":false,"iframe":true,"cover":"9c10771b-e38f-469f-b58b-c9e6bb91a072","id":49,"sort":34,"clicks":4,"public":false,"is_new":false,"stats":[29]},"relativePath":"multiplayer-piano/index.md","filePath":"multiplayer-piano/index.md","lastUpdated":0}'),c={name:"multiplayer-piano/index.md"},P=Object.assign(c,{setup(m){const{params:a,frontmatter:u}=r();return(d,_)=>{const t=e;return p(),i("div",null,[n(t,o(l(s(a))),null,16)])}}});export{g as __pageData,P as default}; +import{_ as e}from"./chunks/SynthPage.B19zwNJN.js";import{s as r,d as i,y as n,R as o,S as l,f as s,b as p}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.multiplayerpiano.org/","date_created":"2023-11-26T08:06:18.875Z","title":"Multiplayer Piano","slug":"multiplayer-piano","author":"Brandon Lockaby","author_link":"https://github.com/Multiplayer-Piano","description":"Online piano, that can be played by any site visitor together in a virtual room or alone.","tags":["Piano","MIDI","Poly","Multiplayer"],"archive_link":null,"archive":false,"iframe":true,"cover":"9c10771b-e38f-469f-b58b-c9e6bb91a072","id":49,"sort":35,"clicks":4,"public":false,"is_new":false,"stats":[29]},"relativePath":"multiplayer-piano/index.md","filePath":"multiplayer-piano/index.md","lastUpdated":0}'),c={name:"multiplayer-piano/index.md"},P=Object.assign(c,{setup(m){const{params:a,frontmatter:u}=r();return(d,_)=>{const t=e;return p(),i("div",null,[n(t,o(l(s(a))),null,16)])}}});export{g as __pageData,P as default}; diff --git a/assets/multiplayer-piano_index.md.DysQ9-I2.lean.js b/assets/multiplayer-piano_index.md.C8sFZ0Lc.lean.js similarity index 89% rename from assets/multiplayer-piano_index.md.DysQ9-I2.lean.js rename to assets/multiplayer-piano_index.md.C8sFZ0Lc.lean.js index 7b4186b8..56f9a0e6 100644 --- a/assets/multiplayer-piano_index.md.DysQ9-I2.lean.js +++ b/assets/multiplayer-piano_index.md.C8sFZ0Lc.lean.js @@ -1 +1 @@ -import{_ as e}from"./chunks/SynthPage.DHgkhPru.js";import{s as r,d as i,y as n,R as o,S as l,f as s,b as p}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.multiplayerpiano.org/","date_created":"2023-11-26T08:06:18.875Z","title":"Multiplayer Piano","slug":"multiplayer-piano","author":"Brandon Lockaby","author_link":"https://github.com/Multiplayer-Piano","description":"Online piano, that can be played by any site visitor together in a virtual room or alone.","tags":["Piano","MIDI","Poly","Multiplayer"],"archive_link":null,"archive":false,"iframe":true,"cover":"9c10771b-e38f-469f-b58b-c9e6bb91a072","id":49,"sort":34,"clicks":4,"public":false,"is_new":false,"stats":[29]},"relativePath":"multiplayer-piano/index.md","filePath":"multiplayer-piano/index.md","lastUpdated":0}'),c={name:"multiplayer-piano/index.md"},P=Object.assign(c,{setup(m){const{params:a,frontmatter:u}=r();return(d,_)=>{const t=e;return p(),i("div",null,[n(t,o(l(s(a))),null,16)])}}});export{g as __pageData,P as default}; +import{_ as e}from"./chunks/SynthPage.B19zwNJN.js";import{s as r,d as i,y as n,R as o,S as l,f as s,b as p}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.multiplayerpiano.org/","date_created":"2023-11-26T08:06:18.875Z","title":"Multiplayer Piano","slug":"multiplayer-piano","author":"Brandon Lockaby","author_link":"https://github.com/Multiplayer-Piano","description":"Online piano, that can be played by any site visitor together in a virtual room or alone.","tags":["Piano","MIDI","Poly","Multiplayer"],"archive_link":null,"archive":false,"iframe":true,"cover":"9c10771b-e38f-469f-b58b-c9e6bb91a072","id":49,"sort":35,"clicks":4,"public":false,"is_new":false,"stats":[29]},"relativePath":"multiplayer-piano/index.md","filePath":"multiplayer-piano/index.md","lastUpdated":0}'),c={name:"multiplayer-piano/index.md"},P=Object.assign(c,{setup(m){const{params:a,frontmatter:u}=r();return(d,_)=>{const t=e;return p(),i("div",null,[n(t,o(l(s(a))),null,16)])}}});export{g as __pageData,P as default}; diff --git a/assets/muted-io_index.md.7HkqgXgG.js b/assets/muted-io_index.md.C_wNdUY3.js similarity index 93% rename from assets/muted-io_index.md.7HkqgXgG.js rename to assets/muted-io_index.md.C_wNdUY3.js index 31bb3069..0364b673 100644 --- a/assets/muted-io_index.md.7HkqgXgG.js +++ b/assets/muted-io_index.md.C_wNdUY3.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as i,y as r,R as o,S as n,f as c,b as d}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const v=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://muted.io/","date_created":"2023-10-27T12:45:54.742Z","title":"Muted.io","slug":"muted-io","author":"Sébastien Noël","author_link":"https://twitter.com/muted_io","description":null,"tags":["educational","midi"],"archive_link":null,"archive":false,"iframe":true,"cover":"5c08ac7d-4414-47c0-b7d1-a9867ba3949f","id":43,"sort":7,"clicks":175,"public":false,"is_new":false,"stats":[10]},"relativePath":"muted-io/index.md","filePath":"muted-io/index.md","lastUpdated":0}'),l={name:"muted-io/index.md"},k=Object.assign(l,{setup(m){const{params:t,frontmatter:u}=s();return(p,_)=>{const e=a;return d(),i("div",null,[r(e,o(n(c(t))),null,16)])}}});export{v as __pageData,k as default}; +import{_ as a}from"./chunks/SynthPage.B19zwNJN.js";import{s,d as i,y as r,R as o,S as n,f as c,b as d}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const v=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://muted.io/","date_created":"2023-10-27T12:45:54.742Z","title":"Muted.io","slug":"muted-io","author":"Sébastien Noël","author_link":"https://twitter.com/muted_io","description":null,"tags":["educational","midi"],"archive_link":null,"archive":false,"iframe":true,"cover":"5c08ac7d-4414-47c0-b7d1-a9867ba3949f","id":43,"sort":7,"clicks":175,"public":false,"is_new":false,"stats":[10]},"relativePath":"muted-io/index.md","filePath":"muted-io/index.md","lastUpdated":0}'),l={name:"muted-io/index.md"},k=Object.assign(l,{setup(m){const{params:t,frontmatter:u}=s();return(p,_)=>{const e=a;return d(),i("div",null,[r(e,o(n(c(t))),null,16)])}}});export{v as __pageData,k as default}; diff --git a/assets/muted-io_index.md.7HkqgXgG.lean.js b/assets/muted-io_index.md.C_wNdUY3.lean.js similarity index 93% rename from assets/muted-io_index.md.7HkqgXgG.lean.js rename to assets/muted-io_index.md.C_wNdUY3.lean.js index 31bb3069..0364b673 100644 --- a/assets/muted-io_index.md.7HkqgXgG.lean.js +++ b/assets/muted-io_index.md.C_wNdUY3.lean.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as i,y as r,R as o,S as n,f as c,b as d}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const v=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://muted.io/","date_created":"2023-10-27T12:45:54.742Z","title":"Muted.io","slug":"muted-io","author":"Sébastien Noël","author_link":"https://twitter.com/muted_io","description":null,"tags":["educational","midi"],"archive_link":null,"archive":false,"iframe":true,"cover":"5c08ac7d-4414-47c0-b7d1-a9867ba3949f","id":43,"sort":7,"clicks":175,"public":false,"is_new":false,"stats":[10]},"relativePath":"muted-io/index.md","filePath":"muted-io/index.md","lastUpdated":0}'),l={name:"muted-io/index.md"},k=Object.assign(l,{setup(m){const{params:t,frontmatter:u}=s();return(p,_)=>{const e=a;return d(),i("div",null,[r(e,o(n(c(t))),null,16)])}}});export{v as __pageData,k as default}; +import{_ as a}from"./chunks/SynthPage.B19zwNJN.js";import{s,d as i,y as r,R as o,S as n,f as c,b as d}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const v=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://muted.io/","date_created":"2023-10-27T12:45:54.742Z","title":"Muted.io","slug":"muted-io","author":"Sébastien Noël","author_link":"https://twitter.com/muted_io","description":null,"tags":["educational","midi"],"archive_link":null,"archive":false,"iframe":true,"cover":"5c08ac7d-4414-47c0-b7d1-a9867ba3949f","id":43,"sort":7,"clicks":175,"public":false,"is_new":false,"stats":[10]},"relativePath":"muted-io/index.md","filePath":"muted-io/index.md","lastUpdated":0}'),l={name:"muted-io/index.md"},k=Object.assign(l,{setup(m){const{params:t,frontmatter:u}=s();return(p,_)=>{const e=a;return d(),i("div",null,[r(e,o(n(c(t))),null,16)])}}});export{v as __pageData,k as default}; diff --git a/assets/note-sculptor_index.md.C2XwRlKF.js b/assets/note-sculptor_index.md.qRvnP-u9.js similarity index 87% rename from assets/note-sculptor_index.md.C2XwRlKF.js rename to assets/note-sculptor_index.md.qRvnP-u9.js index 7ab1cf39..48ef0492 100644 --- a/assets/note-sculptor_index.md.C2XwRlKF.js +++ b/assets/note-sculptor_index.md.qRvnP-u9.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as r,y as o,R as n,S as l,f as c,b as i}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"http://www.noisesculptor.com/","date_created":"2023-10-27T12:45:54.104Z","title":"Note Sculptor","slug":"note-sculptor","author":"Ruin Technology","author_link":null,"description":null,"tags":null,"archive_link":null,"archive":false,"iframe":false,"cover":"a01968d1-3f88-4522-9752-1c33d10d90d9","id":15,"sort":43,"clicks":129,"public":false,"is_new":false,"stats":[38]},"relativePath":"note-sculptor/index.md","filePath":"note-sculptor/index.md","lastUpdated":0}'),p={name:"note-sculptor/index.md"},k=Object.assign(p,{setup(u){const{params:t,frontmatter:d}=s();return(m,_)=>{const e=a;return i(),r("div",null,[o(e,n(l(c(t))),null,16)])}}});export{y as __pageData,k as default}; +import{_ as a}from"./chunks/SynthPage.B19zwNJN.js";import{s,d as r,y as o,R as n,S as l,f as c,b as i}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"http://www.noisesculptor.com/","date_created":"2023-10-27T12:45:54.104Z","title":"Note Sculptor","slug":"note-sculptor","author":"Ruin Technology","author_link":null,"description":null,"tags":null,"archive_link":null,"archive":false,"iframe":false,"cover":"a01968d1-3f88-4522-9752-1c33d10d90d9","id":15,"sort":44,"clicks":129,"public":false,"is_new":false,"stats":[38]},"relativePath":"note-sculptor/index.md","filePath":"note-sculptor/index.md","lastUpdated":0}'),p={name:"note-sculptor/index.md"},k=Object.assign(p,{setup(u){const{params:t,frontmatter:d}=s();return(m,_)=>{const e=a;return i(),r("div",null,[o(e,n(l(c(t))),null,16)])}}});export{y as __pageData,k as default}; diff --git a/assets/note-sculptor_index.md.C2XwRlKF.lean.js b/assets/note-sculptor_index.md.qRvnP-u9.lean.js similarity index 87% rename from assets/note-sculptor_index.md.C2XwRlKF.lean.js rename to assets/note-sculptor_index.md.qRvnP-u9.lean.js index 7ab1cf39..48ef0492 100644 --- a/assets/note-sculptor_index.md.C2XwRlKF.lean.js +++ b/assets/note-sculptor_index.md.qRvnP-u9.lean.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as r,y as o,R as n,S as l,f as c,b as i}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"http://www.noisesculptor.com/","date_created":"2023-10-27T12:45:54.104Z","title":"Note Sculptor","slug":"note-sculptor","author":"Ruin Technology","author_link":null,"description":null,"tags":null,"archive_link":null,"archive":false,"iframe":false,"cover":"a01968d1-3f88-4522-9752-1c33d10d90d9","id":15,"sort":43,"clicks":129,"public":false,"is_new":false,"stats":[38]},"relativePath":"note-sculptor/index.md","filePath":"note-sculptor/index.md","lastUpdated":0}'),p={name:"note-sculptor/index.md"},k=Object.assign(p,{setup(u){const{params:t,frontmatter:d}=s();return(m,_)=>{const e=a;return i(),r("div",null,[o(e,n(l(c(t))),null,16)])}}});export{y as __pageData,k as default}; +import{_ as a}from"./chunks/SynthPage.B19zwNJN.js";import{s,d as r,y as o,R as n,S as l,f as c,b as i}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"http://www.noisesculptor.com/","date_created":"2023-10-27T12:45:54.104Z","title":"Note Sculptor","slug":"note-sculptor","author":"Ruin Technology","author_link":null,"description":null,"tags":null,"archive_link":null,"archive":false,"iframe":false,"cover":"a01968d1-3f88-4522-9752-1c33d10d90d9","id":15,"sort":44,"clicks":129,"public":false,"is_new":false,"stats":[38]},"relativePath":"note-sculptor/index.md","filePath":"note-sculptor/index.md","lastUpdated":0}'),p={name:"note-sculptor/index.md"},k=Object.assign(p,{setup(u){const{params:t,frontmatter:d}=s();return(m,_)=>{const e=a;return i(),r("div",null,[o(e,n(l(c(t))),null,16)])}}});export{y as __pageData,k as default}; diff --git a/assets/nv-1_index.md.zz29iYg5.js b/assets/nv-1_index.md.DLCJmm76.js similarity index 87% rename from assets/nv-1_index.md.zz29iYg5.js rename to assets/nv-1_index.md.DLCJmm76.js index 1ea570f1..6ccf29bc 100644 --- a/assets/nv-1_index.md.zz29iYg5.js +++ b/assets/nv-1_index.md.DLCJmm76.js @@ -1 +1 @@ -import{_ as e}from"./chunks/SynthPage.DHgkhPru.js";import{s as r,d as s,y as n,R as o,S as i,f as c,b as l}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const k=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://nicroto.github.io/viktor/","date_created":"2023-10-27T12:45:54.388Z","title":"Viktor NV-1","slug":"nv-1","author":"Nikolay Tsenkov ","author_link":"https://github.com/nicroto","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"ff3082ad-3c38-4880-ab23-35711c97ea71","id":27,"sort":25,"clicks":495,"public":false,"is_new":false,"stats":[20]},"relativePath":"nv-1/index.md","filePath":"nv-1/index.md","lastUpdated":0}'),p={name:"nv-1/index.md"},b=Object.assign(p,{setup(d){const{params:t,frontmatter:m}=r();return(u,_)=>{const a=e;return l(),s("div",null,[n(a,o(i(c(t))),null,16)])}}});export{k as __pageData,b as default}; +import{_ as e}from"./chunks/SynthPage.B19zwNJN.js";import{s as r,d as s,y as n,R as o,S as i,f as c,b as l}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const k=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://nicroto.github.io/viktor/","date_created":"2023-10-27T12:45:54.388Z","title":"Viktor NV-1","slug":"nv-1","author":"Nikolay Tsenkov ","author_link":"https://github.com/nicroto","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"ff3082ad-3c38-4880-ab23-35711c97ea71","id":27,"sort":26,"clicks":496,"public":false,"is_new":false,"stats":[20]},"relativePath":"nv-1/index.md","filePath":"nv-1/index.md","lastUpdated":0}'),p={name:"nv-1/index.md"},b=Object.assign(p,{setup(d){const{params:t,frontmatter:m}=r();return(u,_)=>{const a=e;return l(),s("div",null,[n(a,o(i(c(t))),null,16)])}}});export{k as __pageData,b as default}; diff --git a/assets/nv-1_index.md.zz29iYg5.lean.js b/assets/nv-1_index.md.DLCJmm76.lean.js similarity index 87% rename from assets/nv-1_index.md.zz29iYg5.lean.js rename to assets/nv-1_index.md.DLCJmm76.lean.js index 1ea570f1..6ccf29bc 100644 --- a/assets/nv-1_index.md.zz29iYg5.lean.js +++ b/assets/nv-1_index.md.DLCJmm76.lean.js @@ -1 +1 @@ -import{_ as e}from"./chunks/SynthPage.DHgkhPru.js";import{s as r,d as s,y as n,R as o,S as i,f as c,b as l}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const k=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://nicroto.github.io/viktor/","date_created":"2023-10-27T12:45:54.388Z","title":"Viktor NV-1","slug":"nv-1","author":"Nikolay Tsenkov ","author_link":"https://github.com/nicroto","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"ff3082ad-3c38-4880-ab23-35711c97ea71","id":27,"sort":25,"clicks":495,"public":false,"is_new":false,"stats":[20]},"relativePath":"nv-1/index.md","filePath":"nv-1/index.md","lastUpdated":0}'),p={name:"nv-1/index.md"},b=Object.assign(p,{setup(d){const{params:t,frontmatter:m}=r();return(u,_)=>{const a=e;return l(),s("div",null,[n(a,o(i(c(t))),null,16)])}}});export{k as __pageData,b as default}; +import{_ as e}from"./chunks/SynthPage.B19zwNJN.js";import{s as r,d as s,y as n,R as o,S as i,f as c,b as l}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const k=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://nicroto.github.io/viktor/","date_created":"2023-10-27T12:45:54.388Z","title":"Viktor NV-1","slug":"nv-1","author":"Nikolay Tsenkov ","author_link":"https://github.com/nicroto","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"ff3082ad-3c38-4880-ab23-35711c97ea71","id":27,"sort":26,"clicks":496,"public":false,"is_new":false,"stats":[20]},"relativePath":"nv-1/index.md","filePath":"nv-1/index.md","lastUpdated":0}'),p={name:"nv-1/index.md"},b=Object.assign(p,{setup(d){const{params:t,frontmatter:m}=r();return(u,_)=>{const a=e;return l(),s("div",null,[n(a,o(i(c(t))),null,16)])}}});export{k as __pageData,b as default}; diff --git a/assets/olif-sy-1-k_index.md.Gisa2OKR.js b/assets/olif-sy-1-k_index.md.BusScNUQ.js similarity index 87% rename from assets/olif-sy-1-k_index.md.Gisa2OKR.js rename to assets/olif-sy-1-k_index.md.BusScNUQ.js index 6351fb95..a1085dfd 100644 --- a/assets/olif-sy-1-k_index.md.Gisa2OKR.js +++ b/assets/olif-sy-1-k_index.md.BusScNUQ.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s as r,d as s,y as i,R as l,S as n,f as o,b as c}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const v=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://perso.numericable.fr/olivier.friker/synth/O3-synth%20V1.3.html","date_created":"2023-10-27T12:45:54.069Z","title":"OLIF SY1K","slug":"olif-sy-1-k","author":"Olivier Friker","author_link":null,"description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"3b9a5e11-3de3-46fe-9cdc-e1668b152f31","id":13,"sort":42,"clicks":145,"public":false,"is_new":false,"stats":[37]},"relativePath":"olif-sy-1-k/index.md","filePath":"olif-sy-1-k/index.md","lastUpdated":0}'),p={name:"olif-sy-1-k/index.md"},g=Object.assign(p,{setup(f){const{params:e,frontmatter:d}=r();return(m,u)=>{const t=a;return c(),s("div",null,[i(t,l(n(o(e))),null,16)])}}});export{v as __pageData,g as default}; +import{_ as a}from"./chunks/SynthPage.B19zwNJN.js";import{s as r,d as s,y as i,R as l,S as n,f as o,b as c}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const v=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://perso.numericable.fr/olivier.friker/synth/O3-synth%20V1.3.html","date_created":"2023-10-27T12:45:54.069Z","title":"OLIF SY1K","slug":"olif-sy-1-k","author":"Olivier Friker","author_link":null,"description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"3b9a5e11-3de3-46fe-9cdc-e1668b152f31","id":13,"sort":43,"clicks":145,"public":false,"is_new":false,"stats":[37]},"relativePath":"olif-sy-1-k/index.md","filePath":"olif-sy-1-k/index.md","lastUpdated":0}'),p={name:"olif-sy-1-k/index.md"},g=Object.assign(p,{setup(f){const{params:e,frontmatter:d}=r();return(m,u)=>{const t=a;return c(),s("div",null,[i(t,l(n(o(e))),null,16)])}}});export{v as __pageData,g as default}; diff --git a/assets/olif-sy-1-k_index.md.Gisa2OKR.lean.js b/assets/olif-sy-1-k_index.md.BusScNUQ.lean.js similarity index 87% rename from assets/olif-sy-1-k_index.md.Gisa2OKR.lean.js rename to assets/olif-sy-1-k_index.md.BusScNUQ.lean.js index 6351fb95..a1085dfd 100644 --- a/assets/olif-sy-1-k_index.md.Gisa2OKR.lean.js +++ b/assets/olif-sy-1-k_index.md.BusScNUQ.lean.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s as r,d as s,y as i,R as l,S as n,f as o,b as c}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const v=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://perso.numericable.fr/olivier.friker/synth/O3-synth%20V1.3.html","date_created":"2023-10-27T12:45:54.069Z","title":"OLIF SY1K","slug":"olif-sy-1-k","author":"Olivier Friker","author_link":null,"description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"3b9a5e11-3de3-46fe-9cdc-e1668b152f31","id":13,"sort":42,"clicks":145,"public":false,"is_new":false,"stats":[37]},"relativePath":"olif-sy-1-k/index.md","filePath":"olif-sy-1-k/index.md","lastUpdated":0}'),p={name:"olif-sy-1-k/index.md"},g=Object.assign(p,{setup(f){const{params:e,frontmatter:d}=r();return(m,u)=>{const t=a;return c(),s("div",null,[i(t,l(n(o(e))),null,16)])}}});export{v as __pageData,g as default}; +import{_ as a}from"./chunks/SynthPage.B19zwNJN.js";import{s as r,d as s,y as i,R as l,S as n,f as o,b as c}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const v=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://perso.numericable.fr/olivier.friker/synth/O3-synth%20V1.3.html","date_created":"2023-10-27T12:45:54.069Z","title":"OLIF SY1K","slug":"olif-sy-1-k","author":"Olivier Friker","author_link":null,"description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"3b9a5e11-3de3-46fe-9cdc-e1668b152f31","id":13,"sort":43,"clicks":145,"public":false,"is_new":false,"stats":[37]},"relativePath":"olif-sy-1-k/index.md","filePath":"olif-sy-1-k/index.md","lastUpdated":0}'),p={name:"olif-sy-1-k/index.md"},g=Object.assign(p,{setup(f){const{params:e,frontmatter:d}=r();return(m,u)=>{const t=a;return c(),s("div",null,[i(t,l(n(o(e))),null,16)])}}});export{v as __pageData,g as default}; diff --git a/assets/omni_index.md.CL84VQWW.js b/assets/omni_index.md.COPXpr4K.js similarity index 87% rename from assets/omni_index.md.CL84VQWW.js rename to assets/omni_index.md.COPXpr4K.js index f0256cac..05f22c87 100644 --- a/assets/omni_index.md.CL84VQWW.js +++ b/assets/omni_index.md.COPXpr4K.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as r,y as n,R as i,S as o,f as c,b as l}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://femurdesign.com/omni/","date_created":"2023-10-27T12:45:54.224Z","title":"Omni","slug":"omni","author":"Luke Phillips","author_link":"https://femurdesign.com/","description":null,"tags":["polyphonic","keyboard"],"archive_link":null,"archive":false,"iframe":true,"cover":"fbb1364f-53cf-4f71-8f29-d7f572308e78","id":20,"sort":29,"clicks":210,"public":false,"is_new":false,"stats":[24]},"relativePath":"omni/index.md","filePath":"omni/index.md","lastUpdated":0}'),m={name:"omni/index.md"},b=Object.assign(m,{setup(p){const{params:e,frontmatter:d}=s();return(f,u)=>{const t=a;return l(),r("div",null,[n(t,i(o(c(e))),null,16)])}}});export{y as __pageData,b as default}; +import{_ as a}from"./chunks/SynthPage.B19zwNJN.js";import{s,d as r,y as n,R as i,S as o,f as c,b as l}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://femurdesign.com/omni/","date_created":"2023-10-27T12:45:54.224Z","title":"Omni","slug":"omni","author":"Luke Phillips","author_link":"https://femurdesign.com/","description":null,"tags":["polyphonic","keyboard"],"archive_link":null,"archive":false,"iframe":true,"cover":"fbb1364f-53cf-4f71-8f29-d7f572308e78","id":20,"sort":30,"clicks":210,"public":false,"is_new":false,"stats":[24]},"relativePath":"omni/index.md","filePath":"omni/index.md","lastUpdated":0}'),m={name:"omni/index.md"},b=Object.assign(m,{setup(p){const{params:e,frontmatter:d}=s();return(f,u)=>{const t=a;return l(),r("div",null,[n(t,i(o(c(e))),null,16)])}}});export{y as __pageData,b as default}; diff --git a/assets/omni_index.md.CL84VQWW.lean.js b/assets/omni_index.md.COPXpr4K.lean.js similarity index 87% rename from assets/omni_index.md.CL84VQWW.lean.js rename to assets/omni_index.md.COPXpr4K.lean.js index f0256cac..05f22c87 100644 --- a/assets/omni_index.md.CL84VQWW.lean.js +++ b/assets/omni_index.md.COPXpr4K.lean.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as r,y as n,R as i,S as o,f as c,b as l}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://femurdesign.com/omni/","date_created":"2023-10-27T12:45:54.224Z","title":"Omni","slug":"omni","author":"Luke Phillips","author_link":"https://femurdesign.com/","description":null,"tags":["polyphonic","keyboard"],"archive_link":null,"archive":false,"iframe":true,"cover":"fbb1364f-53cf-4f71-8f29-d7f572308e78","id":20,"sort":29,"clicks":210,"public":false,"is_new":false,"stats":[24]},"relativePath":"omni/index.md","filePath":"omni/index.md","lastUpdated":0}'),m={name:"omni/index.md"},b=Object.assign(m,{setup(p){const{params:e,frontmatter:d}=s();return(f,u)=>{const t=a;return l(),r("div",null,[n(t,i(o(c(e))),null,16)])}}});export{y as __pageData,b as default}; +import{_ as a}from"./chunks/SynthPage.B19zwNJN.js";import{s,d as r,y as n,R as i,S as o,f as c,b as l}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://femurdesign.com/omni/","date_created":"2023-10-27T12:45:54.224Z","title":"Omni","slug":"omni","author":"Luke Phillips","author_link":"https://femurdesign.com/","description":null,"tags":["polyphonic","keyboard"],"archive_link":null,"archive":false,"iframe":true,"cover":"fbb1364f-53cf-4f71-8f29-d7f572308e78","id":20,"sort":30,"clicks":210,"public":false,"is_new":false,"stats":[24]},"relativePath":"omni/index.md","filePath":"omni/index.md","lastUpdated":0}'),m={name:"omni/index.md"},b=Object.assign(m,{setup(p){const{params:e,frontmatter:d}=s();return(f,u)=>{const t=a;return l(),r("div",null,[n(t,i(o(c(e))),null,16)])}}});export{y as __pageData,b as default}; diff --git a/assets/online-sequencer_index.md.DVTPW1I8.js b/assets/online-sequencer_index.md.CD43l8x6.js similarity index 98% rename from assets/online-sequencer_index.md.DVTPW1I8.js rename to assets/online-sequencer_index.md.CD43l8x6.js index 0d7d8988..124d1efa 100644 --- a/assets/online-sequencer_index.md.DVTPW1I8.js +++ b/assets/online-sequencer_index.md.CD43l8x6.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as n,y as i,R as o,S as r,f as l,B as u,b as c}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const d=u('

Online Sequencer is a web-based music sequencer that allows users to create music saved online, or on their computer. The piano roll is essential to the sequencer, which is on the left of the screen, with 72 notes from C2-B7 (labelled differently from a piano, C2 on the sequencer corresponds to C1 on a piano). In addition to several parameters which can be modified to change the sound of the music, additional functionality can be accessed via the console.

Upon opening the site, users can begin composing and "drawing" notes on the grid, with the default instrument being Electric Piano. By default, a sequence's time signature is set to 4/4, and the grid spacing is set to 1/4 (16 notes per measure). The note lengths can be adjusted by dragging the dark tab on the right of each note, and precision can be afforded by changing the 'Grid' option to other note divisions.

History ​

Online Sequencer was created on January 2, 2013 by Jacob Morgan during a break at Georgia Tech.

Beginning in the fall of 2013, accounts were available but were separate from the music portion of the site. They were only used in the forum and the website chat.

In 2015, accounts were linked to the main website and allowed songs to be saved under someone's username.

The World Update in 2018 added several new instruments and changed the landscape of sound design on the site. The "World Update Contest" was held for the update.

Starting in late 2020, OS began to receive a variety of updates which vastly improved the functionality of the site. These updates introduced features like custom grid sizes, automation with markers, extra reverb options, detune, and distortion. In 2021, the "Space Race" contest was held, as to see who could work best with the changes.

In late 2022, newer, higher-quality instruments were added. Some of the instruments, such as Electric Piano, Grand Piano, Violin, and Cello got an updated sustained version, while the original versions still exist under the "classic" designation.

Currently, the 10-Year Anniversary Contest is being held.

Features ​

Within the editor, numerous user interface features allow for various changes which will impact the individual sequence on that page.

Basic features ​

UI features include:

  • Tempo (10-999 BPM)
  • Measure count or Time count (MM: SS.ssss)
  • Time signature (2/4, 3/4, 4/4, 5/4)
  • Grid size (This correlates to note divisions; 1/16, 1/12, 1/8, 1/6, 1/4, 1/3, 1/2)
  • Auto Scroll (Fast, Smooth, Off; how the sequencer displays measures off-screen as a sequence plays)
  • Add an Audio Track (This won't be saved to the sequence but will play alongside it for ease of transcription)
  • Title input
  • Draw, select, and erase
  • Instrument dropdown, instrument options, and select instrument (selects all notes of the current instrument)
  • Select all, Cut, Copy, and Paste
  • Zoom options
  • Export options
  • Help
  • Fullscreen
  • Tooltips

Advanced features ​

Users can access more advanced features for use in their sequences by clicking the advanced tab on the instrument they wish to change. This menu contains options to change volume, panning, detune (-1200 to +1200), reverb, distortion, and an equalizer. This array lets users configure specific instruments to create specific sounds, and textures, or to accompany other instruments as a layer or development of the original sound.

OS also allows for commands to be entered in the browser console to manipulate different options in specific ways, such as setting custom to detune values (0-infinity), custom grid sizes, note divisions, and sequence ID amongst other things. These options bring OS closer to that of classic Digital Audio Workstations (DAWs) but are still limited in terms of accessibility and availability.

Browser and device support ​

Online Sequencer supports Chrome and other Chromium-based browsers, such as Microsoft Edge, Opera, and Brave. Firefox is also supported, but often with limited functionality. Safari and Internet Explorer are not supported, due to engine issues.

Other mobile browsers support sequence playback, but not editing. However, iOS users have the same problem with WebKit on macOS. However, unlike in macOS, all browsers (even Chromium-based browsers) use WebKit as the engine for iOS due to Apple prohibiting other engines for security reasons; iOS does not support Online Sequencer, other than chat and forums.

The website's user interface is formatted for proper use on desktops, but some pages such as the chat page, playlists, and forums should be formatted well on mobile devices.

',22),y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://onlinesequencer.net/","date_created":"2023-10-27T12:45:54.565Z","title":"Online sequencer","slug":"online-sequencer","author":"Jacob Morgan and George Burdell","author_link":"https://github.com/buildist","description":null,"tags":["sequencer"],"archive_link":null,"archive":false,"iframe":true,"cover":"ec08ba72-8157-4415-8b34-aea1fe686e09","id":36,"sort":27,"clicks":320,"public":false,"is_new":false,"stats":[22]},"relativePath":"online-sequencer/index.md","filePath":"online-sequencer/index.md","lastUpdated":0}'),h={name:"online-sequencer/index.md"},_=Object.assign(h,{setup(p){const{params:e,frontmatter:m}=s();return(f,b)=>{const t=a;return c(),n("div",null,[i(t,o(r(l(e))),null,16),d])}}});export{y as __pageData,_ as default}; +import{_ as a}from"./chunks/SynthPage.B19zwNJN.js";import{s,d as n,y as i,R as o,S as r,f as l,B as u,b as c}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const d=u('

Online Sequencer is a web-based music sequencer that allows users to create music saved online, or on their computer. The piano roll is essential to the sequencer, which is on the left of the screen, with 72 notes from C2-B7 (labelled differently from a piano, C2 on the sequencer corresponds to C1 on a piano). In addition to several parameters which can be modified to change the sound of the music, additional functionality can be accessed via the console.

Upon opening the site, users can begin composing and "drawing" notes on the grid, with the default instrument being Electric Piano. By default, a sequence's time signature is set to 4/4, and the grid spacing is set to 1/4 (16 notes per measure). The note lengths can be adjusted by dragging the dark tab on the right of each note, and precision can be afforded by changing the 'Grid' option to other note divisions.

History ​

Online Sequencer was created on January 2, 2013 by Jacob Morgan during a break at Georgia Tech.

Beginning in the fall of 2013, accounts were available but were separate from the music portion of the site. They were only used in the forum and the website chat.

In 2015, accounts were linked to the main website and allowed songs to be saved under someone's username.

The World Update in 2018 added several new instruments and changed the landscape of sound design on the site. The "World Update Contest" was held for the update.

Starting in late 2020, OS began to receive a variety of updates which vastly improved the functionality of the site. These updates introduced features like custom grid sizes, automation with markers, extra reverb options, detune, and distortion. In 2021, the "Space Race" contest was held, as to see who could work best with the changes.

In late 2022, newer, higher-quality instruments were added. Some of the instruments, such as Electric Piano, Grand Piano, Violin, and Cello got an updated sustained version, while the original versions still exist under the "classic" designation.

Currently, the 10-Year Anniversary Contest is being held.

Features ​

Within the editor, numerous user interface features allow for various changes which will impact the individual sequence on that page.

Basic features ​

UI features include:

  • Tempo (10-999 BPM)
  • Measure count or Time count (MM: SS.ssss)
  • Time signature (2/4, 3/4, 4/4, 5/4)
  • Grid size (This correlates to note divisions; 1/16, 1/12, 1/8, 1/6, 1/4, 1/3, 1/2)
  • Auto Scroll (Fast, Smooth, Off; how the sequencer displays measures off-screen as a sequence plays)
  • Add an Audio Track (This won't be saved to the sequence but will play alongside it for ease of transcription)
  • Title input
  • Draw, select, and erase
  • Instrument dropdown, instrument options, and select instrument (selects all notes of the current instrument)
  • Select all, Cut, Copy, and Paste
  • Zoom options
  • Export options
  • Help
  • Fullscreen
  • Tooltips

Advanced features ​

Users can access more advanced features for use in their sequences by clicking the advanced tab on the instrument they wish to change. This menu contains options to change volume, panning, detune (-1200 to +1200), reverb, distortion, and an equalizer. This array lets users configure specific instruments to create specific sounds, and textures, or to accompany other instruments as a layer or development of the original sound.

OS also allows for commands to be entered in the browser console to manipulate different options in specific ways, such as setting custom to detune values (0-infinity), custom grid sizes, note divisions, and sequence ID amongst other things. These options bring OS closer to that of classic Digital Audio Workstations (DAWs) but are still limited in terms of accessibility and availability.

Browser and device support ​

Online Sequencer supports Chrome and other Chromium-based browsers, such as Microsoft Edge, Opera, and Brave. Firefox is also supported, but often with limited functionality. Safari and Internet Explorer are not supported, due to engine issues.

Other mobile browsers support sequence playback, but not editing. However, iOS users have the same problem with WebKit on macOS. However, unlike in macOS, all browsers (even Chromium-based browsers) use WebKit as the engine for iOS due to Apple prohibiting other engines for security reasons; iOS does not support Online Sequencer, other than chat and forums.

The website's user interface is formatted for proper use on desktops, but some pages such as the chat page, playlists, and forums should be formatted well on mobile devices.

',22),y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://onlinesequencer.net/","date_created":"2023-10-27T12:45:54.565Z","title":"Online sequencer","slug":"online-sequencer","author":"Jacob Morgan and George Burdell","author_link":"https://github.com/buildist","description":null,"tags":["sequencer"],"archive_link":null,"archive":false,"iframe":true,"cover":"ec08ba72-8157-4415-8b34-aea1fe686e09","id":36,"sort":28,"clicks":321,"public":false,"is_new":false,"stats":[22]},"relativePath":"online-sequencer/index.md","filePath":"online-sequencer/index.md","lastUpdated":0}'),h={name:"online-sequencer/index.md"},_=Object.assign(h,{setup(p){const{params:e,frontmatter:m}=s();return(f,b)=>{const t=a;return c(),n("div",null,[i(t,o(r(l(e))),null,16),d])}}});export{y as __pageData,_ as default}; diff --git a/assets/online-sequencer_index.md.DVTPW1I8.lean.js b/assets/online-sequencer_index.md.CD43l8x6.lean.js similarity index 88% rename from assets/online-sequencer_index.md.DVTPW1I8.lean.js rename to assets/online-sequencer_index.md.CD43l8x6.lean.js index 72b542ea..23999c9e 100644 --- a/assets/online-sequencer_index.md.DVTPW1I8.lean.js +++ b/assets/online-sequencer_index.md.CD43l8x6.lean.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as n,y as i,R as o,S as r,f as l,B as u,b as c}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const d=u("",22),y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://onlinesequencer.net/","date_created":"2023-10-27T12:45:54.565Z","title":"Online sequencer","slug":"online-sequencer","author":"Jacob Morgan and George Burdell","author_link":"https://github.com/buildist","description":null,"tags":["sequencer"],"archive_link":null,"archive":false,"iframe":true,"cover":"ec08ba72-8157-4415-8b34-aea1fe686e09","id":36,"sort":27,"clicks":320,"public":false,"is_new":false,"stats":[22]},"relativePath":"online-sequencer/index.md","filePath":"online-sequencer/index.md","lastUpdated":0}'),h={name:"online-sequencer/index.md"},_=Object.assign(h,{setup(p){const{params:e,frontmatter:m}=s();return(f,b)=>{const t=a;return c(),n("div",null,[i(t,o(r(l(e))),null,16),d])}}});export{y as __pageData,_ as default}; +import{_ as a}from"./chunks/SynthPage.B19zwNJN.js";import{s,d as n,y as i,R as o,S as r,f as l,B as u,b as c}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const d=u("",22),y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://onlinesequencer.net/","date_created":"2023-10-27T12:45:54.565Z","title":"Online sequencer","slug":"online-sequencer","author":"Jacob Morgan and George Burdell","author_link":"https://github.com/buildist","description":null,"tags":["sequencer"],"archive_link":null,"archive":false,"iframe":true,"cover":"ec08ba72-8157-4415-8b34-aea1fe686e09","id":36,"sort":28,"clicks":321,"public":false,"is_new":false,"stats":[22]},"relativePath":"online-sequencer/index.md","filePath":"online-sequencer/index.md","lastUpdated":0}'),h={name:"online-sequencer/index.md"},_=Object.assign(h,{setup(p){const{params:e,frontmatter:m}=s();return(f,b)=>{const t=a;return c(),n("div",null,[i(t,o(r(l(e))),null,16),d])}}});export{y as __pageData,_ as default}; diff --git a/assets/pixel-synth_index.md.DqBlbh9_.js b/assets/pixel-synth_index.md.DP2JcS10.js similarity index 87% rename from assets/pixel-synth_index.md.DqBlbh9_.js rename to assets/pixel-synth_index.md.DP2JcS10.js index e5b85fa7..369bc654 100644 --- a/assets/pixel-synth_index.md.DqBlbh9_.js +++ b/assets/pixel-synth_index.md.DP2JcS10.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as r,y as i,R as n,S as l,f as c,b as o}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://ojack.github.io/PIXELSYNTH/","date_created":"2023-10-27T12:45:54.286Z","title":"PixelSynth","slug":"pixel-synth","author":"Olivia Jack","author_link":"https://ojack.xyz/","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"77369c22-944c-4f6a-83b5-85e16fe43abc","id":24,"sort":33,"clicks":217,"public":false,"is_new":false,"stats":[28]},"relativePath":"pixel-synth/index.md","filePath":"pixel-synth/index.md","lastUpdated":0}'),p={name:"pixel-synth/index.md"},k=Object.assign(p,{setup(_){const{params:t,frontmatter:d}=s();return(m,u)=>{const e=a;return o(),r("div",null,[i(e,n(l(c(t))),null,16)])}}});export{g as __pageData,k as default}; +import{_ as a}from"./chunks/SynthPage.B19zwNJN.js";import{s,d as r,y as i,R as n,S as l,f as c,b as o}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://ojack.github.io/PIXELSYNTH/","date_created":"2023-10-27T12:45:54.286Z","title":"PixelSynth","slug":"pixel-synth","author":"Olivia Jack","author_link":"https://ojack.xyz/","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"77369c22-944c-4f6a-83b5-85e16fe43abc","id":24,"sort":34,"clicks":217,"public":false,"is_new":false,"stats":[28]},"relativePath":"pixel-synth/index.md","filePath":"pixel-synth/index.md","lastUpdated":0}'),p={name:"pixel-synth/index.md"},k=Object.assign(p,{setup(_){const{params:t,frontmatter:d}=s();return(m,u)=>{const e=a;return o(),r("div",null,[i(e,n(l(c(t))),null,16)])}}});export{g as __pageData,k as default}; diff --git a/assets/pixel-synth_index.md.DqBlbh9_.lean.js b/assets/pixel-synth_index.md.DP2JcS10.lean.js similarity index 87% rename from assets/pixel-synth_index.md.DqBlbh9_.lean.js rename to assets/pixel-synth_index.md.DP2JcS10.lean.js index e5b85fa7..369bc654 100644 --- a/assets/pixel-synth_index.md.DqBlbh9_.lean.js +++ b/assets/pixel-synth_index.md.DP2JcS10.lean.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as r,y as i,R as n,S as l,f as c,b as o}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://ojack.github.io/PIXELSYNTH/","date_created":"2023-10-27T12:45:54.286Z","title":"PixelSynth","slug":"pixel-synth","author":"Olivia Jack","author_link":"https://ojack.xyz/","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"77369c22-944c-4f6a-83b5-85e16fe43abc","id":24,"sort":33,"clicks":217,"public":false,"is_new":false,"stats":[28]},"relativePath":"pixel-synth/index.md","filePath":"pixel-synth/index.md","lastUpdated":0}'),p={name:"pixel-synth/index.md"},k=Object.assign(p,{setup(_){const{params:t,frontmatter:d}=s();return(m,u)=>{const e=a;return o(),r("div",null,[i(e,n(l(c(t))),null,16)])}}});export{g as __pageData,k as default}; +import{_ as a}from"./chunks/SynthPage.B19zwNJN.js";import{s,d as r,y as i,R as n,S as l,f as c,b as o}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://ojack.github.io/PIXELSYNTH/","date_created":"2023-10-27T12:45:54.286Z","title":"PixelSynth","slug":"pixel-synth","author":"Olivia Jack","author_link":"https://ojack.xyz/","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"77369c22-944c-4f6a-83b5-85e16fe43abc","id":24,"sort":34,"clicks":217,"public":false,"is_new":false,"stats":[28]},"relativePath":"pixel-synth/index.md","filePath":"pixel-synth/index.md","lastUpdated":0}'),p={name:"pixel-synth/index.md"},k=Object.assign(p,{setup(_){const{params:t,frontmatter:d}=s();return(m,u)=>{const e=a;return o(),r("div",null,[i(e,n(l(c(t))),null,16)])}}});export{g as __pageData,k as default}; diff --git a/assets/roland50_index.md.Vb0qZb-L.js b/assets/roland50_index.md.BrTX2pyE.js similarity index 91% rename from assets/roland50_index.md.Vb0qZb-L.js rename to assets/roland50_index.md.BrTX2pyE.js index 3747f35c..f4a53418 100644 --- a/assets/roland50_index.md.Vb0qZb-L.js +++ b/assets/roland50_index.md.BrTX2pyE.js @@ -1 +1 @@ -import{_ as t}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as r,y as n,R as o,S as i,f as d,b as l}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const w=JSON.parse(`{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://roland50.studio/","date_created":"2023-11-25T05:42:57.573Z","title":"Roland 50 Studio","slug":"roland50","author":"Yuri Suzuki","author_link":"https://www.yurisuzuki.com/","description":"It's a professional sounding online musical interface, which records your masterpieces and allows you to share your creations through social media, messaging and also as a download.\\nOn top of the TR-808 drum machine and TB-303 bass synthesizer featured at the original 2020 release, now the sound of SH-101 synthesizer is added, and more sounds to come later in the year 2022, commemorating Roland's 50th anniversary.","tags":["drum machine","SP404","TR808","TB303","Step sequencer"],"archive_link":null,"archive":false,"iframe":true,"cover":"3b5aec13-7e50-475c-9165-bc963872515d","id":45,"sort":19,"clicks":17,"public":false,"is_new":false,"stats":[16]},"relativePath":"roland50/index.md","filePath":"roland50/index.md","lastUpdated":0}`),c={name:"roland50/index.md"},S=Object.assign(c,{setup(u){const{params:e,frontmatter:m}=s();return(p,h)=>{const a=t;return l(),r("div",null,[n(a,o(i(d(e))),null,16)])}}});export{w as __pageData,S as default}; +import{_ as t}from"./chunks/SynthPage.B19zwNJN.js";import{s,d as r,y as n,R as o,S as i,f as d,b as l}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const w=JSON.parse(`{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://roland50.studio/","date_created":"2023-11-25T05:42:57.573Z","title":"Roland 50 Studio","slug":"roland50","author":"Yuri Suzuki","author_link":"https://www.yurisuzuki.com/","description":"It's a professional sounding online musical interface, which records your masterpieces and allows you to share your creations through social media, messaging and also as a download.\\nOn top of the TR-808 drum machine and TB-303 bass synthesizer featured at the original 2020 release, now the sound of SH-101 synthesizer is added, and more sounds to come later in the year 2022, commemorating Roland's 50th anniversary.","tags":["drum machine","SP404","TR808","TB303","Step sequencer"],"archive_link":null,"archive":false,"iframe":true,"cover":"3b5aec13-7e50-475c-9165-bc963872515d","id":45,"sort":20,"clicks":17,"public":false,"is_new":false,"stats":[16]},"relativePath":"roland50/index.md","filePath":"roland50/index.md","lastUpdated":0}`),c={name:"roland50/index.md"},S=Object.assign(c,{setup(u){const{params:e,frontmatter:m}=s();return(p,h)=>{const a=t;return l(),r("div",null,[n(a,o(i(d(e))),null,16)])}}});export{w as __pageData,S as default}; diff --git a/assets/roland50_index.md.Vb0qZb-L.lean.js b/assets/roland50_index.md.BrTX2pyE.lean.js similarity index 91% rename from assets/roland50_index.md.Vb0qZb-L.lean.js rename to assets/roland50_index.md.BrTX2pyE.lean.js index 3747f35c..f4a53418 100644 --- a/assets/roland50_index.md.Vb0qZb-L.lean.js +++ b/assets/roland50_index.md.BrTX2pyE.lean.js @@ -1 +1 @@ -import{_ as t}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as r,y as n,R as o,S as i,f as d,b as l}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const w=JSON.parse(`{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://roland50.studio/","date_created":"2023-11-25T05:42:57.573Z","title":"Roland 50 Studio","slug":"roland50","author":"Yuri Suzuki","author_link":"https://www.yurisuzuki.com/","description":"It's a professional sounding online musical interface, which records your masterpieces and allows you to share your creations through social media, messaging and also as a download.\\nOn top of the TR-808 drum machine and TB-303 bass synthesizer featured at the original 2020 release, now the sound of SH-101 synthesizer is added, and more sounds to come later in the year 2022, commemorating Roland's 50th anniversary.","tags":["drum machine","SP404","TR808","TB303","Step sequencer"],"archive_link":null,"archive":false,"iframe":true,"cover":"3b5aec13-7e50-475c-9165-bc963872515d","id":45,"sort":19,"clicks":17,"public":false,"is_new":false,"stats":[16]},"relativePath":"roland50/index.md","filePath":"roland50/index.md","lastUpdated":0}`),c={name:"roland50/index.md"},S=Object.assign(c,{setup(u){const{params:e,frontmatter:m}=s();return(p,h)=>{const a=t;return l(),r("div",null,[n(a,o(i(d(e))),null,16)])}}});export{w as __pageData,S as default}; +import{_ as t}from"./chunks/SynthPage.B19zwNJN.js";import{s,d as r,y as n,R as o,S as i,f as d,b as l}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const w=JSON.parse(`{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://roland50.studio/","date_created":"2023-11-25T05:42:57.573Z","title":"Roland 50 Studio","slug":"roland50","author":"Yuri Suzuki","author_link":"https://www.yurisuzuki.com/","description":"It's a professional sounding online musical interface, which records your masterpieces and allows you to share your creations through social media, messaging and also as a download.\\nOn top of the TR-808 drum machine and TB-303 bass synthesizer featured at the original 2020 release, now the sound of SH-101 synthesizer is added, and more sounds to come later in the year 2022, commemorating Roland's 50th anniversary.","tags":["drum machine","SP404","TR808","TB303","Step sequencer"],"archive_link":null,"archive":false,"iframe":true,"cover":"3b5aec13-7e50-475c-9165-bc963872515d","id":45,"sort":20,"clicks":17,"public":false,"is_new":false,"stats":[16]},"relativePath":"roland50/index.md","filePath":"roland50/index.md","lastUpdated":0}`),c={name:"roland50/index.md"},S=Object.assign(c,{setup(u){const{params:e,frontmatter:m}=s();return(p,h)=>{const a=t;return l(),r("div",null,[n(a,o(i(d(e))),null,16)])}}});export{w as __pageData,S as default}; diff --git a/assets/sample-stich_index.md.BEflVudk.js b/assets/sample-stich_index.md.CNvttCPH.js similarity index 88% rename from assets/sample-stich_index.md.BEflVudk.js rename to assets/sample-stich_index.md.CNvttCPH.js index 12314b45..a59bf24e 100644 --- a/assets/sample-stich_index.md.BEflVudk.js +++ b/assets/sample-stich_index.md.CNvttCPH.js @@ -1 +1 @@ -import{_ as t}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as r,y as i,R as c,S as l,f as n,b as o}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const k=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://samplestitch.com.s3-website-us-east-1.amazonaws.com/","date_created":"2023-10-27T12:45:54.185Z","title":"Samplestich","slug":"sample-stich","author":"Matt Daniels","author_link":"https://mdaniels.com","description":null,"tags":["samples","keyboard"],"archive_link":null,"archive":false,"iframe":true,"cover":"89859f9f-0d45-44dc-93b6-98dfa2e7d799","id":18,"sort":36,"clicks":164,"public":false,"is_new":false,"stats":[31]},"relativePath":"sample-stich/index.md","filePath":"sample-stich/index.md","lastUpdated":0}'),m={name:"sample-stich/index.md"},v=Object.assign(m,{setup(p){const{params:a,frontmatter:d}=s();return(_,u)=>{const e=t;return o(),r("div",null,[i(e,c(l(n(a))),null,16)])}}});export{k as __pageData,v as default}; +import{_ as t}from"./chunks/SynthPage.B19zwNJN.js";import{s,d as r,y as i,R as c,S as l,f as n,b as o}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const k=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://samplestitch.com.s3-website-us-east-1.amazonaws.com/","date_created":"2023-10-27T12:45:54.185Z","title":"Samplestich","slug":"sample-stich","author":"Matt Daniels","author_link":"https://mdaniels.com","description":null,"tags":["samples","keyboard"],"archive_link":null,"archive":false,"iframe":true,"cover":"89859f9f-0d45-44dc-93b6-98dfa2e7d799","id":18,"sort":37,"clicks":164,"public":false,"is_new":false,"stats":[31]},"relativePath":"sample-stich/index.md","filePath":"sample-stich/index.md","lastUpdated":0}'),m={name:"sample-stich/index.md"},v=Object.assign(m,{setup(p){const{params:a,frontmatter:d}=s();return(_,u)=>{const e=t;return o(),r("div",null,[i(e,c(l(n(a))),null,16)])}}});export{k as __pageData,v as default}; diff --git a/assets/sample-stich_index.md.BEflVudk.lean.js b/assets/sample-stich_index.md.CNvttCPH.lean.js similarity index 88% rename from assets/sample-stich_index.md.BEflVudk.lean.js rename to assets/sample-stich_index.md.CNvttCPH.lean.js index 12314b45..a59bf24e 100644 --- a/assets/sample-stich_index.md.BEflVudk.lean.js +++ b/assets/sample-stich_index.md.CNvttCPH.lean.js @@ -1 +1 @@ -import{_ as t}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as r,y as i,R as c,S as l,f as n,b as o}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const k=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://samplestitch.com.s3-website-us-east-1.amazonaws.com/","date_created":"2023-10-27T12:45:54.185Z","title":"Samplestich","slug":"sample-stich","author":"Matt Daniels","author_link":"https://mdaniels.com","description":null,"tags":["samples","keyboard"],"archive_link":null,"archive":false,"iframe":true,"cover":"89859f9f-0d45-44dc-93b6-98dfa2e7d799","id":18,"sort":36,"clicks":164,"public":false,"is_new":false,"stats":[31]},"relativePath":"sample-stich/index.md","filePath":"sample-stich/index.md","lastUpdated":0}'),m={name:"sample-stich/index.md"},v=Object.assign(m,{setup(p){const{params:a,frontmatter:d}=s();return(_,u)=>{const e=t;return o(),r("div",null,[i(e,c(l(n(a))),null,16)])}}});export{k as __pageData,v as default}; +import{_ as t}from"./chunks/SynthPage.B19zwNJN.js";import{s,d as r,y as i,R as c,S as l,f as n,b as o}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const k=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://samplestitch.com.s3-website-us-east-1.amazonaws.com/","date_created":"2023-10-27T12:45:54.185Z","title":"Samplestich","slug":"sample-stich","author":"Matt Daniels","author_link":"https://mdaniels.com","description":null,"tags":["samples","keyboard"],"archive_link":null,"archive":false,"iframe":true,"cover":"89859f9f-0d45-44dc-93b6-98dfa2e7d799","id":18,"sort":37,"clicks":164,"public":false,"is_new":false,"stats":[31]},"relativePath":"sample-stich/index.md","filePath":"sample-stich/index.md","lastUpdated":0}'),m={name:"sample-stich/index.md"},v=Object.assign(m,{setup(p){const{params:a,frontmatter:d}=s();return(_,u)=>{const e=t;return o(),r("div",null,[i(e,c(l(n(a))),null,16)])}}});export{k as __pageData,v as default}; diff --git a/assets/sound-box_index.md.CEA_gYvJ.lean.js b/assets/sound-box_index.md.SIPDrKZA.js similarity index 89% rename from assets/sound-box_index.md.CEA_gYvJ.lean.js rename to assets/sound-box_index.md.SIPDrKZA.js index ed7309fc..05ca6488 100644 --- a/assets/sound-box_index.md.CEA_gYvJ.lean.js +++ b/assets/sound-box_index.md.SIPDrKZA.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s as o,d as r,y as n,R as i,S as c,f as l,g as t,b as d}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const u=t("p",null,[t("a",{href:"https://github.com/mbitsnbites/soundbox",target:"_blank",rel:"noreferrer"},"https://github.com/mbitsnbites/soundbox")],-1),v=JSON.parse(`{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://sb.bitsnbites.eu/","date_created":"2023-10-27T12:45:54.625Z","title":"Sound Box","slug":"sound-box","author":"Bits'n'bites","author_link":"https://gitlab.com/mbitsnbites","description":null,"tags":["tracker"],"archive_link":null,"archive":false,"iframe":true,"cover":"f2f825f3-a084-408b-86d1-2b64cf822c3c","id":38,"sort":28,"clicks":209,"public":false,"is_new":false,"stats":[23]},"relativePath":"sound-box/index.md","filePath":"sound-box/index.md","lastUpdated":0}`),p={name:"sound-box/index.md"},y=Object.assign(p,{setup(m){const{params:e,frontmatter:b}=o();return(_,f)=>{const s=a;return d(),r("div",null,[n(s,i(c(l(e))),null,16),u])}}});export{v as __pageData,y as default}; +import{_ as a}from"./chunks/SynthPage.B19zwNJN.js";import{s as o,d as r,y as n,R as i,S as c,f as l,g as t,b as d}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const u=t("p",null,[t("a",{href:"https://github.com/mbitsnbites/soundbox",target:"_blank",rel:"noreferrer"},"https://github.com/mbitsnbites/soundbox")],-1),v=JSON.parse(`{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://sb.bitsnbites.eu/","date_created":"2023-10-27T12:45:54.625Z","title":"Sound Box","slug":"sound-box","author":"Bits'n'bites","author_link":"https://gitlab.com/mbitsnbites","description":null,"tags":["tracker"],"archive_link":null,"archive":false,"iframe":true,"cover":"f2f825f3-a084-408b-86d1-2b64cf822c3c","id":38,"sort":29,"clicks":209,"public":false,"is_new":false,"stats":[23]},"relativePath":"sound-box/index.md","filePath":"sound-box/index.md","lastUpdated":0}`),p={name:"sound-box/index.md"},y=Object.assign(p,{setup(m){const{params:e,frontmatter:b}=o();return(_,f)=>{const s=a;return d(),r("div",null,[n(s,i(c(l(e))),null,16),u])}}});export{v as __pageData,y as default}; diff --git a/assets/sound-box_index.md.CEA_gYvJ.js b/assets/sound-box_index.md.SIPDrKZA.lean.js similarity index 89% rename from assets/sound-box_index.md.CEA_gYvJ.js rename to assets/sound-box_index.md.SIPDrKZA.lean.js index ed7309fc..05ca6488 100644 --- a/assets/sound-box_index.md.CEA_gYvJ.js +++ b/assets/sound-box_index.md.SIPDrKZA.lean.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s as o,d as r,y as n,R as i,S as c,f as l,g as t,b as d}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const u=t("p",null,[t("a",{href:"https://github.com/mbitsnbites/soundbox",target:"_blank",rel:"noreferrer"},"https://github.com/mbitsnbites/soundbox")],-1),v=JSON.parse(`{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://sb.bitsnbites.eu/","date_created":"2023-10-27T12:45:54.625Z","title":"Sound Box","slug":"sound-box","author":"Bits'n'bites","author_link":"https://gitlab.com/mbitsnbites","description":null,"tags":["tracker"],"archive_link":null,"archive":false,"iframe":true,"cover":"f2f825f3-a084-408b-86d1-2b64cf822c3c","id":38,"sort":28,"clicks":209,"public":false,"is_new":false,"stats":[23]},"relativePath":"sound-box/index.md","filePath":"sound-box/index.md","lastUpdated":0}`),p={name:"sound-box/index.md"},y=Object.assign(p,{setup(m){const{params:e,frontmatter:b}=o();return(_,f)=>{const s=a;return d(),r("div",null,[n(s,i(c(l(e))),null,16),u])}}});export{v as __pageData,y as default}; +import{_ as a}from"./chunks/SynthPage.B19zwNJN.js";import{s as o,d as r,y as n,R as i,S as c,f as l,g as t,b as d}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const u=t("p",null,[t("a",{href:"https://github.com/mbitsnbites/soundbox",target:"_blank",rel:"noreferrer"},"https://github.com/mbitsnbites/soundbox")],-1),v=JSON.parse(`{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://sb.bitsnbites.eu/","date_created":"2023-10-27T12:45:54.625Z","title":"Sound Box","slug":"sound-box","author":"Bits'n'bites","author_link":"https://gitlab.com/mbitsnbites","description":null,"tags":["tracker"],"archive_link":null,"archive":false,"iframe":true,"cover":"f2f825f3-a084-408b-86d1-2b64cf822c3c","id":38,"sort":29,"clicks":209,"public":false,"is_new":false,"stats":[23]},"relativePath":"sound-box/index.md","filePath":"sound-box/index.md","lastUpdated":0}`),p={name:"sound-box/index.md"},y=Object.assign(p,{setup(m){const{params:e,frontmatter:b}=o();return(_,f)=>{const s=a;return d(),r("div",null,[n(s,i(c(l(e))),null,16),u])}}});export{v as __pageData,y as default}; diff --git a/assets/sound-trap_index.md.P34yttG4.js b/assets/sound-trap_index.md.DeUmGQYN.js similarity index 87% rename from assets/sound-trap_index.md.P34yttG4.js rename to assets/sound-trap_index.md.DeUmGQYN.js index 71a26c5e..3b31b6c3 100644 --- a/assets/sound-trap_index.md.P34yttG4.js +++ b/assets/sound-trap_index.md.DeUmGQYN.js @@ -1 +1 @@ -import{_ as e}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as r,y as n,R as o,S as p,f as d,b as i}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const v=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.soundtrap.com/","date_created":"2023-10-27T12:45:54.155Z","title":"Sound Trap","slug":"sound-trap","author":"Soundtrap","author_link":"https://www.soundtrap.com/about","description":null,"tags":["daw"],"archive_link":null,"archive":false,"iframe":false,"cover":"63ef832a-f7da-4536-851f-4964005a89f1","id":17,"sort":46,"clicks":124,"public":false,"is_new":false,"stats":[41]},"relativePath":"sound-trap/index.md","filePath":"sound-trap/index.md","lastUpdated":0}'),c={name:"sound-trap/index.md"},k=Object.assign(c,{setup(l){const{params:a,frontmatter:u}=s();return(m,_)=>{const t=e;return i(),r("div",null,[n(t,o(p(d(a))),null,16)])}}});export{v as __pageData,k as default}; +import{_ as e}from"./chunks/SynthPage.B19zwNJN.js";import{s,d as r,y as n,R as o,S as p,f as d,b as i}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const v=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.soundtrap.com/","date_created":"2023-10-27T12:45:54.155Z","title":"Sound Trap","slug":"sound-trap","author":"Soundtrap","author_link":"https://www.soundtrap.com/about","description":null,"tags":["daw"],"archive_link":null,"archive":false,"iframe":false,"cover":"63ef832a-f7da-4536-851f-4964005a89f1","id":17,"sort":47,"clicks":124,"public":false,"is_new":false,"stats":[41]},"relativePath":"sound-trap/index.md","filePath":"sound-trap/index.md","lastUpdated":0}'),c={name:"sound-trap/index.md"},k=Object.assign(c,{setup(l){const{params:a,frontmatter:u}=s();return(m,_)=>{const t=e;return i(),r("div",null,[n(t,o(p(d(a))),null,16)])}}});export{v as __pageData,k as default}; diff --git a/assets/sound-trap_index.md.P34yttG4.lean.js b/assets/sound-trap_index.md.DeUmGQYN.lean.js similarity index 87% rename from assets/sound-trap_index.md.P34yttG4.lean.js rename to assets/sound-trap_index.md.DeUmGQYN.lean.js index 71a26c5e..3b31b6c3 100644 --- a/assets/sound-trap_index.md.P34yttG4.lean.js +++ b/assets/sound-trap_index.md.DeUmGQYN.lean.js @@ -1 +1 @@ -import{_ as e}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as r,y as n,R as o,S as p,f as d,b as i}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const v=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.soundtrap.com/","date_created":"2023-10-27T12:45:54.155Z","title":"Sound Trap","slug":"sound-trap","author":"Soundtrap","author_link":"https://www.soundtrap.com/about","description":null,"tags":["daw"],"archive_link":null,"archive":false,"iframe":false,"cover":"63ef832a-f7da-4536-851f-4964005a89f1","id":17,"sort":46,"clicks":124,"public":false,"is_new":false,"stats":[41]},"relativePath":"sound-trap/index.md","filePath":"sound-trap/index.md","lastUpdated":0}'),c={name:"sound-trap/index.md"},k=Object.assign(c,{setup(l){const{params:a,frontmatter:u}=s();return(m,_)=>{const t=e;return i(),r("div",null,[n(t,o(p(d(a))),null,16)])}}});export{v as __pageData,k as default}; +import{_ as e}from"./chunks/SynthPage.B19zwNJN.js";import{s,d as r,y as n,R as o,S as p,f as d,b as i}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const v=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.soundtrap.com/","date_created":"2023-10-27T12:45:54.155Z","title":"Sound Trap","slug":"sound-trap","author":"Soundtrap","author_link":"https://www.soundtrap.com/about","description":null,"tags":["daw"],"archive_link":null,"archive":false,"iframe":false,"cover":"63ef832a-f7da-4536-851f-4964005a89f1","id":17,"sort":47,"clicks":124,"public":false,"is_new":false,"stats":[41]},"relativePath":"sound-trap/index.md","filePath":"sound-trap/index.md","lastUpdated":0}'),c={name:"sound-trap/index.md"},k=Object.assign(c,{setup(l){const{params:a,frontmatter:u}=s();return(m,_)=>{const t=e;return i(),r("div",null,[n(t,o(p(d(a))),null,16)])}}});export{v as __pageData,k as default}; diff --git a/assets/soundfont_index.md.B2d0-Ban.js b/assets/soundfont_index.md.OAkXv37o.js similarity index 95% rename from assets/soundfont_index.md.B2d0-Ban.js rename to assets/soundfont_index.md.OAkXv37o.js index 8772dc7f..8e4b50e4 100644 --- a/assets/soundfont_index.md.B2d0-Ban.js +++ b/assets/soundfont_index.md.OAkXv37o.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as n,y as o,R as r,S as i,f as l,b as c}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://chromatone.center/practice/synth/soundfont/","date_created":"2023-12-18T10:20:56.985Z","title":"Soundfont Sampler Synth","slug":"soundfont","author":"Chromatone","author_link":"https://github.com/chromatone","description":"Free open source soundfont sampler online synthesizer. Very robust and hassle free way to play some straightforward sampled instruments like horns, xylophones and just piano sounds. Instantly playable instrument with about 90 presets out of the box. ","tags":["Poly","Keyboard","Sampler","MIDI"],"archive_link":null,"archive":false,"iframe":true,"cover":"26704e9d-5964-4a0f-940c-370c14777e95","id":51,"sort":8,"clicks":0,"public":true,"is_new":true,"stats":[43]},"relativePath":"soundfont/index.md","filePath":"soundfont/index.md","lastUpdated":0}'),p={name:"soundfont/index.md"},x=Object.assign(p,{setup(u){const{params:t,frontmatter:d}=s();return(m,f)=>{const e=a;return c(),n("div",null,[o(e,r(i(l(t))),null,16)])}}});export{g as __pageData,x as default}; +import{_ as a}from"./chunks/SynthPage.B19zwNJN.js";import{s,d as n,y as o,R as r,S as i,f as l,b as c}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://chromatone.center/practice/synth/soundfont/","date_created":"2023-12-18T10:20:56.985Z","title":"Soundfont Sampler Synth","slug":"soundfont","author":"Chromatone","author_link":"https://github.com/chromatone","description":"Free open source soundfont sampler online synthesizer. Very robust and hassle free way to play some straightforward sampled instruments like horns, xylophones and just piano sounds. Instantly playable instrument with about 90 presets out of the box. ","tags":["Poly","Keyboard","Sampler","MIDI"],"archive_link":null,"archive":false,"iframe":true,"cover":"26704e9d-5964-4a0f-940c-370c14777e95","id":51,"sort":8,"clicks":0,"public":true,"is_new":true,"stats":[43]},"relativePath":"soundfont/index.md","filePath":"soundfont/index.md","lastUpdated":0}'),p={name:"soundfont/index.md"},x=Object.assign(p,{setup(u){const{params:t,frontmatter:d}=s();return(m,f)=>{const e=a;return c(),n("div",null,[o(e,r(i(l(t))),null,16)])}}});export{g as __pageData,x as default}; diff --git a/assets/soundfont_index.md.B2d0-Ban.lean.js b/assets/soundfont_index.md.OAkXv37o.lean.js similarity index 95% rename from assets/soundfont_index.md.B2d0-Ban.lean.js rename to assets/soundfont_index.md.OAkXv37o.lean.js index 8772dc7f..8e4b50e4 100644 --- a/assets/soundfont_index.md.B2d0-Ban.lean.js +++ b/assets/soundfont_index.md.OAkXv37o.lean.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as n,y as o,R as r,S as i,f as l,b as c}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://chromatone.center/practice/synth/soundfont/","date_created":"2023-12-18T10:20:56.985Z","title":"Soundfont Sampler Synth","slug":"soundfont","author":"Chromatone","author_link":"https://github.com/chromatone","description":"Free open source soundfont sampler online synthesizer. Very robust and hassle free way to play some straightforward sampled instruments like horns, xylophones and just piano sounds. Instantly playable instrument with about 90 presets out of the box. ","tags":["Poly","Keyboard","Sampler","MIDI"],"archive_link":null,"archive":false,"iframe":true,"cover":"26704e9d-5964-4a0f-940c-370c14777e95","id":51,"sort":8,"clicks":0,"public":true,"is_new":true,"stats":[43]},"relativePath":"soundfont/index.md","filePath":"soundfont/index.md","lastUpdated":0}'),p={name:"soundfont/index.md"},x=Object.assign(p,{setup(u){const{params:t,frontmatter:d}=s();return(m,f)=>{const e=a;return c(),n("div",null,[o(e,r(i(l(t))),null,16)])}}});export{g as __pageData,x as default}; +import{_ as a}from"./chunks/SynthPage.B19zwNJN.js";import{s,d as n,y as o,R as r,S as i,f as l,b as c}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://chromatone.center/practice/synth/soundfont/","date_created":"2023-12-18T10:20:56.985Z","title":"Soundfont Sampler Synth","slug":"soundfont","author":"Chromatone","author_link":"https://github.com/chromatone","description":"Free open source soundfont sampler online synthesizer. Very robust and hassle free way to play some straightforward sampled instruments like horns, xylophones and just piano sounds. Instantly playable instrument with about 90 presets out of the box. ","tags":["Poly","Keyboard","Sampler","MIDI"],"archive_link":null,"archive":false,"iframe":true,"cover":"26704e9d-5964-4a0f-940c-370c14777e95","id":51,"sort":8,"clicks":0,"public":true,"is_new":true,"stats":[43]},"relativePath":"soundfont/index.md","filePath":"soundfont/index.md","lastUpdated":0}'),p={name:"soundfont/index.md"},x=Object.assign(p,{setup(u){const{params:t,frontmatter:d}=s();return(m,f)=>{const e=a;return c(),n("div",null,[o(e,r(i(l(t))),null,16)])}}});export{g as __pageData,x as default}; diff --git a/assets/sympathetic_index.md.B9hVY9QB.js b/assets/sympathetic_index.md.CdbkUUzW.js similarity index 94% rename from assets/sympathetic_index.md.B9hVY9QB.js rename to assets/sympathetic_index.md.CdbkUUzW.js index 9aa1fd4b..747cf8ad 100644 --- a/assets/sympathetic_index.md.B9hVY9QB.js +++ b/assets/sympathetic_index.md.CdbkUUzW.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as r,y as i,R as n,S as o,f as c,b as m}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://stuartmemo.com/synth/","date_created":"2023-10-27T12:45:54.586Z","title":"Sympathetic Synthesizer System Mk 1","slug":"sympathetic","author":"Stuart Memo ","author_link":"https://github.com/stuartmemo","description":null,"tags":["keyboard","midi","additive"],"archive_link":null,"archive":false,"iframe":true,"cover":"123aeb6d-c7b0-43dd-a852-98660bdf03f0","id":37,"sort":13,"clicks":302,"public":false,"is_new":false,"stats":[12]},"relativePath":"sympathetic/index.md","filePath":"sympathetic/index.md","lastUpdated":0}'),p={name:"sympathetic/index.md"},k=Object.assign(p,{setup(d){const{params:t,frontmatter:l}=s();return(u,_)=>{const e=a;return m(),r("div",null,[i(e,n(o(c(t))),null,16)])}}});export{g as __pageData,k as default}; +import{_ as a}from"./chunks/SynthPage.B19zwNJN.js";import{s,d as r,y as i,R as n,S as o,f as c,b as m}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://stuartmemo.com/synth/","date_created":"2023-10-27T12:45:54.586Z","title":"Sympathetic Synthesizer System Mk 1","slug":"sympathetic","author":"Stuart Memo ","author_link":"https://github.com/stuartmemo","description":null,"tags":["keyboard","midi","additive"],"archive_link":null,"archive":false,"iframe":true,"cover":"123aeb6d-c7b0-43dd-a852-98660bdf03f0","id":37,"sort":13,"clicks":302,"public":false,"is_new":false,"stats":[12]},"relativePath":"sympathetic/index.md","filePath":"sympathetic/index.md","lastUpdated":0}'),p={name:"sympathetic/index.md"},k=Object.assign(p,{setup(d){const{params:t,frontmatter:l}=s();return(u,_)=>{const e=a;return m(),r("div",null,[i(e,n(o(c(t))),null,16)])}}});export{g as __pageData,k as default}; diff --git a/assets/sympathetic_index.md.B9hVY9QB.lean.js b/assets/sympathetic_index.md.CdbkUUzW.lean.js similarity index 94% rename from assets/sympathetic_index.md.B9hVY9QB.lean.js rename to assets/sympathetic_index.md.CdbkUUzW.lean.js index 9aa1fd4b..747cf8ad 100644 --- a/assets/sympathetic_index.md.B9hVY9QB.lean.js +++ b/assets/sympathetic_index.md.CdbkUUzW.lean.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as r,y as i,R as n,S as o,f as c,b as m}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://stuartmemo.com/synth/","date_created":"2023-10-27T12:45:54.586Z","title":"Sympathetic Synthesizer System Mk 1","slug":"sympathetic","author":"Stuart Memo ","author_link":"https://github.com/stuartmemo","description":null,"tags":["keyboard","midi","additive"],"archive_link":null,"archive":false,"iframe":true,"cover":"123aeb6d-c7b0-43dd-a852-98660bdf03f0","id":37,"sort":13,"clicks":302,"public":false,"is_new":false,"stats":[12]},"relativePath":"sympathetic/index.md","filePath":"sympathetic/index.md","lastUpdated":0}'),p={name:"sympathetic/index.md"},k=Object.assign(p,{setup(d){const{params:t,frontmatter:l}=s();return(u,_)=>{const e=a;return m(),r("div",null,[i(e,n(o(c(t))),null,16)])}}});export{g as __pageData,k as default}; +import{_ as a}from"./chunks/SynthPage.B19zwNJN.js";import{s,d as r,y as i,R as n,S as o,f as c,b as m}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://stuartmemo.com/synth/","date_created":"2023-10-27T12:45:54.586Z","title":"Sympathetic Synthesizer System Mk 1","slug":"sympathetic","author":"Stuart Memo ","author_link":"https://github.com/stuartmemo","description":null,"tags":["keyboard","midi","additive"],"archive_link":null,"archive":false,"iframe":true,"cover":"123aeb6d-c7b0-43dd-a852-98660bdf03f0","id":37,"sort":13,"clicks":302,"public":false,"is_new":false,"stats":[12]},"relativePath":"sympathetic/index.md","filePath":"sympathetic/index.md","lastUpdated":0}'),p={name:"sympathetic/index.md"},k=Object.assign(p,{setup(d){const{params:t,frontmatter:l}=s();return(u,_)=>{const e=a;return m(),r("div",null,[i(e,n(o(c(t))),null,16)])}}});export{g as __pageData,k as default}; diff --git a/assets/tanguy-synth_index.md.D5X3OBcT.js b/assets/tanguy-synth_index.md.CmH5Xcd1.js similarity index 88% rename from assets/tanguy-synth_index.md.D5X3OBcT.js rename to assets/tanguy-synth_index.md.CmH5Xcd1.js index aad66ce2..f9a9973d 100644 --- a/assets/tanguy-synth_index.md.D5X3OBcT.js +++ b/assets/tanguy-synth_index.md.CmH5Xcd1.js @@ -1 +1 @@ -import{_ as e}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as n,y as r,R as o,S as i,f as c,b as l}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const k=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://tanguysynth.com/","date_created":"2023-10-27T12:45:54.036Z","title":"Tanguy synth","slug":"tanguy-synth","author":"Luke Teaford","author_link":"https://github.com/luketeaford","description":null,"tags":["monophonic","additive","keyboard"],"archive_link":null,"archive":false,"iframe":true,"cover":"5471a71e-7c5b-4ea6-aee0-1b394873c381","id":11,"sort":39,"clicks":117,"public":false,"is_new":false,"stats":[34]},"relativePath":"tanguy-synth/index.md","filePath":"tanguy-synth/index.md","lastUpdated":0}'),u={name:"tanguy-synth/index.md"},b=Object.assign(u,{setup(d){const{params:t,frontmatter:p}=s();return(m,_)=>{const a=e;return l(),n("div",null,[r(a,o(i(c(t))),null,16)])}}});export{k as __pageData,b as default}; +import{_ as e}from"./chunks/SynthPage.B19zwNJN.js";import{s,d as n,y as r,R as o,S as i,f as c,b as l}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const k=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://tanguysynth.com/","date_created":"2023-10-27T12:45:54.036Z","title":"Tanguy synth","slug":"tanguy-synth","author":"Luke Teaford","author_link":"https://github.com/luketeaford","description":null,"tags":["monophonic","additive","keyboard"],"archive_link":null,"archive":false,"iframe":true,"cover":"5471a71e-7c5b-4ea6-aee0-1b394873c381","id":11,"sort":40,"clicks":117,"public":false,"is_new":false,"stats":[34]},"relativePath":"tanguy-synth/index.md","filePath":"tanguy-synth/index.md","lastUpdated":0}'),u={name:"tanguy-synth/index.md"},b=Object.assign(u,{setup(d){const{params:t,frontmatter:p}=s();return(m,_)=>{const a=e;return l(),n("div",null,[r(a,o(i(c(t))),null,16)])}}});export{k as __pageData,b as default}; diff --git a/assets/tanguy-synth_index.md.D5X3OBcT.lean.js b/assets/tanguy-synth_index.md.CmH5Xcd1.lean.js similarity index 88% rename from assets/tanguy-synth_index.md.D5X3OBcT.lean.js rename to assets/tanguy-synth_index.md.CmH5Xcd1.lean.js index aad66ce2..f9a9973d 100644 --- a/assets/tanguy-synth_index.md.D5X3OBcT.lean.js +++ b/assets/tanguy-synth_index.md.CmH5Xcd1.lean.js @@ -1 +1 @@ -import{_ as e}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as n,y as r,R as o,S as i,f as c,b as l}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const k=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://tanguysynth.com/","date_created":"2023-10-27T12:45:54.036Z","title":"Tanguy synth","slug":"tanguy-synth","author":"Luke Teaford","author_link":"https://github.com/luketeaford","description":null,"tags":["monophonic","additive","keyboard"],"archive_link":null,"archive":false,"iframe":true,"cover":"5471a71e-7c5b-4ea6-aee0-1b394873c381","id":11,"sort":39,"clicks":117,"public":false,"is_new":false,"stats":[34]},"relativePath":"tanguy-synth/index.md","filePath":"tanguy-synth/index.md","lastUpdated":0}'),u={name:"tanguy-synth/index.md"},b=Object.assign(u,{setup(d){const{params:t,frontmatter:p}=s();return(m,_)=>{const a=e;return l(),n("div",null,[r(a,o(i(c(t))),null,16)])}}});export{k as __pageData,b as default}; +import{_ as e}from"./chunks/SynthPage.B19zwNJN.js";import{s,d as n,y as r,R as o,S as i,f as c,b as l}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const k=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://tanguysynth.com/","date_created":"2023-10-27T12:45:54.036Z","title":"Tanguy synth","slug":"tanguy-synth","author":"Luke Teaford","author_link":"https://github.com/luketeaford","description":null,"tags":["monophonic","additive","keyboard"],"archive_link":null,"archive":false,"iframe":true,"cover":"5471a71e-7c5b-4ea6-aee0-1b394873c381","id":11,"sort":40,"clicks":117,"public":false,"is_new":false,"stats":[34]},"relativePath":"tanguy-synth/index.md","filePath":"tanguy-synth/index.md","lastUpdated":0}'),u={name:"tanguy-synth/index.md"},b=Object.assign(u,{setup(d){const{params:t,frontmatter:p}=s();return(m,_)=>{const a=e;return l(),n("div",null,[r(a,o(i(c(t))),null,16)])}}});export{k as __pageData,b as default}; diff --git a/assets/theremin_index.md.liVXJJN1.js b/assets/theremin_index.md.CXNtky1n.js similarity index 93% rename from assets/theremin_index.md.liVXJJN1.js rename to assets/theremin_index.md.CXNtky1n.js index 319f5af8..d46bb847 100644 --- a/assets/theremin_index.md.liVXJJN1.js +++ b/assets/theremin_index.md.CXNtky1n.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s as r,d as s,y as n,R as i,S as m,f as o,b as c}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const k=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.femurdesign.com/theremin/","date_created":"2023-10-27T12:45:54.206Z","title":"Theremin","slug":"theremin","author":"Femur","author_link":"https://femurdesign.com/","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"6b22ef48-6830-4cf2-810d-809408033450","id":19,"sort":15,"clicks":320,"public":false,"is_new":false,"stats":[14]},"relativePath":"theremin/index.md","filePath":"theremin/index.md","lastUpdated":0}'),l={name:"theremin/index.md"},x=Object.assign(l,{setup(p){const{params:e,frontmatter:d}=r();return(u,_)=>{const t=a;return c(),s("div",null,[n(t,i(m(o(e))),null,16)])}}});export{k as __pageData,x as default}; +import{_ as a}from"./chunks/SynthPage.B19zwNJN.js";import{s as r,d as s,y as n,R as i,S as m,f as o,b as c}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const k=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.femurdesign.com/theremin/","date_created":"2023-10-27T12:45:54.206Z","title":"Theremin","slug":"theremin","author":"Femur","author_link":"https://femurdesign.com/","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"6b22ef48-6830-4cf2-810d-809408033450","id":19,"sort":15,"clicks":320,"public":false,"is_new":false,"stats":[14]},"relativePath":"theremin/index.md","filePath":"theremin/index.md","lastUpdated":0}'),l={name:"theremin/index.md"},x=Object.assign(l,{setup(p){const{params:e,frontmatter:d}=r();return(u,_)=>{const t=a;return c(),s("div",null,[n(t,i(m(o(e))),null,16)])}}});export{k as __pageData,x as default}; diff --git a/assets/theremin_index.md.liVXJJN1.lean.js b/assets/theremin_index.md.CXNtky1n.lean.js similarity index 93% rename from assets/theremin_index.md.liVXJJN1.lean.js rename to assets/theremin_index.md.CXNtky1n.lean.js index 319f5af8..d46bb847 100644 --- a/assets/theremin_index.md.liVXJJN1.lean.js +++ b/assets/theremin_index.md.CXNtky1n.lean.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s as r,d as s,y as n,R as i,S as m,f as o,b as c}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const k=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.femurdesign.com/theremin/","date_created":"2023-10-27T12:45:54.206Z","title":"Theremin","slug":"theremin","author":"Femur","author_link":"https://femurdesign.com/","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"6b22ef48-6830-4cf2-810d-809408033450","id":19,"sort":15,"clicks":320,"public":false,"is_new":false,"stats":[14]},"relativePath":"theremin/index.md","filePath":"theremin/index.md","lastUpdated":0}'),l={name:"theremin/index.md"},x=Object.assign(l,{setup(p){const{params:e,frontmatter:d}=r();return(u,_)=>{const t=a;return c(),s("div",null,[n(t,i(m(o(e))),null,16)])}}});export{k as __pageData,x as default}; +import{_ as a}from"./chunks/SynthPage.B19zwNJN.js";import{s as r,d as s,y as n,R as i,S as m,f as o,b as c}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const k=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.femurdesign.com/theremin/","date_created":"2023-10-27T12:45:54.206Z","title":"Theremin","slug":"theremin","author":"Femur","author_link":"https://femurdesign.com/","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"6b22ef48-6830-4cf2-810d-809408033450","id":19,"sort":15,"clicks":320,"public":false,"is_new":false,"stats":[14]},"relativePath":"theremin/index.md","filePath":"theremin/index.md","lastUpdated":0}'),l={name:"theremin/index.md"},x=Object.assign(l,{setup(p){const{params:e,frontmatter:d}=r();return(u,_)=>{const t=a;return c(),s("div",null,[n(t,i(m(o(e))),null,16)])}}});export{k as __pageData,x as default}; diff --git a/assets/touch-pianist_index.md.JrXfa-Ey.js b/assets/touch-pianist_index.md.EQqcc00y.js similarity index 92% rename from assets/touch-pianist_index.md.JrXfa-Ey.js rename to assets/touch-pianist_index.md.EQqcc00y.js index 721dbf07..f1b10d1b 100644 --- a/assets/touch-pianist_index.md.JrXfa-Ey.js +++ b/assets/touch-pianist_index.md.EQqcc00y.js @@ -1 +1 @@ -import{_ as s}from"./chunks/SynthPage.DHgkhPru.js";import{s as o,d as i,y as r,R as n,S as c,f as l,g as e,b as u}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const p=e("p",null,"Touch Pianist is a musical toy / instrument that allows the user to perform hard-to-play classical piano music favorites (from composers like Beethoven, Mozart, Bach, Satie, Debussy to name a few) just by tapping the rhythm of the piece's particular sound events on a computer keyboard or a touch screen.",-1),h=e("p",null,"It also provides live visualisation of the pieces that are being performed. There is no score keeping, the user is free to perform the music in any way they wish. The premise is that it is really fun to perform a piece you know well, exactly like you feel it with so little effort.",-1),m=e("p",null,"Touch Pianist has CoreMIDI support so you can use your favorite piano / sound plug-in in your computer as a sound source if you wish.",-1),P=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://touchpianist.com/","date_created":"2023-10-27T12:45:54.691Z","title":"Touch Pianist","slug":"touch-pianist","author":"EarSlap","author_link":null,"description":null,"tags":["entertainment","piano"],"archive_link":null,"archive":false,"iframe":false,"cover":"415deeeb-a843-4363-b6c9-78918aa688af","id":41,"sort":17,"clicks":177,"public":false,"is_new":false,"stats":[15]},"relativePath":"touch-pianist/index.md","filePath":"touch-pianist/index.md","lastUpdated":0}'),f={name:"touch-pianist/index.md"},x=Object.assign(f,{setup(d){const{params:t,frontmatter:_}=o();return(y,v)=>{const a=s;return u(),i("div",null,[r(a,n(c(l(t))),null,16),p,h,m])}}});export{P as __pageData,x as default}; +import{_ as s}from"./chunks/SynthPage.B19zwNJN.js";import{s as o,d as i,y as r,R as n,S as c,f as l,g as e,b as u}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const p=e("p",null,"Touch Pianist is a musical toy / instrument that allows the user to perform hard-to-play classical piano music favorites (from composers like Beethoven, Mozart, Bach, Satie, Debussy to name a few) just by tapping the rhythm of the piece's particular sound events on a computer keyboard or a touch screen.",-1),h=e("p",null,"It also provides live visualisation of the pieces that are being performed. There is no score keeping, the user is free to perform the music in any way they wish. The premise is that it is really fun to perform a piece you know well, exactly like you feel it with so little effort.",-1),m=e("p",null,"Touch Pianist has CoreMIDI support so you can use your favorite piano / sound plug-in in your computer as a sound source if you wish.",-1),P=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://touchpianist.com/","date_created":"2023-10-27T12:45:54.691Z","title":"Touch Pianist","slug":"touch-pianist","author":"EarSlap","author_link":null,"description":null,"tags":["entertainment","piano"],"archive_link":null,"archive":false,"iframe":false,"cover":"415deeeb-a843-4363-b6c9-78918aa688af","id":41,"sort":18,"clicks":177,"public":false,"is_new":false,"stats":[15]},"relativePath":"touch-pianist/index.md","filePath":"touch-pianist/index.md","lastUpdated":0}'),f={name:"touch-pianist/index.md"},x=Object.assign(f,{setup(d){const{params:t,frontmatter:_}=o();return(y,v)=>{const a=s;return u(),i("div",null,[r(a,n(c(l(t))),null,16),p,h,m])}}});export{P as __pageData,x as default}; diff --git a/assets/touch-pianist_index.md.JrXfa-Ey.lean.js b/assets/touch-pianist_index.md.EQqcc00y.lean.js similarity index 92% rename from assets/touch-pianist_index.md.JrXfa-Ey.lean.js rename to assets/touch-pianist_index.md.EQqcc00y.lean.js index 721dbf07..f1b10d1b 100644 --- a/assets/touch-pianist_index.md.JrXfa-Ey.lean.js +++ b/assets/touch-pianist_index.md.EQqcc00y.lean.js @@ -1 +1 @@ -import{_ as s}from"./chunks/SynthPage.DHgkhPru.js";import{s as o,d as i,y as r,R as n,S as c,f as l,g as e,b as u}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const p=e("p",null,"Touch Pianist is a musical toy / instrument that allows the user to perform hard-to-play classical piano music favorites (from composers like Beethoven, Mozart, Bach, Satie, Debussy to name a few) just by tapping the rhythm of the piece's particular sound events on a computer keyboard or a touch screen.",-1),h=e("p",null,"It also provides live visualisation of the pieces that are being performed. There is no score keeping, the user is free to perform the music in any way they wish. The premise is that it is really fun to perform a piece you know well, exactly like you feel it with so little effort.",-1),m=e("p",null,"Touch Pianist has CoreMIDI support so you can use your favorite piano / sound plug-in in your computer as a sound source if you wish.",-1),P=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://touchpianist.com/","date_created":"2023-10-27T12:45:54.691Z","title":"Touch Pianist","slug":"touch-pianist","author":"EarSlap","author_link":null,"description":null,"tags":["entertainment","piano"],"archive_link":null,"archive":false,"iframe":false,"cover":"415deeeb-a843-4363-b6c9-78918aa688af","id":41,"sort":17,"clicks":177,"public":false,"is_new":false,"stats":[15]},"relativePath":"touch-pianist/index.md","filePath":"touch-pianist/index.md","lastUpdated":0}'),f={name:"touch-pianist/index.md"},x=Object.assign(f,{setup(d){const{params:t,frontmatter:_}=o();return(y,v)=>{const a=s;return u(),i("div",null,[r(a,n(c(l(t))),null,16),p,h,m])}}});export{P as __pageData,x as default}; +import{_ as s}from"./chunks/SynthPage.B19zwNJN.js";import{s as o,d as i,y as r,R as n,S as c,f as l,g as e,b as u}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const p=e("p",null,"Touch Pianist is a musical toy / instrument that allows the user to perform hard-to-play classical piano music favorites (from composers like Beethoven, Mozart, Bach, Satie, Debussy to name a few) just by tapping the rhythm of the piece's particular sound events on a computer keyboard or a touch screen.",-1),h=e("p",null,"It also provides live visualisation of the pieces that are being performed. There is no score keeping, the user is free to perform the music in any way they wish. The premise is that it is really fun to perform a piece you know well, exactly like you feel it with so little effort.",-1),m=e("p",null,"Touch Pianist has CoreMIDI support so you can use your favorite piano / sound plug-in in your computer as a sound source if you wish.",-1),P=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://touchpianist.com/","date_created":"2023-10-27T12:45:54.691Z","title":"Touch Pianist","slug":"touch-pianist","author":"EarSlap","author_link":null,"description":null,"tags":["entertainment","piano"],"archive_link":null,"archive":false,"iframe":false,"cover":"415deeeb-a843-4363-b6c9-78918aa688af","id":41,"sort":18,"clicks":177,"public":false,"is_new":false,"stats":[15]},"relativePath":"touch-pianist/index.md","filePath":"touch-pianist/index.md","lastUpdated":0}'),f={name:"touch-pianist/index.md"},x=Object.assign(f,{setup(d){const{params:t,frontmatter:_}=o();return(y,v)=>{const a=s;return u(),i("div",null,[r(a,n(c(l(t))),null,16),p,h,m])}}});export{P as __pageData,x as default}; diff --git a/assets/touchme_index.md.BA04O2GJ.js b/assets/touchme_index.md.DQ8XRIQ7.js similarity index 93% rename from assets/touchme_index.md.BA04O2GJ.js rename to assets/touchme_index.md.DQ8XRIQ7.js index d4cf513a..0bc98c9e 100644 --- a/assets/touchme_index.md.BA04O2GJ.js +++ b/assets/touchme_index.md.DQ8XRIQ7.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s as r,d as o,y as s,R as n,S as c,f as i,b as m}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://touchme.chromatone.center/","date_created":"2023-10-27T12:45:53.941Z","title":"TouchME","slug":"touchme","author":"Chromatone","author_link":"https://chromatone.center","description":null,"tags":["chromatone","playtronica"],"archive_link":null,"archive":false,"iframe":true,"cover":"68062279-8e08-4953-ae8f-7a77c584948e","id":3,"sort":6,"clicks":3416,"public":true,"is_new":false,"stats":[6]},"relativePath":"touchme/index.md","filePath":"touchme/index.md","lastUpdated":0}'),l={name:"touchme/index.md"},k=Object.assign(l,{setup(p){const{params:e,frontmatter:u}=r();return(h,_)=>{const t=a;return m(),o("div",null,[s(t,n(c(i(e))),null,16)])}}});export{y as __pageData,k as default}; +import{_ as a}from"./chunks/SynthPage.B19zwNJN.js";import{s as r,d as o,y as s,R as n,S as c,f as i,b as m}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://touchme.chromatone.center/","date_created":"2023-10-27T12:45:53.941Z","title":"TouchME","slug":"touchme","author":"Chromatone","author_link":"https://chromatone.center","description":null,"tags":["chromatone","playtronica"],"archive_link":null,"archive":false,"iframe":true,"cover":"68062279-8e08-4953-ae8f-7a77c584948e","id":3,"sort":6,"clicks":3416,"public":true,"is_new":false,"stats":[6]},"relativePath":"touchme/index.md","filePath":"touchme/index.md","lastUpdated":0}'),l={name:"touchme/index.md"},k=Object.assign(l,{setup(p){const{params:e,frontmatter:u}=r();return(h,_)=>{const t=a;return m(),o("div",null,[s(t,n(c(i(e))),null,16)])}}});export{y as __pageData,k as default}; diff --git a/assets/touchme_index.md.BA04O2GJ.lean.js b/assets/touchme_index.md.DQ8XRIQ7.lean.js similarity index 93% rename from assets/touchme_index.md.BA04O2GJ.lean.js rename to assets/touchme_index.md.DQ8XRIQ7.lean.js index d4cf513a..0bc98c9e 100644 --- a/assets/touchme_index.md.BA04O2GJ.lean.js +++ b/assets/touchme_index.md.DQ8XRIQ7.lean.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s as r,d as o,y as s,R as n,S as c,f as i,b as m}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://touchme.chromatone.center/","date_created":"2023-10-27T12:45:53.941Z","title":"TouchME","slug":"touchme","author":"Chromatone","author_link":"https://chromatone.center","description":null,"tags":["chromatone","playtronica"],"archive_link":null,"archive":false,"iframe":true,"cover":"68062279-8e08-4953-ae8f-7a77c584948e","id":3,"sort":6,"clicks":3416,"public":true,"is_new":false,"stats":[6]},"relativePath":"touchme/index.md","filePath":"touchme/index.md","lastUpdated":0}'),l={name:"touchme/index.md"},k=Object.assign(l,{setup(p){const{params:e,frontmatter:u}=r();return(h,_)=>{const t=a;return m(),o("div",null,[s(t,n(c(i(e))),null,16)])}}});export{y as __pageData,k as default}; +import{_ as a}from"./chunks/SynthPage.B19zwNJN.js";import{s as r,d as o,y as s,R as n,S as c,f as i,b as m}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://touchme.chromatone.center/","date_created":"2023-10-27T12:45:53.941Z","title":"TouchME","slug":"touchme","author":"Chromatone","author_link":"https://chromatone.center","description":null,"tags":["chromatone","playtronica"],"archive_link":null,"archive":false,"iframe":true,"cover":"68062279-8e08-4953-ae8f-7a77c584948e","id":3,"sort":6,"clicks":3416,"public":true,"is_new":false,"stats":[6]},"relativePath":"touchme/index.md","filePath":"touchme/index.md","lastUpdated":0}'),l={name:"touchme/index.md"},k=Object.assign(l,{setup(p){const{params:e,frontmatter:u}=r();return(h,_)=>{const t=a;return m(),o("div",null,[s(t,n(c(i(e))),null,16)])}}});export{y as __pageData,k as default}; diff --git a/assets/typedrummer_index.md.BgD7csps.js b/assets/typedrummer_index.md.DDcMGeRo.js similarity index 88% rename from assets/typedrummer_index.md.BgD7csps.js rename to assets/typedrummer_index.md.DDcMGeRo.js index 41b6971c..66f05579 100644 --- a/assets/typedrummer_index.md.BgD7csps.js +++ b/assets/typedrummer_index.md.DDcMGeRo.js @@ -1 +1 @@ -import{_ as r}from"./chunks/SynthPage.DHgkhPru.js";import{s as a,d as s,y as m,R as o,S as n,f as c,b as p}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const k=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"http://typedrummer.com/","date_created":"2023-11-25T06:34:10.166Z","title":"Type Drummer","slug":"typedrummer","author":"Kyle Stetz","author_link":"http://kylestetz.com/","description":"Type your drum loops","tags":["sequencer","drums","Keyboard"],"archive_link":null,"archive":false,"iframe":true,"cover":"19454c82-7338-4144-9f1c-010c80a70a6e","id":48,"sort":47,"clicks":21,"public":false,"is_new":false,"stats":[42]},"relativePath":"typedrummer/index.md","filePath":"typedrummer/index.md","lastUpdated":0}'),i={name:"typedrummer/index.md"},v=Object.assign(i,{setup(d){const{params:e,frontmatter:l}=a();return(u,_)=>{const t=r;return p(),s("div",null,[m(t,o(n(c(e))),null,16)])}}});export{k as __pageData,v as default}; +import{_ as r}from"./chunks/SynthPage.B19zwNJN.js";import{s as a,d as s,y as m,R as o,S as n,f as c,b as p}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const k=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"http://typedrummer.com/","date_created":"2023-11-25T06:34:10.166Z","title":"Type Drummer","slug":"typedrummer","author":"Kyle Stetz","author_link":"http://kylestetz.com/","description":"Type your drum loops","tags":["sequencer","drums","Keyboard"],"archive_link":null,"archive":false,"iframe":true,"cover":"19454c82-7338-4144-9f1c-010c80a70a6e","id":48,"sort":48,"clicks":21,"public":false,"is_new":false,"stats":[42]},"relativePath":"typedrummer/index.md","filePath":"typedrummer/index.md","lastUpdated":0}'),i={name:"typedrummer/index.md"},v=Object.assign(i,{setup(d){const{params:e,frontmatter:l}=a();return(u,_)=>{const t=r;return p(),s("div",null,[m(t,o(n(c(e))),null,16)])}}});export{k as __pageData,v as default}; diff --git a/assets/typedrummer_index.md.BgD7csps.lean.js b/assets/typedrummer_index.md.DDcMGeRo.lean.js similarity index 88% rename from assets/typedrummer_index.md.BgD7csps.lean.js rename to assets/typedrummer_index.md.DDcMGeRo.lean.js index 41b6971c..66f05579 100644 --- a/assets/typedrummer_index.md.BgD7csps.lean.js +++ b/assets/typedrummer_index.md.DDcMGeRo.lean.js @@ -1 +1 @@ -import{_ as r}from"./chunks/SynthPage.DHgkhPru.js";import{s as a,d as s,y as m,R as o,S as n,f as c,b as p}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const k=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"http://typedrummer.com/","date_created":"2023-11-25T06:34:10.166Z","title":"Type Drummer","slug":"typedrummer","author":"Kyle Stetz","author_link":"http://kylestetz.com/","description":"Type your drum loops","tags":["sequencer","drums","Keyboard"],"archive_link":null,"archive":false,"iframe":true,"cover":"19454c82-7338-4144-9f1c-010c80a70a6e","id":48,"sort":47,"clicks":21,"public":false,"is_new":false,"stats":[42]},"relativePath":"typedrummer/index.md","filePath":"typedrummer/index.md","lastUpdated":0}'),i={name:"typedrummer/index.md"},v=Object.assign(i,{setup(d){const{params:e,frontmatter:l}=a();return(u,_)=>{const t=r;return p(),s("div",null,[m(t,o(n(c(e))),null,16)])}}});export{k as __pageData,v as default}; +import{_ as r}from"./chunks/SynthPage.B19zwNJN.js";import{s as a,d as s,y as m,R as o,S as n,f as c,b as p}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const k=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"http://typedrummer.com/","date_created":"2023-11-25T06:34:10.166Z","title":"Type Drummer","slug":"typedrummer","author":"Kyle Stetz","author_link":"http://kylestetz.com/","description":"Type your drum loops","tags":["sequencer","drums","Keyboard"],"archive_link":null,"archive":false,"iframe":true,"cover":"19454c82-7338-4144-9f1c-010c80a70a6e","id":48,"sort":48,"clicks":21,"public":false,"is_new":false,"stats":[42]},"relativePath":"typedrummer/index.md","filePath":"typedrummer/index.md","lastUpdated":0}'),i={name:"typedrummer/index.md"},v=Object.assign(i,{setup(d){const{params:e,frontmatter:l}=a();return(u,_)=>{const t=r;return p(),s("div",null,[m(t,o(n(c(e))),null,16)])}}});export{k as __pageData,v as default}; diff --git a/assets/video-sampler_index.md.Bbx11FMn.js b/assets/video-sampler_index.md.Fp916520.js similarity index 87% rename from assets/video-sampler_index.md.Bbx11FMn.js rename to assets/video-sampler_index.md.Fp916520.js index 865a74fc..0b113203 100644 --- a/assets/video-sampler_index.md.Bbx11FMn.js +++ b/assets/video-sampler_index.md.Fp916520.js @@ -1 +1 @@ -import{_ as t}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as r,y as i,R as n,S as o,f as l,b as c}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://seeing-sound.netlify.app/","date_created":"2023-10-27T12:45:54.492Z","title":"Video Sampler","slug":"video-sampler","author":"Playtronica","author_link":"https://shop.playtronica.com","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"b39cc546-2571-4402-84cd-f8497e27d0c9","id":31,"sort":21,"clicks":256,"public":false,"is_new":false,"stats":[18]},"relativePath":"video-sampler/index.md","filePath":"video-sampler/index.md","lastUpdated":0}'),p={name:"video-sampler/index.md"},P=Object.assign(p,{setup(d){const{params:e,frontmatter:m}=s();return(_,u)=>{const a=t;return c(),r("div",null,[i(a,n(o(l(e))),null,16)])}}});export{y as __pageData,P as default}; +import{_ as t}from"./chunks/SynthPage.B19zwNJN.js";import{s,d as r,y as i,R as n,S as o,f as l,b as c}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://seeing-sound.netlify.app/","date_created":"2023-10-27T12:45:54.492Z","title":"Video Sampler","slug":"video-sampler","author":"Playtronica","author_link":"https://shop.playtronica.com","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"b39cc546-2571-4402-84cd-f8497e27d0c9","id":31,"sort":22,"clicks":256,"public":false,"is_new":false,"stats":[18]},"relativePath":"video-sampler/index.md","filePath":"video-sampler/index.md","lastUpdated":0}'),p={name:"video-sampler/index.md"},P=Object.assign(p,{setup(d){const{params:e,frontmatter:m}=s();return(_,u)=>{const a=t;return c(),r("div",null,[i(a,n(o(l(e))),null,16)])}}});export{y as __pageData,P as default}; diff --git a/assets/video-sampler_index.md.Bbx11FMn.lean.js b/assets/video-sampler_index.md.Fp916520.lean.js similarity index 87% rename from assets/video-sampler_index.md.Bbx11FMn.lean.js rename to assets/video-sampler_index.md.Fp916520.lean.js index 865a74fc..0b113203 100644 --- a/assets/video-sampler_index.md.Bbx11FMn.lean.js +++ b/assets/video-sampler_index.md.Fp916520.lean.js @@ -1 +1 @@ -import{_ as t}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as r,y as i,R as n,S as o,f as l,b as c}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://seeing-sound.netlify.app/","date_created":"2023-10-27T12:45:54.492Z","title":"Video Sampler","slug":"video-sampler","author":"Playtronica","author_link":"https://shop.playtronica.com","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"b39cc546-2571-4402-84cd-f8497e27d0c9","id":31,"sort":21,"clicks":256,"public":false,"is_new":false,"stats":[18]},"relativePath":"video-sampler/index.md","filePath":"video-sampler/index.md","lastUpdated":0}'),p={name:"video-sampler/index.md"},P=Object.assign(p,{setup(d){const{params:e,frontmatter:m}=s();return(_,u)=>{const a=t;return c(),r("div",null,[i(a,n(o(l(e))),null,16)])}}});export{y as __pageData,P as default}; +import{_ as t}from"./chunks/SynthPage.B19zwNJN.js";import{s,d as r,y as i,R as n,S as o,f as l,b as c}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://seeing-sound.netlify.app/","date_created":"2023-10-27T12:45:54.492Z","title":"Video Sampler","slug":"video-sampler","author":"Playtronica","author_link":"https://shop.playtronica.com","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"b39cc546-2571-4402-84cd-f8497e27d0c9","id":31,"sort":22,"clicks":256,"public":false,"is_new":false,"stats":[18]},"relativePath":"video-sampler/index.md","filePath":"video-sampler/index.md","lastUpdated":0}'),p={name:"video-sampler/index.md"},P=Object.assign(p,{setup(d){const{params:e,frontmatter:m}=s();return(_,u)=>{const a=t;return c(),r("div",null,[i(a,n(o(l(e))),null,16)])}}});export{y as __pageData,P as default}; diff --git a/assets/virtual-piano_index.md.BIU4xc3c.js b/assets/virtual-piano_index.md.CVkX-1m_.js similarity index 91% rename from assets/virtual-piano_index.md.BIU4xc3c.js rename to assets/virtual-piano_index.md.CVkX-1m_.js index caff2d8f..c4a6cd49 100644 --- a/assets/virtual-piano_index.md.BIU4xc3c.js +++ b/assets/virtual-piano_index.md.CVkX-1m_.js @@ -1 +1 @@ -import{_ as n}from"./chunks/SynthPage.DHgkhPru.js";import{s as o,d as s,y as r,R as i,S as l,f as u,g as e,b as c}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const d=e("p",null,"VirtualPiano.eu is the online synthesizer that allows you to play 128 musical instruments for free using your PC keyboard, the mouse or by connecting an external MIDI keyboard.",-1),p=e("p",null,"You can adjust Volume, Reverb, Loop and quality. Use the sustain and adjust the octaves, you can also select and set different channels including the one for the drums.",-1),m=e("p",null,"Create your own melodies, have fun playing or use VirtualPiano to learn how to play the Piano online on your own.",-1),w=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://virtualpiano.eu/","date_created":"2023-10-27T12:45:54.542Z","title":"VirtualPiano.eu","slug":"virtual-piano","author":"WebSyrup","author_link":"https://websyrup.net/","description":null,"tags":["midi","keyboard"],"archive_link":null,"archive":false,"iframe":true,"cover":"9a59eea5-c77f-483c-9443-1cd0727e6dcc","id":35,"sort":26,"clicks":282,"public":false,"is_new":false,"stats":[21]},"relativePath":"virtual-piano/index.md","filePath":"virtual-piano/index.md","lastUpdated":0}'),_={name:"virtual-piano/index.md"},x=Object.assign(_,{setup(h){const{params:a,frontmatter:f}=o();return(y,v)=>{const t=n;return c(),s("div",null,[r(t,i(l(u(a))),null,16),d,p,m])}}});export{w as __pageData,x as default}; +import{_ as n}from"./chunks/SynthPage.B19zwNJN.js";import{s as o,d as s,y as r,R as i,S as l,f as u,g as e,b as c}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const d=e("p",null,"VirtualPiano.eu is the online synthesizer that allows you to play 128 musical instruments for free using your PC keyboard, the mouse or by connecting an external MIDI keyboard.",-1),p=e("p",null,"You can adjust Volume, Reverb, Loop and quality. Use the sustain and adjust the octaves, you can also select and set different channels including the one for the drums.",-1),m=e("p",null,"Create your own melodies, have fun playing or use VirtualPiano to learn how to play the Piano online on your own.",-1),w=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://virtualpiano.eu/","date_created":"2023-10-27T12:45:54.542Z","title":"VirtualPiano.eu","slug":"virtual-piano","author":"WebSyrup","author_link":"https://websyrup.net/","description":null,"tags":["midi","keyboard"],"archive_link":null,"archive":false,"iframe":true,"cover":"9a59eea5-c77f-483c-9443-1cd0727e6dcc","id":35,"sort":27,"clicks":282,"public":false,"is_new":false,"stats":[21]},"relativePath":"virtual-piano/index.md","filePath":"virtual-piano/index.md","lastUpdated":0}'),_={name:"virtual-piano/index.md"},x=Object.assign(_,{setup(h){const{params:a,frontmatter:f}=o();return(y,v)=>{const t=n;return c(),s("div",null,[r(t,i(l(u(a))),null,16),d,p,m])}}});export{w as __pageData,x as default}; diff --git a/assets/virtual-piano_index.md.BIU4xc3c.lean.js b/assets/virtual-piano_index.md.CVkX-1m_.lean.js similarity index 91% rename from assets/virtual-piano_index.md.BIU4xc3c.lean.js rename to assets/virtual-piano_index.md.CVkX-1m_.lean.js index caff2d8f..c4a6cd49 100644 --- a/assets/virtual-piano_index.md.BIU4xc3c.lean.js +++ b/assets/virtual-piano_index.md.CVkX-1m_.lean.js @@ -1 +1 @@ -import{_ as n}from"./chunks/SynthPage.DHgkhPru.js";import{s as o,d as s,y as r,R as i,S as l,f as u,g as e,b as c}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const d=e("p",null,"VirtualPiano.eu is the online synthesizer that allows you to play 128 musical instruments for free using your PC keyboard, the mouse or by connecting an external MIDI keyboard.",-1),p=e("p",null,"You can adjust Volume, Reverb, Loop and quality. Use the sustain and adjust the octaves, you can also select and set different channels including the one for the drums.",-1),m=e("p",null,"Create your own melodies, have fun playing or use VirtualPiano to learn how to play the Piano online on your own.",-1),w=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://virtualpiano.eu/","date_created":"2023-10-27T12:45:54.542Z","title":"VirtualPiano.eu","slug":"virtual-piano","author":"WebSyrup","author_link":"https://websyrup.net/","description":null,"tags":["midi","keyboard"],"archive_link":null,"archive":false,"iframe":true,"cover":"9a59eea5-c77f-483c-9443-1cd0727e6dcc","id":35,"sort":26,"clicks":282,"public":false,"is_new":false,"stats":[21]},"relativePath":"virtual-piano/index.md","filePath":"virtual-piano/index.md","lastUpdated":0}'),_={name:"virtual-piano/index.md"},x=Object.assign(_,{setup(h){const{params:a,frontmatter:f}=o();return(y,v)=>{const t=n;return c(),s("div",null,[r(t,i(l(u(a))),null,16),d,p,m])}}});export{w as __pageData,x as default}; +import{_ as n}from"./chunks/SynthPage.B19zwNJN.js";import{s as o,d as s,y as r,R as i,S as l,f as u,g as e,b as c}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const d=e("p",null,"VirtualPiano.eu is the online synthesizer that allows you to play 128 musical instruments for free using your PC keyboard, the mouse or by connecting an external MIDI keyboard.",-1),p=e("p",null,"You can adjust Volume, Reverb, Loop and quality. Use the sustain and adjust the octaves, you can also select and set different channels including the one for the drums.",-1),m=e("p",null,"Create your own melodies, have fun playing or use VirtualPiano to learn how to play the Piano online on your own.",-1),w=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://virtualpiano.eu/","date_created":"2023-10-27T12:45:54.542Z","title":"VirtualPiano.eu","slug":"virtual-piano","author":"WebSyrup","author_link":"https://websyrup.net/","description":null,"tags":["midi","keyboard"],"archive_link":null,"archive":false,"iframe":true,"cover":"9a59eea5-c77f-483c-9443-1cd0727e6dcc","id":35,"sort":27,"clicks":282,"public":false,"is_new":false,"stats":[21]},"relativePath":"virtual-piano/index.md","filePath":"virtual-piano/index.md","lastUpdated":0}'),_={name:"virtual-piano/index.md"},x=Object.assign(_,{setup(h){const{params:a,frontmatter:f}=o();return(y,v)=>{const t=n;return c(),s("div",null,[r(t,i(l(u(a))),null,16),d,p,m])}}});export{w as __pageData,x as default}; diff --git a/assets/waveform_index.md.CU21Le1y.js b/assets/waveform_index.md.BMgbw7Z5.js similarity index 87% rename from assets/waveform_index.md.CU21Le1y.js rename to assets/waveform_index.md.BMgbw7Z5.js index 7b285492..ff4bfabe 100644 --- a/assets/waveform_index.md.CU21Le1y.js +++ b/assets/waveform_index.md.BMgbw7Z5.js @@ -1 +1 @@ -import{_ as t}from"./chunks/SynthPage.DHgkhPru.js";import{s as r,d as o,y as s,R as n,S as i,f as c,b as l}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://waveform.playtronica.com/","date_created":"2023-10-27T12:45:54.644Z","title":"Waveform","slug":"waveform","author":"Qvantor","author_link":"https://github.com/qvantor/","description":null,"tags":["playtronica","polyphonic","midi"],"archive_link":null,"archive":false,"iframe":true,"cover":"86cb9385-9deb-4f10-95cb-765980156e65","id":39,"sort":2,"clicks":6794,"public":true,"is_new":false,"stats":[2]},"relativePath":"waveform/index.md","filePath":"waveform/index.md","lastUpdated":0}'),m={name:"waveform/index.md"},b=Object.assign(m,{setup(p){const{params:a,frontmatter:d}=r();return(f,_)=>{const e=t;return l(),o("div",null,[s(e,n(i(c(a))),null,16)])}}});export{y as __pageData,b as default}; +import{_ as t}from"./chunks/SynthPage.B19zwNJN.js";import{s as r,d as o,y as s,R as n,S as i,f as c,b as l}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://waveform.playtronica.com/","date_created":"2023-10-27T12:45:54.644Z","title":"Waveform","slug":"waveform","author":"Qvantor","author_link":"https://github.com/qvantor/","description":null,"tags":["playtronica","polyphonic","midi"],"archive_link":null,"archive":false,"iframe":true,"cover":"86cb9385-9deb-4f10-95cb-765980156e65","id":39,"sort":2,"clicks":6795,"public":true,"is_new":false,"stats":[2]},"relativePath":"waveform/index.md","filePath":"waveform/index.md","lastUpdated":0}'),m={name:"waveform/index.md"},b=Object.assign(m,{setup(p){const{params:a,frontmatter:d}=r();return(f,_)=>{const e=t;return l(),o("div",null,[s(e,n(i(c(a))),null,16)])}}});export{y as __pageData,b as default}; diff --git a/assets/waveform_index.md.CU21Le1y.lean.js b/assets/waveform_index.md.BMgbw7Z5.lean.js similarity index 87% rename from assets/waveform_index.md.CU21Le1y.lean.js rename to assets/waveform_index.md.BMgbw7Z5.lean.js index 7b285492..ff4bfabe 100644 --- a/assets/waveform_index.md.CU21Le1y.lean.js +++ b/assets/waveform_index.md.BMgbw7Z5.lean.js @@ -1 +1 @@ -import{_ as t}from"./chunks/SynthPage.DHgkhPru.js";import{s as r,d as o,y as s,R as n,S as i,f as c,b as l}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://waveform.playtronica.com/","date_created":"2023-10-27T12:45:54.644Z","title":"Waveform","slug":"waveform","author":"Qvantor","author_link":"https://github.com/qvantor/","description":null,"tags":["playtronica","polyphonic","midi"],"archive_link":null,"archive":false,"iframe":true,"cover":"86cb9385-9deb-4f10-95cb-765980156e65","id":39,"sort":2,"clicks":6794,"public":true,"is_new":false,"stats":[2]},"relativePath":"waveform/index.md","filePath":"waveform/index.md","lastUpdated":0}'),m={name:"waveform/index.md"},b=Object.assign(m,{setup(p){const{params:a,frontmatter:d}=r();return(f,_)=>{const e=t;return l(),o("div",null,[s(e,n(i(c(a))),null,16)])}}});export{y as __pageData,b as default}; +import{_ as t}from"./chunks/SynthPage.B19zwNJN.js";import{s as r,d as o,y as s,R as n,S as i,f as c,b as l}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://waveform.playtronica.com/","date_created":"2023-10-27T12:45:54.644Z","title":"Waveform","slug":"waveform","author":"Qvantor","author_link":"https://github.com/qvantor/","description":null,"tags":["playtronica","polyphonic","midi"],"archive_link":null,"archive":false,"iframe":true,"cover":"86cb9385-9deb-4f10-95cb-765980156e65","id":39,"sort":2,"clicks":6795,"public":true,"is_new":false,"stats":[2]},"relativePath":"waveform/index.md","filePath":"waveform/index.md","lastUpdated":0}'),m={name:"waveform/index.md"},b=Object.assign(m,{setup(p){const{params:a,frontmatter:d}=r();return(f,_)=>{const e=t;return l(),o("div",null,[s(e,n(i(c(a))),null,16)])}}});export{y as __pageData,b as default}; diff --git a/assets/web-audio-synth-v2_index.md.DVDfxtBK.js b/assets/web-audio-synth-v2_index.md.mytGv9SF.js similarity index 87% rename from assets/web-audio-synth-v2_index.md.DVDfxtBK.js rename to assets/web-audio-synth-v2_index.md.mytGv9SF.js index 2e966ece..5fbde76b 100644 --- a/assets/web-audio-synth-v2_index.md.DVDfxtBK.js +++ b/assets/web-audio-synth-v2_index.md.mytGv9SF.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as n,y as r,R as i,S as o,f as l,b as c}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://aikelab.net/websynthv2/","date_created":"2023-10-27T12:45:54.141Z","title":"WebAudioSynth V2","slug":"web-audio-synth-v2","author":"like","author_link":"https://github.com/aike/","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"ac668fba-7226-43dc-a91f-bd21a31446e5","id":16,"sort":44,"clicks":305,"public":false,"is_new":false,"stats":[39]},"relativePath":"web-audio-synth-v2/index.md","filePath":"web-audio-synth-v2/index.md","lastUpdated":0}'),d={name:"web-audio-synth-v2/index.md"},g=Object.assign(d,{setup(u){const{params:e,frontmatter:p}=s();return(m,_)=>{const t=a;return c(),n("div",null,[r(t,i(o(l(e))),null,16)])}}});export{y as __pageData,g as default}; +import{_ as a}from"./chunks/SynthPage.B19zwNJN.js";import{s,d as n,y as r,R as i,S as o,f as l,b as c}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://aikelab.net/websynthv2/","date_created":"2023-10-27T12:45:54.141Z","title":"WebAudioSynth V2","slug":"web-audio-synth-v2","author":"like","author_link":"https://github.com/aike/","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"ac668fba-7226-43dc-a91f-bd21a31446e5","id":16,"sort":45,"clicks":305,"public":false,"is_new":false,"stats":[39]},"relativePath":"web-audio-synth-v2/index.md","filePath":"web-audio-synth-v2/index.md","lastUpdated":0}'),d={name:"web-audio-synth-v2/index.md"},g=Object.assign(d,{setup(u){const{params:e,frontmatter:p}=s();return(m,_)=>{const t=a;return c(),n("div",null,[r(t,i(o(l(e))),null,16)])}}});export{y as __pageData,g as default}; diff --git a/assets/web-audio-synth-v2_index.md.DVDfxtBK.lean.js b/assets/web-audio-synth-v2_index.md.mytGv9SF.lean.js similarity index 87% rename from assets/web-audio-synth-v2_index.md.DVDfxtBK.lean.js rename to assets/web-audio-synth-v2_index.md.mytGv9SF.lean.js index 2e966ece..5fbde76b 100644 --- a/assets/web-audio-synth-v2_index.md.DVDfxtBK.lean.js +++ b/assets/web-audio-synth-v2_index.md.mytGv9SF.lean.js @@ -1 +1 @@ -import{_ as a}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as n,y as r,R as i,S as o,f as l,b as c}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://aikelab.net/websynthv2/","date_created":"2023-10-27T12:45:54.141Z","title":"WebAudioSynth V2","slug":"web-audio-synth-v2","author":"like","author_link":"https://github.com/aike/","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"ac668fba-7226-43dc-a91f-bd21a31446e5","id":16,"sort":44,"clicks":305,"public":false,"is_new":false,"stats":[39]},"relativePath":"web-audio-synth-v2/index.md","filePath":"web-audio-synth-v2/index.md","lastUpdated":0}'),d={name:"web-audio-synth-v2/index.md"},g=Object.assign(d,{setup(u){const{params:e,frontmatter:p}=s();return(m,_)=>{const t=a;return c(),n("div",null,[r(t,i(o(l(e))),null,16)])}}});export{y as __pageData,g as default}; +import{_ as a}from"./chunks/SynthPage.B19zwNJN.js";import{s,d as n,y as r,R as i,S as o,f as l,b as c}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const y=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://aikelab.net/websynthv2/","date_created":"2023-10-27T12:45:54.141Z","title":"WebAudioSynth V2","slug":"web-audio-synth-v2","author":"like","author_link":"https://github.com/aike/","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"ac668fba-7226-43dc-a91f-bd21a31446e5","id":16,"sort":45,"clicks":305,"public":false,"is_new":false,"stats":[39]},"relativePath":"web-audio-synth-v2/index.md","filePath":"web-audio-synth-v2/index.md","lastUpdated":0}'),d={name:"web-audio-synth-v2/index.md"},g=Object.assign(d,{setup(u){const{params:e,frontmatter:p}=s();return(m,_)=>{const t=a;return c(),n("div",null,[r(t,i(o(l(e))),null,16)])}}});export{y as __pageData,g as default}; diff --git a/assets/web-modular_index.md.BqKHl3qJ.js b/assets/web-modular_index.md.CSZ2i0Av.js similarity index 87% rename from assets/web-modular_index.md.BqKHl3qJ.js rename to assets/web-modular_index.md.CSZ2i0Av.js index ea8ce3c7..b5203866 100644 --- a/assets/web-modular_index.md.BqKHl3qJ.js +++ b/assets/web-modular_index.md.CSZ2i0Av.js @@ -1 +1 @@ -import{_ as t}from"./chunks/SynthPage.DHgkhPru.js";import{s as r,d as s,y as o,R as l,S as n,f as c,b as i}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const w=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.g200kg.com/docs/webmodular/","date_created":"2023-10-27T12:45:54.252Z","title":"Web Modular","slug":"web-modular","author":"g200kg","author_link":"https://www.g200kg.com/","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"48e0280c-f7ff-4308-bde3-973b7febe89c","id":21,"sort":30,"clicks":202,"public":false,"is_new":false,"stats":[25]},"relativePath":"web-modular/index.md","filePath":"web-modular/index.md","lastUpdated":0}'),d={name:"web-modular/index.md"},k=Object.assign(d,{setup(m){const{params:e,frontmatter:u}=r();return(p,_)=>{const a=t;return i(),s("div",null,[o(a,l(n(c(e))),null,16)])}}});export{w as __pageData,k as default}; +import{_ as t}from"./chunks/SynthPage.B19zwNJN.js";import{s as r,d as s,y as o,R as l,S as n,f as c,b as i}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const w=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.g200kg.com/docs/webmodular/","date_created":"2023-10-27T12:45:54.252Z","title":"Web Modular","slug":"web-modular","author":"g200kg","author_link":"https://www.g200kg.com/","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"48e0280c-f7ff-4308-bde3-973b7febe89c","id":21,"sort":31,"clicks":202,"public":false,"is_new":false,"stats":[25]},"relativePath":"web-modular/index.md","filePath":"web-modular/index.md","lastUpdated":0}'),d={name:"web-modular/index.md"},k=Object.assign(d,{setup(m){const{params:e,frontmatter:u}=r();return(p,_)=>{const a=t;return i(),s("div",null,[o(a,l(n(c(e))),null,16)])}}});export{w as __pageData,k as default}; diff --git a/assets/web-modular_index.md.BqKHl3qJ.lean.js b/assets/web-modular_index.md.CSZ2i0Av.lean.js similarity index 87% rename from assets/web-modular_index.md.BqKHl3qJ.lean.js rename to assets/web-modular_index.md.CSZ2i0Av.lean.js index ea8ce3c7..b5203866 100644 --- a/assets/web-modular_index.md.BqKHl3qJ.lean.js +++ b/assets/web-modular_index.md.CSZ2i0Av.lean.js @@ -1 +1 @@ -import{_ as t}from"./chunks/SynthPage.DHgkhPru.js";import{s as r,d as s,y as o,R as l,S as n,f as c,b as i}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const w=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.g200kg.com/docs/webmodular/","date_created":"2023-10-27T12:45:54.252Z","title":"Web Modular","slug":"web-modular","author":"g200kg","author_link":"https://www.g200kg.com/","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"48e0280c-f7ff-4308-bde3-973b7febe89c","id":21,"sort":30,"clicks":202,"public":false,"is_new":false,"stats":[25]},"relativePath":"web-modular/index.md","filePath":"web-modular/index.md","lastUpdated":0}'),d={name:"web-modular/index.md"},k=Object.assign(d,{setup(m){const{params:e,frontmatter:u}=r();return(p,_)=>{const a=t;return i(),s("div",null,[o(a,l(n(c(e))),null,16)])}}});export{w as __pageData,k as default}; +import{_ as t}from"./chunks/SynthPage.B19zwNJN.js";import{s as r,d as s,y as o,R as l,S as n,f as c,b as i}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const w=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.g200kg.com/docs/webmodular/","date_created":"2023-10-27T12:45:54.252Z","title":"Web Modular","slug":"web-modular","author":"g200kg","author_link":"https://www.g200kg.com/","description":null,"tags":null,"archive_link":null,"archive":false,"iframe":true,"cover":"48e0280c-f7ff-4308-bde3-973b7febe89c","id":21,"sort":31,"clicks":202,"public":false,"is_new":false,"stats":[25]},"relativePath":"web-modular/index.md","filePath":"web-modular/index.md","lastUpdated":0}'),d={name:"web-modular/index.md"},k=Object.assign(d,{setup(m){const{params:e,frontmatter:u}=r();return(p,_)=>{const a=t;return i(),s("div",null,[o(a,l(n(c(e))),null,16)])}}});export{w as __pageData,k as default}; diff --git a/assets/web-sid_index.md.BQ4SubTk.js b/assets/web-sid_index.md.Dr-XVffJ.js similarity index 88% rename from assets/web-sid_index.md.BQ4SubTk.js rename to assets/web-sid_index.md.Dr-XVffJ.js index 78f42425..302b9cf7 100644 --- a/assets/web-sid_index.md.BQ4SubTk.js +++ b/assets/web-sid_index.md.Dr-XVffJ.js @@ -1 +1 @@ -import{_ as t}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as i,y as r,R as n,S as o,f as d,b as l}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.igorski.nl/experiment/websid","date_created":"2023-10-27T12:45:54.438Z","title":"WebSID Commodore 64","slug":"web-sid","author":"Igor Zinken","author_link":"https://www.igorski.nl/","description":null,"tags":["polyphonic","keyboard","midi","additive"],"archive_link":null,"archive":false,"iframe":false,"cover":"932e0ae0-0048-4c6d-92bb-a4a17a8a4dd4","id":28,"sort":24,"clicks":155,"public":false,"is_new":false,"stats":[19]},"relativePath":"web-sid/index.md","filePath":"web-sid/index.md","lastUpdated":0}'),c={name:"web-sid/index.md"},k=Object.assign(c,{setup(p){const{params:e,frontmatter:m}=s();return(_,u)=>{const a=t;return l(),i("div",null,[r(a,n(o(d(e))),null,16)])}}});export{g as __pageData,k as default}; +import{_ as t}from"./chunks/SynthPage.B19zwNJN.js";import{s,d as i,y as r,R as n,S as o,f as d,b as l}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.igorski.nl/experiment/websid","date_created":"2023-10-27T12:45:54.438Z","title":"WebSID Commodore 64","slug":"web-sid","author":"Igor Zinken","author_link":"https://www.igorski.nl/","description":null,"tags":["polyphonic","keyboard","midi","additive"],"archive_link":null,"archive":false,"iframe":false,"cover":"932e0ae0-0048-4c6d-92bb-a4a17a8a4dd4","id":28,"sort":25,"clicks":156,"public":false,"is_new":false,"stats":[19]},"relativePath":"web-sid/index.md","filePath":"web-sid/index.md","lastUpdated":0}'),c={name:"web-sid/index.md"},k=Object.assign(c,{setup(p){const{params:e,frontmatter:m}=s();return(_,u)=>{const a=t;return l(),i("div",null,[r(a,n(o(d(e))),null,16)])}}});export{g as __pageData,k as default}; diff --git a/assets/web-sid_index.md.BQ4SubTk.lean.js b/assets/web-sid_index.md.Dr-XVffJ.lean.js similarity index 88% rename from assets/web-sid_index.md.BQ4SubTk.lean.js rename to assets/web-sid_index.md.Dr-XVffJ.lean.js index 78f42425..302b9cf7 100644 --- a/assets/web-sid_index.md.BQ4SubTk.lean.js +++ b/assets/web-sid_index.md.Dr-XVffJ.lean.js @@ -1 +1 @@ -import{_ as t}from"./chunks/SynthPage.DHgkhPru.js";import{s,d as i,y as r,R as n,S as o,f as d,b as l}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.igorski.nl/experiment/websid","date_created":"2023-10-27T12:45:54.438Z","title":"WebSID Commodore 64","slug":"web-sid","author":"Igor Zinken","author_link":"https://www.igorski.nl/","description":null,"tags":["polyphonic","keyboard","midi","additive"],"archive_link":null,"archive":false,"iframe":false,"cover":"932e0ae0-0048-4c6d-92bb-a4a17a8a4dd4","id":28,"sort":24,"clicks":155,"public":false,"is_new":false,"stats":[19]},"relativePath":"web-sid/index.md","filePath":"web-sid/index.md","lastUpdated":0}'),c={name:"web-sid/index.md"},k=Object.assign(c,{setup(p){const{params:e,frontmatter:m}=s();return(_,u)=>{const a=t;return l(),i("div",null,[r(a,n(o(d(e))),null,16)])}}});export{g as __pageData,k as default}; +import{_ as t}from"./chunks/SynthPage.B19zwNJN.js";import{s,d as i,y as r,R as n,S as o,f as d,b as l}from"./chunks/framework.DA3bj7zI.js";import"./chunks/useClicks.DKflLG6D.js";import"./chunks/index.OsI8M1nP.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{"dynamic":true,"page_type":"synth"},"headers":[],"params":{"url":"https://www.igorski.nl/experiment/websid","date_created":"2023-10-27T12:45:54.438Z","title":"WebSID Commodore 64","slug":"web-sid","author":"Igor Zinken","author_link":"https://www.igorski.nl/","description":null,"tags":["polyphonic","keyboard","midi","additive"],"archive_link":null,"archive":false,"iframe":false,"cover":"932e0ae0-0048-4c6d-92bb-a4a17a8a4dd4","id":28,"sort":25,"clicks":156,"public":false,"is_new":false,"stats":[19]},"relativePath":"web-sid/index.md","filePath":"web-sid/index.md","lastUpdated":0}'),c={name:"web-sid/index.md"},k=Object.assign(c,{setup(p){const{params:e,frontmatter:m}=s();return(_,u)=>{const a=t;return l(),i("div",null,[r(a,n(o(d(e))),null,16)])}}});export{g as __pageData,k as default}; diff --git a/auth.html b/auth.html index 0687b9eb..2894270e 100644 --- a/auth.html +++ b/auth.html @@ -11,7 +11,7 @@ - + @@ -42,7 +42,7 @@ - + \ No newline at end of file diff --git a/auth/accept.html b/auth/accept.html index fe6ef19a..d292d1e2 100644 --- a/auth/accept.html +++ b/auth/accept.html @@ -11,7 +11,7 @@ - + @@ -42,7 +42,7 @@

ACCEPT INVITE PAGE

Made with 🧡 by
Playtronica &Chromatone
- + \ No newline at end of file diff --git a/auth/index.html b/auth/index.html index 22b67c74..1c4e9ccf 100644 --- a/auth/index.html +++ b/auth/index.html @@ -12,7 +12,7 @@ - + @@ -43,7 +43,7 @@
Login to your account
Made with 🧡 by
Playtronica &Chromatone
- + \ No newline at end of file diff --git a/auth/invite.html b/auth/invite.html index 5973c126..13e52875 100644 --- a/auth/invite.html +++ b/auth/invite.html @@ -11,7 +11,7 @@ - + @@ -42,7 +42,7 @@

Invite a new user PAGE

Made with 🧡 by
Playtronica &Chromatone
- + \ No newline at end of file diff --git a/auth/logout.html b/auth/logout.html index b6393c4c..390c3218 100644 --- a/auth/logout.html +++ b/auth/logout.html @@ -11,7 +11,7 @@ - + @@ -42,7 +42,7 @@

LOGIN PAGE

Made with 🧡 by
Playtronica &Chromatone
- + \ No newline at end of file diff --git a/auth/reset.html b/auth/reset.html index 952fa329..3701c9e7 100644 --- a/auth/reset.html +++ b/auth/reset.html @@ -11,7 +11,7 @@ - + @@ -42,7 +42,7 @@

PASSWORD RESET PAGE

Made with 🧡 by
Playtronica &Chromatone
- + \ No newline at end of file diff --git a/bassoon/index.html b/bassoon/index.html index 6ecd5928..46852852 100644 --- a/bassoon/index.html +++ b/bassoon/index.html @@ -11,10 +11,10 @@ - + - + @@ -44,8 +44,8 @@ -
Bassoon Tracker
by Steffest
FM
tracker
8-bit
low-fi
Browser-based old-school Amiga Music Tracker in plain old JavaScript.
Made with 🧡 by
Playtronica &Chromatone
- +
Bassoon Tracker
by Steffest
FM
tracker
8-bit
low-fi
Browser-based old-school Amiga Music Tracker in plain old JavaScript.
Made with 🧡 by
Playtronica &Chromatone
+ \ No newline at end of file diff --git a/beepbox/index.html b/beepbox/index.html index 8e952535..1761fa43 100644 --- a/beepbox/index.html +++ b/beepbox/index.html @@ -11,10 +11,10 @@ - + - + @@ -44,12 +44,12 @@ -
Poly
Sequencer
FM
BeepBox is an online tool for sketching and sharing instrumental music. +
Poly
Sequencer
FM
BeepBox is an online tool for sketching and sharing instrumental music. All song data is contained in the URL at the top of your browser. When you make changes to the song, the URL is updated to reflect your changes. When you are satisfied with your song, just copy and paste the URL to save and share your song! BeepBox is a passion project, and will always be free to use.

BeepBox is developed by John Nesky.

BeepBox does not claim ownership over songs created with it, so original songs belong to their authors.

Neither John Nesky nor BeepBox assume responsibility for any copyrighted material played on BeepBox. No songs are ever received, recorded, or distributed by BeepBox's servers. All song data is contained in the URL after the hash (#) mark, and your song data will not leave your device unless you copy and share the URL. BeepBox does not collect, track, or share any user data.

Made with 🧡 by
Playtronica &Chromatone
- + \ No newline at end of file diff --git a/blokdust/index.html b/blokdust/index.html index ab9040be..da447a56 100644 --- a/blokdust/index.html +++ b/blokdust/index.html @@ -11,10 +11,10 @@ - + - + @@ -44,8 +44,8 @@ -
creative
sequencer
BlokDust is a creative visual drag and drop music exploration tool. Developed in Brighton UK and released in 2016, BlokDust uses the Web Audio API and makes use of Tone.js as an audio framework.

Luke Twyman - project concept, design & Ul. whitevinyldesign.com @whitevinylUK Luke Phillips - audio development & musical interaction. femurdesign.com @lukephills Edward Silverton - client & server architecture & core development. edsilv.com @edsilv

Made with 🧡 by
Playtronica &Chromatone
- +
creative
sequencer
BlokDust is a creative visual drag and drop music exploration tool. Developed in Brighton UK and released in 2016, BlokDust uses the Web Audio API and makes use of Tone.js as an audio framework.

Luke Twyman - project concept, design & Ul. whitevinyldesign.com @whitevinylUK Luke Phillips - audio development & musical interaction. femurdesign.com @lukephills Edward Silverton - client & server architecture & core development. edsilv.com @edsilv

Made with 🧡 by
Playtronica &Chromatone
+ \ No newline at end of file diff --git a/cardboard-synth/index.html b/cardboard-synth/index.html index 12bb0d7e..bfafb51a 100644 --- a/cardboard-synth/index.html +++ b/cardboard-synth/index.html @@ -11,10 +11,10 @@ - + - + @@ -44,8 +44,8 @@ - - + + \ No newline at end of file diff --git a/cardinal/index.html b/cardinal/index.html new file mode 100644 index 00000000..8cc3b352 --- /dev/null +++ b/cardinal/index.html @@ -0,0 +1,51 @@ + + + + + + Web synths | Online web audio instruments collection + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Modular
FM
Poly
Cardinal is a free and open-source virtual modular synthesizer plugin, available in AudioUnit/CLAP/LV2/VST2/VST3 plugin formats and as a standalone app for FreeBSD, Linux, macOS, Windows and the Web.

Cardinal is a free and open-source virtual modular synthesizer plugin, available in AudioUnit/CLAP/LV2/VST2/VST3 plugin formats and as a standalone app for FreeBSD, Linux, macOS, Windows and the Web. It is based on the popular VCV Rack but with a focus on being a fully self-contained plugin version.

More specifically, this is a DPF-based plugin wrapper around VCV Rack, using its code directly instead of forking the project, with the target of having a self-contained, fully free and open-source plugin version of Rack. See the why section below for the reasons Cardinal exists, also for frequently asked questions check this FAQ document.

Cardinal contains Rack, some 3rd-party modules and a few internal utilities all in a single binary. All "Core" modules from Rack have been replaced by Cardinal equivalents, simplified to better work for an audio plugin.

Cardinal does not load external modules and does not connect to the official Rack library/store. All VCV branding has been removed (to the best of our knowledge) in order to avoid any trademark issues.

Why ​

Cardinal was created first and foremost as a way to have Rack as a proper open-source audio plugin. A proper audio plugin should be self-contained as much as possible, as to not interfere with the DAW/Host. Loading external modules clearly goes against this idea. Not to mention being open-source, otherwise we are at the mercy of the wishes of a company for what we can and cannot do, which is not something Cardinal's authors wish to abide by.

A self-contained plugin can't be overstated, as DLL/shared-object symbol conflicts can trigger hard-to-debug crashes. While Rack tries to mitigate this as much as possible, crashes due to conflicting modules have already been seen in v2 builds. On the other side, Cardinal redefines class and function names as needed to avoid as many conflicts as possible.

Support for ARM and non-mainstream platforms (for example BSD) has also always been missing from the official Rack since the start. While we can patch the Rack free version to support these, same can't be done with Rack Pro with it being a closed-source product. The online library/store only supports a very specific set of platforms too, so non-supported platforms would need any 3rd-party modules to be manually compiled to make them usable.

Unhappiness with the audio threading behaviour of Rack also plays a role. Both audio and MIDI should be locked to the host audio thread as to minimize (or even altogether remove) latency and jitter. The use of separate threads for MIDI is bad design, one that has been corrected in DAWs and JACK-MIDI for several years... But Rack's use of RtMidi requires separate threading, so Cardinal does not use it.

Made with 🧡 by
Playtronica &Chromatone
+ + + + \ No newline at end of file diff --git a/chrome-lab/index.html b/chrome-lab/index.html index c2b32a85..eded1d68 100644 --- a/chrome-lab/index.html +++ b/chrome-lab/index.html @@ -11,10 +11,10 @@ - + - + @@ -44,8 +44,8 @@ -
Chrome Music Lab
by Google
Educational
Keyboard
MIDI
Poly
Piano
Analysis
Mic
Visuals
Chrome Music Lab is a website that makes learning music more accessible through fun, hands-on experiments.

What can it be used for? ​

Many teachers have been using Chrome Music Lab as a tool in their classrooms to explore music and its connections to science, math, art, and more. They’ve been combining it with dance and live instruments. Here’s a collection of some uses we’ve found on Twitter.

Can I use it to make my own songs? ​

Yes. Check out the Song Maker experiment, which lets you make and share your own songs.

Do I need to make an account? ​

Nope. Just open any experiment and start playing.

How were these built? ​

All our experiments are all built with freely accessible web technology such as Web Audio API, WebMIDI, Tone.js, and more. These tools make it easier for coders to build new interactive music experiences. You can get the open-source code to lots of these experiments here on Github.

What devices do these work on? ​

You can play with these experiments across devices – phones, tablets, laptops – just by opening the site on a web browser such as Chrome.

Made with 🧡 by
Playtronica &Chromatone
- +
Chrome Music Lab
by Google
Educational
Keyboard
MIDI
Poly
Piano
Analysis
Mic
Visuals
Chrome Music Lab is a website that makes learning music more accessible through fun, hands-on experiments.

What can it be used for? ​

Many teachers have been using Chrome Music Lab as a tool in their classrooms to explore music and its connections to science, math, art, and more. They’ve been combining it with dance and live instruments. Here’s a collection of some uses we’ve found on Twitter.

Can I use it to make my own songs? ​

Yes. Check out the Song Maker experiment, which lets you make and share your own songs.

Do I need to make an account? ​

Nope. Just open any experiment and start playing.

How were these built? ​

All our experiments are all built with freely accessible web technology such as Web Audio API, WebMIDI, Tone.js, and more. These tools make it easier for coders to build new interactive music experiences. You can get the open-source code to lots of these experiments here on Github.

What devices do these work on? ​

You can play with these experiments across devices – phones, tablets, laptops – just by opening the site on a web browser such as Chrome.

Made with 🧡 by
Playtronica &Chromatone
+ \ No newline at end of file diff --git a/cover/cardinal.webp b/cover/cardinal.webp new file mode 100644 index 0000000000000000000000000000000000000000..abd591a81474c577a9f6987d687577aa934fc1d7 GIT binary patch literal 111284 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 literal 0 HcmV?d00001 diff --git a/disco-computer/index.html b/disco-computer/index.html index 6d3caacb..95df1645 100644 --- a/disco-computer/index.html +++ b/disco-computer/index.html @@ -11,10 +11,10 @@ - + - + @@ -44,8 +44,8 @@ -
Disco-computer
by Patrick Sawyer
polyphonic
fm
keyboard
Made with 🧡 by
Playtronica &Chromatone
- +
Disco-computer
by Patrick Sawyer
polyphonic
fm
keyboard
Made with 🧡 by
Playtronica &Chromatone
+ \ No newline at end of file diff --git a/dotpiano/index.html b/dotpiano/index.html index 50c31155..73e07e93 100644 --- a/dotpiano/index.html +++ b/dotpiano/index.html @@ -11,10 +11,10 @@ - + - + @@ -44,8 +44,8 @@ -
Dotpiano
by Alex Chen and Yotam Mann
polyphonic
midi
keyboard
Multiplayer
Made with 🧡 by
Playtronica &Chromatone
- +
Dotpiano
by Alex Chen and Yotam Mann
polyphonic
midi
keyboard
Multiplayer
Made with 🧡 by
Playtronica &Chromatone
+ \ No newline at end of file diff --git a/dx7/index.html b/dx7/index.html index 7eb1e635..3ca6e7bb 100644 --- a/dx7/index.html +++ b/dx7/index.html @@ -11,10 +11,10 @@ - + - + @@ -44,8 +44,8 @@ - - + + \ No newline at end of file diff --git a/elementary/index.html b/elementary/index.html index 4082945d..d4edf6d2 100644 --- a/elementary/index.html +++ b/elementary/index.html @@ -11,10 +11,10 @@ - + - + @@ -44,8 +44,8 @@ -
Elementary synth
by Chromatone
chromatone
polyphonic
keyboard
Made with 🧡 by
Playtronica &Chromatone
- +
Elementary synth
by Chromatone
chromatone
polyphonic
keyboard
Made with 🧡 by
Playtronica &Chromatone
+ \ No newline at end of file diff --git a/groove-pizza/index.html b/groove-pizza/index.html index a9a065b0..3fc4c551 100644 --- a/groove-pizza/index.html +++ b/groove-pizza/index.html @@ -11,10 +11,10 @@ - + - + @@ -44,8 +44,8 @@ -
drums
sequencer
Educational
Groove Pizza is a circular rhythm app for creative music making and learning! It’s also a playful tool for creating grooves using math concepts like shapes, angles and patterns
Made with 🧡 by
Playtronica &Chromatone
- +
drums
sequencer
Educational
Groove Pizza is a circular rhythm app for creative music making and learning! It’s also a playful tool for creating grooves using math concepts like shapes, angles and patterns
Made with 🧡 by
Playtronica &Chromatone
+ \ No newline at end of file diff --git a/hashmap.json b/hashmap.json index b0640417..6051a39b 100644 --- a/hashmap.json +++ b/hashmap.json @@ -1 +1 @@ -{"elementary_index.md":"BwvTZPnD","auth_accept.md":"Fnf3Jp_6","juno-106_index.md":"C-HewMMo","soundfont_index.md":"B2d0-Ban","touch-pianist_index.md":"JrXfa-Ey","sympathetic_index.md":"B9hVY9QB","roland50_index.md":"Vb0qZb-L","video-sampler_index.md":"Bbx11FMn","web-sid_index.md":"BQ4SubTk","waveform_index.md":"CU21Le1y","midi-city_index.md":"C_bw8Wmp","touchme_index.md":"BA04O2GJ","muted-io_index.md":"7HkqgXgG","beepbox_index.md":"CnBRBmfz","ableton_index.md":"Cg4KKF7N","aqwertyon_index.md":"DeEJlWSG","multiplayer-orchestra_index.md":"DBDquzNY","theremin_index.md":"liVXJJN1","chrome-lab_index.md":"BvBA9nEa","disco-computer_index.md":"DLthuX7U","auth_invite.md":"DdrEzK2j","auth_index.md":"QeBiS1Uo","microtonal_index.md":"hTlkmWcW","readme.md":"D9FcETfF","auth_logout.md":"Cewl1AND","auth.md":"D0LWfyqF","virtual-piano_index.md":"BIU4xc3c","bassoon_index.md":"CtkSoO4E","web-audio-synth-v2_index.md":"DVDfxtBK","isleoftune_index.md":"DYO1xc9U","typedrummer_index.md":"BgD7csps","sound-box_index.md":"CEA_gYvJ","online-sequencer_index.md":"DVTPW1I8","acid-machine-2_index.md":"Brd6Zwuh","groove-pizza_index.md":"DJKiVzNk","pixel-synth_index.md":"DqBlbh9_","dotpiano_index.md":"BE4cP1vy","index.md":"C7QfLb-F","multiplayer-piano_index.md":"DysQ9-I2","midi-driven-web-audio_index.md":"B06I4MxK","sample-stich_index.md":"BEflVudk","meet-the-heisenberg_index.md":"lkmORynb","olif-sy-1-k_index.md":"Gisa2OKR","tanguy-synth_index.md":"D5X3OBcT","sound-trap_index.md":"P34yttG4","blokdust_index.md":"zxmuXVPq","omni_index.md":"CL84VQWW","note-sculptor_index.md":"C2XwRlKF","mod-synth_index.md":"DQ7oqCk-","dx7_index.md":"CTqZumAe","web-modular_index.md":"BqKHl3qJ","auth_reset.md":"DcV3kbsy","nv-1_index.md":"zz29iYg5","cardboard-synth_index.md":"_wVYXrIB"} +{"cardinal_index.md":"ClbFNEJu","multiplayer-orchestra_index.md":"B-NHU8MY","waveform_index.md":"BMgbw7Z5","dotpiano_index.md":"B4corNww","aqwertyon_index.md":"CgYlagfO","sympathetic_index.md":"CdbkUUzW","microtonal_index.md":"7zjrkP34","chrome-lab_index.md":"BtLHLke3","pixel-synth_index.md":"DP2JcS10","multiplayer-piano_index.md":"C8sFZ0Lc","web-modular_index.md":"CSZ2i0Av","groove-pizza_index.md":"Ddx5mffv","sample-stich_index.md":"CNvttCPH","nv-1_index.md":"DLCJmm76","virtual-piano_index.md":"CVkX-1m_","video-sampler_index.md":"Fp916520","disco-computer_index.md":"T_rL6HPy","bassoon_index.md":"DfJY8utO","auth_index.md":"CCxxwTF6","auth_accept.md":"DucFg5Gq","auth_logout.md":"Ck5mdKg9","web-sid_index.md":"Dr-XVffJ","dx7_index.md":"8RoJDeWM","touchme_index.md":"DQ8XRIQ7","theremin_index.md":"CXNtky1n","auth_invite.md":"DYCxXOu5","meet-the-heisenberg_index.md":"COSkv5m_","soundfont_index.md":"OAkXv37o","web-audio-synth-v2_index.md":"mytGv9SF","sound-trap_index.md":"DeUmGQYN","note-sculptor_index.md":"qRvnP-u9","typedrummer_index.md":"DDcMGeRo","auth.md":"BhfyOX0C","sound-box_index.md":"SIPDrKZA","juno-106_index.md":"Cei-yIZ_","isleoftune_index.md":"CjvOwWsY","blokdust_index.md":"DjRxTR6L","omni_index.md":"COPXpr4K","mod-synth_index.md":"C9QKok6-","touch-pianist_index.md":"EQqcc00y","muted-io_index.md":"C_wNdUY3","beepbox_index.md":"CO50im6t","olif-sy-1-k_index.md":"BusScNUQ","roland50_index.md":"BrTX2pyE","midi-city_index.md":"quDpD-LH","acid-machine-2_index.md":"fdaF3_po","ableton_index.md":"DZBvrMY6","elementary_index.md":"DjWMsgrh","tanguy-synth_index.md":"CmH5Xcd1","midi-driven-web-audio_index.md":"BHLhzMEc","readme.md":"C9Wu_do9","auth_reset.md":"OAZjQyas","cardboard-synth_index.md":"BWDkKcYV","online-sequencer_index.md":"CD43l8x6","index.md":"Bp19cI6y"} diff --git a/index.html b/index.html index 29cbe8c5..420e4219 100644 --- a/index.html +++ b/index.html @@ -13,7 +13,7 @@ - + @@ -87,26 +87,55 @@ - The amplitude envelope changes how your sound is played, volume-wise, when you hit a note. For example, having a long release time will mean that once you let go of the note you are playing it will tail off until fading out. Having a slow attack will mean that your note will fade in instead of playing at full volume straight away. - The effects section allows you to add various effects to your overall sound. You can change the effects, mix them together and toggle them on or off too. -" data-v-f3c34bc1>
12
Websynths Microtonal
by WebSynths
Chromatone is an open source visual music language for education, research and performance. We develop a new universal way to communicate music. Playtronica is a digital playground that explores the possibilities of the material world through technology, creating gadgets that make the world musical. Together we share our passion for online music instruments.
0
web synths
0+
web musicians

Welcome to the community of web-based musicians!

Made with 🧡 by
Playtronica &Chromatone
- +@edsilv" data-v-f3c34bc1>
Chromatone is an open source visual music language for education, research and performance. We develop a new universal way to communicate music. Playtronica is a digital playground that explores the possibilities of the material world through technology, creating gadgets that make the world musical. Together we share our passion for online music instruments.
0
web synths
0+
web musicians

Welcome to the community of web-based musicians!

Made with 🧡 by
Playtronica &Chromatone
+ \ No newline at end of file diff --git a/isleoftune/index.html b/isleoftune/index.html index 97d451ac..2d49b0f6 100644 --- a/isleoftune/index.html +++ b/isleoftune/index.html @@ -11,10 +11,10 @@ - + - + @@ -44,8 +44,8 @@ -
Isle of Tune
by Jim Hall
game
sequencer
Draw an island, where everything plays music.
Made with 🧡 by
Playtronica &Chromatone
- +
Isle of Tune
by Jim Hall
game
sequencer
Draw an island, where everything plays music.
Made with 🧡 by
Playtronica &Chromatone
+ \ No newline at end of file diff --git a/juno-106/index.html b/juno-106/index.html index 68465f6a..d0f86e0a 100644 --- a/juno-106/index.html +++ b/juno-106/index.html @@ -11,10 +11,10 @@ - + - + @@ -44,8 +44,8 @@ - - + + \ No newline at end of file diff --git a/meet-the-heisenberg/index.html b/meet-the-heisenberg/index.html index 08904757..52bde3b0 100644 --- a/meet-the-heisenberg/index.html +++ b/meet-the-heisenberg/index.html @@ -11,10 +11,10 @@ - + - + @@ -44,8 +44,8 @@ - - + + \ No newline at end of file diff --git a/microtonal/index.html b/microtonal/index.html index ac15670e..74e50cf1 100644 --- a/microtonal/index.html +++ b/microtonal/index.html @@ -11,10 +11,10 @@ - + - + @@ -44,8 +44,8 @@ -
Websynths Microtonal
by WebSynths
The deepest internet synthesizer

WebSynths is a free resource for any musician with internet access! But, it is made possible by support from our patrons. Please consider helping if you can: patreon.com/WebSynths

  • You can use your QWERTY keyboard, mouse, mobile touch or MIDI keyboard to play the sounds.
  • You can change the tuning of the keys, or select a scale, by clicking the tuning button.
  • MIDI is a way to use an external physical instrument to play it. If you have a MIDI keyboard that you wish to use, hit the MIDI button to set it up.
  • If a note gets stuck, hit the panic button, it will stop all voices from playing.
  • You can use the arrows on your computer keyboard to scroll through the presets.

A simple explanation of Subtractive Synthesis:

  • Subtractive Synthesis works by taking one or more oscillators, setting the pitch of their oscillation (usually to the note of the key being pressed,) setting the shape of their oscillation to the desired timbre (Sine, Saw, Square or more complex shapes,) mixing them together and running them through a filter to change their EQ (usually filtering out the highest or lowest frequencies... this is why it is called "subtractive"), then running them through an envelope so the note can be heard on when a key is pressed down and is silenced when the key is released. In the case of WebSynths Microtonal, the sound is then sent through effects like delay, chorus and reverb and out to your speakers.
  • Oscillators are the voices. This synth has 3 of them in the left column. You can change the character of each voice by changing the parameters of them. The 'Shape' menu allows you to choose from different styles of voice for each oscillator. You can turn each voice on or off and mix them together.
  • The filter section applies equalization to your oscillators via the cutoff and emphasis controls. You can change the equalization filter type to 'low pass / high pass' and many more. You can use the LFOs and/or Envelopes to change how the filtration changes over time. An LFO is just a slow oscillator that is uses to automatically move a parameter over time.
  • The amplitude envelope changes how your sound is played, volume-wise, when you hit a note. For example, having a long release time will mean that once you let go of the note you are playing it will tail off until fading out. Having a slow attack will mean that your note will fade in instead of playing at full volume straight away.
  • The effects section allows you to add various effects to your overall sound. You can change the effects, mix them together and toggle them on or off too.
Made with 🧡 by
Playtronica &Chromatone
- +
Websynths Microtonal
by WebSynths
The deepest internet synthesizer

WebSynths is a free resource for any musician with internet access! But, it is made possible by support from our patrons. Please consider helping if you can: patreon.com/WebSynths

  • You can use your QWERTY keyboard, mouse, mobile touch or MIDI keyboard to play the sounds.
  • You can change the tuning of the keys, or select a scale, by clicking the tuning button.
  • MIDI is a way to use an external physical instrument to play it. If you have a MIDI keyboard that you wish to use, hit the MIDI button to set it up.
  • If a note gets stuck, hit the panic button, it will stop all voices from playing.
  • You can use the arrows on your computer keyboard to scroll through the presets.

A simple explanation of Subtractive Synthesis:

  • Subtractive Synthesis works by taking one or more oscillators, setting the pitch of their oscillation (usually to the note of the key being pressed,) setting the shape of their oscillation to the desired timbre (Sine, Saw, Square or more complex shapes,) mixing them together and running them through a filter to change their EQ (usually filtering out the highest or lowest frequencies... this is why it is called "subtractive"), then running them through an envelope so the note can be heard on when a key is pressed down and is silenced when the key is released. In the case of WebSynths Microtonal, the sound is then sent through effects like delay, chorus and reverb and out to your speakers.
  • Oscillators are the voices. This synth has 3 of them in the left column. You can change the character of each voice by changing the parameters of them. The 'Shape' menu allows you to choose from different styles of voice for each oscillator. You can turn each voice on or off and mix them together.
  • The filter section applies equalization to your oscillators via the cutoff and emphasis controls. You can change the equalization filter type to 'low pass / high pass' and many more. You can use the LFOs and/or Envelopes to change how the filtration changes over time. An LFO is just a slow oscillator that is uses to automatically move a parameter over time.
  • The amplitude envelope changes how your sound is played, volume-wise, when you hit a note. For example, having a long release time will mean that once you let go of the note you are playing it will tail off until fading out. Having a slow attack will mean that your note will fade in instead of playing at full volume straight away.
  • The effects section allows you to add various effects to your overall sound. You can change the effects, mix them together and toggle them on or off too.
Made with 🧡 by
Playtronica &Chromatone
+ \ No newline at end of file diff --git a/midi-city/index.html b/midi-city/index.html index ba1ea6a0..5f5658b5 100644 --- a/midi-city/index.html +++ b/midi-city/index.html @@ -11,10 +11,10 @@ - + - + @@ -44,10 +44,10 @@ -
midi.city is a free online synthesizer, built by Jack. +
midi.city is a free online synthesizer, built by Jack. midi.city has over 128 different instruments including: Pianos, Saxophones, Drums, Trumpets, Synth Pads, Guitar, Violins and all other instruments defined in the General Midi specification.

midi.city has been created with the help of hundreds of different open-source projects and with contributions from many others.

  • Tone.js by Yotam Mann: the Web Audio API-based sound engine that implements a majority of nodes used in the audio graph. It powers many of the advanced features used such as Granular Synthesis, Reverb, and timing.
  • Groove Monkee: graciously provided the MIDI files that are used for the percussion loops.
  • Keenan Brand: created the midi.city logo and various icons used on the site.
  • Noun Project: various icons are used via a Pro license.
  • Google Material Design: various icons.
  • Compifont by Marcin Dziembor: the soundfont powering the samples and many the audio graph definitions, is originally . Several modifications have been made to adapt to midi.city and the Web Audio API.
Made with 🧡 by
Playtronica &Chromatone
- + \ No newline at end of file diff --git a/midi-driven-web-audio/index.html b/midi-driven-web-audio/index.html index d6490ccf..96eb4bef 100644 --- a/midi-driven-web-audio/index.html +++ b/midi-driven-web-audio/index.html @@ -11,10 +11,10 @@ - + - + @@ -44,8 +44,8 @@ - - + + \ No newline at end of file diff --git a/mod-synth/index.html b/mod-synth/index.html index 485a8139..a20724c5 100644 --- a/mod-synth/index.html +++ b/mod-synth/index.html @@ -11,10 +11,10 @@ - + - + @@ -44,8 +44,8 @@ - - + + \ No newline at end of file diff --git a/multiplayer-orchestra/index.html b/multiplayer-orchestra/index.html index 9af42a0e..05d003f6 100644 --- a/multiplayer-orchestra/index.html +++ b/multiplayer-orchestra/index.html @@ -11,10 +11,10 @@ - + - + @@ -44,8 +44,8 @@ -
Multiplayer Orchestra
by Mutli_Orchestra
Poly
MIDI
Keyboard
Collaborative
Online
Play in real time with people from all around the world with more than 400 instruments.

Multiplayer Orchestra (https://www.multiplayer-orchestra.com/) is a web application that allows you to virtually collaborate with musicians from around the world in real-time. Here are some key features:

  • Large instrument selection: Choose from over 400 instruments, including pianos, guitars, drums, and orchestral instruments.
  • Real-time collaboration: Play music simultaneously with other users, creating a virtual orchestra.
  • Public and private rooms: Join public rooms to jam with others or create private rooms with a password for specific collaborations.
  • Contests: Participate in contests to win prizes like Amazon gift cards by recording solo performances.

It's important to note that the website seems to be in beta based on the version information listed (Beta 0.30).

Made with 🧡 by
Playtronica &Chromatone
- +
Multiplayer Orchestra
by Mutli_Orchestra
Poly
MIDI
Keyboard
Collaborative
Online
Play in real time with people from all around the world with more than 400 instruments.

Multiplayer Orchestra (https://www.multiplayer-orchestra.com/) is a web application that allows you to virtually collaborate with musicians from around the world in real-time. Here are some key features:

  • Large instrument selection: Choose from over 400 instruments, including pianos, guitars, drums, and orchestral instruments.
  • Real-time collaboration: Play music simultaneously with other users, creating a virtual orchestra.
  • Public and private rooms: Join public rooms to jam with others or create private rooms with a password for specific collaborations.
  • Contests: Participate in contests to win prizes like Amazon gift cards by recording solo performances.

It's important to note that the website seems to be in beta based on the version information listed (Beta 0.30).

Made with 🧡 by
Playtronica &Chromatone
+ \ No newline at end of file diff --git a/multiplayer-piano/index.html b/multiplayer-piano/index.html index 2a612868..2ba4ec35 100644 --- a/multiplayer-piano/index.html +++ b/multiplayer-piano/index.html @@ -11,10 +11,10 @@ - + - + @@ -44,8 +44,8 @@ -
Multiplayer Piano
by Brandon Lockaby
Piano
MIDI
Poly
Multiplayer
Online piano, that can be played by any site visitor together in a virtual room or alone.
Made with 🧡 by
Playtronica &Chromatone
- +
Multiplayer Piano
by Brandon Lockaby
Piano
MIDI
Poly
Multiplayer
Online piano, that can be played by any site visitor together in a virtual room or alone.
Made with 🧡 by
Playtronica &Chromatone
+ \ No newline at end of file diff --git a/muted-io/index.html b/muted-io/index.html index 952f5a78..f30bb9e8 100644 --- a/muted-io/index.html +++ b/muted-io/index.html @@ -11,10 +11,10 @@ - + - + @@ -44,8 +44,8 @@ -
Made with 🧡 by
Playtronica &Chromatone
- +
Made with 🧡 by
Playtronica &Chromatone
+ \ No newline at end of file diff --git a/note-sculptor/index.html b/note-sculptor/index.html index 34472bbd..4eed0a3b 100644 --- a/note-sculptor/index.html +++ b/note-sculptor/index.html @@ -11,10 +11,10 @@ - + - + @@ -44,8 +44,8 @@ -
Note Sculptor
by Ruin Technology
Made with 🧡 by
Playtronica &Chromatone
- +
Note Sculptor
by Ruin Technology
Made with 🧡 by
Playtronica &Chromatone
+ \ No newline at end of file diff --git a/nv-1/index.html b/nv-1/index.html index 3257f76a..2a203a0d 100644 --- a/nv-1/index.html +++ b/nv-1/index.html @@ -11,10 +11,10 @@ - + - + @@ -44,8 +44,8 @@ - - + + \ No newline at end of file diff --git a/olif-sy-1-k/index.html b/olif-sy-1-k/index.html index d2a1468f..21b5682b 100644 --- a/olif-sy-1-k/index.html +++ b/olif-sy-1-k/index.html @@ -11,10 +11,10 @@ - + - + @@ -44,8 +44,8 @@ - - + + \ No newline at end of file diff --git a/omni/index.html b/omni/index.html index aee6fc00..b99eb2ad 100644 --- a/omni/index.html +++ b/omni/index.html @@ -11,10 +11,10 @@ - + - + @@ -44,8 +44,8 @@ - - + + \ No newline at end of file diff --git a/online-sequencer/index.html b/online-sequencer/index.html index f0b61a1a..195e34f2 100644 --- a/online-sequencer/index.html +++ b/online-sequencer/index.html @@ -11,10 +11,10 @@ - + - + @@ -44,8 +44,8 @@ -

Online Sequencer is a web-based music sequencer that allows users to create music saved online, or on their computer. The piano roll is essential to the sequencer, which is on the left of the screen, with 72 notes from C2-B7 (labelled differently from a piano, C2 on the sequencer corresponds to C1 on a piano). In addition to several parameters which can be modified to change the sound of the music, additional functionality can be accessed via the console.

Upon opening the site, users can begin composing and "drawing" notes on the grid, with the default instrument being Electric Piano. By default, a sequence's time signature is set to 4/4, and the grid spacing is set to 1/4 (16 notes per measure). The note lengths can be adjusted by dragging the dark tab on the right of each note, and precision can be afforded by changing the 'Grid' option to other note divisions.

History ​

Online Sequencer was created on January 2, 2013 by Jacob Morgan during a break at Georgia Tech.

Beginning in the fall of 2013, accounts were available but were separate from the music portion of the site. They were only used in the forum and the website chat.

In 2015, accounts were linked to the main website and allowed songs to be saved under someone's username.

The World Update in 2018 added several new instruments and changed the landscape of sound design on the site. The "World Update Contest" was held for the update.

Starting in late 2020, OS began to receive a variety of updates which vastly improved the functionality of the site. These updates introduced features like custom grid sizes, automation with markers, extra reverb options, detune, and distortion. In 2021, the "Space Race" contest was held, as to see who could work best with the changes.

In late 2022, newer, higher-quality instruments were added. Some of the instruments, such as Electric Piano, Grand Piano, Violin, and Cello got an updated sustained version, while the original versions still exist under the "classic" designation.

Currently, the 10-Year Anniversary Contest is being held.

Features ​

Within the editor, numerous user interface features allow for various changes which will impact the individual sequence on that page.

Basic features ​

UI features include:

  • Tempo (10-999 BPM)
  • Measure count or Time count (MM: SS.ssss)
  • Time signature (2/4, 3/4, 4/4, 5/4)
  • Grid size (This correlates to note divisions; 1/16, 1/12, 1/8, 1/6, 1/4, 1/3, 1/2)
  • Auto Scroll (Fast, Smooth, Off; how the sequencer displays measures off-screen as a sequence plays)
  • Add an Audio Track (This won't be saved to the sequence but will play alongside it for ease of transcription)
  • Title input
  • Draw, select, and erase
  • Instrument dropdown, instrument options, and select instrument (selects all notes of the current instrument)
  • Select all, Cut, Copy, and Paste
  • Zoom options
  • Export options
  • Help
  • Fullscreen
  • Tooltips

Advanced features ​

Users can access more advanced features for use in their sequences by clicking the advanced tab on the instrument they wish to change. This menu contains options to change volume, panning, detune (-1200 to +1200), reverb, distortion, and an equalizer. This array lets users configure specific instruments to create specific sounds, and textures, or to accompany other instruments as a layer or development of the original sound.

OS also allows for commands to be entered in the browser console to manipulate different options in specific ways, such as setting custom to detune values (0-infinity), custom grid sizes, note divisions, and sequence ID amongst other things. These options bring OS closer to that of classic Digital Audio Workstations (DAWs) but are still limited in terms of accessibility and availability.

Browser and device support ​

Online Sequencer supports Chrome and other Chromium-based browsers, such as Microsoft Edge, Opera, and Brave. Firefox is also supported, but often with limited functionality. Safari and Internet Explorer are not supported, due to engine issues.

Other mobile browsers support sequence playback, but not editing. However, iOS users have the same problem with WebKit on macOS. However, unlike in macOS, all browsers (even Chromium-based browsers) use WebKit as the engine for iOS due to Apple prohibiting other engines for security reasons; iOS does not support Online Sequencer, other than chat and forums.

The website's user interface is formatted for proper use on desktops, but some pages such as the chat page, playlists, and forums should be formatted well on mobile devices.

Made with 🧡 by
Playtronica &Chromatone
- +

Online Sequencer is a web-based music sequencer that allows users to create music saved online, or on their computer. The piano roll is essential to the sequencer, which is on the left of the screen, with 72 notes from C2-B7 (labelled differently from a piano, C2 on the sequencer corresponds to C1 on a piano). In addition to several parameters which can be modified to change the sound of the music, additional functionality can be accessed via the console.

Upon opening the site, users can begin composing and "drawing" notes on the grid, with the default instrument being Electric Piano. By default, a sequence's time signature is set to 4/4, and the grid spacing is set to 1/4 (16 notes per measure). The note lengths can be adjusted by dragging the dark tab on the right of each note, and precision can be afforded by changing the 'Grid' option to other note divisions.

History ​

Online Sequencer was created on January 2, 2013 by Jacob Morgan during a break at Georgia Tech.

Beginning in the fall of 2013, accounts were available but were separate from the music portion of the site. They were only used in the forum and the website chat.

In 2015, accounts were linked to the main website and allowed songs to be saved under someone's username.

The World Update in 2018 added several new instruments and changed the landscape of sound design on the site. The "World Update Contest" was held for the update.

Starting in late 2020, OS began to receive a variety of updates which vastly improved the functionality of the site. These updates introduced features like custom grid sizes, automation with markers, extra reverb options, detune, and distortion. In 2021, the "Space Race" contest was held, as to see who could work best with the changes.

In late 2022, newer, higher-quality instruments were added. Some of the instruments, such as Electric Piano, Grand Piano, Violin, and Cello got an updated sustained version, while the original versions still exist under the "classic" designation.

Currently, the 10-Year Anniversary Contest is being held.

Features ​

Within the editor, numerous user interface features allow for various changes which will impact the individual sequence on that page.

Basic features ​

UI features include:

  • Tempo (10-999 BPM)
  • Measure count or Time count (MM: SS.ssss)
  • Time signature (2/4, 3/4, 4/4, 5/4)
  • Grid size (This correlates to note divisions; 1/16, 1/12, 1/8, 1/6, 1/4, 1/3, 1/2)
  • Auto Scroll (Fast, Smooth, Off; how the sequencer displays measures off-screen as a sequence plays)
  • Add an Audio Track (This won't be saved to the sequence but will play alongside it for ease of transcription)
  • Title input
  • Draw, select, and erase
  • Instrument dropdown, instrument options, and select instrument (selects all notes of the current instrument)
  • Select all, Cut, Copy, and Paste
  • Zoom options
  • Export options
  • Help
  • Fullscreen
  • Tooltips

Advanced features ​

Users can access more advanced features for use in their sequences by clicking the advanced tab on the instrument they wish to change. This menu contains options to change volume, panning, detune (-1200 to +1200), reverb, distortion, and an equalizer. This array lets users configure specific instruments to create specific sounds, and textures, or to accompany other instruments as a layer or development of the original sound.

OS also allows for commands to be entered in the browser console to manipulate different options in specific ways, such as setting custom to detune values (0-infinity), custom grid sizes, note divisions, and sequence ID amongst other things. These options bring OS closer to that of classic Digital Audio Workstations (DAWs) but are still limited in terms of accessibility and availability.

Browser and device support ​

Online Sequencer supports Chrome and other Chromium-based browsers, such as Microsoft Edge, Opera, and Brave. Firefox is also supported, but often with limited functionality. Safari and Internet Explorer are not supported, due to engine issues.

Other mobile browsers support sequence playback, but not editing. However, iOS users have the same problem with WebKit on macOS. However, unlike in macOS, all browsers (even Chromium-based browsers) use WebKit as the engine for iOS due to Apple prohibiting other engines for security reasons; iOS does not support Online Sequencer, other than chat and forums.

The website's user interface is formatted for proper use on desktops, but some pages such as the chat page, playlists, and forums should be formatted well on mobile devices.

Made with 🧡 by
Playtronica &Chromatone
+ \ No newline at end of file diff --git a/pixel-synth/index.html b/pixel-synth/index.html index a84a5585..326ee5d8 100644 --- a/pixel-synth/index.html +++ b/pixel-synth/index.html @@ -11,10 +11,10 @@ - + - + @@ -44,8 +44,8 @@ - - + + \ No newline at end of file diff --git a/roland50/index.html b/roland50/index.html index e9e35202..0e9f7da7 100644 --- a/roland50/index.html +++ b/roland50/index.html @@ -11,10 +11,10 @@ - + - + @@ -44,9 +44,9 @@ -
Roland 50 Studio
by Yuri Suzuki
drum machine
SP404
TR808
TB303
Step sequencer
It's a professional sounding online musical interface, which records your masterpieces and allows you to share your creations through social media, messaging and also as a download. +
Roland 50 Studio
by Yuri Suzuki
drum machine
SP404
TR808
TB303
Step sequencer
It's a professional sounding online musical interface, which records your masterpieces and allows you to share your creations through social media, messaging and also as a download. On top of the TR-808 drum machine and TB-303 bass synthesizer featured at the original 2020 release, now the sound of SH-101 synthesizer is added, and more sounds to come later in the year 2022, commemorating Roland's 50th anniversary.
Made with 🧡 by
Playtronica &Chromatone
- + \ No newline at end of file diff --git a/sample-stich/index.html b/sample-stich/index.html index 2ecb0bb4..fb9c1f44 100644 --- a/sample-stich/index.html +++ b/sample-stich/index.html @@ -11,10 +11,10 @@ - + - + @@ -44,8 +44,8 @@ - - + + \ No newline at end of file diff --git a/sitemap.xml b/sitemap.xml index 3d2a6160..92118ee4 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -1 +1 @@ -https://synth.playtronica.com/README2024-03-27T14:39:55.000Zhttps://synth.playtronica.com/auth2024-03-27T14:39:55.000Zhttps://synth.playtronica.com/auth/accept2024-03-27T14:39:55.000Zhttps://synth.playtronica.com/auth/2024-03-27T14:39:55.000Zhttps://synth.playtronica.com/auth/invite2024-03-27T14:39:55.000Zhttps://synth.playtronica.com/auth/logout2024-03-27T14:39:55.000Zhttps://synth.playtronica.com/auth/reset2024-03-27T14:39:55.000Zhttps://synth.playtronica.com/2024-03-27T14:39:55.000Zhttps://synth.playtronica.com/dotpiano/https://synth.playtronica.com/waveform/https://synth.playtronica.com/juno-106/https://synth.playtronica.com/elementary/https://synth.playtronica.com/dx7/https://synth.playtronica.com/touchme/https://synth.playtronica.com/muted-io/https://synth.playtronica.com/soundfont/https://synth.playtronica.com/midi-city/https://synth.playtronica.com/aqwertyon/https://synth.playtronica.com/chrome-lab/https://synth.playtronica.com/microtonal/https://synth.playtronica.com/sympathetic/https://synth.playtronica.com/ableton/https://synth.playtronica.com/theremin/https://synth.playtronica.com/multiplayer-orchestra/https://synth.playtronica.com/touch-pianist/https://synth.playtronica.com/beepbox/https://synth.playtronica.com/roland50/https://synth.playtronica.com/disco-computer/https://synth.playtronica.com/video-sampler/https://synth.playtronica.com/bassoon/https://synth.playtronica.com/web-sid/https://synth.playtronica.com/nv-1/https://synth.playtronica.com/virtual-piano/https://synth.playtronica.com/online-sequencer/https://synth.playtronica.com/sound-box/https://synth.playtronica.com/omni/https://synth.playtronica.com/web-modular/https://synth.playtronica.com/acid-machine-2/https://synth.playtronica.com/groove-pizza/https://synth.playtronica.com/pixel-synth/https://synth.playtronica.com/multiplayer-piano/https://synth.playtronica.com/midi-driven-web-audio/https://synth.playtronica.com/sample-stich/https://synth.playtronica.com/meet-the-heisenberg/https://synth.playtronica.com/cardboard-synth/https://synth.playtronica.com/tanguy-synth/https://synth.playtronica.com/blokdust/https://synth.playtronica.com/mod-synth/https://synth.playtronica.com/olif-sy-1-k/https://synth.playtronica.com/note-sculptor/https://synth.playtronica.com/web-audio-synth-v2/https://synth.playtronica.com/isleoftune/https://synth.playtronica.com/sound-trap/https://synth.playtronica.com/typedrummer/ \ No newline at end of file +https://synth.playtronica.com/README2024-04-23T12:11:44.000Zhttps://synth.playtronica.com/auth2024-04-23T12:11:44.000Zhttps://synth.playtronica.com/auth/accept2024-04-23T12:11:44.000Zhttps://synth.playtronica.com/auth/2024-04-23T12:11:44.000Zhttps://synth.playtronica.com/auth/invite2024-04-23T12:11:44.000Zhttps://synth.playtronica.com/auth/logout2024-04-23T12:11:44.000Zhttps://synth.playtronica.com/auth/reset2024-04-23T12:11:44.000Zhttps://synth.playtronica.com/2024-04-23T12:11:44.000Zhttps://synth.playtronica.com/dotpiano/https://synth.playtronica.com/waveform/https://synth.playtronica.com/juno-106/https://synth.playtronica.com/elementary/https://synth.playtronica.com/dx7/https://synth.playtronica.com/touchme/https://synth.playtronica.com/muted-io/https://synth.playtronica.com/soundfont/https://synth.playtronica.com/midi-city/https://synth.playtronica.com/aqwertyon/https://synth.playtronica.com/chrome-lab/https://synth.playtronica.com/microtonal/https://synth.playtronica.com/sympathetic/https://synth.playtronica.com/ableton/https://synth.playtronica.com/theremin/https://synth.playtronica.com/cardinal/https://synth.playtronica.com/multiplayer-orchestra/https://synth.playtronica.com/touch-pianist/https://synth.playtronica.com/beepbox/https://synth.playtronica.com/roland50/https://synth.playtronica.com/disco-computer/https://synth.playtronica.com/video-sampler/https://synth.playtronica.com/bassoon/https://synth.playtronica.com/web-sid/https://synth.playtronica.com/nv-1/https://synth.playtronica.com/virtual-piano/https://synth.playtronica.com/online-sequencer/https://synth.playtronica.com/sound-box/https://synth.playtronica.com/omni/https://synth.playtronica.com/web-modular/https://synth.playtronica.com/acid-machine-2/https://synth.playtronica.com/groove-pizza/https://synth.playtronica.com/pixel-synth/https://synth.playtronica.com/multiplayer-piano/https://synth.playtronica.com/midi-driven-web-audio/https://synth.playtronica.com/sample-stich/https://synth.playtronica.com/meet-the-heisenberg/https://synth.playtronica.com/cardboard-synth/https://synth.playtronica.com/tanguy-synth/https://synth.playtronica.com/blokdust/https://synth.playtronica.com/mod-synth/https://synth.playtronica.com/olif-sy-1-k/https://synth.playtronica.com/note-sculptor/https://synth.playtronica.com/web-audio-synth-v2/https://synth.playtronica.com/isleoftune/https://synth.playtronica.com/sound-trap/https://synth.playtronica.com/typedrummer/ \ No newline at end of file diff --git a/sound-box/index.html b/sound-box/index.html index 593c9233..bbdfc5ac 100644 --- a/sound-box/index.html +++ b/sound-box/index.html @@ -11,10 +11,10 @@ - + - + @@ -44,8 +44,8 @@ - - + + \ No newline at end of file diff --git a/sound-trap/index.html b/sound-trap/index.html index e857385f..e641d244 100644 --- a/sound-trap/index.html +++ b/sound-trap/index.html @@ -11,10 +11,10 @@ - + - + @@ -44,8 +44,8 @@ - - + + \ No newline at end of file diff --git a/soundfont/index.html b/soundfont/index.html index 8f74a9ee..3c8f465c 100644 --- a/soundfont/index.html +++ b/soundfont/index.html @@ -11,10 +11,10 @@ - + - + @@ -44,8 +44,8 @@ -
Soundfont Sampler Synth
by Chromatone
Poly
Keyboard
Sampler
MIDI
Free open source soundfont sampler online synthesizer. Very robust and hassle free way to play some straightforward sampled instruments like horns, xylophones and just piano sounds. Instantly playable instrument with about 90 presets out of the box.
Made with 🧡 by
Playtronica &Chromatone
- +
Soundfont Sampler Synth
by Chromatone
Poly
Keyboard
Sampler
MIDI
Free open source soundfont sampler online synthesizer. Very robust and hassle free way to play some straightforward sampled instruments like horns, xylophones and just piano sounds. Instantly playable instrument with about 90 presets out of the box.
Made with 🧡 by
Playtronica &Chromatone
+ \ No newline at end of file diff --git a/sw.js b/sw.js index f34f6512..9f3604a2 100644 --- a/sw.js +++ b/sw.js @@ -1 +1 @@ -if(!self.define){let e,s={};const i=(i,n)=>(i=new URL(i+".js",n).href,s[i]||new Promise((s=>{if("document"in self){const e=document.createElement("script");e.src=i,e.onload=s,document.head.appendChild(e)}else e=i,importScripts(i),s()})).then((()=>{let e=s[i];if(!e)throw new Error(`Module ${i} didn’t register its module`);return e})));self.define=(n,l)=>{const r=e||("document"in self?document.currentScript.src:"")||location.href;if(s[r])return;let d={};const a=e=>i(e,r),o={module:{uri:r},exports:d,require:a};s[r]=Promise.all(n.map((e=>o[e]||a(e)))).then((e=>(l(...e),d)))}}define(["./workbox-f3e6b16a"],(function(e){"use strict";self.skipWaiting(),e.clientsClaim(),e.precacheAndRoute([{url:"404.html",revision:"b0488af141a08c6fc69e0490808728e5"},{url:"ableton/index.html",revision:"8921887a4f00138aa7d49e7e2679c684"},{url:"acid-machine-2/index.html",revision:"0b0a570cb1dd97f29986d528ac4dd247"},{url:"aqwertyon/index.html",revision:"e58c531aca347ed59954e20f619da461"},{url:"archive/synthescheisse/index.html",revision:"723c41e4238ba7b9cacdc5e4649a2dee"},{url:"archive/synthescheisse/SYNTHESCHEISSE_files/script.js",revision:"0f2f9610db3c70bf3ef8128066641621"},{url:"archive/synthescheisse/SYNTHESCHEISSE_files/style.css",revision:"4f047b48cc6fa6eac39a6b6026a8e350"},{url:"assets/ableton_index.md.Cg4KKF7N.js",revision:null},{url:"assets/ableton_index.md.Cg4KKF7N.lean.js",revision:null},{url:"assets/acid-machine-2_index.md.Brd6Zwuh.js",revision:null},{url:"assets/acid-machine-2_index.md.Brd6Zwuh.lean.js",revision:null},{url:"assets/app.C-uuTtMw.js",revision:null},{url:"assets/aqwertyon_index.md.DeEJlWSG.js",revision:null},{url:"assets/aqwertyon_index.md.DeEJlWSG.lean.js",revision:null},{url:"assets/auth_accept.md.Fnf3Jp_6.js",revision:null},{url:"assets/auth_accept.md.Fnf3Jp_6.lean.js",revision:null},{url:"assets/auth_index.md.QeBiS1Uo.js",revision:null},{url:"assets/auth_index.md.QeBiS1Uo.lean.js",revision:null},{url:"assets/auth_invite.md.DdrEzK2j.js",revision:null},{url:"assets/auth_invite.md.DdrEzK2j.lean.js",revision:null},{url:"assets/auth_logout.md.Cewl1AND.js",revision:null},{url:"assets/auth_logout.md.Cewl1AND.lean.js",revision:null},{url:"assets/auth_reset.md.DcV3kbsy.js",revision:null},{url:"assets/auth_reset.md.DcV3kbsy.lean.js",revision:null},{url:"assets/auth.md.D0LWfyqF.js",revision:null},{url:"assets/auth.md.D0LWfyqF.lean.js",revision:null},{url:"assets/bassoon_index.md.CtkSoO4E.js",revision:null},{url:"assets/bassoon_index.md.CtkSoO4E.lean.js",revision:null},{url:"assets/beepbox_index.md.CnBRBmfz.js",revision:null},{url:"assets/beepbox_index.md.CnBRBmfz.lean.js",revision:null},{url:"assets/blokdust_index.md.zxmuXVPq.js",revision:null},{url:"assets/blokdust_index.md.zxmuXVPq.lean.js",revision:null},{url:"assets/cardboard-synth_index.md._wVYXrIB.js",revision:null},{url:"assets/cardboard-synth_index.md._wVYXrIB.lean.js",revision:null},{url:"assets/chrome-lab_index.md.BvBA9nEa.js",revision:null},{url:"assets/chrome-lab_index.md.BvBA9nEa.lean.js",revision:null},{url:"assets/chunks/framework.DA3bj7zI.js",revision:null},{url:"assets/chunks/index.OsI8M1nP.js",revision:null},{url:"assets/chunks/SynthPage.DHgkhPru.js",revision:null},{url:"assets/chunks/theme.TKyytG40.js",revision:null},{url:"assets/chunks/useClicks.DKflLG6D.js",revision:null},{url:"assets/chunks/virtual_pwa-register.DS-1DR2V.js",revision:null},{url:"assets/chunks/workbox-window.prod.es5.DFjpnwFp.js",revision:null},{url:"assets/disco-computer_index.md.DLthuX7U.js",revision:null},{url:"assets/disco-computer_index.md.DLthuX7U.lean.js",revision:null},{url:"assets/dotpiano_index.md.BE4cP1vy.js",revision:null},{url:"assets/dotpiano_index.md.BE4cP1vy.lean.js",revision:null},{url:"assets/dx7_index.md.CTqZumAe.js",revision:null},{url:"assets/dx7_index.md.CTqZumAe.lean.js",revision:null},{url:"assets/elementary_index.md.BwvTZPnD.js",revision:null},{url:"assets/elementary_index.md.BwvTZPnD.lean.js",revision:null},{url:"assets/groove-pizza_index.md.DJKiVzNk.js",revision:null},{url:"assets/groove-pizza_index.md.DJKiVzNk.lean.js",revision:null},{url:"assets/index.md.C7QfLb-F.js",revision:null},{url:"assets/index.md.C7QfLb-F.lean.js",revision:null},{url:"assets/isleoftune_index.md.DYO1xc9U.js",revision:null},{url:"assets/isleoftune_index.md.DYO1xc9U.lean.js",revision:null},{url:"assets/juno-106_index.md.C-HewMMo.js",revision:null},{url:"assets/juno-106_index.md.C-HewMMo.lean.js",revision:null},{url:"assets/meet-the-heisenberg_index.md.lkmORynb.js",revision:null},{url:"assets/meet-the-heisenberg_index.md.lkmORynb.lean.js",revision:null},{url:"assets/microtonal_index.md.hTlkmWcW.js",revision:null},{url:"assets/microtonal_index.md.hTlkmWcW.lean.js",revision:null},{url:"assets/midi-city_index.md.C_bw8Wmp.js",revision:null},{url:"assets/midi-city_index.md.C_bw8Wmp.lean.js",revision:null},{url:"assets/midi-driven-web-audio_index.md.B06I4MxK.js",revision:null},{url:"assets/midi-driven-web-audio_index.md.B06I4MxK.lean.js",revision:null},{url:"assets/mod-synth_index.md.DQ7oqCk-.js",revision:null},{url:"assets/mod-synth_index.md.DQ7oqCk-.lean.js",revision:null},{url:"assets/multiplayer-orchestra_index.md.DBDquzNY.js",revision:null},{url:"assets/multiplayer-orchestra_index.md.DBDquzNY.lean.js",revision:null},{url:"assets/multiplayer-piano_index.md.DysQ9-I2.js",revision:null},{url:"assets/multiplayer-piano_index.md.DysQ9-I2.lean.js",revision:null},{url:"assets/muted-io_index.md.7HkqgXgG.js",revision:null},{url:"assets/muted-io_index.md.7HkqgXgG.lean.js",revision:null},{url:"assets/note-sculptor_index.md.C2XwRlKF.js",revision:null},{url:"assets/note-sculptor_index.md.C2XwRlKF.lean.js",revision:null},{url:"assets/nv-1_index.md.zz29iYg5.js",revision:null},{url:"assets/nv-1_index.md.zz29iYg5.lean.js",revision:null},{url:"assets/olif-sy-1-k_index.md.Gisa2OKR.js",revision:null},{url:"assets/olif-sy-1-k_index.md.Gisa2OKR.lean.js",revision:null},{url:"assets/omni_index.md.CL84VQWW.js",revision:null},{url:"assets/omni_index.md.CL84VQWW.lean.js",revision:null},{url:"assets/online-sequencer_index.md.DVTPW1I8.js",revision:null},{url:"assets/online-sequencer_index.md.DVTPW1I8.lean.js",revision:null},{url:"assets/pixel-synth_index.md.DqBlbh9_.js",revision:null},{url:"assets/pixel-synth_index.md.DqBlbh9_.lean.js",revision:null},{url:"assets/README.md.D9FcETfF.js",revision:null},{url:"assets/README.md.D9FcETfF.lean.js",revision:null},{url:"assets/roland50_index.md.Vb0qZb-L.js",revision:null},{url:"assets/roland50_index.md.Vb0qZb-L.lean.js",revision:null},{url:"assets/sample-stich_index.md.BEflVudk.js",revision:null},{url:"assets/sample-stich_index.md.BEflVudk.lean.js",revision:null},{url:"assets/sound-box_index.md.CEA_gYvJ.js",revision:null},{url:"assets/sound-box_index.md.CEA_gYvJ.lean.js",revision:null},{url:"assets/sound-trap_index.md.P34yttG4.js",revision:null},{url:"assets/sound-trap_index.md.P34yttG4.lean.js",revision:null},{url:"assets/soundfont_index.md.B2d0-Ban.js",revision:null},{url:"assets/soundfont_index.md.B2d0-Ban.lean.js",revision:null},{url:"assets/style.CTytDMrM.css",revision:null},{url:"assets/sympathetic_index.md.B9hVY9QB.js",revision:null},{url:"assets/sympathetic_index.md.B9hVY9QB.lean.js",revision:null},{url:"assets/tanguy-synth_index.md.D5X3OBcT.js",revision:null},{url:"assets/tanguy-synth_index.md.D5X3OBcT.lean.js",revision:null},{url:"assets/theremin_index.md.liVXJJN1.js",revision:null},{url:"assets/theremin_index.md.liVXJJN1.lean.js",revision:null},{url:"assets/touch-pianist_index.md.JrXfa-Ey.js",revision:null},{url:"assets/touch-pianist_index.md.JrXfa-Ey.lean.js",revision:null},{url:"assets/touchme_index.md.BA04O2GJ.js",revision:null},{url:"assets/touchme_index.md.BA04O2GJ.lean.js",revision:null},{url:"assets/typedrummer_index.md.BgD7csps.js",revision:null},{url:"assets/typedrummer_index.md.BgD7csps.lean.js",revision:null},{url:"assets/video-sampler_index.md.Bbx11FMn.js",revision:null},{url:"assets/video-sampler_index.md.Bbx11FMn.lean.js",revision:null},{url:"assets/virtual-piano_index.md.BIU4xc3c.js",revision:null},{url:"assets/virtual-piano_index.md.BIU4xc3c.lean.js",revision:null},{url:"assets/waveform_index.md.CU21Le1y.js",revision:null},{url:"assets/waveform_index.md.CU21Le1y.lean.js",revision:null},{url:"assets/web-audio-synth-v2_index.md.DVDfxtBK.js",revision:null},{url:"assets/web-audio-synth-v2_index.md.DVDfxtBK.lean.js",revision:null},{url:"assets/web-modular_index.md.BqKHl3qJ.js",revision:null},{url:"assets/web-modular_index.md.BqKHl3qJ.lean.js",revision:null},{url:"assets/web-sid_index.md.BQ4SubTk.js",revision:null},{url:"assets/web-sid_index.md.BQ4SubTk.lean.js",revision:null},{url:"auth.html",revision:"37eb4ae69e39c64af2cb8b0b5363d0bb"},{url:"auth/accept.html",revision:"b9a632547c8c09ea5a470bc14678a78a"},{url:"auth/index.html",revision:"2f8e29bcc73f6a8f180b760c73d9d60c"},{url:"auth/invite.html",revision:"68bdf6f17fce126e3ef36d20e27b6970"},{url:"auth/logout.html",revision:"62769e6107e57e26f4bd099b200ffb15"},{url:"auth/reset.html",revision:"80fca5ef1050d6fe4e66d4c310710f96"},{url:"bassoon/index.html",revision:"b55a6469e6251f3ad7aad9b97ec9b6fa"},{url:"beepbox/index.html",revision:"f0730692a54a6c4ef9e6d881e2147b1d"},{url:"blokdust/index.html",revision:"2d9c864a4117d40d8885324b86251a02"},{url:"cardboard-synth/index.html",revision:"115eba6ebd8572d11cb1bc4e39d87218"},{url:"chrome-lab/index.html",revision:"0675b6bc77bea6e8eb68a0f9922c55da"},{url:"click-logo.svg",revision:"f15e71cb394926c5f8c08f64186d2d49"},{url:"cover/ableton.webp",revision:"ff3a22aa28084b93c0aad2e6569657e0"},{url:"cover/acid-machine-2.webp",revision:"29fcf6a6ce374dfc8391fe6544b5f08e"},{url:"cover/aqwertyon.webp",revision:"afab8d4bdeccf669a03617c5ce738fb7"},{url:"cover/bassoon.webp",revision:"68d4a434861c2f294623fe762e694ee6"},{url:"cover/beepbox.webp",revision:"e4f93e998951d212c5b678b425769537"},{url:"cover/blokdust.webp",revision:"0613b83a920d709a268d9de2284a0354"},{url:"cover/cardboard-synth.webp",revision:"f93526fee97f6674940ca367cb841b58"},{url:"cover/chrome-lab.webp",revision:"d18ee6ca84364e4d175efa054a736fd9"},{url:"cover/disco-computer.webp",revision:"5dd18857caabf0cf1320d82537daa7d1"},{url:"cover/dotpiano.webp",revision:"c08549fc8ca38e2f4b6d1853b947ad3f"},{url:"cover/dx7.webp",revision:"a401e52d21c6d5e44240645b09d9f9c6"},{url:"cover/elementary.webp",revision:"6368b81c56ee656371254dd87bb421e8"},{url:"cover/groove-pizza.webp",revision:"ace880a23d7a39082a02a011d15ef278"},{url:"cover/isleoftune.webp",revision:"4aa136591dee0383df4d60b551bb94d8"},{url:"cover/juno-106.webp",revision:"08c31646032ced1d4c48d295b9c0ca94"},{url:"cover/meet-the-heisenberg.webp",revision:"52318d42eb06e04073f209dd1f1e5c41"},{url:"cover/microtonal.webp",revision:"d4d2b2796350e9cd786b3b68e1b225ff"},{url:"cover/midi-city.webp",revision:"fecb8bf989aba90045bd17cfd0748576"},{url:"cover/midi-driven-web-audio.webp",revision:"897bbc54b77f1e0905ad454063a13189"},{url:"cover/mod-synth.webp",revision:"7d47cac35b80190a3bce223d47756ae0"},{url:"cover/multiplayer-orchestra.webp",revision:"de82211bb0cf8997437f9b263e1dd1b2"},{url:"cover/multiplayer-piano.webp",revision:"70e6eba35fc631046c89637286b57f29"},{url:"cover/muted-io.webp",revision:"d03f4b77e5d8cddc8adc45c0a67abd50"},{url:"cover/note-sculptor.webp",revision:"67c78a7120358915332faa419a2e1f45"},{url:"cover/nv-1.webp",revision:"4c286383b8df97fae10976500d5456a9"},{url:"cover/olif-sy-1-k.webp",revision:"829a8b74f7a628fa5f319e39077687a2"},{url:"cover/omni.webp",revision:"413b121431478a3ea4aa3b3e26e19bc7"},{url:"cover/online-sequencer.webp",revision:"a5f83fc41f430f8ff6ddf9f45fbc57eb"},{url:"cover/pixel-synth.webp",revision:"f6457eb849297fbd07d5172a39573b4e"},{url:"cover/roland50.webp",revision:"1a9fe1ddb1dcd07cb42cd52567ca7173"},{url:"cover/sample-stich.webp",revision:"2019a72c6963aebca1eb7e73fc5d8737"},{url:"cover/sound-box.webp",revision:"9bc7cf72ec4b983786028af651bfb97a"},{url:"cover/sound-trap.webp",revision:"424d3e69d2cabbbd222fa63e03333693"},{url:"cover/soundfont.webp",revision:"c534fa79bd1c6f0c93244189778d400b"},{url:"cover/sympathetic.webp",revision:"3b98478cb9627398e816503b41ad91c8"},{url:"cover/tanguy-synth.webp",revision:"7dc2b96bdd88af09c835d1b3f6db0249"},{url:"cover/theremin.webp",revision:"fc256e4ea00b9e7d39fa76ef97677a55"},{url:"cover/touch-pianist.webp",revision:"75cf9432de7a642fe1c71f3dab956857"},{url:"cover/touchme.webp",revision:"c64942d3fbdba893f09b720dac8ecf2f"},{url:"cover/typedrummer.webp",revision:"8d7be4a5046e7335cf6b91caea120e43"},{url:"cover/video-sampler.webp",revision:"d4b4af73791843f35f796824011cd4aa"},{url:"cover/virtual-piano.webp",revision:"ef9aacb9a39f6908c9d326c7ce588a8a"},{url:"cover/waveform.webp",revision:"fafd71aa1fb141d388d2df6d2e89b06e"},{url:"cover/web-audio-synth-v2.webp",revision:"14206290388166cf6cb7c4023c8b0503"},{url:"cover/web-modular.webp",revision:"ba22a1a127d07da1f494af6b4b1960bf"},{url:"cover/web-sid.webp",revision:"428998a4856ef3aff09ddd0e0d34bc7d"},{url:"disco-computer/index.html",revision:"0c6f758c95a31bc9860918d8fc3ba5c4"},{url:"dotpiano/index.html",revision:"692fed4f200b888cef15266838d0e3ed"},{url:"dx7/index.html",revision:"9f53dd4187f57ca6b25ef083221232e7"},{url:"elementary/index.html",revision:"c57769e0ddf6b32798ee744832de6969"},{url:"groove-pizza/index.html",revision:"d3762b9d5e428eb48828636d8892bdc4"},{url:"icon.png",revision:"eb8e7369ba634f3bd1a96d889be50f7d"},{url:"index.html",revision:"28e988e9cfad34776f41729f1eee6339"},{url:"isleoftune/index.html",revision:"5748ccc27cb54fabbaa1d61987cd46ad"},{url:"juno-106/index.html",revision:"8eec9dd96fd958685806b849fb80980c"},{url:"line.svg",revision:"4866b853d0c5c97e9f654fa32580076a"},{url:"logo.svg",revision:"134c144f78e462c4672fc8f64e69df9e"},{url:"meet-the-heisenberg/index.html",revision:"9909912694b4ff2e324f400bb20c28e1"},{url:"microtonal/index.html",revision:"f88c0f93be73b35ef62e101999305bc5"},{url:"midi-city/index.html",revision:"6134a1e8f6032156e3e0929057a2e21d"},{url:"midi-driven-web-audio/index.html",revision:"3a61b012bf53db4fa2d9a932fe092d8c"},{url:"mod-synth/index.html",revision:"0dd032747043b36956a2cb4b251864fa"},{url:"multiplayer-orchestra/index.html",revision:"0456c5ad9003144b6e1cf18f28fd55e5"},{url:"multiplayer-piano/index.html",revision:"a1cc5a163a9bfb2a5dea18d8cdbc91c6"},{url:"muted-io/index.html",revision:"cb20a2e3ca8c14b78edddf41251c980e"},{url:"note-sculptor/index.html",revision:"7e6dff1166d8d6a133db9d329b4c5322"},{url:"nv-1/index.html",revision:"d0db030088d47727497f0e4468cd664d"},{url:"olif-sy-1-k/index.html",revision:"4349bc50fc8d1e0c636a4026511fc0eb"},{url:"omni/index.html",revision:"124101a8256cf876de8ab8213f105111"},{url:"online-sequencer/index.html",revision:"cb10e633457cd43d9273f0d5227962ca"},{url:"pixel-synth/index.html",revision:"dde9e6d2efef5d9a3f51c7b24cee2410"},{url:"pl-logo.webp",revision:"9f0d66adf550fa40e8b2e03ff997eb34"},{url:"README.html",revision:"7b9da74bc95429886acdca40bfb6d7e2"},{url:"roland50/index.html",revision:"49a0f6e2db6861392cdacca90f70a9ee"},{url:"sample-stich/index.html",revision:"489f59555c87ac92bba589745efe0b21"},{url:"sound-box/index.html",revision:"05f0a04200e63fcefdc8dcf005f0ccc0"},{url:"sound-trap/index.html",revision:"845738e820e7e2ceb75c5dcb812fc7fa"},{url:"soundfont/index.html",revision:"417c4edfed758a2001f3d81032428a2d"},{url:"sympathetic/index.html",revision:"d504307955bedd23eec93fec39b36d84"},{url:"tanguy-synth/index.html",revision:"21c35e6f0ed0de051ca6c46ec74fd29d"},{url:"theremin/index.html",revision:"496606ef80beed0f420f71958f60311f"},{url:"touch-pianist/index.html",revision:"2c6e3673ae2e783da81223d9fcf25ffa"},{url:"touchme/index.html",revision:"0473c6674adbb59c4bf219082cad0059"},{url:"typedrummer/index.html",revision:"0b2b35cb1a595df6cd309e55de888bd5"},{url:"video-sampler/index.html",revision:"6888eecf353fcc3f6a4ff381ef79bec5"},{url:"virtual-piano/index.html",revision:"f0fefab3e59f078b584b5da6fb54f83d"},{url:"waveform/index.html",revision:"4ffc1c609d197e89bfcc357476399feb"},{url:"web-audio-synth-v2/index.html",revision:"84b11aae6d8f7ca494cf5efbe585f943"},{url:"web-modular/index.html",revision:"737b5f2264c43ecb05f370d53f0b3c2a"},{url:"web-sid/index.html",revision:"7d26b82668dc853a6c0df5c9bad8e6e1"},{url:"logo.svg",revision:"134c144f78e462c4672fc8f64e69df9e"},{url:"icon.png",revision:"eb8e7369ba634f3bd1a96d889be50f7d"},{url:"manifest.webmanifest",revision:"aee00a3fc5429948aa59c7d1c9d825cc"}],{}),e.cleanupOutdatedCaches(),e.registerRoute(new e.NavigationRoute(e.createHandlerBoundToURL("index.html")))})); +if(!self.define){let e,s={};const i=(i,n)=>(i=new URL(i+".js",n).href,s[i]||new Promise((s=>{if("document"in self){const e=document.createElement("script");e.src=i,e.onload=s,document.head.appendChild(e)}else e=i,importScripts(i),s()})).then((()=>{let e=s[i];if(!e)throw new Error(`Module ${i} didn’t register its module`);return e})));self.define=(n,l)=>{const r=e||("document"in self?document.currentScript.src:"")||location.href;if(s[r])return;let d={};const a=e=>i(e,r),o={module:{uri:r},exports:d,require:a};s[r]=Promise.all(n.map((e=>o[e]||a(e)))).then((e=>(l(...e),d)))}}define(["./workbox-f3e6b16a"],(function(e){"use strict";self.skipWaiting(),e.clientsClaim(),e.precacheAndRoute([{url:"404.html",revision:"ec10509eedf7e9dc40d289408011311f"},{url:"ableton/index.html",revision:"f9478d102fde16f0cdb143c64207f815"},{url:"acid-machine-2/index.html",revision:"d3d86d24ee2df460b26a61d95387b922"},{url:"aqwertyon/index.html",revision:"e3785aa73f0a784287eec53cd27d3a86"},{url:"archive/synthescheisse/index.html",revision:"723c41e4238ba7b9cacdc5e4649a2dee"},{url:"archive/synthescheisse/SYNTHESCHEISSE_files/script.js",revision:"0f2f9610db3c70bf3ef8128066641621"},{url:"archive/synthescheisse/SYNTHESCHEISSE_files/style.css",revision:"4f047b48cc6fa6eac39a6b6026a8e350"},{url:"assets/ableton_index.md.DZBvrMY6.js",revision:null},{url:"assets/ableton_index.md.DZBvrMY6.lean.js",revision:null},{url:"assets/acid-machine-2_index.md.fdaF3_po.js",revision:null},{url:"assets/acid-machine-2_index.md.fdaF3_po.lean.js",revision:null},{url:"assets/app.C-uuTtMw.js",revision:null},{url:"assets/aqwertyon_index.md.CgYlagfO.js",revision:null},{url:"assets/aqwertyon_index.md.CgYlagfO.lean.js",revision:null},{url:"assets/auth_accept.md.DucFg5Gq.js",revision:null},{url:"assets/auth_accept.md.DucFg5Gq.lean.js",revision:null},{url:"assets/auth_index.md.CCxxwTF6.js",revision:null},{url:"assets/auth_index.md.CCxxwTF6.lean.js",revision:null},{url:"assets/auth_invite.md.DYCxXOu5.js",revision:null},{url:"assets/auth_invite.md.DYCxXOu5.lean.js",revision:null},{url:"assets/auth_logout.md.Ck5mdKg9.js",revision:null},{url:"assets/auth_logout.md.Ck5mdKg9.lean.js",revision:null},{url:"assets/auth_reset.md.OAZjQyas.js",revision:null},{url:"assets/auth_reset.md.OAZjQyas.lean.js",revision:null},{url:"assets/auth.md.BhfyOX0C.js",revision:null},{url:"assets/auth.md.BhfyOX0C.lean.js",revision:null},{url:"assets/bassoon_index.md.DfJY8utO.js",revision:null},{url:"assets/bassoon_index.md.DfJY8utO.lean.js",revision:null},{url:"assets/beepbox_index.md.CO50im6t.js",revision:null},{url:"assets/beepbox_index.md.CO50im6t.lean.js",revision:null},{url:"assets/blokdust_index.md.DjRxTR6L.js",revision:null},{url:"assets/blokdust_index.md.DjRxTR6L.lean.js",revision:null},{url:"assets/cardboard-synth_index.md.BWDkKcYV.js",revision:null},{url:"assets/cardboard-synth_index.md.BWDkKcYV.lean.js",revision:null},{url:"assets/cardinal_index.md.ClbFNEJu.js",revision:null},{url:"assets/cardinal_index.md.ClbFNEJu.lean.js",revision:null},{url:"assets/chrome-lab_index.md.BtLHLke3.js",revision:null},{url:"assets/chrome-lab_index.md.BtLHLke3.lean.js",revision:null},{url:"assets/chunks/framework.DA3bj7zI.js",revision:null},{url:"assets/chunks/index.OsI8M1nP.js",revision:null},{url:"assets/chunks/SynthPage.B19zwNJN.js",revision:null},{url:"assets/chunks/theme.TKyytG40.js",revision:null},{url:"assets/chunks/useClicks.DKflLG6D.js",revision:null},{url:"assets/chunks/virtual_pwa-register.DS-1DR2V.js",revision:null},{url:"assets/chunks/workbox-window.prod.es5.DFjpnwFp.js",revision:null},{url:"assets/disco-computer_index.md.T_rL6HPy.js",revision:null},{url:"assets/disco-computer_index.md.T_rL6HPy.lean.js",revision:null},{url:"assets/dotpiano_index.md.B4corNww.js",revision:null},{url:"assets/dotpiano_index.md.B4corNww.lean.js",revision:null},{url:"assets/dx7_index.md.8RoJDeWM.js",revision:null},{url:"assets/dx7_index.md.8RoJDeWM.lean.js",revision:null},{url:"assets/elementary_index.md.DjWMsgrh.js",revision:null},{url:"assets/elementary_index.md.DjWMsgrh.lean.js",revision:null},{url:"assets/groove-pizza_index.md.Ddx5mffv.js",revision:null},{url:"assets/groove-pizza_index.md.Ddx5mffv.lean.js",revision:null},{url:"assets/index.md.Bp19cI6y.js",revision:null},{url:"assets/index.md.Bp19cI6y.lean.js",revision:null},{url:"assets/isleoftune_index.md.CjvOwWsY.js",revision:null},{url:"assets/isleoftune_index.md.CjvOwWsY.lean.js",revision:null},{url:"assets/juno-106_index.md.Cei-yIZ_.js",revision:null},{url:"assets/juno-106_index.md.Cei-yIZ_.lean.js",revision:null},{url:"assets/meet-the-heisenberg_index.md.COSkv5m_.js",revision:null},{url:"assets/meet-the-heisenberg_index.md.COSkv5m_.lean.js",revision:null},{url:"assets/microtonal_index.md.7zjrkP34.js",revision:null},{url:"assets/microtonal_index.md.7zjrkP34.lean.js",revision:null},{url:"assets/midi-city_index.md.quDpD-LH.js",revision:null},{url:"assets/midi-city_index.md.quDpD-LH.lean.js",revision:null},{url:"assets/midi-driven-web-audio_index.md.BHLhzMEc.js",revision:null},{url:"assets/midi-driven-web-audio_index.md.BHLhzMEc.lean.js",revision:null},{url:"assets/mod-synth_index.md.C9QKok6-.js",revision:null},{url:"assets/mod-synth_index.md.C9QKok6-.lean.js",revision:null},{url:"assets/multiplayer-orchestra_index.md.B-NHU8MY.js",revision:null},{url:"assets/multiplayer-orchestra_index.md.B-NHU8MY.lean.js",revision:null},{url:"assets/multiplayer-piano_index.md.C8sFZ0Lc.js",revision:null},{url:"assets/multiplayer-piano_index.md.C8sFZ0Lc.lean.js",revision:null},{url:"assets/muted-io_index.md.C_wNdUY3.js",revision:null},{url:"assets/muted-io_index.md.C_wNdUY3.lean.js",revision:null},{url:"assets/note-sculptor_index.md.qRvnP-u9.js",revision:null},{url:"assets/note-sculptor_index.md.qRvnP-u9.lean.js",revision:null},{url:"assets/nv-1_index.md.DLCJmm76.js",revision:null},{url:"assets/nv-1_index.md.DLCJmm76.lean.js",revision:null},{url:"assets/olif-sy-1-k_index.md.BusScNUQ.js",revision:null},{url:"assets/olif-sy-1-k_index.md.BusScNUQ.lean.js",revision:null},{url:"assets/omni_index.md.COPXpr4K.js",revision:null},{url:"assets/omni_index.md.COPXpr4K.lean.js",revision:null},{url:"assets/online-sequencer_index.md.CD43l8x6.js",revision:null},{url:"assets/online-sequencer_index.md.CD43l8x6.lean.js",revision:null},{url:"assets/pixel-synth_index.md.DP2JcS10.js",revision:null},{url:"assets/pixel-synth_index.md.DP2JcS10.lean.js",revision:null},{url:"assets/README.md.C9Wu_do9.js",revision:null},{url:"assets/README.md.C9Wu_do9.lean.js",revision:null},{url:"assets/roland50_index.md.BrTX2pyE.js",revision:null},{url:"assets/roland50_index.md.BrTX2pyE.lean.js",revision:null},{url:"assets/sample-stich_index.md.CNvttCPH.js",revision:null},{url:"assets/sample-stich_index.md.CNvttCPH.lean.js",revision:null},{url:"assets/sound-box_index.md.SIPDrKZA.js",revision:null},{url:"assets/sound-box_index.md.SIPDrKZA.lean.js",revision:null},{url:"assets/sound-trap_index.md.DeUmGQYN.js",revision:null},{url:"assets/sound-trap_index.md.DeUmGQYN.lean.js",revision:null},{url:"assets/soundfont_index.md.OAkXv37o.js",revision:null},{url:"assets/soundfont_index.md.OAkXv37o.lean.js",revision:null},{url:"assets/style.CTytDMrM.css",revision:null},{url:"assets/sympathetic_index.md.CdbkUUzW.js",revision:null},{url:"assets/sympathetic_index.md.CdbkUUzW.lean.js",revision:null},{url:"assets/tanguy-synth_index.md.CmH5Xcd1.js",revision:null},{url:"assets/tanguy-synth_index.md.CmH5Xcd1.lean.js",revision:null},{url:"assets/theremin_index.md.CXNtky1n.js",revision:null},{url:"assets/theremin_index.md.CXNtky1n.lean.js",revision:null},{url:"assets/touch-pianist_index.md.EQqcc00y.js",revision:null},{url:"assets/touch-pianist_index.md.EQqcc00y.lean.js",revision:null},{url:"assets/touchme_index.md.DQ8XRIQ7.js",revision:null},{url:"assets/touchme_index.md.DQ8XRIQ7.lean.js",revision:null},{url:"assets/typedrummer_index.md.DDcMGeRo.js",revision:null},{url:"assets/typedrummer_index.md.DDcMGeRo.lean.js",revision:null},{url:"assets/video-sampler_index.md.Fp916520.js",revision:null},{url:"assets/video-sampler_index.md.Fp916520.lean.js",revision:null},{url:"assets/virtual-piano_index.md.CVkX-1m_.js",revision:null},{url:"assets/virtual-piano_index.md.CVkX-1m_.lean.js",revision:null},{url:"assets/waveform_index.md.BMgbw7Z5.js",revision:null},{url:"assets/waveform_index.md.BMgbw7Z5.lean.js",revision:null},{url:"assets/web-audio-synth-v2_index.md.mytGv9SF.js",revision:null},{url:"assets/web-audio-synth-v2_index.md.mytGv9SF.lean.js",revision:null},{url:"assets/web-modular_index.md.CSZ2i0Av.js",revision:null},{url:"assets/web-modular_index.md.CSZ2i0Av.lean.js",revision:null},{url:"assets/web-sid_index.md.Dr-XVffJ.js",revision:null},{url:"assets/web-sid_index.md.Dr-XVffJ.lean.js",revision:null},{url:"auth.html",revision:"845dbf56ca96489fedb3be348fe4a4af"},{url:"auth/accept.html",revision:"e2f9ebce71303b776e5eca43b773cc6a"},{url:"auth/index.html",revision:"b321a2a48291f44c187eb4171b108618"},{url:"auth/invite.html",revision:"c988d3d9a55e2a3a4c8a4421f47d9f26"},{url:"auth/logout.html",revision:"ca5b84717c2220f257b28397c41f64ed"},{url:"auth/reset.html",revision:"9692fdeae7ae08ae3d83483910f42a30"},{url:"bassoon/index.html",revision:"74b15808dce58871f22a0cabfbc07378"},{url:"beepbox/index.html",revision:"5b5c53e97f6e33d03f0c492e4fff8021"},{url:"blokdust/index.html",revision:"1ccbb3950f8bd1b78d973b1399392c19"},{url:"cardboard-synth/index.html",revision:"4cc8a343998c4acdaf3d08042dd096c2"},{url:"cardinal/index.html",revision:"537a6b3f9c3e3ffdf3f4a6040e925132"},{url:"chrome-lab/index.html",revision:"d24ef22a23541af7ed07b13524c4c61d"},{url:"click-logo.svg",revision:"f15e71cb394926c5f8c08f64186d2d49"},{url:"cover/ableton.webp",revision:"ff3a22aa28084b93c0aad2e6569657e0"},{url:"cover/acid-machine-2.webp",revision:"29fcf6a6ce374dfc8391fe6544b5f08e"},{url:"cover/aqwertyon.webp",revision:"afab8d4bdeccf669a03617c5ce738fb7"},{url:"cover/bassoon.webp",revision:"68d4a434861c2f294623fe762e694ee6"},{url:"cover/beepbox.webp",revision:"e4f93e998951d212c5b678b425769537"},{url:"cover/blokdust.webp",revision:"0613b83a920d709a268d9de2284a0354"},{url:"cover/cardboard-synth.webp",revision:"f93526fee97f6674940ca367cb841b58"},{url:"cover/cardinal.webp",revision:"1cf71dbecd04b9046aa68389b5a12dd0"},{url:"cover/chrome-lab.webp",revision:"d18ee6ca84364e4d175efa054a736fd9"},{url:"cover/disco-computer.webp",revision:"5dd18857caabf0cf1320d82537daa7d1"},{url:"cover/dotpiano.webp",revision:"c08549fc8ca38e2f4b6d1853b947ad3f"},{url:"cover/dx7.webp",revision:"a401e52d21c6d5e44240645b09d9f9c6"},{url:"cover/elementary.webp",revision:"6368b81c56ee656371254dd87bb421e8"},{url:"cover/groove-pizza.webp",revision:"ace880a23d7a39082a02a011d15ef278"},{url:"cover/isleoftune.webp",revision:"4aa136591dee0383df4d60b551bb94d8"},{url:"cover/juno-106.webp",revision:"08c31646032ced1d4c48d295b9c0ca94"},{url:"cover/meet-the-heisenberg.webp",revision:"52318d42eb06e04073f209dd1f1e5c41"},{url:"cover/microtonal.webp",revision:"d4d2b2796350e9cd786b3b68e1b225ff"},{url:"cover/midi-city.webp",revision:"fecb8bf989aba90045bd17cfd0748576"},{url:"cover/midi-driven-web-audio.webp",revision:"897bbc54b77f1e0905ad454063a13189"},{url:"cover/mod-synth.webp",revision:"7d47cac35b80190a3bce223d47756ae0"},{url:"cover/multiplayer-orchestra.webp",revision:"de82211bb0cf8997437f9b263e1dd1b2"},{url:"cover/multiplayer-piano.webp",revision:"70e6eba35fc631046c89637286b57f29"},{url:"cover/muted-io.webp",revision:"d03f4b77e5d8cddc8adc45c0a67abd50"},{url:"cover/note-sculptor.webp",revision:"67c78a7120358915332faa419a2e1f45"},{url:"cover/nv-1.webp",revision:"4c286383b8df97fae10976500d5456a9"},{url:"cover/olif-sy-1-k.webp",revision:"829a8b74f7a628fa5f319e39077687a2"},{url:"cover/omni.webp",revision:"413b121431478a3ea4aa3b3e26e19bc7"},{url:"cover/online-sequencer.webp",revision:"a5f83fc41f430f8ff6ddf9f45fbc57eb"},{url:"cover/pixel-synth.webp",revision:"f6457eb849297fbd07d5172a39573b4e"},{url:"cover/roland50.webp",revision:"1a9fe1ddb1dcd07cb42cd52567ca7173"},{url:"cover/sample-stich.webp",revision:"2019a72c6963aebca1eb7e73fc5d8737"},{url:"cover/sound-box.webp",revision:"9bc7cf72ec4b983786028af651bfb97a"},{url:"cover/sound-trap.webp",revision:"424d3e69d2cabbbd222fa63e03333693"},{url:"cover/soundfont.webp",revision:"c534fa79bd1c6f0c93244189778d400b"},{url:"cover/sympathetic.webp",revision:"3b98478cb9627398e816503b41ad91c8"},{url:"cover/tanguy-synth.webp",revision:"7dc2b96bdd88af09c835d1b3f6db0249"},{url:"cover/theremin.webp",revision:"fc256e4ea00b9e7d39fa76ef97677a55"},{url:"cover/touch-pianist.webp",revision:"75cf9432de7a642fe1c71f3dab956857"},{url:"cover/touchme.webp",revision:"c64942d3fbdba893f09b720dac8ecf2f"},{url:"cover/typedrummer.webp",revision:"8d7be4a5046e7335cf6b91caea120e43"},{url:"cover/video-sampler.webp",revision:"d4b4af73791843f35f796824011cd4aa"},{url:"cover/virtual-piano.webp",revision:"ef9aacb9a39f6908c9d326c7ce588a8a"},{url:"cover/waveform.webp",revision:"fafd71aa1fb141d388d2df6d2e89b06e"},{url:"cover/web-audio-synth-v2.webp",revision:"14206290388166cf6cb7c4023c8b0503"},{url:"cover/web-modular.webp",revision:"ba22a1a127d07da1f494af6b4b1960bf"},{url:"cover/web-sid.webp",revision:"428998a4856ef3aff09ddd0e0d34bc7d"},{url:"disco-computer/index.html",revision:"a112c5371ec0dd363855cadc64a6b02c"},{url:"dotpiano/index.html",revision:"97d8fb43b8582bd20089d439ee8261af"},{url:"dx7/index.html",revision:"bd6c7e6bdcd7d14730259c242a034bec"},{url:"elementary/index.html",revision:"e431772686b3f155cd9b4034c9dbc972"},{url:"groove-pizza/index.html",revision:"970e4868aa533d2008b71976f0ef05cf"},{url:"icon.png",revision:"eb8e7369ba634f3bd1a96d889be50f7d"},{url:"index.html",revision:"df73079c50c751cdeda757b6021f28b0"},{url:"isleoftune/index.html",revision:"eadf8d3fe991cd703df855f9f0a5e799"},{url:"juno-106/index.html",revision:"b026611838d2415cd91ee2a8a9a36b14"},{url:"line.svg",revision:"4866b853d0c5c97e9f654fa32580076a"},{url:"logo.svg",revision:"134c144f78e462c4672fc8f64e69df9e"},{url:"meet-the-heisenberg/index.html",revision:"593fbc2f92d95643e91636490ffcabfa"},{url:"microtonal/index.html",revision:"4288072048af4561e9abb70a0ec2dda7"},{url:"midi-city/index.html",revision:"dff023554fe383a01f69e40ef93848d3"},{url:"midi-driven-web-audio/index.html",revision:"d240c28cd4ed0232121982578342b147"},{url:"mod-synth/index.html",revision:"33e7110a4ad9f6b8cc56e653b4489bd5"},{url:"multiplayer-orchestra/index.html",revision:"5a7d51e1a66034b93069c9438e778fbd"},{url:"multiplayer-piano/index.html",revision:"1b1bae279941428472e3e0d2d576e4d9"},{url:"muted-io/index.html",revision:"b5768cfcec2b7f2f8db7ff122a838580"},{url:"note-sculptor/index.html",revision:"4ff1f999558bf7ccb090f9fb03bfa3a7"},{url:"nv-1/index.html",revision:"c75f03baff24577a53ccc954a925eec7"},{url:"olif-sy-1-k/index.html",revision:"8734d890f41d3ac5f2db4dacf4963175"},{url:"omni/index.html",revision:"ebb9e493b9b804e56dc4ee9b8da95e43"},{url:"online-sequencer/index.html",revision:"c3bbf386d5a1d2f88794e71e48de8999"},{url:"pixel-synth/index.html",revision:"c1aeeda42bf888d88c372f61833cb594"},{url:"pl-logo.webp",revision:"9f0d66adf550fa40e8b2e03ff997eb34"},{url:"README.html",revision:"87f369611f29a940d9692c1207c5cf07"},{url:"roland50/index.html",revision:"7cc977a5fd0f8146fffee60d422a46f9"},{url:"sample-stich/index.html",revision:"edc15b3ac6efdae27d76a35db1416765"},{url:"sound-box/index.html",revision:"27fe3137c638165450268e2048217549"},{url:"sound-trap/index.html",revision:"7499b8ef15d4bac7d6cef7cc1744496e"},{url:"soundfont/index.html",revision:"6ca14bc8385bdb35c85411383dd44b9b"},{url:"sympathetic/index.html",revision:"6c368bd689ae823e6206c57de815da15"},{url:"tanguy-synth/index.html",revision:"92eef1b788228ce7c71d847eb0a9b81b"},{url:"theremin/index.html",revision:"d947566540c1f9cb7634cf6e775ba77d"},{url:"touch-pianist/index.html",revision:"4a89f74b53538a9dc5a3f7016bf4cd69"},{url:"touchme/index.html",revision:"c2fee9a63b16aef7a40ffd227db90f2b"},{url:"typedrummer/index.html",revision:"74158d7b2a2106817c4b7983acb6feb6"},{url:"video-sampler/index.html",revision:"5be4713a72491df9dabf1cfea5de26dd"},{url:"virtual-piano/index.html",revision:"0c8f5948a8c9acad11680d7b29d36df2"},{url:"waveform/index.html",revision:"08bf1f82ca791b91ece052a62b42cf5a"},{url:"web-audio-synth-v2/index.html",revision:"7da0b8d261d229f7ec5d4bd249f28aba"},{url:"web-modular/index.html",revision:"c4b6f254381f6faa962807d63e86b857"},{url:"web-sid/index.html",revision:"3450cb0868eb3168aef880b75abe3ae3"},{url:"logo.svg",revision:"134c144f78e462c4672fc8f64e69df9e"},{url:"icon.png",revision:"eb8e7369ba634f3bd1a96d889be50f7d"},{url:"manifest.webmanifest",revision:"aee00a3fc5429948aa59c7d1c9d825cc"}],{}),e.cleanupOutdatedCaches(),e.registerRoute(new e.NavigationRoute(e.createHandlerBoundToURL("index.html")))})); diff --git a/sympathetic/index.html b/sympathetic/index.html index 697fe445..61290098 100644 --- a/sympathetic/index.html +++ b/sympathetic/index.html @@ -11,10 +11,10 @@ - + - + @@ -44,8 +44,8 @@ -
Sympathetic Synthesizer System Mk 1
by Stuart Memo
keyboard
midi
additive
Made with 🧡 by
Playtronica &Chromatone
- +
Sympathetic Synthesizer System Mk 1
by Stuart Memo
keyboard
midi
additive
Made with 🧡 by
Playtronica &Chromatone
+ \ No newline at end of file diff --git a/tanguy-synth/index.html b/tanguy-synth/index.html index 9edee7e9..99175018 100644 --- a/tanguy-synth/index.html +++ b/tanguy-synth/index.html @@ -11,10 +11,10 @@ - + - + @@ -44,8 +44,8 @@ -
Tanguy synth
by Luke Teaford
monophonic
additive
keyboard
Made with 🧡 by
Playtronica &Chromatone
- +
Tanguy synth
by Luke Teaford
monophonic
additive
keyboard
Made with 🧡 by
Playtronica &Chromatone
+ \ No newline at end of file diff --git a/theremin/index.html b/theremin/index.html index e1e0c8f3..e5bbd6e3 100644 --- a/theremin/index.html +++ b/theremin/index.html @@ -11,10 +11,10 @@ - + - + @@ -44,8 +44,8 @@ - - + + \ No newline at end of file diff --git a/touch-pianist/index.html b/touch-pianist/index.html index 01d02927..a781f683 100644 --- a/touch-pianist/index.html +++ b/touch-pianist/index.html @@ -11,10 +11,10 @@ - + - + @@ -44,8 +44,8 @@ -
Touch Pianist
by EarSlap
entertainment
piano

Touch Pianist is a musical toy / instrument that allows the user to perform hard-to-play classical piano music favorites (from composers like Beethoven, Mozart, Bach, Satie, Debussy to name a few) just by tapping the rhythm of the piece's particular sound events on a computer keyboard or a touch screen.

It also provides live visualisation of the pieces that are being performed. There is no score keeping, the user is free to perform the music in any way they wish. The premise is that it is really fun to perform a piece you know well, exactly like you feel it with so little effort.

Touch Pianist has CoreMIDI support so you can use your favorite piano / sound plug-in in your computer as a sound source if you wish.

Made with 🧡 by
Playtronica &Chromatone
- +
Touch Pianist
by EarSlap
entertainment
piano

Touch Pianist is a musical toy / instrument that allows the user to perform hard-to-play classical piano music favorites (from composers like Beethoven, Mozart, Bach, Satie, Debussy to name a few) just by tapping the rhythm of the piece's particular sound events on a computer keyboard or a touch screen.

It also provides live visualisation of the pieces that are being performed. There is no score keeping, the user is free to perform the music in any way they wish. The premise is that it is really fun to perform a piece you know well, exactly like you feel it with so little effort.

Touch Pianist has CoreMIDI support so you can use your favorite piano / sound plug-in in your computer as a sound source if you wish.

Made with 🧡 by
Playtronica &Chromatone
+ \ No newline at end of file diff --git a/touchme/index.html b/touchme/index.html index 2b80df57..8560cd45 100644 --- a/touchme/index.html +++ b/touchme/index.html @@ -11,10 +11,10 @@ - + - + @@ -44,8 +44,8 @@ -
chromatone
playtronica
Made with 🧡 by
Playtronica &Chromatone
- +
chromatone
playtronica
Made with 🧡 by
Playtronica &Chromatone
+ \ No newline at end of file diff --git a/typedrummer/index.html b/typedrummer/index.html index 9dac973a..669ad800 100644 --- a/typedrummer/index.html +++ b/typedrummer/index.html @@ -11,10 +11,10 @@ - + - + @@ -44,8 +44,8 @@ -
Type Drummer
by Kyle Stetz
sequencer
drums
Keyboard
Type your drum loops
Made with 🧡 by
Playtronica &Chromatone
- +
Type Drummer
by Kyle Stetz
sequencer
drums
Keyboard
Type your drum loops
Made with 🧡 by
Playtronica &Chromatone
+ \ No newline at end of file diff --git a/video-sampler/index.html b/video-sampler/index.html index 46c14e1d..1af25e89 100644 --- a/video-sampler/index.html +++ b/video-sampler/index.html @@ -11,10 +11,10 @@ - + - + @@ -44,8 +44,8 @@ - - + + \ No newline at end of file diff --git a/virtual-piano/index.html b/virtual-piano/index.html index 35623ad9..85b1c994 100644 --- a/virtual-piano/index.html +++ b/virtual-piano/index.html @@ -11,10 +11,10 @@ - + - + @@ -44,8 +44,8 @@ -
VirtualPiano.eu
by WebSyrup
midi
keyboard

VirtualPiano.eu is the online synthesizer that allows you to play 128 musical instruments for free using your PC keyboard, the mouse or by connecting an external MIDI keyboard.

You can adjust Volume, Reverb, Loop and quality. Use the sustain and adjust the octaves, you can also select and set different channels including the one for the drums.

Create your own melodies, have fun playing or use VirtualPiano to learn how to play the Piano online on your own.

Made with 🧡 by
Playtronica &Chromatone
- +
VirtualPiano.eu
by WebSyrup
midi
keyboard

VirtualPiano.eu is the online synthesizer that allows you to play 128 musical instruments for free using your PC keyboard, the mouse or by connecting an external MIDI keyboard.

You can adjust Volume, Reverb, Loop and quality. Use the sustain and adjust the octaves, you can also select and set different channels including the one for the drums.

Create your own melodies, have fun playing or use VirtualPiano to learn how to play the Piano online on your own.

Made with 🧡 by
Playtronica &Chromatone
+ \ No newline at end of file diff --git a/waveform/index.html b/waveform/index.html index 946d0c1f..19b339f2 100644 --- a/waveform/index.html +++ b/waveform/index.html @@ -11,10 +11,10 @@ - + - + @@ -44,8 +44,8 @@ -
Waveform
by Qvantor
playtronica
polyphonic
midi
Made with 🧡 by
Playtronica &Chromatone
- +
Waveform
by Qvantor
playtronica
polyphonic
midi
Made with 🧡 by
Playtronica &Chromatone
+ \ No newline at end of file diff --git a/web-audio-synth-v2/index.html b/web-audio-synth-v2/index.html index 9c7efbce..16109247 100644 --- a/web-audio-synth-v2/index.html +++ b/web-audio-synth-v2/index.html @@ -11,10 +11,10 @@ - + - + @@ -44,8 +44,8 @@ - - + + \ No newline at end of file diff --git a/web-modular/index.html b/web-modular/index.html index a577dd19..2dacfc30 100644 --- a/web-modular/index.html +++ b/web-modular/index.html @@ -11,10 +11,10 @@ - + - + @@ -44,8 +44,8 @@ - - + + \ No newline at end of file diff --git a/web-sid/index.html b/web-sid/index.html index 8f5f1839..241644b5 100644 --- a/web-sid/index.html +++ b/web-sid/index.html @@ -11,10 +11,10 @@ - + - + @@ -44,8 +44,8 @@ -
WebSID Commodore 64
by Igor Zinken
polyphonic
keyboard
midi
additive
Made with 🧡 by
Playtronica &Chromatone
- +
WebSID Commodore 64
by Igor Zinken
polyphonic
keyboard
midi
additive
Made with 🧡 by
Playtronica &Chromatone
+ \ No newline at end of file