MusicScript
A domain-specific language for music production. Write beats, melodies, vocals, and full arrangements in plain text — then run them in the studio.
Files use the .gms extension. Runs in the browser and desktop app.
A beat in under 20 lines
// MusicScript — GoMeow Studio
// Drop into code and make it bang
project "My Beat" {
bpm: 140
key: Dm
time: 4/4
swing: 0.1
}
beat main {
kick: [X . . . X . . . X . . . X . . .]
snare: [. . X . . . X . . . X . . . X .]
hihat: [X 7 X 7 X 7 X 7 X 7 X 7 X 7 X 7]
808: [D1:8 . . . F1:4 . . A1:2 . . . . . . . .]
}
melody hook {
instrument: juno106
notes: [D4:2 . F4:2 A4:4 G4:2 . F4:2 D4:8]
fx: [reverb(0.35) delay(1/8, 0.5)]
velocity: 0.75
}
section verse {
bars: 8
play: [main hook]
}
structure [
verse x4
]
Language constructs
Project
Global settings for the composition.
project "Brooklyn Nights" {
bpm: 140
key: Dm
time: 4/4
swing: 0.12
}Beat
16-step sequencer. X = hit, . = rest, 0-9 = velocity, Note:len = pitched hit.
beat main {
kick: [X . . . X . . . X . . . X . . .]
snare: [. . X . . . X . . . X . . . X .]
hihat: [X 7 X 7 X 7 X 7 X 7 X 7 X 7 X 7]
808: [D1:8 . . F1:4 . . A1:2 . . . . . . . .]
}Melody
Note/chord sequence. Notes use Note+Octave:Length format.
melody hook {
instrument: juno106
notes: [D4:2 . F4:2 A4:4 G4:2 D4:8]
fx: [reverb(0.4) delay(1/8, 0.5)]
velocity: 0.8
}Chord progression. Quality: m m7 maj7 7 dim aug sus2 sus4
chords: [Dm:4 Am:4 Gm:4 Bb:4]Vocal
Synthesized vocal line via ElevenLabs.
vocal hook_vox {
text: "from Marcy to the world"
voice: hip_hop_male
pitch: -2
fx: [reverb(0.3) autotune(Dm)]
}Sample
Load an audio file. chop slices it into segments (0.0–1.0).
sample stab {
file: "~/samples/horn.wav"
pitch: +2
chop: [0:0.5, 0.5:1.0]
}Section
A named time block. bpm can be absolute (140) or relative (+5, -10).
section chorus {
bars: 8
bpm: +5
play: [main hook hook_vox]
fx: [reverb(0.5)]
}Structure
Song arrangement. Each item is a section name with optional repeat count.
structure [
intro x1
verse x2
chorus x2
bridge x1
chorus x4
]Effects
Room reverb.
reverb(0.4)Feedback delay.
delay(1/8, 0.5)lpf | hpf | bandpass.
filter(lpf, 2000)Dynamics compression.
compress(4:1, -18db)3-band EQ.
eq(low: +3db, mid: -2db)Waveshaper distortion.
distort(0.4)Pitch correction.
autotune(Dm)BitCrusher + warmth.
lofi()Mix
Final mix levels. master: accepts lufs(-14) and limiter(-0.3db).
mix {
main.kick: level(-4db)
hook: level(-10db) pan(-0.2)
master: lufs(-14) limiter(-0.3db)
}Instruments
Available presets for melody/theme blocks.
juno106 tb303 jupiter8 sh101 dx7
piano pad organ bass synth leadReady to write some heat?
Open the studio and drop into the MusicScript editor. Your browser is the runtime.
Open Studio