Is room correction possible?

  • This topic has 15 replies, 4 voices, and was last updated 18 years ago by Jxn.
Viewing 10 posts - 1 through 10 (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

Viewing 10 posts - 1 through 10 (of 16 total)
  • The forum ‘General Discussion’ is closed to new topics and replies.