Input Shaping & Resonance Compensation: The Complete Engineering Guide to Eliminating Ringing in 3D Printers and CNC Machines

A dense engineering guide to input shaping for 3D printers and CNC machines: the ZV/ZVD/EI/MZV shaper math, resonance measurement with ADXL345, Klipper and Marlin tuning workflows, and the corner-smoothing trade-off — with fully worked examples.

·

Input Shaping & Resonance Compensation: The Complete Engineering Guide to Eliminating Ringing in 3D Printers and CNC Machines

In 2017, a mid-range desktop 3D printer printed external perimeters at 40–60 mm/s because any faster and every sharp corner sprouted a ghostly echo train — "ringing" — that ruined the surface finish. In 2026, a stock ₹35,000 CoreXY prints the same corner at 300 mm/s with zero visible artifacts, and a ₹15,000 bedslinger holds 150 mm/s on outer walls. The difference is not stiffer aluminium, faster steppers, or better slicers. It is one algorithm, conceived at MIT in the late 1980s for the Space Shuttle's flexible robot arm, that convolving the commanded motion with a short sequence of impulses can cancel a machine's own structural resonance before it ever reaches the motors. That algorithm — input shaping — is now the single highest-leverage quality upgrade available to any open-loop motion system, and this guide covers the complete engineering of it: the vibration model, the shaper math derived from first principles, the shaper family and its robustness trade-offs, both measurement methods (test print and accelerometer), firmware implementations across Klipper/Marlin/Prusa/Bambu, a full tuning workflow, and the failure taxonomy that follows from getting any of it wrong.


1. The Machine as a Spring–Mass System

Every printer axis is, to first order, a single-degree-of-freedom (SDOF) oscillator. The toolhead mass m (gantry, carriage, hotend) is accelerated by the motors through elastic elements — belts, idler shafts, frame members, even the compliance of the stepper's magnetic detent. The lumped equation of motion is:

where c is the effective viscous damping and k the effective stiffness in the motion direction. Three parameters completely describe the free response:

An impulse of magnitude A_0 applied at t = 0 produces the decaying oscillation

and every acceleration change in a print — the start of a perimeter, a 90° corner, a direction reversal — is an impulsive or step disturbance to this oscillator. The slicer's motion profile (trapezoidal velocity) concentrates energy at harmonics of the corner frequency; a trapezoidal profile's acceleration spectrum decays as 1/n with harmonic number n, and a jerk-limited S-curve as 1/n^2, which is why S-curve profiles excite less ringing but cannot eliminate it.

Why the frequency is what it is. Solving the model backwards for stiffness is the single most instructive calculation in this guide:

A typical bedslinger X-axis (gantry + toolhead, m \approx 0.6 kg) ringing at 48 Hz has an effective stiffness of k = 0.6 \times (2\pi \times 48)^2 \approx 54.6 kN/m. That is a lumped number absorbing belt stretch, motor coupling, carriage twist, and frame flex; it explains why overtightening belts and adding frame braces raises the ringing frequency (stiffer k) and why mounting a heavier direct-drive toolhead lowers it (more m). A Voron-class CoreXY rings higher — 50–70 Hz — because the stationary frame and short belt spans put more stiffness behind the same mass. If you know f_n and can weigh the moving mass, you know k; that one number tells you what mechanical work is even worth doing.

Measuring the damping ratio. Damping is what you can't fix with input shaping and can't read off a test print. If you have an accelerometer trace of a free ring-down, the logarithmic decrement over n cycles does it:

A machine whose oscillation amplitude falls from 1.0 to 0.3 over 8 cycles has \delta = \ln(1/0.3)/8 \approx 0.15 and \zeta \approx 0.024. Most firmware implementations simply assume \zeta = 0.1 — Klipper's documented default — and the shaper math is forgiving enough that the assumption rarely matters.


2. Input Shaping: Cancelling the Vibration Before It Starts

The core insight of Singer & Seering (MIT, published 1990 as "Preshaping Command Inputs to Reduce System Vibration") is that vibration is linear, so solutions superpose. If a single impulse at t = 0 produces the decaying sine of Section 1, then two impulses — the second one delayed and scaled — produce two overlapping responses that can be arranged to cancel each other for all t after the second impulse.

