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. Thus, I don't understand your answer. Could you explain in a more details what I need to do ?
Thanks, Alex 2018-05-29 12:04 GMT+03:00 robert bristow-johnson <[email protected]> : > > 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 [email protected] > > "Imagination is more important than knowledge." > > > > > > -------- Original message -------- > From: Alex Dashevski <[email protected]> > Date: 5/28/2018 10:22 PM (GMT-08:00) > To: robert bristow-johnson <[email protected]>, > [email protected] > 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 <[email protected] > >: > >> >> >> ---------------------------- Original Message ---------------------------- >> Subject: Re: [music-dsp] WSOLA >> From: "Alex Dashevski" <[email protected]> >> Date: Sun, May 27, 2018 2:56 pm >> To: [email protected] >> [email protected] >> ------------------------------------------------------------ >> -------------- >> >> > 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 [email protected] >> >> "Imagination is more important than knowledge." >> >> >> >> >> >> >> >> >> _______________________________________________ >> dupswapdrop: music-dsp mailing list >> [email protected] >> https://lists.columbia.edu/mailman/listinfo/music-dsp >> > > > _______________________________________________ > dupswapdrop: music-dsp mailing list > [email protected] > https://lists.columbia.edu/mailman/listinfo/music-dsp >
_______________________________________________ dupswapdrop: music-dsp mailing list [email protected] https://lists.columbia.edu/mailman/listinfo/music-dsp
