DSPRelated.com
Forums

Phase Vocoder vs. TDHS for "Time Stretching / Expanding / Compressing"

Started by Unknown December 23, 2004
In general, wondering which is generally easier to implement, or if
they  are about equal. This way can focus studies:)


****For info on why this is posted::******
I am NOT a pro DSP person - have been into audio/music for awhile, and
am still green to programming.(JAVA)

For my 1st program to really "use" - plan to integrate a "Time
Shifter/Exander/Compressor" (whatever term is proper)

Go here for examples:
http://www.dspdimension.com/html/timepitch.html#audiocomp

If you have WinXP and  you have Windows Media Player 9+ then you can
see an example of such a
simple component
1)Go to the VIEW menu
2)Go to ENHANCEMENTS
3)Choose Play Speed Settings
(They used a poor algorithm in comparison to SMB it seems/could be
wrong/but their's would be fine for me.)

To clarify,
just looking to develop a simple component to integrate in a Java
program that can adjust the PLAYBACK SPEED WIHOUT affecting the PITCH.

****Previously I had posted and for some moronic reason(OE) I kept
stating "pitch shifter"  - I apologize; great resources were received
in any case.

Additionaly, purchased the book by Craig Lindley but the source does
not do what it was designed to do(unless it is because of some
conflict).

Thank you.

time-domain is much easier to code.  it requires some sort of period
detection (or waveform similarity measurement, usually some kind of
autocorrelation or AMDF is used) but no need to FFT and iFFT.  it might not
sound as good as frequency domain time-scaling for rich, full bandwidth
signals (whole orchestra), but might sound better than frequency-domain for
monophonic sounds (single voice or single tonal instrument).  there are
tricks to make time-domain sound better or frequency-domain run faster and
those tricks are often considered trade secrets by the people that have
them.


-- 

r b-j                  rbj@audioimagination.com

"Imagination is more important than knowledge."


in article 1103853649.027927.243310@f14g2000cwb.googlegroups.com,
javasojava@yahoo.com at javasojava@yahoo.com wrote on 12/23/2004 21:00:

> In general, wondering which is generally easier to implement, or if > they are about equal. This way can focus studies:) >
...
Hey there, thanks for replying (Saw it way back when....just was
expecting more feedback and did not want to flood the post with Thank
you's)  :)

But....didn't want to wait too much longer to say THANK YOU! for
replying.

I do hope more reply, just wanted to say THANK YOU for taking the time
to reply, it truly does help.


robert bristow-johnson wrote:
> time-domain is much easier to code. it requires some sort of period > detection (or waveform similarity measurement, usually some kind of > autocorrelation or AMDF is used) but no need to FFT and iFFT. it
might not
> sound as good as frequency domain time-scaling for rich, full
bandwidth
> signals (whole orchestra), but might sound better than
frequency-domain for
> monophonic sounds (single voice or single tonal instrument). there
are
> tricks to make time-domain sound better or frequency-domain run
faster and
> those tricks are often considered trade secrets by the people that
have
> them. > > > -- > > r b-j rbj@audioimagination.com > > "Imagination is more important than knowledge." > > > in article 1103853649.027927.243310@f14g2000cwb.googlegroups.com, > javasojava@yahoo.com at javasojava@yahoo.com wrote on 12/23/2004
21:00:
> > > In general, wondering which is generally easier to implement, or if > > they are about equal. This way can focus studies:) > > > ...
in article 1105547766.031502.275390@f14g2000cwb.googlegroups.com,
javasojava@yahoo.com at javasojava@yahoo.com wrote on 01/12/2005 11:36:

> I do hope more reply, just wanted to say THANK YOU for taking the time > to reply, it truly does help.
i'm not inclined to "simply" spell out whatever algorithm. i can answer most questions that don't take me into any proprietary territory. did you take a look at http://www.dspdimension.com/ ? are you reading other lit? so you understand how to make a copy of your sound, offset the copy relative to the original, then crossfade from the original to the copy? that's the basic idea. AMDF or autocorrelation will help you in selecting a good offset amount. -- r b-j rbj@audioimagination.com "Imagination is more important than knowledge."
Oh, I understand that....the only reason I hope more respond is just
like search results/tutorials ...it's always(for me)beneficial when
more than one thing presents itself.

I do appreciate your time, it DOES help....txt posts can be weird and
just don't want you to think I'm ungrateful.

Yes, that is basically my #1 site for this topic.
I am still learning java, and am concentrating on progressing there,
while basically just going to read up more on DSP at least once per
week.

Once my Java catches up, will start trying these things out.
Bought a book made for Java Audio that says it does something like
this... but it appears NOT to.. (bad algorithm)

Since the community is (relatively, compared to java) for learning...I
thought it'd be best to keep asking questions early, that way when my
programming skills catch up(not too much longer)...I can implement
things with theory, not needing a step by step.(hopefully)

The program for Time Stretching in this book (1999) was said to use the
following method to slow playback speed by 1/2, but keep the same pitch
- quoted, "Double the frequency of the incoming audio, and then cut the
playback rate in half by doubling the number of samples."

Problem is the program itself did not do what it said it could do....it
recorded audio - but did not do what it said.

Not currently reading other literature, because it seems I can
comprehend the (most fundamental)methods to do this...just can't
implement them yet w/out the understanding of the Java language
more...(could be wrong) will still probably pick up a book now though..


Thank you again!

robert bristow-johnson wrote:
> in article 1105547766.031502.275390@f14g2000cwb.googlegroups.com, > javasojava@yahoo.com at javasojava@yahoo.com wrote on 01/12/2005
11:36:
> > > I do hope more reply, just wanted to say THANK YOU for taking the
time
> > to reply, it truly does help. > > i'm not inclined to "simply" spell out whatever algorithm. i can
answer
> most questions that don't take me into any proprietary territory.
did you
> take a look at http://www.dspdimension.com/ ? are you reading other
lit?
> > so you understand how to make a copy of your sound, offset the copy
relative
> to the original, then crossfade from the original to the copy?
that's the
> basic idea. AMDF or autocorrelation will help you in selecting a
good
> offset amount. > > -- > > r b-j rbj@audioimagination.com > > "Imagination is more important than knowledge."
in article 1105638851.981506.161180@c13g2000cwb.googlegroups.com,
javasojava@yahoo.com at javasojava@yahoo.com wrote on 01/13/2005 12:54:

> The program for Time Stretching in this book (1999) was said to use the > following method to slow playback speed by 1/2, but keep the same pitch > - quoted, "Double the frequency of the incoming audio, and then cut the > playback rate in half by doubling the number of samples."
that's the "pitch-shift first, slow it down second" approach. the problem is how one does the pitch-shifting? normally, the way i think about it is that pitch-shifting is a combination of time-scaling and resampling (the speed changing). so then you're in a circular problem. i would suggest staying with time-scaling without referring to pitch-shifting until you got yourself a time-scaler. think: translate (shift in time) and splice, translate and splice. that's how you do time-scaling (and conceptually that's how it's done in the frequency domain, except each frequency component is translated independently). -- r b-j rbj@audioimagination.com "Imagination is more important than knowledge."