← All Use Cases
🎵
Box-Behnken Design

Vinyl Playback Optimization

Box-Behnken design to maximize audio fidelity and minimize surface noise by tuning tracking force, anti-skate, and cartridge alignment

Summary

This experiment investigates vinyl playback optimization. Box-Behnken design to maximize audio fidelity and minimize surface noise by tuning tracking force, anti-skate, and cartridge alignment.

The design varies 3 factors: tracking force g (g), ranging from 1.2 to 2.2, anti skate g (g), ranging from 0.5 to 2.0, and overhang mm (mm), ranging from 14 to 18. The goal is to optimize 2 responses: fidelity score (pts) (maximize) and surface noise (dB) (minimize). Fixed conditions held constant across all runs include turntable = belt_drive, cartridge type = moving_magnet.

A Box-Behnken design was chosen because it efficiently fits quadratic models with 3 continuous factors while avoiding extreme corner combinations — requiring only 15 runs instead of the 8 needed for a full factorial at two levels.

Quadratic response surface models were fitted to capture potential curvature and factor interactions. The RSM contour plots below visualize how pairs of factors jointly affect each response.

Key Findings

For fidelity score, the most influential factors were anti skate g (62.3%), tracking force g (22.0%), overhang mm (15.7%). The best observed value was 7.3 (at tracking force g = 1.7, anti skate g = 2, overhang mm = 18).

For surface noise, the most influential factors were overhang mm (37.8%), anti skate g (33.8%), tracking force g (28.4%). The best observed value was -57.0 (at tracking force g = 1.2, anti skate g = 0.5, overhang mm = 16).

Recommended Next Steps

Experimental Setup

Factors

FactorLowHighUnit
tracking_force_g1.22.2g
anti_skate_g0.52.0g
overhang_mm1418mm

Fixed: turntable = belt_drive, cartridge_type = moving_magnet

Responses

ResponseDirectionUnit
fidelity_score↑ maximizepts
surface_noise↓ minimizedB

Configuration

use_cases/159_vinyl_playback/config.json
{ "metadata": { "name": "Vinyl Playback Optimization", "description": "Box-Behnken design to maximize audio fidelity and minimize surface noise by tuning tracking force, anti-skate, and cartridge alignment" }, "factors": [ { "name": "tracking_force_g", "levels": [ "1.2", "2.2" ], "type": "continuous", "unit": "g" }, { "name": "anti_skate_g", "levels": [ "0.5", "2.0" ], "type": "continuous", "unit": "g" }, { "name": "overhang_mm", "levels": [ "14", "18" ], "type": "continuous", "unit": "mm" } ], "fixed_factors": { "turntable": "belt_drive", "cartridge_type": "moving_magnet" }, "responses": [ { "name": "fidelity_score", "optimize": "maximize", "unit": "pts" }, { "name": "surface_noise", "optimize": "minimize", "unit": "dB" } ], "settings": { "operation": "box_behnken", "test_script": "use_cases/159_vinyl_playback/sim.sh" } }

Experimental Matrix

The Box-Behnken Design produces 15 runs. Each row is one experiment with specific factor settings.

Runtracking_force_ganti_skate_goverhang_mm
11.70.514
21.71.2516
32.21.2518
42.21.2514
51.71.2516
61.71.2516
71.21.2518
82.20.516
91.70.518
102.2216
111.21.2514
121.7218
131.20.516
141.2216
151.7214

Step-by-Step Workflow

1

Preview the design

Terminal
$ doe info --config use_cases/159_vinyl_playback/config.json
2

Generate the runner script

Terminal
$ doe generate --config use_cases/159_vinyl_playback/config.json \ --output use_cases/159_vinyl_playback/results/run.sh --seed 42
3

Execute the experiments

Terminal
$ bash use_cases/159_vinyl_playback/results/run.sh
4

Analyze results

Terminal
$ doe analyze --config use_cases/159_vinyl_playback/config.json
5

Get optimization recommendations

Terminal
$ doe optimize --config use_cases/159_vinyl_playback/config.json
6

Multi-objective optimization

With 2 competing responses, use --multi to find the best compromise via Derringer–Suich desirability.

