Support |
Jan-willem De Bleser wrote: > Hi everybody, > > My name's Jan-willem and I'm an engineering student. I'm doing research > for a project on automatic and seamless looping algorithms found in DSP > hardware and software and was wondering if anyone here could help point > me in the right direction. Oh no! Stop...me...must...not...spew...technobable... :-) Oh what the heck. I'm not aware of any formally published literature on the subject of "looping" per se, but I haven't looked very hard. Lots of interesting links can be found here: http://www.dspdimension.com/data/index.html http://www.bdti.com/faq/dsp_faq.htm You will probably get more technical information searching or posting to the comp.dsp newsgroup which can be accessed here: http://www.dspguru.com/comp.dsp/ Regarding "covering up and eliminating the transition" this is usually done with a simple cross-fade between the two edges of the loop. After locating the edges, you can do a simple upward fade on the leading edge and a downward fade on the trailing edge which yields a "zero crossing" at the loop point. This will avoid a "click" but can produce a soft "bump" if the contents on both sides of the loop point are similar. A more complicated but smoother sounding fade can be performed by capturing a short "tail" after the end of the loop, fading it, and merging it with the start of the loop. You won't have a zero crossing which can reduce the intensity of the bump. This is closer to the kind of cross fading you would achieve with a DJ mixer for example, where the fade out of one signal and the fade in of another signal overlap. The curve of the fade should ideally be logarithmic, though I find that a "squares" curve is a reasonable approximation and is easier to calculate in realtime if that is a concern. Regarding "automatically place the beginning and end of loops", I'm assuming that you're talking about extracting a loop from a signal in realtime rather than placement of pre-recorded loops in an arrangement with time stretching like you might do in Sony Acid. Both are hard. The simplistic approach is to monitor the amplitude of the signal and try to detect where the "beats" are. Begin the loop when the signal level crosses a threshold, then end it after some multiple of beats. There is a hardware looping device that claims to do something like this. http://www.backline-eng.com/ In theory, this should work well for signals with obvious beats. For signals without obvious beats, you might be able to slice the signal based on variations in timbre but that's much harder to implement and unlikely to achieve useful results. Personally I prefer tapping a switch twice to define the start and end points as it gives you the most control. Regards, Jeff