Post Go back to editing

Looking for Buffering & Time Stretching solutions.

Category: Software


One of my customers wants to implement the following functionality.

1. Digital audio input must be capable of buffering for up to 8 seconds.
Since all audio inputs are 4ch (16bit & 48kHz), the total time required for buffering is 32 seconds. (Use of external RAM is also being considered)
*1ch is mono.
2. The Time Stretching function is required to speed up the playback speed of the buffered audio signal to 1.0~3.0 times.

Does SigmaDSP have a solution that can implement the above function?

Thank you

  • Hello Andrew,

    This is actually not a trivial problem to solve for a streaming type of processor. First of all, it would have to capture the input, then play it back on some sort of trigger. This is true for any DSP implementation because there is no way to play back something that has not happened yet! Changing the pitch is a different problem but you are asking for time compression to play back an 8 second audio clip in 1/3rd the time so the entire sound clip must be captured in memory to then play it back faster. 

    32 seconds of 48kHz audio is a lot of memory. Since it is only 16 bits we could pack two samples into one 32 bit word and use half the memory but it still ends up being a lot and I do not think we can address that much external RAM. 

    Then there is the issue of figuring out how many sample to skip. I am guessing that the functionality will not be an integer multiple, like 1x,2x,3x. but it will be 1.7x etc. So it is more than just dropping samples but it will be to average and resample the audio. All of this is not trivial and will take a lot of development time to work out the details. I am thinking a SigmaDSP will not be the easiest way to do this. A SHARC processor or a HiFi core would be better suited since they are all block based processors to start with and then custom C programs can be written for this. 

    Once creative solution might be to use a variable sample rate part like a HiFi core to simply vary the sampling rate of the file playback. Then send that audio with the clocks into the serial port of the SigmaDSP and route it to the sample rate converter and it would handle all the resampling and antialiasing filters saving on software. This might help to make this problem easier but I would need to see the entire system plans to see if this is practical at all. 

    I would be thinking of a two processor solution to help simplify some of this. 

    Dave T