Welcome, Guest
Username: Password: Remember me
NOTE: This forum is community powered. Please be mindful that long time community members are here to help as part of a community effort. If you have a specific issue (e.g. hardware, failure), please use our tech support portal (Support menu - > Contact Us). Thanks a lot of your help in making a better community. :-)

TOPIC: U-DAC8 with Linux / Alsa / BruteFIR?

U-DAC8 with Linux / Alsa / BruteFIR? 1 year 1 month ago #21804

  • drdyna
  • drdyna's Avatar
  • Offline
  • Fresh Boarder
  • Posts: 19
  • Karma: 0
Howdy folks, just a quick question to see if anyone has used one of these under Linux with Alsa and BruteFIR, and if so, was it relatively headache free?

I'm looking for a good solution to try PC based FIR filtering for convolution / crossover, and this seems like a much less inexpensive option than an RME sound card.

Edit: Or, is the OpenDRC-DA8 a better solution? Will it take input from rePhase? Not the right thread, but..I'm trying to decide what the absolute best solution is for 2x 4 way active FIR using MiniDSP equipment.
Last Edit: 1 year 1 month ago by drdyna. Reason: addition
The administrator has disabled public write access.

U-DAC8 with Linux / Alsa / BruteFIR? 1 year 1 month ago #21884

  • devteam
  • devteam's Avatar
  • Online
  • Administrator
  • Posts: 5123
  • Thank you received: 632
  • Karma: 119
@ drdyna,

unfortunately no experience with that direct configuration (BruteFIR) but we do know that the device works fine with Linux + ALSA. not sure to know what could be the reason for BruteFIR not working if it's on top.... ?

OpenDRC DA8 is indeed another solution but note that you'd need a streamer if you plan to do USB audio streaming.
2x4 with FIR can easily and very cost effectively be done with the OpenDRC-DA8 indeed. Just all in one box and you don't need a PC On at all times I guess to get any audio processed.

Devteam
MiniDSP, building a DIY DSP community one board at a time.
The administrator has disabled public write access.
The following user(s) said Thank You: drdyna

U-DAC8 with Linux / Alsa / BruteFIR? 1 year 1 month ago #21974

  • kalexm
  • kalexm's Avatar
  • Offline
  • Fresh Boarder
  • Posts: 10
  • Thank you received: 1
  • Karma: 0
Hi,

I did just purchase a U-DAC8 for that purpose. I already own a mini sharc for two years, but found the number of taps limit too restrictive in the sharc. I ordered an odroid XU4 and an U-Dac8. First tests not including the U-DAC8 showed that 132k Taps can be run in 64Bit with low latency in with less than 20% CPU. I guess it will even work with the odroid C1 that has no fan.

In comparison the sharc boxes are cheaper result in far less fiddling and will cost you less headache but mean less FIR Taps.

I jut got stuck in getting the U-Dac8 to run. I will post some results here when I finished testing.

best,

Alex
The administrator has disabled public write access.
The following user(s) said Thank You: drdyna

U-DAC8 with Linux / Alsa / BruteFIR? 1 year 1 month ago #21979

  • drdyna
  • drdyna's Avatar
  • Offline
  • Fresh Boarder
  • Posts: 19
  • Karma: 0
kalexm wrote:
Hi,



I jut got stuck in getting the U-Dac8 to run. I will post some results here when I finished testing.

best,

Alex

Awesome, thank you! I tried (with much cussing and futility) to get BruteFIR running with some of my older multichannel sound cards because of how finicky the drivers can be. I have like ~8 assorted older PCs that well exceed what BruteFIR needs to run, I'm just trying to make sure that the U-DAC8 can be used easily..and kinda half-hoping that someone has a BruteFIR config file I could take a peek at.

I think I would rather use the U-DAC8 simply for the reason you stated, I'd like to be able to run with as many taps and filters as possible. The config / GUI for the OpenDRC looks a lot easier to work with than BruteFIR's config, but if that means I'll run out of taps trying to implement two 4-way @ LR48, then I'd have to pass.

I may just buy both of them in a couple of months..I already own 3 (two 2x4s and a 10x10) so I may as well extend the family! :)
The administrator has disabled public write access.

U-DAC8 with Linux / Alsa / BruteFIR? 1 year 3 weeks ago #22127

  • drdyna
  • drdyna's Avatar
  • Offline
  • Fresh Boarder
  • Posts: 19
  • Karma: 0
Okay, one more question, I'm pretty sure the answer is yes, but I'd like to make sure before making any decisions.

