License: Custom Licence
The algorithm implements a stereo-in, stereo-out feedback delay network reverberator, which is based on a design by Michael Gerzon and Miller Puckette. It consists of delay lines of various lengths combined through the use of scalars and of feedback around part of the total system. Basic elements in this example are Scalars, Mixers and Delays.
The input is split and sent both directly to the output and also through the reverb algorithm. The split signal is then delayed, and is sent back as feedback. By adjusting the feedback gains and the forward gains within the system, a variety of reverberation sounds can be obtained, ranging from small rooms to large halls.
Hall reverbs are designed to emulate the reverberation effect of large halls whereas room reverberations emulate reverberation of something being recorded in a room. Hall reverbs require larger delays and room reverbs are faster with faster decays of reflections.
The project implementation gets the audio data (one sample LEFT and one sample RIGHT) from CODEC in I2S pin, apply reverb algorithm on audio samples and output the processed audio on to CODEC out I2S pin.
The current implementation is light version of reverb where there is constraint of limited memory of 64KB internal memory. This reverb algorithm is in un-optimized fixed point C code, but improved by block based implementation (compared to previous version). Following are the Memory and MIPs requirements for the above implementation:
Memory Type || Light Weight Reverb
----------------- || ---------------------------
Code Memory || 4.6 KB (4684 bytes)
State memory for Delays || 58 KB (59462bytes)
MIPs || 84
Tools version used – XMOS Development Environment 11.2.0 or later versions.
Steps to run the Audio I/O Reverb demo (XS1-L1 hardware):
• Import all projects from the folder “audio_reverb_l1” in to workspace.
• Clean and build the project “app_aud_reverb_l1”
• Flash application bin, “audio_reverb.xe” from the XMOS command prompt utility.
• Default reverb demo will be running on the target.
• Give the input from IN Audio JACK and Listen from OUT Audio JACK
• To bypass the reverb from the audio press the push button A.
• To apply the reverb effect, then press the push button B.
-> Actual version of reverb implementation requires memories as mentioned in the below table. We have two methods of implementations of Reverb. In this example layout is running at 64-BlockSize and all memories are in bytes
Memory Type || Full version Reverb || Reverb Tank
------------------ || -------------------------- || ------------------
Code Memory || 4.6 KB (4684 bytes) || 5.5 KB (5632 bytes)
I/O Buffers + Scratch buffers || 5 KB (5120 bytes) || 4.9 KB (5056 bytes)
State memory for Delays || 94.8 KB (97096 bytes) || 65.7 KB (67304 bytes)
-> Optimize the code on XMOS core
The provided project can be used for evaluation and demos to the targeted customers.
1. The author reserves all rights not expressly granted.
2. You may not use this library in any products.
3. You may not decompile or reverse engineer the binary file.
For any other usage and the detailed license contact the author.
XCore Project reviews, ideas, videos and proposals.
2 posts • Page 1 of 1