You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
GridStripMotion (algorithmic.typography.core) — new row/column strip displacement engine. Shifts every row and/or column by a wave function (SINE, SQUARE, TRIANGLE, SAWTOOTH, TANGENT, PERLIN) so the whole grid undulates like a banner. Independent axis control: setAxis(ROW | COLUMN | BOTH), setAmplitude(0–1), setPhaseStep(), per-axis speed (setRowSpeed, setColumnSpeed), and per-axis wave type. Fully wired into Configuration, AlgorithmicTypography.drawGrid() / drawGridAt(), JSON load/save round-trip, and the Builder.
PerlinVertexMotion (algorithmic.typography.core) — utility class for per-vertex Perlin noise deformation. deform(PVector[], frameCount) returns a new non-destructive vertex array perturbed by independent X/Y noise fields; deformContours(PVector[][], frameCount) batches across all sub-contours. Configurable amplitude, spatialScale, timeSpeed, and seed.
MagneticMotion named intensity presets — GENTLE, MODERATE, STRONG, SNAPPING constants with setPreset(int) for one-call configuration of strength, falloff, smoothing, and radius. New setStrengthNormalized(float t) overload maps a designer-friendly 0–1 value to the physical 400–4000 strength range.
RippleMotion named intensity presets — GENTLE, MODERATE, STRONG constants with setPreset(int). New setExpandSpeedNormalized(float t) overload maps 0–1 to the 60–400 px/s physical range.
AudioBridge semantic intensity mapping — SUBTLE, EXPRESSIVE, FULL constants plus semantic overloads mapBassTo(setter, int), mapMidTo(setter, int), mapTrebleTo(setter, int), mapOverallTo(setter, int) that apply pre-tuned standard ranges per band and intensity level, eliminating manual min/max lookup.
GridStripWave example — interactive sketch demonstrating all three GridStripMotion axis modes (ROW / COLUMN / BOTH), live amplitude and phase-step adjustment via keyboard, and wave-type cycling. Loads data/config.json for base typography parameters.
Changed
Configuration gains gridStripMotion field with getGridStripMotion(), setGridStripMotion(GridStripMotion), JSON round-trip in loadFromJSON()/toJSON(), copy(), and Builder.gridStripMotion().
AlgorithmicTypography gains setGridStripMotion() / getGridStripMotion() programmatic API; strip offset is applied beforeCellMotion inside both drawGrid() and drawGridAt(); loadConfiguration() now calls buildGridStripMotionFromJSON().