Thursday, February 23, 2006


1. 64 bit floating point calculations
BruteFIR can actually do 64 bit calculation if the file is .dbl instead of .pcm format. This is set by the first line of script. note that the file name will also need to be changed.

2. External master clock
in my current setup, I can actually use BB as the master clock to control the RME ADI-4DD, RME HDSP 9652 inside the convolution machine and the RME HDSP 9632 in the main machine which will also be my music server and DVD player. I will start with 44.1KHz as the sync speed and if everything is OK, I will move up to 96K. Hopefully, using this setup, the ADI-4DD will also clean up the jitter from the source.

3. Digital crossover and mult-amp
This is my goal for the near future!!

The outcome

Now, the verdict. The sound is much better than my old Tact 2.0s. The sound is more 3D, focusing is pin point. The soundstage is very wide and much deeper than before. You can see the vocals a bit forward away from the band behind. The high is more extended and the bass is more tight.

PS With Uli's MarcV, the improvment is even more!!

Saturday, February 11, 2006

BruteFIR configuration file

This is the file I named "ac1corr". BruteFIR configuration file is the integral part of digital room correction.

Here is mine......!


float_bits: 32; # internal floating point precision
sampling_rate: 44100; # sampling rate in Hz of audio interfaces
filter_length: 8192,8; # length of filters
overflow_warnings: true; # echo warnings to stderr if overflow occurs
show_progress: false; # echo filtering progress to stderr
max_dither_table_size: 0; # maximum size in bytes of precalculated dither
allow_poll_mode: false; # allow use of input poll mode
modules_path: "."; # extra path where to find BruteFIR modules
monitor_rate: false; # monitor sample rate
powersave: true; # pause filtering when input is zero
lock_memory: true; # try to lock memory if realtime prio is set
convolver_config: "/";
# location of convolver config file

## Sections comprise types input, output, coeff and filter.
## input defines how BruteFIR gets its audio data
## output defines where BruteFIR sends its audio data after filtering
## coeff allows the input of filter coefficients like those generated by DRC,
## or crossover filters like high pass for a tweeter & low pass for a woofer.
## filter combines an input with filter coefficients producing an output
## The configuration below is probably the simplest you will get
## for a DRC setup. The input section reads in audio data
## from standard input, DRC corrections for the left and right speakers
## are read from their respective files. The left and right inputs and
## filter coefficients are then combined. The output is sent to ALSA,
## the linux sound system. BruteFIR is run from the command line using
## cdparanoia --output-raw-little-endian 2 - | brutefir ./.brutefir_config
## where the 2 is telling cdparanoia to rip the second track of the cd.


coeff "drc_l" {
filename: "/beesound/brutefir/filter/ep1/cor1l44.pcm";
format: "FLOAT_LE"; # file format
attenuation: 0.0; # attenuation in dB

coeff "drc_r" {
filename: "/beesound/brutefir/filter/ep1/cor1r44.pcm";
format: "FLOAT_LE"; # file format
attenuation: 0.0; # attenuation in dB

# module and parameters to get audio

input "left_in", "right_in" {
device: "alsa" { device: "hw:0";}; # ignore_xrun: true; };
sample: "S24_4LE";
channels: 26/0,1;


#output "left_out", "right_out" {

output "left_out", "right_out" {
device: "alsa" { device: "hw:0";}; # ignore_xrun: true; };
sample: "S24_4LE";
channels: 26/0,1;
delay: 0,3,282,282;
dither: true;



filter "l_filter" {
from_inputs: "left_in"/0.0;
to_outputs: "left_out"/0.0;
coeff: "drc_l";
filter "r_filter" {
from_inputs: "right_in"/0.0;
to_outputs: "right_out"/0.0;
coeff: "drc_r";

The program

This program is the intergral part of this software based digital room correction. I am currently using Uli's BruteFIR in USB. In the directory, there are 2 important files *go and *ep1, ep2, ep3......

Uli set up this programs by starting a endless loop so that BruteFIR detect 44.1KHz and 48kHz signal in repeated sequence. This will allow BruteFIR script to run no matter what the source frequency is. Clever isn't it!

It basically starts *ep1 and other similar programs. In my setup, I have commented all other lines and use *ep1 only. To edit *go or *ep1, you have to go to the start files are in the directory /beesound/start/. You have to edit them there. Then you have to reboot. During bootup the update is done automatically.

Now *ep1
I have added a few lines about sound card initial setting to prepare the sound card for the program.

## Setup sound card ##
#Sample Clock Source = Autosync
amixer -c 0 cset numid=11 0
#System Clock Mode = Slave
amixer -c 0 cset numid=12 1
#Autosync Reference = ADAT1
amixer -c 0 cset numid=14 4
#Line Out = off
amixer -c 0 cset numid=22 0
#Channel Connections
#clear all direct physical connections for safety
for ichannel in $(seq 0 1 25)
do amixer -c 0 cset numid=5 $ichannel,$ichannel,0
#playback connections
amixer -c 0 cset numid=5 26,0,32768
amixer -c 0 cset numid=5 27,1,32768
amixer -c 0 cset numid=5 28,2,32768
amixer -c 0 cset numid=5 29,3,32768

I have also changed the BruteFIR configuration file to the file name of your choice. Here I choice ac1corr.