The Zero Vibration (ZV) shaper. Let the command be split into two impulses of amplitudes A_1, A_2 at times t_1 = 0 and t_2 = \Delta T. For the total to end at the same amplitude (no motion distortion), require A_1 + A_2 = 1. For the residual vibration after t_2 to be exactly zero at the natural frequency, the second response must arrive exactly half a damped period later and have the amplitude the first has decayed to:

The term K is the decay ratio over one half-period: e^{-\zeta\omega_n \Delta T} = e^{-\zeta\pi/\sqrt{1-\zeta^2}}. The two free responses are then mirror images and their sum is zero forever after t = \Delta T.

Worked example — a typical printer. Take \zeta = 0.1, f_n = 50 Hz, so \omega_n = 314.2 rad/s, \omega_d = 312.6 rad/s:

So 57.8% of the commanded acceleration is applied now and 42.2% is delayed by 10.05 ms. The delay is the entire cost of the method: it takes half a vibration period to cancel the vibration, during which time the toolhead trajectory is slightly smoothed (Section 4).

The general residual-vibration formula. For any impulse sequence \{A_i, t_i\}, the residual vibration amplitude at frequency \omega (as a fraction of the unshaped response), evaluated after the last impulse at t_n, is:

Every shaper in existence is a set of \{A_i, t_i\} chosen to push V(\omega,\zeta) below some tolerance band around the tuned frequency. ZV sets V = 0 at exactly (\omega_n, \zeta). The rest of the family widens that null at the cost of a longer impulse train — a longer delay, hence more smoothing.


3. The Shaper Family: ZV, MZV, ZVD, EI, and the Humps

ZVD (Zero Vibration and Derivative). ZV is fragile: if the true \omega_n differs from the tuned value by even a few percent, cancellation is imperfect and ringing returns (Section 4). ZVD additionally zeroes the derivative of V with respect to \omega, flattening the null. It is three impulses — the same two plus their "echo":

For the worked \zeta = 0.1 machine (K = 0.7293): A = [0.334,\ 0.488,\ 0.178] at [0,\ 10.05,\ 20.1] ms. Duration doubles to one full damped period.

EI (Extra-Insensitive). Instead of a perfect null at one frequency, EI (Singhose, Seering & Singer, 1994) constrains V \leq V_{tol} across the widest possible frequency band — typically V_{tol} = 5\%, invisible in a print. For the undamped case it is three equal-spaced impulses of symmetric amplitude:

at t = [0,\ T/2,\ T] with T = 2\pi/\omega_n — one full period of duration. For V_{tol} = 0.05: A = [0.2625,\ 0.475,\ 0.2625]. On a 50 Hz machine: impulses at 0, 10, and 20 ms. Klipper's EI, 2HUMP_EI, and 3HUMP_EI are all tuned to a 5% tolerance by default.

