Discrete Fourier style transform with non-sinusoidal/arbitrary waveform components
Any complete orthogonal set of functions can be used to represent any discrete function—just like trigonometric functions can be used to represent any continuous function in Fourier analysis. You can use &quot;triangular, rectangular or other waveforms&quot;, only mind those represent an orthogonal set. There is also a &quot;wavelet transform&quot;, see Wikipedia. For transforms using Walsh functions, the fast implementations exist: Fast Walsh-Hadamard transform.
For visualization of the concept, see images in Wolfram MathWorld pages:

downloaded from https://mathworld.wolfram.com/WalshFunction.html