A complete guide to the Miss Minutes Studio v2 scripting language —
featuring variables, loops, if/else, sequences, audio control, and more.

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
Tip Each line that starts with a number is a timed event — the number is the time in seconds when that command runs.
Keyboard shortcuts
  • Ctrl+Enter — Start playback with countdown
  • Escape — Stop playback immediately
  • Tab — 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
}
Order within a block Commands inside { } 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
Where to declare 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 elif branches as you like.
  • else is optional.
  • Conditions support any boolean expression (see operators above).
Tip Use 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
}
Safety limit The engine stops any 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
}
Tip Use 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
Live feedback The editor shows errors as you type — red gutter marks on error lines, yellow for warnings. No need to run the animation to find mistakes.