Menu

#286 EQApo disables bass redirection along with other effects - but works if LFE audio track is present (Sound Blaster X4)

1.x
open
nobody
None
8 hours ago
2024-07-09
gerchan
No

Up until recently, I have been using Sound Blaster X-Fi Surround 5.1 Pro in 5.1 mode downmixed to 2.1 so I can control EQ of front speakers and subwoofer separately and to be able to set delay of front speakers so they sync with subwoofer. EQApo was working perfectly, I could control volume and EQ through Peace for subwoofer and front speakers separately.

Sadly, this doesn't work with Sound Blaster X4. I tried all troubleshooting options, and discovered couple of things.
1. SFX/EFX and LFX/GFX - ticking bass redirect in control panel does nothing, not even acoustic engine effects are working (those are creatives sound "enhancers": bass enhance, clearer highs, stuff like that) maybe this could be a clue as to where could be a problem?
2. SFX/MFX - bass redirection works and so do acoustic effects, there is bass coming from subwoofer when playing stereo sound, sadly, I can't seem to control the subwoofer separately through Peace like I could on the old sound card, when I apply -50db to left and right channels, subwoofer goes silent, this didn't happen with old sound card where subwoofer kept playing, even with stereo source, like music on spotify or youtube)

Now the thing is, EQApo works with all troubleshooting options, equalizer works every time, I can send test tones to subwoofer alone and it works as intended, even in Creative App, clicking on subwoofer icon to test it makes it rumble, so the connection is still there, EQApo just doesn't seem to be able to take control of the subwoofer for some reason.

I hope I explained my problem clearly enough, thanks for reading and eventual help :)

