Arrp is a functional language for digital signal processing that:

- Makes it easy to turn mathematical equations into code.
- Supports multi-dimensional signals and signals with different rates.
- Enables powerful abstractions like polymorphic and higher-order functions.
- Translates into optimized C++ and executes very efficiently.

Write code like you write the math - using the same equations

y[0] = 0; y[n] = b*x[n] - a*y[n-1];

Work with signals at different rates

y[n] = x[n*hop]

Work with multi-dimensional streams

y[n,k] = x[n+k] * w[k]

Do math with entire signals

x[n] = n; y = sin(x/100*2*pi) * 0.5;

Define generic functions with other functions as parameters

apply_to_pairs(x, f) = y where y[t] = f(x[t], x[t+1]); mean(a, b) = (a + b)/2; output = apply_to_pairs(input, mean);