Engrove Tonearm Profile Designer — Help
1. Introduction
Tonearm Profile Designer is a single-file, browser-based design and analysis tool for parametric concept work on tonearm beams, headshell-like front sections and tail/counterweight assemblies. The intent is fast iteration between geometry, visualization, coarse mechanical analysis and parametric STL export.
The application targets DIY tonearm builders and engineers who want to explore the relationship between geometric parameters (apex height, neck length, asymmetry, tail mass, etc.) and downstream metrics such as effective mass, system resonance with a given cartridge compliance, center-of-mass placement, inertia about the pivot and a static load-equivalent estimate.
Empty start and Engrove Manual Trace import
A new session intentionally contains no active 3D object. The viewport remains empty until you import Manual Trace files, open a saved Tonearm Designer session, create a parametric design, or explicitly apply a Freeform preset/response.
Required trace set
- At least one calibrated top view whose engineering plane is X–Y.
- At least one calibrated side view whose engineering plane is X–Z.
- A finite positive millimetre scale, an engineering origin, unique axis mappings and usable contour geometry in each file.
The importer accepts Manual Trace JSON, .engrove-trace, .engrove-project and paired SVG exports. Plane classification is read from trace_frame.axes; use the per-file selector only when correcting an older artifact with stale/default axes.
A multi-view .engrove-trace-project package is imported as a single file. It carries its own view types and engineering axes, so plane assignment comes from the package contract and the per-file selector stays locked; a view whose declared type contradicts its declared axes is rejected rather than reinterpreted.
JSON coordinates are authoritative. SVG is parsed as inert XML and contributes only supported geometry plus the Engrove binding metadata. External references and active SVG content are rejected.
How the loft is derived
Manual Trace stations are reused when present; otherwise a deterministic station grid is sampled across the common top/side X range. Top-view intersections define center Y and width. Side-view intersections define center Z and height. The remaining cross-section surface uses a declared superellipse assumption because two silhouettes cannot uniquely determine a complete 3D body.
2. Running the Application
The deployed application is intended for a current desktop Chromium-based browser or Firefox with WebGL enabled. Mobile use is outside this tool's layout and verification contract.
External dependencies
- Three.js r128 — pinned by the tool lockfile and served locally with the application.
- OrbitControls — served locally from the same pinned Three.js package.
An internet connection is required on first load so the browser can fetch the two CDN scripts. After they are cached the application can be reopened offline.
Browser requirements
- WebGL 2 capable GPU and driver.
- Hardware-accelerated 2D canvas.
- Pointer events (mouse, trackpad or pen).
3. Coordinate System
All geometry, all reported coordinates and all analysis results use the same right-handed Cartesian system, expressed in millimetres unless otherwise stated.
- Origin is at the front of the beam: the leftmost ring of the discretized beam sits at
x = 0. - The pivot lives at
x = apex + pivotOffsetX, with optional Y- and Z-offsets. - The stylus tip sits at
x = cartXfor the Goldring and Custom modes, or atx = nomStylusXin Arm-Only mode. - Effective length (
L_eff) is the planar distance from pivot to stylus tip in the X/Y plane.
4. Recommended Workflow
- Pick a cartridge mode. Choose Goldring 1042 (the bundled reference profile), Manual Cartridge, or None (Arm Only). The mode controls how mass and stylus position are introduced into the analysis.
-
Enter cartridge compliance. Either type the explicit dynamic compliance at 10 Hz, or enter a 100 Hz value
and a conversion factor
k; the 10 Hz value will be derived automatically. -
Set the alignment target. Pick an alignment preset (Löfgren A / B or Stevenson, all IEC) and a
pivot-to-spindle distance. The target
L_eff, overhang and offset angle are computed and shown in the Tonearm Kinematics block. - Match the beam to the target. Either drag Apex Pos until the "current L_eff" lines up with the target, or click Sync to target L_eff to snap the relevant slider.
- Shape the beam. Use the Headshell, Beam Geometry, Tail Section and Material controls to sculpt the mass and stiffness distribution along the arm.
- Tune neutral balance. If you are using the Hollow Elbow (Cobra) tail, use the Disc and Fine Trim controls to land the rear CG and watch the Neutral Balance score in the Tail block.
- Inspect the physics. Open the Physics Panel (floating bottom-right). Confirm that Total COM, static imbalance, and inertia about the pivot are within sensible ranges.
- Export. Pick an export type (thin-walled, solid plug, vertical or horizontal split) and download STL files for further work in your CAD or slicer.
5. Header Readouts
The two boxes at the top of the sidebar are live status readouts, not inputs.
System Mass
Total mass of the configuration: integrated shell mass (from material density and per-ring cross-section) plus cartridge mass, counterweight stack, and fine-trim equivalent mass. The numeric colour switches between purple (no cartridge) and gold (a cartridge mode is active) so you always know which configuration the readout describes.
System Resonance
The arm/cartridge resonance frequency, computed as f = 1000 / (2π · √(M_eff · C10)) with
M_eff in grams and C10 in 10⁻⁶ cm/dyn. A coloured gauge below the value highlights the audiophile
comfort zone (7–12 Hz green, 6–7 / 12–14 Hz yellow, outside 5–14 red). When no cartridge is mounted only the effective shell
mass is shown; the resonance line is blanked.
6. Cartridge & Physics
Cartridge Mode
| Option | Meaning |
|---|---|
| Goldring 1042 (Reference) | Uses the bundled, anchor-driven Goldring 1042 profile (body, plate, cantilever, pins). Mass and stylus geometry are taken from the reference data set. |
| Selected Cartridge | Uses the cartridge chosen in the picker. Mass, 10 Hz compliance and tracking-force target are copied from the compact cartridge dataset. |
| Manual Cartridge | A simple 18 × 16 × tipToTop box with a configurable mass and tip-to-top distance. |
| None (Arm Only) | No cartridge. A nominal stylus reference X is used purely for L_eff calculation. Static imbalance and resonance are not meaningful in this mode. |
Setback (Stylus Tip X)
Position of the stylus tip along the beam axis. In Goldring, Selected Cartridge and Manual modes this drives the cartridge body position and therefore the cartridge COM. The slider's upper bound is automatically clamped so the cartridge body cannot run past the physical pad.
Custom Mass & Stylus Tip-to-Top
Visible when Selected Cartridge or Manual Cartridge is selected. For picked cartridges, mass is copied from the compact data file. Tip-to-top remains the app box-geometry reference; the picker does not change body-shape geometry. For manual entries, mass is user-controlled. Tip-to-top is the vertical distance from the stylus tip to the top of the cartridge body (used to align the box geometry under the pad).
Dynamic Compliance
Two compliance values are tracked because manufacturers report compliance at either 10 Hz or 100 Hz. They are linked through
a conversion factor k:
C10 = C100 · k
- Editing C10 directly is the explicit case (label turns green: [Explicit measurement]).
- Editing C100 or k drives an estimated C10 (label turns yellow: [Estimated value (C100 · k)]).
Nominal Stylus X (Arm-Only)
Visible only when the cartridge mode is None. Sets the X position used as a virtual stylus reference for L_eff calculation even though no cartridge mass is present.
Cartridge Picker
The Select Cartridge button opens a modal backed by data/tonearmdesigner-cartridges.min.js.
The JS data file is compact app data: it contains usable cartridge fields such as manufacturer, model, type, mass, 10 Hz compliance,
tracking-force range, stylus, cantilever and output when available.
Search and filters
- Search is case-insensitive over manufacturer plus model.
- Type filtering uses the cartridge type value when present, for example MM, MC, MI or source-specific equivalents.
- Mass, compliance, tracking force and optional output mV filters are numeric min/max filters.
- The stylus filter is optional and matches stylus text such as elliptical, line-contact or Shibata when those words exist in the data.
- The result count shows the number of matching cartridges. Large matches are rendered as a capped visible list for responsiveness.
Apply, Cancel and close behavior
Selecting a result row only updates the preview inside the modal. Apply updates the live design once: cartridge display name, cartridge mass, 10 Hz compliance and the tracking-force target are copied into TonearmDesigner state. If a cartridge lacks a recommended tracking force, the midpoint of min/max is used. Cancel, the X button and backdrop clicks do not change the live design.
Some cartridge records sit outside the default controller ranges. When Apply needs this, TonearmDesigner expands the affected controller ranges for cartridge mass, 10 Hz compliance or tracking force before setting the value, so selected cartridge data is not silently clamped. The picker warns before Apply when a range expansion is required and shows a status note after Apply. Preview, search, Cancel and X close do not mutate live values or controller ranges.
Mass, compliance and tracking force
Mass contributes to the arm/cartridge mass and COM calculations. Compliance is the dynamic 10 Hz value used by the resonance formula. Tracking force is copied to the solver target field so optimization can compare the static load-equivalent result against the selected cartridge's recommended force.
Estimated compliance indicator
Some dataset entries have compliance_10hz_estimated=true. The app shows an estimated compliance
indicator and the compliance label turns yellow. Treat that value as an estimate in resonance and solver interpretation,
not as an exact lab measurement.
Fallback behavior
The picker loads the local cartridge data through a normal script loading tag, not through fetch(). This avoids Chrome CORS blocking when the app is opened directly from file://.
If the script is missing or fails to load, TonearmDesigner keeps running and the original Goldring/reference behavior remains available, with a
clear status message in the picker area.
Solver and resonance assumptions
The selected cartridge affects resonance through mass and 10 Hz compliance, and it affects the solver through the copied tracking-force target. It does not rewrite the solver architecture, replace the Fas 15.2 evaluation slider, or change the canonical Fas 14.4 counterweight model.
7. Tonearm Kinematics
The kinematics block computes the geometric alignment targets for a chosen pivot-to-spindle distance and IEC null-radii preset, then compares them with what the current beam geometry actually achieves.
Pivot-to-Spindle
Horizontal distance between the spindle axis of the turntable and the vertical pivot of the tonearm. This is the prime anchor of every overhang/offset calculation.
Alignment Preset
| Preset | Inner null (mm) | Outer null (mm) |
|---|---|---|
| Löfgren A (Baerwald) — IEC | 66.0 | 120.9 |
| Löfgren B — IEC | 70.3 | 116.6 |
| Stevenson — IEC | 60.325 | 117.4 |
Targets and current values
- Target L_eff — geometrically optimal effective length for the chosen preset and pivot-to-spindle.
- Target Overhang —
L_eff − pivot-to-spindle. - Target Offset Angle — geometric headshell offset that places both nulls at the chosen radii.
- Current L_eff (Apex − Stylus) — actual planar distance from the pivot point to the current stylus tip.
- Δ — error between current and target. Green if |Δ| ≤ 0.5 mm, red otherwise.
Sync to target L_eff
Convenience button. When pressed, it back-solves which slider (cartX in cartridge modes, nomStylusX in Arm-Only mode) needs to be set so that the current L_eff matches the target. The slider value is clamped to its declared min / max range.
8. Tail / Neutral Balance
The tail block selects between the original Classic geometry and the Hollow Elbow (Cobra) geometry. The Cobra mode adds a smoothly-blended G1/C1 cubic-bezier rear bend that drops vertically and ends in a configurable rectangular mouth.
Tail Mode
| Mode | Notes |
|---|---|
| Classic Tail | Bell-shaped tapered rear behind the apex; controlled by the "Tail Section (Classic Only)" sliders further down. |
| Hollow Elbow (Cobra) | Adds a vertical bend with explicit blend zone and mouth, plus a counterweight stack and fine-trim screw. |
Cobra blend / bend / mouth
| Slider | Meaning |
|---|---|
| Blend Zone Length | How far back from Bend Start X the cross-section transition begins. Larger = smoother. |
| Bend Start X | Axial position where the rear bend leaves the straight beam. |
| Bend Drop Z | Total vertical drop along the bend, in millimetres. |
| Bend Radius/Length | Length of the bend's horizontal projection. Combined with Drop Z, defines bend curvature. |
| Mouth Outer Width / Length | Cross-section dimensions at the rear opening (Y × X). |
Counterweight stack
Pure cylindrical discs stacked at the mouth. Diameter, thickness, count and mass per disc are independent. Discs are placed
progressively further back so the stack center sits behind the mouth at −count·thickness/2.
Fine trim screw
Equivalent point mass for a fine-trim adjustment screw, attached above the apex. Mass can be negative to model a screw that is pulled inward (lowering the rear effective mass).
Rear CG / Neutral Balance / Score
Computed from the integrated rear shell mass plus the counterweight and fine-trim point masses. The neutral-balance score reflects how well the rear CG aligns with the line drawn from the front cartridge reference through the pivot:
| Score | Error |
|---|---|
| good | ≤ 3.0 mm |
| ok | 3.0–7.0 mm |
| poor | > 7.0 mm |
Display toggles
- Show counterweights (3D) — render the disc stack.
- Show fine-trim screw (3D) — render the cylindrical fine-trim screw.
- Show Rear CG — purple marker at the rear CG in 2D.
- Show neutral balance line — yellow dashed line through stylus / pivot / rear CG in side view.
- Show tower clearance — translucent red strip around the apex in side view.
- Include weights in export — adds the disc stack geometry to the exported STL.
9. Organic Headshell & Neck
The front 60–80 mm of the beam is treated as a flat-bottomed headshell that smoothly transitions through a neck waist into the main beam.
| Slider | Effect |
|---|---|
| Pad Offset (Z-axis) | Vertical translation of the cartridge mounting plane. Use to fine-tune VTA-like geometry independent of beam height. |
| Nose Rounding | X-extent of the elliptical nose at the very front. Larger = blunter nose. |
| Pad Max Width | Maximum Y-width of the headshell pad. |
| Pad Total Length | X-length of the flat pad zone. Auto-clamped to be ≥ Nose Rounding. |
| Nose Height (Base) | Z-height of the pad zone before the beam grows in height. |
| Neck Width (Waist) | Minimum Y-width at the neck. Auto-clamped to be ≤ Pad Max Width. |
| Neck Length | X-length of the headshell-to-beam transition. |
10. Beam Geometry & Asymmetry
The main beam profile is constructed from a small set of high-leverage parameters.
| Slider | Effect |
|---|---|
| Asymmetry Belly/Crown | 0 = symmetric beam (top and bottom mirror each other); 1 = full belly (height grows downward only). |
| Apex Pos (Pivot) | X-coordinate of the apex / vertical pivot. Drives where maximum height and maximum width sit. |
| Max Height (Side) | Maximum Z-height of the beam at apex. |
| Max Width (Top) | Maximum Y-width of the beam at apex. |
| Vertical Arch (Lift) | How much the centerline of the beam arches upward toward the apex (Z lift between pad and apex). |
11. Tail Section (Classic Only)
Active only when the Tail Mode is set to Classic Tail.
| Slider | Effect |
|---|---|
| Rear Radius (Bluntness) | Power-law exponent that controls how blunt or pointy the tail termination is. |
| End Diameter | Final cross-section diameter at the rear of the beam. |
12. Material (Effective Constants)
Material selection drives an effective 1D approximation: a single density, Young's modulus E (MPa), and shear modulus G (MPa). These are not anisotropic FEA constants — they are reasonable bulk values for a fibre-in-epoxy laminate.
| Material | Density (g/cm³) | E (MPa) | G (MPa) |
|---|---|---|---|
| Carbon Fiber/Epoxy | 1.55 | 135 000 | 5 000 |
| Glass Fiber/Epoxy | 1.90 | 45 000 | 4 000 |
| Kevlar/Epoxy | 1.38 | 75 000 | 2 000 |
| Flax Fiber/Epoxy | 1.30 | 30 000 | 1 500 |
Wall Thickness is the offset distance from the outer ring to the inner ring. The same wall thickness is used all the way along the beam. Increasing it adds mass and increases bending stiffness EI; decreasing it can trigger area-inversion validation warnings in narrow cross-sections.
13. Render Mode (3D)
| Mode | Use |
|---|---|
| Light CAD (Surface Analysis) | Default. Neutral grey shell with orange caps; best for inspecting curvature. |
| Wireframe (Mesh) | Shows the underlying triangulation; useful for spotting topology problems. |
| Dark Carbon Fiber | Marketing-style dark anisotropic shading. |
| X-Ray (Transparency) | Translucent shell; lets you see the inner ring and accessory geometry through the wall. |
14. Export (Parametric CAD)
The export block writes one or more STL files based on the current geometry and material thickness.
Export Type
| Type | Output |
|---|---|
| Thin-walled arm | Hollow shell with the configured wall thickness, sealed by front and rear caps. Good for printable shells. |
| Solid plug | Solid outer shell only. Good for FEA imports or as a casting positive. |
| Vertical split (Y=0) | Two halves cut along the Y=0 plane, each as its own STL. The clearance slider opens an air gap between the parts. |
| Horizontal split (zCenter) | Two halves cut along the local centerline of each ring (Z = ring center). |
| Pattern split across length | Freeform/trace geometry only. Cuts the pattern across its length into two closed halves for printers whose build volume is shorter than the arm. Each half is checked for closure before it is written, and the clearance slider opens a gap between them. Hollow and the two parametric splits are generated from the parametric ring cache and are refused for freeform geometry. |
Registration on the cut face
When the pattern is split, a keyed boss is added to the first half and a matching socket to the second, so the printed halves rejoin in one orientation only: the pin profile is a circle with a single chord flat, which a plain round pin would not give. The socket is the same profile opened by the fit clearance, so the pin can actually enter it. Leave the pin radius at 0 to have it sized from the cut section; a radius that would break through the wall is refused, and the message states the maximum the section allows. Unticking the box leaves plain flat cut faces.
Casting pattern allowance
The cross-section scale in the export panel multiplies every section of a freeform pattern by a percentage and leaves the traced length unchanged, so a printed pattern can allow for the shrinkage of a mould taken off it and of the part later laid up inside. Negative values shrink the sections. A factor that would drive any section outside the supported ring range is refused rather than clamped, since clamping would silently change the pattern's shape on the stations that hit the limit. The Onshape 1:1 export refuses a non-zero allowance, because it is defined as an exact reference whose sidecar states that no shrinkage compensation was applied.
The Check mould release button in the export panel runs this test on the pattern as it would be exported, allowance included, at the same mesh density the STL will use. Choose the pull axis first: Z splits the mould top and bottom, Y left and right. The verdict, the parting-line station count and the near-vertical surface fraction are also written into the technical report. Pattern split position sets where the across-length cut falls, as a percentage of the pattern's own length.
Whether a pattern can leave a two-part mould is a geometric question the tool can answer: along the chosen pull axis a releasable shape presents exactly one up-facing and one down-facing surface everywhere. Surfaces within the draft threshold of the pull direction are near-vertical walls, reported as a draft area fraction rather than counted as undercuts, because every closed pattern has a silhouette band at exactly zero draft. This is a ray-sampled check on the exported mesh, not a mould-flow or tooling simulation.
Export Format
- Binary STL (Recommended) — compact, fast, the right default for almost everything downstream.
- ASCII STL — human readable but very large; only useful for debugging.
Download Export Model
Triggers an export-time validation pass. If the geometry is internally consistent the resulting file(s) are downloaded by the browser. If the geometry is invalid (area-inversion, bad bend parameters, etc.) the export is aborted with a banner message and no file is written. See Validation Warnings.
15. Main View Cameras & 2D Plots
3D camera buttons
| Button | View |
|---|---|
| Isometric | Default 3D oblique view of the whole arm. |
| Side | Strict X/Z side projection from −Y. |
| Top | Strict X/Y top projection from +Z. |
| Front | Y/Z front projection from −X. |
| Focus Cartridge | Camera framed on the stylus tip. |
| Focus Tail | Camera framed on the rear terminal of the beam. |
OrbitControls is active in all views: drag to orbit, right-drag (or shift-drag) to pan, scroll to zoom. The small axes gizmo in the bottom-left of the 3D view always reflects the current camera orientation.
Side Profile (Z-X)
2D orthographic projection from the −Y direction. Renders the actual cross-section centerline and rims as well as optional bending-stiffness EI_y and per-mm mass envelopes. Markers for stylus, pivot and (when enabled) Total / Rear / Counterweight / Cartridge COM are overlaid.
Top View (Y-X)
2D orthographic projection from +Z. Shows the planar half-width and the optional EI_z envelope. Markers for stylus, pivot and Total COM are overlaid.
16. Physical Analysis & COM Panel
A floating, draggable, dismissible panel anchored bottom-right of the viewport. Toggle it via the Physics Panel button, drag it by its header, and close it with the × button. It is independent of sidebar scroll position.
Display toggles
- Show Vertical Pivot — red marker and dashed vertical line in 2D and 3D.
- Show Total COM — combined center of mass of shell + cartridge + counterweight + fine trim.
- Show Rear Assembly COM — COM of the rear shell + counterweight + fine trim only.
- Show Counterweight COM — disc stack COM only.
- Show Cartridge COM — cartridge body COM only.
- Show Inertia Axes (3D) — principal inertia axes in the X/Z plane plus the Y inertia axis, drawn through the pivot.
- Show Measurement Lines (2D) — dashed lines between Stylus, Pivot, Total COM, Rear COM and Counterweight COM in the 2D projections.
Vertical pivot offset (XYZ)
Three sliders that translate the vertical pivot relative to the apex. They drive the same internal state that the 2D drag handles (see Interactivity) write to.
Vertical Relations meters
A bank of vertical bar meters that show, in millimetres, how high or low each of Pivot / Total COM / Rear COM / Counterweight / Cart COM sits relative to the stylus tip. The meter centerline is the stylus tip plane; positive readings are above the stylus, negative below. The colour gradient is purely cosmetic — the absolute number is what matters.
Coordinates & Distances
Numeric XYZ coordinates of pivot, stylus and all visible COM markers. Below them, the 3D distances and per-axis Δx, Δy, Δz components for every relevant pair (stylus → pivot, pivot → total COM, etc.).
Calculated Static Imbalance
First-order static load-equivalent estimate derived from the static moment of the total mass distribution about the pivot:
moment_gmm = total_mass · (pivot_x − total_COM_x)
gf = moment_gmm / (pivot_x − stylus_x)
mN = gf · 9.80665
The Static Imbalance Gauge below the readout reflects the same value on a 0–5 g coloured bar:
| Range | Quality |
|---|---|
| 1.5 – 2.5 g | good (green) |
| 1.0 – 3.0 g | ok (yellow) |
| outside 1.0 – 3.0 g, or lifting | poor (red) |
A textual hint adapts to the current state — for example, suggesting that the user shift the total COM forward when the downforce is too low, or reduce the rear moment when it is too high.
Inertia (about Pivot)
- I_vertical (vertical bearing axis) — moment of inertia about the Z-axis through the pivot, in g·mm². Drives lateral tracking response.
- I_horizontal (lateral axis) — moment of inertia about the Y-axis through the pivot, in g·mm². Drives vertical tracking response.
- Radius of Gyration (vertical) —
k_zz = √(I_zz / m_total), in mm. Useful as a single-number characterization of mass distribution.
17. Solver Sandbox & Optimization Goals
The Solver opens from the main controls with Open Solver. It uses a full-screen modal with its own 3D preview and a read-only sandbox copy of the current design. The live design is not changed while variables, targets, candidates or the modal preview are edited. Live design changes only after Apply.
Variables
The Variables panel lists adjustable design parameters. Each variable can be locked or unlocked. Only unlocked variables may be changed by the solver. For each adjustable variable the panel shows a current value plus editable min, max and step fields. The solver samples only inside those ranges and preserves hard safety limits where the application defines them.
Editing solver fields
Numeric fields in the Solver keep a local edit buffer while you type. Partial values such as
-, 0., 0, or 2. remain in the field until you
commit the edit with blur, Enter or Run Solver. The solver does not start, rebuild
results or mutate its numeric policy on every keypress.
Invalid pending edits are marked in the field and must be corrected before a solver run starts. Dot and comma decimal input are accepted when committed.
Optimization targets
The Optimization Goals panel contains active solver targets. Enabled targets contribute to the candidate score; disabled targets are displayed for reference but do not affect scoring. If no target is enabled, Run Solver refuses to start and asks you to enable at least one optimization target.
- Tracking force / needle pressure: target force in grams with tolerance.
- Total tonearm COM: total center-of-mass target, shown as available X/Z values.
- Counterweight COM: rear counterweight / rear disc stack COM target. This follows the rear-terminal, top-anchored downward disc stack model.
- Manufacturing diameter min/max: a hard build constraint for the estimated maximum diameter, useful for carbon fiber sleeve or sock compatibility.
- Effective mass / resonance: shown when available as target or acceptable range values.
Running the solver
Press Run Solver to evaluate candidates. Candidates are suggestions ranked from the active target score and hard constraints. The result list shows score, active target deltas, tracking force, total COM, counterweight COM, total mass, effective mass/resonance when available, estimated diameter/build constraint status and warning flags. Selecting a result updates only the solver modal preview until Apply is pressed.
Evaluation limit slider and async progress
The Solver evaluations slider controls the candidate evaluation cap for a run. It ranges from 2,500 to 15,000 candidates in 500-candidate steps. The selected value is displayed beside the slider and is used as the run's maximum evaluation count.
The solver still shows the estimated grid separately from evaluated candidates. If the estimated grid is smaller than the selected cap, only the estimated grid is evaluated. If the estimated grid is larger, the run is explicitly shown as a capped evaluation and does not imply exhaustive search. During calculation a spinner and progress text show evaluated count, actual cap and percentage. Evaluation is chunked so the browser can repaint between batches.
Warnings and validation
Solver output is a ranked candidate suggestion, not proof of final mechanical perfection. Some values may be marked estimated, especially build-envelope values such as maximum diameter. Browser rendering, WebGL behavior and physical build validation may still be required before treating a candidate as final.
18. 2D Drag & Tooltips
Tooltips
Hovering over any marker in the side or top view produces a contextual tooltip. The tooltip lists the marker's coordinates, its vertical relation to the stylus and to the pivot, and (where applicable) a hint about which slider the marker is bound to for direct dragging.
Drag handles
Markers that are bound to sliders show a thin white "halo" ring. They can be dragged directly:
| Marker | Side view drag | Top view drag |
|---|---|---|
| Vertical Pivot | X / Z via pivotOffsetX / pivotOffsetZ | X / Y via pivotOffsetX / pivotOffsetY |
| Stylus Tip (cartridge mode) | X via cartX, Z via padOffset (or customZ in Manual mode) | X via cartX |
| Stylus Tip (Arm-Only mode) | X via nomStylusX | X via nomStylusX |
Slider values are clamped to their declared min / max and snapped to step. The drag is a relative offset from the value at the start of the gesture, not absolute, so coarse pointer movement will not overshoot a slider's bounds.
19. Validation Warnings
The application performs several validation passes; any failure is shown as a red banner above the 3D view.
Cobra tail validation (continuous)
- Rear bend start must be after apex. Moving Bend Start X to or before the apex would collapse the blend zone.
- Rear bend start is too far back. Bend Start X must leave at least 5 mm of beam behind it.
- Bend radius (length) is too short. The bend's horizontal projection must be ≥ 5 mm.
- Blend zone cannot be negative. Self-explanatory.
- Mouth is too narrow. Both Mouth Outer Width and Length must be ≥ 2 mm.
Per-ring geometry validation (continuous)
For every cross-section ring, the application checks that the inner-ring area does not collapse below a small threshold of the outer-ring area. If the wall is too thick relative to a narrow cross-section the ring inverts and you get the message Area inversion detected. Solidity cannot be guaranteed.
Export-time validation
Pressing Download Export Model re-runs the full validation pass and additionally tries to pre-build the requested geometry. If anything fails an alert is shown (Export aborted: Geometry error) and no file is written.
20. Limitations & Disclaimers
- The physics layer is first-order. Static imbalance is a quasi-static moment-balance indicator; it ignores anti-skating, dynamic coupling between cartridge compliance and arm modes, and the mass of wiring.
- Material constants are bulk approximations. EI_y and EI_z are computed from cross-section second moments and a single material E; they do not represent fibre-direction-dependent stiffness.
- Resonance is calculated with a single 10 Hz dynamic compliance. Real cartridges show frequency-dependent compliance and damping that this calculation does not capture.
- Goldring 1042 reference data is geometric only. Real cartridge body inertia distribution and cantilever effective mass are approximated by point masses.
- STL export quality depends on the cross-section discretization (60 segments per ring). Smooth blends look good at this resolution; very tight features may need post-processing in the downstream CAD tool.
21. Troubleshooting
The 3D view is blank.
Confirm that the browser successfully fetched the Three.js and OrbitControls scripts (look in DevTools → Network). On first launch this requires an internet connection. WebGL must also be enabled in the browser flags.
The red "Geometry error" banner is stuck on.
Read the message. If it mentions area inversion, decrease Wall Thickness or increase the relevant cross-section dimension (Max Width / Max Height / Mouth dimensions). If it mentions the bend, increase Bend Start X or Bend Radius.
Static imbalance is negative or zero.
The total COM sits behind or directly under the pivot. In Cobra tail mode, reduce the disc count, decrease disc mass, or reduce Bend Drop Z so the rear assembly applies less counter-moment. In Classic mode, increase the cartridge mass or move the cartridge forward (smaller setback).
Resonance is N/A.
You are in Arm-Only mode. Pick a cartridge mode to enable the calculation.
The exported STL looks faceted in the slicer.
This is normal for an STL with 60 segments per ring. For surfaces of revolution the visible facet count is bounded; if finer tessellation is needed, post-process in your CAD tool.
The Sync to target L_eff button does nothing visible.
It only adjusts the slider that drives the stylus X (cartX or nomStylusX, depending on mode). If the target is outside that slider's range the value is clamped to the nearest valid endpoint and the Δ readout will still show a residual error.
22. Glossary
| Term | Meaning |
|---|---|
| Apex | The X-coordinate of the vertical pivot, also where Max Height and Max Width are reached. |
| COM | Center of Mass. Combined point at which the integrated mass distribution can be considered to act. |
| Compliance | Cartridge suspension softness in 10⁻⁶ cm/dyn, frequency-dependent. |
| EI_y / EI_z | Bending stiffness about the Y- or Z-axis, product of Young's modulus E and area moment of inertia I. |
| Effective Length (L_eff) | Planar distance pivot → stylus tip in the X/Y plane. |
| Effective Mass (M_eff) | The mass "seen" at the stylus tip due to the inertia of the arm rotating about the pivot. M_eff = I_pivot / L_eff². |
| Null radii | The two radii on the record at which a pivoting tonearm achieves zero tracking error for a chosen alignment. |
| Overhang | L_eff − pivot-to-spindle. How far the stylus tip overhangs the spindle. |
| Offset Angle | Angle between the cartridge's main axis and the line from pivot to stylus tip. |
| Pivot | The vertical bearing axis the arm rotates about. Treated here as a point at (apex + Δx, Δy, Δz). |
| Static Imbalance | Quasi-static stylus-tip load-equivalent from mass distribution about the pivot, in grams-force equivalent. |
TD041 Static-imbalance wording cleanup
TD041 is a maintenance correction on the previous engineering update. It removes remaining user-facing old force-label wording and keeps compatibility aliases internally.
- Visible wording now uses static imbalance/load-equivalent terminology.
- Compatibility identifiers such as legacy DOM/CSS names are preserved where needed.
- Metadata was bumped to the TD041 release value in the TD041 package.
TD042 Export validation and AI cleanup
TD042 focuses on export winding correctness, mesh validation and prompt consistency without changing LT Mechanism behavior.
- Export winding is corrected at the solid, hollow and split source mesh paths.
- Validation checks signed volume, arc-length reference volume, cap normals and sliver metrics.
- Watchdog winding correction remains available but should not trigger during normal export.
- Sessions read legacy mesh-quality fields but no longer persist them in new saves.
- AI prompt keeps computed shape facts as the primary current-form truth and reduces duplicated context.
TD043 reference-frame update
TD043 separates the vertical datum from the generated body envelope. The LP top plane is defined as scene Z=0, the vertical pivot is controlled as height above LP, and the body envelope can be lifted or lowered independently.
verticalPivotHeightAboveLPis the primary pivot-height control.pivotOffsetZis retained as a legacy load alias and is not saved in new sessions.armBodyDatumOffsetZmoves the profile/body envelope without moving the pivot datum.- The side profile can show a dashed LP top plane and the Physics Panel shows read-only datum values.
- Cobra mechanics metadata stubs are read-only and do not add pivot/tower/heart-counterweight geometry in TD043.
TD044 stylus-anchored playback datum update
TD044 defines the stylus tip as the playback Z-origin. During normal playback the stylus sits on the LP top plane, so stylus.z is constrained to lpTopZ.
- Stylus lock.
stylusLockedToLPis enabled by default and auto-solvesarmBodyDatumOffsetZso the stylus tip remains on the LP plane as body-shape sliders change. - Body datum auto-solve. The solver uses the cartridge tip-to-top relationship; for Goldring 1042 it shifts the arm body so the headshell underside meets the cartridge-top plane above the stylus.
- Manual override. Disable the lock only when intentionally studying VTA/SRA misalignment. Then
armBodyDatumOffsetZbecomes a manual control and the Stylus → LP ΔZ readout shows the mismatch. - Correction from TD043. TD043 separated pivot and body datums but still allowed the stylus to float below the LP plane for default settings. TD044 corrects that latent physical-frame error.
- Pivot height remains independent.
verticalPivotHeightAboveLPremains the pivot/VTA-tower height control; when the stylus lock is on, Pivot–stylus ΔZ equals that value.
TD045 UI readability hotfix
TD045 keeps the TD044 stylus-anchored datum architecture and applies two UI readability fixes.
- The red geometry/analysis warning banner can now be collapsed while preserving warning state and count.
- The side-profile static-imbalance badge is drawn in a fixed status area instead of being anchored beside the stylus, so it no longer covers the headshell, cartridge, or front arm.
- No STL winding, mesh validation, LT Mechanism, or core physics formulas changed in this hotfix.
TD045B AI engagement-policy update
TD045B changes the AI Shape Designer contract so large Cobra requests produce best-effort full-state deltas instead of empty safe exits.
- Best effort is mandatory. If a requested Cobra detail is not available as writable geometry, the AI must still move every available writable control toward the requested design.
- Full passthrough. AI deltas should include all writable inputs, all session selects and all session checkboxes. Sparse legacy deltas are accepted with a warning and auto-filled from the current session.
unsupportedAttributes. Missing geometry such asheart_shaped_counterweight,pivot_tower_separationis reported as a string array for transparency.- The former
no_safe_cobra_delta_missing_geometrypaved-road response is removed from the prompt contract.
Fas 15.3c Solver Continuation and Guided Mode
The solver modal is still a sandbox. The live design changes only when a selected candidate is applied. Discard and X close the modal without applying a candidate, and backdrop/Escape close remains disabled.
Smart solver ordering
The solver can run with Smart prioritized, Exhaustive order, Local refinement, Counterweight first, Geometry first or Resonance first strategy. Smart prioritized is the default and orders early batches by active targets, variable groups, baseline-near values and coarse-to-fine passes. It is deterministic and does not use external AI calls or hidden randomness.
Exhaustive order remains available for comparison. Prioritized and refinement modes still report that they have not covered the full grid unless continuation reaches exhaustion.
Run Solver, Continue Search and Reset Search
The first run starts a solver search session from cursor 0. If the variables, targets, weights and evaluation limit have not changed, the next run continues with the next batch and the button shows Continue Search. Progress and results are cumulative, for example batch 2 continues from the previous cursor and keeps the global best candidates. Reset Search clears the continuation cursor and results while preserving the current solver settings.
If a variable range, target setting, target weight or evaluation limit changes, the previous search session is invalidated. A new Run Solver begins a fresh search for the new signature. The app does not imply a full exhaustive search unless the estimated grid is exhausted.
Responsive solver layout
The solver uses Guide, Expert and Results as the left work panels while the 3D preview is a persistent right-side panel. The preview canvas stays mounted during normal solver use and is refreshed when the solver opens, results update, a selected candidate changes, or the layout is resized. This avoids depending on a hidden Preview tab for WebGL initialization.
Guided setup
Guided setup offers simple questions and presets: Tracking Force Fine Tune, Resonance Window Tune, Counterweight Balance Tune, Manufacturing Diameter Safe Tune and Balanced Optimization. Applying guide settings changes only the solver sandbox settings. Expert mode then reflects the variables, targets, weights and evaluation depth chosen by the guide. The guide does not run the solver automatically.
Input editing
Solver numeric fields keep local edit buffers while typing. Partial values such as "-", "0.", "0," and "2." are kept until blur, Enter or Run Solver commits them. Invalid pending values block Run Solver instead of being converted silently to zero.