Indie Machine logoINDIE / MACHINE
// ENGINEERING JOURNAL

Dev posts

Rust - Native - Complex Applications

Native software as it gets built: Entropy's engine, GUI, creative tools and experiments, and Yumon Pet's model work. Build posts carry the commit, command and session evidence behind their claims.

Entropy DAW - a native digital audio workstation built with Entropy Engine, with MIDI sequencing, synthesis, and audio mixing.
44 POSTS LOGGED
SHOWING 44 / 44 POSTS
01
Physically Modelled Instruments: A Tube, a Pair of Lips and a Shock Front

The last post built a bowed string: a resonator that is nearly harmonic on its own, excited by a friction law at one point. A brass instrument reverses the roles. The exciter is a pair of lips that the player's breath…

ENTROPY
ENTROPY SERIES
READ →
02
Physically Modelled Instruments: From One Contact Law to a Kit That Hears Itself

The bowed string had a friction law at its centre and the brass had a pair of lips. A drum has neither. Nothing drives it. Something hits it, lets go, and the body rings until it is quiet. So the third instrument starts…

ENTROPY
ENTROPY SERIES
READ →
03
Physically Modelled Instruments: A Bowed String With a Body That Pushes Back

This post replaces the model in the September 22 bowed-string post. That voice was an extended Karplus-Strong loop with regenerative sustain. It had no friction law, no bridge and no body, and the post said so. The…

ENTROPY
ENTROPY SERIES
READ →
04
Entropy's ML Graph Learns to Execute: LSTM, Sparse MoE, and a Conditioned U-Net

The first ML Graph Trainer post ended with a useful restriction: a node graph could train a Burn model, provided the graph was one Input → Dense → ... → Loss chain. That was enough to show a variable-length…

ENTROPY
ENTROPY SERIES
READ →
05
A Bowed String in Entropy's DAW: A Delay Loop That Keeps Singing, and a Bow You Can Move

The wavetable instrument lets us draw the waveform a note reads. This instrument starts somewhere else: with a string that loses energy on every trip around a delay loop, and a bow that keeps feeding energy back in.

ENTROPY
ENTROPY SERIES
READ →
06
Guitar-to-MIDI in Entropy's DAW: Length-Adaptive YIN, an Octave Fix That Buys Latency, and WASAPI's 10 ms Floor

The last DAW post let you see what a mix sounds like. This one lets a guitar play it.

CPALRTRBENTROPY
ENTROPY SERIES
READ →
07
Entropy's DAW Gets a Wavetable You Sculpt as Terrain: A Table the Audio Thread Reads Without a Lock, a Pick That Slipped Through Peaks, and a Pen That Leans

The analyzer post taught the DAW to show what a note looks like. This one runs the other way: the picture is the instrument.

ENTROPY
ENTROPY SERIES
READ →
08
Entropy's DAW Gets Ears: A Master Bus, an Oscilloscope That Holds Still, and a Spectrum on a Log Axis

The last DAW post gave the song a timeline. You could arrange it. You still could not see what it sounded like, and a mix you cannot inspect is a mix you fix by guessing.

REALFFTENTROPY
ENTROPY SERIES
READ →
09
Entropy's DAW Gets an Arrangement View: Patterns, Clips, and a TrackView That Snaps

The last DAW post put real plugins on the tracks. What the tracks played was still one pattern per track, looping forever, with no idea of a song. You could not say "drums only for four bars, then the bass comes in."

WGPUWINITENTROPY
ENTROPY SERIES
READ →
10
Canvas Surfaces, Part 6: Wiring Gameplay With the Node Graph, Then Pressing Play

Part 5 ended with a character whose arm could wave, but only when an artist scrubbed a timeline. Nothing in the scene could react to anything. A painted level is a picture until something happens when you touch it.

WGPUWINITENTROPY
ENTROPY SERIES
READ →
11
Canvas Surfaces, Part 5: Groups, Pivots, and Keyframed Clips

Part 4 left Canvas Surfaces as a set of independent, paintable primitives: plane, box, cylinder, sphere, each with its own bend, its own cut mask, no relationship to any other surface in the scene. A hand-drawn…

