Αφού πειραματίστηκα λίγο σε virtual machines επέλεξα ubuntu καθώς το απαραίτητο software ήταν διαθέσιμο σε Binary πακέτα προς εγκατάσταση.
Τα πακέτα που χρησιμοποίησα για το παραπάνω είναι τα alsaplayer-jack jackd brutefir .
Παραπάνω βλέπετε δύο example configs.
Το πρώτο ένα απλό φίλτρο για το στερεοφωνικό σήμα όπου απλά προσθέτουμε delay στο ένα κανάλι. Ήταν το πιο απλό φίλτρο για να επιβεβαιώσω ότι τα παραπάνω δουλεύουν.
Το δεύτερο είναι πιο περιπολικό παίρνοντας ως input το stereo ήχο εφαρμόζονται μια σειρά από φίλτρα για 8 ξεχωριστά κανάλια (λχ. Room correction κ xover).
Το config του πρώτου παραδείγματος:
# Adapted from
http://www.duffroomcorrection.com/wiki/Simple_Brutefir_Config
## DEFAULT GENERAL SETTINGS ##
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
logic: "cli" { port: 8091; };
## INPUT DEFAULTS ##
input "l_in","r_in" {
device: "jack" { ports: "","";};
sample: "AUTO"; # 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 "l_out","r_out" {
device: "jack" { ports: "",""; };
# device: "file" {path: "/dev/stdout";};
sample: "AUTO"; # 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
dither: false; # apply dither
};
## FILTER DEFAULTS ##
filter "l_filter" {
from_inputs: "l_in"/8.0;
to_outputs: "l_out"/0.0;
process: 0; # process index to run in (-1 means auto)
coeff: -1; # -1 means "copy"
delay: 0; # predelay, in blocks
crossfade: false; # crossfade when coefficient is changed
};
filter "r_filter" {
from_inputs: "r_in"/8.0;
to_outputs: "r_out"/0.0;
process: 0; # process index to run in (-1 means auto)
coeff: -1;
delay: 7; # predelay, in blocks
crossfade: false; # crossfade when coefficient is changed
};