Rasberry Pi and active crossover revolution

Status
This old topic is closed. If you want to reopen this topic, contact a moderator using the "Report Post" button.
No effin' way, BruteFIR liberally uses the Intel SIMD instruction for the convolution process.. That ain't gonna work on the Pi with an ARM processor. If you recompile it without the intel assembly instructions, it *might* work, but likely won't do so with decent throughput.

If you or anyone else do get it to work, please post details here :)
 
No effin' way, BruteFIR liberally uses the Intel SIMD instruction for the convolution process.. That ain't gonna work on the Pi with an ARM processor. If you recompile it without the intel assembly instructions, it *might* work, but likely won't do so with decent throughput.

If you or anyone else do get it to work, please post details here :)

Just got Brutefir working tonight. Doing a 2x2 convolution with 2048 sample IRs. It seems to use about one third of the available processing power. I am doing Ambiophonics from a S16_LE raw file to an external soundcard, or HDMI., so far; I only managed to get two channels out from HDMI, the last time I tried, some time ago.

Using 2012-12-16-wheezy-raspbian.zip.

I could not get Jconvolver to work because Jackd is broken, but there seems to be a cure for that now..

Audacity works too.
 
Just got Brutefir working tonight. Doing a 2x2 convolution with 2048 sample IRs. It seems to use about one third of the available processing power. I am doing Ambiophonics from a S16_LE raw file to an external soundcard, or HDMI., so far; I only managed to get two channels out from HDMI, the last time I tried, some time ago.

Using 2012-12-16-wheezy-raspbian.zip.

I could not get Jconvolver to work because Jackd is broken, but there seems to be a cure for that now..

Audacity works too.
Very interesting, great work. Are you doing any assembly-level CPU optimization, or straight C code?
 
Very interesting, great work. Are you doing any assembly-level CPU optimization, or straight C code?

I still have my linux/brutefir/alsa/jack L plates on...

After the fresh distro install, and upgrade, I think it was just "sudo apt-get install brutefir"

The latest distro, with hardware floating point whatnot, seems about three times faster than when I first tried convolution - I only got fconvolver to work then, and it took ages to get any sound out at all. I gave up then!
I read that there is a circuit fault with the internal stereo jack sound out, that may be fixed with later boards.
There is no alsa driver for my usb Quad Capture soundcard so I am using an old Soundblaster, but I don't think it can do input and output at the same time.
I beleive you can overclock, but I have not done so.

Regards,
David.
 
Its a home cinema still in build stage 6 15" sub 64 mids 200 tweets1080p projector with screen using computer connected Xbox kinect :) to control via voice and motion early days but I will get there. atm the idea of spending £25 per speaker on good quality crossover technology embedded in the stud walls is pretty good compared with the insanity of purchasing something which I don't know and don't trust :)

OMG. That many speakers ... i can tell it is early days LoL
 
Very interesting, great work. Are you doing any assembly-level CPU optimization, or straight C code?

ps. This might be useful:
Jackd Raspberry Real Time Audio - My-Lab
I have not actualy got it working yet, but it does not instantly fail like the 'standard' one does on the Rpi. Be careful not to overwrite it by installing QjackCtl, for example.
 
Last edited:
I read on the RPi forum that the RPi only supports up to 11 bits of audio.

Raspberry Pi • View topic - How to get high quality audio from R-Pi?

Misinformed (knowledge tends to change over time) or is this correct?

Subjectively it sounds fine using the HDMI (stereo only.) or the digital coax out of a USB soundblaster to an AV receiver.

I case I was deaf or deluded, I also recorded a -60dB 1kHz tone with Audacity and played it with aplayer on the Rpi to the USB Soundblaster, which was connected via the digital (coax) out to the digital input of a Roland Quad Capture. I recorded from this using Audacity. The only difference I could see from the original was increased noise (due to added dither?), but the (-60dB) signal was still about 60dB above the noise.floor. (CoolEdit Frequency Analysis FFT size 65536)

Seems ok, using a half-decent external soundcard..

A 32 bit float wav output file (after two soundcards) is here, for a short while:
https://www.dropbox.com/s/elshm36skg9rqgk/1000-tone-out.wav
 
As Basement I took a "Stock-Raspbian" and compiled MPD with Pipe-out so MPD is feeding Brutefir via PipeOut (Pipe-out is disabled by default on MPD so you have to build it from source).
Although there are Instructions all over the Internet, how to set up MPD and Brutefir, you will need some Linux Experience to get Things working.

