From bd54c8003a9287af513dbad3243c5f2b9e8c2dd8 Mon Sep 17 00:00:00 2001 From: Tijmen Zwaan Date: Thu, 13 Aug 2026 01:00:33 +0200 Subject: [PATCH] Introduce isquare and isquare2 for signal parity --- packages/core/signal.mjs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/packages/core/signal.mjs b/packages/core/signal.mjs index 51e8b5a4e..b86f16e8a 100644 --- a/packages/core/signal.mjs +++ b/packages/core/signal.mjs @@ -124,6 +124,22 @@ export const square = signal((t) => Math.floor(_mod(t * 2, 2))); */ export const square2 = square.toBipolar(); +/** + * A square signal between 1 and 0 (like `square` but flipped). + * + * @return {Pattern} + * @tags generators + */ +export const isquare = signal((t) => 1 - Math.floor(_mod(t * 2, 2))); + +/** + * A square signal between 1 and -1 (like `isquare`, but bipolar). + * + * @return {Pattern} + * @tags generators + */ +export const isquare2 = isquare.toBipolar(); + /** * A triangle signal between 0 and 1. *