Terminal
$ doe optimize --config use_cases/159_vinyl_playback/config.json --multi
7

Generate the HTML report

Terminal
$ doe report --config use_cases/159_vinyl_playback/config.json \ --output use_cases/159_vinyl_playback/results/report.html

Features Exercised

FeatureValue
Design typebox_behnken
Factor typescontinuous (all 3)
Arg styledouble-dash
Responses2 (fidelity_score ↑, surface_noise ↓)
Total runs15

Analysis Results

Generated from actual experiment runs using the DOE Helper Tool.

Response: fidelity_score

Top factors: anti_skate_g (62.3%), tracking_force_g (22.0%), overhang_mm (15.7%).

ANOVA

SourceDFSSMSFp-value
SourceDFSSMSFp-value
tracking_force_g20.41720.20860.2880.7569
anti_skate_g23.25331.62662.2490.1679
overhang_mm20.27750.13880.1920.8291
LackofFit65.29470.8824
PureError21.4467
Error86.74130.7233
Total1410.68930.7635

Pareto Chart

Pareto chart for fidelity_score

Main Effects Plot

Main effects plot for fidelity_score

Normal Probability Plot of Effects

Normal probability plot for fidelity_score

Half-Normal Plot of Effects

Half-normal plot for fidelity_score

Model Diagnostics

Model diagnostics for fidelity_score

Response: surface_noise

Top factors: overhang_mm (37.8%), anti_skate_g (33.8%), tracking_force_g (28.4%).

ANOVA

SourceDFSSMSFp-value
SourceDFSSMSFp-value
tracking_force_g21.46900.73450.1840.8357
anti_skate_g22.32621.16310.2910.7553
overhang_mm22.00481.00240.2510.7842
LackofFit627.13334.5222
PureError28.0000
Error835.13334.0000
Total1440.93332.9238

Pareto Chart

Pareto chart for surface_noise

Main Effects Plot

Main effects plot for surface_noise

Normal Probability Plot of Effects

Normal probability plot for surface_noise

Half-Normal Plot of Effects

Half-normal plot for surface_noise

Model Diagnostics

Model diagnostics for surface_noise

Response Surface Plots

3D surfaces fitted with quadratic RSM. Red dots are observed data points.

fidelity score anti skate g vs overhang mm

RSM surface: fidelity score anti skate g vs overhang mm

fidelity score tracking force g vs anti skate g

RSM surface: fidelity score tracking force g vs anti skate g

fidelity score tracking force g vs overhang mm

RSM surface: fidelity score tracking force g vs overhang mm

surface noise anti skate g vs overhang mm

RSM surface: surface noise anti skate g vs overhang mm

surface noise tracking force g vs anti skate g

RSM surface: surface noise tracking force g vs anti skate g

surface noise tracking force g vs overhang mm

RSM surface: surface noise tracking force g vs overhang mm

Multi-Objective Optimization

When responses compete, Derringer–Suich desirability finds the best compromise. Each response is scaled to a 0–1 desirability, then combined via a weighted geometric mean.

Overall Desirability
D = 0.9784

Per-Response Desirability

ResponseWeightDesirabilityPredictedDir
fidelity_score 1.5
1.0000
7.68 1.0000 7.68 pts
surface_noise 1.0
0.9470
-56.96 0.9470 -56.96 dB

Recommended Settings

FactorValue
tracking_force_g1.2 g
anti_skate_g2 g
overhang_mm18 mm

Source: from RSM model prediction

Trade-off Summary

Sacrifice = how much worse than single-objective best.

ResponsePredictedBest ObservedSacrifice
surface_noise-56.96-57.00+0.04

Top 3 Runs by Desirability

RunDFactor Settings
#60.7879tracking_force_g=1.2, anti_skate_g=1.25, overhang_mm=18
#20.7711tracking_force_g=2.2, anti_skate_g=0.5, overhang_mm=16

Model Quality

ResponseType
surface_noise0.7333quadratic

Full Multi-Objective Output

