For the complete documentation index, see llms.txt. This page is also available as Markdown.

Expressions

Expressions in Midio allow you to write small snippets of logic directly inside function inputs. They can be used anywhere a function input is editable and are a powerful way to perform computations or dynamically construct values inline.

What You Can Do with Expressions

Expressions support many of the constructs you'd expect from a general-purpose language:

  • Unary and binary operators: Use operators like +, -, *, /, !, and more to perform arithmetic and logical operations.

  • Ternary operator: Use the condition ? valueIfTrue : valueIfFalse form to choose between values based on a condition.

  • Literals: You can use basic data literals including numbers (42), strings ("hello"), booleans (true, false), objects ({a: 1}), and lists ([1, 2, 3]).

  • Use Local Variables: Local variables can be retrieved by prefixing their name with @, e.g. @myVariable.

  • Inputs: Add inputs to your expression by simply writing an identifier name (e.g., inputValue). This adds an additional input property underneath the input you placed the expression in.

  • Indexing and calls: Use [index] to access list or object properties and () to call functions. Note: Functions must currently be passed in as inputs to be called in expressions.

  • String interpolation: Embed expressions inside strings using ${...} syntax. For example: "Hello, ${name}!".

  • Call various builtin math functions, like math.cos(1.0), og math.random(0, 10). Following is a list of all builtin functions:

    • math.is_nan(x)

    • math.is_finite(x)

    • math.is_infinite(x)

    • math.is_normal(x)

    • math.cos(angle)

    • math.sin(angle)

    • math.tan(angle)

    • math.acos(x)

    • math.asin(x)

    • math.atan(x)

    • math.atan2(y, x)

    • math.cosh(x)

    • math.sinh(x)

    • math.tanh(x)

    • math.acosh(x)

    • math.asinh(x)

    • math.atanh(x)

    • math.ln(x)

    • math.log2(x)

    • math.log10(x)

    • math.log(base, x)

    • math.exp(x)

    • math.exp2(x)

    • math.pow(base, exponent)

    • math.sqrt(x)

    • math.cbrt(x)

    • math.abs(x)

    • math.hypot(x, y)

    • math.random()

    • math.min(a, b)

    • math.max(a, b)

    • math.clamp(x, min_val, max_val)

    • math.lerp(a, b, t)

    • math.sign(x)

    • math.floor(x)

    • math.ceil(x)

    • math.round(x)

    • math.trunc(x)

    • math.fract(x)

Limitations

Expressions currently cannot be used directly inside object literals—this will be added in a future update. See the working with data guide for more information about how you can work around this limitation for now.

Last updated