3 ms·
I worked on this for a while [1], it was quite satisfying to combine electronics, SW and music in single hobby project. My looper had sort of git model with st
by jmiskovic 6y ago
I worked on this for a while [1], it was quite satisfying to combine electronics, SW and music in single hobby project.
My looper had sort of git model with staging area and committed area. Both staging and committed loops were mixed down to output. You could re-record over staging area as many times as you wanted until you were satisfied, then you could mix it down to commited loop. It's like stack but only top-most loop is changeable. That model provided infinite loop overdubs, ability to undo mistake, and used only x2 memory.
Regarding your delay effect, I was quite fascinated by how analog delay pedals allowed live-changing of loop length and the resulting effect it would produce [2]. I researched into the bucket brigade IC, quite interesting stuff. I think in digital you'd have all kinds of nasty glitches if you tried to do it with simple pointer modifications.
[1] https://github.com/jmiskovic/DSPedal/ https://github.com/jmiskovic/DSPedal/
[2] https://www.youtube.com/watch?v=xJPde-C28iU https://www.youtube.com/watch?v=xJPde-C28iU
- ericwood 6y agoI love the idea of a "staging area"! That's a very smart and maps 1:1 with the behavior on most loopers I've used. Anything else would require nearly unbounded memory, and memory is easily the most expensive component of any looper. The repitching effect happens because the output from the ring buffer is effectively being resampled. Implementing this is a little funky, but with some clever tricks in how the ring buffer is used and some form of interpolation, you can get essentially the same effect. Here's my implementation, which uses Hermite interpolation: https://github.com/eric-wood/delay/blob/main/src/delay.rs https://github.com/eric-wood/delay/blob/main/src/delay.rs