FrankenSim grades simulated flute audio against real recordings
FrankenSim evaluates physics-based flute audio against recorded notes using acoustic metrics, spectrogram comparisons and historical grades. Its dashboard also includes blind-listening controls and a physics-claims register.

TL;DR
- FrankenSim grades simulated flute notes against real recordings, with acoustic measurements and historical scores in the posted dashboard.
- Blind-listening controls are available, while recognition, blind-test passage and musical-phrase milestones remain open in the qualification snapshot.
- The development work extends into coupled acoustics, electrical conduction, thermal transport and momentum, according to doodlestein's commit examples.
The posted flute render specifies a 13.2 mm tuning-slide extension. Audio labeled “real” can stitch together separately recorded notes, and the instrument demonstrations extend to cello. The comprehensive project plan targets a unified Rust stack for geometry, physics, optimization and rendering.
Flute A/B comparisons
FrankenSim creator Jeff Emanuel, who posts as @doodlestein, published the flute demonstration and directed readers to the source code. The comparison interface combines blind-listening controls with simulation, recording and difference spectrograms.
Note-level grades
Each note receives multiple acoustic checks against a recording, including spectral distance, partial-frequency and harmonic measures. Counts inside the real spread vary by note in the posted comparison:
- D4 mf: 9 of 14 measures.
- G4 mf: 7 of 14 measures.
- C5 mf: 11 of 14 measures.
- G6 mf: 9 of 15 measures.
Re-rendering and re-grading retain previous grades. The history chart tracks the share of measures inside the real spread; refused gradings produce no chart point.
Qualification gates
The flute has four qualification milestones in the posted snapshot:
- Passive chain built from data, instrument speaks: in progress, 16 of 60 prerequisites closed.
- Recognisable as the instrument: open, 18 of 64 prerequisites closed.
- Passes blind listening tests: open, 28 of 101 prerequisites closed.
- Plays musical phrases: open, 29 of 107 prerequisites closed.
A refreshingly specific physics-claims register separates gate status from default activation. Its rows retain three distinct fields:
- Gate: ungated, green or refused.
- Live default: every displayed row says “no,” including green-gated rows.
- Evidence: file paths and test names associated with the claim.
GPT Pro development loop
Emanuel says the architecture already gives additions a logical place and a way to combine with other modules. His posted iteration prompt swaps one physics term at a time into a fixed request:
Focus on realistic treatment of <INSERT_PHYSICS_TERM> throughout all applicable modules of the system in the optimal, most performant and accurate/realistic way possible.
He attributes much of FrankenSim's recent growth to GPT Pro through the web app in a separate thread. He also reports having 25 $200-per-month GPT plans, equivalent to $5,000 a month at the stated prices.
The practical boundary is available hardware: Emanuel describes his targets as realistic instruments alongside complex HVAC and plumbing systems in a follow-up.
Recent solver changes
Beyond the flute interface, Emanuel posted implementation changes across four areas in a separate update. The Rust repository contains the broader simulation workspace.
- Acoustics:
MolecularExterior::solve_boundary_batchcombines surface admittance with an absorbing, dispersive gas. Its energy accounting separates prescribed-drive work, surface absorption and work entering the exterior acoustic field. Cached observation transfers connect the resulting fields to microphone cross spectra and acoustic intensity. - Electrical conduction and internal heating: current-driven electrodes impose total signed current while the finite-element field determines its local distribution.
LayeredWall::solve_with_generationanalytically handles a uniform heat source or sink per layer, including interior temperature extrema and material-validity checks at hot spots. - Thermal transport:
TransportNetwork::new_circulating(...)adds a closed-circulation thermal path. Other changes integrate positive and negative flow regions separately when velocity reverses within a face, and reject incompatible prescribed mass balances in connected fluid components. - Momentum: simultaneous rigid impacts accumulate impulses into one update per body to preserve small changes. Analytic Jacobians replace finite differences in the momentum integrator's reverse derivative, reducing the reported discrepancy from
4.35e-2to1.24e-16in the posted change notes.