never thought about that but you might be correct - this would explain why it works so good on so many different kinds of material...000 wrote:Probably. And therefor it is so good: It hides the algorithm selection to the user!
Wanted: Developer for time stretch plug
- KVRAF
- 25042 posts since 12 Jul, 2003 from West Caprazumia
-
- KVRist
- Topic Starter
- 278 posts since 19 Nov, 2002 from Bloomington, Indiana USA
Well, I thought I was quite clear. Hell, I'm sure there's a few out there that understand what I'm asking for quite clearly.
But shall we break it apart some more?..... oh, cmon you know you want to!
Er, ahem..... here goes...
OK. First off, this "imaginary" plugin will be used in live performance. This is why stability and audio quality are the most important considerations.
Let's begin.
I have a loop (a wav file) of musical material. It consists of drums, bass and a synth line. I have already gone to the effort of editing the file so that it loops perfectly. I also know it's original tempo in beats per minute and it's duration in measures.
I open my "imaginary" dynamic looping plugin inside my favorite VST host's sequencer and subsequently load my perfect loop into it. Since there is no intelligent or automatic beat, tempo or duration detection (fine with me!), I have to enter the original tempo and duration data of the loop into the plugin. I also choose a key/note which engages the loop into play mode. (This implies a VST Instrument, yes?)
So now I hook up a sequencer track to the my 'imaginary" plug and simply draw a long note (you know, the one I just assigned to the loop) in the sequencer track.
Now I press 'play' in the sequencer transport and the loop continues to repeat as long as the sequencer is playing the note I have assigned to the plugin.
NOW, are you ready for the important part? OK, then!
The sequencer is now playing/repeating the loop at it's own internal tempo even though it is not the same as the loop's original tempo.
You're probably thinking, "What's so incredible about that?" Well, I'm not done yet!!
WITHOUT STOPPING THE MUSIC, I can now adjust the tempo control in my sequencer and the "imaginary" loop plugin continues to play perfectly synced to the host's internal tempo. I can do this dynamically during a performance for effect or as a seque or transition between songs. No matter how much I shift the tempo during a performance the loop stays in sync. (If you are familiar with electronica you will occasionally hear slowdowns or speedups, typically for beat matching or segues, or just to plain F.S.U.)
I realize that there are some limits to what extreme you could push the time stretching in terms of audio artifacts. However, sometimes the glitchiness or artifacts can be in perfect context in a dance/electronica setting.
Just FYI, my host of choice is Energy XT. Man, talk about a superhuman developer! Jorgen is da' man.
But shall we break it apart some more?..... oh, cmon you know you want to!
Er, ahem..... here goes...
OK. First off, this "imaginary" plugin will be used in live performance. This is why stability and audio quality are the most important considerations.
Let's begin.
I have a loop (a wav file) of musical material. It consists of drums, bass and a synth line. I have already gone to the effort of editing the file so that it loops perfectly. I also know it's original tempo in beats per minute and it's duration in measures.
I open my "imaginary" dynamic looping plugin inside my favorite VST host's sequencer and subsequently load my perfect loop into it. Since there is no intelligent or automatic beat, tempo or duration detection (fine with me!), I have to enter the original tempo and duration data of the loop into the plugin. I also choose a key/note which engages the loop into play mode. (This implies a VST Instrument, yes?)
So now I hook up a sequencer track to the my 'imaginary" plug and simply draw a long note (you know, the one I just assigned to the loop) in the sequencer track.
Now I press 'play' in the sequencer transport and the loop continues to repeat as long as the sequencer is playing the note I have assigned to the plugin.
NOW, are you ready for the important part? OK, then!
The sequencer is now playing/repeating the loop at it's own internal tempo even though it is not the same as the loop's original tempo.
You're probably thinking, "What's so incredible about that?" Well, I'm not done yet!!
WITHOUT STOPPING THE MUSIC, I can now adjust the tempo control in my sequencer and the "imaginary" loop plugin continues to play perfectly synced to the host's internal tempo. I can do this dynamically during a performance for effect or as a seque or transition between songs. No matter how much I shift the tempo during a performance the loop stays in sync. (If you are familiar with electronica you will occasionally hear slowdowns or speedups, typically for beat matching or segues, or just to plain F.S.U.)
I realize that there are some limits to what extreme you could push the time stretching in terms of audio artifacts. However, sometimes the glitchiness or artifacts can be in perfect context in a dance/electronica setting.
Just FYI, my host of choice is Energy XT. Man, talk about a superhuman developer! Jorgen is da' man.
-
- Banned
- 380 posts since 11 Aug, 2005
Really? You will see next, that you was NOT clear at all for some reasons...Exit Zero wrote: Well, I thought I was quite clear. Hell, I'm sure there's a few out there that understand what I'm asking for quite clearly.
But shall we break it apart some more?..... oh, cmon you know you want to!
Er, ahem..... here goes...
That is always a criterium, right? A required one. Nobody really has the intent to do it not that way as much as even possible.Exit Zero wrote:
OK. First off, this "imaginary" plugin will be used in live performance. This is why stability and audio quality are the most important considerations.
Ahhh! Well. That's really new to us. Now you came out with the important part of the information...Exit Zero wrote:
Let's begin.
I have a loop (a wav file) of musical material. It consists of drums, bass and a synth line. I have already gone to the effort of editing the file so that it loops perfectly. I also know it's original tempo in beats per minute and it's duration in measures.
Because here lies the key of "our imaginary" solution finally.
The kind of loop is mixed and polyphonic material then. It is impossible to do a beat slicing here...
It must be a (very) generic timestretcher then for some reasons.
Not necessary. It's quite easy to strech it right on loading, if you merely specify the bars.Exit Zero wrote:
I open my "imaginary" dynamic looping plugin inside my favorite VST host's sequencer and subsequently load my perfect loop into it. Since there is no intelligent or automatic beat, tempo or duration detection (fine with me!), I have to enter the original tempo and duration data of the loop into the plugin. I also choose a key/note which engages the loop into play mode. (This implies a VST Instrument, yes?)
Yes. it would be an instrument then.
Now we are exactly on the point of "my imagination" for such an effect. Just like ACID it does. But with extented ability to change the tempo continuously. Or rising the pitch as an effect without affecting the tempo - performing timestrech and pitch shift quasi in "realtime" ...Exit Zero wrote:
So now I hook up a sequencer track to the my 'imaginary" plug and simply draw a long note (you know, the one I just assigned to the loop) in the sequencer track.
Now I press 'play' in the sequencer transport and the loop continues to repeat as long as the sequencer is playing the note I have assigned to the plugin.
NOW, are you ready for the important part? OK, then!
The sequencer is now playing/repeating the loop at it's own internal tempo even though it is not the same as the loop's original tempo.
You're probably thinking, "What's so incredible about that?" Well, I'm not done yet!!
WITHOUT STOPPING THE MUSIC, I can now adjust the tempo control in my sequencer and the "imaginary" loop plugin continues to play perfectly synced to the host's internal tempo. I can do this dynamically during a performance for effect or as a seque or transition between songs. No matter how much I shift the tempo during a performance the loop stays in sync. (If you are familiar with electronica you will occasionally hear slowdowns or speedups, typically for beat matching or segues, or just to plain F.S.U.)
I realize that there are some limits to what extreme you could push the time stretching in terms of audio artifacts. However, sometimes the glitchiness or artifacts can be in perfect context in a dance/electronica setting.
Simply a combined "time machine" and "pitch machine" sampler.
But it is really not *that* simple to achieve, as you may think (especially that "realtime" part). Otherwise this "effect" or instrument would already exist multiple time and as freeware, right?
So ask him to give you exactly that. Probably he is also able to understand you better without going too much into (the important) details...Exit Zero wrote: Just FYI, my host of choice is Energy XT. Man, talk about a superhuman developer! Jorgen is da' man.
By the way: Kontakt, Intakt, Melodyne plugin and Cronox (and probably many others) are already able to deliver you that result.
.
Last edited by ;-) on Mon Aug 22, 2005 9:39 pm, edited 1 time in total.
-
- KVRist
- 339 posts since 25 Oct, 2004
Ok as I suggested previously - Reflex does this.Exit Zero wrote:Well, I thought I was quite clear. Hell, I'm sure there's a few out there that understand what I'm asking for quite clearly.
But shall we break it apart some more?..... oh, cmon you know you want to!
Er, ahem..... here goes...
OK. First off, this "imaginary" plugin will be used in live performance. This is why stability and audio quality are the most important considerations.
Let's begin.
I have a loop (a wav file) of musical material. It consists of drums, bass and a synth line. I have already gone to the effort of editing the file so that it loops perfectly. I also know it's original tempo in beats per minute and it's duration in measures.
I open my "imaginary" dynamic looping plugin inside my favorite VST host's sequencer and subsequently load my perfect loop into it. Since there is no intelligent or automatic beat, tempo or duration detection (fine with me!), I have to enter the original tempo and duration data of the loop into the plugin. I also choose a key/note which engages the loop into play mode. (This implies a VST Instrument, yes?)
So now I hook up a sequencer track to the my 'imaginary" plug and simply draw a long note (you know, the one I just assigned to the loop) in the sequencer track.
Now I press 'play' in the sequencer transport and the loop continues to repeat as long as the sequencer is playing the note I have assigned to the plugin.
NOW, are you ready for the important part? OK, then!
The sequencer is now playing/repeating the loop at it's own internal tempo even though it is not the same as the loop's original tempo.
You're probably thinking, "What's so incredible about that?" Well, I'm not done yet!!
WITHOUT STOPPING THE MUSIC, I can now adjust the tempo control in my sequencer and the "imaginary" loop plugin continues to play perfectly synced to the host's internal tempo. I can do this dynamically during a performance for effect or as a seque or transition between songs. No matter how much I shift the tempo during a performance the loop stays in sync. (If you are familiar with electronica you will occasionally hear slowdowns or speedups, typically for beat matching or segues, or just to plain F.S.U.)
I realize that there are some limits to what extreme you could push the time stretching in terms of audio artifacts. However, sometimes the glitchiness or artifacts can be in perfect context in a dance/electronica setting.
Just FYI, my host of choice is Energy XT. Man, talk about a superhuman developer! Jorgen is da' man.
The only thing out of this that it doesn't do is continually loop as long as the key is held down. So example your loop is 2 bars, if you have a note for four bars, it will only play the loop one time. In energyXT it is easy to get around this by either just drawing a long note and then ALT+l-click in the sequencer to divide it up into the appropriate bar length or just drawing in the length of your loop in to the XT seq then copy/paste.
To use Reflex this way, just place a note on C1 in the sequencer track assigned to Reflex and off you go. Simple
Download the demo and try it.
BTW, I don't work for them so I have no interest in trying to get you to buy it...just stating that it does most of what you seek.
-
- Banned
- 380 posts since 11 Aug, 2005
OK. It took little more time, but I also didn't really do something over the weekend.
Here are the first results of my "realtimestretcher" RubberWave.
It is really interesting to see, what's possible with the concept of realtime stretching samples in memory.
There are basically two different concepts implemented yet:
1. a time domain algorithm
2. a frequency domain algorithm
Both use a kinda variable length "overlapp and add" method in the time domain. The length of the overlapp is editable to optimize the results. The necessary timestretch-pitch transformation is performed then either in the time domain (methode 1) or the frequency domain (methode 2).
The first example is a drumloop stretched in the time domain, the second one time stretched in the frequency domain. Both are stretched between 50 and 200% (half to double tempo - which is already critical for most time streching algorithms, but wait ...).
http://sharing.dizainer.net/public/rubb ... domain.mp3
http://sharing.dizainer.net/public/rubb ... domain.mp3
Unlike with many other time stretching methods, the used variable length overlapp and add prevents for the very typical stretch-dependant delaying artifakts in our algorithms as much as even possible.
But therefore other problems exist: It is clearly audible, that the frequency domain tends somehow to smearing, while the time domain tends to phasing. This lies particulary in the nature of things, but probably can be improved with further resurch. It is already adjustable with a "quality" parameter in both algorithms ...
Example three and four is based on polyphonic material tweaked to the extreme, three with the time domain algo and four with the frequency algo. The streching is partwise performed between 3 and over 1000% of the original length !!!
(OK, that is not really useful for propper timestretching, but offers very interesting special effect possibilities.)
http://sharing.dizainer.net/public/rubberwave_lofy.mp3
http://sharing.dizainer.net/public/rubb ... remefx.mp3
All tempo changes are made in realtime but there is no parameter smoothing yet. Will be implemented later.
Tweaking the pitch independently is also possible of course but not performed in the examples above to keep the comparsion clear.
Enjoy.
.
Here are the first results of my "realtimestretcher" RubberWave.
It is really interesting to see, what's possible with the concept of realtime stretching samples in memory.
There are basically two different concepts implemented yet:
1. a time domain algorithm
2. a frequency domain algorithm
Both use a kinda variable length "overlapp and add" method in the time domain. The length of the overlapp is editable to optimize the results. The necessary timestretch-pitch transformation is performed then either in the time domain (methode 1) or the frequency domain (methode 2).
The first example is a drumloop stretched in the time domain, the second one time stretched in the frequency domain. Both are stretched between 50 and 200% (half to double tempo - which is already critical for most time streching algorithms, but wait ...).
http://sharing.dizainer.net/public/rubb ... domain.mp3
http://sharing.dizainer.net/public/rubb ... domain.mp3
Unlike with many other time stretching methods, the used variable length overlapp and add prevents for the very typical stretch-dependant delaying artifakts in our algorithms as much as even possible.
But therefore other problems exist: It is clearly audible, that the frequency domain tends somehow to smearing, while the time domain tends to phasing. This lies particulary in the nature of things, but probably can be improved with further resurch. It is already adjustable with a "quality" parameter in both algorithms ...
Example three and four is based on polyphonic material tweaked to the extreme, three with the time domain algo and four with the frequency algo. The streching is partwise performed between 3 and over 1000% of the original length !!!
(OK, that is not really useful for propper timestretching, but offers very interesting special effect possibilities.)
http://sharing.dizainer.net/public/rubberwave_lofy.mp3
http://sharing.dizainer.net/public/rubb ... remefx.mp3
All tempo changes are made in realtime but there is no parameter smoothing yet. Will be implemented later.
Tweaking the pitch independently is also possible of course but not performed in the examples above to keep the comparsion clear.
Enjoy.
.
-
- Banned
- 380 posts since 11 Aug, 2005
FFT/iFFT in the frequency domain. I don't like the term "phase vocoder", because it is soo misleading...shamann wrote:That sounds excellent. I assume you're using the phase vocoder for frequency domain processing, what approach did you use for time domain?
Therefore the frequency domain algorithm uses clearly more processor power than the time domain of course.
For the time domain I use ..., well, there is no paper of what I use, you know? I simply developed it based on my imagination and with allot of "trial and error". There is still something to optimize and improve.
It has some elements of a WSOLA and "granular synthesis" and can be described as a combination of variable resampling and "overlapp and add" techniques ...
It is not even very complex, but rather astonishing simple in basic concept. I am even surprised myself, how good the first attempts already worked ...
The difficulty was merely to implement the realtime controls for stretch and pitch.
.
Last edited by ;-) on Wed Aug 24, 2005 4:43 am, edited 1 time in total.
-
- KVRAF
- 12235 posts since 18 Aug, 2003
That's what I like to hear. Well done.000 wrote:For the time domain I use ..., well, there is no paper of what I use, you know? I simply developed it based on my imagination and with allot of "trial and error". There is still allot to optimize and improve.
