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);