IPB

Welcome Guest ( Log In | Register )

foo_dsp_fsurround, a new surround processor for foobar2000 0.9.x
pro_optimizer
post Jan 28 2007, 00:59
Post #1





Group: Developer
Posts: 99
Joined: 6-June 06
Member No.: 31515



FreeSurround
is meant to be the foobar2000 equivalent of your hi-fi receiver's Dolby ProLogic II button (except that it uses a different algorithm).
Its purpose is to decode surround information from your stereo music (including mp3, of course), and to produce 5.1 output from it. It works with any stereo music containing surround info in a coding scheme compatible with any the following decoders:
- Dolby Surround
- Dolby ProLogic
- Dolby ProLogic II
- SRS CircleSurround
- SRS CircleSurround II
- DTS Neo:6
- Lexicon Logic7
- Stereo Quadrophonic (SQ) *
- Quadrophonic Stereo (QS) **

It will also faithfully play back your 'plain old' stereo music, with the exception that echoes are usually played over the surround speakers, and some sound sources, usually strongly distorted guitars, choirs etc., tend to surround the listener instead of being played over the front speakers alone.

Download
The plugin is attached at the bottom of this post.

Operation notes
In contrast to the other foobar2000 surround processors (Channel Mixer, Matrix Mixer and ATSurround Processor, as of Aug. 2008), FreeSurround provides independently steered surround channels, and very low crosstalk between channels. If your want to check the state of your surround decoders, you find a test mp3 file at the bottom of the post. It will play a voice on your left front, left rear, right rear, right front and center speaker (one speaker at a time) -- if your decoder is good; otherwise there will be some mishmash on the other channels. Also, FS, being a surround decoder, should not be confused with DSP effects which merely give you an enriched stereo experience, such as Creative CMSS 3D and foobar's Convert Stereo to 4 Channels, or common DSPs like Stadium, Hall etc. Nevertheless there are some options to upmix plain stereo content meaningfully.

Configuration notes
Here is a screen shot of the default settings in the config dialog (these happen to be also the settings that I use at home).


The default settings are good for many surround setups, but there are some tweakable options (see screen shot).
  • The sound field right after the decoding stage can be pictured as a 2-dimensional square with the listener at its center; this sound field can be further transformed spatially in several ways. The default setting is to leave the decoded field as it is, i.e., if a stereo track was downmixed from a discrete 5.1 track (e.g., from AC3 format) and is upmixed again with FreeSurround, it comes closest to the original source material when using the default settings. However, music that was not originally meant for surround playback can be spiced up quite a bit using these controls. The first option (Panorama) is to wrap the sound field around the listener in a circular manner. The slider allows to change the angle that the front soundstage takes up (i.e., the line between the front left and the front right corner of the sound field). Originally it is 90 degrees, but if it is set to, say, 270 degrees the front stage will be wrapped from behind the left ear along the front to behind the right ear of the listener. While the front stage is expanded, the side and rear sound field must correspondingly be compressed into the remaining space behind the listener. The second option (Dimension) allows to shift the sound field forward or backward without changing the shape. The third option (Depth) essentially scales the sound field to the back, i.e. the original square is resized along one axis (while the front stage stays where it is). These transforms are applied in the order in which they are listed here (the order matters). The last slider (Focus) is a bit experimental -- it allows to change the angular spread of the individual sound sources, either by making them more focal or less (i.e., more ambient). This is only really noticable with lots of speakers, but I would not overdo it.
  • The second group of controls is how the sound field is mapped onto the speakers. The first setting here is the channel setup; this allows you to select how many speakers you have and where they are placed (front left and right, center, rear left and right, side speakers, etc.). From the point of view of the decoder there at 16 possible positions along the edges of the square sound field (see this picture for an example), namely the 4 corners, the 4 midpoints (front center, back center, left side, and right side), and two positions on each edge half-way between the corners and the midpoint (e.g., front left center, front right center). Most people have only a subset of all these channels (e.g., 7.1) in some common locations, but you can have some fairly arbitrary setups (***). But note that the placement of the speakers in the room is actually not in a rectangle but instead follows the corresponding home theater rules. If you have a subwoofer you might want to do the bass management right here, but it is usually a better idea to let the sound card or amplifier do it if they offer the option (e.g. for active sub-satellite systems). The last option in this box is the stereo separation; this allows to effectively stretch the sound field horizontally in the front and/or back areas.

