03-30-2007 01:54 PM
Kevin you are 100% correct about the first 2 points....
about If the 256-sample chunk evaluates as voiced, then an evaluation of period length and a compression/expansion factor determines how to sub-divide and merge those samples. Whatever is done, the result will still be a 256-sample output, at least for the case of pitch-shifting alone.
The compression/expansion factor does not play any role at the sub-division of the chunk right now. The sub-division has only to do with what size the period is in that chunk and yes the result would still be 256 (or very close) at the sub-division. (There is a small remainder at the end of each chunk after been sub-divided which is what i am trying to correct right now)
compression/expansion comes into play later on when we try to merge the sub-chunks with the windowing.
About Milq's code, some vi's changed in Labview 8.2 from my version and i have a hard time to rebuild it (i dont know exactly what result should i expect to be sure i did it 100% correct)
03-30-2007 02:30 PM
Honing in ever closer...
The compression/expansion factor does not play any role at the sub-division of the chunk right now. The sub-division has only to do with what size the period is in that chunk
Understood. Sub-division size (and thus also the # of sub-divisions) is determined only by the "period" in that chunk.
and yes the result would still be 256 (or very close) at the sub-division. (There is a small remainder at the end of each chunk after been sub-divided which is what i am trying to correct right now)
But the desired final end result will be 256 samples, right? If the calculated period doesn't divide evenly into the 256 samples (which will probably be very typical), I don't see any real problems with trimming or padding a few samples either way. You just tell me the # of samples you'd like *ideally*, even if that # is something like 31.4
compression/expansion comes into play later on when we try to merge the sub-chunks with the windowing.
Understood. First either delete or duplicate sub-chunks, then use something like windowing to perform the cross-fade where they overlap. At the end of all this windowing / merging stuff, the final result will be 256 samples.
About Milq's code, some vi's changed in Labview 8.2 from my version and i have a hard time to rebuild it (i dont know exactly what result should i expect to be sure i did it 100% correct)
Yeah, a bunch of the icons changed for built-in functions. Please do as much as you can, and highlight (arrows, comments, circles, whatever) the regions where you aren't sure you translated right. That'll give me a great head start!
-Kevin P.
03-30-2007 03:52 PM
03-30-2007 05:45 PM
03-31-2007 01:55 PM
04-01-2007 07:19 AM
A. Data size is back to 97 array elements by 256 data samples per array element. This only spans 1/2 the samples in 'hijacked.wav'.3. I think the FFT stuff is needed by your algorithm to determine the fundamental freq in each 512-sample chunk, which in turn is used to break 512-sample chunks into an appropriate # of sub-chunks.
B. The label "Hanning{X}" suggests that you have already applied a Hanning window - which I did specifically did *NOT* want.
C. When I graphed the data, it appears to be freq domain rather than time domain. This might explain why you applied a Hanning window first.
D. I will further guess that the reduction of chunk size from 512 to 256 is due to a single-sided FFT being applied.
E. The fact you're giving me freq domain data when I expected time domain data tells me there's a crucial misunderstanding here. I have been thinking all along that the sub-chunks and cross-fade / merging would be applied on time domain data.
04-01-2007 01:34 PM
04-02-2007 05:45 AM
04-02-2007 07:59 AM
Kevin,
When you get are with this thread, could you please post a "trip report" summarizing this adventure?
Ben
04-02-2007 01:49 PM