A complete guide to the Miss Minutes Studio v2 scripting language —
featuring variables, loops, if/else, sequences, audio control, and more.
Table of Contents
- Quick Start
- Timing Syntax
- Variables & Expressions
- Control Flow — if / elif / else
- Loops — repeat & while
- Sequences (Reusable Blocks)
- Together (Parallel Execution)
- Wait
- Break, Continue & End
- All Commands Reference
- Audio Commands
- Expressions List
- Moves List
- Effects (fx) List
- Full Script Examples
- Understanding Errors
1 · Quick Start
Open the studio, clear the editor, and paste this — then press ⚡ Play:
# My first animation 0 background tva 1 enter left 2 expression happy 2 say "Hello! I'm Miss Minutes!" for 3 6 move wave 8 exit right
Ctrl+Enter— Start playback with countdownEscape— Stop playback immediatelyTab— Indent selected lines (2 spaces)Shift+Tab— Un-indent selected lines{+ Enter — Auto-closes the block with}
2 · Timing Syntax
Every top-level event needs a time before the command. Time is always in seconds.
| Syntax | Meaning | Example |
|---|---|---|
| N | Absolute time (seconds) | 5 → at exactly 5 s |
| N.N | Fractional seconds | 2.5 → at 2.5 s |
| M:SS | Minutes:Seconds | 1:30 → at 90 s |
| +N | Relative — N seconds after previous line's time | +2 → 2 s later |
| +N.N | Relative fractional | +0.5 → 0.5 s later |
0 background tva 2.5 enter left 1:00 say "One minute in!" for 3 +5 expression excited # 5 s after previous = 1:05 +2 exit right # 5+2 = 1:07
Block syntax (multiple commands at one time)
Use at TIME { … } or TIME { … } to run several commands at the same moment:
at 5 { expression excited move bounce say "Three things at 5s!" for 2 }
{ } run
sequentially by default (each waits for the previous to finish). Use together { } to run
them in parallel.3 · Variables & Expressions
Variables let you store values and use them anywhere in the script.
Declaring variables
var count = 5 var name = "Miss Minutes" var fast = true
var at the top level (before any timed event)
is a global variable. var inside a block only lasts for that block.Reading a variable
Prefix the name with $:
say $name for 3 repeat $count { fx sparkle 4 wait 0.5 }
Updating a variable — set
set count = $count + 1 set name = "Hello " + $name
Operators
| Operator | Meaning | Example |
|---|---|---|
| + | Add / concatenate strings | $x + 2 · "Hi " + $name |
| - | Subtract | $x - 1 |
| * | Multiply | $x * 3 |
| / | Divide | $x / 2 |
| % | Modulo (remainder) | $x % 3 |
| == | Equal | $x == 5 |
| != | Not equal | $x != 0 |
| < > <= >= | Comparisons | $x > 3 |
| && | Logical AND | $x > 0 && $x < 10 |
| || | Logical OR | $x == 0 || $x == 5 |
| ! | Logical NOT | !$active |
| ( ) | Grouping | ($x + 2) * 3 |
Variable interpolation in strings
var n = 7 say "I found $n variants!" for 3
4 · Control Flow — if / elif / else
if $count > 5 { expression excited say "Lots of them!" for 2 } elif $count == 5 { expression neutral say "Just five" for 2 } else { expression sad say "Not many..." for 2 }
- You can have as many
elifbranches as you like. elseis optional.- Conditions support any boolean expression (see operators above).
not as an alternative to !:
if not $done { … }5 · Loops — repeat & while
repeat N { … }
Runs the block exactly N times. N can be a variable.
repeat 4 { fx sparkle 3 wait 0.6 } # Use $__i for the current iteration index (0-based) repeat 5 { say "Loop $__i" for 1 }
while CONDITION { … }
Keeps looping until the condition becomes false. Always make sure the condition will eventually be false, or use
break.
var i = 0 while $i < 5 { expression excited set i = $i + 1 wait 0.8 }
while loop after 10 000
iterations automatically to prevent freezing.6 · Sequences (Reusable Blocks)
A sequence is a named block you can call from anywhere — like a function.
sequence greet { expression happy move wave say "Hi there!" for 2 fx sparkle 4 } # Now call it at any time: at 2 { call greet } at 8 { call greet } at 14 { call greet }
- Declare sequences before any timed events (at the top of the script).
- Sequences can call other sequences.
- Sequences can use global variables.
7 · Together (Parallel Execution)
By default commands in a block run one after another. together { } makes them all start at the same
time:
together { move dance say "Watch me dance!" for 3 fx sparkle 8 }
together for things that should happen simultaneously —
like playing music while talking, or doing an effect while moving.8 · Wait
Pauses execution of the current block for N seconds. Essential inside loops and sequences:
repeat 5 { expression happy wait 0.5 expression surprised wait 0.5 }
wait 2 # wait 2 seconds wait 0.25 # wait 250ms wait $dur # wait from a variable
9 · Break, Continue & End
| Keyword | Effect |
|---|---|
break |
Exit the current loop immediately |
continue |
Skip the rest of this iteration and go to the next |
end |
Stop the entire animation immediately |
# Play sparkles but stop at 3 var n = 0 repeat 100 { fx sparkle 3 set n = $n + 1 wait 0.5 if $n == 3 { break } } # Skip even iterations repeat 6 { if $__i % 2 == 0 { continue } fx heart 3 wait 0.5 }
10 · All Commands Reference
The for N option on most commands means "do this and automatically undo it N seconds later".
| Command | Description | Options |
|---|---|---|
| expression NAME | Set a facial expression. Use for N to return to neutral after N seconds. |
for N |
| move NAME | Perform a body movement animation. | for N |
| look DIRECTION | Point eyes in a direction. Use for N to return to center. |
for N |
| say "TEXT" | Show caption + lip-sync. Duration auto-calculated from text length. | for N |
| talk | Lip-sync without caption text. | for N |
| fx NAME [count] | Particle effect. Optional count (default 5). | — |
| enter SIDE | Character slides in from left or right. | — |
| exit SIDE | Character slides out. Use for N for duration. |
for N |
| peek SIDE | Character peeks in and then retreats. | for N |
| walk DELTA | Move character by DELTA (−1 to +1) over time. | for N |
| walkTo X | Move character to absolute X position (−1 to +1). | for N |
| blink | Force one blink cycle. | — |
| lean DEGREES | Tilt body. Use for N to return to upright. |
for N |
| find "QUERY" | TVA timeline finder animation. | for N |
| background NAME | Change background scene. Use for N to revert. |
for N |
| background video "file" | Play a video as background. | from N to N loop rate N sound
for N |
| wait N | Pause block execution for N seconds. | — |
Directions for look
left · right · up · down · center ·
upleft · upright · downleft · downright · farleft
· farright · offleft · offright
11 · Audio Commands
Audio files must be uploaded via the Media panel first (drag & drop or use the upload button).
| Command | Description |
|---|---|
audio "file.mp3" |
Load and play an audio file |
audio "file.mp3" vol 0.8 |
Set volume (0.0 to 1.0) when starting |
audio "file.mp3" from 30 |
Start playback at 30 seconds into the file |
audio "file.mp3" for 10 |
Play for 10 seconds, then pause |
audio.pause |
Pause playback |
audio.resume |
Resume after pause |
audio.stop |
Stop and reset to beginning |
stopaudio |
Alias for audio.stop |
audio.volume 0.5 |
Set volume immediately (0.0 – 1.0) |
audio.seek 30 |
Jump to 30 seconds in the file |
audio.rate 1.5 |
Set playback speed (0.1 – 4.0, default 1.0) |
audio.loop |
Enable looping |
audio.fade 0 2 |
Fade volume to 0 over 2 seconds |
# Full audio example at 0 { audio "background.mp3" vol 0.6 } at 30 { audio.fade 0 3 # fade out over 3 seconds wait 3 audio.stop }
12 · Expressions List
Use with: expression NAME or expression NAME for N
neutral # Default resting face happy sad angry surprised confused excited serious mischievous curious shy proud worried sleepy determined smug horrified apologetic loving thinking disappointed
13 · Moves List
Use with: move NAME
bounce wave dance spin shake nod bow jump stomp wiggle float pulse wag shiver strut snap curtsy salute flip slide
14 · Effects (fx) List
Use with: fx NAME or fx NAME COUNT
sparkle heart star confetti explosion snow rain fire lightning bubble music clock question exclaim arrow diamond flower leaf skull trophy
15 · Full Script Examples
Example 1: Simple greeting
0 background tva 1 enter left 2 expression happy 2 say "Hello! Great to see you!" for 3 6 move wave 8 exit right
Example 2: Countdown with loop
var count = 5 at 2 { expression excited while $count > 0 { say $count for 0.8 fx sparkle 3 set count = $count - 1 wait 0.9 } say "Blast off!" for 2 fx explosion 10 }
Example 3: Mood switcher with sequences
var mood = "happy" var rounds = 3 sequence showMood { if $mood == "happy" { expression happy fx heart 5 } elif $mood == "excited" { expression excited fx sparkle 8 } else { expression neutral } say "Feeling $mood!" for 2 wait 2.5 } 0 enter left at 1 { repeat $rounds { call showMood if $mood == "happy" { set mood = "excited" } elif $mood == "excited" { set mood = "happy" } } move bow }
Example 4: Audio + animation sync
at 0 { background nexus audio "intro.mp3" vol 0.7 enter left } at 2 { together { expression excited move dance say "Welcome to the TVA!" for 4 } } at 10 { audio.fade 0 3 wait 3 audio.stop exit right }
16 · Understanding Errors
Errors appear in the Problems panel below the editor. Click any error to jump to that line.
| Error message | What it means | Fix |
|---|---|---|
| Lines must start with a time… | A top-level line doesn't begin with a number | Add a time: 5 expression happy |
| Expected variable name after "var" | You wrote var = 5 without a name |
var x = 5 |
| Missing closing "}" | You opened a block { but never closed it |
Add } at the end of the block |
| Expected "{" | An if/while/repeat has no block |
Add { after the condition |
| Unknown command "xyz" | The command name is misspelled or unsupported | Check the commands table above |
| Expected sequence name after "call" | call without a name |
call mySeq |