Discussion

  • Peter Verbeek

    Peter Verbeek - 2024-07-10

    EQApo just doesn't seem to be able to take control of the subwoofer for some reason.

    Unfortunately I don't have much knowledge to help you. It seems to me that the Audio Processing Object (APO) of the X-Fi does its own thing causing Equalizer APO not to work properly on the LFE channel. Or the X-Fi does its own bass redirection in a way that it bypasses Equalizer APO. Whatever it is I don't know how to solve it.

    Have you tried searching this forum? There might be some info.

    And have you tried downmixing with Peace/Equalizer APO instead of with the software of Sound Blaster?

     
  • gerchan

    gerchan - 2024-07-12

    So I have resolved the issue, well not resolved, X4 does some weird magic with bass redirection and it doesn't even sound that good. So I did some testing, some research, found some good info, here is my script, what it does: downmixes 5.1 to 2.1, sets crossover frequency at 70Hz (you can change the number to whatever you want), then routes inverted L and R signal to subwoofer (delete the "-" in -0.5 in both values so your signal has normal polarity, I have subwoofer behind me, thats why I invert the signal). 0SUB completely mutes LFE audio source if there is any since we are taking all the low frequencies from L and R channels (like movies with 5.1 audio, games where you cannot set speaker setup, this would play together with redirected bass and that is no bueno). Rest is some math equations for two-way crossover, source is in the post. This digital cross over sounds better then the one in CreativeApp, it's insane the difference. But most importantly: set delay on front speakers if you have subwoofer far away from you (I have it around 3 meters behind me and using calculator I need to use delay around 8ms so front speakers sync with subwoofer, and believe me, it does make a huge difference.

    Copy: L=0.395*L+0.272*C+0.268*RL+0.064*RR
    Copy: R=0.395*R+0.272*C+0.268*RR+0.064*RL
    
    Do: `fcT = 70`
    Do: `fcW = 70`
    Copy: SUB=-0.5*R+-0.5*L+0*SUB (the "-" is for inverting subwoofer polarity, delete if necessary, 0*SUB disables LFE channel since we redirect all bass from front channels, no need for it)
    Channel: SUB
    
    Do: `wc=2*pi*fcW`
    Do: `wc2=wc*wc`
    Do: `wc3=wc2*wc`
    Do: `wc4=wc2*wc2`
    Do: `k=wc/tan(pi*fcW/sampleRate)`
    Do: `k2=k*k`
    Do: `k3=k2*k`
    Do: `k4=k2*k2`
    Do: `sqrt2=sqrt(2)`
    Do: `sq_tmp1=sqrt2*wc3*k`
    Do: `sq_tmp2=sqrt2*wc*k3`
    Do: `a_tmp=4*wc2*k2+2*sq_tmp1+k4+2*sq_tmp2+wc4`
    Do: `b0 = 1`
    Do: `b1=(4*(wc4+sq_tmp1-k4-sq_tmp2))/a_tmp`
    Do: `b2=(6*wc4-8*wc2*k2+6*k4)/a_tmp`
    Do: `b3=(4*(wc4-sq_tmp1+sq_tmp2-k4))/a_tmp`
    Do: `b4=(k4-2*sq_tmp1+wc4-2*sq_tmp2+4*wc2*k2)/a_tmp`
    Do: `a0=wc4/a_tmp`
    Do: `a1=4*wc4/a_tmp`
    Do: `a2=6*wc4/a_tmp`
    Do: `a3=a1`
    Do: `a4=a0`
    Filter: ON IIR Order 4 Coefficients `a0` `a1` `a2` `a3` `a4` `b0` `b1` `b2` `b3` `b4`
    
    Channel: L R
    Do: `wc=2*pi*fcT`
    Do: `wc2=wc*wc`
    Do: `wc3=wc2*wc`
    Do: `wc4=wc2*wc2`
    Do: `k=wc/tan(pi*fcT/sampleRate)`
    Do: `k2=k*k`
    Do: `k3=k2*k`
    Do: `k4=k2*k2`
    Do: `sqrt2=sqrt(2)`
    Do: `sq_tmp1=sqrt2*wc3*k`
    Do: `sq_tmp2=sqrt2*wc*k3`
    Do: `a_tmp=4*wc2*k2+2*sq_tmp1+k4+2*sq_tmp2+wc4`
    Do: `b0 = 1`
    Do: `b1=(4*(wc4+sq_tmp1-k4-sq_tmp2))/a_tmp`
    Do: `b2=(6*wc4-8*wc2*k2+6*k4)/a_tmp`
    Do: `b3=(4*(wc4-sq_tmp1+sq_tmp2-k4))/a_tmp`
    Do: `b4=(k4-2*sq_tmp1+wc4-2*sq_tmp2+4*wc2*k2)/a_tmp`
    Do: `a0=k4/a_tmp`
    Do: `a1=-4*k4/a_tmp`
    Do: `a2=6*k4/a_tmp`
    Do: `a3=a1`
    Do: `a4=a0`
    Filter: ON IIR Order 4 Coefficients `a0` `a1` `a2` `a3` `a4` `b0` `b1` `b2` `b3` `b4`
    
     

    Last edit: gerchan 2024-07-12
  • Peter Verbeek

    Peter Verbeek - 2024-07-12

    Nice implementation although I don't understand what type of filters are used. I guess a kind of low and high pass filters? Btw. the 0*SUB can be deleted. It isn't needed as the SUB is totally replaced by L and R. In other words, the SUB audio stream is totally replaced and as such the original SUB is gone.

     
    • gerchan

      gerchan - 2024-07-12

      I put 0 on SUB because I can still hear it when playing test sounds for subwoofer channel, don't know why this happens but presumably because SUB is not actually routed anywhere, just channels routed into it.

      I don't understand that script either, but it works, even better than crossover from creative. Here is the source for that script, sadly the blog doesn't work anymore, nothing on a wayback machine either, I bet that blog was goldmine for stuff like this :(

      https://www.reddit.com/r/BudgetAudiophile/comments/561myb/psa_multiple_eapo_lphp_filters_can_cause_issues/

       
      • Peter Verbeek

        Peter Verbeek - 2024-07-12

        I can still hear it when playing test sounds for subwoofer channel

        That shouldn't be happening. Unless some bass redirection is done by the Sound Blaster software. The weird thing is that by doing 0*SUB nothing is assigned to SUB so it shouldn't do anything. Only the left side of the = sign is being changed, well according to the Copy: command wiki. So I wonder what happens if you do:

        Copy: SUB=0.0
        Copy: SUB=-0.5*R+-0.5*L
        

        Btw. The proper command is always using a decimal place (or more) so 0.0 instead of 0.

        Interesting stuff in this blog. I'm not aware of any issues around the crossover frequency. In principle the low and high pass filters are biquad filters. The same as the crossover made by the writer of the blog. In other words, it's rather a low/high pass biquad filter issue then an Equalizer APO issue one. For instance, a low/high pass filters may have a positive bump around the crossover frequency. That's a general issue of these filters, not even a biquad issue. As such, in the Peace equalizer I've created Butterworth and Linkwitz-Riley filters which don't have this positive bump.

        sadly the blog doesn't work anymore, nothing on a wayback machine either

        That's so unfortunate. It's difficult to find the proper sources in the first place. I've contemplated to combine all stuff I and others find on the internet. But my knowledge is just not good enough about the science and technical aspects of audio.

         
  • gerchan

    gerchan - 2024-07-12

    I tried your formula and nothing changed, so I just left Copy: SUB=-0.5R+-0.5L and also nothing changed, so you were right, I guess I wasn't finished setting up downmixing when I tried channel test.

    The weird thing is that by doing 0*SUB nothing is assigned to SUB so it shouldn't do anything

    I understood this differently: I think of SUB= as a physical speaker, subwoofer that is behind me. and after = I tell what channels I want and do not want in this speaker. so I want to hear right and left but do not want to hear subwoofer, but I mean the actual separate LFE audio track in movie with 5.1 sound, not the speaker itself. If I do +1*SUB, I would hear LFE track right?

    As such, in the Peace equalizer I've created Butterworth and Linkwitz-Riley filters which don't have this positive bump.

    Would you share your work? I think what you are describing is exactly the problem in the reddit thread, that there is some weirdness around crossover where volume seems to be jumping up and down. I just went directly to that insane script, so I wouldn't know, it sounds great to me, but I would like to try different kinds of crossovers. Thanks.

     
    • Peter Verbeek

      Peter Verbeek - 2024-07-12

      SUB and LFE are the same in Equalizer APO, both denoting the LFE channel.

      If I do +1*SUB, I would hear LFE track right?

      Yes, or better said no, as 1 denotes the first channel which is the left channel. You probably meant: +1.0*SUB

      A few examples how the Copy: command works.

      Copy: SUB=0.5*L+0.5*R
      # sub/lfe channel completed overwritten by L and R
      Copy: SUB=0.25*L+0.25*R+0.5*SUB
      # halve of the sub/lfe channel remains in the sub/lfe channel and a quarter L and R
      Copy: SUB=0.5*SUB
      # lowering the sub/lfe by halve
      

      Would you share your work?

      I guess you aren't familiar with the Peace equalizer 😃 It's the most popular interface for Equalizer APO. Its equalizer has the Butterworth and Linkwitz-Riley filters built in.

      where volume seems to be jumping up and down.

      That only happens if a user undeliberately cranks up the gain too much by introducing filters. This means that the anticlipping Windows feature is activated causing the volume change. To avoid that the pre amp should be lowered when using filters with a positive gain. Btw. That's why Peace has a peak value meter on its interface. When using filters the total gain always must be observed, either by the graph or by the peak value meter. In other words, a negative pre amp is usually the fix.

       
  • gerchan

    gerchan - 2024-07-12

    Oh I am familiar, I have been using it for over a decade now, but really only for headphones so all this is new to me - crossovers and stuff like that. I have an old subwoofer from Genius SW-HF 6000 5.1 system, it's pretty powerful - 100W, but only goes to 40Hz since it's 8 inch, although I can still feel and hear it rumbling at about 35 Hz. I have also discovered amazing thing: didn't know you could plug subwoofer port hole, so I tried that and holy shit, the subwoofer started making sounds I didn't think it was capable of, it toned down overboomy frequencies around 45-55 Hz and seriously improved the lowest frequencies. Now I am thinking whether subwoofer that goes down to like 25Hz with around 150W would be an improvement, what do you think?

    I am doing -12 preamp on all channels in Peace, since I am combining lot of channels into left and right, but I am nowhere near clipping. Currently 33Hz crossover.
    I uploaded screenshot of my current Peace setup, if you'd like to take a look. But prepare to be horrified :D
    https://imgur.com/5mAWwGz

    also, if you'd be so kind, could you give me a quick tutorial how to setup those Butterworth and Linkwitz-Riley filters? I guess I need to apply one to subwoofer and other to FR channels at the same frequency, like that script does, but I am not sure which to use where, but I also read that you need to double-apply them to make it steeper? like I said, it's all new to me, thanks for you patience :)

     
    • Peter Verbeek

      Peter Verbeek - 2024-07-12

      25Hz with around 150W would be an improvement, what do you think?

      If you want to feel the bass pounding on your body then yes for sure.

      Great Peace config. I'm wondering though. Since you have no device selected isn't the problem? Your config is also applied to your mic. This is how Equalizer APO works. If no device is selected every command is done on every audio device, input and output.

      The "steepness" of a Butterworth or Linkwitz-Riley filter is determined by its order value. In case of Peace, the order is entered in the Q value field (below a slider). Based on your config I've made a crossover config with Butterworth filters as an example (see attached .peace config file). Note that I've chosen the crossover frequencies as such that the crossover point is on the same spot (see graph). But this isn't really a thing. You need to figure out both crossover frequencies for your setup. They don't have to be the same! Arbitrary I've chosen order 10 (see Q fields). A higher value is steeper but note that a high order isn't always a good thing as frequencies are cut of very hard (as in noticeably hard). Anyway, the order value is the answer to your "double apply".

      Copy the .peace file to c:\program files\equalizerapo\config and restart Peace to make it visible in the configs list.

      thanks for you patience :)

      No problem.

       
      • Etienne Dechamps

        The "steepness" of a Butterworth or Linkwitz-Riley filter is determined by its order value. In case of Peace, the order is entered in the Q value field (below a slider).

        There is some confusion here. "Order" and "Q value" are not the same thing. Q is a tradeoff between stopband attenuation and passband ripple. Filter order is a tradeoff between computational efficiency and filter sharpness. These are two completely separate parameters that are mostly orthogonal to each other.

         
        • Peter Verbeek

          Peter Verbeek - 2024-07-13

          Of course Q(uality) and Order are different. The only thing is that the Q field below a slider in Peace will change to an order field in case of the Butterworth or Linkwitz-Riley filter. It's a matter of interface. When having an extra row of order fields below the Q fields consumes space. To prevent that I just change the function of the Q field into an order field.

           
          👍
          1
  • gerchan

    gerchan - 2024-07-12

    Thanks! Okay, but you only used Butterworth filter, what about Linkwitz-Riley? I still don't know difference between those two, should they be used together?

    Also, if I use for example 50Hz lowshelf on Subwoofer and 80Hz high shelf on fronts, what happens to those 30Hz in between? because if I apply it like this, 50-80Hz is on -50db, those are just lost? or how should I go about figuring out correct frequencies?

    about no device selected, I don't use microphone, and I never selected anything other than All devices, no problems so far.

     
    • Peter Verbeek

      Peter Verbeek - 2024-07-13

      Thanks! Okay, but you only used Butterworth filter, what about Linkwitz-Riley? I still don't know difference between those two, should they be used together?

      Either use Butterworth or Linkwitz-Riley. Don't mix them unless you precisely understand what the difference is and why you exploited this difference. And sorry, I don't know the precise difference between the 2. Looking at the graph they differ a little in steepness at the same order. But generally speaking their difference isn't important.

      Just look at the graph. It tells lots. When adding up the graph of the subwoofer and the front speakers the 2 should at least produce a flat line (see attached image) preventing the loss of frequencies. But it isn't an issue to have an overlap so a higher crossover frequency for the subwoofer and a lower crossover frequency for the front. In fact one could argue why filtering for the subwoofer at all. If the Sound Blaster software and the hardware of the subwoofer do their job correctly then filtering isn't necessary. On the other hand, it isn't an issue to experiment with filtering, just to see, well hear, if it makes a nice difference compared to unfiltered. For instance, getting rid of some higher frequencies which the subwoofer might still produce. For this just set a low frequency, starting at, say, 200 Hz and then lowering it until you're satisfied (of course with playing your favorite songs). Then do the same for the front speakers, in this case filtering for the higher frequencies. Again, filtering might be unnecessary but experimenting can be nice.

      "All devices" is alright unless one uses an EQ for a mic or one has sound coming from 2 or more audio devices at the same time. So you're alright :)

       
  • gerchan

    gerchan - 2024-07-17

    So I have been experimenting last two days and I think the script I found for a crossover works the best, I tried manually doing crossover using Butterworth, Linkwitz-Riley, but I just couldn't make it sound as good as that script. So thank you all for your help :)

     
    • Peter Verbeek

      Peter Verbeek - 2024-07-17

      No problem. Just good that you have a good crossover solution by that script.

       
  • gerchan

    gerchan - 24 hours ago

    Hello, I am back with another question.

    I was wondering if there is a way to apply the same negative gain to frequency range. For example: I would like to apply -8db to frequency range 200-300Hz by the same amount for every frequency, is there an easy way to do this? I tried filter with quality setting but I don't actually know how much quality affects the range...

     
    • Peter Verbeek

      Peter Verbeek - 22 hours ago

      Not really but there are several ways to go about it. For instance, by using graphic EQ of Equalizer APO, either in Peace or the Configuration Editor you could create a specific frequency range drop in gain by using 4 frequency points:
      1. Frequency 190 or so on 0 dB
      2. Frequency 200 on -8 dB
      3. Frequency 300 on -8 dB
      4. Frequency 310 or so on 0 dB
      This creates a drop as shown in the attached screenshot. Note that the slopes are in my example 8 db for 10 Herz.

      In principle this can also be done with peak filters but it's harder to do.

       
  • gerchan

    gerchan - 21 hours ago

    That's exactly what I need, however, I have no idea how to do it, where do I find graphic eq?

     
    • Peter Verbeek

      Peter Verbeek - 21 hours ago

      In Peace under the GEQ button at the bottom right of the equalizer sliders. In the Configuration Editor of Equalizer APO 1.4 click the green button to add a new command -> click Graphic equalizers -> click Graphic equalizer with variable band.

       
      • gerchan

        gerchan - 8 hours ago

        Yes, that worked perfectly, thank you so much yet again :)

         
        😄
        1

Log in to post a comment.