Regards
 
FYI, for folks looking into doing DRC (using FIR filters) on RPi devices.

RPi2: BruteFIR uses the FFTW library for most of its heavy lifting. The most recent FFTW engine utilizes ARM7's SIMD instruction set (called NEON). Bottom line, BruteFIR on RPi2 should run reasonably efficient.


RPi: Since there's no NEON instructions on the RPi, you have to find a different way to optimize. Thankfully, someone figured out how to do limited FFT calculations using the RPi GPU. And even cooler, someone else figure out how a hack to replace the FFTW libraries with the faster GPU_FFT libraries on an RPi: https://github.com/gpu-fftw/gpu_fftw. I've not seen anyone put this together end-to-end with BruteFIR yet, but this is probably the best chance for high-speed convolution on an RPi.
 
I am using multi-channel outputs on Raspi2 and HDMI for active crossover

Some of you knows of me as provider of Windows based FIR plugin through Down load from file

Recently one Japanese audiophile developed FIR filter based on BruteFIR / mpd / HDMI interface. And prized at Magazine Nikkei Computer Raspberry PI technical competition.

Though it is not implemented on standard HDMI audio driver software, it worked well.
(1) Audio data on mpd (rapbian jessie) is converted to 96kHz / 32 bit x 2channel pipe output by mpd "format "96000:32:2".
This simplified sample rate conversion difficulties.
(2) FIR filter parameters are generated by "octave-signal" (MAT-LAB clone?).
to meet with BruteFIR library requirements.
(3) This can be 3way FIR filter and 4way FIR filter switched by "octave-signal" macros.
If you have volumio compliant multi-channel DAC , you can map 6 or 8 channels by "aplay" command, you can use your DAC using "aplay".

Prerequisite:
(a) Raspberry Pi2 (almost upto 70% of CPU Power consumption)
(b) Raspbian Jessie light or similar.
(c) HDMI multi-channel AV amplifier that can be used as Multi-channel Linear PCM D/A converter. We have tested on Marantz NR-1501 and Newer Yamaha ones.
But on older SONY TA-DA3200ES cannot be used though it can be used on Windows, I guess SONY was too older specification not compliant new HDMI specs.
(d) Speaker system for test
I have used Woofer Audio Technology 10C77 KAP in 56littre,Mid: Accuton C50-8-044 50mm Ceramic and Scan-Speak D3004-6640-00 Beryllium dome.

When played with this speaker the audience (almost demo is for 20 persons) commented below,
"The amplifier NR1501 is NOT powerful so lower section was sounds NOT powerful. But we felt Raspberry Pi2 and HDMI active crossover system opened NEWER HORIZON for those who like PC audio and high-end audio system.If we can have next demo, we like to listen to newer powerful amplifiers , especially low woofer amp."

This software archtecture can be used on Normal intel mpd/linux(such as Ubuntu Studio 64bit or similar).
If you are intereested in this system,please send me e-mail.
 
How to setup and install active crossover on Raspberry Pi2/HDMI

[Note]:You donot have to set memory split value lower.
If you set the value 16 you cannot output audio output through HDMI.

Preparations:

(1) Reboot and update:

sudo apt-get update
sudo apt-get upgrade
sudo rpi-update

Then reboot

(2) Install required software
sudo apt-get install libfftw3-dev mpd

(3) Install hdmi_play2.bin

cd /opt/vc/src/hello_pi
./rebuild.sh
cd
Download and expand :
http://audio2.amanogawa.info/public/text/hdmi_play2_v0.11_.tar.gz

cd
tar xvf hdmi_play2.tar.gz
cd hdmi_play2
make
sudo cp hdmi_play2.bin /usr/bin/

(4) Download and expand FIR filter modules

http://audio2.amanogawa.info/public/text/amafir_v0.12_.tar.gz

cd
tar xvf amafir.tar.gz
cd amafir_src
make
sudo cp amafir /usr/bin/

Then edit /etc/fstab


(5) setup /etc/mpd.conf

You have to backup current /etc/mpd.conf such as "sudo cp /etc/mpd.conf /etc/mpd.conf.old"

/etc/mpd.conf output section , you have to add,

audio_out {
type "pipe"
name "amafir"
command "amafir /home/pi/amafir | hdmi_play2.bin 96000"
# command "amafir /home/pi/amafir | nice -n -20 hdmi_play2.bin 96000"
format "96000:32:2"
}
 
Status
This old topic is closed. If you want to reopen this topic, contact a moderator using the "Report Post" button.