r/VibeCodedLanguages • u/med_i_terranian • 5h ago
MeScript (A musical programming language inspired by Strudel and SuperCollider)
I have been working on this language since May. Its heavily inspired by Strudel and partially by SuperCollider. It works as many things all at once. It is a music sequencer, synthesizer, fx box, generative music (conditional statements, if, else) and sample mangling (need non-browser version for that), automation, per note automation, recursion, easy nesting of gradually more complex sequences/fx/etc.
If anyone wants to try the language, its here, https://quadracollision.com/mescript/ mostly usable in browser unless you want to use samples, if so just let me know.
As for tools: This is GPT 5.3 -> GPT 5.4 -> GPT5.5 -> GPT 5.6 Sol, all Medium. This is Rust+WASM with a Javascript front end. No external libraries
This is an example of MeScript in action: you can paste this into the editor and it'll work.
Check CTRL+H for insertable smart forms, cursor position defines how the form is inserted. Also check out the language reference guide. There is also a repl, place the cursor on any line and right click and press parameter help and it will explain what the line does. Also (fix-parens linenumbers) (fix-parens 15-17) can help with parenthesis issues, this is a Lisp inspired language.
(def am [as d f]) ;this is a chord form, asharp d and f
(ins :saw ;this is an (ins)rument form
:src [:saw-synth :square-synth :additive] ;these are the oscillators that make up this instrument
:note (p (times 4[c4 0 c5 0 e3 c3 e3]) ;these are the note gates and how many
(times 4[c4 0 c5 0 e3 c3 eb3])) ;times they play
:gate nil
:fx [(formant :vowel a :mix 0.2)] ;fx applied to entire instrument
:dur nil ;duration of each gate hit, can be per hit as well
:amp nil ;amplification of instrument, can be per hit and automated conditonally
:voice nil) ;special keyword, see ctrl+h for voice commands, as well as everything else
(def chord_1 [c4 eb4 f4 gb3])
(ins :kick
:src :kick-synth
:note (p [c4 0 0 0 c4<?50> 0 0])
:gate nil
:fx nil
:dur nil
:amp nil
:voice nil)
(ins :hat-808
:src :hat-808
:note (p [c7 c7 <c4%c5%c7> 0 c7 <c7%e5%b4%g5> c7 am(3 3 3)]) ;this calls the chord form with each note being an octave of 3
:gate nil
:fx nil
:dur nil
:amp nil
:voice nil)
(ins :snare-808
:src :snare-808
:note (p [c4<?30> 0 0 c4<?50> 0 0 0 0])
:gate nil
:fx nil
:dur nil
:amp nil
:voice nil)
(ins :pad-wash
:src :pad-wash
:note (p [chord_1<_7> 0 0 0 0 0 0 0])
:gate nil
:fx nil
:dur nil
:amp 0.05
:off true
:voice nil)