BruteFIR - digital cross over

Δεν το είχα ξανακούσει… αλλά εντυπωσιακό…
Από προδιαγραφές… μαμαει πραγματικά.
Μπορώ είδη να φανταστώ μια rack mounted φετουλα επαγγελματικών προδιαγραφών με δαύτο και ένα όμορφο Interface.
Το FFTW υποστηρίζει και altivec και πρόσφατα cell, αλλά εκτιμώ ότι η πιο κατάλληλη πλατφόρμα θα είναι amd64 (μάλλον δύσκολο να παίξει σε stbs χωρίς κάν altivec).

Αν ξεκινήσεις κάνα project ενημέρωσε μας σε παρακαλώ.
 
Το project είναι στο αρχικό στάδιο.
Ενδιαφέρομαι για L/R ενεργά ψηφιακά ηχεία τριών δρόμων (δύο κανάλια)
Με δυνατότητα να γίνουν L/R/C (τρία κανάλια)

Επιλογές που έχω σχεδόν κατασταλάξει (Δέχομαι γνώμες)

0) DAC: το Sabre DAC [
[KEY FEATURES
SNR/DNR : 130dB (dual-differential mode)
SNR/DNR : 128dB (differential mode)
THD+N: -112dB
] Υπαρχει κάποια άλλο DAC να κοιτάξω?
  • Tα 12 κανάλια DAC και οι 6 προενισχυτές Θα τροφοδοτούνται από Ισχυρη Μπαταρία αυτοκινήτου [Αυτές που χρησιμοποιούν στο CAR AUDIO], για χαμηλό θόρυβο.
  • Το Volume control σκέφτομαι να γίνεται ψηφιακά μέσω DAC. [Δηλαδή μέσω DAC θα ελέγχω την τάση για το Volume control στους προενισχυτές. Για aυτό έχω 12 κανάλια DAC [Ποιά είναι η γνώμη σας σε αυτό?]
  • Τα τwiter θα έχουν DIY ενισχυτή 20-25 Watt , A τάξης.
  • Όταν κατασταλάξω στο ψηφιακό cross over
    http://www.dspguide.com/ch14/5.htm
    θα προσπαθήσω να το φτιάξω για FPGA ώστε η συσκευή να είναι αυτόνομη, δεν έχω αποφασίσει ακόμα αρχιτεκτονική.
  • Η διαδρομή του αναλογικού ήχου θα είναι ελάχιστη μέχρι τα drives.
  • Μηχανική απομόνωση των ηλεκτρονικών από την ταλάντωση του ήχου. (Με μελέτη ...)
  • Δεν έχω κατασταλάξει τί είδους τελικούς DIY για mid και Woofer
 
Last edited:
στο παρακάτω thread,
Χρησιμοποιώντας τις δυνατότητες τις κάρτας γραφικών έχουν
με FIR 8192 tap Χ-over.

δηλαδή χρησιμοποιώντας μια κάρτα γραφικών
http://gr.asus.com/products.aspx?l1=...00&modelmenu=1 ) είναι αρκετή

μπορούν να πάρουν ένα τραγούδι (στέρεο) να το κάνουν split σε 8 κανάλια (4 για το Left και 4 για το Right) το στέλνουν σε ένα πολυκάναλο ενισχυτή και μετά έχουν τετράδρομο ηχείο.


Ακούγεται ενδιαφέρον, αναρωτιέμαι αν το έχει δοκιμάσει κάποιος.?


http://koonlab.com/MultiAmpForEveryo...DMI_AVAMP.html

http://www.diyaudio.com/forums/showt...5&pagenumber=1
 
στο παρακάτω thread,
Χρησιμοποιώντας τις δυνατότητες τις κάρτας γραφικών έχουν
με FIR 8192 tap Χ-over.

δηλαδή χρησιμοποιώντας μια κάρτα γραφικών
http://gr.asus.com/products.aspx?l1=...00&modelmenu=1 ) είναι αρκετή

μπορούν να πάρουν ένα τραγούδι (στέρεο) να το κάνουν split σε 8 κανάλια (4 για το Left και 4 για το Right) το στέλνουν σε ένα πολυκάναλο ενισχυτή και μετά έχουν τετράδρομο ηχείο.


Ακούγεται ενδιαφέρον, αναρωτιέμαι αν το έχει δοκιμάσει κάποιος.?


http://koonlab.com/MultiAmpForEveryo...DMI_AVAMP.html

http://www.diyaudio.com/forums/showt...5&pagenumber=1

Όχι αλλά πολύ θα ήθελα. Αν και δεν μπορώ να βοηθήσω, μπορώ κι εγώ να ρωτήσω, αν ένας "ταπεινός" επεξεργαστής (π.χ. παλαιός Ρ4) αρκεί για τη δουλειά σε real time?
Ξέρω ότι πρόκειται καθαρά για μαθηματικές πράξεις, μήπως όμως βοηθάει η κάρτα ήχου?? (αντίστοιχα με αυτό που κάνουν οι γραφικών δηλ.)
 
Το bruteFIR βασίζεται σε πιο γρήγορο αλγόριθμο και πρέπει να τρέχει να τρέχει σε p4 για τρείς δρόμους και έξτρα φίλτρα…
Το FIR είναι πιο απαιτητικό. Ο koon κατάφερε να τρέξει τον αλγόριθμο σε μια φτηνή vga. Με 50 ευρώ vga (στον Pentium 4 λ.χ.) τρέχει τον ολοκληρωμένο αλγόριθμο!
Ακόμα προσπαθώ να κατανοήσω τα μαθηματικά… οπότε δεν μπορώ να εκτιμήσω τις διαφορές του bruteFIR vs FIR.
Το κακό με την ‛έκδοση’ του koon είναι ότι δεν είναι τόσο φιλική στο χρήστη ακόμα.

Όσο για το εάν μια κάρτα ήχου μπορεί να κάνει την ίδια δουλειά… όχι με τα dsp και τα τσιπάκια που φοράνε φοβάμαι. Oι vga έχουν εξελιχθεί τόσο πολύ τα τελευταία χρόνια, εσωτερικά αποτελούνται από εκατοντάδες μικρούς μαθηματικούς επεξεργαστές που λειτουργούν παράλληλα. Με τα κατάλληλα εργαλεία προγραμματισμού μπορούμε να χρησιμοποιήσουμε τις vga όπως κάποτε χρησιμοποιούσαμε τους ‛μαθηματικούς συνεπεξεργαστές’ επιταχύνοντας την λύση μαθηματικών προβλημάτων.
 
Λίγη προσοχή παραπάνω εκ μέρους μου δεν βλάπτει. Το λέει ο άνθρωπος στο thread του Diyaudio ότι οι απαιτήσεις σε hardware είναι πολύ μεγαλύτερες και από 4πύρηνο.

Φοβερό αυτό με την κάρτα! H ATi να έχει άραγε κάτι ανάλογο με το cuda της nvidia??
 
Το cuda είναι το πιο ‛εύκολο’ μοντέλο προγραμματισμού. Η nvidia το έχει υποστηρίξει με marketing αλλά και με πραγματική υποστήριξη στην κοινότητα των προγραμματιστών.
Η ati έχει το stream και γενικά υπάρχουν και πολλές άλλες βιβλιοθήκες προγραμματισμού.
Το παλικάρι ο koon έμαθε cuda και έγραψε το πρόγραμμα του εκεί.
Μόλις κυκλοφόρησε και ένα μοντέλο προγραμματισμού με όνοmα OpenCL (αντίστοιχα όπως OpenGL), το οποίο θα υποστηρίζετε τόσο από την ati όσο και την nvidia (και άλλους).
 
Πάντως το dcx2496 πετώντας τροφοδοτικά και τελεστικούς από είσοδο έξοδο και βάζοντας λάμπες παίζει καλύτερα από ότι άλλο έχω ακούσει .
Το μόνο που το φτάνει είναι ένα απλό πυκνωτακι που να κόβει 6dB/oct.
Όσο για αυτό που συζητάτε δεν έχω καταλάβει ακόμα ούτε τι είναι !!!!!
 
Ασχολήθηκα λίγο με το brutefir
Ένα μικρό proof of concept – σε commodity hardware.
Για αρχή δύο screen captures
 

Attachments

  • Screenshot.jpg
    Screenshot.jpg
    124.1 KB · Views: 22
  • Screenshot-1.jpg
    Screenshot-1.jpg
    127.8 KB · Views: 14
Αφού πειραματίστηκα λίγο σε 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
};
 
Last edited:
Δεν ξέρω πια είναι τα εύκολα… ίσως τα behringer.
Δύσκολο ήταν το στήσιμο την πρώτη φορά και σίγουρο δύσκολο να καταγράψω και όλα τα βήματα μέχρι να καταλήξω στα παραπάνω.

Αλλά μιας και είχα χρόνο μες το ΣΚ είπα να ρίξω μια ματιά από περιέργεια. Αρχικά διαπιστώνω ότι ‛η πλατφόρμα’ δουλεύει. Και το καλό είναι ότι είναι open source. Σε Open source free software δεν έχω βρει κάτι αντίστοιχο σε δυνατότητες σε περιβάλλον windows (έχει κάποια εύχρηστα απλά plugins ακόμα και το foobar). Ως οpensource πιθανά να δούμε μέχρι και έτοιμα embedded συστήματα που να το ενσωματώνουν στο μέλλον.

{ Μερικές θεωρητικές δυνατότητες
Μια ενδιαφέρον δυνατότητα είναι ότι μπορείς να στείλεις το σήμα σε πολλές digital εξόδους, (αντί των analog.)
Άλλη ότι μπορείς να προετοιμάσεις μια μικρή ‛συσκευή’ σε usb disk και να τρέχει φίλτρα που έχουν βγει από άλλα περιβάλλοντα όπως το http://www.acourate.com/
Γενικά υπάρχουν εργαλεία και για drc.
}
Είναι εμφανές ότι η δύσκολη δουλειά είναι από εδώ και μετά… οι δυνατότητες μπορεί να είναι πολλές άλλα σε καμία περίπτωση δε σημαίνει ότι είναι εύκολα τα πράγματα. Για εμένα είναι κυρίως μια εκπαιδευτική διαδικασία.