Teensy based DIY Eurorack module - AudioFreeze

Status
Not open for further replies.

unicornpower

Well-known member
Thought I'd share this video I've just put together of my latest DIY project. It's a Teensy based Eurorack module, making use of the Audio Shield. It essentially samples small sections of live audio and lets you manipulate them.


See www.cutlasses.co.uk for build details and links to sourcecode
 
The code for this is handy if you want to see how to add your own effect in the audio library, thanks!
 
a few questions:
what is the m_ before all of the variable names in the library for? what does it mean/stand for?
what is impl mean in the names such as "set_bit_depth_impl" ?

also, are your current settings using all of the internal memory available?

I think I may modify this to work with external memory, I am hoping to find something that will work that is larger than the current expansion memory options for the mem delay object.
 
a few questions:
what is the m_ before all of the variable names in the library for? what does it mean/stand for?
what is impl mean in the names such as "set_bit_depth_impl" ?

also, are your current settings using all of the internal memory available?

I think I may modify this to work with external memory, I am hoping to find something that will work that is larger than the current expansion memory options for the mem delay object.

m_ just means it's a member variable. _impl means implementation, it just splits the implementation of the function away from the calling function. This is done in this case because I was experimenting with where to calculate those values such as length and speed. I needed to set the desired values in the main loop (where the physical pots are read), but as they do a bunch of calculations, the audio interrupt could be generated during these functions, causing the code to jump before the calculations have finished (leaving the values in an unknown state). Rather than disabling interrupts as this point, I just store the desired values and then calculate the actual values inside the interrupt function. Another solution would be to sample the pots at a set rate, and then disable interrupts when calling the set_xx functions, in this case the _impl functions would not be necessary, the code will just live in the set_xx function.

I'd be interested in seeing how you get on with using external memory. I want to experiment with using the SD card to buffer the audio (with a RAM buffer in between), not sure how well this will work yet.
 
Another solution would be to sample the pots at a set rate, and then disable interrupts when calling the set_xx functions, in this case the _impl functions would not be necessary, the code will just live in the set_xx function.

I'd be interested in seeing how you get on with using external memory. I want to experiment with using the SD card to buffer the audio (with a RAM buffer in between), not sure how well this will work yet.

I think for the impl, it might be more user friendly to boil things down to set.

Also I had great Results in my tests using only the built in buffer and SD card for recording, the only issue was I had to generate a whole reversed version of the file to have smooth reverse playback, so I am thinking a clever mix of SD for long wave sampling and some regional buffering for the window playback.

I'm still looking through all of your code, my plan is to hopefully adapt it to a more open ended grain sampler/lerp delay object that can be used in many different ways. As soon as I make some headway I will post here as I go.
 
I think for the impl, it might be more user friendly to boil things down to set.

Also I had great Results in my tests using only the built in buffer and SD card for recording, the only issue was I had to generate a whole reversed version of the file to have smooth reverse playback, so I am thinking a clever mix of SD for long wave sampling and some regional buffering for the window playback.

I'm still looking through all of your code, my plan is to hopefully adapt it to a more open ended grain sampler/lerp delay object that can be used in many different ways. As soon as I make some headway I will post here as I go.

Great! Can't wait to see what you come up with.
 
I am reading your code to get an idea of how to do things, but writing my own from scratch only using it as a reference. I had this interesting idea to make a multifunction DSP buffer object that will be insanely flexible with methods that allow configuring it as a variable delay with or without lerp, multi taps, dub in amount, feedback amount/freeze, allpass/comb, nesting of all pass filters etc... based on my last year of heady DSP study. I will likely make it available to the library as soon as its good and working, but since I am working on a commercial product using it, it could be a little while to develop and test that it is optimized, full featured and flexible, and "bug free" hehehe :p

Thank you for this great reference though, I find it easier to follow than some of the other objects and that is enabling me to get some good headway tonight!

Cheers! and let me know if you are open to doing any freelance work, I have so many product designs and have always been actively trying to find some good DSP freelancers :D

You can hit me up at contact at macromachines.net (I'm updating the website as part of the omnimod final release this weekend at knob con in Chicago!)
 
Glad it was useful! I'm looking forward to the new Teensy (3.5 and 3.6) as they have considerably more memory, and audio built in, so no need to use the audio shield.
 
Status
Not open for further replies.
Back
Top