0
$\begingroup$

I'll be processing stereo music signal. What I need is to first split the frequency range into 2 bands at 50-100 Hz. In the higher band, I need to delay one of the channels by a certain number of milliseconds. The lower band has to be delayed as a whole (left+right channel) by a different value. Is this doable? Is this doable in real-time (think VST plugin for an audio player)? If it's possible, can you please give me pointers (algorithm-wise) on how to implement it?

P. S. I need to preserve the sound quality. If such a filter would ruin it, then my idea goes to the trash can.

$\endgroup$
  • $\begingroup$ you need a filter whose quality depends on how perfect a separation your algorithm needs to be effective. And then adding those delays is easier. It is better if you tell us about your system's computational power. sound quality might degrade due to unequal delays. But such things are usually acceptable in digital audio effects... $\endgroup$ – Fat32 Mar 1 '16 at 0:33
  • $\begingroup$ @Fat32: The system is based on Intel Atom Z3736F, 2 GB RAM: ark.intel.com/products/82115/… I'll much prefer a VST plugin that can be applied on the fly, but if pre-rendering resulting audio files is necessary, then it'll have to do. $\endgroup$ – Violet Giraffe Mar 1 '16 at 5:51
  • $\begingroup$ The system you describe is capable of performing such an algortihm in real time. Of course this assumes a single algorithm to execute. If you have a chain of signal processing then take that into account as well. For my experience I can say that if you can write efficent enough code, such a system can execute almost a dozen of such simple algorithms in real time. (except the I/O interrupts!) at %100 percent load. $\endgroup$ – Fat32 Mar 1 '16 at 12:02
  • $\begingroup$ @Fat32: I didn't as much doubt the system's performance as I wasn't sure it is even doable in a single pass. Now that I think about it, simply delaying one channel is trivial and only requires memory to hold as many samples as fit into the delay interval. I have zero audio processing experience, but I think I can create such a filter using the VST SDK. Frequency-limited delay is the hard part. Could you give me any pointers as to how it can be implemented? I was thinking along the lines of splitting the signal into two bands, delaying one, and merging it back, but I'm not sure it'll even work. $\endgroup$ – Violet Giraffe Mar 1 '16 at 12:34
  • $\begingroup$ Good luck in your implementation. I thought that the algorithm you specified was actually working. But now you say it was just your "idea"... If you have zero dsp expertise, it will be hard to decribe things in mathematical terms but I would suggest you have a look at zölzer's digital audio effects book. $\endgroup$ – Fat32 Mar 1 '16 at 14:47
1
$\begingroup$

Not sure about audio plugins but what you want to do is certaininly doable by using filters (delay line in your case in the subbands. Split the band using using a Perfect Reconstruction Analysis filter bank. Now plugin the delay line and then combine two subbands using synthesis filter bank. Note that you need to be extra careful while plugging in the filter between analysis and synthesis filter bank. You can check some of these papers for ideas on how to do subband filtering.

https://dl.acm.org/citation.cfm?id=2817121

http://ieeexplore.ieee.org/abstract/document/1661283/

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.