I currently have a MiniDSP 10x10. If I decided to go with the OpenDRC instead, I'm assuming I can use one of the digital outputs on the 10x10 to feed the 2 channels I'd like to run FIR filtering on into the OpenDRC's digital in?

The reason I'm asking is, I run a 7.1 setup. I've been using the 10x10 to do 3x 2 way crossovers (left, center, right), so what I'm thinking would go like this:

AVR analog out -> MiniDSP 10x10 digital out (only Left and Right) -> OpenDRC FIR filter -> amp

While still using all the analog outs on the 10x10, for feeding Center and subwoofers.

Will this tear a hole in the space time continuum?
The administrator has disabled public write access.

U-DAC8 with Linux / Alsa / BruteFIR? 1 year 3 weeks ago #22132

  • dreite
  • dreite's Avatar
  • Offline
  • Platinum Boarder
  • Posts: 842
  • Thank you received: 412
  • Karma: 78
That configuration should work. Your path through the OpenDRC will obviously have a bit more latency than the analog outputs on the 10x10. Whether that's anything to worry about is up to you.

Dave.
The administrator has disabled public write access.
The following user(s) said Thank You: drdyna

U-DAC8 with Linux / Alsa / BruteFIR? 1 year 3 weeks ago #22133

  • drdyna
  • drdyna's Avatar
  • Offline
  • Fresh Boarder
  • Posts: 19
  • Karma: 0
Not a problem at all.

In fact, I might be able to just bump all the 10x10 outputs except the digital by..whatever it is, like 2ms?
The administrator has disabled public write access.

U-DAC8 with Linux / Alsa / BruteFIR? 1 year 3 weeks ago #22134

  • dreite
  • dreite's Avatar
  • Offline
  • Platinum Boarder
  • Posts: 842
  • Thank you received: 412
  • Karma: 78
drdyna wrote:
Not a problem at all.

In fact, I might be able to just bump all the 10x10 outputs except the digital by..whatever it is, like 2ms?

No, probably much more than that.....depending upon the type of FIR filtering you'd be implementing in the OpenDRC unit.

Dave.
The administrator has disabled public write access.
The following user(s) said Thank You: drdyna

U-DAC8 with Linux / Alsa / BruteFIR? 1 year 3 weeks ago #22135

  • drdyna
  • drdyna's Avatar
  • Offline
  • Fresh Boarder
  • Posts: 19
  • Karma: 0
Hrmph.

I guess I'll have to measure it to find out..as long as it's not outside of the range of the 10x10's delay. ¬.¬
The administrator has disabled public write access.

U-DAC8 with Linux / Alsa / BruteFIR? 1 year 3 weeks ago #22142

  • dreite
  • dreite's Avatar
  • Offline
  • Platinum Boarder
  • Posts: 842
  • Thank you received: 412
  • Karma: 78
Most likely it will be out of the delay range of your 10x10 unit. I don't remember on the 10x10, but the 2x8 plugin only allows delays to 9mS. Most any FIR filter you program will probably exceed that amount of delay.
Whether this is an issue or not is up to you.

Dave.
The administrator has disabled public write access.
The following user(s) said Thank You: drdyna

U-DAC8 with Linux / Alsa / BruteFIR? 1 year 3 weeks ago #22147

  • drdyna
  • drdyna's Avatar
  • Offline
  • Fresh Boarder
  • Posts: 19
  • Karma: 0
So I found the math surrounding this, and it is indeed much different than I expected.

Thank you very much for bringing this to my attention.

Must do more research!
The administrator has disabled public write access.

U-DAC8 with Linux / Alsa / BruteFIR? 1 year 3 weeks ago #22151

  • dreite
  • dreite's Avatar
  • Offline
  • Platinum Boarder
  • Posts: 842
  • Thank you received: 412
  • Karma: 78
Use rePhase and generate some typical filters you might utilize on your project. That will give you an idea of delays incurred in the OpenDRC unit.

Dave.
The administrator has disabled public write access.

U-DAC8 with Linux / Alsa / BruteFIR? 1 year 2 weeks ago #22201

  • kalexm
  • kalexm's Avatar
  • Offline
  • Fresh Boarder
  • Posts: 10
  • Thank you received: 1
  • Karma: 0
in general:
U-DAC 8 connected to a Odroid XU4 running 8 Channels brutefir with more than 262k Taps worked. Depending on latency between 20 and 50% CPU Load.

