<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Sun, Nov 12, 2017 at 12:05 PM, Georg <span class="" id=":17g.21" tabindex="-1" style="">Chini</span> <span dir="ltr"><<a href="mailto:georg@chini.tk" target="_blank"><span class="" id=":17g.22" tabindex="-1" style="">georg</span>@<span class="" id=":17g.23" tabindex="-1" style="">chini</span>.<span class="" id=":17g.24" tabindex="-1" style="">tk</span></a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
  
    
  
  <div bgcolor="#FFFFFF"><span class="gmail-">
    <div class="gmail-m_5587300346966034327moz-cite-prefix">On 12.11.2017 14:36, wellington wallace
      wrote:<br>
    </div>
    <blockquote type="cite">
      <div dir="ltr">Another thing that would work is telling Pulseaudio
        that null sinks created by PulseEffects should never be used as
        fallback devices. If this was a null sink property I could set
        it in PulseEffects code and the user would not have to mess with
        Pulseaudio's configuration.
        <div><br>
          <div>As we are talking about null sinks I would like to ask
            one more question. Is it possible to change a null sink rate
            after it was created? I searched in the libpulse api docs
            but I could not find a way. I am asking because at
            PulseEffects startup I set the null sink rate to the same
            rate of the current fallback device. If the user changes the
            fallback device to one with different sampling rate while
            PulseEffects is open we will have unnecessary resampling as
            the null sink is using the rate of the previous device.</div>
          <div><br>
          </div>
          <div>Best regards</div>
        </div>
        <div>               Wellington</div></div></blockquote></span>
    Please don't top post. Does that mean the original question was not
    about virtual sinks<br>
    but about the null sink? The null sink is not counted as a virtual
    sink and the patch I sent<br>
    is useless in that case. The null sinks could however be excluded in<br>
    module-switch-on-connect by a similar approach.<br>
    <br>
    I guess it would also be possible to set some
    "do-not-use-as-default" property on a sink<br>
    that could be parsed by the default sink selection process, but that
    would not only affect<br>
    module-switch-on-connect but would also need to be considered in the
    core.<div><div class="gmail-h5"><blockquote type="cite"><div class="gmail_extra">
        <div class="gmail_quote">On Sat, Nov 11, 2017 at 10:03 AM,
          Михаил Новоселов, Думалогия <span dir="ltr"><<a href="mailto:mikhailnov@dumalogiya.ru" target="_blank">mikhailnov@dumalogiya.ru</a>></span>
          wrote:<br>
          <blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
            <div>Yes, of course, it's possible to unload
              module-switch-on-connect, but that is breaking the
              existimg user setup.<br>
              "a command line switch could be added<br>
              to the module so that it ignores virtual sinks" Will be
              best. Does this flag exist now?<br>
              <br>
              <div class="gmail_quote">11 ноября 2017 г. 14:26:21
                GMT+03:00, Georg Chini <<a href="mailto:georg@chini.tk" target="_blank">georg@chini.tk</a>> пишет:
                <blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
                  <pre class="gmail-m_5587300346966034327m_8855245293421820670k9mail"><span>On 11.11.2017 05:28, Михаил Новоселов, Думалогия wrote:
<blockquote class="gmail_quote" style="margin:0pt 0pt 1ex 0.8ex;border-left:1px solid rgb(114,159,207);padding-left:1ex"> Hello,

 PulseEffects, an application, that can apply different effects or 
 equalize both input and output sound, cannot work properly when 
 module-switch-on-connect is on. PulseEffects creates a virtual sinks, 
 but PulseAudio's module-switch-on-connect makes it a default sinks 
 automatically what severely breaks the logic of PulseEffect's work.

 Please see <a href="https://github.com/wwmm/pulseeffects/issues/99" target="_blank">https://github.com/wwmm/pulsee<wbr>ffects/issues/99</a>

 1) Can we specify that the created sink is a virtual one?
 2) Maybe there are other ways to prevent module-switch-on-connect from 
 making a newly created virtual device a default one?

 I wrote the script Dumacast <a href="https://github.com/mikhailnov/dumacast" target="_blank">https://github.com/mikhailnov/<wbr>dumacast</a> 
 (first of all for my company's (Dumalogiya, <a href="http://xn--80agbsneq0b4h.xn--p1ai" target="_blank">http://думалогия.рф</a>) 
 internal usage), and starting with the newest version of Ubuntu, where 
 module-switch-on-connect is on, I ran into the same troubles. My 
 script 
 <a href="https://github.com/mikhailnov/dumacast/blob/master/usr/bin/dumacast" target="_blank">https://github.com/mikhailnov/<wbr>dumacast/blob/master/usr/bin/d<wbr>umacast</a> 
 creates virtual sinks via pactl (lines 135-149), and they are also 
 made default and break the logic of how the script works. I currently 
 have no idea how to handle it without unloading module-switch-on-connect.

 I tried both Ubuntu's 17.10 default PulseAudio and built from dEbian 
 sources PulseAudio 11, the situation is the same with them both.

 What can be done?</blockquote>