WGPUWINITENTROPY
ENTROPY SERIES
READ →
12
Hosting Real VST3 Plugins in Entropy's DAW: Vital, Massive, and Maschine 3

The last DAW post gave every track a persistent mixing bus with live gain, mute, solo, and a delay/reverb chain. Every sound on those buses still came from the same place: a handful of fundsp oscillators and drum voices…

VST3-HOSTENTROPY
ENTROPY SERIES
READ →
13
Yumon Universe: A Downtown Simulation Grounded in What the Model Trained On

Yumon Universe (src/universe.rs, src/bin/yumon_universe.rs) drops ten Yumons into a seeded procedural world and lets them decide what to do next from a plain-text reply their own checkpoint generates. No prior post has…

YUMON
YUMON SERIES
READ →
14
Entropy Gets a Real BDD Suite: Cucumber for Logic, a Live Window for Proof

Every UI-verification post in this series up to now has ended the same way: bring the real window to the foreground, screenshot it, and if a click was needed, fire a synthetic user32.dll mouse_event at hardcoded…

WGPUWINITENTROPY
ENTROPY SERIES
READ →
15
From a Page Viewer to a Browser Loop: Non-Blocking Fetch and Addon-Owned Navigation in Entropy

The HTML/CSS renderer post got Entropy to the point of fetching one real page and laying it out through taffy. What it couldn't do was act like a browser: Entropy.Net.getText blocked the calling frame until the fetch…

WGPUWINITENTROPY
ENTROPY SERIES
READ →
16
Canvas Surfaces, Part 4: Cutting Real Holes with a Painted Alpha Mask

Part 3 made Canvas Surfaces paintable planes, boxes, cylinders, and spheres. That still left a very physical limitation: ink could decorate a surface, but it could not remove one. A hand-drawn window in a wall was still…

WGPUWINITENTROPY
ENTROPY SERIES
READ →
17
Yumon Pet: Sixteen Layers of Sparse MoE Finally Gets Yumon Talking

The previous post closed out twelve xLSTM runs with zero checkpoints worth shipping - the lowest-loss one was stuck in an exact repetition loop, and none of the twelve made it to their planned 15 epochs. Same day, the…

WGPUYUMON
YUMON SERIES
READ →
18
Yumon Pet: An xLSTM Brain, Twelve Runs, and a Loss Curve That Lied Worse Than Last Time

The last Yumon Pet post found that the lowest-loss checkpoint in the repo produced the worst prose of three. That was one architecture (DecoderOnly, plain causal attention) at three sizes. This post is a new…

WGPUYUMON
YUMON SERIES
READ →
19
Canvas Surfaces, Part 2: A Real Grid, a Cylindrical Bend, and a Raycast That Doesn't Assume Flat

Part 1 shipped Canvas Surfaces as a single flat quad per surface - four vertices, a private painted texture, move it with a gizmo or sliders. That post's own "what's next" section named the gap directly: a flat quad has…

WGPUWINITENTROPY
ENTROPY SERIES
READ →
20
Canvas Surfaces, Part 3: One Raycast for Planes, Boxes, Cylinders, and Spheres

Every Canvas Surface so far has been a flat rectangle, bent or not. Part 2 closed the bend/raycast gap the epic's own backlog named, but it left the shape itself alone - a page, still. This post adds three more: box,…

WGPUWINITENTROPY
ENTROPY SERIES
READ →
21
entropy_gui Gets a Real Color Wheel, and a Popup Z-Order Bug It Shared With Dropdowns

Canvas Surfaces already had a color input. It just wasn't a real one. Clicking the swatch cycled through six hardcoded presets - white, red, green, blue, yellow, near-black - and the widget's own doc comment said so…

WGPUWINITENTROPY
ENTROPY SERIES
READ →
22
Canvas Surfaces: An In-Engine Alternative to Grease Pencil for Hand-Drawn 3D Levels

Cuphead's animation was painted frame by frame in real ink and watercolor, run through traditional cel-animation techniques, before anything touched a computer. Okami built an entire mechanic, the Celestial Brush,…

