I don't know WSOLA, so maybe this is irrelevant... however, this might be a good place to start : https://www.researchgate.net/figure/Illustration-of-the-Waveform-Similarity-Overlap-Add-WSOLA-algorithm-73_fig4_229087902
there 's a 17 page pdf, article with figures and they seem to have developped a puredata external, so probably free and opensource... have a good day, Raphaël 2018-06-02 8:28 GMT+02:00 Alex Dashevski <alexd...@gmail.com>: > Hi, > > I have audio echo application. > I want to do a signal process on this audio on *RealTime.* > I understood from previous answer that I can implement WSOLA with resample > or with pitch shifting. > Where can I find lecture/tutorial about it ? > > Thanks, > Alex > > 2018-05-29 20:45 GMT+03:00 robert bristow-johnson < > r...@audioimagination.com>: > >> >> >> ---------------------------- Original Message ---------------------------- >> Subject: Re: [music-dsp] WSOLA >> From: "Alex Dashevski" <alexd...@gmail.com> >> Date: Tue, May 29, 2018 5:22 am >> To: music-dsp@music.columbia.edu >> ------------------------------------------------------------ >> -------------- >> >> > Hi, >> > >> > >> From what I understood, WSOLA is algorithm that should work on Time >> domain. >> > Pitch shifting is a technique that should work on Frequency domain. >> >> that's mistaken. most pitch shifting algorithms in hardware (like the >> Eventide, the Lexicon PCM-90, Digitech) are time-domain algorithms. >> >> >> > Thus, I don't understand your answer. >> > Could you explain in a more details what I need to do ? >> >> in my answer of May 27, i did explain WSOLA to the best of my ability. >> >> to do something with your Android, first you need to be able to pass >> samples from the input buffer to the output buffer. then you need to >> figure out the standard way of creating an app where you can allocate >> memory in your app *and* get access to those input and output buffers built >> in (i believe those are the 240 sample buffers you mention). this is *not* >> a small project. and you're not even at square 2 if you cannot pass audio >> through an app of your own. you gotta be able to do that. i have never >> programmed either an Android or an iPhone. >> >> sorry, at this point this is the best advise i can yell from the >> helicopter (while you're down in the fray). >> >> > >> > Thanks, >> >> for what it's worth... >> >> >> >> -- >> >> r b-j r...@audioimagination.com >> >> "Imagination is more important than knowledge." >> >> > >> > >> > 2018-05-29 12:04 GMT+03:00 robert bristow-johnson < >> r...@audioimagination.com> >> > : >> > >> >> >> >> Do you mean as a time-scaler or as a pitch-shifter? >> >> >> >> WSOLA can and does work real-time in a pitch-shifter. But a time-scaler >> >> can't be real-time whether it's WSOLA or a phase-vocoder. Because a >> >> real-time process requires the output to process the input indefinitely >> >> without the input and output pointers colliding or diverting away from >> each >> >> other indefinitely. >> >> >> >> >> >> -- >> >> r b-j r...@audioimagination.com >> >> >> >> "Imagination is more important than knowledge." >> >> >> >> >> >> >> >> >> >> >> >> -------- Original message -------- >> >> >> From: Alex Dashevski <alexd...@gmail.com> >> >> Date: 5/28/2018 10:22 PM (GMT-08:00) >> >> To: robert bristow-johnson <r...@audioimagination.com>, >> >> music-dsp@music.columbia.edu >> >> Subject: Re: [music-dsp] WSOLA >> >> >> >> Hi, >> >> >> >> I mean WSOLA on RealTime. How can I proof to my instructor that it's >> not >> >> possible ? >> >> >> >> Why do I need to do resampling ? Android sample and resample in the >> same >> >> frequency(in my case,48Khz). Maybe, do you mean to do a processing with >> >> 8Khz(subsample) ? >> >> >> >> I also want to achieve the high performance and minimum latency. >> >> >> >> How can I proof to my instructor that correct way to implement is pitch >> >> shifting and not WSOLA on* RealTime*? >> >> >> >> >> Thanks, >> >> Alex >> >> >> >> >> >> 2018-05-29 4:19 GMT+03:00 robert bristow-johnson < >> r...@audioimagination.com >> >> >: >> >> >> >>> >> >>> >> >>> ---------------------------- Original Message >> ---------------------------- >> >>> Subject: Re: [music-dsp] WSOLA >> >>> >> From: "Alex Dashevski" <alexd...@gmail.com> >> >>> Date: Sun, May 27, 2018 2:56 pm >> >>> To: philb...@mobileer.com >> >>> music-dsp@music.columbia.edu >> >>> ------------------------------------------------------------ >> >>> -------------- >> >>> >> >>> > Hi, >> >>> > >> >>> > I don't understand your answer. >> >>> > I have already audio echo application on Android. Buffer size and >> >>> Frequency >> >>> > sample infuence on latency. >> >>> > Could you explain me how implement WSOLA on Real-time ? It is a bit >> more >> >>> > difficult . >> >>> > >> >>> >> >>> yes WSOLA is a little difficult, but less difficult than a >> phase-vocoder. >> >>> >> >>> >> >>> >> >>> now, when you say "WSOLA" and "Real-time" in the same breath, do you >> mean >> >>> a pitch shifter? not a time-scaler, right? because pitch shifting can >> be >> >>> done real-time, but time-scaling has to be done with an input buffer >> (with >> >>> some number of samples) getting made into a longer (more samples) or >> >>> shorter (fewer samples) buffer with the same sample rate. that can't >> be >> >>> done on an operation the runs on indefinitely, even with a long >> throughput >> >>> delay. eventually the input and output pointers will collide. >> >>> >> >>> but you can combine time-scaling and resampling (the latter is >> >>> mathematically well defined) to get pitch shifting that can run on >> >>> forever. one operation increases the number of samples and the other >> >>> reduces the number of samples exactly in reciprocal proportion. so the >> >>> number of samples coming out every buffer of time is the same as the >> number >> >>> going in. >> >>> >> >>> now the "S" in acronym stands for "Similarity", so you have to >> position >> >>> the windows in the input waveform to be similar to the waveform in the >> >>> output. the waveform in the first-half of the input window should >> match >> >>> the similarity to the waveform in the last-half of the output window >> of the >> >>> previous frame. normally the frame hop is exactly half of the window >> >>> width. and the window shape should be complementary like a Hann >> window. >> >>> >> >>> i believe that 240 sample buffer in the Android is an input/output >> sample >> >>> buffer for the media I/O. you can't really do anything with that >> buffer >> >>> except pull in input samples and push out output samples. you will >> have to >> >>> (using whatever programming environment one uses to make Android apps) >> >>> allocate memory and create your own buffers to hold about 100 ms of >> sound. >> >>> in that buffer, you will use a technique called AMDF, ASDF, or >> >>> autocorrelation to measure waveform similarity. your input frame hop >> >>> distance (which has both integer and fractional parts) is the output >> frame >> >>> hop size times the reciprocal of the time-stretch factor. so, if >> you're >> >>> time-stretching (instead of time-compressing), your input frame will >> >>> advance more slowly than your output frame, that increases the number >> of >> >>> samples. but in that output buffer, you will resample (interpolate) >> with a >> >>> step-size that is time-stretch factor (do this only for output >> samples that >> >>> have already been overlapped and added) thus reducing the final output >> >>> number of samples back to the original number. you will allow some >> jitter >> >>> on the input window that is informed by the result of the waveform >> >>> similarity analysis. >> >>> >> >>> that's how you do WSOLA, as best as i understand it. >> >>> >> >>> -- >> >>> >> >>> r b-j r...@audioimagination.com >> >>> >> >>> "Imagination is more important than knowledge." >> >>> >> >>> >> >>> >> >>> >> >>> >> >>> >> >>> >> >>> >> >>> _______________________________________________ >> >>> dupswapdrop: music-dsp mailing list >> >>> music-dsp@music.columbia.edu >> >>> https://lists.columbia.edu/mailman/listinfo/music-dsp >> >>> >> >> >> >> >> >> _______________________________________________ >> >> dupswapdrop: music-dsp mailing list >> >> music-dsp@music.columbia.edu >> >> https://lists.columbia.edu/mailman/listinfo/music-dsp >> >> >> > _______________________________________________ >> > dupswapdrop: music-dsp mailing list >> > music-dsp@music.columbia.edu >> > https://lists.columbia.edu/mailman/listinfo/music-dsp >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> -- >> >> r b-j r...@audioimagination.com >> >> "Imagination is more important than knowledge." >> >> _______________________________________________ >> dupswapdrop: music-dsp mailing list >> music-dsp@music.columbia.edu >> https://lists.columbia.edu/mailman/listinfo/music-dsp >> >> > > _______________________________________________ > dupswapdrop: music-dsp mailing list > music-dsp@music.columbia.edu > https://lists.columbia.edu/mailman/listinfo/music-dsp > -- Raphaël Ilias ___________________________________ * phae.fr <http://phae.fr>* 17 places des Halles - Ingrandes 49123 Ingrandes Le Fresne s/ Loire phae.il...@gmail.com / +33 (0) 6 04 45 79 78 ___________
_______________________________________________ dupswapdrop: music-dsp mailing list music-dsp@music.columbia.edu https://lists.columbia.edu/mailman/listinfo/music-dsp