You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
It is possible to call 'retrieve' with a small buffer until all available are consumed?
I'm on trying to integrate RB into MWEngine (an android DSP lib) and it use fixed buffer architecture which are called in a timely manner. The class in which it interact is 'SampleEvent' which setup sample parameters (start point, end point, loopin, etc) and playback from a method 'mixBuffer(outputBuffer)' which should fill outputBuffer. This method is called from aaudio on android.
I've been able to construct a complicated setup involving circular buffer to collect the retrieved sample and copy to outputBuffer but on more extreme settings of timeRatio and pitchScale, the amount of available become huge and I have to set unreasonably large circular buffer (32k). So I was wondering if I could instead use smaller buffer (size of outputBuffer ~1024) and call retrieve repeatedly until all available have been consumed. I tried this approach and up to now it did not work although I cant tell if its because I messed up my logic or it is simply because 'retreive' cannot be called more than once.
This is a very simplified overview of the code but if needed, I made a 'mock' of this setup on Ubuntu dealing only with this class and RB (and SRC too) that I did not upload on github yet. Right now, with the circular buffer setup, if timeRatio and pitchScale are in the range of 0.25 to 4.0, it work very well but is very expensive with mutliple buffers layers. In more extreme case with pitch 0.0125 and time 16.0 it still work but I begin to get buffer underruns at pitch over 8.0.
Thanks for your wonderful library, I never heard a stretcher that sound as good as this.
Syvain Carette
The text was updated successfully, but these errors were encountered:
It is possible to call 'retrieve' with a small buffer until all available are consumed?
I'm on trying to integrate RB into MWEngine (an android DSP lib) and it use fixed buffer architecture which are called in a timely manner. The class in which it interact is 'SampleEvent' which setup sample parameters (start point, end point, loopin, etc) and playback from a method 'mixBuffer(outputBuffer)' which should fill outputBuffer. This method is called from aaudio on android.
I've been able to construct a complicated setup involving circular buffer to collect the retrieved sample and copy to outputBuffer but on more extreme settings of timeRatio and pitchScale, the amount of available become huge and I have to set unreasonably large circular buffer (32k). So I was wondering if I could instead use smaller buffer (size of outputBuffer ~1024) and call retrieve repeatedly until all available have been consumed. I tried this approach and up to now it did not work although I cant tell if its because I messed up my logic or it is simply because 'retreive' cannot be called more than once.
This is a very simplified overview of the code but if needed, I made a 'mock' of this setup on Ubuntu dealing only with this class and RB (and SRC too) that I did not upload on github yet. Right now, with the circular buffer setup, if timeRatio and pitchScale are in the range of 0.25 to 4.0, it work very well but is very expensive with mutliple buffers layers. In more extreme case with pitch 0.0125 and time 16.0 it still work but I begin to get buffer underruns at pitch over 8.0.
Thanks for your wonderful library, I never heard a stretcher that sound as good as this.
Syvain Carette
The text was updated successfully, but these errors were encountered: