AN OPEN PLATFORM IN THE MAKING

Big ideas start
with small pieces.

OpenSoundstage is a place to create, connect, and grow ideas. No programming knowledge needed to understand the idea. Just four simple building blocks.

MUSIC WITHOUT GATEKEEPERS. CREATIVITY WITHOUT COMPLEXITY.

01 / THE BUILD LANGUAGE

Four instructions.
One permanent core.

You already know what these words mean. BUILD simply gives them a place to work together.

↙

GET

Read it.

ONE · ALL
↓

PUT

Write it.

NEW · SET
▶

DO

Execute a saved BUILD.

DO

Four core instructions, seven methods: GET ONE, GET ALL, PUT NEW, PUT SET, LINK ADD, LINK CUT, and DO.

02 / THE SANDBOX

One grain.
A whole sandcastle.

Think of sand. Tiny grains come together to make a shape. Shapes come together to make a sandcastle. Step back and you see the whole creation. That's a BUILD.

•GRAINOne small piece
→
•••COLLECTIONPieces together
→
▥BUILDA complete creation
→
▥▥MORE BUILDSCreations can connect

You choose what to share. Your music and creations remain yours.

03 / TWO FILE TYPES

Instructions and information.
Nothing more.

A BUILD file says what to do. A GRAIN file stores what was made. A saved GRAIN can be read by another BUILD, making creations reusable.

.build

MUSIC.build

Executable instructions

PUT NEW "Hollow Drift"
PUT NEW "ZERO"
LINK ADD "Hollow Drift" "ZERO"
GET ALL "Hollow Drift"
.grain

MUSIC.grain

Saved data and connections

GRAIN "Hollow Drift"
GRAIN "ZERO"
LINK "Hollow Drift" "ZERO"
MUSIC.build→ DO →MUSIC.grain→ GET →ANOTHER.build

GRAIN and LINK inside a .grain file are data labels, not extra BUILD commands. The interpreter supports file imports and session-memory results. Grain names must be unique within a run; stable cross-file IDs are future work.

04 / REUSE A CREATION

Build once.
Build on it again.

A second BUILD can use a previously saved grain collection. Try this workflow in the live interpreter below.

CONCERT.build

GET ONE "MUSIC.grain"
PUT NEW "Friday Concert"
LINK ADD "Friday Concert" "Hollow Drift"
LINK ADD "Friday Concert" "ZERO"
GET ALL "Friday Concert"

CONCERT.grain

GRAIN "Friday Concert"
LINK "Friday Concert" "Hollow Drift"
LINK "Friday Concert" "ZERO"

The real engine must preserve references to imported grains; this compact display omits their internal identifiers.

GET ONE on a .grain filename imports the saved grains and links into the current run.

05 / LIVE SANDBOX INTERPRETER

Paste. Run.
Build something real.

This is a working, browser-based BUILD interpreter. Paste .build instructions or .grain data, give the file a name, and save it to session memory. Run a BUILD to produce a reusable .grain file.

Result

Run a BUILD to see its result.

Limits enforced by the interpreter: 16 KiB per file, 256 KiB total workspace, 64 files, 256 grains, 512 links, 1,000 execution steps, and 8 nested DO levels. Unknown commands, invalid syntax, missing grains, duplicate names, circular DO calls, and oversized results stop execution with an error. No eval or script execution. Files remain in browser memory until the page is reloaded; download anything you want to keep. This protects against common mistakes and resource exhaustion, but it is not a formal security guarantee.

06 / THE PRINCIPLES

Keep it simple.
Keep it yours.

One core

New abilities build on the same four commands. No new language versions required.

BUILDs build on BUILDs

A BUILD can execute another BUILD or reuse information stored in a .grain file.

DO is reusable

Execute the same BUILD repeatedly. The saved instructions remain unchanged; output naming and overwrite behavior remain to be specified.

No hidden PLAY

PLAY, COMPARE, and DECIDE are not magic commands. Their behavior must be defined.

Artist ownership

Keep your work. Share it voluntarily. Reuse respects the creator's permission.

Honest engineering

The basic interpreter runs now. Stable identities, conditions, and audio playback still need design.

07 / THE IDEA

Don't learn a new world.
Build with what you know.

OpenSoundstage is the open platform. BUILD is its four-block language. The SANDBOX is where .build instructions work with .grain information to make something bigger.

Follow the open project ↗

We're designing this in the open. The basic BUILD interpreter works in the browser. This is an experimental language, not a production security boundary.