You are here: Home » Topic » Is room correction possible?

Is room correction possible?

This topic contains 15 replies, has 4 voices, and was last updated by  Jxn 11 years, 1 month ago.

Viewing 15 posts - 1 through 15 (of 16 total)
  • Author
    Posts
  • #732

    Bo Mellberg
    Participant

    Hi all!

    I’m running mt-daapd on a Debian box, serving my M1001. I have seen that there exists room correction plugins for slimserver on windows. With a simple room measurement you convolve the impulse response of your room with the final streming wav, making every music file played on you device beautifully room corrected, thus sounding better.

    Is this possible with firefly/mt-daapd? I know there exists convolution filters on linux (brute-fir), but is it possible to engage that filter with a convolution before streaming the data to the soundbridge?

    I think this could be a revolutionary step to add hifi-qualities to the whole sound device business.

    /Bo

    #7082

    fizze
    Participant

    erm you didnt just mention mp3 and high-quality in one sentence, did you? 😉 😀

    and, well, sure its possible. use a named pipe in-between step before the data is streamed to the SB. but the “magic” that happens then has to be tricky. convolution with a simple FIR filter wont really do “magic”. and room impulse response doesnt really have a lot of effects.
    If you do have a real stereo system on the other hand, the sound/surround receiver is capable of creating a “sweet spot”.
    Those are ranked 1000$ and above though. just for the amp.

    #7083

    Bo Mellberg
    Participant

    @fizze wrote:

    erm you didnt just mention mp3 and high-quality in one sentence, did you? 😉 😀

    Erm, no I didnt. As a matter of fact I didnt mention mp3:s at all…:evil:

    @fizze wrote:

    and, well, sure its possible. use a named pipe in-between step before the data is streamed to the SB. but the “magic” that happens then has to be tricky. convolution with a simple FIR filter wont really do “magic”. and room impulse response doesnt really have a lot of effects.
    If you do have a real stereo system on the other hand, the sound/surround receiver is capable of creating a “sweet spot”.
    Those are ranked 1000$ and above though. just for the amp.

    If it would flatten my frequency response, that would be more than enough for me. My “stereo” is more than capable…

    #7084

    rpedde
    Participant

    @Bo Mellberg wrote:

    Erm, no I didnt. As a matter of fact I didnt mention mp3:s at all…:evil:

    You mentioned specifically linux, so I’m going to assume you are using flac. The ssc-script transcoder uses a script to do transcoding. Check your ssc_script parameter in your config file to find out where it is. Probably you can modify the mt-daapd-ssc.sh script that you are probably already using to pass the stream through a convolution filter before it gets handed back to the client:



    .. snip ..

    flac_file() {
    $FLAC --silent --decode --stdout "$FILE" | $WAVSTREAMER -o $OFFSET $FORGELEN | /bin/some/convolution/filter -w -h -a -t -e -v -e -r
    }

    .. snip ..

    Somethin like that would work, so song as the convolution filter took .wav files on stdin, and streamed them out stdout in better than realtime.

    Yell if that isn’t clear.

    – Ron

    #7085

    Bo Mellberg
    Participant

    Yes, flac it is. And some mp3s, wouldnt hurt them either. Can transcoding be done for -all- music? I know about the quality difference, but the filtering is not to make the mp3s sound better, its to make my room sound better. 🙂

    Thanks for the snippet. I’ll try to get the brute-fir filter to work as soon as I have my room measured.

    Thanks again for the help with the Debian package!!

    /Bo

    #7086

    rpedde
    Participant

    @Bo Mellberg wrote:

    Can transcoding be done for -all- music? I know about the quality difference, but the filtering is not to make the mp3s sound better, its to make my room sound better. 🙂

    Hmm… not really. Not right now. I’d have to think on that. Probably need another config option for that.

    — Ron

    #7087

    fizze
    Participant

    well, what if you just add all codec types to transcoding?
    *cough*

    anyway curious on those filter parameters 😉
    also, how many taps are serious, actually.

    but for sure Id be nice to “measure” subjective differences in, say, LabView first…

    #7088

    rpedde
    Participant

    @fizze wrote:

    well, what if you just add all codec types to transcoding?
    *cough*

    If it sees a connection from soundbridge, it knows better than to transcode, even if you specified to transcode it. That’s what keeps from transcoding wma when you connect with soundbridge, but not iTunes. :/

    #7089

    fizze
    Participant

    ah, I see. The fast programmer chose the easy path 😀
    (no pun intended)

    Btw is there any chance you did document your build setup thingy, so someone like me would have any clues in setting them up?

    I remember that cross-compiling always is a pain to set up.

    Id really love to dive in and fix/change/debug/improve this or that little feat.

    As soon as I have a new HD Im gonna put edgy on and wanna start cracking. 😉

    I guess there isnt any chance for a cross-compile stuff in win32? :wonder:

    #7090

    rpedde
    Participant

    @fizze wrote:

    ah, I see. The fast programmer chose the easy path 😀
    (no pun intended)

    Well, yeah. 🙂

    I never really thought about transcoding for aac or mp3. I always considered that you’d never want to transcode those because what would you gain? More bandwidth, same audio.

    I didn’t ever think about passing them through filters. I might have to rethink that idea.

    Btw is there any chance you did document your build setup thingy, so someone like me would have any clues in setting them up?

    slug, or the whole build pass? The whole build pass is pretty specific to my house, as it does stupid hardcoded things, like etherwaking machines to do builds, expecting nfs mounts that I have set up here, etc. It’s not very portable. 🙁

    The build scripts for individual targets are relatively portable though. In the case of nslu2, it’s pretty easy — just checkout the tree and do a “make mt-daapd-ipk”. That downloads all the crosstool stuff, builds cross compilers, everything. Really easy. Much easier than you would think. 🙂

    There are files that I should make public, though — the control files, and the makefile I use, etc.

    perhaps I’ll put those along with the other portable build stuff I’m using in a new package on subversion. That would perhaps help other to get build chains going.

    I remember that cross-compiling always is a pain to set up.

    Used to be, but crosstool makes it pretty easy to set up cross-compiles. It basically took all the little patches and whatnot floating around the net and put them all in one package, so you can always easily make a cross-compilation toolset for just about any platform on just about any other platform. Nice.

    For unslung, it’s much like that… it builds the necessary crosstools for you as part of the “make” target.

    Id really love to dive in and fix/change/debug/improve this or that little feat.

    I certainly won’t stop you, and I’d certainly be happy to take the diffs. 😉

    As soon as I have a new HD Im gonna put edgy on and wanna start cracking. 😉

    As a debian fan, I want to not like ubuntu, but I can’t. It’s really nice.

    I guess there isnt any chance for a cross-compile stuff in win32? :wonder:

    Sure… the slug site here has instructions for at least two different windows build systems — one using CoLinux and the other using vmware player and an ubuntu image.

    It’s possible you could get a cross-environment going with cygwin, too, but I don’t see any documentation on it.

    — Ron

    #7091

    fizze
    Participant

    wow. mad props for explaining all that.
    yeah, debian is really nice, I was a slackware person, and even had mandrake at some point – so I dont really care as long as I can get proper package support and gnome 😉 (Im addicted to wanda lol)

    alright, so I guess i want x86 and the arm5 stuff so I can compile for GNU Linux/win32/unslung.

    well, cygwin is soo much bloatware and theres just too much lib hacking involved for my taste. coLinux does sound nice, but I really wanna get a nice Linux up again.
    Its a shame I’ve been using windoze since my Linux HD died.

    btw, just out of curiosity Bo Melberg, what kinda sound system do you sport?
    Im thinking of giving myself an Onkyo TS-SR674, Im always glad on some advice, sound-wise. 🙂

    #7092

    Bo Mellberg
    Participant

    My sound system is nothing specal, but I’m trying to slowly step up to a higher league.

    – My source is either X-Fi Elite Pro in the HTPC or the Pinnacle SB 1001. THe X-Fi is connected via analog cables to the reciever and the SB via digital coax.

    – The reciever is a H/K AVR 507. This is my weak link at the moment. I have a H/K Signature 2.1 power amp coming in.

    – The speakers are QRS Tellus (swedish brand) bi-amped from the H/K. Cost was about $2500.

    My biggest problem is bass resonances because of the non dampened room (wooden floor, naked walls). I’m more into solving that than having a perfect flat curve at sweetspot. Is there any better way of measuring the room than doing it at absolute sweetspot, thus making the sweetspot the only useful listening position?

    The Onkyo seems nice. I have an Integra A-807 which I connect to my system from time to time. It has a nice natural sound with good bass control. I really like Onkyo, always have…

    /Bo

    #7093

    fizze
    Participant

    Nice setup. 🙂
    Well, carpets might be easier to do than correcting the frequency response. 😉

    I too have a wooden floor and bare walls (so far – just moved in).
    So I know the effect of seemingly standing waves in the bass range. Doesnt sound too good. 🙁

    Onkyo is a nice brand indeed. What I dig about the 647 is its wide range of inputs. from composite to digital audio to even HDMI. the H/Ks that can do that are price-tagged twice as much and more. But they are more or less equal, otherwise.

    Anyway, the soundbridge itself is more than powerful enough to do a FIR or IIR in realtime. It’s blackfin shouldnt be at more than 20-30% load while decoding mpeg4 audio. So it would be more suited, but I donno about firmware access politics of roku. seems pretty restrictive. bugger.

    #7094

    Bo Mellberg
    Participant

    @fizze wrote:

    Anyway, the soundbridge itself is more than powerful enough to do a FIR or IIR in realtime. It’s blackfin shouldnt be at more than 20-30% load while decoding mpeg4 audio. So it would be more suited, but I donno about firmware access politics of roku. seems pretty restrictive. bugger.

    You mean hacking it and doing the convolution there? That would be even nicer! What OS does it run?

    /Bo

    #7095

    fizze
    Participant

    its propietary, but kinda linnux inspired.
    it is threaded though.

    I would guess its built on top of some blackfin SDK.

    I’ve done a project or two on those babies back then, and Analog Devices supplies tons of SDKs and engineer-to-engineer-notes.

    But the Roku forum is more suited for that.

    This could turn out rather simply, with the filter coefficients entered through the remote, or a simple-web-screen.

    You would, of course, have to compute the coeffs yourself.

Viewing 15 posts - 1 through 15 (of 16 total)

You must be logged in to reply to this topic.