path() · line() · asemic() · polygon(fill) · layers
Frequencies
Five signals, five markers, five notation cells. A vertical reading head follows the loudest column.
Core snippet
// One clean signal.
const plot = new GysinPlot({ seed: 40017 });
plot.path([[52, 200], [668, 200]], { stroke: "#171717" }); // one clean signal
plot.draw();
// Five signals; S3 carries the accent ink.
plot.path(signal, {
stroke: accent ? "#b5362b" : "#171717",
strokeWeight: accent ? 2 : 1, alpha: accent ? 0.9 : 0.6, layer: "signal"
});
// Asemic notation follows amplitude.
plot.asemic(x, top, w, h, { loops: 3 + round(amp * 6), layer: "notation" });
// A hatched diamond marks each peak.
plot.polygon(diamond(px, py, r), { fill: "hatch", layer: "markers" });
plot.draw();
Each reading has a reproducible seed, path count and reading-head channel.
New reading or R changes the seeded signals. Download SVG or S exports the current score.