Change log
0.9.0
- fixed a steering bug in the 0.8.1 beta (sound field was shifted by a few degrees to the left due to an oversight; also steering was less accurate than it should have been)
- removed a library dependency (boost serialization) that could cause conflicts with other plugins using the same library but different version (to be confirmed as fixed)

0.8.1 (beta)
- basically a rewrite & cleanup; see this post for more details on the original beta announcement.
- supports more speaker arrangements (up to 16.1)
- supports more controls for sound field transformations (shift, stretch, wrap, ...)
- probably a bit faster, too

0.3.5
- now much faster when switching tracks

0.3.4
- new front and rear stereo separation controls
- 4 phase shifting modes are supported now
- new linear steering mode (better than the old one)
- fixed the dimension slider (negative values were mapped to 0)
- the gain is back at 100% due to request (you can still put the equalizer before FS to control the gain)

0.3.3
- added the option to invert the rear phase (like pl2 movie mode)
- added the option to specify the (surround) mixing coefficients which are assumed for decoding

pre-0.3.3
- changed "center width" into "center image", which controls how present the center speaker is (0.3-0.7 are good values for music).
- expanded the range of "dimension" to [-0.5 .. 1.0] where 0 is a normal surround soundfield, -0.5 moves the sound towards the front, 1.0 moves it backwards.
- changed the gain to ~85% to avoid clipping in practically all cases.
- fixed center/surround level (both were too loud it appears).


* SQ is decoded with mono surrounds (i.e. like ProLogic I), due to a defective coding specification.
** QS requires the front stereo separation to be set to 1.5, or else the sound field will be too narrow.
*** There is one little catch with the more exotic channels: foobar2000 (or Windows) do not expose some of the rarely used positions but instead allow to connect "top" speakers (meant for the ceiling). Therefore there is a bit of remapping going on for these positions: If you have 'side front left'/'side front right' speakers, connect them to the 'top front left'/'top front right' channels, if you have 'side back left/right' connect them to 'top back left/right', and if you have 'back center left/right' speakers you need to connect them to the 'top front center' and 'top back center' channels, respectively.

This post has been edited by pro_optimizer: May 31 2013, 21:31
Attached File(s)
Attached File  foo_dsp_fsurround_0.9.0.zip ( 333.2K ) Number of downloads: 8141
Attached File  channeltest.mp3 ( 69.99K ) Number of downloads: 2455
Attached File  foo_dsp_fsurround_source-0.9.0.zip ( 177.47K ) Number of downloads: 640
 
Go to the top of the page
+Quote Post
 
Start new topic
Replies
tebasuna51
post Feb 21 2007, 13:41
Post #2





Group: Members
Posts: 57
Joined: 11-July 06
Member No.: 32807



Using to downmix:
Lt = FL + 0.7071*FC + 0.8165*SL - 0.5774*SR
Rt = FR + 0.7071*FC - 0.5774*SL + 0.8165*SR

And your FS upmix with defaults and:
- Center Image (1.0)
- Simple and Not-Linear (Legacy)
I obtain output channels identical in phase and amplitude than input channels, with very little crosstalk:
CODE
       FL      FR      C       SL      SR
     ------  ------  ------  ------  ------
FL'  1.0000    -       -       -       -
FR'    -     1.0000    -       -       -
C'     -       -     1.0000    -       -
SL'    -       -       -     1.0000  0.0001
SR'    -       -       -     0.0001  1.0000