doe optimize --multi
============================================================ MULTI-OBJECTIVE OPTIMIZATION Method: Derringer-Suich Desirability Function ============================================================ Overall desirability: D = 0.9784 Response Weight Desirability Predicted Direction --------------------------------------------------------------------- fidelity_score 1.5 1.0000 7.68 pts ↑ surface_noise 1.0 0.9470 -56.96 dB ↓ Recommended settings: tracking_force_g = 1.2 g anti_skate_g = 2 g overhang_mm = 18 mm (from RSM model prediction) Trade-off summary: fidelity_score: 7.68 (best observed: 7.30, sacrifice: -0.38) surface_noise: -56.96 (best observed: -57.00, sacrifice: +0.04) Model quality: fidelity_score: R² = 0.8226 (quadratic) surface_noise: R² = 0.7333 (quadratic) Top 3 observed runs by overall desirability: 1. Run #5 (D=0.8395): tracking_force_g=2.2, anti_skate_g=1.25, overhang_mm=14 2. Run #6 (D=0.7879): tracking_force_g=1.2, anti_skate_g=1.25, overhang_mm=18 3. Run #2 (D=0.7711): tracking_force_g=2.2, anti_skate_g=0.5, overhang_mm=16

Full Analysis Output

doe analyze
=== Main Effects: fidelity_score === Factor Effect Std Error % Contribution -------------------------------------------------------------- anti_skate_g 1.2750 0.2256 62.3% tracking_force_g 0.4500 0.2256 22.0% overhang_mm 0.3214 0.2256 15.7% === ANOVA Table: fidelity_score === Source DF SS MS F p-value ----------------------------------------------------------------------------- tracking_force_g 2 0.4172 0.2086 0.288 0.7569 anti_skate_g 2 3.2533 1.6266 2.249 0.1679 overhang_mm 2 0.2775 0.1388 0.192 0.8291 Lack of Fit 6 5.2947 0.8824 1.220 0.5155 Pure Error 2 1.4467 0.7233 Error 8 6.7413 0.7233 Total 14 10.6893 0.7635 === Summary Statistics: fidelity_score === tracking_force_g: Level N Mean Std Min Max ------------------------------------------------------------ 1.2 4 6.2250 1.0145 5.0000 7.2000 1.7 7 6.0571 0.7547 5.1000 7.1000 2.2 4 5.7750 1.1206 4.6000 7.3000 anti_skate_g: Level N Mean Std Min Max ------------------------------------------------------------ 0.5 4 5.4000 0.2828 5.0000 5.6000 1.25 7 6.0143 0.9856 4.6000 7.2000 2 4 6.6750 0.6752 5.8000 7.3000 overhang_mm: Level N Mean Std Min Max ------------------------------------------------------------ 14 4 5.9750 1.1266 4.6000 7.2000 16 7 5.9286 0.8480 5.0000 7.3000 18 4 6.2500 0.8737 5.4000 7.1000 === Main Effects: surface_noise === Factor Effect Std Error % Contribution -------------------------------------------------------------- overhang_mm 1.0000 0.4415 37.8% anti_skate_g 0.8929 0.4415 33.8% tracking_force_g 0.7500 0.4415 28.4% === ANOVA Table: surface_noise === Source DF SS MS F p-value ----------------------------------------------------------------------------- tracking_force_g 2 1.4690 0.7345 0.184 0.8357 anti_skate_g 2 2.3262 1.1631 0.291 0.7553 overhang_mm 2 2.0048 1.0024 0.251 0.7842 Lack of Fit 6 27.1333 4.5222 1.131 0.5394 Pure Error 2 8.0000 4.0000 Error 8 35.1333 4.0000 Total 14 40.9333 2.9238 === Summary Statistics: surface_noise === tracking_force_g: Level N Mean Std Min Max ------------------------------------------------------------ 1.2 4 -54.5000 1.7321 -56.0000 -52.0000 1.7 7 -54.4286 1.9881 -57.0000 -52.0000 2.2 4 -53.7500 1.5000 -55.0000 -52.0000 anti_skate_g: Level N Mean Std Min Max ------------------------------------------------------------ 0.5 4 -54.7500 2.2174 -57.0000 -52.0000 1.25 7 -53.8571 1.5736 -56.0000 -52.0000 2 4 -54.5000 1.7321 -56.0000 -52.0000 overhang_mm: Level N Mean Std Min Max ------------------------------------------------------------ 14 4 -54.7500 2.0616 -57.0000 -52.0000 16 7 -54.2857 1.7043 -56.0000 -52.0000 18 4 -53.7500 1.7078 -56.0000 -52.0000

