Stellar Synthesis
From a procedural star instrument to a shader lab: shape surfaces, evolve materials, and save scenes.
Interactive simulations and labs
Try a different search or clear your filters to see the collection again.
From a procedural star instrument to a shader lab: shape surfaces, evolve materials, and save scenes.
Turn an image into pixel art, print texture or ASCII, right here in the browser. Drop or paste a picture, pick a recipe (Photocopy, Terminal, Newsprint, Pocket world, Blueprint, Riso sunset, or your own colours), keep your palettes and export a PNG. Underneath: Bayer ordered dithering and Atkinson, Stucki, Sierra and Jarvis error diffusion, run in a web worker. Runs offline.
Write a whole song in the browser: eight synthesized voices in one room, a drum machine, chords and scales, song sections and a phrase editor, with LFOs and filters on a master bus. Play it from a MIDI keyboard, save it in the browser, and export WAV, MIDI or JSON. One clock, one audio graph, no samples. Runs offline.
Square and hex worlds where civilizations evolve neural strategies.
Two generations of seeded worlds, settlements, trade and roads.
One small world of lava, three ways: shape it, defend it, then both in one studio with four looks.
Cellular life across dimensions, slices and projections.
Colony strategy, pheromones and competing insect societies.
Meet eight procedural 3D characters. View them solo or together, try six animations and each character’s two abilities, change the lighting, inspect the wireframe and save a PNG. Runs offline.
Play with a simulated CRT vector scope: pick a terrain, L-system, Lorenz or Lissajous signal, then drag the dials for beam focus, decay, noise, sweep and phosphor colour. Built in three.js.
Make music in a neon sci-fi console: a 32-step sequencer, several harmonic variations, pad and drone layers, delay, reverb and distortion, and a record button for the result. Built on Web Audio.
Make a synthetic voice sing: write notes and syllables, shape breath and phrasing, compare a plain take with a performed one, and export the WAV. Procedural synthesis, no samples and no trained models.
One obstacle course, different ways to learn: genetic search, gradient descent, hybrid training and evolving brains.
Drag a wipe across one low-poly scene to compare thirteen full-screen effects, from ASCII and CMYK halftone to blueprint and thermal. WebGL2 post-processing.
Two WebGL 2 studies to explore: a high-detail hero object placed in a deliberately cheap world, and a material-rescue tool that infers normals, roughness and albedo from a single image.
Neural creatures with layered genomes evolve in a mass-conserving world. Inspect any creature, run lab scenarios, chart or hear the run, export CSV, JSON, WAV or PNG.
Civilization sandbox where settlement, wealth, culture, borders and war emerge from local cellular rules. Take a throne to paint priorities, or just watch. Runs offline.
Living lattices and learned cellular rules.
Play and export small grid puzzles that an evolutionary search invented from eight fixed rules. Every puzzle is proved solvable by breadth-first search, and one is kept per behavioural niche.
Cave survival and its Lithosphere engine: dig through a living underground world, manage resources, and find a way home.
From a simple hex grid to exact hierarchical partitions, terrain, deep zoom and resolution-aligned rendering.
Paint gravity onto a seeded galaxy and see how its stars respond, then guess the rotation curve. Stars move in an analytic disk-and-bulge potential with optional gas, feedback and fuzzy-halo layers; A/B benchmarks compare settings.
A hex comb of brood, pollen, nectar and honey, shaped by cellular rules and animated bees. Pause the colony or generate a new one.
Compose a procedural marble bust with neon grids, sunsets, VHS glitch, and your own text. Save the scene as a PNG.
Generate a 512px ectoplasm texture and pick its palette: wraith green, poltergeist purple or abyssal red. Drawn on canvas from value-noise fBm with two domain-warp passes.
Generate a continent from a seed, then tune water level, island roundness, moisture, temperature and forest density while you pan and zoom. Simplex noise with biome colouring and drawn trees.
Dial a 3D beach scene from crisp to chunky pixels: render scale, terrain polygon count, flat shading and time of day, with HD, retro and pixel presets. Orbit the coast, pause the waves, or save a view.
Watch a four-car train circle a track over procedural terrain while you pan, zoom and toggle follow. A top-down Canvas2D rendering demo; no networking.
Two approaches to evolving structures: coevolving construction systems and focused physical challenges.
Tend a reef garden that keeps going between visits: creatures from six founder lineages evolve, grazers balance the meadows, madcap appetites appear and golden Aegis protectors guard the young, through seasons of oxygen and nutrients that carry on even after an extinction. Runs offline.
Evolve melodies, instrument sounds and drum patterns, then compare two versions to guide selection. Combines evolutionary search with gradient learning and four of my own music engines. Edit notes, save variations and export WAV, MIDI or JSON. Runs offline.
Three volumes of scenes built from equations alone and rendered live in WebGL 2: twelve parametric specimens, nine implicit worlds, then six islands and six orbital systems.
A match and combo cave puzzler for mobile and tablet. Drop gems, chain gem matches, and keep the combo going. Released to the Google Play Store.
A three.js ROV-camera view of a bioluminescent deep-sea reef of instanced spires, tentacles, crystals and rings, with bloom and a telemetry overlay; drag to pan.
From sliding windows to genetic and procedural compression.
Physarum-style slime agents sense and turn toward an image’s brightness until their trails reconstruct it; emergent behaviour, no training, tuned live.
Oscillators, routing, envelopes and interfaces from one synthesizer prototype series.
Watch six centuries of settlements, conquests, rebellions and ruins unfold on a seeded hex map. Replay any recorded year, inspect cities, and follow the changing borders.
Compare mesh and shader rendering, then explore how hexagonal and square grids fit together.
Voronoi-based tilemap with texture atlas for efficient rendering.
Bare frame-rate readout colour-coded by speed, plus a bouncing-particle stress test whose count you drag from light to heavy to watch the render loop strain.
Forty runners with tiny graph neural nets learn to jump or dive between two stacked worlds past spikes and blocks; the best brain's activations are drawn live.
Jump above or dive below a mirrored world as the pace climbs. Play with the keyboard or on-screen controls.
Use the arrow keys or on-screen controls.
Two generations of evolving light-seeking agents.
Foragers signal food to each other; truth-tellers and liars compete for energy, reproduce and mutate. Watch the population split and a rolling graph of each strategy.
Flocking, spatial hashing and battles at scale.
Procedural branching studies in trees, coral and beetle-like forms.
Load local audio, visualize a neon spectrum, and export a timed video plus a separate WAV. Choose 1080p through 8K.
Two-player chess-movement sandbox on a sandstone board, with procedural dunes, ruins, camera presets, synthesized wind and a move log.
Glitch platformer: collect fragments to buy jump, thruster, gravity and repair upgrades, but every upgrade raises entropy that corrupts the level. Reach the core first.
An idle kingdom that changes while you are away. Return to review what happened and choose your next policy.
Squarefold Lab — a tile-based walking-game prototype exploring time, a fourth spatial layer, and simultaneous route plans.
Each block uses integer voxel coordinates: x, y, width, depth, floors, roof, and pavilion.
Drag to forge celestial bodies and set their trajectories. Watch gravity merge them into growing masses, then pause to inspect the scene.
Seeded procedural planet in three.js with sliders for terrain amplitude, detail frequency, sea level and rotation; regenerate, randomize, and read diagnostics.
Deterministic procedural tile mapping using Value Noise & fBm.
Simplex-noise terrain mesh in three.js with sliders for LOD, size, roughness, amplitude and snow line, a wireframe toggle, and live vertex, elevation and snow stats.
Evolve melodies with neural networks, save favorites and hear how they change across generations. Selection and backpropagation adjust the networks and musical parameters. Export a phrase as WAV or MIDI, or save the full experiment. Runs offline.
A self-contained modular synthesizer and beat machine built for slow transformations: patch cables between oscillators, envelopes, LFOs, filters and echoes, sequence a lead row over eight synthesized drum rows and a four-bar chord progression, fade any setting over time instead of jumping, play it from a MIDI keyboard, and render the result to a stereo WAV. No samples. Runs offline.
Build two-color overprints, interference patterns, gradients and type specimens. Check contrast, save studies locally, and export SVG, PNG, CSS, JSON or the complete offline HTML tool.
Older prototypes and past projects, kept for the record.
Strings, pipes, drums, oscillators and reverb, assembled into a small synth rack.
Wanderers, foragers, and pursuers share a field of replenishing food. Pan, zoom, pause, and reseed.
Side-by-side 3D comparison of square and hexagon grid rendering.
Benchmark suite testing data structures and algorithm performance in the browser.
Remix a geometric turtle with new shapes and colors.
Draw conveyor routes from sources to receivers. Smooth corners, touch and keyboard building, undo, adjustable speed and a ready-to-run example.
Turn-based 4X on a seeded tile map: found cities, queue units, move and attack against AI realms that keep peace or backstab by relative strength. Same seed, same game.
Arrow-key wander across seven procedural continents and fifty named cities on a wrapping ocean canvas; nearby cities light up with lines. A tiny sketch, no AI.
Vector artificial life: pointer-like organisms drift, feed, and split in a dark field.
An evolving shoal with touch feeding, adjustable flocking and food growth, pause and restart. Crisp, responsive canvas with collapsible controls.
Steering agents whose four-gene DNA sets food and poison attraction and perception radius evolve on a wrapped canvas; add agents, toggle vision lines, reset.
Thirty neural species play 60-turn three-way 4X matches offscreen; the top three replay on screen with borders, cities and units. Set replay speed or fast-forward.
Two experiments in neural control, muscles, friction and obstacles.
Herbivores, predators and nutrient cycles across four evolving ecosystems.
Generate a seeded tile world. Shape its water, forest, ore, and clustering; hover to inspect.
Turn images into color dithering, ASCII, Braille, halftone dots or crosshatching. Compare with the original, tune the palette, save recipes and export PNG, SVG, WebP or text. Runs offline.
The game that designs itself based on your choices.
Top-down three.js maze game: WASD to the goal past spikes and lasers while translucent ghosts replay your earlier failed runs and damage you on contact.
Seeded botanical studies with sculpted petals, four palettes and adjustable layers. Resize without losing your bloom; export a 2048- or 4096-pixel PNG.
Procedural 2D foliage sprites. Click any leaf to download as PNG.
Three.js globe shaded in GLSL: simplex-noise elevation, moisture biomes, drifting clouds, day/night lighting. Drag to orbit; set seed, sea level, roughness, clouds.
First-person voxel mining in a procedurally carved cavern: dig through stone and ore veins by headlamp, place blocks from the tool belt, and mind the magma. Keyboard and touch.
A web app for publishing one event to several platforms at once. University capstone project, built on Node.js and Google Cloud APIs.
A Unity sandbox for grid pathfinding and emergent routing, modelled on ant colony optimization. Watch trails form, fade, and reroute.
Neural nets and a genetic algorithm learn to play Snake, drawn in three.js so the training stays visible instead of hidden in a log.
A dungeon crawler that started in PyGame and moved to Unity. Levels are JSON presets with randomized segments, plus a fully random roguelike mode.
A tap-to-turn skiing prototype for phones: speed, obstacle avoidance, and short feedback loops.
A classroom utility for quizzes and attendance, built once for iOS and Android with React Native and Expo.