But changing to:
- Linear (Near Perfect)
The phase is ok but volume and crosstalk:
CODE
       FL      FR      C       SL      SR
     ------  ------  ------  ------  ------
FL'  0.9443    -       -     0.0836    -
FR'    -     0.9443    -       -     0.0836
C'   0.0230  0.0261  0.9995    -       -
SL'  0.0004    -     0.0003  0.9329  0.0063
SR'    -     0.0004  0.0003  0.0063  0.9329


This post has been edited by tebasuna51: Feb 21 2007, 13:42
Go to the top of the page
+Quote Post
pro_optimizer
post Feb 21 2007, 13:57
Post #3





Group: Developer
Posts: 99
Joined: 6-June 06
Member No.: 31515



QUOTE (tebasuna51 @ Feb 21 2007, 13:41) *
Using to downmix:
Lt = FL + 0.7071*FC + 0.8165*SL - 0.5774*SR
Rt = FR + 0.7071*FC - 0.5774*SL + 0.8165*SR

And your FS upmix with defaults and:
- Center Image (1.0)
- Simple and Not-Linear (Legacy)
I obtain output channels identical in phase and amplitude than input channels, with very little crosstalk:
CODE
       FL      FR      C       SL      SR
     ------  ------  ------  ------  ------
FL'  1.0000    -       -       -       -
FR'    -     1.0000    -       -       -
C'     -       -     1.0000    -       -
SL'    -       -       -     1.0000  0.0001
SR'    -       -       -     0.0001  1.0000


But changing to:
- Linear (Near Perfect)
The phase is ok but volume and crosstalk:
CODE
       FL      FR      C       SL      SR
     ------  ------  ------  ------  ------
FL'  0.9443    -       -     0.0836    -
FR'    -     0.9443    -       -     0.0836
C'   0.0230  0.0261  0.9995    -       -
SL'  0.0004    -     0.0003  0.9329  0.0063
SR'    -     0.0004  0.0003  0.0063  0.9329



Yes, the crosstalk in the corner cases could be lower.
I think the worst part is that the surrounds leak a bit into the front channels - probably I can further improve this.

The reason is this:
The simple version is built to have optimal behaviour at the 4 cardinal points (LF,RF,LS,RS) and to behave reasonably well in between.
The linear version is built to have approximately optimal behaviour over all positions, including the cardinal points. So the overall behaviour is much better, but your test results are worse because they test only 4 points which are treated like any other point by the linear steering.
If you tested every point in the soundfield you should see that the crosstalk (i.e. departure from the desired behaviour) is actually much lower.

Unfortunately my maths program cannot not just invert the encoding function but only approximate its inverse. What you see is the approximation error (which is largest at the corner points).
Go to the top of the page
+Quote Post
GeSomeone
post Feb 22 2007, 19:14
Post #4





Group: Members
Posts: 920
Joined: 22-October 01
From: the Netherlands
Member No.: 335



QUOTE (pro_optimizer @ Feb 21 2007, 13:57) *
Yes, the crosstalk in the corner cases could be lower.
I think the worst part is that the surrounds leak a bit into the front channels - probably I can further improve this.

From the info it looks like almost a non issue, at least with music. You hear the sound from the side that is louder, and there is the legacy option for less crosstalk.

just my 0.02


--------------------
In theory, there is no difference between theory and practice.
Go to the top of the page
+Quote Post