Optimization Recommendations

doe optimize
=== Optimization: fidelity_score === Direction: maximize Best observed run: #6 tracking_force_g = 1.7 anti_skate_g = 2 overhang_mm = 18 Value: 7.3 RSM Model (linear, R² = 0.0138, Adj R² = -0.2552): Coefficients: intercept +6.0267 tracking_force_g -0.0125 anti_skate_g +0.0750 overhang_mm +0.1125 RSM Model (quadratic, R² = 0.3508, Adj R² = -0.8177): Coefficients: intercept +5.7333 tracking_force_g -0.0125 anti_skate_g +0.0750 overhang_mm +0.1125 tracking_force_g*anti_skate_g -0.1750 tracking_force_g*overhang_mm -0.3500 anti_skate_g*overhang_mm +0.6750 tracking_force_g^2 -0.1417 anti_skate_g^2 +0.1833 overhang_mm^2 +0.5083 Curvature analysis: overhang_mm coef=+0.5083 convex (has a minimum) anti_skate_g coef=+0.1833 convex (has a minimum) tracking_force_g coef=-0.1417 concave (has a maximum) Notable interactions: anti_skate_g*overhang_mm coef=+0.6750 (synergistic) tracking_force_g*overhang_mm coef=-0.3500 (antagonistic) Predicted optimum (from linear model, at observed points): tracking_force_g = 1.7 anti_skate_g = 2 overhang_mm = 18 Predicted value: 6.2142 Surface optimum (via L-BFGS-B, linear model): tracking_force_g = 1.2 anti_skate_g = 2 overhang_mm = 18 Predicted value: 6.2267 Model quality: Weak fit — consider adding center points or using a different design. Factor importance: 1. overhang_mm (effect: 0.6, contribution: 58.6%) 2. anti_skate_g (effect: 0.2, contribution: 22.0%) 3. tracking_force_g (effect: 0.2, contribution: 19.3%) === Optimization: surface_noise === Direction: minimize Best observed run: #7 tracking_force_g = 1.2 anti_skate_g = 0.5 overhang_mm = 16 Value: -57.0 RSM Model (linear, R² = 0.0550, Adj R² = -0.2028): Coefficients: intercept -54.2667 tracking_force_g +0.3750 anti_skate_g +0.0000 overhang_mm +0.3750 RSM Model (quadratic, R² = 0.3546, Adj R² = -0.8070): Coefficients: intercept -54.6667 tracking_force_g +0.3750 anti_skate_g +0.0000 overhang_mm +0.3750 tracking_force_g*anti_skate_g +0.2500 tracking_force_g*overhang_mm +1.5000 anti_skate_g*overhang_mm +0.2500 tracking_force_g^2 -0.1667 anti_skate_g^2 +0.0833 overhang_mm^2 +0.8333 Curvature analysis: overhang_mm coef=+0.8333 convex (has a minimum) tracking_force_g coef=-0.1667 concave (has a maximum) anti_skate_g coef=+0.0833 negligible curvature Notable interactions: tracking_force_g*overhang_mm coef=+1.5000 (synergistic) Predicted optimum (from linear model, at observed points): tracking_force_g = 2.2 anti_skate_g = 1.25 overhang_mm = 18 Predicted value: -53.5167 Surface optimum (via L-BFGS-B, linear model): tracking_force_g = 1.2 anti_skate_g = 1.15832 overhang_mm = 14 Predicted value: -55.0167 Model quality: Weak fit — consider adding center points or using a different design. Factor importance: 1. overhang_mm (effect: 1.2, contribution: 60.7%) 2. tracking_force_g (effect: 0.8, contribution: 37.5%) 3. anti_skate_g (effect: 0.0, contribution: 1.8%)
← Previous: Room Acoustics Treatment Next: Podcast Recording Quality →