MZV (Klipper's workhorse). The Modified ZV is a Klipper-specific generalization: n \geq 3 pulses with a selectable total duration, defaulting to n = 3, t = 0.75\,T_d — exactly halfway between ZV (0.5\,T_d) and ZVD (1.0\,T_d). It is deliberately positioned as "better robustness than ZV, less smoothing than ZVD," and it happens to be the best default for most real printers; advanced users can specify mzv(n=5,t=1.1) etc.

The robustness table. Klipper's official documentation publishes the practical performance of each shaper — the frequency range over which residual vibration stays below 5% or 10%, and the shaper duration that sets the smoothing cost:

Shaper · Duration · 5% vibration band · 10% vibration band

ZV · 0.5 / f · (zero only at f) · ± 5% f

MZV · 0.75 / f · ± 4% f · −10%…+15% f

ZVD · 1 / f · ± 15% f · ± 22% f

EI · 1 / f · ± 20% f · ± 25% f

2HUMP_EI · 1.5 / f · −40%…+45% f · −45%…+50% f

3HUMP_EI · 2 / f · −50%…+60% f · −55%…+65% f

Read the table as a trade: each step down is more robustness (tolerance to mis-tuned frequency, to resonances that shift with Z-height or bed mass) purchased with more duration — i.e., more corner smoothing. ZV gives zero vibration at exactly the tuned frequency and nothing else; 3HUMP_EI suppresses two decades of frequency range but smears corners for 40 ms on a 50 Hz machine. Note the table's other lesson: 2HUMP_EI and 3HUMP_EI should never be tuned with shaper_freq equal to the resonance — their bands are deliberately asymmetric and offset, and Klipper's tuning tools set their frequency above the resonance for this reason.

Using the table for multi-mode machines. A printer with resonances at 35 Hz and 60 Hz on one axis needs a shaper whose 5% band covers both: EI tuned at 35/(1-0.2) = 43.75 Hz only reaches 43.75 \times 1.2 = 52.5 Hz — not enough. 2HUMP_EI tuned at 35/(1-0.4) = 58.3 Hz reaches 58.3 \times 1.45 = 84.5 Hz — covers both with margin. This one calculation, straight from the Klipper docs, is the entire secret of tuning machines with two visible resonance peaks.


4. The Price: Corner Smoothing

Input shaping never removes energy — it redistributes the command in time. During the shaper's window, the toolhead is executing a blurred version of the trajectory, and the blur shows up as rounded corners: the sharp vertex of the commanded path is cut off. The magnitude is worth computing because it, not ringing, is what limits acceleration on well-tuned modern machines.

Apply a ZV shaper [A_1, A_2] to a constant-acceleration ramp v(t) = at. The shaped velocity is v_s(t) = A_1 at + A_2\,a(t-\Delta T) = at - A_2 a \Delta T for t \geq \Delta T — the toolhead lags the commanded path at a constant velocity deficit A_2 a \Delta T. Integrated over an acceleration phase ending at speed v (duration v/a), the position lag is A_2 a \Delta T \cdot (v/a) = A_2 v \Delta T. That accumulated lag is exactly how far a corner gets cut:

For ZV at \zeta = 0.1 (A_2 = 0.4217, \Delta T = 1/(2f_d)):

Worked: 300 mm/s outer walls on a 50 Hz gantry → \delta_s \approx 300/(4.7 \times 50) \approx 1.3 mm of corner cut. ZVD/EI-class shapers with a full-period window cut roughly twice that. This is why the calibration output in Section 6 reports a "suggested max_accel" per shaper — at high acceleration the same deviation is reached at higher speeds, and the smoothing, not the ringing, becomes the binding constraint. Equivalently, for accel-limited segments the deviation scales as \delta \propto a\,T_s^2 with the shaper window T_s; a shaper with double the duration quadruples the smoothing at equal acceleration. The two knobs that buy back crisp corners are a stiffer machine (higher f, shorter window at fixed shaper type) and a shorter shaper (ZV/MZV instead of EI-class).

The related square_corner_velocity parameter (default 5 mm/s in Klipper) governs how abruptly a corner may change direction — it is a small per-corner velocity budget that further rounds corners, which is why Klipper's documentation explicitly advises keeping it at 5 and raising acceleration instead when chasing quality.


5. Measuring the Resonance

Tuning requires two numbers per axis: the ringing frequency f_d and (optionally) the damping ratio. There are two measurement paths, and they cross-validate.

5.1 The test-print method (no hardware)

Print a square tower in vase mode at 80–100 mm/s external-perimeter speed with acceleration ramping from 1,500 to 7,000 mm/s² (Klipper's TUNING_TOWER macro automates the ramp). The ringing manifests as surface ripples trailing every notch and letter. Measure the distance D (mm) spanned by N oscillation peaks with calipers, and:

where V is the outer-perimeter speed in mm/s. Klipper's documented example: 6 oscillations spanning 12.14 mm at 100 mm/s → f = 100 \times 6 / 12.14 \approx 49.4 Hz. This method costs one print and zero rupees, and it is the ground truth against which accelerometer data should be checked.

A critical diagnostic embedded in the docs: if the ripples do not follow the pattern of the curved notches, it is not ringing — it is a mechanical problem (loose pulleys, belt artifacts, extruder issue) and no shaper will fix it. Likewise, ripples whose spacing is constant rather than proportional to speed are VFAs (vertical fine artifacts — belt tooth pitch, stepper cogging), not resonance. The frequency-formula test (f should be the same when you reprint at a different speed) is the cleanest way to tell ringing apart from everything else.

5.2 The accelerometer method (ADXL345)

The ADXL345 is a 3-axis MEMS accelerometer with ±2 to ±16 g ranges, 10–13-bit output, and a maximum 3,200 samples/s output data rate over SPI — which is why Klipper drives it at 3,200 samples/s, giving a usable measurement bandwidth far above any printer resonance (typical machine modes live between 15 and 100 Hz). Wiring to a Raspberry Pi's SPI0 (from the Klipper docs):

ADXL345 pin · RPi pin · Function

VCC · 3.3 V · Power

GND · GND · Ground

CS · GPIO08 (pin 24) · SPI0_CE0_N

SDO · GPIO09 (pin 21) · SPI0_MISO

SDA · GPIO10 (pin 19) · SPI0_MOSI

SCL · GPIO11 (pin 23) · SPI0_SCLK

TEST_RESONANCES AXIS=X then chirps the axis through a frequency sweep while logging accelerometer data; the power spectral density (PSD) of the response shows peaks at each resonance. A sanity check first: MEASURE_AXES_NOISE should report baseline noise in the 1–100 range — values of 1,000+ indicate a bad sensor, marginal power, or a fan vibrating the mount (turn fans off during measurement).

The logging is post-processed by calibrate_shaper.py, which fits every shaper to the measured PSD and reports vibration reduction and smoothing. A real output from the Klipper documentation:

Fitted shaper 'zv'  frequency = 34.4 Hz (vibrations = 4.0%, smoothing ~= 0.132)
To avoid too much smoothing with 'zv',  suggested max_accel <= 4500 mm/sec^2
Fitted shaper 'mzv' frequency = 34.6 Hz (vibrations = 0.0%, smoothing ~= 0.170)
To avoid too much smoothing with 'mzv', suggested max_accel <= 3500 mm/sec^2
Fitted shaper 'ei'  frequency = 41.4 Hz (vibrations = 0.0%, smoothing ~= 0.188)
To avoid too much smoothing with 'ei',  suggested max_accel <= 3200 mm/sec^2
Recommended shaper is mzv @ 34.6 Hz

Everything about the trade is visible in those six lines: all three shapers kill the vibration, and the choice is really about smoothing, which converts into a suggested acceleration ceiling. Note the counterintuitive part — the suggested max_accel drops for more robust shapers. The EI fit found 41.4 Hz, above the 34.4 Hz peak, because EI's tolerance band lets the tuner trade frequency headroom for smoothing headroom. The smoothing scores are abstract comparison values, not real distances — the printed test gap (Section 7) is the real check.

Bedslingers need two measurements: the accelerometer on the toolhead for X and on the bed for Y, since each axis's moving mass and stiffness are different (a second accelerometer on a different SPI bus measures both simultaneously). Deltas, flying-gantry machines, and heavy beds should additionally consider the Z shaper (Section 9).


6. Firmware Implementations

Klipper is the reference implementation and the reason input shaping became mainstream. Configuration lives in a [input_shaper] section (shaper_type_x/y, shaper_freq_x/y); SHAPER_CALIBRATE runs the sweep, fitting, and recommendation in one command, and SET_INPUT_SHAPER applies parameters at runtime. Key implementation facts from the Klipper docs:

Marlin introduced integrated ZV input shaping in 2.1.2, controlled by G-code — critically, it is efficient enough to run on 8-bit AVR boards:

M593 F49.4          ; set ZV shaper frequency to 49.4 Hz (all axes)
M593 X F18.4        ; X only
M593 D0.1           ; set damping ratio
M593 F0             ; disable input shaping

Marlin's documented tuning procedure prints a tower whose frequency ramps 15 → 60 Hz with layer height (e.g. M593 F{(layer_num < 2 ? 0 : 15 + 45.0 * (layer_num - 2) / 297)} in the after-layer-change G-code) — find the cleanest band, read its frequency, set it. Marlin 2.1.3 adds a more advanced option: the Fixed-Time Motion (FTM) planner from Ulendo (a University of Michigan spin-out) with its own filter set — ZV, ZVD, EI, 2HEI, 3HEI, MZV — via M493. FTM replaces the motion planner wholesale rather than just filtering commands, guaranteeing constant computation time regardless of segment count.

RepRapFirmware on Duet boards supports input shaping of the M593 family (3.5.x and later). Prusa shipped Input Shaper in firmware 5.0 for the MK4 family with factory-tuned values, and the MK4S added a toolhead accelerometer specifically for per-machine resonance calibration; Prusa also sells a standalone accelerometer kit for the older boards. Bambu Lab machines ship input-shaped out of the box, factory-tuned per model, with a Vibration Compensation calibration routine in the slicer that re-measures the machine's resonances when hardware changes. The commercial lesson across all four: the shaper math is commodity now; the measurement (an on-board accelerometer or a factory calibration lab) is the product differentiation.


7. The Complete Klipper Tuning Workflow

Consolidated from the Klipper documentation, this is the fastest reliable path — accelerometer first, test print as confirmation:

  1. Prepare the machine. Tighten belts and check motion hardware first; input shaping masks resonance but cannot fix a sloppy mechanism. If the measured frequency comes out below 20–25 Hz, stop and stiffen the machine or reduce moving mass — shapers tuned that low smooth parts badly (Section 8).
  2. Wire and configure the ADXL345 (table in Section 5.2), then verify with ACCELEROMETER_QUERY — expect the free-fall gravity value (~9,800 in one axis). An Invalid adxl345 id (got xx vs e5) error means a SPI wiring problem.
  3. Check noise: MEASURE_AXES_NOISE — baseline should be 1–100. Fans off; 1,000+ means fix the sensor.
  4. Sweep both axes: TEST_RESONANCES AXIS=X, then AXIS=Y (accelerometer on the bed for a bedslinger's Y).
  5. Fit shapers: run calibrate_shaper.py on the CSVs (or SHAPER_CALIBRATE which does steps 4–5 in one go). Read the recommended shaper and per-shaper suggested max_accel.
  6. Cross-check with a test print: slice the ringing tower per the docs (0.2–0.25 mm layers, 80–100 mm/s, minimum layer time ≤ 3 s, dynamic acceleration control off, pressure advance off). Compare MZV vs EI prints; the docs' rule of thumb is prefer MZV unless EI is visibly better, and prefer EI on bedslingers (bed mass grows during a print, shifting resonance) and deltas (resonance varies with position).
  7. Pick max_accel from the smoothing, not the ringing. The test model's 0.15 mm wall gap widens as smoothing grows; find the acceleration where the gap is still sharp and set max_accel below it. Keep square_corner_velocity at the default 5.
  8. Re-tune pressure advance. Enabling input shaping changes the effective acceleration profile; Klipper documents that PA should be re-tuned afterward.
  9. Disable minimum_cruise_ratio interference during tuning (SET_VELOCITY_LIMIT MINIMUM_CRUISE_RATIO=0) — it changes how much of the move is accel/decel and contaminates measurements.
  10. Re-measure whenever hardware changes. Belt re-tensioning, toolhead swaps, bed swaps, or frame stiffening all move f_n (Section 1) — a shaper tuned to the old frequency under-performs silently.

For Marlin's ZV shaper, the equivalent workflow is the 15–60 Hz tower print in Section 6; the frequency of the cleanest band becomes M593 F<f>.


8. The Acceleration Ceiling: Why Low-Frequency Machines Are Speed-Limited

This is the quantitative heart of the smoothing problem, and it explains the entire modern printer market. From Section 4, corner deviation scales with the shaper window: \delta \propto v\,T_s for speed-limited corners, \delta \propto a\,T_s^2 for accel-limited ones, and T_s = \text{duration}/f. So for a fixed acceptable smoothing budget, maximum acceleration scales as

Double the resonance frequency and you quadruple the usable acceleration at equal corner quality. This single relation is why the industry pushed frame stiffness so hard between 2020 and 2026: a 25 Hz bedslinger is capped near 3,000–4,000 mm/s² with an EI shaper, a 45 Hz one runs 8,000–12,000, and a 60+ Hz CoreXY with MZV reaches 20,000+ mm/s². The Klipper docs' worked numbers make it concrete:

Notice that the more robust shaper at a similar frequency gets a dramatically lower ceiling — the 2HUMP_EI's 1.5/f window eats four times the smoothing of ZV's 0.5/f window at equal acceleration. When the Klipper docs say a low-frequency printer is "limited due to too much smoothing instead of ringing," this is the mechanism. The engineering response is always the same order of operations: stiffen the machine (raise f) → pick the shortest shaper that holds (ZV/MZV) → then raise acceleration.


9. Beyond X/Y: Z-Axes, Deltas, and the Things Input Shaping Won't Fix

Z-axis shaping rarely improves print quality directly, but Klipper documents real wins for deltas, flying gantries, and heavy beds: reduced Z resonance lets max_z_accel and max_z_velocity rise, speeding up Z-hops — measurable on toolchangers, where the Z axis moves constantly.

Deltas are the pathological case: the three towers mean resonance frequencies shift across the build plate and with Z-height, which is precisely what EI-class robustness is for. Klipper recommends EI over MZV/ZV for deltas, and 2HUMP_EI when the frequency exceeds 50–60 Hz.

Multi-mode machines (two visible PSD peaks per axis, or test-print oscillations with unstable spacing) are the 2HUMP/3HUMP_EI use case from Section 3's worked example. Single-mode tuning on a dual-mode machine leaves the second peak ringing.

*What input shaping does not fix:* VFAs from belt tooth pitch and stepper cogging (constant spatial wavelength — check the speed test in Section 5.1), extruder artifacts, frame skew (a static geometric error needing skew correction, not dynamic compensation), backlash, and loose hardware. The Klipper docs are explicit that a defect not following the ringing-tower notch pattern is out of scope for shapers.


10. Why Your CNC Mill Doesn't Use Input Shaping (Yet)

Machine tools face the same physics — a 2-ton VMC column is a spring-mass system too — but they solve it differently, and the contrast is instructive. A VMC's cast-iron structure has stiffness four to five orders of magnitude above a printer's aluminium extrusion frame, so its modes sit at hundreds of Hz, above the excitation the cutting process produces; damping is also higher structurally. Where resonances do threaten (spindle modes, ballscrew torsion), the fix is in the feedback domain: servo drives insert notch filters into the velocity loop that attenuate measured torsional resonances without delaying the command, because closed-loop systems can afford to — the feedback already tracks the real trajectory. Feedforward input shaping, by contrast, is the natural fit for open-loop stepper systems (printers) where nothing is measured during motion and the command is the only lever. The lineage is visible: input shaping was born on flexible space manipulators and industrial cranes — big, compliant, open-loop-ish structures where the delay of half a vibration period is negligible against a 30-second slew. The exception proving the rule: Marlin's adoption of Ulendo's FTM in 2.1.3, and a growing body of work applying FBS-style filtering to CNC cornering, suggest the two worlds are converging as machine tools chase faster non-cutting moves.


11. India Hardware Costs

Everything needed to measure and deploy input shaping, at Indian street prices:

Item · Notes · Price (₹)

ADXL345 breakout (GY-291) · SPI mode — verify board supports it · 80–250

FYSETC Portable Input Shaper · RP2040 + ADXL345, USB · 1,800–2,500

KUSBA · USB ADXL345 accelerometer · 1,200–2,000

RPi Pico + ADXL345 (DIY) · USB resonance tester · 400–600

Raspberry Pi Zero 2 W · Klipper host · 1,800–2,500

Used Raspberry Pi 3B/4 · Klipper host · 2,500–4,500

Frame stiffening (brace kit) · Raises f_n, quadruples a_{max} per doubling · 500–1,500

Sourcing: Robu.in, Robocraze, ElectronicsComp, and Thingbits stock the ADXL345 breakouts and RP2040 boards with datasheets; FYSETC and KUSBA boards come via the usual 3D-printer parts channels (3idea, WOL3D, Robu). One framing worth repeating when budgeting: a ₹150 accelerometer and an afternoon of tuning unlock more speed on most printers than a ₹5,000 hotend upgrade — the bottleneck was never the plastic, it was the vibration.


12. Failure Taxonomy: The Eleven Ways Tuning Goes Wrong

  1. Ringing returns after enabling the shaper. The tuned frequency is wrong, or it drifted — belts loosened, toolhead mass changed. Re-measure; the Klipper docs list exactly which hardware changes invalidate a tuning.
  2. Corners heavily rounded, fine detail lost. Shaper too robust or frequency too low for the acceleration: try MZV/ZV, drop max_accel, keep square_corner_velocity at 5. Never "fix" smoothing by raising scv.
  3. Test-print oscillation spacing is unstable. Multiple resonances on one axis: 2HUMP/3HUMP_EI per Section 3's table calculation.
  4. Accelerometer noise 1,000+. Fans vibrating the mount, marginal power, or a clone board — fix hardware before trusting any fit.
  5. The "ringing" doesn't follow the notches. Not resonance: belt/mechanical or extruder artifact. Shapers will not help.
  6. Frequency below 20–25 Hz. Shaping becomes smoothing-dominated — stiffen the frame or cut moving mass first (Section 8).
  7. Bedslinger Y-tuned at X's frequency. Different axes, different modes — measure each axis separately (accelerometer on the bed for Y).
  8. Tuning 2HUMP_EI/3HUMP_EI at the resonance frequency. These shapers want shaper_freq above the peak — use the tuner's recommendation, not the raw PSD peak.
  9. Bedslinger tuned to ZV/MZV, quality degrades mid-print. Bed mass grows with the print; EI's robustness pays for itself here.
  10. Dual-carriage Y mismatch. Two carriages must share one Y shaper; mismatched Y shapers fight each other through the belt.
  11. Pressure advance left at pre-shaping values. The changed acceleration profile changes the extrusion lead — re-tune PA after enabling.

The Ten-Point Input Shaping Checklist

  1. Compute the physics first: k = m(2\pi f)^2 from the ringing frequency — know your machine's stiffness budget before touching firmware.
  2. Fix mechanics before shaping: belts, pulleys, and frame braces move f_n upward — every Hz doubles (squared) your acceleration headroom.
  3. Measure, don't guess: accelerometer sweep plus one ringing tower; the speed-invariance test (f = VN/D) separates true ringing from VFAs.
  4. Match the shaper to the machine: MZV for crisp, single-mode CoreXYs; EI for bedslingers and deltas; 2HUMP/3HUMP only for verified multi-mode axes.
  5. Never set hump-shaper frequency to the resonance peak — use the tuner's fitted frequency.
  6. Select max_accel from the smoothing budget, not ringing: print the gap test and watch it widen (Section 7).
  7. Keep square_corner_velocity at 5 mm/s and disable minimum_cruise_ratio interference while measuring.
  8. Re-tune pressure advance after enabling shaping.
  9. Re-measure after every hardware change — belt tension, toolhead mass, bed swap.
  10. If the frequency is below 20–25 Hz, the fix is a stiffer frame, not a bigger shaper.

Conclusion

Input shaping is the rare manufacturing technology where a page of 1990s control theory, applied through a ₹150 accelerometer, doubles a machine's practical throughput with zero hardware cost. The entire discipline reduces to a few lines: model the axis as m\ddot{x} + c\dot{x} + kx = F(t); compute the impulse pair A_1 = 1/(1+K), A_2 = K/(1+K) spaced \Delta T = \pi/\omega_d apart; trade robustness against corner smoothing using the shaper table; and remember that the real limit of a shaped machine is no longer the vibration it cancels but the corner radius it leaves behind — which is why the industry's speed race has been, underneath everything, a stiffness race. Measure the resonance, pick the shortest shaper that holds, keep the corner velocity honest, and a machine that once rang at 60 mm/s will hold its corners at 300 — not because anyone built it differently, but because someone finally let the command cancel its own echo.

More FabFlow blog posts