LADSPA plugin programming for Linux audio crossovers

Status
This old topic is closed. If you want to reopen this topic, contact a moderator using the "Report Post" button.
Member
Joined 2007
Paid Member
The calculations in ACDf are already done in double precision. That is about as good as its gets. So nothing to worry about there.

It sounds like you are doing some kind of second guessing about your system. Maybe you should revisit the system design, etc. Changing filters and listening is not a good way to get the "best" sound. Rather, it's a recipe for un-ending frustration...

Thanks for the quick reply! Its nice to learn we're already at double precision! :up: That was my main question.

Fortunately, I don't frustrate easily! :D You're right about the guessing! It is due to the new ESS chips, which offer a number of processing configurations that are adjustable via I2C. Tweaking them has occupied my limited attention since upgrading the 3 stereo DACs. I think I now have them running very near to their optimal configurations for my rig. [Via I2C I can adjust in real time some functions that are also available in ACDf...] So it's now time to crank up REW and see where things stand...

All the best and thanks again for sharing ACDf,

Frank
 
Hi there,
I am just working on my first audio project. Building a little wifi enabled speaker.
For the speaker I am using a small 2 driver case, a raspberry and a hifiberry amp2.

As this is a single speaker, I am pretty much on mono. Hence I thought I can use the two channels of the amp2 to connect each driver and have a software crossover running.

So since having this idea, I am now struggling with the asound.conf.

I got it so far, to have it reduce the stereo signal to mono and put that to each driver. Now I wanted to add a crossover, however I always get an error message, that the "Slave PCM not usable".

Started with Richard Taylors plugin and read a few threads in the forum here and figured, that this seems to be the most active and expert filled one. So sorry for a bit of hijacking.
I am happy to use Charlies plugins, however I am not sure if the plugin is the issue here.

Any help is appreciated.


Kind regards
Chris


My asound.conf
Code:
pcm.!default {
  type plug
  slave.pcm "monocard"
}

ctl.!default {
  type hw
  card 0
}

pcm.monocard {
  type route
  slave.pcm "crossover"
  slave.channels 2
  ttable {
    # Copy both input channels to output channel 0 (Left).
    0.0 0.5
    1.0 0.5
    # Copy both input channels to output channel 1 (Right).
    0.1 0.5
    1.1 0.5
  }
}

pcm.crossover {
  type ladspa
  slave.pcm "amp2"
  path "/usr/local/lib/ladspa"
  channels 2
  plugins
  {
    0 {
       label RTlr4lowpass
       policy none
       input.bindings.0 "Input"
       output.bindings.1 "Output"
       input { controls [ 500 ] }
      }
    1 {
       label RTlr4hipass
       policy none
       input.bindings.0 "Input"
       output.bindings.0 "Output"
       input { controls [ 500 ] }
      }
  }

pcm.amp2 {
  type plug
  slave {
    pcm "hw:0,0"
    channels 2
    }
}
 
So with just more trying and testing another config I found, I think I made it work. I get different mono sound on each driver

Apparently that was the easy part. How do I now get a good setup? I read about the frequency band for each speaker. However this seems to be completely no name stuff, hence no manual or stickers on it.
Is there a way to measure where the crossover frequency should be?
Probably the experts already fell off their chairs, but I am really new to this and not looking for best speaker ever, just a good result.

@Charlie: I looked at your plugin as well (as that should be easy to exchange now), however got a bit intimidated with the configuration. Pretty much everything other than filter_type and Fop is new to me.

Working config now:
Code:
pcm.!default {
  type plug
  slave.pcm "crossover"
}

ctl.!default {
  type hw
  card 0
}

pcm.crossover {
  type ladspa
  slave.pcm "amp2"
  path "/usr/local/lib/ladspa"
  channels 6
  plugins
  {
    0 {
       label RTlr4lowpass # Left Woofer output to channel 2
       policy none
       input.bindings.0 "Input"
       output.bindings.2 "Output"
       input { controls [ 3000 ] }
      }
    1 {
       label RTlr4lowpass # Right Woofer output to channel 3
       policy none
       input.bindings.1 "Input"
       output.bindings.3 "Output"
       input { controls [ 3000 ] }
      }
    2 {
       label RTlr4hipass # Left Tweeter output to channel 4
       policy none
       input.bindings.0 "Input"
       output.bindings.4 "Output"
       input { controls [ 3000 ] }
      }
    3 {
       label RTlr4hipass # Right Tweeter output to channel 5
       policy none
       input.bindings.0 "Input"
       output.bindings.5 "Output"
       input { controls [ 3000 ] }
      }
  }
}

pcm.amp2 {
  type plug
  slave {
    pcm "t-table"
    channels 6
    rate "unchanged"
    }
}

pcm.t-table {
  type route
  slave {
    pcm "hw:0,0"
    channels 2
  }
  ttable {
    2.0 0.5 # Mix both woofers to mono
    3.0 0.5
    4.1 0.5 # Mix both tweeters to mono
    5.1 0.5
  }
}

pcm.plughw.slave.rate = "unchanged";
 
Chris,
I've been using Charlies plugins with success. Check out Jrubins Instructable "Raspberry Pi Music Server With Built-in Crossover and DSP" he has a good sample asound.conf file.

I've got Klipsch 3-way tower speakers having 2x8" drivers an a 1" horn tweeter. I cross over at 200hz on the 8" woofer, 200-3khz on the 8" midrange, and 3khz on the tweeter. I think the original passive crossovers were 400hz and 1500hz.
 
Thanks for the shout out!

The latest version (ver 3) of the ACDf (IIR filtering) plugin was recently released. I encourage everyone to upgrade to that. I am using it in all my speaker projects. Download link:
Code:
wget [url]http://audio.claub.net/software/LADSPA/ACDF_v3.tar[/url]
From the command line, use wget as shown. From a GUI interface just click on the http link that is highlighted.


To extract the archive, type at the command line:
Code:
tar -xvf ACDF_v3.tar
 
Last edited:
Status
This old topic is closed. If you want to reopen this topic, contact a moderator using the "Report Post" button.