Recursion Studio is an open creative instrument that translates an image into color ratios, elemental correspondences, mathematical structure, a geometric pattern, an artistic matter-and-scent reading, and a MIDI sketch.
This repository contains two editions of the same idea:
RecursionStudio/is the native Windows studio. It imports images, extracts a complete adaptive palette, finds elemental correspondences, renders an Escher-style output, supports recursive feedback, and exports PNG and MIDI.RecursionStudio.Web/is the portable browser edition for macOS, Linux, Windows, and tablets. It performs image inspection locally in the browser, produces its own pattern, and downloads standard MIDI files for use in a music tool of your choice.
- Import or drop PNG, JPG, JPEG, BMP, and browser-supported image files.
- Preserve complete palette ratios and map every color to a representative element from the supplied dataset.
- Create a mathematical portrait from aspect, color entropy, contours, orientation, symmetry, and topology.
- Generate a deterministic geometric field matched to the input structure.
- Derive a material and scent correspondence from the complete element-ratio profile. These are artistic correspondences, not chemical formulas.
- Export MIDI whose timing reflects image color ratios.
- Feed an output back into the Windows studio as a new generation.
For the simple native app, download the Windows zip from
Releases, unzip it, and
open RecursionStudio.exe. It is a self-contained 64-bit Windows build.
OpenAI image generation is optional. Every person connects their own OpenAI API key inside the app; it is stored only in their Windows account and is never included in the download, repository, or exports. Each paid generation asks for confirmation before it sends anything.
Developers can also open RecursionStudio/RecursionStudio.csproj in Visual
Studio, or run the project with the Windows App SDK installed.
From RecursionStudio.Web/, install dependencies and start the development
server:
npm install
npm run devThe browser edition is local-first: an imported image stays in your browser unless you explicitly build an external integration around it.