- The U-DAC requires a somewhat recent kernel > 3.10. Finally I managed to get it running. It was simply muted.
- brutefir does not work on all arm processors. XU4 works, U3 does not (missing implementation of glibc functions)
- CPU Load on XU4 was quite low depending on latency configuration - number of taps limit is higher than neccessary for me. I guess even 512k Taps will work.
- No audible artefacts. Neither routing the audio-stream directly to U-DAC nor routing it through brutefir.

Here is my brutefir test-config:

'fut' is the filter file. You can create it with rephase. Pretty neat tool. Would not recommend creating the filters with octave anymore.
[email protected]:~# cat .brutefir_config
coeff "drc_l" {
       filename: "/root/fut";
       format: "S16_LE";     # file format
       attenuation: 0.0;   # attenuation in dB
       blocks: -1;         # how long in blocks
       skip: 0;            # how many bytes to skip
       shared_mem: false;  # allocate in shared memory
};

coeff "drc_r" {
       filename: "/root/fut";
       format: "S16_LE";     # file format
       attenuation: 0.0;   # attenuation in dB
       blocks: -1;         # how long in blocks
       skip: 0;            # how many bytes to skip
       shared_mem: false;  # allocate in shared memory
};
 
## INPUT DEFAULTS ##
 
input  "l_in","r_in" {
       device: "file" {path: "/dev/stdin";};
       sample: "S16_LE";   # sample format
       channels: 2/0,1;    # number of open channels / which to use
       delay: 0,0;         # delay in samples for each channel
       maxdelay: -1;       # max delay for variable delays
       mute: false,false;  # mute active on startup for each channel
};
 
## OUTPUT DEFAULTS ##
 
output "C1","C2","C3","C4","C5","C6","C7","C8","C9","C10" {
        device: "alsa" { device: "hw:1,0";};  # module and parameters to put audio
#         device: "file" {path: "/dev/stdout";};
        sample: "S32_LE";   # sample format
        channels: 10;    # number of open channels / which to use
        delay: 0,0;         # delay in samples for each channel
		maxdelay: -1;	    # max delay for variable delays
		mute: false, false; # mute active on startup for each channel
        dither: false;      # apply dither
		merge: false;       # merge discontinuities at coeff change
};
 
## FILTER DEFAULTS ##

filter "l1_filter" {
       from_inputs: "l_in"/8.0;
       to_outputs: "C1"/0.0;
       process: -1;        # process index to run in (-1 means auto)
       coeff: "drc_l";
};

filter "r1_filter" {
       from_inputs: "r_in"/8.0;
       to_outputs: "C2"/0.0;
       process: -1;        # process index to run in (-1 means auto)
       coeff: "drc_r";
};
filter "l2_filter" {
       from_inputs: "l_in"/8.0;
       to_outputs: "C3"/0.0; 
       process: -1;        # process index to run in (-1 means auto)
       coeff: "drc_l";
};

filter "r2_filter" {
       from_inputs: "r_in"/8.0;
       to_outputs: "C4"/0.0; 
       process: -1;        # process index to run in (-1 means auto)
       coeff: "drc_r";
};
filter "l3_filter" {
       from_inputs: "l_in"/8.0;
       to_outputs: "C5"/0.0;
       process: -1;        # process index to run in (-1 means auto)
       coeff: "drc_l";
};

filter "r3_filter" {
       from_inputs: "r_in"/8.0;
       to_outputs: "C6"/0.0;
       process: -1;        # process index to run in (-1 means auto)
       coeff: "drc_r";
};
filter "l4_filter" {
       from_inputs: "l_in"/8.0;
       to_outputs: "C7"/0.0;
       process: -1;        # process index to run in (-1 means auto)
       coeff: "drc_l";
};

filter "r4_filter" {
       from_inputs: "r_in"/8.0;
       to_outputs: "C8"/0.0;
       process: -1;        # process index to run in (-1 means auto)
       coeff: "drc_r";
};
The administrator has disabled public write access.

U-DAC8 with Linux / Alsa / BruteFIR? 1 year 2 weeks ago #22216

  • devteam
  • devteam's Avatar
  • Online
  • Administrator
  • Posts: 5123
  • Thank you received: 632
  • Karma: 119
Very cool indeed! Thanks for the update and sharing your info. We ought to build a nice app note for it.. :-)
Btw, 262k taps/ch? That's a lot.. :-)

Devteam
MiniDSP, building a DIY DSP community one board at a time.
The administrator has disabled public write access.
Time to create page: 0.142 seconds