WGPUWINITENTROPY
ENTROPY SERIES
READ →
23
A Persistent Mixing Bus for Entropy's DAW, and an AudioEffect Registry to Go With It

The last DAW post ended with every note in Entropy's step sequencer getting its own detached rodio::Sink, its own fundsp graph, and its own private delay/reverb instance - fire-and-forget, no bus, no shared state. That…

FUNDSPRODIOENTROPY
ENTROPY SERIES
READ →
24
entropy_gui Gets a Kanban Board: Planning Claude Code Work as a Widget

Most entropygui widgets in this series exist to prove a rendering or interaction technique. This one exists because we needed it: this repo's own Claude Code planning work has to live somewhere, and "somewhere" turned…

WGPUWINITENTROPY
ENTROPY SERIES
READ →
25
Adding Delay, Reverb, and WAV Export to Entropy's DAW, One Detached Sink at a Time

Entropy's DAW addon (dawsynthaddon.ts, a step sequencer with a built-in synth and drum kit) plays every note the same way: AudioEngine::play_note builds a fundsp signal graph for that one note, wraps it in a detached…

FUNDSPRODIOENTROPY
ENTROPY SERIES
READ →
26
Entropy Trains a Real Model From a Node Graph: Burn Has No Runtime Models, So We Built One

Every Burn model in this codebase up to now has been a fixed Rust struct. crate::yumon::system::BrainModel is Lstm -> Dropout -> Dense -> two heads, hand-written, known at compile time. That's normal for Burn - a…

BURNSERDEENTROPY
ENTROPY SERIES
READ →
27
A Real Multi-Page Document Editor in entropy_gui: Pagination, Per-Run Fonts, and an Addon-Built Toolbar

Entropy's addon-facing UI kit already had real multi-line text (texteditmultiline) and a line-numbered codeeditor, but nothing that behaves like a word processor: fixed page dimensions, margins, content that flows and…

WGPUWINITENTROPY
ENTROPY SERIES
READ →
28
Entropy Renders a Real Webpage: taffy Layout, Servo's Selector Engine, and 'Example Domair'

Entropy addons build UI by calling Entropy.UI.Widget. once per widget from TypeScript - a label here, a button there, entropygui renders whatever the addon called this frame. This post adds a second way to describe that…

WGPUWINITENTROPY
ENTROPY SERIES
READ →
29
Two More entropy_gui Widgets: KeyframeTimeline and TrackView

entropy_gui already had two addon-facing widgets built for a specific domain and then generalized: NodeGraphEditor (behavior-graph editing) and PianoRoll (the DAW). This post adds two more of the same shape, both aimed…

WGPUWINITENTROPY
ENTROPY SERIES
READ →
30
Entropy Gets a Stylus: Winit Has Pressure, Not Tilt, So We Read the Win32 Packet Ourselves

A new example, stylus-drawing: a pressure- and tilt-aware drawing app with four brushes, built entirely on Entropy's addon API. cargo run --release --bin example -- stylus-drawing gets you a 1280x800 canvas, a Pencil,…

WINDOWSWGPUENTROPY
ENTROPY SERIES
READ →
31
Wiring Up Entropy's Video Exporter: A Dead encode.rs, a Depth Buffer Mismatch, and a Black Cube

Entropy has had a src/videoexport/ directory since the very first commit that pulled pieces of older engines together. What it actually had, on inspection, was: a FrameCaptureBuffer that correctly does a GPU…

WINDOWSWGPUENTROPY
ENTROPY SERIES
READ →
32
A Real 2D Level Editor for Entropy: Levels, Logic, and a Bug in the GUI's Click-Through

A real level editor. Place entities, drag them around, edit their properties, attach behavior with the same node-graph widget Entropy already uses for 3D behavior graphs, save the level to disk, load it back, and…

WGPUWINITENTROPY
ENTROPY SERIES
READ →
33
Letting Claude Code Drive a Running Entropy Engine App Over MCP