Posts in this topic
- pro_optimizer   foo_dsp_fsurround   Jan 28 2007, 00:59
- - pyr0rrzzz   What does it exactly do? I mean, I've got 5.1-...   Jan 28 2007, 11:29
- - Eclipsed Moon   I was actually thinking a few hours ago that I...   Jan 28 2007, 13:12
- - Rozzo   Hi, does this plugin offers any definite improvem...   Jan 28 2007, 17:58
- - pro_optimizer   QUOTE (pyr0rrzzz @ Jan 28 2007, 11:29) Wh...   Jan 28 2007, 20:28
|- - GeSomeone   QUOTE (pro_optimizer @ Jan 28 2007, 20:28...   Feb 2 2007, 14:16
||- - pro_optimizer   QUOTE (GeSomeone @ Feb 2 2007, 14:16) Her...   Feb 2 2007, 22:31
|- - TheBlakester   QUOTE (pro_optimizer @ Jan 28 2007, 15:28...   Sep 8 2008, 17:07
|- - pro_optimizer   QUOTE (TheBlakester @ Sep 8 2008, 18:07) ...   Sep 8 2008, 19:49
|- - TheBlakester   QUOTE (pro_optimizer @ Sep 8 2008, 14:49)...   Sep 8 2008, 22:16
|- - pro_optimizer   QUOTE (TheBlakester @ Sep 8 2008, 23:16) ...   Sep 10 2008, 01:18
- - pro_optimizer   Fixed a major problem with the overlapped filterin...   Jan 29 2007, 00:33
- - pro_optimizer   Here is a short sound sample from Mike Oldfield...   Jan 29 2007, 22:43
|- - Rozzo   Thanks Prooptimizer. I've been trying your p...   Jan 30 2007, 18:19
- - pro_optimizer   OK, added the GUI controls for center width and di...   Feb 3 2007, 02:38
|- - GeSomeone   QUOTE (pro_optimizer @ Feb 3 2007, 02:38)...   Feb 3 2007, 23:13
- - Googer   This plugin seems to work great to me except for o...   Feb 5 2007, 21:52
|- - pro_optimizer   QUOTE (Googer @ Feb 5 2007, 21:52) This p...   Feb 5 2007, 23:38
|- - Googer   Thanks for the quick fix, though I have another bu...   Feb 6 2007, 17:43
|- - pro_optimizer   QUOTE (Googer @ Feb 6 2007, 17:43) Thanks...   Feb 7 2007, 05:49
- - Googer   íMuchas gracias! This seems to be rock-solid ...   Feb 7 2007, 22:09
- - Chungalin   Very promising, really. It may become my substitut...   Feb 9 2007, 21:24
|- - pro_optimizer   QUOTE (Chungalin @ Feb 9 2007, 21:24) Ver...   Feb 10 2007, 21:15
|- - tebasuna51   I am interested in a good free dpl II decoder and ...   Feb 13 2007, 21:31
|- - pro_optimizer   Hey tebasuna, this is some very interesting data...   Feb 14 2007, 07:46
- - tebasuna51   Thanks for you quick answer. I agree with "ho...   Feb 14 2007, 17:52
- - tebasuna51   Near perfect your new version. - The Dimension sl...   Feb 14 2007, 20:31
- - pro_optimizer   Thanks again for the tables (interesting how much ...   Feb 15 2007, 17:37
|- - tebasuna51   QUOTE (pro_optimizer @ Feb 15 2007, 18:37...   Feb 15 2007, 19:28
- - Rozzo   Hi Pro-opt This post is only to ask your opinion ...   Feb 15 2007, 23:16
- - tebasuna51   ATSuround Encode2 works, in volume, like coeficien...   Feb 16 2007, 03:28
- - pro_optimizer   QUOTE (Rozzo @ Feb 15 2007, 23:16) Hi Pro...   Feb 17 2007, 12:25
|- - tebasuna51   QUOTE (pro_optimizer @ Feb 17 2007, 13:25...   Feb 17 2007, 17:23
|- - Rozzo   QUOTE Maybe you can post a few links to the progra...   Feb 18 2007, 16:38
- - Acropolis   I like this component, and been using it for a wee...   Feb 17 2007, 14:05
- - pro_optimizer   QUOTE (Acropolis @ Feb 17 2007, 14:05) I ...   Feb 18 2007, 03:21
|- - tebasuna51   QUOTE (pro_optimizer @ Feb 18 2007, 04:21...   Feb 20 2007, 03:17
- - GeSomeone   QUOTE (pro_optimizer @ Jan 28 2007, 00:59...   Feb 18 2007, 18:12
- - CZ812CE   Hi, I'm very intersted in this component. BT...   Feb 20 2007, 04:20
- - pro_optimizer   QUOTE (Rozzo @ Feb 18 2007, 16:38) Hi Pro...   Feb 20 2007, 15:41
|- - tebasuna51   QUOTE (pro_optimizer @ Feb 20 2007, 16:41...   Feb 20 2007, 17:31
- - pro_optimizer   Ok, here is the promised new version (0.3.4). New...   Feb 21 2007, 02:29
- - tebasuna51   Using to downmix: Lt = FL + 0.7071*FC + 0.8165*SL ...   Feb 21 2007, 13:41
|- - pro_optimizer   QUOTE (tebasuna51 @ Feb 21 2007, 13:41) U...   Feb 21 2007, 13:57
|- - GeSomeone   QUOTE (pro_optimizer @ Feb 21 2007, 13:57...   Feb 22 2007, 19:14
- - poisas   I wonder whats happening ? WARNING : foo_dsp_fsur...   Feb 22 2007, 17:35
- - Chungalin   Glad to see all the quick improvements in this DSP...   Feb 22 2007, 18:23
- - pro_optimizer   QUOTE (poisas @ Feb 22 2007, 17:35) I won...   Feb 22 2007, 19:02
- - poisas   thats what i thougt what is recomended setings to...   Feb 22 2007, 20:21
|- - pro_optimizer   QUOTE (poisas @ Feb 22 2007, 20:21) thats...   Feb 22 2007, 21:45
- - Rswave2k2   I had a question about your plugin. When I try to ...   Mar 16 2007, 06:44
|- - pro_optimizer   QUOTE (Rswave2k2 @ Mar 16 2007, 06:44) I ...   Mar 24 2007, 22:49
|- - Rswave2k2   QUOTE (pro_optimizer @ Mar 24 2007, 13:49...   Mar 27 2007, 18:26
|- - Rswave2k2   QUOTE (Rswave2k2 @ Mar 27 2007, 09:26) I ...   Jun 19 2007, 05:04
- - morphguy12   Failed to load DLL: foo_dsp_fsurround.dll Reason: ...   Apr 6 2007, 00:14
|- - tech   I have to same problem QUOTE (morphguy12 @ ...   Jul 12 2007, 21:06
|- - GeSomeone   QUOTE (tech @ Jul 12 2007, 21:06) I have ...   Jul 13 2007, 17:26
|- - blahdy   apologies for rehasing an old thread here... I w...   Jan 14 2008, 01:59
- - pro_optimizer   QUOTE (Rswave2k2 @ Mar 27 2007, 18:26) Th...   Apr 6 2007, 17:13
- - mkeroppi   Is there any way to reverse the front and rear? I...   Apr 11 2007, 22:34
|- - pro_optimizer   QUOTE (mkeroppi @ Apr 11 2007, 22:34) Is ...   Apr 12 2007, 19:38
|- - mkeroppi   QUOTE (pro_optimizer @ Apr 12 2007, 10:38...   Apr 16 2007, 01:54
- - narcosiss   Heya, thanks alot for this DSP! It works much ...   Apr 21 2007, 22:45
|- - Acropolis   I found that this component (as well as downmix I ...   May 3 2007, 07:44
|- - poisas   Any update will come up ? we are waiting... anyw...   Jun 6 2007, 20:07
- - metal_termite   It was mentioned to use foo_channel_mixer to redir...   Jun 7 2007, 03:09
- - poisas   anyone found other alternative type of mixers like...   Jun 11 2007, 14:55
- - pro_optimizer   Hello folks, sorry for my low post frequency late...   Jun 13 2007, 23:32
- - poisas   Thats right pro_optimizer i hate silence, i want...   Jun 19 2007, 17:17
- - Jorgo   I am amazed at the quality this plugin retains whe...   Aug 8 2008, 18:50
|- - pro_optimizer   QUOTE (Jorgo @ Aug 8 2008, 19:50) I am am...   Aug 9 2008, 00:23
- - pro_optimizer   Brought the initial post up to date, included some...   Aug 11 2008, 23:28
- - Walrusbonzo   Been getting sick of having to use Creative's ...   Aug 12 2008, 21:05
- - Sounds Blast   Nice idea pro_optimizer will be on there soon   Sep 10 2008, 01:43
- - NullString   Quick question: Is the public rating board for sur...   Sep 10 2008, 04:07
- - pro_optimizer   QUOTE (Sounds Blast @ Sep 10 2008, 02:43)...   Sep 10 2008, 04:33
- - mrbnatural   I'm having trouble using this plugin on Window...   Apr 1 2009, 22:41
- - SpaceAgeHero   A new version with proper bass redirection would b...   Apr 3 2009, 17:20
|- - poisas   I am using it for more than 2 years now i have to...   Jun 28 2009, 18:58
|- - SpaceAgeHero   QUOTE (poisas @ Jun 28 2009, 12:58) I am ...   Jun 28 2009, 23:18
|- - shakey_snake   QUOTE (SpaceAgeHero @ Jun 28 2009, 18:18)...   Jun 29 2009, 02:57
|- - GeSomeone   QUOTE (SpaceAgeHero @ Jun 29 2009, 00:18)...   Jun 29 2009, 11:23
||- - SpaceAgeHero   QUOTE (GeSomeone @ Jun 29 2009, 05:23) QU...   Jun 29 2009, 17:19
|- - poisas   QUOTE (SpaceAgeHero @ Jun 28 2009, 16:18)...   Jul 5 2009, 11:38
- - jahpal   I Think Foo Channel Mixer its a Good , DSP Plugin ...   Jun 29 2009, 03:08
- - boombaard   links are all dead.   Jun 30 2009, 08:46
- - rhester72   Anyone considered porting this as an AviSynth filt...   Jun 30 2009, 18:41
- - SpaceAgeHero   Isn't Pro Logic a hardware based standard whic...   Jul 5 2009, 12:11
|- - Kipposaur   nice plugin, ty   Sep 16 2009, 00:58
- - foggynovember   Very good plugin, and does overall a good job, i.e...   Dec 22 2009, 01:25
- - antropoid   Does any one have any idea about cpu ussage of thi...   Dec 22 2009, 18:01
- - MusX   any chance for make your plugin able to amplificat...   Jan 15 2010, 21:04
|- - 2E7AH   QUOTE (MusX @ Jan 15 2010, 21:04) and may...   Jan 15 2010, 22:34
|- - pro_optimizer   QUOTE (MusX @ Jan 15 2010, 22:04) any cha...   Jan 17 2010, 02:23
- - MusX   works great! thanks. didn't know Skipy is ...   Jan 15 2010, 22:58
- - pro_optimizer   On the matter of updates, there is currently not m...   Jan 17 2010, 02:29
|- - SpaceAgeHero   QUOTE (pro_optimizer @ Jan 16 2010, 20:29...   Jun 29 2010, 18:12
- - MusX   pro_optimizer have you tried this headphone dsp se...   Jan 17 2010, 11:35
- - pro_optimizer   There is now a (long overdue) new version of the p...   Dec 4 2010, 14:28
2 Pages V   1 2 >


Reply to this topicStart new topic
1 User(s) are reading this topic (1 Guests and 0 Anonymous Users)
0 Members:

 



RSS Lo-Fi Version Time is now: 19th April 2014 - 11:42