</span>Do you really need module-switch-on-connect? If not, you could just 
check with
"pactl list modules short" if the module is loaded and unload it prior 
to starting
your application. You can also remove it from <a href="http://default.pa" target="_blank">default.pa</a>, so that it 
never gets
loaded.

If you need module-switch-on-connect, a command line switch could be added
to the module so that it ignores virtual sinks. The default behavior 
however can
not be changed, because other applications might rely on the current setup.

Regards
              Georg</pre></blockquote></div><span class="gmail-m_5587300346966034327HOEnZb"><font color="#888888">
                  -- <br>
                  Простите за краткость, создано в K-9 Mail.</font></span></div></blockquote></div>
        <div><br>
        </div>
        -- <br>
        <div class="gmail-m_5587300346966034327gmail_signature">
          <div dir="ltr">Prof.° Wellington Wallace Miguel Melo<br>
            <br>
            <div>CEFET/RJ Uned Nova Iguaçu</div></div></div></div></blockquote>
  </div></div></div>

</blockquote></div>Sorry for the top post. I forgot this is not allowed in this list. And as gmail considered your answer to <span class="" id=":17g.25" tabindex="-1" style="">mikhailnov</span> a spam I did not notice you had already asked to not do it :-(</div><div class="gmail_extra"><br></div><div class="gmail_extra">Yes, what I am using in <span class="" id=":17g.26" tabindex="-1" style="">PulseEffects</span> are null sinks. The <span class="" id=":17g.27" tabindex="-1" style="">workflow</span> is more or less the following. The audio application sink input is moved from the default sink to a null sink created by <span class="" id=":17g.28" tabindex="-1" style="">PulseEffects</span>. Then a <span class="" id=":17g.29" tabindex="-1" style="">Gstreamer</span> pipeline records from this null sink monitor and applies effects. After that <span class="" id=":17g.30" tabindex="-1" style="">Gstreamer</span> plays to the default sink. I use a similar logic to apply effects for microphone. But in that case <span class="" id=":17g.31" tabindex="-1" style="">Gstreamer</span> records from the microphone applies effects and then plays to a null sink. Applications recording from this null sink monitor will have the audio from the microphone with effects applied. So we have 2 null sinks and the last one loaded is being set as default sink by module-switch-on-connect. This obviously breaks all the logic I am using.</div><div class="gmail_extra"><br></div><div class="gmail_extra">I think we can live with a switch in module-switch-on-connect. In this case I would have to use <span class="" id=":17g.32" tabindex="-1" style="">libpulse</span> api to detect it is running and then unload/load it with the new option to ignore null sinks. Could this loading/unloading performed while <span class="" id=":17g.33" tabindex="-1" style="">Pulseaudio</span> is running be a problem?</div><div class="gmail_extra"><br></div><div class="gmail_extra">Thank you for your time</div><div class="gmail_extra">                              </div><div class="gmail_extra">                           Wellington<br clear="all"><div><br></div>-- <br><div class="gmail_signature"><div dir="ltr">Prof.° Wellington Wallace Miguel <span class="" id=":17g.34" tabindex="-1" style="">Melo</span><br><br><div><span class="" id=":17g.35" tabindex="-1" style="">CEFET</span>/<span class="" id=":17g.36" tabindex="-1" style="">RJ</span> <span class="" id=":17g.37" tabindex="-1" style="">Uned</span> Nova <span class="" id=":17g.38" tabindex="-1" style="">Iguaçu</span><br><br></div></div></div>
</div></div>