src/mcp/mod.rs has been sitting in this codebase for a while: a small MCP (Model Context Protocol) server, spawned unconditionally by every Editor, that exposes whatever tools an addon registers with registerTool() over…

WGPUWINITENTROPY
ENTROPY SERIES
READ →
34
Yumon Pet: The Lowest-Loss Checkpoint Wasn't the Best One

Yumon Pet trains a small decoder-only transformer from scratch in Rust, using burn for the model and cubecl's Wgpu runtime for the flash-attention kernel. The repo has been through a dozen training runs at different…

WGPUYUMON
YUMON SERIES
READ →
35
Hot Reload for Entropy's TS Addon Engine, Without Resetting GPU State

Addons run inside a single embedded denocore::JsRuntime (src/deno/addonengine.rs:390) - one V8 isolate, created once at startup, alive for the process's whole life. Every existing way to get code into it either only…

DENO_COREWGPUENTROPY
ENTROPY SERIES
READ →
36
Light Hive: Pluggable Point-Light Shaders and Live Shadow Settings

Light Hive is Entropy's point-light addon. Before this session it did exactly two things: color and intensity. No standalone example existed for it - it only ever ran embedded inside Studio's Game Composer. This post…

WGPUWINITENTROPY
ENTROPY SERIES
READ →
37
A Media Player for Entropy: Video Decoder, New Audio Path, One Latent Bind-Group Bug

Entropy already had a Media Foundation video decoder - src/renderervideos/stvideo.rs, built for the editor's own timeline. What it didn't have was audio decode of any kind, or any way for a standalone EntropyApp (as…

WINDOWSWGPUENTROPY
ENTROPY SERIES
READ →
38
A Real Node Graph Editor for entropy_gui

When entropygui replaced egui/egui-snarl as the editor UI's foundation, one widget didn't survive the move: the node graph editor. egui-snarl's SnarlViewer needs a real &mut egui::Ui to draw pin-dragging, bezier-curve…

WGPUWINITENTROPY
ENTROPY SERIES
READ →
39
Entropy.UI.setTheme(): A TypeScript Theme API for entropy_gui

entropygui, the in-house immediate-mode kit that replaced the whole egui family a couple posts back, already had a real Style/Visuals system (src/entropygui/style.rs) and a Context::setstyle that swaps it at runtime.…

WGPUWINITENTROPY
ENTROPY SERIES
READ →
40
An FFT River: JONSWAP Instead of Phillips, Carved Into Noise Terrain

The FFT ocean addon generates its wave spectrum with Phillips - open-water physics, tuned for wind blowing across a large fetch. A river channel isn't that: the wind can only act on the water across the width of the…

WGPUWINITENTROPY
ENTROPY SERIES
READ →
41
Making Entropy Production-Ready, Part 1: Your App Was Wearing Our Name

Entropy is moving from "a game engine you fork and hack on" toward "a framework you depend on and ship your own app with" - that's the whole point of EntropyApp, the embedding entrypoint added a few posts back. But a…

WINITIMAGEENTROPY
ENTROPY SERIES
READ →
42
FFT Ocean Water: A GPU Compute Pipeline for Entropy

Entropy Studio's example bundle has an FFT ocean addon: a Phillips-spectrum height field, evolved in the frequency domain and brought back to real space with a GPU-side Cooley-Tukey FFT, textured onto a displaced mesh…

WGPUWINITENTROPY
ENTROPY SERIES
READ →
43
Interactive Ripples on Top of Entropy's FFT Ocean

The last post on the FFT ocean addon ended by scoping interactivity out on purpose: nothing in that pipeline read from or wrote to the world, it was a closed loop from spectrum to displacement. This post closes that gap…

WGPUWINITENTROPY
ENTROPY SERIES
READ →
44
Replacing egui With Our Own Immediate-Mode GUI Kit

Entropy Engine's entire editor chrome - app shell, docking, panels, every widget, a hand-rolled video timeline, the JS-addon UI system - ran on egui + egui-wgpu + egui-winit + eguidock, plus egui-snarl for a node-graph…

ETAGEREARBOARDENTROPY
ENTROPY SERIES
READ →