Re: [LAD] Mixing audio: Implementing pan and balance

From: Raphaël BOLLEN <raphael.bollen@email-addr-hidden>
Date: Sun Mar 24 2013 - 10:06:59 EET

On 03/23/2013 06:05 PM, Raphaël BOLLEN wrote:
> On 03/16/2013 07:23 PM, Fons Adriaensen wrote:
>> On Sat, Mar 16, 2013 at 09:25:46AM -0400, Paul Davis wrote:
>>> On Sat, Mar 16, 2013 at 9:25 AM, John Rigg <ladev4@email-addr-hidden> wrote:
>>>
>>>>
>>>> A lot of mixing consoles don't provide a mono switch, but it's usually
>>>> possible to work around it with sub groups. I still have to work out a
>>>> convenient method for mono checking in Ardour 3.
>>>>
>>>
>>> which means i need to write up a page or two for http://manual.ardour.org/
>>
>> And which reminds me of an app I've been using for years but
>> never released.
>>
>> Zita-mu1 is a simple Jack client used to organise stereo monitoring
>> during recording and mixing. More here:
>> <http://kokkinizita.linuxaudio.org/linuxaudio/zita-mu1-doc/quickguide.html>
>> and download from
>> <http://kokkinizita.linuxaudio.org/linuxaudio/downloads/zita-mu1-0.2.0.tar.bz2>
>>
>> Ciao,
>>
>
> Awesome, however cpu usage is ~12% on my system when playing silence and drops to ~2% with some
> audio going through.

This patch solves the problem for me.

--- /home/rapha/Downloads/kokkinizita/zita-mu1-0.2.0/source/jclient.cc.orig
+++ /home/rapha/Downloads/kokkinizita/zita-mu1-0.2.0/source/jclient.cc
@@ -207,38 +207,43 @@
      {
          k = prepare (frames);

- q0 = selout [0];
- q1 = selout [1];
- for (i = 0; i < 4; i++)
- {
- m = _inpstat [i].state ();
- if (m)
- {
- p0 = moninp [2 * i];
- p1 = moninp [2 * i + 1];
- if (m == DelayAct::ON)
- {
- for (j = 0; j < k; j++)
- {
- q0 [j] += p0 [j];
- q1 [j] += p1 [j];
- }
- }
- else
- {
- g = _ipg [i];
- t = (m == DelayAct::UP) ? 1.0f : 0.0f;
- d = (t - g) / _frcnt;
- for (j = 0; j < k; j++)
- {
- g += d;
- q0 [j] += g * p0 [j];
- q1 [j] += g * p1 [j];
- }
- _ipg [i] = g;
- }
- }
- }
+ q0 = selout [0];
+ q1 = selout [1];
+ for (i = 0; i < 4; i++)
+ {
+ m = _inpstat [i].state ();
+ p0 = moninp [2 * i];
+ p1 = moninp [2 * i + 1];
+ for (j = 0; j < k; j++)
+ {
+ p0[j] += 1e-20;
+ p1[j] += 1e-20;
+ }
+ if (m)
+ {
+ if (m == DelayAct::ON)
+ {
+ for (j = 0; j < k; j++)
+ {
+ q0 [j] += p0 [j];
+ q1 [j] += p1 [j];
+ }
+ }
+ else
+ {
+ g = _ipg [i];
+ t = (m == DelayAct::UP) ? 1.0f : 0.0f;
+ d = (t - g) / _frcnt;
+ for (j = 0; j < k; j++)
+ {
+ g += d;
+ q0 [j] += g * p0 [j];
+ q1 [j] += g * p1 [j];
+ }
+ _ipg [i] = g;
+ }
+ }
+ }

          _kmdsp [0].process (q0, k);
          _kmdsp [1].process (q1, k);

Cheers

--
Raphaël.
_______________________________________________
Linux-audio-dev mailing list
Linux-audio-dev@email-addr-hidden
http://lists.linuxaudio.org/listinfo/linux-audio-dev
Received on Sun Mar 24 12:15:01 2013

This archive was generated by hypermail 2.1.8 : Sun Mar 24 2013 - 12:15:01 EET