HydrogenAudio

Hosted Forums => foobar2000 => 3rd Party Plugins - (fb2k) => Topic started by: pro_optimizer on 2007-01-27 23:59:51

Title: foo_dsp_fsurround
Post by: pro_optimizer on 2007-01-27 23:59:51
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).
(http://img72.imageshack.us/img72/5412/configdialog.th.png) (http://img72.imageshack.us/i/configdialog.png/)

The default settings are good for many surround setups, but there are some tweakable options (see screen shot).
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 (http://www.hydrogenaudio.org/forums/index.php?s=&showtopic=52235&view=findpost&p=734163) 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.
Title: foo_dsp_fsurround
Post by: pyr0rrzzz on 2007-01-28 10:29:32
What does it exactly do? I mean, I've got 5.1-headphones and for example I can hear my subwoofer when listening to stereo-files without any plugin :?
And does it improve the sound of 5.1-encoded files aswell?
(sorry I'm a newbie )
Title: foo_dsp_fsurround
Post by: Eclipsed Moon on 2007-01-28 12:12:54
I was actually thinking a few hours ago that I'd like some more surround processors, despite not having a surround system.  As such, there's not much I can say about this, although I notice that it seems to be quadraphonic for now?

Immediately I notice that when switching tracks, it proceeds to play the next snippet of what it was on (I suppose this qualifies as one of those buffer glitches).
Title: foo_dsp_fsurround
Post by: Rozzo on 2007-01-28 16:58:03
Hi,

does this plugin offers any definite improvement in confront of my favourite 5.1 foobar plugin, i.e, Foo_channelmixer from Skypirich? For me, channelmixer is the best 5.1 plugin around, even better that dolby systems, Creative Labs Neo and Cmss and even better than SSR labs AudioSandbox, so you'll have a difficult time trying to get anything better than Channelmixer

Ys,
rozzo
Title: foo_dsp_fsurround
Post by: pro_optimizer on 2007-01-28 19:28:29
What does it exactly do? I mean, I've got 5.1-headphones and for example I can hear my subwoofer when listening to stereo-files without any plugin :?
And does it improve the sound of 5.1-encoded files aswell?
(sorry I'm a newbie )


It takes stereo music and decodes it according to the Dolby Surround scheme, which results in 6 channels output, although I do not redirect bass to the subwoofer (which you can do by chaining foo_channel_mixer afterwards IIRC).
This means that plain Stereo Music which was not encoded this way sounds very similar to normal Stereo, except that echoes or very distorted sounds usually come over the surround speakers, too. Encoded music sounds much better, of course. Theoretically, sound sources can be placed freely in the soundfield as long as they do not interfere with other sources in the same frequency range. Unfortunately, there is close to zero info about what music "works" on a 5.1 system, so you need to find that out yourself.
Recently I stumbled across albums from Lamb (e.g. What Sound/Between Darkness And Wonder), Blank & Jones (Monument), Cog (any), Tool (10.000 Days), Wumpscut (Music For a Slaughtering Tribe), RMB (Widescreen/Mussion Horizon) which are quite "surroundish".
It doesn't affect 6-channel sound (e.g. DTS/AC3 music).


I was actually thinking a few hours ago that I'd like some more surround processors, despite not having a surround system.  As such, there's not much I can say about this, although I notice that it seems to be quadraphonic for now?

Immediately I notice that when switching tracks, it proceeds to play the next snippet of what it was on (I suppose this qualifies as one of those buffer glitches).


Yeah, you're right. I have yet to find the buffer which I forget to clear in this situation :/
Title: foo_dsp_fsurround
Post by: pro_optimizer on 2007-01-28 23:33:47
Fixed a major problem with the overlapped filtering which caused relatively high-frequency crackling.
So please redownload it.
Title: foo_dsp_fsurround
Post by: pro_optimizer on 2007-01-29 21:43:35
Here is a short sound sample (http://files.filefront.com/6642727) from Mike Oldfield's Tubular Bells.
I would use the latest plugin version for testing this because it can steer more sources simultaneously (~1000). Tell me if your jaws hit the ground (just joking ;-)

Note: The sample is from the DTS version of that album, converted to stereo with the ATSurround-Encode2 plugin.

Edit: Sorry, didn't see your post, rozzo!
Hi,

does this plugin offers any definite improvement in confront of my favourite 5.1 foobar plugin, i.e, Foo_channelmixer from Skypirich? For me, channelmixer is the best 5.1 plugin around, even better that dolby systems, Creative Labs Neo and Cmss and even better than SSR labs AudioSandbox, so you'll have a difficult time trying to get anything better than Channelmixer

Ys,
rozzo


Well, the most definite improvement is that its output channels are fully independent which means that they *can* play completely different things (if the recording engineer wants them to).
There is a stereo test file (http://files.filefront.com/6292644) which plays a voice on each of the 5 channels, one channel at a time.
When you play this with foo_channel_mixer, you hear the voice always on every channel (only at slightly different volume), even if you turn "front in rear" and "rear in front" down to zero.
OTOH, if you have "vanilla stereo" music, you may want to mirror the front sounds in the rears (like e.g. CMSS does) and there foo_channel_mixer gives you more control.
It would be cool if Skypirich allowed this kind of blending for 6 channel inputs, too, because then you could chain his plugin after mine (and I, Andrew Tan, Chungalin or the author of foo_dts don't have to implement all those controls).
Actually, we really need a plugin where one can control the volume of each channel separately.
Title: foo_dsp_fsurround
Post by: Rozzo on 2007-01-30 17:19:01
Thanks Prooptimizer.

I've been trying your plugin with my megahifi 5.1 equipment, five big towers + a full rank Subwoofer.

In confront with channelmixer, Mike Olfield's sample offers a real difference: sound seems to move around oneself from one speaker to another in a definitively deeper conception of stereo.  On the counterpart, I was forced to give some more decibeles to my amplifier to get a clear sound; at the same level fee-surround was not giving a bright sound. I'm getting good results now by applying the Vlevel plugin after your mixer, many things previously muddy or unaudible came to surface.

I keep enjoying this new way of surround, thanks,

Ys,
Rozzo
Title: foo_dsp_fsurround
Post by: GeSomeone on 2007-02-02 13:16:15
.. decodes it .. which results in 6 channels output, although I do not redirect bass ..

Here the center channel stays silent. For music this is not so bad, but I got the impression, from the posts here, that it should have some signal too. The plugin works nicely but, as you said, it depends on the (stereo) source.
Title: foo_dsp_fsurround
Post by: pro_optimizer on 2007-02-02 21:31:34
Here the center channel stays silent. For music this is not so bad, but I got the impression, from the posts here, that it should have some signal too. The plugin works nicely but, as you said, it depends on the (stereo) source.


Your're right, the center signal is equally distributed to front left/right. You'll be able to control this with "center width", once I add a GUI configuration. For now, it should be ok (since, as you said, no center not a big loss for music anyway).
Title: foo_dsp_fsurround
Post by: pro_optimizer on 2007-02-03 01:38:56
OK, added the GUI controls for center width and dimension (shifts soundfield backwards) now.
Hope you like it.

DSP chains which contain the non-config version of this plugin have to be rebuilt.
Title: foo_dsp_fsurround
Post by: GeSomeone on 2007-02-03 22:13:16
OK, added the GUI controls

Thanks, I like to have some control
This makes it much more useful.
Title: foo_dsp_fsurround
Post by: Googer on 2007-02-05 20:52:39
This plugin seems to work great to me except for one problem, which is it seems to be assuming that input is at 44.1 KHz - other sample rates are played back either too quickly or too slowly, so something that's 48 KHz, for example, is played back too slowly by about 10% (and yes the pitch is affected as well).  I haven't checked into bit-depth just yet, just 16-bit mono and stereo at different sample rates...
Title: foo_dsp_fsurround
Post by: pro_optimizer on 2007-02-05 22:38:29
This plugin seems to work great to me except for one problem, which is it seems to be assuming that input is at 44.1 KHz - other sample rates are played back either too quickly or too slowly, so something that's 48 KHz, for example, is played back too slowly by about 10% (and yes the pitch is affected as well).  I haven't checked into bit-depth just yet, just 16-bit mono and stereo at different sample rates...


Oops, what a stupid mistake (forgot to set the correct output sample rate).
It's fixed now. 
Btw: It works with 32bit floating point precision internally, so bitrates should be no problem.
Title: foo_dsp_fsurround
Post by: Googer on 2007-02-06 16:43:01
Thanks for the quick fix, though I have another bug to report - with a 22 KHz mono mp3 (the htguys.com podcast to be specific), foobar2000 crashes in foo_dsp_fsurround upon seeking.  Interestingly I configured foo_gep to output at 22 KHz as a test and tried some nsf files (so its output should also have been 22 KHz mono) and had no problems with seeks...

And here's the contents of failure.txt (and yes this is with fsurround as the only active DSP to try to cut down on potential failure points ):
Code: [Select]
Illegal operation:
Code: C0000005h, flags: 00000000h, address: 0149480Ah
Access violation, operation: read, address: 00000000h
Call path:
playback_process entry=>dsp::flush
This is the first crash logged by this instance.
Code bytes (0149480Ah):
014947CAh:  CC CC CC CC CC CC 51 8B 49 18 03 C9 33 D2 B8 00
014947DAh:  20 00 00 F7 F1 85 C0 89 04 24 DB 04 24 7D 06 DC
014947EAh:  05 70 9E 4A 01 59 C3 CC CC CC CC CC CC CC CC CC
014947FAh:  CC CC CC CC CC CC 53 56 8B F1 8B 86 F0 00 00 00
0149480Ah:  8B 18 E8 BF D0 FF FF 8D 5E 20 E8 97 07 00 00 5E
0149481Ah:  5B C3 CC CC CC CC 6A FF 68 0B 72 4A 01 64 A1 00
0149482Ah:  00 00 00 50 83 EC 08 56 A1 54 10 4B 01 33 C4 50
0149483Ah:  8D 44 24 10 64 A3 00 00 00 00 6A 04 E8 1E 2C 00
Stack (02A5F688h):
02A5F668h:  0000040B 00001000 022FD238 773DE50B
02A5F678h:  DCBAABCD 00000000 0012F68C 773DE50B
02A5F688h:  10002DA0 024CE008 0048303D 5E612E0B
02A5F698h:  0248A228 024CE2D8 0046A7AE 00000016
02A5F6A8h:  024CE308 02485FD0 024CE308 02485FD0
02A5F6B8h:  00000000 02A5FEDC 004A7439 00000003
02A5F6C8h:  02A5FEDC 02A5FEE8 00445BDE 024CE308
02A5F6D8h:  00000000 00000000 024CE008 7C839AA8
02A5F6E8h:  7FFDD000 7FFDD000 02A5FB6C 00000000
02A5F6F8h:  00000000 001A0018 7FFDDC00 02080000
02A5F708h:  02A5F928 02080000 02A5F720 00000000
02A5F718h:  00000000 7C800000 00000000 001A0018
02A5F728h:  7FFDDC00 02080000 02A5F950 02080000
02A5F738h:  02A5F748 00000000 00000000 7C800000
02A5F748h:  7C800000 02080000 02A5F760 00000000
02A5F758h:  00000000 7C800000 00000000 00000000
02A5F768h:  00000000 00000000 00000000 00000000
02A5F778h:  00000000 00000000 00000000 00000000
02A5F788h:  00000000 00000000 00000000 00000000
02A5F798h:  00000000 00000000 00000000 00000000
Registers:
EAX: 00000000, EBX: 024CE008, ECX: 014F4218, EDX: 014A9D48
ESI: 014F4218, EDI: 10002DE0, EBP: 02A5F6CC, ESP: 02A5F688
Crash location: "foo_dsp_fsurround", loaded at 01490000h - 014B9000h

Loaded modules:
foobar2000                       loaded at 00400000h - 004F3000h
ntdll                            loaded at 7C900000h - 7C9B0000h
kernel32                         loaded at 7C800000h - 7C8F4000h
COMCTL32                         loaded at 773D0000h - 774D3000h
msvcrt                           loaded at 77C10000h - 77C68000h
ADVAPI32                         loaded at 77DD0000h - 77E6B000h
RPCRT4                           loaded at 77E70000h - 77F01000h
GDI32                            loaded at 77F10000h - 77F57000h
USER32                           loaded at 77D40000h - 77DD0000h
SHLWAPI                          loaded at 77F60000h - 77FD6000h
SHELL32                          loaded at 7C9C0000h - 7D1D5000h
ole32                            loaded at 774E0000h - 7761D000h
shared                           loaded at 10000000h - 10029000h
comdlg32                         loaded at 763B0000h - 763F9000h
IMM32                            loaded at 76390000h - 763AD000h
LPK                              loaded at 629C0000h - 629C9000h
USP10                            loaded at 74D90000h - 74DFB000h
CACheck                          loaded at 003D0000h - 003F0000h
CAHook                           loaded at 009E0000h - 00A08000h
PSAPI                            loaded at 76BF0000h - 76BFB000h
CAServer                         loaded at 00F20000h - 00F46000h
MSVCP71                          loaded at 7C3A0000h - 7C41B000h
MSVCR71                          loaded at 7C340000h - 7C396000h
MSCTF                            loaded at 74720000h - 7476B000h
MsgPlusLoader1                   loaded at 00FD0000h - 00FDE000h
msctfime                         loaded at 755C0000h - 755EE000h
foo_abx                          loaded at 01000000h - 01034000h
foo_ac3                          loaded at 01060000h - 0108C000h
foo_adpcm                        loaded at 010B0000h - 01102000h
foo_albumlist                    loaded at 01130000h - 01177000h
OLEAUT32                         loaded at 77120000h - 771AC000h
foo_audioscrobbler               loaded at 011A0000h - 011D7000h
WS2_32                           loaded at 71AB0000h - 71AC7000h
WS2HELP                          loaded at 71AA0000h - 71AA8000h
foo_cdda                         loaded at 01240000h - 01276000h
foo_common                       loaded at 012A0000h - 012DA000h
foo_converter                    loaded at 01300000h - 01369000h
foo_dbsearch                     loaded at 01390000h - 01405000h
foo_dsp_continuator              loaded at 01430000h - 01462000h
foo_dsp_fsurround                loaded at 01490000h - 014B9000h
libfftw3f-3                      loaded at 63740000h - 6380B000h
foo_dsp_skip_silence             loaded at 01500000h - 0150A000h
MSVCR80                          loaded at 78130000h - 781CB000h
foo_dsp_std                      loaded at 01530000h - 01571000h
foo_dts                          loaded at 015A0000h - 015D7000h
foo_dumb                         loaded at 015F0000h - 01679000h
foo_freedb2                      loaded at 016A0000h - 016E0000h
foo_game                         loaded at 6C810000h - 6C843000h
MSVCP80                          loaded at 7C420000h - 7C4A7000h
foo_gep                          loaded at 01710000h - 017AB000h
MSIMG32                          loaded at 76380000h - 76385000h
foo_input_awma                   loaded at 017D0000h - 017E9000h
WMVCore                          loaded at 01800000h - 01A5D000h
WMASF                            loaded at 070E0000h - 07119000h
foo_input_monkey                 loaded at 01A60000h - 01AAA000h
foo_input_mslive                 loaded at 01AD0000h - 01AF7000h
foo_input_shorten                loaded at 01B10000h - 01B3E000h
foo_input_std                    loaded at 01B60000h - 01C74000h
foo_lnk                          loaded at 01CA0000h - 01CB9000h
foo_lock                         loaded at 01CE0000h - 01CF8000h
foo_m1                           loaded at 5FC80000h - 5FCB7000h
foo_masstag                      loaded at 01D30000h - 01D80000h
foo_menu_addons                  loaded at 01DA0000h - 01DBF000h
foo_midi                         loaded at 01DD0000h - 01E7A000h
foo_out_ks                       loaded at 01EA0000h - 01ECB000h
SETUPAPI                         loaded at 77920000h - 77A13000h
foo_playlist_manager             loaded at 01EF0000h - 01F36000h
foo_pqview                       loaded at 01F60000h - 01F7C000h
foo_psf                          loaded at 01FA0000h - 02081000h
foo_random                       loaded at 020B0000h - 020EF000h
foo_rgscan                       loaded at 02110000h - 02158000h
foo_sid                          loaded at 02180000h - 02200000h
foo_tradersfriend                loaded at 02220000h - 0225D000h
foo_ui_columns                   loaded at 02280000h - 02317000h
foo_unpack                       loaded at 02340000h - 0236E000h
foo_unpack_jma                   loaded at 02390000h - 023B1000h
foo_unpack_lha                   loaded at 023E0000h - 02400000h
foo_utils                        loaded at 02420000h - 02459000h
uxtheme                          loaded at 5AD70000h - 5ADA8000h
ctagent                          loaded at 02780000h - 02786000h
wtsapi32                         loaded at 76F50000h - 76F58000h
WINSTA                           loaded at 76360000h - 76370000h
NETAPI32                         loaded at 5B860000h - 5B8B4000h
mswsock                          loaded at 71A50000h - 71A8F000h
DNSAPI                           loaded at 76F20000h - 76F47000h
mhook                            loaded at 02810000h - 02816000h
rasadhlp                         loaded at 76FC0000h - 76FC6000h
hnetcfg                          loaded at 662B0000h - 66308000h
wshtcpip                         loaded at 71A90000h - 71A98000h
WINTRUST                         loaded at 76C30000h - 76C5E000h
CRYPT32                          loaded at 77A80000h - 77B14000h
MSASN1                           loaded at 77B20000h - 77B32000h
IMAGEHLP                         loaded at 76C90000h - 76CB8000h
ksuser                           loaded at 73EE0000h - 73EE4000h
appHelp                          loaded at 77B40000h - 77B62000h
CLBCATQ                          loaded at 76FD0000h - 7704F000h
COMRes                           loaded at 77050000h - 77115000h
VERSION                          loaded at 77C00000h - 77C08000h
cscui                            loaded at 77A20000h - 77A74000h
CSCDLL                           loaded at 76600000h - 7661D000h
browseui                         loaded at 75F80000h - 7607D000h
USERENV                          loaded at 769C0000h - 76A73000h
ntshrui                          loaded at 76990000h - 769B5000h
ATL                              loaded at 76B20000h - 76B31000h
shdocvw                          loaded at 77760000h - 778CF000h
CRYPTUI                          loaded at 754D0000h - 75550000h
WININET                          loaded at 771B0000h - 7727E000h
Normaliz                         loaded at 03900000h - 03909000h
iertutil                         loaded at 5DCA0000h - 5DCE5000h
WLDAP32                          loaded at 76F60000h - 76F8C000h
MPR                              loaded at 71B20000h - 71B32000h
drprov                           loaded at 75F60000h - 75F67000h
ntlanman                         loaded at 71C10000h - 71C1E000h
NETUI0                           loaded at 71CD0000h - 71CE7000h
NETUI1                           loaded at 71C90000h - 71CD0000h
NETRAP                           loaded at 71C80000h - 71C87000h
SAMLIB                           loaded at 71BF0000h - 71C03000h
davclnt                          loaded at 75F70000h - 75F79000h
wpdshext                         loaded at 40000000h - 40396000h
WINMM                            loaded at 76B40000h - 76B6D000h
gdiplus                          loaded at 4EC50000h - 4EDF3000h
PortableDeviceApi                loaded at 03950000h - 039A8000h
WINHTTP                          loaded at 4D4F0000h - 4D548000h
Audiodev                         loaded at 09200000h - 09244000h
DBGHELP                          loaded at 59A60000h - 59B01000h

Stack dump analysis:
Address: 10002DA0h, location: "shared", loaded at 10000000h - 10029000h
Symbol: "uCallStackTracker::uCallStackTracker" (+00000000h)
Address: 0048303Dh, location: "foobar2000", loaded at 00400000h - 004F3000h
Address: 0046A7AEh, location: "foobar2000", loaded at 00400000h - 004F3000h
Address: 004A7439h, location: "foobar2000", loaded at 00400000h - 004F3000h
Address: 00445BDEh, location: "foobar2000", loaded at 00400000h - 004F3000h
Address: 7C839AA8h, location: "kernel32", loaded at 7C800000h - 7C8F4000h
Symbol: "ValidateLocale" (+000002B0h)
Address: 7C800000h, location: "kernel32", loaded at 7C800000h - 7C8F4000h
Address: 7C800000h, location: "kernel32", loaded at 7C800000h - 7C8F4000h
Address: 7C800000h, location: "kernel32", loaded at 7C800000h - 7C8F4000h
Address: 7C800000h, location: "kernel32", loaded at 7C800000h - 7C8F4000h
Address: 7C80B62Eh, location: "kernel32", loaded at 7C800000h - 7C8F4000h
Symbol: "GetModuleFileNameA" (+0000015Fh)
Address: 7C80B643h, location: "kernel32", loaded at 7C800000h - 7C8F4000h
Symbol: "GetModuleFileNameA" (+00000174h)
Address: 7C800000h, location: "kernel32", loaded at 7C800000h - 7C8F4000h
Address: 7C906274h, location: "ntdll", loaded at 7C900000h - 7C9B0000h
Symbol: "RtlCaptureContext" (+00002A2Fh)
Address: 7C919BD3h, location: "ntdll", loaded at 7C900000h - 7C9B0000h
Symbol: "LdrGetProcedureAddress" (+0000004Bh)
Address: 004C7008h, location: "foobar2000", loaded at 00400000h - 004F3000h
Address: 7C919B3Fh, location: "ntdll", loaded at 7C900000h - 7C9B0000h
Symbol: "towlower" (+000003D3h)
Address: 7C97C0D8h, location: "ntdll", loaded at 7C900000h - 7C9B0000h
Address: 7C919AEBh, location: "ntdll", loaded at 7C900000h - 7C9B0000h
Symbol: "towlower" (+0000037Fh)
Address: 02441B04h, location: "foo_utils", loaded at 02420000h - 02459000h
Address: 004C7008h, location: "foobar2000", loaded at 00400000h - 004F3000h
Address: 0921A9E2h, location: "Audiodev", loaded at 09200000h - 09244000h
Address: 09223426h, location: "Audiodev", loaded at 09200000h - 09244000h
Address: 0921A93Ch, location: "Audiodev", loaded at 09200000h - 09244000h
Address: 004C7008h, location: "foobar2000", loaded at 00400000h - 004F3000h
Address: 010C1000h, location: "foo_adpcm", loaded at 010B0000h - 01102000h
Address: 40110000h, location: "wpdshext", loaded at 40000000h - 40396000h
Address: 4010A7EDh, location: "wpdshext", loaded at 40000000h - 40396000h
Address: 004C2C28h, location: "foobar2000", loaded at 00400000h - 004F3000h
Address: 004AF2EDh, location: "foobar2000", loaded at 00400000h - 004F3000h
Address: 4010A7EDh, location: "wpdshext", loaded at 40000000h - 40396000h
Address: 004456E5h, location: "foobar2000", loaded at 00400000h - 004F3000h
Address: 004C2B04h, location: "foobar2000", loaded at 00400000h - 004F3000h
Address: 10002D87h, location: "shared", loaded at 10000000h - 10029000h
Symbol: "uPrintCrashInfo_SetDumpPath" (+000000A7h)
Address: 004C2B04h, location: "foobar2000", loaded at 00400000h - 004F3000h
Address: 004AF308h, location: "foobar2000", loaded at 00400000h - 004F3000h
Address: 00445687h, location: "foobar2000", loaded at 00400000h - 004F3000h
Address: 004A67D9h, location: "foobar2000", loaded at 00400000h - 004F3000h
Address: 7C80B683h, location: "kernel32", loaded at 7C800000h - 7C8F4000h
Symbol: "GetModuleFileNameA" (+000001B4h)
Address: 7C839AA8h, location: "kernel32", loaded at 7C800000h - 7C8F4000h
Symbol: "ValidateLocale" (+000002B0h)
Address: 7C80B690h, location: "kernel32", loaded at 7C800000h - 7C8F4000h
Symbol: "GetModuleFileNameA" (+000001C1h)
Address: 00445650h, location: "foobar2000", loaded at 00400000h - 004F3000h

Version info:
foobar2000 v0.9.4.2
UNICODE

Additional info:
Randomized playlist entry 1.2.3  (foo_random)
FLAC Decoder 1.1.0  (foo_input_std)
RAR reader 1.1  (foo_unpack)
DUMB module decoder 0.9.8.4  (foo_dumb)
Playlist Manager 1.0  (foo_playlist_manager)
Menu Addons 0.3.7c  (foo_menu_addons)
Album List 3.2.0  (foo_albumlist)
Skip silence 0.1  (foo_dsp_skip_silence)
RAC decoder 1.0  (foo_adpcm)
Masstagger 1.6  (foo_masstag)
Kernel Streaming Output 1.2.1  (foo_out_ks)
Monkey's Audio decoder 2.1  (foo_input_monkey)
ADX decoder 1.6  (foo_adpcm)
GCN DSP decoder 1.3  (foo_adpcm)
Continuator 0.4.0  (foo_dsp_continuator)
CD Audio Decoder 2.1.1  (foo_cdda)
Shorten decoder 0.4.2a  (foo_input_shorten)
Acro WMA decoder 0.1.6.2  (foo_input_awma)
Playlist tools 0.5.6  (foo_utils)
mslive 0.2  (foo_input_mslive)
ReplayGain Scanner 2.0.2  (foo_rgscan)
ABX Comparator 1.3.1  (foo_abx)
freedb Tagger 0.5.2a  (foo_freedb2)
foobar2000 core 0.9.4.2  (Core)
MIDI synthesizer host 1.7  (foo_midi)
kode's ADPCM decoders 1.2  (foo_adpcm)
Columns UI 0.1.3 beta 1v7  (foo_ui_columns)
Audioscrobbler 1.3.5  (foo_audioscrobbler)
Shell link resolver 1.1  (foo_lnk)
Standard Input Array 1.0  (foo_input_std)
Highly Experimental 2.0.5  (foo_psf)
WMA Decoder 1.1  (foo_input_std)
Converter 1.0.1  (foo_converter)
FreeSurround 0.3  (foo_dsp_fsurround)
JMA unpacker 1.0  (foo_unpack_jma)
AC3 decoder 0.8  (foo_ac3)
Common services 0.1  (foo_common)
Database Search 1.4 beta 4  (foo_dbsearch)
sidplay2 1.13  (foo_sid)
Game Audio Decoder 1.08  (foo_game)
XA ADPCM decoder 1.2  (foo_adpcm)
Live show tagger 0.6.1  (foo_tradersfriend)
Pause on Lock 0.4  (foo_lock)
Game Emu Player 1.5  (foo_gep)
DTS decoder 0.1.1  (foo_dts)
OKI-ADPCM decoder 0.14  (foo_adpcm)
BRR decoder and converter 0.7  (foo_adpcm)
LHA unpacker 1.2  (foo_unpack_lha)
Foobar200-M1 bridge DLL 1.0  (foo_m1)
Standard DSP array 1.0  (foo_dsp_std)
Interplay ACM decoder 1.0  (foo_adpcm)
ZIP/GZIP reader 1.0  (foo_unpack)
Title: foo_dsp_fsurround
Post by: pro_optimizer on 2007-02-07 04:49:02
Thanks for the quick fix, though I have another bug to report - with a 22 KHz mono mp3 (the htguys.com podcast to be specific), foobar2000 crashes in foo_dsp_fsurround upon seeking.  Interestingly I configured foo_gep to output at 22 KHz as a test and tried some nsf files (so its output should also have been 22 KHz mono) and had no problems with seeks...

<snipp>


Thanks for the detailed info, it's fixed now.
The bug was that the decoder core is not loaded in bypass mode (i.e. non-stereo source), but was flushed upon seeking.
Title: foo_dsp_fsurround
Post by: Googer on 2007-02-07 21:09:38
¡Muchas gracias!  This seems to be rock-solid now; I'll let you know if I have any more problems with it.
Title: foo_dsp_fsurround
Post by: Chungalin on 2007-02-09 20:24:16
Very promising, really. It may become my substitute of Channel Mixer as feeder of Dolby Headphone plugin, beacuse this one is more deterministic in the volume domain. I mean, I can disable dynamic compression and set "amplification" to 100% with less chances of getting eventual clippings.

To my taste the Front channels are too "separated", I think the Dimension control should have a "negative" side in order to get the Fronts closer. Is that possible? Also the Center control has little effect on the Center presence.

Not very related to that, but I'm missing some kind of visual control over channel contents. I think that would be a good idea to code some kind of passthrough-DSP with integrated VU-meter visualization that could be able to display EACH channel level independently at the same time. You could insert that plugin in any position of the DSP chain to see what's going on at THAT point (number of channels and what's playing on them). I know the fb2k scene is not visualization-friendly (and I don't want this to change) but there're a few visualizations that DO aid in monitoring multichannel audio, specially if you don't have all those speakers! What do you think about this matter?
Title: foo_dsp_fsurround
Post by: pro_optimizer on 2007-02-10 20:15:52
Very promising, really. It may become my substitute of Channel Mixer as feeder of Dolby Headphone plugin, beacuse this one is more deterministic in the volume domain. I mean, I can disable dynamic compression and set "amplification" to 100% with less chances of getting eventual clippings.

Well, I use 100% amplification in DH myself and did not notice any clipping yet.
The reason is that I do not change the volume at all but just redistribute the sound to the different channels.
Edit: Okay, of course clipping can happen even when one doesn't change the total volume (in an extreme case by putting everything from left and right just into left).
I changed the master gain to 0.7 (which is very safe) for now. I think I'll add a slider for this (b/c many people would probably dislike a DSP which reduces the overall volume). And I added a warning mechanism that writes a line into the console whenever the plugin produces data which is above the maximum volume (1.0), so you can check that it doesn't clip.
The absolutely worst case follows from the PL2 encoding matrix (http://en.wikipedia.org/wiki/Dolby_Pro_Logic#Dolby_Encoding_Matrices): The signal <Lt=0.8165*i, Rt=0.5774*j> (rear left) would be turned into <Lsurr=0.8165+0.5774, Rsurr=0>.
So if someone maximized the volume of the <Lt, Rt> signal, the decoded signal would have the volume level <Lsurr=(0.8165+0.5774)/0.8165, Rsurr=0>. In other words, the worst case gain would have to be 0.5858.
Under the (reasonable) assumption that there is at least one front source in the file which is at least as loud as the loudest rear source, then the worst case gain would have to be 1/(0.5774+0.8165) = 0.7174, so 0.7 is fully sufficient for any non-pathetic music.

To my taste the Front channels are too "separated", I think the Dimension control should have a "negative" side in order to get the Fronts closer. Is that possible? Also the Center control has little effect on the Center presence.

Good point, I changed the allowed range of dimension to [-0.5 .. 1.0] (where -0.5 means that nearly everything ends up in the front channels), hope you don't need even more front-ness (this would defeat the original purpose of this plugin a bit).
But if you experience strongly increased stereo separation with FS enabled compared to stereo, then it's very likely that the more separated sources are actually behind you (if this is the case I'd like to know to what material you are referring to). The central reason for this effect is that in PL2, the surround channels are encoded very close to the center and thus sound rather "mono" when the stereo file is played back undecoded. So if this is annoying you, you probably need a crossfeed slider for rear and one for front.
A simple criterion to find out if what you hear behind you is really surround (instead of crosstalk) is whether there is no other source at the same time which occupies the same frequencies (this is the only situation in which crosstalk can occur).

On the center matter:
I changed the meaning of "center width" to "center image" so that it's more clear what this slider does:
0.0 means there is no center, so left front an right front have to emulate center sounds.
1.0 means that the center just plays its part of the music.
If there was a sound source at location X, the volume levels (for X) would be approx. like this:
[--------X------------------------]
L---------------------------------R "no center (0.0)": L=0.75, C=0.00, R=0.25
L---------------C----------------R "center on (1.0)": L=0.45, C=0.55, R=0.00

As you see, the stereo separation remains completely untouched, it just enables a third speaker in the middle.
The effect in DH is rather subtle, because all virtual speakers have (theoretically) equal properties so its more about how "virtual" or how "concrete" the center sources sound.
Personally, I have it at 0.3 (according to the new meaning).



Not very related to that, but I'm missing some kind of visual control over channel contents. I think that would be a good idea to code some kind of passthrough-DSP with integrated VU-meter visualization that could be able to display EACH channel level independently at the same time. You could insert that plugin in any position of the DSP chain to see what's going on at THAT point (number of channels and what's playing on them). I know the fb2k scene is not visualization-friendly (and I don't want this to change) but there're a few visualizations that DO aid in monitoring multichannel audio, specially if you don't have all those speakers! What do you think about this matter?

I too think that such a plugin is a very good idea for monitoring purposes (including clipping).
Another thing that I thought would be cool & useful is a visualization of the soundfield (where sources are marked as dots in a 2d plane, which works under the assumption that each frequency in a short period of time comes from exactly one source). This way, one could quickly determine if the music is actually surround encoded or not.

The minimal version would just be a DSP plugin which displays the visualization in its config dialog.
Another option would be to open an external window when the DSP is loaded.
And the king of options would be to have a ColumnsUI-Panel which can use information from a special (passthrough) probe dsp.
Once I have time again, I might try options 2 and 3, but therefore I need a least a decent setup of ColumnsUI (for the motivation!).

Habla, do you read?!
Title: foo_dsp_fsurround
Post by: tebasuna51 on 2007-02-13 20:31:52
I am interested in a good free dpl II decoder and your tool seems very promising.
A first goal for me is obtain a good channel separation and I make a first test:

1) Five channel test (each normalized 100%) not coincident in time.

2) Mixed like dpl II with normalized matrix:
Lt = 0.3254*FL + 0.2301*FC + 0.2818*SL + 0.1627*SR
Rt = 0.3254*FR + 0.2301*FC - 0.1627*SL - 0.2818*SR

3) Dpl II decoded with CyberLink Audio Effect (PowerDVD 7) and Free Surround.
Recovered channels are with ', numbers are % from original channel:
Code: [Select]
PowerDVD 7 Mode ProLogic II Movie
      FL  FR  C   SL  SR
     --- --- --- --- ---
FL'   23   0   0   0   0
FR'    0  23   0   0   0
C'     1   1  23   0   0
SL'    0   0   0  23   1
SR'    0   0   0   1  23

Free Surround Center Image=1
      FL  FR  C   SL  SR
     --- --- --- --- ---
FL'   23   0   0   1   0
FR'    0  23   0   0   1
C'     0   0  64   0   0
SL'    0   0   0  27   0
SR'    0   0   0   0 -27

Free Surround Center Image=0
      FL  FR  C   SL  SR
     --- --- --- --- ---
FL'   23   0  16   2   1
FR'    0  23  16   1   2
C'     0   0   0   0   0
SL'    0   0   0  27   0
SR'    0   0   0   0 -27


- Dimension slider (-0.5, 1.0) without effect.
- The surround channels must be attenuated by 0.83.
- The SR channel is inverted.
- With Center Image=1 the center channel must be attenuated by 0.35.
If downmix matrix is not normalized or the downmix is after normalized we obtain overflow.
- With Center Image=0 the center channel have a good relation with front channels (70%).

The separation is really good, is possible a little adjust to obtain a correct decoded wav with any preset?
Title: foo_dsp_fsurround
Post by: pro_optimizer on 2007-02-14 06:46:52
Hey tebasuna,

this is some very interesting data - thank you!

You're right with the center thing, changed that.
Is it possible that the actual value is 0.5*sqrt(0.5) (=0.3536)?

The fact that surround sources have to be attenuated surprises me a bit but actually its quite practical since this mitigates the clipping issue, changed it.

But there are two things related to the mixing matrix you used:
1. Shouldn't the factors for SL and SR be 0.8165 and 0.5774, scaled by some normalization constant?
  Because 0.8165/0.5774 = 1.4140 and 0.2818/0.1627 = 1.7382 which seems not to match.
  I think this is the reason why you get the two off-diagonal 1's.
       
2. Did you apply the +90 degree phase shifts to SL and SR?
  In case you didn't, I would try to encode it with ATSurround-Encode2, which appies the correct hilbert filter.
  I'd like to know what correlation coeffs you get with PL2 then.
  It's no problem for me to un-shift the signal by +90/-90 since I work in the frequency domain anyway
  but I'm not sure if you can do this with an analog filter (which PL2 mimics AFAIK).
  I uploaded a version called foo_dsp_fs-phaseshift.dll which does that un-shifting for your testing.

There is another test which should be conducted.
This is how PL2/FS reconstructs a source when it is arbitrarily distributed across LF,FR,C,SL,SR.
Thing is that it's not a piece of cake to get a linear behaviour over all positions.
I think I'd need access to Mathematica to get this 100% right and I think PL2 doesn't do this perfectly either.
Title: foo_dsp_fsurround
Post by: tebasuna51 on 2007-02-14 16:52:18
Thanks for you quick answer.
I agree with "how PL2/FS reconstructs a source when it is arbitrarily distributed across LF,FR,C,SL,SR", because is the real problem.
But simplified data can help to adjust some parameters before go to more sophisticated test.

To answer your questions:

1) The dpl II matrix coeficients:

1/0.7071/0.8660/0.5000 (0.3254/0.2301/0.2818/0.1627 normalized)

is used by Midas Azid 1.9 (Dec-2003) and since BeSweet v1.5b20 after this discussion (http://forum.doom9.org/showthread.php?t=57988) instead the old one:

1/0.7071/0.8165/0.5774 (0.3225/0.2280/0.2633/0.1862 normalized)

Using:
Lt = 0.3225*FL + 0.2280*FC + 0.2633*SL + 0.1862*SR
Rt = 0.3225*FR + 0.2280*FC - 0.1862*SL - 0.2633*SR
I obtain:
Code: [Select]
PowerDVD 7 Mode ProLogic II Movie
      FL  FR  C   SL  SR
     --- --- --- --- ---
FL'   23   0   0   0   0
FR'    0  23   0   0   1
C'     0   0  23   0   1
SL'    0   0   0  21   6
SR'    0   0   0   6  21

Free Surround Center Image=1
      FL  FR  C   SL  SR
     --- --- --- --- ---
FL'   23   0   0   0   0
FR'    0  23   0   0   0
C'     0   0  64   0   0
SL'    0   0   0  31   0
SR'    0   0   0   0 -31

Free Surround Center Image=0
      FL  FR  C   SL  SR
     --- --- --- --- ---
FL'   23   0  16   0   0
FR'    0  23  16   0   0
C'     0   0   0   0   0
SL'    0   0   0  31   0
SR'    0   0   0   0 -31

With better channel separation results for Free Surround (surround channels more amplified) but worse for PowerDVD

2) "Did you apply the +90 degree phase shifts to SL and SR?"
Hard question. My opinion is:
- The 90 degree phase shifts is out of dpl2 encode/decode phases. Only 180 degree (- sign) is necessary.
- The 90 degree phase shifts is necessary when we create a 5.1 signal only if rear channels are generated from front channels to avoid interaction in mixes. And is not necessary when the channels are independents or "if the source was recorded using five discrete microphones placed in the corners of an auditorium", like say Dolby in their docs.
- I don't apply 90 degree phase shifts to SL and SR because the precedent reasons. BeSweet-Azid don't aply any phase shifts.
- ATSurround don't work for dpl II, only dpl I.

I know that my test and requirements are based in premises that can be wrong, but I don't know another reference:
- Dpl II soft encoder: Azid 1.9 (with ac3 sources)
- Dpl II soft decoder PowerDVD 7
And, of course, dpl II is not perfect.

BTW, the Dimension slider don't must affect the relation between the front and rear channels volume?

EDIT: all values and comment without test the new release. I'm testing...
Title: foo_dsp_fsurround
Post by: tebasuna51 on 2007-02-14 19:31:30
Near perfect your new version.

- The Dimension slider affect:
Code: [Select]
Free Surround Center Image=1, Dimension=1
      FL  FR  C   SL  SR
     --- --- --- --- ---
FL'   14   0   0   4   0
FR'    0  14   0   0   4
C'     0   0  14   0   0
SL'   12   0   8  44   0
SR'    0  12   8   0 -44

Free Surround Center Image=1, Dimension=0
      FL  FR  C   SL  SR
     --- --- --- --- ---
FL'   28   0   0   1   0
FR'    0  28   0   0   1
C'     0   0  28   0   0
SL'    0   0   0  28   0
SR'    0   0   0   0 -28


- The center chanel is perfect at 1.
Now using the same sample and normalizing 100%, in this case is the same than:
Lt = FL + 0.7071*FC + 0.866*SL + 0.500*SR
Rt = FR + 0.7071*FC - 0.500*SL - 0.866*SR
and with 1/1000 instead % for more precision:
Code: [Select]
PowerDVD 7 Mode ProLogic II Movie
      FL   FR   C    SL   SR
     ---  ---  ---  ---  ---
FL'  706    1   14    8    4
FR'    1  706   14    4   36
C'     9    9  704    2   22
SL'    5    6   10  702   72
SR'    6    9   10   31  700

Free Surround Center Image=1, Dimension=0
      FL   FR   C    SL   SR
     ---  ---  ---  ---  ---
FL'  864    0    0   37    0
FR'    0  864    0    0   37
C'     0    0  864    0    0
SL'    0    0    0  865    0
SR'    0    0    0    0 -866


- With:
Lt = FL + 0.7071*FC + 0.8165*SL + 0.5774*SR
Rt = FR + 0.7071*FC - 0.5774*SL - 0.8165*SR
Code: [Select]
Free Surround Center Image=1, Dimension=0,-0.5
      FL   FR   C    SL   SR
     ---  ---  ---  ---  ---
FL'  864    0    0    0    0
FR'    0  864    0    0    0
C'     0    0  864    0    0
SL'    0    0    0  999    0
SR'    0    0    0    0 -999


- About the back channel inverted:
Using a downmix like (ignoring numeric coeficients, looking only the signs):
Code: [Select]
1) Seems required by PowerDVD
Lt = FL + FC + SL + SR
Rt = FR + FC - SL - SR
PowerDVD:     SL'= SL, SR'= SR
FreeSurround: SL'= SL, SR'=-SR

2) Azid-BeSweet style
Lt = FL + FC - SL - SR
Rt = FR + FC + SL + SR
PowerDVD:     SL'=-SL, SR'=-SR
FreeSurround: SL'=-SL, SR'= SR

3) Seems required by Free Surround
Lt = FL + FC + SL - SR
Rt = FR + FC - SL + SR
PowerDVD:     SL'= SL, SR'=-SR
FreeSurround: SL'= SL, SR'= SR

4)
Lt = FL + FC - SL + SR
Rt = FR + FC + SL - SR
PowerDVD:     SL'=-SL, SR'= SR
FreeSurround: SL'=-SL, SR'=-SR
Title: foo_dsp_fsurround
Post by: pro_optimizer on 2007-02-15 16:37:07
Thanks again for the tables (interesting how much crosstalk PL2 has!).
But I'd like to know how well PowerDVD's PL2 performs when you used the coefficients from wikipedia for
mixing.
I expect that it's at least not worse than what you got with BeSweet's coefficients.

Concerning the phase shifts:
I think it's quite a strong assumption that front and rear channels are fully independent.
If I want to position an instrument to the right side of the listener, I would mix it equally at right surround and right front. This works perfectly if the phases of front and surround are orthogonal and it doesn't work at all if they are collinear. Effectively, you would pan the final output somewhere along the front plane.

Btw: ATSurround may not be able to decode PL2 properly, but at least it can encode it with the (relatively new) Encode2 mode. And I'm quite sure that it follows the wikipedia rules for encoding.

I read that PL2's music mode doesn't flip the signs of any of the surround channels (just like I do in the official version of FS). The reason is that it this treats non-encoded music more carefully, metaphorically speaking.
OTOH, sources which are PL2 encoded do most likely have the 90° phase shift applied (for the aforementioned reasons). It would be ridiculous if Dolby's $4000 encoder doesn't do this.
So one needs at least these two decoding modes: 1. +0,+0 / 2. +90,-90.
I will expose them in the next version (which will ship, erm... this night).

Note that proper phase shifts are less important for decoding than for encoding
because the brain doesn't rely on phases to steer front/back but PL2 does.
Actually I have no clue if one can hear a difference between those 2 decoding modes at all.
So someone would have to conduct an ABX test through Dolby Headphone I guess.
Title: foo_dsp_fsurround
Post by: tebasuna51 on 2007-02-15 18:28:57
But I'd like to know how well PowerDVD's PL2 performs when you used the coefficients from wikipedia for mixing.
I expect that it's at least not worse than what you got with BeSweet's coefficients.

Of course is worse. With values 1/1000:
Code: [Select]
Lt = FL + 0.7071*FC + 0.866*SL + 0.500*SR
Rt = FR + 0.7071*FC - 0.500*SL - 0.866*SR

PowerDVD 7 Mode ProLogic II Movie (BeSweet coef.)
      FL   FR   C    SL   SR
     ---  ---  ---  ---  ---
FL'  706    1   14    8    4
FR'    1  706   14    4   36
C'     9    9  704    2   22
SL'    5    6   10  702   72
SR'    6    9   10   31  700

Lt = FL + 0.7071*FC + 0.8165*SL + 0.5774*SR
Rt = FR + 0.7071*FC - 0.5774*SL - 0.8165*SR

PowerDVD 7 Mode ProLogic II Movie (Wikipedia coef.)
      FL   FR   C    SL   SR
     ---  ---  ---  ---  ---
FL'  706    1   14    7    6
FR'    1  706   14    6   28
C'    10   10  704    5   17
SL'    5    6   10  650  205
SR'    6    9   10  198  648


- About phase shifts:
I say is unnecessary:
If the channels are independent like this channel test sample.
If the channels are from an decoded ac3 because the rear channels are already shifted (if are Dolby compliant).

But is necessary if we are generating the rear channels from the front channels.

Because a high % of dpl II encodes are from ac3 5.1 decoded channels, with rear channels already shifted, the dpl II encoder can't do another shift, must be optional and applied when needed.

- About ATSurround Encoder2.
You are right seems like Wikipedia coef. I need make more test.
Title: foo_dsp_fsurround
Post by: Rozzo on 2007-02-15 22:16:10
Hi Pro-opt

This post is only to ask your opinion about a couple of things I have been trying these days regarding Dolby surround.

First one is AC3, I'm using Eright Software Super Encoder/decoder to transform my music files into AC3, getting that way Dolby Digital directly from spdif soundcard out. Super uses a ffmpeg library to process the music, there are some mentions of this Dolby encoding system in hydrogenaudio forums, they say it's not such a great thing,  but to my ears this Dolby digital gives better sound than Dolby prologic.  This Dolby Digital Spdif music bypasses completely all the controls in my X-Fi extreme music, I can change the volume only with the receiver.

Second one is that redocnecxK program that supposedly encodes al your sounds into AC3 and sends them directly to the receiver through spdif. I says supposedly because it doesn't work with X-Fi sound cards.

So my questions at the end are about the difference between hearing AC3 encoded music and music filtered through your Dolby plugin.

Thanks anticipated,
Rozzo
Title: foo_dsp_fsurround
Post by: tebasuna51 on 2007-02-16 02:28:01
ATSuround Encode2 works, in volume, like coeficients 1/0.7071/0.8165/0.5774, but the rear channels seems phase shifted then can't be recovered exactly by Free Surround (good channel separation) or PowerDVD (and worse channel separation).

With ATSurround Encode2 I don't know how disable LFE (don't be present in dpl II), and seems be amplified because there are big overflows.

If ATSuround Encode2 put one option to disable the rear phase shift and other to disable the LFE in downmix become usable for me. I have a old audio equipment attached to the PC with only dpl decoder then to listen ac3 5.1 need a downmix to dpl and need ffdshow/ac3filter, can't with Foobar. I don't see any plugin with matrix style, like ffdshow/ac3filter, to make the downmix.

Thanks.
Title: foo_dsp_fsurround
Post by: pro_optimizer on 2007-02-17 11:25:05
Hi Pro-opt

This post is only to ask your opinion about a couple of things I have been trying these days regarding Dolby surround.

First one is AC3, I'm using Eright Software Super Encoder/decoder to transform my music files into AC3, getting that way Dolby Digital directly from spdif soundcard out. Super uses a ffmpeg library to process the music, there are some mentions of this Dolby encoding system in hydrogenaudio forums, they say it's not such a great thing,  but to my ears this Dolby digital gives better sound than Dolby prologic.  This Dolby Digital Spdif music bypasses completely all the controls in my X-Fi extreme music, I can change the volume only with the receiver.

Second one is that redocnecxK program that supposedly encodes al your sounds into AC3 and sends them directly to the receiver through spdif. I says supposedly because it doesn't work with X-Fi sound cards.

So my questions at the end are about the difference between hearing AC3 encoded music and music filtered through your Dolby plugin.

Thanks anticipated,
Rozzo


Hi Rozzo,

since I have never used ffmpeg/redocnecxK I don't really know how good it is and what it does.
But if it upmixes music to ac3 then it must obviously generate the surround channels from somewhere.
And there are basically 4 options:
1: from the front channels by mirroring, delay, echo (e.g. concert hall effect)
you can get this from you sound card, too (by enabling CMSS 3D or some EAX effects)

2: by passive matrix decoding (this is what dolby surround did)
then you can get a similar or better effect with foo_channelmixer.

3: by active decoding like pl1 does
if this is the case it should not sound better than FS

4: by active decoding like pl2 does
in this case it should sound similar to FS (depending on how good/bad the implementation is)

The fact that it is transferred via AC3 should not make a noticeable difference (except if you have really really bad cables/connectors).

Maybe you can post a few links to the programs?

ATSuround Encode2 works, in volume, like coeficients 1/0.7071/0.8165/0.5774, but the rear channels seems phase shifted then can't be recovered exactly by Free Surround (good channel separation) or PowerDVD (and worse channel separation).

With ATSurround Encode2 I don't know how disable LFE (don't be present in dpl II), and seems be amplified because there are big overflows.

If ATSuround Encode2 put one option to disable the rear phase shift and other to disable the LFE in downmix become usable for me. I have a old audio equipment attached to the PC with only dpl decoder then to listen ac3 5.1 need a downmix to dpl and need ffdshow/ac3filter, can't with Foobar. I don't see any plugin with matrix style, like ffdshow/ac3filter, to make the downmix.

Thanks.


Yeah, I got the same results (just a few hours ago, should have checked the board before I started
And your're right with the phase shifting.
Unfortunately it's hilbert filter cuts a lot of the lower and higher frequencies (the passband is approx. 110 Hz to 3.5 KHz).

Do you really need only an AC3 downmixer plugin (without phase shift)?
In this case I could write one... should be a matter of minutes.
Actually I need a replacement (with optional [and perfect] shift) for Encode2, too.
Title: foo_dsp_fsurround
Post by: Acropolis on 2007-02-17 13:05:15
I like this component, and been using it for a week, as I think the 5.1 it produces gives me more feeling of "real" (do you call it the dynamic range?) comparing with ATSurround Processor (was using this before your component came out).

I have a little request, can you post a version number in your first post when you update it? because it's quite annoying that I have to find the word "upload" in your post to check if it's updated.

thank you
Title: foo_dsp_fsurround
Post by: tebasuna51 on 2007-02-17 16:23:56
Do you really need only an AC3 downmixer plugin (without phase shift)?
In this case I could write one... should be a matter of minutes.

Thanks.
Can be used, not only for my strange case (play 5.1 with only dpl surround), but also to convert audio movie tracks from 5.1 to mp3 (or other stereo formats) with dpl II info.
Title: foo_dsp_fsurround
Post by: pro_optimizer on 2007-02-18 02:21:22
I like this component, and been using it for a week, as I think the 5.1 it produces gives me more feeling of "real" (do you call it the dynamic range?) comparing with ATSurround Processor (was using this before your component came out).

I have a little request, can you post a version number in your first post when you update it? because it's quite annoying that I have to find the word "upload" in your post to check if it's updated.

thank you

Ok, from now on.



Do you really need only an AC3 downmixer plugin (without phase shift)?
In this case I could write one... should be a matter of minutes.

Thanks.
Can be used, not only for my strange case (play 5.1 with only dpl surround), but also to convert audio movie tracks from 5.1 to mp3 (or other stereo formats) with dpl II info.

Ok, I uploaded a plugin for this purpose. It uses you mixing matrix.
I also experimented with hilbert filtering and got much better results than with Encode2, but its terribly slow (barely real time) so I have to switch over to fft convolution until I can release that.
Unfortunately this is necessary if you want to downmix DTS tracks (they seem not to have shifted rear channels as opposed to AC3).
Title: foo_dsp_fsurround
Post by: Rozzo on 2007-02-18 15:38:14
Quote
Maybe you can post a few links to the programs?



Hi Pro-opt,

You can download Super at:

http://www.erightsoft.net/SUPER.htm (http://www.erightsoft.net/SUPER.htm)


"SUPER © Simplified Universal Player Encoder & Renderer.
    A GUI to ffmpeg, MEncoder, mplayer, x264, mppenc,
    ffmpeg2theora & the theora/vorbis RealProducer plugIn.

    If you need a simple, yet very efficient tool to convert (encode) or play any Multimedia file,
    without reading manuals or spending long hours training, then SUPER © is all you need.
    It is a Multimedia Encoder and a Multimedia Player, easy-to-use with 1 simple click."

Encoding my files into AC3 with this program (6 channels at 394 bps) and sending them to my DENON receiver as DOlby bitstream bypassing all controls in my PC gives impressive acustic results.

YS,
Rozzo
Title: foo_dsp_fsurround
Post by: GeSomeone on 2007-02-18 17:12:35
- changed the gain to ~85% to avoid clipping in practically all cases.

I have a feature request    could you make that optional?
I don't like it when the sound goes down 1.5dB when I activate fSurround. I use advanced limiter to catch the eventual clipping.
Title: foo_dsp_fsurround
Post by: tebasuna51 on 2007-02-20 02:17:32
Ok, I uploaded a plugin for this purpose. It uses you mixing matrix.
I also experimented with hilbert filtering and got much better results than with Encode2, but its terribly slow (barely real time) so I have to switch over to fft convolution until I can release that.
Unfortunately this is necessary if you want to downmix DTS tracks (they seem not to have shifted rear channels as opposed to AC3).

Thanks for the news.

Now with a wav6 -> foo_dsp_downmix (Downmix AC3/DTS) -> Free Surround (*) -> New_wav6

(*) With this adjust:
Center Image (1.0)
Dimension (0.0)
Invert rear phase (+0, +180)
Mixing coef A: 0.866
Mixing coef B: 0.5

we obtain 100% identical channels with this considerations:

1) The LFE channel can't be recovered by dpl II, if is included in downmix it appears at Center output channel. The downmix plugin need a selector to disable the LFE channel.

2) The volume is 100 % identical with errors (and crosstalk) less than 0.02 % over the channel test sample. Real signals can produce overflows at downmix and maybe is convenient a slider between the full coeficients values 1/0.7071/0.866/0.5 an the normalized 0.3254/0.2301/0.2818/0.1627.

3) In downmix there are a delay of 12.542 ms for L, R, and C channels. With SL and SR there are 25.083 ms  delay. This delay between front and rear channels (25.083 - 12.542 = 12.541) can be a problem with real signals.

4) In upmix (free surround) there are also a delay of 128.0 ms uniform for all channels. The new wav is 53 ms more than original, then the end is cut in 75 ms.

This is only to show my interest in your job, but if you aren't interested in further develop I can understand. For me is enough the actual downmix to play 5.1; to convert 5.1 to dpl2 there are others methods (AviSynth, BeSweet) with 2 pass mode, really I don't know how implement this with Foobar.

The most important is the upmix (Free Surround) because is the better free tool I know to do this. And with the Advanced Controls is perfect to experiment different settings. Only a last petition please, is possible four options for rear phase?:
Keep rear phase (0, 0)
Invert rear Right (0, 180) like PowerDVD movie mode
Invert rear Left (180, 0) Azid-BeSweet style
Invert two rear (180,180) I don't now ... but to complete.

Thanks.
Title: foo_dsp_fsurround
Post by: CZ812CE on 2007-02-20 03:20:19
Hi,

I'm very intersted in this component.

BTW, Can I decode my SQ quadraphonic (http://en.wikipedia.org/wiki/Quadraphonic#SQ_.2F_Stereo_Quadraphonic) records by using this?
I'd like to convert it into ac3 or dts.

Thanks.
Title: foo_dsp_fsurround
Post by: pro_optimizer on 2007-02-20 14:41:25
Hi Pro-opt,

You can download Super at:

http://www.erightsoft.net/SUPER.htm (http://www.erightsoft.net/SUPER.htm)


Thanks, downloaded it. I'll take a look at it when I am done with the other pending stuff.


I have a feature request    could you make that optional?
I don't like it when the sound goes down 1.5dB when I activate fSurround. I use advanced limiter to catch the eventual clipping.

Yes, I already changed the gain back to 100% (in 0.3.3) because the channels which produced the clipping were too loud, anyway. There is still some clipping sometimes (the highest which I saw was 105%) but I'll look into this and fix it (hopefully).


Thanks for the news.

Now with a wav6 -> foo_dsp_downmix (Downmix AC3/DTS) -> Free Surround (*) -> New_wav6

(*) With this adjust:
Center Image (1.0)
Dimension (0.0)
Invert rear phase (+0, +180)
Mixing coef A: 0.866
Mixing coef B: 0.5

we obtain 100% identical channels with this considerations:

1) The LFE channel can't be recovered by dpl II, if is included in downmix it appears at Center output channel. The downmix plugin need a selector to disable the LFE channel.

2) The volume is 100 % identical with errors (and crosstalk) less than 0.02 % over the channel test sample. Real signals can produce overflows at downmix and maybe is convenient a slider between the full coeficients values 1/0.7071/0.866/0.5 an the normalized 0.3254/0.2301/0.2818/0.1627.

3) In downmix there are a delay of 12.542 ms for L, R, and C channels. With SL and SR there are 25.083 ms  delay. This delay between front and rear channels (25.083 - 12.542 = 12.541) can be a problem with real signals.

4) In upmix (free surround) there are also a delay of 128.0 ms uniform for all channels. The new wav is 53 ms more than original, then the end is cut in 75 ms.

This is only to show my interest in your job, but if you aren't interested in further develop I can understand. For me is enough the actual downmix to play 5.1; to convert 5.1 to dpl2 there are others methods (AviSynth, BeSweet) with 2 pass mode, really I don't know how implement this with Foobar.

The most important is the upmix (Free Surround) because is the better free tool I know to do this. And with the Advanced Controls is perfect to experiment different settings. Only a last petition please, is possible four options for rear phase?:
Keep rear phase (0, 0)
Invert rear Right (0, 180) like PowerDVD movie mode
Invert rear Left (180, 0) Azid-BeSweet style
Invert two rear (180,180) I don't now ... but to complete.

Thanks.

1) Hmmm, I think the downmix will sound pretty dull with LFE disabled, don't you?
If I got you right, you decode the downmix with an external dpl1 decoder which can't do bass management.
Have you tried to disable the center speaker (I think this is called phantom surround in dpl1 decoders)?
OTOH, if you decoded the downmix on the PC, you could use the bass management of your soundcard or I could implement similar functionality in FS itself (I'd be interested if there is anyone who needs bass mangement right in FS).

2) Yeah, maybe this is necessary. Another option for now would be to put an Equalizer at -6db before the downmixer.

3) Sorry, that delay was a mistake (it's a holdover of my earlier phase shifting experiments).
I'll fix that in the next version.

4) Hmmmmm... This not easy to solve. Unfortunately there is a tradeoff between delay and fidelity.
The smaller you make the delay, the fewer separate frequency bands FS can use for steering. And this results in more crosstalk, steering glitches etc.
Currently I use 2048 bands. So one needs 4096 samples and because it's overlapped, it sums up to 6144 samples. At 48Khz this is 128ms delay. For music it's no big problem of course. But if anyone wants to use FS as decoder for a movie player he needs to delay the video stream, too.
Maybe one should add a slider for the window length in the expert controls (with a clear warning).
Btw: The first three phase modes you proposed are ok, I'll support all of them.

This is only to show my interest in your job, but if you aren't interested in further develop I can understand. For me is enough the actual downmix to play 5.1; to convert 5.1 to dpl2 there are others methods (AviSynth, BeSweet) with 2 pass mode, really I don't know how implement this with Foobar.

Of course I am interested in writing a cool downmixer.  Having a really good "canonical" Downmix/Upmix chain available could make mp3surround or similar formats nearly unnecessary.


Hi,

I'm very intersted in this component.

BTW, Can I decode my SQ quadraphonic (http://en.wikipedia.org/wiki/Quadraphonic#SQ_.2F_Stereo_Quadraphonic) records by using this?
I'd like to convert it into ac3 or dts.

Thanks.

Yes, it should decode SQ quadrophonic properly but unfortunately you'll not get stereo surrounds.
Actually, I have no clue how a decoder can distinguish between rear left and rear right (if the wikipedia matrix is correct) because the difference between them is only that both channels are inverted.



My roadmap at the moment looks like this:
First I will revise the steering of FS to make it practically linear over all positions. When this is done, one can downmix a 5.1 file and just get it back when played through FS, as long as the basic assumption of non-overlapping sources in the frequency space is satisfied.

Then I will add the mentioned controls.

Then, I'll release a proper downmixing plugin with all the necessary config options (including phase shift which already works perfectly, apart from a 22ms delay).
Title: foo_dsp_fsurround
Post by: tebasuna51 on 2007-02-20 16:31:05
1) Hmmm, I think the downmix will sound pretty dull with LFE disabled, don't you?

Is not a problem with my audio equipment, is a Dolby recommendation. From "214_Mixing with Dolby Pro Logic II Technology.pdf":

"There are other concerns when adding an LFE signal to the mix. If the LFE is simply redistributed within the other channels of the mix, they will usually be subject to some low-frequency bandpass filtering. This filtering causes phase shifts of the LFE signal. When they are acoustically added within a room, these phase shifts are fairly subtle and often go unnoticed. However, when they are electronically added together with the five main channels in the encoder, they may produce less than desirable results at certain frequencies. For this reason, it is recommended that the LFE signal not be used in a Dolby Pro Logic II downmix unless it contains unique information that is not repeated in any of the five main channels."

At least we can maintain optional this issue.

4) Hmmmmm... This not easy to solve. Unfortunately there is a tradeoff between delay and fidelity.
The smaller you make the delay, the fewer separate frequency bands FS can use for steering. And this results in more crosstalk, steering glitches etc.

Ok, can be assumed with a warning about the 128 ms delay if needed for video sync.
Title: foo_dsp_fsurround
Post by: pro_optimizer on 2007-02-21 01:29:44
Ok, here is the promised new version (0.3.4).

New features:
- A new steering mode (called linear) has been added, which should reconstruct the sources at exactly the same location where they were before the encoding. The previous versions used a few very simple heuristics for this inverse mapping which worked quite well (probably better than Dolby's ) but they were still far from the perfect solution.
The custom mixing coefficients are not yet supported in this mode (because therefore I would have to generate the inverse functions on the fly, which is nontrivial... but I think I'll get this done over the next few days).

- Controls for front and rear stereo separation have been added.
This should be a goodie for the headphone listeners.

- 4 phase shifting modes are supported now: Music Mode (0°/0°), PowerDVD compatibility (0°,+180°), BeSweet compatibility (+180°,0°) and Exact reconstruction (-90°,+90°). It's not unlikely that you don't hear a difference at all but the desire to do The Right Thing was just too strong.

Fixes:
- The dimension slider was accidentally clamped to [0,1] in the decoder core so the negative range wasn't really accessible.


Filefront's database is corrupted right now, so please download it via this link (http://files.filefront.com/6780133).
Title: foo_dsp_fsurround
Post by: tebasuna51 on 2007-02-21 12:41:18
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: [Select]
       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: [Select]
       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
Title: foo_dsp_fsurround
Post by: pro_optimizer on 2007-02-21 12:57:24
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: [Select]
       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: [Select]
       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).
Title: foo_dsp_fsurround
Post by: poisas on 2007-02-22 16:35:35
I wonder whats happening ?

WARNING : foo_dsp_fsurround: clipping encountered (-1.124)
WARNING : foo_dsp_fsurround: clipping encountered (-1.111)
WARNING : foo_dsp_fsurround: clipping encountered (1.071)
WARNING : foo_dsp_fsurround: clipping encountered (-1.090)
WARNING : foo_dsp_fsurround: clipping encountered (-1.071)
WARNING : foo_dsp_fsurround: clipping encountered (-1.029)
WARNING : foo_dsp_fsurround: clipping encountered (-1.043)

If i take a look at foobars console i can see theese .

my spec Athlon 1.7ghz, winxp PR/ 766mb ddr/creative audigySE/  got stereo amp for front speakers, and other set from pc speakers for rear surround/ sound card is set for 4.0 speakers/  realy feals when you set from 5.1 that sub and center speaker goes to front speakers
what actualy goes frong when clipping ? because i cannot hear any strange things on my speakers
dsp's ar set : Vlevel> noisesharpening>freesurround
Title: foo_dsp_fsurround
Post by: Chungalin on 2007-02-22 17:23:28
Glad to see all the quick improvements in this DSP.
I know my PC is not very up to date in CPU power but, have you checked the CPU usage of FreeSurround? Here it sucks 25% at a constant rate. It's far, far more than the power consumed by the math-intensive Dolby Headphone engine.
Title: foo_dsp_fsurround
Post by: pro_optimizer on 2007-02-22 18:02:48
I wonder whats happening ?

WARNING : foo_dsp_fsurround: clipping encountered (-1.124)
WARNING : foo_dsp_fsurround: clipping encountered (-1.111)
WARNING : foo_dsp_fsurround: clipping encountered (1.071)
WARNING : foo_dsp_fsurround: clipping encountered (-1.090)
WARNING : foo_dsp_fsurround: clipping encountered (-1.071)
WARNING : foo_dsp_fsurround: clipping encountered (-1.029)
WARNING : foo_dsp_fsurround: clipping encountered (-1.043)

If i take a look at foobars console i can see theese .

my spec Athlon 1.7ghz, winxp PR/ 766mb ddr/creative audigySE/  got stereo amp for front speakers, and other set from pc speakers for rear surround/ sound card is set for 4.0 speakers/  realy feals when you set from 5.1 that sub and center speaker goes to front speakers
what actualy goes frong when clipping ? because i cannot hear any strange things on my speakers
dsp's ar set : Vlevel> noisesharpening>freesurround


It just displays this message when it produces data that is so loud that it may clip.
Probably it's unnoticable as long as you have the foobar volume a bit below 0db.
You can also put a limiter behind it. And if the message annoys you, you can put an equalizer (@-2db or so) before it.
Unfortunately I have no time right now to change anything because I have to work on a presentation.


Glad to see all the quick improvements in this DSP.
I know my PC is not very up to date in CPU power but, have you checked the CPU usage of FreeSurround? Here it sucks 25% at a constant rate. It's far, far more than the power consumed by the math-intensive Dolby Headphone engine.


Wow! For me it's at 0% and goes up to 4% in regular intervals.
Luckily the code hasn't been optimized yet, so it's likely that it can be sped up.

Is the CPU usage similar for linear and non-linear modes?
If yes, then the FFT is probably the bottleneck.
Which would be bad because it's already the fastest implementation in the world.
Title: foo_dsp_fsurround
Post by: GeSomeone on 2007-02-22 18:14:34
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
Title: foo_dsp_fsurround
Post by: poisas on 2007-02-22 19:21:34
thats what i thougt  what is recomended setings to get most surrounded sound from mp3's ?
Title: foo_dsp_fsurround
Post by: pro_optimizer on 2007-02-22 20:45:04
thats what i thougt  what is recomended setings to get most surrounded sound from mp3's ?


The default setting is quite good for most music.
If there is surround information, you will hear it - otherwise the music will be mostly like normal stereo.
You can also move the whole soundfield further behind by using the dimension slider, if you want generally more action in the surrounds.
But keep in mind that you get the largest possible front-back range when dimension is 0, it's just the question whether the music actually uses it.
(with dimension=0 you can get everything between "fully infront" and "fully behind" whereas with dimension=1 you have reduced it to everything between "somewhat infront" and "fully behind").
I think one could add a slider which shifts extremely left or right sounds into the rear speakers (I think this is called panorama mode in PL2).

The phase settings don't matter that much for normal use (because they are barely audible), but you can enable
"exact reconstruction" when you listen to music for which you know that it's surround-encoded.
Title: foo_dsp_fsurround
Post by: Rswave2k2 on 2007-03-16 05:44:31
I had a question about your plugin. When I try to add a center image it seems alot of the sounds leave the front left and right channel. Is there anyway to get the center speaker on without losing sound from the left and right speaker. How does the center image setting work? Right now I have the center image off. Also I love how your plugin works. How it sounds like normal when theres no surround. It works perfect for this dsp I use. I use the winamp dsp bridge plugin and use the srswow winamp plugin and then your plugin and it sounds great.

If you heard of SRS WoW here is a link:
srslabs.com and click on technology.
Title: foo_dsp_fsurround
Post by: pro_optimizer on 2007-03-24 21:49:15
I had a question about your plugin. When I try to add a center image it seems alot of the sounds leave the front left and right channel. Is there anyway to get the center speaker on without losing sound from the left and right speaker. How does the center image setting work? Right now I have the center image off. Also I love how your plugin works. How it sounds like normal when theres no surround. It works perfect for this dsp I use. I use the winamp dsp bridge plugin and use the srswow winamp plugin and then your plugin and it sounds great.

If you heard of SRS WoW here is a link:
srslabs.com and click on technology.


Please excuse the delay (I was very busy),
When you want to pan sounds between left front and right front, you can theoretically use a wall of 20 speakers next to each other: Whenever a sound source is close to the position of a speaker X, that speaker is responsible for playing it back. When it is somewhere between 2 of those 20 speakers, both will play it, usually with different volumes.
You can approximate that effect with just 2 speakers but especially the center sources will sound more "fake", because your brain knows the difference between real center and left+right front. With center image you can morph between a 2 speakers and a 3 speakers wall.
Since music is optimized to sound good in the 2 front speakers setting, it may sound worse with 3 speakers. Apart from that, I would not use it if your center speaker is weaker than the left/right speakers.

I've heard of SRS WoW but I didn't try it yet (it seems to be tailored towards TV sets rather than surround systems).
I'd be careful with SRS 3d, since it might destroy the surround information (have you tried channeltest.mp3 (http://files.filefront.com/6292644)?).
Title: foo_dsp_fsurround
Post by: Rswave2k2 on 2007-03-27 18:26:51
Please excuse the delay (I was very busy),
When you want to pan sounds between left front and right front, you can theoretically use a wall of 20 speakers next to each other: Whenever a sound source is close to the position of a speaker X, that speaker is responsible for playing it back. When it is somewhere between 2 of those 20 speakers, both will play it, usually with different volumes.
You can approximate that effect with just 2 speakers but especially the center sources will sound more "fake", because your brain knows the difference between real center and left+right front. With center image you can morph between a 2 speakers and a 3 speakers wall.
Since music is optimized to sound good in the 2 front speakers setting, it may sound worse with 3 speakers. Apart from that, I would not use it if your center speaker is weaker than the left/right speakers.

I've heard of SRS WoW but I didn't try it yet (it seems to be tailored towards TV sets rather than surround systems).
I'd be careful with SRS 3d, since it might destroy the surround information (have you tried channeltest.mp3 (http://files.filefront.com/6292644)?).


Thanks for the reply. I tried turning center image to 1.0 and it my foobar use 50% of my cpu. What's a good recommendation setting for center image? So with center it plays more of the "center" sounds of the sound field. And since theres a center one to play between 2 and 20 more if the sounds of like speakers 9-14 get played on the center only. Also for the center image whats the difference between 0.2 or say 0.7 is it volume or what? What setting would be good lets say with the 20 speaker example have left speaker play 1-7 center play 8-13 and right play 14-20. Does having the cetner image at 1.0 make center play 2-19?
Title: foo_dsp_fsurround
Post by: morphguy12 on 2007-04-06 00:14:15
Failed to load DLL: foo_dsp_fsurround.dll
Reason: This component is missing a required dependency, or was made for different version of foobar2000.

any reason as to why this would happen?
Title: foo_dsp_fsurround
Post by: pro_optimizer on 2007-04-06 17:13:49
Thanks for the reply. I tried turning center image to 1.0 and it my foobar use 50% of my cpu. What's a good recommendation setting for center image? So with center it plays more of the "center" sounds of the sound field. And since theres a center one to play between 2 and 20 more if the sounds of like speakers 9-14 get played on the center only. Also for the center image whats the difference between 0.2 or say 0.7 is it volume or what? What setting would be good lets say with the 20 speaker example have left speaker play 1-7 center play 8-13 and right play 14-20. Does having the cetner image at 1.0 make center play 2-19?

No. In the 2-speaker setting there is a constant factor associated with every position (different, for left and right speakers), e.g. for the 20 imagined speakers:
left plays #1@100%, #2@95%, ... #10@50%, #11@45%, ..., #20@0%
center plays 0% always
right plays #1@0%, #2@5%, #3@10%, ..., #19@95%, #20@100%

In the 3-speaker setting, there is again a constant factor for each position (different for left,center,right):
left plays #1@100%, #2@90%, #3@80%, ..., #9@10%, #10@0%,  #11@0%, ..., #20@0%
center plays #1@0%, #2@10%, #3@20%, ..., #9@90%, #10@100%,  #11@90%, ..., #20@0%
right plays #1@0%, #2@0%, ..., #10@0%,  #11@10%, #12@20%, ... #19@90%, #20@100%

So what does center image do?
It blends linearly between the factors of the 2-speaker setting and the 3-speaker setting.
This means, you can gradually blend between both settings.
Note that the positions of the sound sources do not change, i.e. an instrument 30° to the left will be 30° to the left in any of the settings (even the intermediate ones).
The only thing that differs with center enabled is that you can have a more concrete image of the close-to-center instruments, because they are played by a speaker that is actually at that position and not simulated by two speakers which are at completely different locations.

Btw: The center image setting should not influence how much CPU you foobar consumes (except there's some magic involved like "if the buffer is all 0, then don't do any calculations on it." but it's not very likely that anyone would do this since that slows down the normal processing).

Failed to load DLL: foo_dsp_fsurround.dll
Reason: This component is missing a required dependency, or was made for different version of foobar2000.

any reason as to why this would happen?

The most likely reason is that you forgot to download the libfftw3 (http://files.filefront.com/6628260) library (it should go into windows\system32 or your foobar2000 folder)...
Title: foo_dsp_fsurround
Post by: mkeroppi on 2007-04-11 22:34:57
Is there any way to reverse the front and rear? I'm using it with Dolby Headphone with the ER-4B and the front and rear are reversed for some reason.
Title: foo_dsp_fsurround
Post by: pro_optimizer on 2007-04-12 19:38:52
Is there any way to reverse the front and rear? I'm using it with Dolby Headphone with the ER-4B and the front and rear are reversed for some reason.

Not really, but you could try to eliminate the reason.
I don't think that the output channels got mixed up (assuming you have recent (and non-hacked) versions of foobar, FS and DH). However, you could verify this with the channeltest.mp3 (http://files.filefront.com/6292644).
To be absolutely sure that FS's output mapping is ok, you could put ATSurround-Headphone after it and selectively mute some of its 5 input channels.

I think its more likely that somewhere in your input chain (e.g. the CD ripper or input plugin) the polarity of one of your stereo channels got inverted. This would result in more or less switched front and rear in all common surround decoders. The fix would be to flip the channel's sign back.

If none of the above is the problem, I can only imagine that DH may be not very compatible to your ears/ears-headphone combination.
Title: foo_dsp_fsurround
Post by: mkeroppi on 2007-04-16 01:54:18

Is there any way to reverse the front and rear? I'm using it with Dolby Headphone with the ER-4B and the front and rear are reversed for some reason.

Not really, but you could try to eliminate the reason.
I don't think that the output channels got mixed up (assuming you have recent (and non-hacked) versions of foobar, FS and DH). However, you could verify this with the channeltest.mp3 (http://files.filefront.com/6292644).
To be absolutely sure that FS's output mapping is ok, you could put ATSurround-Headphone after it and selectively mute some of its 5 input channels.

I think its more likely that somewhere in your input chain (e.g. the CD ripper or input plugin) the polarity of one of your stereo channels got inverted. This would result in more or less switched front and rear in all common surround decoders. The fix would be to flip the channel's sign back.

If none of the above is the problem, I can only imagine that DH may be not very compatible to your ears/ears-headphone combination.


I actually tried the channeltest.mp3 before the post. I've tried ATSurround and it seems the channels are mapped correctly for the plugin, so it seems to be a problem with DH. the LRC channels seems to be behind me, as well as moving the "dimension" would seem to move the sound linearly in reverse (negative moves the sound forward while positive moves it backward).

So it's not simply a matter of flipping the front and rear channels I guess.
Title: foo_dsp_fsurround
Post by: narcosiss on 2007-04-21 22:45:55
Heya, thanks alot for this DSP! It works much better than the standard channel mixer.

However, whenever I have it on, all my music gets a kinda 'jangly' chorusy effect on it like a low quality mp3.
I'm sure you know the type I mean, like when you stream a low quality video on a website and the audio has a jingling noise to it.

I was wondering, is there a way to prevent this or fix it?

I'm not the biggest audiophile buff so I don't know most of the terms, I do have a fairly good understanding though.

Thanks
Title: foo_dsp_fsurround
Post by: Acropolis on 2007-05-03 07:44:01
I found that this component (as well as downmix I think) has a very low performance, especially when starting a track, even I only put this in the DSP chain, it will always interrupt the plackback (I can achieve uninterrupted when manually change the track.

I think the cause is because it is using std:vector.
I've made a modification so that a lot faster and reinitialize when only needed and no interruption, if you want my modified source, please pm me.
Title: foo_dsp_fsurround
Post by: poisas on 2007-06-06 20:07:21
Any update will come up ?  we are waiting...  anyway good job
Title: foo_dsp_fsurround
Post by: metal_termite on 2007-06-07 03:09:52
It was mentioned to use foo_channel_mixer to redirect bass to the subwoofer to work with this component, yes? Could someone help me with that, because when I put foo_chanel_mixer into the DSP chain it seems to nullify this component. How do I set them up?

Also I am just curious if someone could answer this in layman's terms. Why doesn't this component allow redirection of bass to the subwoofer? Does that mean my subwoofer does not get used?

Sorry for the dumb questions, but I'm totally clueless regarding DSPs.
Title: foo_dsp_fsurround
Post by: poisas on 2007-06-11 14:55:39
anyone found other alternative type of mixers like fsurround ?
as we know there are atsurround but this one is #2 - no rear channel steering,
Title: foo_dsp_fsurround
Post by: pro_optimizer on 2007-06-13 23:32:07
Hello folks,

sorry for my low post frequency lately, reason is that I have a huge load of inevitable work to do at work (and university (and elsewhere... )).
There will be progress once I chewed through all this (although I don't know if there is actually an open feature request in the queue, apart from speed optimizations).

Concerning the bass redirection, you can do this by putting Channel Mixer afterwards and redirect all bass from the 5 satelites to the subwoofer. It goes like this (at least in the version I have):

General tab: "Output channels" = 6
Upmix tab: "Mode" = off
Downmix tab: "Mode" = off
Subwoofer tab:
   "Use subwoofer" = checked
   "Send to subwoofer from 5.1 sources:"  = "All channels"
   "Bass redirection" = checked
   "Type" = "Full redirection"
Delays tab: "Use delay" = unchecked

I don't know how the quality is, though (since I have no subwoofer).
You could also try to get your soundcard to do it (it should be possible, e.g. by setting output channels in channel mixer to 5 and deactivate bass redirection -- then you card has to infer the bass channel from somewhere).

@Acropolis:
Thanks for the hint. I didn't expect that the whole DSP chain is being destroyed and recreated when one changes the track. I fixed it by retaining the buffers and the processor inside an object pool. Now it takes less than 0.1 seconds to switch the tracks (including harddisk seek time).

@posias:
I hope you are writing this because you want to "bring me back" ...

Edit: One person downloaded a premature version (with a glitch when switching tracks) of the file, 2 hours ago or so. If your are the one, please redownload...
Title: foo_dsp_fsurround
Post by: Rswave2k2 on 2007-06-19 05:04:07
I tried turning center image to 1.0 and it my foobar use 50% of my cpu. ?


Remember when I post this a while back? Well whatever that guy told you about the fix in switching songs it worked. Now when I put the center image to .70 it no longer uses 50% of the cpu. So thanks for the fix! I did reinstall my drivers so that may be it I'm not sure fixed it.
Title: foo_dsp_fsurround
Post by: poisas on 2007-06-19 17:17:40
Thats right pro_optimizer  i hate silence,
i want you back, because youre doing great job here
waitin here for next update
Title: foo_dsp_fsurround
Post by: tech on 2007-07-12 21:06:40
I have to same problem
(http://img517.imageshack.us/img517/5655/untitled2it0.jpg)

Failed to load DLL: foo_dsp_fsurround.dll
Reason: This component is missing a required dependency, or was made for different version of foobar2000.

any reason as to why this would happen?
Title: foo_dsp_fsurround
Post by: GeSomeone on 2007-07-13 17:26:32
I have to same problem
As who? 
Did you read the first post that says you need also libfftw3f-3.dll? Put that in your foobar2000 directory if you haven't done so.

edit: I misspelled foobar2000
Title: foo_dsp_fsurround
Post by: blahdy on 2008-01-14 00:59:38
apologies for rehasing an old thread here...

I was wondering, for next updated version (hopefully there will be one ), could you add a control to set the Rear speaker volumes?  This would be different than Dimension slider;  A simple volume slider for each 5 speakers (L, C, R, RL, RR) like how Channel Mixer has would be nice   

The matrix decoding on your plugin is awesome though, great job!
Title: foo_dsp_fsurround
Post by: Jorgo on 2008-08-08 18:50:57
I am amazed at the quality this plugin retains when put in a DSP chain, I'd like to use it as a replacement for binaural listening on headphones.

Center Image, Dimension and Stereo Separation all seem to go into this but I'm not 100% what each one does exactly:
Stereo Separation moves the speakers closer together?
Center Image moves the listener back and forth between front and rear?
Dimension makes the room smaller/bigger?

Any suggestions as to what good values to use?
Title: foo_dsp_fsurround
Post by: pro_optimizer on 2008-08-09 00:23:41
I am amazed at the quality this plugin retains when put in a DSP chain, I'd like to use it as a replacement for binaural listening on headphones.

Center Image, Dimension and Stereo Separation all seem to go into this but I'm not 100% what each one does exactly:
Stereo Separation moves the speakers closer together?
Center Image moves the listener back and forth between front and rear?
Dimension makes the room smaller/bigger?

Any suggestions as to what good values to use?


Here is the settings which I am currently using, and have been using for about a year, both with Dolby Headphone and my home surround receiver:
(http://img521.imageshack.us/img521/8771/recommendedsettingsoi0.th.png) (http://img521.imageshack.us/my.php?image=recommendedsettingsoi0.png)

As you see, most values are at their defaults. This means that a vanilla stereo mix should sound as if played on a stereo system (except for echoes, which usually come from behind), and a surround-encoded mix should sound like the artist wanted it to sound.
You use the sliders if
a) your (possibly virtual) speakers are inadequately placed or chosen
b) you are listening to music which was mixed by less technically adept people
c) you want to get surround-like effects even with good old stereo music

Here is the meaning of the sliders:

High values (>1) of Stereo Separation stretch the sound sources further to the left/right (this can give you a wider soundfield), lower values (<1) give you a narrower soundfield. 1.0 means that the original (i.e. artist intended) stereo separations are retained.

Center Image does not change the location of any perceived sound. However, it controls to what degree the center speaker is allowed to reproduce center sound sources.
E.g. if you have an excellent center speaker (e.g. same as your front left/right speakers), you may want to use a high value here (e.g. 1.0). Otherwise, you use a smaller value (in the extreme case 0.0), which makes your left/right front speakers do all the work of the center, and the center does less or nothing.
Apart from the quality of your speakers, there is of course a difference between 3 same speakers in front of you versus just 2 of them. The difference is exactly that with 3 speakers it's easier for your brain to locate the center sources, which can give you a more concrete sound.

Dimension moves the sound sources towards the front (negative values), or towards the back (positive values). Slightly positive values may therefore result in more 'immersive' sound, negative values result in a more frontal, stereo-like sound.
For good surround mixes, it should not be necessary to tinker with this slider, and also if you want your vanilla stereo music to sound like stereo, you should not play with it. But, if you want to get lots of surround, even with not-so-surroundish music, you can use e.g. 0.5 here.

@blahdy: Sorry, currently, I don't plan to add such volume controls. The reason is that any surround (and even stereo) plugin would have to have these controls. But this is not what you want: A plugin is a module, which does a certain job. Mine is to decode the surround information within your stereo files, and deforming it in some ways. Controlling the volume of each speaker is actually the job of foobar2000, but since there is no such option, you need another plugin which does exactly this, and put it behind fsurround in the DSP chain.
Channel Mixer comes closest to that other plugin.
Title: foo_dsp_fsurround
Post by: pro_optimizer on 2008-08-11 23:28:10
Brought the initial post up to date, included some often requested information from throughout the thread...
Title: foo_dsp_fsurround
Post by: Walrusbonzo on 2008-08-12 21:05:05
Been getting sick of having to use Creative's nasty bloated software to get everything sounding right.

Found this plugin, absolutely loving it.

Excellent work.  CPU usage almost never goes over 1% even with PPHS Resampler to 96kHz in Ultra Mode.

Thanks!
Title: foo_dsp_fsurround
Post by: TheBlakester on 2008-09-08 17:07:52
This means that plain Stereo Music which was not encoded this way sounds very similar to normal Stereo, except that echoes or very distorted sounds usually come over the surround speakers, too. Encoded music sounds much better, of course.

I'm currently using the Dolby Headphone DSP and I'm trying to determine whether it should be preceded by either the free surround dsp or the channel mixer (for upscaling to 5.1).  You say the free surround dsp only has a significant effect when the music is encoded for surround playback, but I'm confused.  Don't these kind of releases already include a 5.1 mix?
Thanks.
Title: foo_dsp_fsurround
Post by: pro_optimizer on 2008-09-08 19:49:00
I'm currently using the Dolby Headphone DSP and I'm trying to determine whether it should be preceded by either the free surround dsp or the channel mixer (for upscaling to 5.1).  You say the free surround dsp only has a significant effect when the music is encoded for surround playback, but I'm confused.  Don't these kind of releases already include a 5.1 mix?
Thanks.


I think you're assuming that a release is either plain stereo or full-blown SACD/DVD-Audio.
But since it's easy to add surround effects here and there in a stereo mix, and since most people with surround setups have a stereo decoder, it is not that black-and-white.
There is a spectrum going from vanilla stereo music, over somewhat-enriched music, to multichannel-mastered and downmixed music (including the CD/mp3/(internet) radio versions of a 5.1 mix). The big problem is that no one ever cares to state on a CD what you will find on it, surround-wise (except for the occasional classical music label). So you can do no more than use it and see what unfolds and what doesn't, or use a channel replicator right away.
Title: foo_dsp_fsurround
Post by: TheBlakester on 2008-09-08 22:16:28

I'm currently using the Dolby Headphone DSP and I'm trying to determine whether it should be preceded by either the free surround dsp or the channel mixer (for upscaling to 5.1).  You say the free surround dsp only has a significant effect when the music is encoded for surround playback, but I'm confused.  Don't these kind of releases already include a 5.1 mix?
Thanks.


I think you're assuming that a release is either plain stereo or full-blown SACD/DVD-Audio.
But since it's easy to add surround effects here and there in a stereo mix, and since most people with surround setups have a stereo decoder, it is not that black-and-white.
There is a spectrum going from vanilla stereo music, over somewhat-enriched music, to multichannel-mastered and downmixed music (including the CD/mp3/(internet) radio versions of a 5.1 mix). The big problem is that no one ever cares to state on a CD what you will find on it, surround-wise (except for the occasional classical music label). So you can do no more than use it and see what unfolds and what doesn't, or use a channel replicator right away.

Ah, I see.  Thanks a lot for clearing that up.
Title: foo_dsp_fsurround
Post by: pro_optimizer on 2008-09-10 01:18:28
Ah, I see.  Thanks a lot for clearing that up.


Actually, you made me start this little public rating board (http://spreadsheets.google.com/pub?key=pNmgCLO7SUeN10tdNWYtcYw) for surround music, where anyone can rate and add his or her albums (http://spreadsheets.google.com/viewform?key=pNmgCLO7SUeN10tdNWYtcYw).
Congrats! 

It's now linked in the initial post, let's see how this pans out.
Title: foo_dsp_fsurround
Post by: Sounds Blast on 2008-09-10 01:43:14
Nice idea pro_optimizer  will be on there soon
Title: foo_dsp_fsurround
Post by: NullString on 2008-09-10 04:07:50
Quick question: Is the public rating board for surround albums? Like Jean Michel Jarre's Aero, or for stereo albums that sound good with this plugin?
Title: foo_dsp_fsurround
Post by: pro_optimizer on 2008-09-10 04:33:48
Nice idea pro_optimizer  will be on there soon


Thanks, I'll be waiting!

Quick question: Is the public rating board for surround albums? Like Jean Michel Jarre's Aero, or for stereo albums that sound good with this plugin?


I would not preclude multichannel albums - the more information, the better. I have added a "Release Remarks" field, where the release medium should be entered if it is some non-stereo source.
Title: foo_dsp_fsurround
Post by: mrbnatural on 2009-04-01 22:41:52
I'm having trouble using this plugin on Windows Vista 64-bit (Pentium Duo-Core 2.1ghz). When FB2K 0.9.6.3 loads, it throws an error that the DLL wasn't compiled for my system. Shouldn't 32-bit libraries be backward compatible in a case like this? I get this error with a LOT of plugins, btw. And, same error on my Windows 7 machine at home. I originally thought Win7 was the problem, but now it's throwing the same error on Vista, so ... is there a 64bit compiled version of this dll somewhere? I realize the source code is available, but unfortunately I don't have the resources to compile it myself anymore.

Update: the error is:
Quote
Failed to load DLL: foo_dsp_fsurround.dll
Reason: This component is not compatible with this version of Windows and needs to be recompiled with a newer version of the foobar2000 SDK; please contact the author of this component to obtain an updated version of this component.

And as I read in the Support section of the forum apparently this has to do with SDK incompatibility. Can anyone recommend a comperable alterative? I hate Channel Mixer.
Title: foo_dsp_fsurround
Post by: SpaceAgeHero on 2009-04-03 17:20:30
A new version with proper bass redirection would be nice.
I actually just want this so VU-Meter virtualisation shows the low frequency bar too. xD

Loving your dsp. Would still love to see it evolve. Lossless flac music just sounds mindblowing with it.
I recommend: Radiohead - In Rainbows

xD

Will soon be on your rating board as well.
Title: foo_dsp_fsurround
Post by: poisas on 2009-06-28 18:58:40
I am using it for more than 2 years  now i have to switch to digital plug in to receiver  no meaning to have this amaizing plugin anymore ;D receiver does the prologic job 

but anyone uses analog input, i recomend this plugin + noise sharpening it is realy mindblowing quality of surround...

A new version with proper bass redirection would be nice.
I actually just want this so VU-Meter virtualisation shows the low frequency bar too. xD

Loving your dsp. Would still love to see it evolve. Lossless flac music just sounds mindblowing with it.
I recommend: Radiohead - In Rainbows

xD

Will soon be on your rating board as well.

Title: foo_dsp_fsurround
Post by: SpaceAgeHero on 2009-06-28 23:18:38
I am using it for more than 2 years  now i have to switch to digital plug in to receiver  no meaning to have this amaizing plugin anymore ;D receiver does the prologic job 

but anyone uses analog input, i recomend this plugin + noise sharpening it is realy mindblowing quality of surround...


Huh?

Pro Logic? What do you mean by digital plug? Optical S/PDIF? Because as far as I understand only stereo can be transfered over S/PDIF.
So if you're using S/PDIF and switch on Pro Logic on your receiver fsurround is not effective. Pro Logic is an internal dsp routine of your receiver.

Actually what we need is something that can pack the multichannel audio as it is produced by fsurround to an ac3 stream.

Edit: Oh well, now I understand what you are talking about. Anyways IMHO fsurround sounds way better than Pro Logic ...
Title: foo_dsp_fsurround
Post by: shakey_snake on 2009-06-29 02:57:28
Because as far as I understand only stereo can be transfered over S/PDIF.
S/PDIF can carry 4 channels.

Some implementations allow multi-channel DTS over S/PDIF
Title: foo_dsp_fsurround
Post by: jahpal on 2009-06-29 03:08:04
I Think Foo Channel Mixer its a Good , DSP Plugin For Foobar . I Think You Should Try It And See. THANK YOU...
Title: foo_dsp_fsurround
Post by: GeSomeone on 2009-06-29 11:23:59
Actually what we need is something that can pack the multichannel audio as it is produced by fsurround to an ac3 stream.

You might take a look at AC3 Filter (http://ac3filter.net/projects/ac3filter). But keep in mind that converting your output to AC3 (Dolby Digital) is in fact lossy (trans)coding and AC3 is considered the "mp3 for surround sound".
Title: foo_dsp_fsurround
Post by: SpaceAgeHero on 2009-06-29 17:19:17
Actually what we need is something that can pack the multichannel audio as it is produced by fsurround to an ac3 stream.

You might take a look at AC3 Filter (http://ac3filter.net/projects/ac3filter). But keep in mind that converting your output to AC3 (Dolby Digital) is in fact lossy (trans)coding and AC3 is considered the "mp3 for surround sound".


Yes I tried AC3Filter but I couldn't get it to work with foobar2000 even though I had foo_input_ds enabled. Somehow AC3Filter doesn't recognize anything. In fact it doesn't even start like it does with MPC HC.
Title: foo_dsp_fsurround
Post by: boombaard on 2009-06-30 08:46:34
links are all dead.
Title: foo_dsp_fsurround
Post by: SpaceAgeHero on 2009-06-30 18:12:22
There should be all you need. Simply put it in your foobar folder.

fsurround (http://ul.to/doawpl)
Title: foo_dsp_fsurround
Post by: rhester72 on 2009-06-30 18:41:07
Anyone considered porting this as an AviSynth filter?  It would be incredibly useful for automated conversions of Dolby Surround material to either discrete or Dolby Headphone.

I've taken a look at the SDKs for both fb2k and AS and it looks like a good bit of effort would be required to "normalize" fsurround into the AS plugin structure (though forcing real-time transparent float conversion from integer source is "free" in AS), and to be perfectly honest, I'm not a C++ guy - my strengths are C and scripting.

I have poked around quite a bit in the last few days to see if anything similar existed for AviSynth and unfortunately nothing comes close.

Rodney
Title: foo_dsp_fsurround
Post by: poisas on 2009-07-05 11:38:46
I am using it for more than 2 years  now i have to switch to digital plug in to receiver  no meaning to have this amaizing plugin anymore ;D receiver does the prologic job 

but anyone uses analog input, i recomend this plugin + noise sharpening it is realy mindblowing quality of surround...


Huh?

Pro Logic? What do you mean by digital plug? Optical S/PDIF? Because as far as I understand only stereo can be transfered over S/PDIF.
So if you're using S/PDIF and switch on Pro Logic on your receiver fsurround is not effective. Pro Logic is an internal dsp routine of your receiver.

Actually what we need is something that can pack the multichannel audio as it is produced by fsurround to an ac3 stream.

Edit: Oh well, now I understand what you are talking about. Anyways IMHO fsurround sounds way better than Pro Logic ...


if you don't know what is Dolby Prologic IIx ect, this is hardware or i don't know realy method for stereo to 5.1 or 7.1 upmix.  Optical or coax connection does not matter witch one you will choose, i preffer coax connection for better connection. naturaly pc - receiver connection is PCM type, just transfering sound in 2.0 stereo mode. but receiver can "receive"
DTS or AC3 type of digital signal witch can cary more than 2channels, and you can send this type of signal from your pc  if you have movie with ac3, or dts soundtrack, you can choose to passthrouh this signal and receiver detects it and plays it.  I was working in computer audio shop, had a chance to test few receivers, quality of prologic produced sound, depends on receiver mostly. If you take Yamaha for example than i will choose fsurround for better surround quality. I use Denon, cause i think it produses superb surround.

For your purpose to use foobar and fsurround, we need plugin that would alow to use direcshow filter ac3, because ac3 can encode "on fly" to dts signal. Problem is that with digital connection, i cannot think out method to transport lossless 5.1 sound to receiver  Sadly my denon doesnot have hdmi connection, so i don't know how that would work and what it can transport digitaly..
Title: foo_dsp_fsurround
Post by: SpaceAgeHero on 2009-07-05 12:11:06
Isn't Pro Logic a hardware based standard which should produce pretty much the same effect (NOT sound) on any receiver?

Anyways, can HDMI carry a raw multichannel audio stream (without using ac3 or dts)?
Title: foo_dsp_fsurround
Post by: Kipposaur on 2009-09-16 00:58:14
nice plugin, ty
Title: foo_dsp_fsurround
Post by: foggynovember on 2009-12-22 00:25:50
Very good plugin, and does overall a good job, i.e. what is expected of it.

An observation, though:
Don't try it with complex music like Adversus. I don't think it has something to do with the plugin, more the basic principle "it makes things surround". You just get murky echo-soup here.
Title: foo_dsp_fsurround
Post by: antropoid on 2009-12-22 17:01:24
Does any one have any idea about cpu ussage of this plug-in. In three diffrentent systems (win7 2gb, Xp 1 gb and vista home premium2gb )when I use it cpu usage goes beyond 20%, when I´m not using it it goes below 5%.
cheers

antropoid
Title: foo_dsp_fsurround
Post by: MusX on 2010-01-15 20:04:04
any chance for make your plugin able to amplificate to 200%?
please read:
http://www.head-fi.org/forums/f46/5-1-head...tml#post6316693 (http://www.head-fi.org/forums/f46/5-1-headphone-experience-foobar-configuration-all-stereo-music-files-447089/index16.html#post6316693)
and maybe some switch to mute specific channels, like in channel mixer. it might be usefully for debug
Title: foo_dsp_fsurround
Post by: 2E7AH on 2010-01-15 21:34:47
and maybe some switch to mute specific channels, like in channel mixer. it might be usefully for debug

use matrix mixer (http://skipyrich.com/wiki/Foobar2000:Matrix_Mixer) after fsurround
Title: foo_dsp_fsurround
Post by: MusX on 2010-01-15 21:58:04
works great! thanks. didn't know Skipy is still active foo programmer
Title: foo_dsp_fsurround
Post by: pro_optimizer on 2010-01-17 01:23:17
any chance for make your plugin able to amplificate to 200%?
please read:
http://www.head-fi.org/forums/f46/5-1-head...tml#post6316693 (http://www.head-fi.org/forums/f46/5-1-headphone-experience-foobar-configuration-all-stereo-music-files-447089/index16.html#post6316693)
and maybe some switch to mute specific channels, like in channel mixer. it might be usefully for debug


If you do this, you may run into clipping with some music, and that may not be easy to notice. The best way is to use the good old volume knob...
Title: foo_dsp_fsurround
Post by: pro_optimizer on 2010-01-17 01:29:44
On the matter of updates, there is currently not much reason to change anything.

* Bass redirection, an often requested feature, is best solved by a plugin which handles the last output stage. The reason is that
a) it's intricate (see, for example, here (http://forum.ecoustics.com/bbs/messages/34579/119794.html))
b) it would be necessary for foo_ac3, foo_dts, and even for stereo playback if you have a sub-satellite system which can't do bass management by itself!

Therefore, this is the definitive job for plugins such as foo_channel_mixer and foo_dsp_xover (see http://xover.sourceforge.net/ (http://xover.sourceforge.net/) for how complicated a solution can look like).

* Small position accuracy improvements are still possible, but will be barely audible (whether a source is 3cm further to the left, at 3m distance, will hardly make a difference), and must be thoroughly tested, because vanilla stereo shouldn't get messed with along the way. Therefore, this is on hold until I really have a lot of time for testing.

* A panorama mode (like PL2 has) is probably the best feature for the near future. This would wrap the front stereo around the listener, but must be done right in conjunction with the regular rear channel sounds. I will think this through soon.
Title: foo_dsp_fsurround
Post by: MusX on 2010-01-17 10:35:41
pro_optimizer have you tried this headphone dsp setup I've link here? it's really impressive
Title: foo_dsp_fsurround
Post by: SpaceAgeHero on 2010-06-29 18:12:04
On the matter of updates, there is currently not much reason to change anything.


Hey pro_optimizer hopefully you will still be updating my favourite foobar2000 component!

I have one small cosmetic request. Can you make it possible to turn clipping detection off?
Sometimes my logs are flushed with this even though everything is ReplayGain-scanned properly!
Title: foo_dsp_fsurround
Post by: pro_optimizer on 2010-12-04 13:28:57
There is now a (long overdue) new version of the plugin, taking into account some of the feature requests, and implementing some generalizations here and there (also, you no longer need libfftw). You find it here (http://www.hydrogenaudio.org/forums/index.php?act=attach&type=post&id=6246) (attached to the first post).

It's largely rewritten, so necessarily beta for now (you can use it in parallel to the current stable version).

While Free Surround has always been close in design to what ProLogic II and the like were doing, this version is quite a bit more flexible and can in principle upmix to any speaker arrangement (up to fb2k's 16.1 limit), and offers more means to transform the sound field - so it can be used both for strict decoding (in the default settings) as well as for stereo enhancement.

Screenshot:
(http://img72.imageshack.us/img72/5412/configdialog.th.png) (http://img72.imageshack.us/i/configdialog.png/)

A few notes on the sound stage transforms - these are best thought of as geometric transformations of a real stage (usually spanned between front left and front right speaker):

The speaker setups with "(surround)" behind them are the classic home cinema setups (you can find them on the internet). 3-stereo and 5-stereo are like stereo, except that more front speakers are used. The 5.1 "legacy upmix" is basically the algorithm in version 0.3.5. The "half-circle" ones are for dense half-circle speaker arrangements (e.g., useful for plain stereo music that is mapped onto a circular panorama).

Foobar2000 does not have channels for "side front left", "side front right", "side back right", "side back left" (which you need for certain cinematic arrangements) -- instead it has channels labeled "top front left", "top front right", "top back left", "top back right", which I am using as substitutes (in that order) - that is, you need to connect your special side speakers to the outputs that are called "top xxx" by whatever output plugin you are using. Note that these are not the regular "side left" or "side right", nor your regular front/back speakers, but additional ones that sit in between. Likewise, foobar2000 does not have channels for "back center left" and "back center right", but instead "top front center" and "top back center", which are used as substitutes for these two.

I have little experience with bass redirection (and there are a few caveats with these systems), so if your OS, sound card and/or audio system can do this for you (and if you need it at all), you better use one of these instead. The FreeSurround implementation should be correct, but the levels that you are getting out of it might well need some hand tuning.
Title: foo_dsp_fsurround
Post by: SpaceAgeHero on 2010-12-04 13:50:19
I can't access the attachment! :-(

"Sorry, some required files are missing, if you intended to view a topic, it's possible that it's been moved or deleted. Please go back and try again."

I'm dying to test the new version! Please provide a new link!

Thank you pro_optimizer :-)

Edit: Nevermind, I found it: foo_dsp_fsurround_0.8_beta (http://www.hydrogenaudio.org/forums/index.php?act=attach&type=post&id=6244)
Title: foo_dsp_fsurround
Post by: pro_optimizer on 2010-12-04 14:03:59
I can't access the attachment! :-(

"Sorry, some required files are missing, if you intended to view a topic, it's possible that it's been moved or deleted. Please go back and try again."

I'm dying to test the new version! Please provide a new link!

Thank you pro_optimizer :-)

Edit: Nevermind, I found it: foo_dsp_fsurround_0.8_beta (http://www.hydrogenaudio.org/forums/index.php?act=attach&type=post&id=6244)


Thanks - thought that I could just replace the attached file after I noticed that a feature was disabled... fixed now.
Title: foo_dsp_fsurround
Post by: pro_optimizer on 2010-12-05 01:00:08
Fix: Had the wrong default value for Focus (should have been 0) -- upped the version number to 0.8.1. Sorry for the inconvenience!

Updated the attachment in the first post.
Title: foo_dsp_fsurround
Post by: faemir on 2010-12-05 14:11:41
Just dropping by to say thanks for the plugin, it's great!

Pain of Salvations' albums seem to be consistently superb with it - or certainly the two I've listened to so far.
Title: foo_dsp_fsurround
Post by: SpaceAgeHero on 2010-12-05 15:09:25
Replying again to say thank you as well.
Sound is really great on almost everything I am listening to.
Voice is properly centered in rock music and electronic music sounds just incredible.
(Especially my Ultimae Records collection!)

Always a pleasure!

You should get it added to the component (http://www.foobar2000.org/components) page.
Title: foo_dsp_fsurround
Post by: romor on 2010-12-12 00:05:32
Some questions (of many):
- Does SQ decoding mean just selecting 4.1 without LFE, and QS the same but with 1.5 separation (both or just front/rear)? Can you share how you implemented SQ decoding? I read Wendy Carlos schematics but did not really understand how to do it (not thinking about C programming)
- I have a radioplay encoded in MP3 joint stereo. When I play it with 4.1 I don't get anything in rear channels - it's just plays like I don't have this component in DSP manager. If I decode it to mid-side I get only mid
- similarly to above, if I try default 5.1 setting on mentioned material, I get only center channel, all others are muted. With previous version of this component this can happen if "Center image" is set to 1
Title: foo_dsp_fsurround
Post by: pro_optimizer on 2010-12-14 09:05:07
Some questions (of many):
- Does SQ decoding mean just selecting 4.1 without LFE, and QS the same but with 1.5 separation (both or just front/rear)? Can you share how you implemented SQ decoding? I read Wendy Carlos schematics but did not really understand how to do it (not thinking about C programming)
- I have a radioplay encoded in MP3 joint stereo. When I play it with 4.1 I don't get anything in rear channels - it's just plays like I don't have this component in DSP manager. If I decode it to mid-side I get only mid
- similarly to above, if I try default 5.1 setting on mentioned material, I get only center channel, all others are muted. With previous version of this component this can happen if "Center image" is set to 1


Yes, that'd be the correct approach. It could be that the joint stereo has damaged some of the surround info (possibly if it was done with one of the early encoders), but that's hard to tell. Is your source material available from somewhere (possibly in original form)? Then, I could test it myself. With today's methods one can do a theoretically optimal SQ decoder (just like FS is basically optimal for DPL2 etc.), if one uses the correct encoding matrix... but that requires some mathematics. Given some material for testing I might look into it on a future weekend.
Title: foo_dsp_fsurround
Post by: wyup on 2011-01-26 00:37:49
thank you for this new version, pro_optimizer, it's full of new functionality to experiment with surround with great results..
it's become my top dsp plugin in my 5.1 setup and it's always on. Its processing makes magic from stereo.
Keep up the good work!
Title: foo_dsp_fsurround
Post by: redmodel on 2011-02-05 07:15:20
Thanks for the Plugin,  It's very much appreciated.

I do have a question, how does the Bass Transition Lower, and Bass Transition Upper work?

I noticed the levels in the LFE goes up when i put bass transition lower to 80hz.  My goal is to pretty much just send anything at 80hz and lower to the LFE.

Also, I created a 6 Channel wav, to see if I can isolate the Centre Channel and I noticed that a lot of bass was being sent there. 

Also, with the bass in the centre channel, and the bass that's being re-directed to the LFE, I'm getting extra bass in the tracks.  My receiver is re-directing the bass from the centre to my LFE.  I don't mind the extra bass too much, but i'd like it all in the LFE from the get go.

In Soundbooth, the centre channel is also peaking above 0db

My settings are set to 5.1 (surround), with direct bass to LFE checked.

I'll looking into trying the other 5.1 settings to see if it'll help.

thanks again with the plugins.
Title: foo_dsp_fsurround
Post by: Rollin on 2011-02-06 09:24:07
beta 0.8.1 makes foobar crash on my system, when i try to open DSP manager
Crash report:
Code: [Select]
Illegal operation:
Code: C0000005h, flags: 00000000h, address: 02159AA4h
Access violation, operation: write, address: 021BE604h

Call path:
entry=>app_mainloop

Code bytes (02159AA4h):
02159A64h:  74 09 8B 16 8B 42 04 8B CE FF D0 B0 01 8B 4C 24
02159A74h:  34 64 89 0D 00 00 00 00 5F 5E 8B E5 5D C2 08 00
02159A84h:  8B 4C 24 34 5F 32 C0 64 89 0D 00 00 00 00 5E 8B
02159A94h:  E5 5D C2 08 00 CC CC CC CC CC CC CC 8B 44 24 04
02159AA4h:  F3 0F 7E 05 04 E6 1B 02 66 0F D6 00 F3 0F 7E 05
02159AB4h:  0C E6 1B 02 66 0F D6 40 08 C2 04 00 B0 01 C3 CC
02159AC4h:  CC CC CC CC CC CC CC CC CC CC CC CC 56 8B 74 24
02159AD4h:  10 57 8B 7C 24 0C E8 51 19 05 00 5F 5E C2 0C 00

Stack (0012EB70h):
0012EB50h:  0012F944 7C9C94F8 77F643ED 7C9C94F8
0012EB60h:  00000004 00000000 0012EE50 00000000
0012EB70h:  00443EB4 0012EC00 00000000 7E37929A
0012EB80h:  0350F578 00000000 0220F958 00000000
0012EB90h:  00000000 00000000 00000001 01000000
0012EBA0h:  0056B7E8 0371FFF8 00000015 00000040
0012EBB0h:  00000014 03511130 0000000A 0000000C
0012EBC0h:  00F31DC0 00000000 001AB1E8 00000005
0012EBD0h:  0000000A 00000000 00000000 00000000
0012EBE0h:  035012F8 00000000 00000000 03511130
0012EBF0h:  00000000 00000000 00000000 00000000
0012EC00h:  0E2473DF 471B1170 D4C509A6 D45AD3A6
0012EC10h:  00000000 0012EC5C 005514EA 00000002
0012EC20h:  00030610 0012EC6C 0044385B 0350F578
0012EC30h:  0012ED6C 0350F578 000004DD D80A0EFC
0012EC40h:  00000104 01000000 0012EC7C 0012EC68
0012EC50h:  00447705 00050620 0012ED6C 0012ED04
0012EC60h:  00554708 FFFFFFFF 0012EC84 0012EC84
0012EC70h:  00442F4C 000605F4 00000110 00050620
0012EC80h:  0350F578 0012ECAC 00446301 00050620

Registers:
EAX: 0012EC00, EBX: 0012EB01, ECX: 0220F958, EDX: 0012EC00
ESI: 0350F578, EDI: 035012F8, EBP: 0012EC24, ESP: 0012EB70

Crash location:
Module: foo_dsp_fsurround_beta
Offset: 9AA4h

Loaded modules:
foobar2000                      loaded at 00400000h - 005F0000h
ntdll                            loaded at 7C900000h - 7C9B3000h
kernel32                        loaded at 7C800000h - 7C8F8000h
COMCTL32                        loaded at 773C0000h - 774C3000h
msvcrt                          loaded at 77C00000h - 77C58000h
ADVAPI32                        loaded at 77DC0000h - 77E6C000h
RPCRT4                          loaded at 77E70000h - 77F03000h
Secur32                          loaded at 77FE0000h - 77FF1000h
GDI32                            loaded at 77F10000h - 77F59000h
USER32                          loaded at 7E360000h - 7E3F1000h
SHLWAPI                          loaded at 77F60000h - 77FD6000h
DSOUND                          loaded at 73ED0000h - 73F2C000h
ole32                            loaded at 774D0000h - 7760E000h
VERSION                          loaded at 77BF0000h - 77BF8000h
WINMM                            loaded at 76B20000h - 76B4E000h
UxTheme                          loaded at 5B260000h - 5B298000h
SHELL32                          loaded at 7C9C0000h - 7D1DB000h
zlib1                            loaded at 5A4C0000h - 5A4D4000h
shared                          loaded at 10000000h - 1002B000h
imagehlp                        loaded at 76C80000h - 76CA8000h
dbghelp                          loaded at 59C60000h - 59D01000h
COMDLG32                        loaded at 76380000h - 763C9000h
CRYPT32                          loaded at 77A70000h - 77B06000h
MSASN1                          loaded at 77B10000h - 77B22000h
gdiplus                          loaded at 4EBE0000h - 4ED8B000h
IMM32                            loaded at 76360000h - 7637D000h
MSCTF                            loaded at 746E0000h - 7472C000h
WINTRUST                        loaded at 76C20000h - 76C4E000h
wdmaud                          loaded at 72CE0000h - 72CE9000h
msacm32                          loaded at 72CD0000h - 72CD8000h
MSACM32                          loaded at 77BD0000h - 77BE5000h
midimap                          loaded at 77BC0000h - 77BC7000h
msctfime                        loaded at 75310000h - 7533E000h
foo_bitcompare                  loaded at 01030000h - 01058000h
foo_input_shorten                loaded at 01080000h - 010AD000h
foo_chacon                      loaded at 010D0000h - 010F4000h
foo_gep                          loaded at 01110000h - 011CA000h
MSIMG32                          loaded at 76350000h - 76355000h
OLEAUT32                        loaded at 77110000h - 7719B000h
foo_dsp_eqsplit                  loaded at 011F0000h - 01242000h
foo_dsp_mm                      loaded at 01270000h - 012B1000h
foo_input_std                    loaded at 012D0000h - 01425000h
foo_benchmark                    loaded at 01450000h - 0147D000h
foo_input_ofr                    loaded at 014A0000h - 014DD000h
OptimFROG                        loaded at 014F0000h - 01521000h
foo_wave_seekbar                loaded at 01550000h - 0171A000h
WS2_32                          loaded at 71A90000h - 71AA7000h
WS2HELP                          loaded at 71A80000h - 71A88000h
foo_dsp_winamp                  loaded at 01740000h - 01768000h
foo_dsp_convolver                loaded at 01790000h - 0184A000h
PSAPI                            loaded at 76BE0000h - 76BEB000h
foo_texttools                    loaded at 01870000h - 018A4000h
foo_dsp_ssrc                    loaded at 018D0000h - 01903000h
foo_freedb2                      loaded at 01920000h - 01960000h
foo_input_amr                    loaded at 01980000h - 019C6000h
foo_out_ks                      loaded at 019F0000h - 01A1A000h
SETUPAPI                        loaded at 77910000h - 77A04000h
foo_lyricsgrabber2              loaded at 01A40000h - 01AFC000h
WLDAP32                          loaded at 76F50000h - 76F7D000h
python25                        loaded at 1E000000h - 1E208000h
MSVCR71                          loaded at 7C340000h - 7C396000h
foo_abx                          loaded at 01C30000h - 01C62000h
foo_dsp_resampler_mod2          loaded at 01C90000h - 01CC9000h
foo_input_dsdiff                loaded at 01CF0000h - 01D1D000h
foo_unpack                      loaded at 01D40000h - 01D6E000h
foo_dsp_ssrcX                    loaded at 01D90000h - 01DD3000h
foo_burninate                    loaded at 01DF0000h - 01E30000h
foo_bpm                          loaded at 01E50000h - 01E9E000h
libfftw                          loaded at 01EB0000h - 02036000h
foo_dsp_resampler SOX            loaded at 02070000h - 020A8000h
foo_convolve                    loaded at 020D0000h - 02121000h
foo_dsp_fsurround_beta          loaded at 02150000h - 02224000h
WINSPOOL                        loaded at 72FC0000h - 72FE6000h
foo_input_dvda                  loaded at 02270000h - 022C7000h
foo_rgscan                      loaded at 022F0000h - 0233D000h
foo_out_asio                    loaded at 02360000h - 02396000h
foo_input_monkey                loaded at 023C0000h - 02408000h
foo_dsp_bs2b                    loaded at 02430000h - 02457000h
foo_run                          loaded at 02480000h - 024DF000h
foo_channel_mixer                loaded at 02500000h - 0253A000h
foo_input_tta                    loaded at 02550000h - 02592000h
foo_ac3                          loaded at 025C0000h - 025F0000h
foo_input_alac                  loaded at 02610000h - 0262D000h
foo_cdda                        loaded at 02650000h - 0269E000h
foo_midi                        loaded at 026C0000h - 02855000h
foo_fileops                      loaded at 02880000h - 028C7000h
foo_dsp_resampler_SoX_mod        loaded at 028F0000h - 0292F000h
foo_input_la                    loaded at 02950000h - 02975000h
la-core                          loaded at 02990000h - 02A03000h
OLEACC                          loaded at 74C40000h - 74C6C000h
MSVCP60                          loaded at 76050000h - 760B5000h
foo_ui_std                      loaded at 02B40000h - 02C58000h
foo_masstag                      loaded at 02C80000h - 02CD4000h
foo_discogs                      loaded at 02D00000h - 02D61000h
WININET                          loaded at 3F9E0000h - 3FAC6000h
Normaliz                        loaded at 02D70000h - 02D79000h
urlmon                          loaded at 45020000h - 45153000h
iertutil                        loaded at 40080000h - 40269000h
foo_verifier                    loaded at 02FD0000h - 03013000h
foo_vst                          loaded at 03040000h - 0306E000h
MSVCP90                          loaded at 78480000h - 7850E000h
MSVCR90                          loaded at 78520000h - 785C3000h
foo_dsp_std                      loaded at 03090000h - 030D8000h
foo_input_tak                    loaded at 03100000h - 03144000h
tak_deco_lib                    loaded at 03160000h - 03180000h
foo_converter                    loaded at 03290000h - 0330B000h
foo_albumlist                    loaded at 03330000h - 0338D000h
_socket                          loaded at 03D10000h - 03D1D000h
CLBCATQ                          loaded at 76FC0000h - 7703F000h
COMRes                          loaded at 77040000h - 77107000h
xpsp2res                        loaded at 03D30000h - 03FFD000h

Stack dump analysis:
Address: 00443EB4h (foobar2000+43EB4h)
Address: 7E37929Ah (USER32+1929Ah), symbol: "SendMessageW" (+0h)
Address: 0220F958h (foo_dsp_fsurround_beta+BF958h), symbol: "boost::serialization::singleton<std::set<boost::serialization::void_cast_detail::void_caster const *,boost:" (+76AA8h)
Address: 0056B7E8h (foobar2000+16B7E8h)
Address: 005514EAh (foobar2000+1514EAh)
Address: 0044385Bh (foobar2000+4385Bh)
Address: 00447705h (foobar2000+47705h)
Address: 00554708h (foobar2000+154708h)
Address: 00442F4Ch (foobar2000+42F4Ch)
Address: 00446301h (foobar2000+46301h)
Address: 004460D9h (foobar2000+460D9h)
Address: 00571EBCh (foobar2000+171EBCh)
Address: 0044606Ah (foobar2000+4606Ah)
Address: 00571EBCh (foobar2000+171EBCh)
Address: 00548EF8h (foobar2000+148EF8h)
Address: 00596F10h (foobar2000+196F10h)
Address: 004062A0h (foobar2000+62A0h)
Address: 7E368734h (USER32+8734h), symbol: "GetDC" (+6Dh)
Address: 7E37413Ch (USER32+1413Ch), symbol: "DefDlgProcW" (+402h)
Address: 7E378D90h (USER32+18D90h), symbol: "DefWindowProcW" (+70h)
Address: 7E39048Fh (USER32+3048Fh), symbol: "DeregisterShellHookWindow" (+1CFh)
Address: 7E373D08h (USER32+13D08h), symbol: "EnumDisplaySettingsA" (+2A1h)
Address: 7E373B30h (USER32+13B30h), symbol: "EnumDisplaySettingsA" (+C9h)
Address: 7E373D3Ah (USER32+13D3Ah), symbol: "DefDlgProcW" (+0h)
Address: 7E373D5Ch (USER32+13D5Ch), symbol: "DefDlgProcW" (+22h)
Address: 7E368734h (USER32+8734h), symbol: "GetDC" (+6Dh)
Address: 7E373D3Ah (USER32+13D3Ah), symbol: "DefDlgProcW" (+0h)
Address: 7E373D3Ah (USER32+13D3Ah), symbol: "DefDlgProcW" (+0h)
Address: 7E368816h (USER32+8816h), symbol: "GetDC" (+14Fh)
Address: 7E373D3Ah (USER32+13D3Ah), symbol: "DefDlgProcW" (+0h)
Address: 7E39048Fh (USER32+3048Fh), symbol: "DeregisterShellHookWindow" (+1CFh)
Address: 7E39048Fh (USER32+3048Fh), symbol: "DeregisterShellHookWindow" (+1CFh)
Address: 7E368830h (USER32+8830h), symbol: "GetDC" (+169h)
Address: 7E37927Bh (USER32+1927Bh), symbol: "GetParent" (+16Ch)
Address: 7E373D3Ah (USER32+13D3Ah), symbol: "DefDlgProcW" (+0h)
Address: 005C2FFCh (foobar2000+1C2FFCh)
Address: 7E37651Ah (USER32+1651Ah), symbol: "IsDlgButtonChecked" (+1720h)
Address: 005C2D14h (foobar2000+1C2D14h)
Address: 00400000h (foobar2000+0h)
Address: 005C2EC0h (foobar2000+1C2EC0h)
Address: 00400000h (foobar2000+0h)
Address: 005C2FECh (foobar2000+1C2FECh)
Address: 00400000h (foobar2000+0h)
Address: 01AD0198h (foo_lyricsgrabber2+90198h)
Address: 005C2FFAh (foobar2000+1C2FFAh)
Address: 01F20000h (libfftw+70000h), symbol: "fftw_set_timelimit" (+6A700h)
Address: 005A01D4h (foobar2000+1A01D4h)
Address: 7E37683Eh (USER32+1683Eh), symbol: "CreateDialogIndirectParamAorW" (+33h)
Address: 00405950h (foobar2000+5950h)
Address: 7E36EA84h (USER32+EA84h), symbol: "CreateDialogParamW" (+49h)
Address: 00400000h (foobar2000+0h)
Address: 005C2D14h (foobar2000+1C2D14h)
Address: 00405950h (foobar2000+5950h)
Address: 005784FCh (foobar2000+1784FCh)
Address: 00446D10h (foobar2000+46D10h)
Address: 00400000h (foobar2000+0h)
Address: 00405950h (foobar2000+5950h)
Address: 0044411Dh (foobar2000+4411Dh)
Address: 00555E73h (foobar2000+155E73h)
Address: 00445398h (foobar2000+45398h)
Address: 004BFFFCh (foobar2000+BFFFCh)
Address: 004BFE61h (foobar2000+BFE61h)
Address: 004062A0h (foobar2000+62A0h)
Address: 7E368734h (USER32+8734h), symbol: "GetDC" (+6Dh)
Address: 7E37413Ch (USER32+1413Ch), symbol: "DefDlgProcW" (+402h)
Address: 7E378D90h (USER32+18D90h), symbol: "DefWindowProcW" (+70h)
Address: 7E39048Fh (USER32+3048Fh), symbol: "DeregisterShellHookWindow" (+1CFh)
Address: 7E373D08h (USER32+13D08h), symbol: "EnumDisplaySettingsA" (+2A1h)
Address: 7E373B30h (USER32+13B30h), symbol: "EnumDisplaySettingsA" (+C9h)
Address: 7E373D3Ah (USER32+13D3Ah), symbol: "DefDlgProcW" (+0h)
Address: 7E373D5Ch (USER32+13D5Ch), symbol: "DefDlgProcW" (+22h)
Address: 7E368734h (USER32+8734h), symbol: "GetDC" (+6Dh)
Address: 7E373D3Ah (USER32+13D3Ah), symbol: "DefDlgProcW" (+0h)
Address: 7E373D3Ah (USER32+13D3Ah), symbol: "DefDlgProcW" (+0h)
Address: 7E368816h (USER32+8816h), symbol: "GetDC" (+14Fh)
Address: 7E373D3Ah (USER32+13D3Ah), symbol: "DefDlgProcW" (+0h)
Address: 7E39048Fh (USER32+3048Fh), symbol: "DeregisterShellHookWindow" (+1CFh)
Address: 7E368830h (USER32+8830h), symbol: "GetDC" (+169h)
Address: 7E37927Bh (USER32+1927Bh), symbol: "GetParent" (+16Ch)
Address: 7E373D3Ah (USER32+13D3Ah), symbol: "DefDlgProcW" (+0h)
Address: 005C2990h (foobar2000+1C2990h)
Address: 7E37651Ah (USER32+1651Ah), symbol: "IsDlgButtonChecked" (+1720h)
Address: 005C2950h (foobar2000+1C2950h)
Address: 00400000h (foobar2000+0h)
Address: 005AC000h (foobar2000+1AC000h)
Address: 005C296Eh (foobar2000+1C296Eh)
Address: 00400000h (foobar2000+0h)
Address: 005C296Eh (foobar2000+1C296Eh)
Address: 00400000h (foobar2000+0h)
Address: 005ACB28h (foobar2000+1ACB28h)
Address: 01F20000h (libfftw+70000h), symbol: "fftw_set_timelimit" (+6A700h)
Address: 005A01D4h (foobar2000+1A01D4h)
Address: 7E37683Eh (USER32+1683Eh), symbol: "CreateDialogIndirectParamAorW" (+33h)
Address: 00400000h (foobar2000+0h)
Address: 00405950h (foobar2000+5950h)
Address: 7E36EA84h (USER32+EA84h), symbol: "CreateDialogParamW" (+49h)
Address: 00400000h (foobar2000+0h)
Address: 005C2950h (foobar2000+1C2950h)
Address: 00405950h (foobar2000+5950h)
Address: 004C0510h (foobar2000+C0510h)
Address: 00400000h (foobar2000+0h)
Address: 00405950h (foobar2000+5950h)
Address: 004C03B7h (foobar2000+C03B7h)
Address: 00555742h (foobar2000+155742h)
Address: 004C017Fh (foobar2000+C017Fh)
Address: 005A53A0h (foobar2000+1A53A0h)
Address: 005511C3h (foobar2000+1511C3h)
Address: 004BA460h (foobar2000+BA460h)
Address: 0057D968h (foobar2000+17D968h)
Address: 5B26153Dh (UxTheme+153Dh)
Address: 5B26225Dh (UxTheme+225Dh)
Address: 5B262271h (UxTheme+2271h)
Address: 5B2630A3h (UxTheme+30A3h), symbol: "DrawThemeText" (+ABh)
Address: 7C9100C4h (ntdll+100C4h), symbol: "RtlAllocateHeap" (+0h)
Address: 005A53A0h (foobar2000+1A53A0h)
Address: 005A53A0h (foobar2000+1A53A0h)
Address: 00552245h (foobar2000+152245h)
Address: 004BABDEh (foobar2000+BABDEh)
Address: 00553BD0h (foobar2000+153BD0h)
Address: 004B9918h (foobar2000+B9918h)
Address: 004BBB69h (foobar2000+BBB69h)
Address: 004BB879h (foobar2000+BB879h)
Address: 005781E4h (foobar2000+1781E4h)
Address: 004BB80Ah (foobar2000+BB80Ah)
Address: 005781E4h (foobar2000+1781E4h)
Address: 00548EF8h (foobar2000+148EF8h)
Address: 00596A08h (foobar2000+196A08h)
Address: 004062A0h (foobar2000+62A0h)
Address: 7E368734h (USER32+8734h), symbol: "GetDC" (+6Dh)
Address: 7E373CE4h (USER32+13CE4h), symbol: "EnumDisplaySettingsA" (+27Dh)
Address: 7E378D90h (USER32+18D90h), symbol: "DefWindowProcW" (+70h)
Address: 7E39048Fh (USER32+3048Fh), symbol: "DeregisterShellHookWindow" (+1CFh)
Address: 7E373D08h (USER32+13D08h), symbol: "EnumDisplaySettingsA" (+2A1h)
Address: 7E373B30h (USER32+13B30h), symbol: "EnumDisplaySettingsA" (+C9h)
Address: 7E373D3Ah (USER32+13D3Ah), symbol: "DefDlgProcW" (+0h)
Address: 7E373D5Ch (USER32+13D5Ch), symbol: "DefDlgProcW" (+22h)
Address: 7E368734h (USER32+8734h), symbol: "GetDC" (+6Dh)
Address: 7E373D3Ah (USER32+13D3Ah), symbol: "DefDlgProcW" (+0h)
Address: 7E373D3Ah (USER32+13D3Ah), symbol: "DefDlgProcW" (+0h)
Address: 7E368816h (USER32+8816h), symbol: "GetDC" (+14Fh)
Address: 7E373D3Ah (USER32+13D3Ah), symbol: "DefDlgProcW" (+0h)
Address: 7E39048Fh (USER32+3048Fh), symbol: "DeregisterShellHookWindow" (+1CFh)
Address: 7E368830h (USER32+8830h), symbol: "GetDC" (+169h)
Address: 7E37927Bh (USER32+1927Bh), symbol: "GetParent" (+16Ch)
Address: 7E373D3Ah (USER32+13D3Ah), symbol: "DefDlgProcW" (+0h)
Address: 7E3792E3h (USER32+192E3h), symbol: "SendMessageW" (+49h)
Address: 773DB00Ch (COMCTL32+1B00Ch), symbol: "Ordinal414" (+FB4h)
Address: 7E36882Ah (USER32+882Ah), symbol: "GetDC" (+163h)
Address: 7E37927Bh (USER32+1927Bh), symbol: "GetParent" (+16Ch)
Address: 7E373D3Ah (USER32+13D3Ah), symbol: "DefDlgProcW" (+0h)
Address: 773F73ADh (COMCTL32+373ADh), symbol: "Ordinal384" (+1B4F2h)
Address: 773F773Bh (COMCTL32+3773Bh), symbol: "Ordinal384" (+1B880h)
Address: 7E379950h (USER32+19950h), symbol: "RedrawWindow" (+Ch)
Address: 773F8877h (COMCTL32+38877h), symbol: "Ordinal384" (+1C9BCh)
Address: 773F96D8h (COMCTL32+396D8h), symbol: "Ordinal384" (+1D81Dh)
Address: 773FA4E6h (COMCTL32+3A4E6h), symbol: "Ordinal384" (+1E62Bh)
Address: 773FA564h (COMCTL32+3A564h), symbol: "Ordinal384" (+1E6A9h)
Address: 7E3688D1h (USER32+88D1h), symbol: "GetWindowLongW" (+2Bh)
Address: 7E3688DAh (USER32+88DAh), symbol: "GetWindowLongW" (+34h)
Address: 773FA564h (COMCTL32+3A564h), symbol: "Ordinal384" (+1E6A9h)
Address: 773FAB9Ah (COMCTL32+3AB9Ah), symbol: "Ordinal384" (+1ECDFh)
Address: 773FA564h (COMCTL32+3A564h), symbol: "Ordinal384" (+1E6A9h)
Address: 7E378EABh (USER32+18EABh), symbol: "DefWindowProcW" (+18Bh)
Address: 7E37C31Ch (USER32+1C31Ch), symbol: "GetActiveWindow" (+34h)
Address: 7E37C32Ch (USER32+1C32Ch), symbol: "GetActiveWindow" (+44h)
Address: 7E368734h (USER32+8734h), symbol: "GetDC" (+6Dh)
Address: 773FA564h (COMCTL32+3A564h), symbol: "Ordinal384" (+1E6A9h)
Address: 773FA564h (COMCTL32+3A564h), symbol: "Ordinal384" (+1E6A9h)
Address: 7E368816h (USER32+8816h), symbol: "GetDC" (+14Fh)
Address: 773FA564h (COMCTL32+3A564h), symbol: "Ordinal384" (+1E6A9h)
Address: 773FA564h (COMCTL32+3A564h), symbol: "Ordinal384" (+1E6A9h)
Address: 7E39048Fh (USER32+3048Fh), symbol: "DeregisterShellHookWindow" (+1CFh)
Address: 7E368830h (USER32+8830h), symbol: "GetDC" (+169h)
Address: 7E37A013h (USER32+1A013h), symbol: "IsWindowUnicode" (+A1h)
Address: 773FA564h (COMCTL32+3A564h), symbol: "Ordinal384" (+1E6A9h)
Address: 7E37A039h (USER32+1A039h), symbol: "CallWindowProcW" (+1Bh)
Address: 773FA564h (COMCTL32+3A564h), symbol: "Ordinal384" (+1E6A9h)
Address: 00404CF8h (foobar2000+4CF8h)
Address: 773FA564h (COMCTL32+3A564h), symbol: "Ordinal384" (+1E6A9h)
Address: 7E368734h (USER32+8734h), symbol: "GetDC" (+6Dh)

Environment:
App: foobar2000 v1.1.2
OS: Windows 5.1.2600 Service Pack 3 x86
CPU: AMD Athlon™ XP 1800+, features: 3DNow!ex MMX SSE
Audio: SB Live! 24-bit
UI: Default User Interface 0.9.5

Components:
Core (2011-01-22 00:03:02 UTC)
    foobar2000 core 1.1.2
foo_abx.dll (2009-06-07 12:25:26 UTC)
    ABX Comparator 1.3.4
foo_ac3.dll (2010-04-13 04:00:12 UTC)
    AC3 decoder 0.9.5
foo_albumlist.dll (2011-01-22 00:01:28 UTC)
    Album List 4.5
foo_benchmark.dll (2008-12-31 16:23:04 UTC)
    Decoding Speed Test 1.1
foo_bitcompare.dll (2008-12-05 12:08:02 UTC)
    Binary Comparator 1.2
foo_bpm.dll (2010-04-20 12:35:07 UTC)
    BPM Analyser 0.2.4.1
foo_burninate.dll (2010-01-18 18:10:44 UTC)
    Audio CD Writer 3.0.2
foo_cdda.dll (2011-01-22 00:01:02 UTC)
    CD Audio Decoder 3.0
foo_chacon.dll (2010-07-19 15:15:49 UTC)
    Chacon 3
foo_channel_mixer.dll (2008-03-12 09:37:47 UTC)
    Channel Mixer 0.9.6.5
foo_converter.dll (2011-01-22 00:00:36 UTC)
    Converter 1.5
foo_convolve.dll (2006-08-04 18:57:26 UTC)
    Convolver 0.3
foo_discogs.dll (2010-07-24 19:14:44 UTC)
    Discogs Tagger 1.25
foo_dsp_bs2b.dll (2009-06-08 09:30:06 UTC)
    bs2b 3.1.0
foo_dsp_convolver.dll (2011-02-05 12:39:24 UTC)
    Convolver (gapless) 0.3.8
foo_dsp_eqsplit.dll (2008-07-12 23:49:10 UTC)
    Split equalizer v0.0.1
foo_dsp_fsurround_beta.dll (2011-02-06 09:17:03 UTC)
    FreeSurround 0.8.1
foo_dsp_mm.dll (2011-02-01 17:37:14 UTC)
    Matrix Mixer 0.3
foo_dsp_resampler SOX.dll (2010-11-21 19:21:11 UTC)
    SoX Resampler 0.5.4.4
foo_dsp_resampler_mod2.dll (2011-01-30 15:11:41 UTC)
    SoX Resampler mod2 0.5.4.4 mod2
foo_dsp_resampler_SoX_mod.dll (2009-11-17 18:22:49 UTC)
    SoX Resampler modified 0.5.4.1 mod
foo_dsp_ssrc.dll (2009-01-14 16:43:36 UTC)
    Resampler DSP (SSRC) 0.57
foo_dsp_ssrcX.dll (2008-05-11 04:45:16 UTC)
    Resampler DSP (SSRC X) 0.57
foo_dsp_std.dll (2011-01-22 00:01:18 UTC)
    Standard DSP Array 1.0
foo_dsp_winamp.dll (2011-02-04 17:36:15 UTC)
    Winamp DSP Bridge 1.4.7
foo_fileops.dll (2011-01-21 23:59:40 UTC)
    File Operations 2.1.3
foo_freedb2.dll (2011-01-21 23:59:42 UTC)
    freedb Tagger 0.6.3
foo_gep.dll (2011-01-18 14:22:27 UTC)
    Game Emu Player 1.108
foo_input_alac.dll (2010-09-19 10:43:34 UTC)
    ALAC Decoder 1.0.6
foo_input_amr.dll (2011-01-30 14:42:17 UTC)
    AMR input 1.1.1
foo_input_dsdiff.dll (2011-01-30 14:57:52 UTC)
    DSDIFF Decoder 1.3
foo_input_dvda.dll (2010-10-04 19:31:22 UTC)
    DVD-Audio Decoder and Watermark Detector 0.4.1
foo_input_la.dll (2010-11-02 14:40:36 UTC)
    Lossless Audio(La) decoder 0.01
foo_input_monkey.dll (2009-05-01 10:40:52 UTC)
    Monkey's Audio Decoder 2.1.4
foo_input_ofr.dll (2008-11-29 11:48:04 UTC)
    OptimFROG Lossless/DualStream Decoder 1.21b
foo_input_shorten.dll (2009-11-15 17:46:36 UTC)
    Shorten decoder 0.4.2.2
foo_input_std.dll (2011-01-22 00:00:58 UTC)
    Standard Input Array 1.0
foo_input_tak.dll (2010-01-09 16:11:58 UTC)
    TAK Decoder 0.4.4
foo_input_tta.dll (2010-10-27 09:50:20 UTC)
    TTA Audio Decoder 3.2
foo_lyricsgrabber2.dll (2010-09-24 16:39:55 UTC)
    Lyrics Grabber 2 0.5.5.2 beta
foo_masstag.dll (2010-09-14 15:22:47 UTC)
    Masstagger 1.8.4
foo_midi.dll (2010-12-25 19:47:45 UTC)
    MIDI synthesizer host 1.113
foo_out_asio.dll (2010-07-19 15:15:49 UTC)
    ASIO support 1.2.7
foo_out_ks.dll (2006-08-04 17:54:58 UTC)
    Kernel Streaming Output 1.2.2
foo_rgscan.dll (2011-01-22 00:00:36 UTC)
    ReplayGain Scanner 2.0.9
foo_run.dll (2010-07-24 12:29:07 UTC)
    Run services 0.3.7
foo_texttools.dll (2010-09-19 10:43:34 UTC)
    Text Tools 1.0.5
foo_ui_std.dll (2011-01-22 00:00:58 UTC)
    Default User Interface 0.9.5
foo_unpack.dll (2011-01-22 00:00:10 UTC)
    ZIP/GZIP/RAR Reader 1.6
foo_verifier.dll (2009-10-05 07:39:20 UTC)
    File Integrity Verifier 1.1
foo_vst.dll (2011-01-29 10:21:05 UTC)
    VST 2.4 adapter 0.8.0.1
foo_wave_seekbar.dll (2010-08-20 14:38:06 UTC)
    Waveform seekbar 0.2.12

Recent events:
Startup time : 0:00.881215
Watching: D:\Music
Title: foo_dsp_fsurround
Post by: lvqcl on 2011-02-06 10:41:12
beta 0.8.1 makes foobar crash on my system, when i try to open DSP manager
Crash report:
Code: [Select]
Illegal operation:
Code: C0000005h, flags: 00000000h, address: 02159AA4h
Access violation, operation: write, address: 021BE604h
...
02159AA4h:  F3 0F 7E 05 04 E6 1B 02 66 0F D6 00 F3 0F 7E 05
...
CPU: AMD Athlon(tm) XP 1800+, features: 3DNow!ex MMX SSE

It looks like this component was compiled with SSE2 support. AthlonXP doesn't support these instructions.
Title: foo_dsp_fsurround
Post by: magoo on 2011-04-05 16:45:53
Thanks for this.
Title: foo_dsp_fsurround
Post by: pro_optimizer on 2011-05-29 09:24:24
Thanks for the feedback, guys. @redmodel: Yes, if I had a proper sub-satellite setup (and enough time), I could perhaps fine tune the bass redirection a bit more.

I noticed one possible issue with the beta version: When you go to high numbers of rear channels (say 9.1 or more) and when there is a lot of action going on in the sound field, you may get a bit of noise in the positioning (that may sound like warbling, at least with mp3). The noise is pretty much intrinsic to the sound, but it gets more obvious when splitting it up across different speakers. I only tried this with HRTFs, which are themselves less than ideal, so it may be less of an issue with real speakers. The focus slider can exacerbate this effect -- for best sound quality, I would leave it at 0. The remaining sliders are okay, though.
Title: foo_dsp_fsurround
Post by: Chibisteven on 2011-07-29 08:43:24
Bug in the Surround Sound decoding.

It seems when you reverse the left and right channels before decoding, a slightly left panned vocal does not go equally go to the right in equal matter but gets in dead center.  This means the left side of the sound field is usually slightly louder than it probally should be.  A notice this bug when testing out various songs that never seem to have a little off to right going on but did in Stereo.  This is with default settings.
Title: foo_dsp_fsurround
Post by: pro_optimizer on 2011-07-29 08:54:43
Bug in the Surround Sound decoding.

It seems when you reverse the left and right channels before decoding, a slightly left panned vocal does not go equally go to the right in equal matter but gets in dead center.  This means the left side of the sound field is usually slightly louder than it probally should be.  A notice this bug when testing out various songs that never seem to have a little off to right going on but did in Stereo.  This is with default settings.


Thanks for the report - I presume that this is in the beta (or does it happen in the old version, too)? Do you have a particular song which reproduces it?
Title: foo_dsp_fsurround
Post by: Chibisteven on 2011-07-29 19:06:56
It happens in older versions.  And the easiest so far to tell is track 14 of the first Titanic album (pretty common CD, though you have to turn the volume up high) reproduces it.  Celine Dion singing is a little off the to the left of sound stage but swapping the channels before decoding doesn't create the slightly off to the right sound but instead ends up in the center.
Title: foo_dsp_fsurround
Post by: Chibisteven on 2011-07-29 22:19:14
Opps.  Forget got to mention it happens in the beta version, too.

Sorry couldn't find edit button.
Title: foo_dsp_fsurround
Post by: Vandroiy on 2011-09-04 15:31:24
I tried the beta version, and dismissed it as unusable. I have two problems: First, I couldn't find any usable documentation on what the options do, even though they appear to do complicated changes to the output, which are unintuitive for me. But the second is the real problem: It sounds bad.

No matter what I did in the options, the result always clearly lost when comparing with the ProLogic IIx that comes with my sound card, or even plain stereo without any upmix. It sounds as if there is some kind of chorus, phase problem or whatever between the side and center channels. The problem is notable on most music, but becomes very clear on "hard" foreground sounds. It feels as if the music is being played far away. It's really reminiscent of the Chorus Effect (http://en.wikipedia.org/wiki/Chorus_effect).

If this can be setup correctly, I'm not qualified to do it in reasonable time. To name some questions to explain my confusion:



Heck, I can't make myself understand any options apart from the LFE crossover, and that's just because its mechanism is trivial on the stereo sources I use. I think it is unrealistic to have the end-user change all the settings given.

My recommendation: remove all settings except front opening angle (affecting Center/Front balance only) and Front/Back balance. If you really love it, add a chorus checkbox, or whatever is used for this effect described above. LFE crossover is also OK -- it actually belongs in the sound driver, but nobody will complain as long as they can just disable it.

TL;DR: I'm back to plain stereo now because I just can't get this to sound right.
Title: foo_dsp_fsurround
Post by: Chibisteven on 2011-09-06 00:52:32
I think Surround is the new algorithm and Lagecy Upmix is the old algorithm.  5-Stereo, is probally like the 3-Stereo option on old recievers but uses 5 channels instead of 3.

I also think that the sound may clip in certain cases (doesn't happen on my current system, but it did on my old), reducing foobar2000's master volume might help.

EDIT: Here's documentation on the beta version. (http://www.hydrogenaudio.org/forums/index.php?s=&showtopic=52235&view=findpost&p=734163)

A few notes on the sound stage transforms - these are best thought of as geometric transformations of a real stage (usually spanned between front left and front right speaker):
  • Panorama wraps the sound stage (spanning 90 degrees between front left/right) around the listener, as if the instruments were arranged in a circle.
  • Dimension shifts the stage backwards or forward.
  • Depth scales the stage backwards.
  • Focus chances the size of the sound sources - large=diffuse/ambient and small=focal/localizable (should only be really noticable with many speakers).
  • The regular surround content remains intact and is transformed accordingly, as well.
Title: foo_dsp_fsurround
Post by: pro_optimizer on 2011-09-08 02:22:42
I tried the beta version, and dismissed it as unusable. I have two problems: First, I couldn't find any usable documentation on what the options do, even though they appear to do complicated changes to the output, which are unintuitive for me. But the second is the real problem: It sounds bad.

No matter what I did in the options, the result always clearly lost when comparing with the ProLogic IIx that comes with my sound card, or even plain stereo without any upmix. It sounds as if there is some kind of chorus, phase problem or whatever between the side and center channels. The problem is notable on most music, but becomes very clear on "hard" foreground sounds. It feels as if the music is being played far away. It's really reminiscent of the Chorus Effect (http://en.wikipedia.org/wiki/Chorus_effect).

If this can be setup correctly, I'm not qualified to do it in reasonable time. To name some questions to explain my confusion:

  • What does "Panorama" do? I can set it to 90° and still get massive rear sound, which is counter-intuitive to a point I would call a bug.
  • How does "Panorama" interact with "Dimension", "Dimension" with "Depth" and "Panorama" with "Depth" and the other ways around?
  • What does "Focus" do? It it disabled at 0?
  • What is the difference between "Surround", "5-Stereo" and "Legacy Upmix"?
  • Especially on "5-Stereo", there is a massive loss in absolute amplitude. Massive enough to appear unreasonable to me. Is this a bug?


Heck, I can't make myself understand any options apart from the LFE crossover, and that's just because its mechanism is trivial on the stereo sources I use. I think it is unrealistic to have the end-user change all the settings given.

My recommendation: remove all settings except front opening angle (affecting Center/Front balance only) and Front/Back balance. If you really love it, add a chorus checkbox, or whatever is used for this effect described above. LFE crossover is also OK -- it actually belongs in the sound driver, but nobody will complain as long as they can just disable it.

TL;DR: I'm back to plain stereo now because I just can't get this to sound right.


Dude, you know what? No one forces you to use any free software on the internet. I have a day job, and on the order of 2000 items on my TODO list over there... the reason why I am making this free (and open source as in the prior version) is because I like foobar2000's model of giving value to people for free, perhaps making a few folks happy, and perhaps getting something from the community in return. I could have patented the algorithm and sold it to an audio company (as many people in the business have), but I chose not to - for that same reason.

Thanks for the feedback, but please bear in mind that it is 100x harder to create something than to criticise it. I will get back to this plugin and improve whatever needs to be improved once my schedule clears up.
Title: foo_dsp_fsurround
Post by: mudlord on 2011-09-08 04:31:11
**wall of shit**


If you think it sounds bad, code your own?
thanks.
Title: foo_dsp_fsurround
Post by: Propheticus on 2011-09-10 11:46:10
I signed up just to post on this great DSP plugin. In combination with Dolby Headphone I think Fsurround (beta) gives the best spacial sound without losing too much crispness or creating a 'wooly' sweater-over-the-head sound (like the various channel mixer solutions).
There's one small issue I did not notice before, but on my new Sennheiser 360 headset (much better placement/accuracy than my previous headset) was suddenly revealed though. It seems like the sound stage is being rotated ~10 degrees counter clockwise when compared to the untouched stereo source. Voices tend to become balanced to the left a bit and the reverb is coming from a slightly more right-back direction instead of right behind me.
When switching back to plain stereo or using channel mixer the voices are placed dead centre again, so it's not simply my right ear failing me

My DSP chain:

Gapless Crossfader
Noise Sharpening - 20%
Free Surround (beta) - all default settings + 5.1 surround
Dolby Headphone - DH1 reference room + no dynamic compression + amplification 93% (dolbyhph.dll version 1.10.0.270)
Graphic Equalizer - Sliders between +4dB and +10dB to compensate for volume loss caused by dolbyhph.
Advanced Limiter

I hope I didn't draw people's attention to a 'problem' they didn't hear before and now can't stop noticing (like I do when there's something slightly off in audio...pretty annoying, should just ignore it and enjoy the music )

Edit: Just saw Chibisteven's post. Rotation of the sound stage could do that. If the source has the voice slightly to the left rotating to the left makes it slightly more to the left. When reversed, a slightly to the right voice gets cancelled out by rotating it to the left and ends up dead centre...

Proph out
Title: foo_dsp_fsurround
Post by: Propheticus on 2011-09-10 12:59:24
Me again (can't edit above post anymore for some reason):

I just tested with a Dolby 5.1 AC3 version of Pink Floyd - Dark side of the moon (gotta love "Money" and the intro coming from all around you ) and the behaviour described above did not occur. So it seems to be related to stereo to 5.1 conversion.
Does FSurround let 5.1 sources pass through untouched? If so, this test was useless :/
Title: foo_dsp_fsurround
Post by: Chibisteven on 2011-09-12 22:20:54
Me again (can't edit above post anymore for some reason):

I just tested with a Dolby 5.1 AC3 version of Pink Floyd - Dark side of the moon (gotta love "Money" and the intro coming from all around you ) and the behaviour described above did not occur. So it seems to be related to stereo to 5.1 conversion.
Does FSurround let 5.1 sources pass through untouched? If so, this test was useless :/


Yeah 5.1 Dolby Digital and DTS passes through untouched.  Even FLAC 5.1 passes through untouched.
Title: foo_dsp_fsurround
Post by: wyup on 2011-10-06 14:44:40
I tried the beta version, and dismissed it as unusable. I have two problems: First, I couldn't find any usable documentation on what the options do, even though they appear to do complicated changes to the output, which are unintuitive for me. But the second is the real problem: It sounds bad.
I'm back to plain stereo now because I just can't get this to sound right.


This plugin is awesome. I use it everyday and I surprend myself each time I tune it to my liking. It does magic and helps configure soundstage with great customization. It's simple and professional and self explainable. I'd love to test it with a good hi-fi setup, but sounds great with my logitech 5.1. It sounds better to my taste than ATSurround in foobar2000 and it's free. If you don't like it, don't use it, but we should be thankful to pro_optimizer for his work and encourage him to continue with it. It's incredible to enjoy all stereo music in 5.1. Plain stereo is good too, but free_sourround takes it to another level.

Title: foo_dsp_fsurround
Post by: tony_almeida on 2011-10-13 22:18:02
thank you so much.
i think your plugin is best to use with dolby headphone wrapper.
i hope you update the final version.
Title: foo_dsp_fsurround
Post by: Chibisteven on 2011-11-21 23:10:27
Bug report.  I also like to add more information and correct a typo mistake.

Hmmm.  Options for exact rear-phase reproduction of the sound like earlier versions would be nice (I don't know if it's technically right though).  And the beta has issues that I found don't exist in a earlier version.  Like in the beta according to research shows that setting the rear seperation effects the front left's volume in terms of what is stired towards it.  The left side of the sound is always louder in mono rear encoded in Prologic II comes out with the left rear being louder (which can be seen in Foobar2000's peak level meter).

I would recommend adding a volume control for older computers with crappy soundcards that clip when above 0db on Foobar2000 meters.  I used to own such a machine.  AC'97 and Windows XP and Compaq systems seem to have this issue.  Though clipping is not issue with my newer computer, it still shows up in sound dumps using the DSP.

Here's the older version that seems not to have the issue:
http://uploading.com/files/4c415b84/older%2Bversion.zip/ (http://uploading.com/files/4c415b84/older%2Bversion.zip/)

Can't tell exactly what version it is.
Title: foo_dsp_fsurround
Post by: GeSomeone on 2011-11-22 18:26:32
[..] older computers with crappy soundcards that clip when above 0db on Foobar2000 meters.

As a general clipping prevention I suggest to always put foobar's "Advanced Limiter" at the end of your DSP chain. Clipping prevention is all it does.
Title: foo_dsp_fsurround
Post by: torturesauce on 2012-01-25 13:47:36
Hey, guys. Is it possible to use this plugin to upmix 5.1 music to 7.1 speakers? I selected "7.1 surround" in the Speaker Configuration option, but I still get 5.1 sound.
Title: foo_dsp_fsurround
Post by: flanger216 on 2012-01-29 21:48:29
This could be the best upmixer out there, if not for one thing:

I have two sources to test upmixers --- "Giant Steps" by Coltrane and "Ege Bamyasi" by CAN. The first is useful because it has a dry, intimate mix with almost no ambiance. The second is useful because it's the opposite, an active mix with an extremely open soundstage and multiple (often panning) sources. Basically, an ideal upmixer would do very little to the Coltrane ablum but would be fairly aggressive with the CAN album.

Every upmixer I've previously tried (PLII Music Mode, DTS:NEO Music, Channel Mixer, ATSurround, VI Suite) practically ruins the Coltrane album. Almost all of the front signal is dumped into the rears, making for a flat, artificial soundstage that extends directly to the sides, as if one were listening through bad headphones. That is, Coltrane sounds like he's blowing his sax next to your left ear while the drummer is sitting directly to your right --- surely not the mixer's intention. Only 'VI Suite' is acceptable, and only if the 'rear ambience' controls are turned down to 25% or less.

CAN, however, works great with all the upmixers --- in fact, it behaves almost identically no matter what upmixer I use. I'm half-convinced that CAN's albums were intentionally mixed for surround-sound processing.

Unfortunately, if you set VI Suite to 25% ambience (as mentioned above, to make it play nicely with Coltrane), it doesn't fully expose the rear information in the CAN album. Only the default settings (with ambience at 75%) works properly. But, of course, this screws up the Coltrane album. In other words, I could find no DSP that correctly works on all material with one setup.

Then I stumbled across freesurround. If you feed it the Coltrane album, almost nothing comes out of the rear channels --- just the faintest reverb off the cymbals. Perfect! I've never heard it sound better. Conversely, the CAN album is opened up even more, to the point that it's practically indistinguishable from a discrete 5.1 mix. So far so good; I was hopeful I'd found the perfect upmixer.

There's only one problem, and it's a big one. On some sources, particularly classical recordings, freesurround is unusable. The rear channels sound like soup of phased artifacts, as if a few frequencies from the front channels had been put in an echo chamber (I believe a poster above me mentioned this, albeit in an unhelpful manner). I've tried fiddling with all the parameters, but nothing affects it. Is this just a fundamental caveat of how freesurround does its processing --- that some sources are simply incompatible? Or is there some other setting or tweak that might help? If this one issue could be neutralized, this plugin would be tremendous.
Title: foo_dsp_fsurround
Post by: flanger216 on 2012-01-31 20:52:59
After messing around some more, it seems the 'phase' errors only occur with older classical material that was recorded live to analog tape. So I think I answered my own question --- freesurround doesn't play nicely with material that has tape warble or was improperly coupled in the analog mix. Not too surprising, and other techniques, particularly VI Suite, work well with these problematic analog sources. So there's still no one-size-fits-all upmixer, but nothing beats freesurround with a good source.
Title: foo_dsp_fsurround
Post by: flanger216 on 2012-02-17 02:02:31
After messing around some more, it seems the 'phase' errors only occur with older classical material that was recorded live to analog tape. So I think I answered my own question --- freesurround doesn't play nicely with material that has tape warble or was improperly coupled in the analog mix. Not too surprising, and other techniques, particularly VI Suite, work well with these problematic analog sources. So there's still no one-size-fits-all upmixer, but nothing beats freesurround with a good source.


Unfortunately I have to contradict myself --- almost all vanilla-stereo sources exhibit phase-artifacting, occasionally so badly that it affects overall pitch. Am eagerly awaiting a new version, because this DSP shows a lot of promise.
Title: foo_dsp_fsurround
Post by: odyssey on 2012-02-23 10:19:21
I'm trying to convert some stereo sitcoms into 5.1 (mostly to put dialogue in the center channel).

Seems to work pretty well with this component, except during the intro music, I get no drums in the fronts. Is it possible to restore those with some tweaks to the settings, or is that just the way it is?
Title: foo_dsp_fsurround
Post by: Chibisteven on 2012-06-18 22:33:17
Is this project still alive?  Just wondering the status.
Title: foo_dsp_fsurround
Post by: pro_optimizer on 2012-07-06 09:57:08
So after a long pause I finally got to work on it a bit yesterday (July 4th, yay!). There were two people who independently confirmed that the sound field appeared to be rotated about 10 degrees to the left -- and you were right about this. Thanks for helping me track this down, it's fixed now. This also affected the accuracy of the steering somewhat, which should now be better than ever before (assuming I got it right this time  ).

The other change since the previous beta (0.8.1) addresses crash that was reported by Rollin. I believe that this is caused when some 3rd party library (boost.serialization) is used by multiple plugins in different versions. I changed the way in which it is linked to fix it (but we'll see if that solves it).

By the way @odyssey, I think there's the foo_dsp_centercut component just for this purpose. But sitcoms in addition often put the crowd in the surrounds -- so that's another reason to give it the full surround treatment.

The updated dll is attached to the initial post.
Title: foo_dsp_fsurround
Post by: flyingsaucer on 2012-10-07 10:16:12
Hi! MAN!! thank you a lots for your job could you create a VST version of your FOOBAR DSP??


Thank you in advance for your anser



Best Regards
Tony
Title: foo_dsp_fsurround
Post by: pro_optimizer on 2012-10-12 17:11:08
Hi! MAN!! thank you a lots for your job could you create a VST version of your FOOBAR DSP??


Thank you in advance for your anser



Best Regards
Tony


Hi flyingsaucer -- yes, I might do that at some point, although I'm currently quite busy at work (as always...) so currently don't have much time.
But note that you can always use foobar's transcoding features to do offline DSP processing.
Title: foo_dsp_fsurround
Post by: delta67 on 2013-04-08 08:48:39
Thanks very much for the GREAT plugin.
Ur DPLII wrapper doesn't work for me !!
Title: foo_dsp_fsurround
Post by: pro_optimizer on 2013-05-31 21:33:27
Released the source code for version 0.9.0 (GPL), it's attached to the first post.
Title: foo_dsp_fsurround
Post by: ome.ga on 2013-07-18 16:03:28
Thank you for your huge work. Please, create a DirectShow version
Title: foo_dsp_fsurround
Post by: ome.ga on 2013-07-19 20:07:13
Thank you for your huge work. Please, create a DirectShow version

Excuse, DirectX version
Title: foo_dsp_fsurround
Post by: Deathcrow on 2013-09-06 14:24:56
Maybe I'm just retarded, but I'm experiencing a pretty significant high frequency cutoff when looking at the spectrum while using FreeSurround in 5.1 (surround) mode. Peaks in the 20k range disappear completely and sounds in the 14k range seem to be significantly dampened.

Is this expected/intended behavior? To make sure that it isn't a problem with my 5.1 setup I tried the "Channel Mixer" (foo_channel_mixer) plugin in upmix mode, which doesn't appear to do this.

Edit: Ok, nevermind. After taking a closer look I'm pretty sure it's just caused by the FreeSurround volume being lower over all frequencies.
Title: foo_dsp_fsurround
Post by: continous on 2013-09-18 23:17:54
So, is development on this stalled indefinitely?
Title: foo_dsp_fsurround
Post by: SpaceAgeHero on 2015-01-25 20:02:51
Hey guys,

just a heads up for XBMC / Kodi users out there.

A DSP-Addon including freesurround is now available for Kodi: http://forum.kodi.tv/showthread.php?tid=18...7055#pid1887055 (http://forum.kodi.tv/showthread.php?tid=186857&pid=1887055#pid1887055)
Title: foo_dsp_fsurround
Post by: AlwinEsch on 2015-04-12 15:24:28
Hello all,

my first post here 

Want to inform you that for the foo_dsp_fsurround on KODI a new github account is present.
see: https://github.com/kodi-adsp/adsp.freesurround (https://github.com/kodi-adsp/adsp.freesurround)
Title: Re: foo_dsp_fsurround
Post by: coruphius on 2017-04-11 04:39:57
Digging up an old post here but trying to find info. this plugin show up to 16 channels. so it's saying that it can run two soundcards for each assigned channel? just want to confirm before purchasing a second soundcard for my multimedia pc.

Cheers.
Title: Re: foo_dsp_fsurround
Post by: lvqcl on 2017-04-11 17:29:38
I don't think so. DSP plugins normally don't interact with soundcards.
Title: Re: foo_dsp_fsurround
Post by: coruphius on 2017-04-13 04:26:48
damn :/ thanks anyways
Title: Re: foo_dsp_fsurround
Post by: ghostofstevejobs on 2019-07-16 02:46:51
I tried the beta version, and dismissed it as unusable. : It sounds bad.
8 years later, still one of the douchiest comments I've ever read. ::)
--------------

FYI- Plugin still working in FB2k 1.4.3.
--------------

Question (and sorry for the necro) Regarding the LFE redirect, can I have some guidance on the lower and upper limit?  I have ORB speakers 6.1 with an Onkyo SR tx502 amp. My speakers are small (2" cones) and the manufacturer (ORB Audio) specifies 150Hz x-over which my amp handles. No bass should be coming through my speakers. Basically I am asking how to not blow our my speakers/override the amp setting with respect to the sub.  Do i Check LFE or not? If so, where do I put the sliders.  Thank you.

Sub spec sheet (https://cdn.shopify.com/s/files/1/1403/5817/files/SubONE_setup_page_1.pdf?7923599414642884955)
Speaker package (https://www.orbaudio.com/products/peoples-choice-surround-sound)
Title: Re: foo_dsp_fsurround
Post by: tiweiniq on 2020-08-06 17:51:44
except that it uses a different algorithm


so what algorythm is it actualy using?
Title: Re: foo_dsp_fsurround
Post by: CitizenInsomniac on 2022-01-30 20:25:51
First of all, thank you to @pro_optimizer for building a really great plugin! I've been really enjoying it - in fact, I've completely stopped using the native DPLII decoder in my AVR when listening to music, I now exclusively use foo_dsp_fsurround for all upmixing of stereo music to 5.1.

I have, however, encountered one issue that's been giving me trouble. The DSP always outputs a .1 LFE channel, even when the "redirect bass to LFE" option is disabled. The checkbox only determines if foo_dsp_fsurround will fill the LFE channel with signal or silence, but either way it still adds a .1 channel. The reason this is problematic is because the component I would like to use for bass management - foo_dsp_subwoofer (https://hydrogenaud.io/index.php?topic=110850.0) - will only create an LFE channel if its input signal doesn't have an LFE channel, otherwise it will just pass the signal without modification. On the other hand, if I insert foo_dsp_subwoofer before foo_dsp_fsurround in the DSP chain, that prevents foo_dsp_fsurround from doing upmixing because it's only configured to accept stereo (2.0) signals. If it receives a 2.1 signal it just passes it through.

I've considered adding a DSP between foo_dsp_fsurround and foo_dsp_subwoofer that would just remove the LFE channel so that foo_dsp_subwoofer can do its thing, but that would have the effect of inadvertently removing LFE channel from all signals, including native 5.1 mixes. My preferred DSP flow would be to leave all 5.1 inputs unmodified, use foo_dsp_fsurround to upmix stereo to 5.0 (with "redirect bass to LFE" option set to Disabled), and then use foo_dsp_subwoofer to add a LFE channel to any signal that still doesn't have .1 at that point. After all, @pro_optimizer himself said that the bass management feature in foo_dsp_fsurround is only OK and recommended that people use a better bass management solution if they got one.

Is there a way to work around this issue? Or would the only solution be to update the foo_dsp_fsurround plugin code so it can either accept 2.1 input signals or output x.0 signals?
Title: Re: foo_dsp_fsurround
Post by: Rollin on 2022-02-02 14:57:02
@CitizenInsomniac you can use foo_dynamicdsp to automatically switch DSP chains depending on channels layout in source files. Original thread of foo_dynamicdsp - https://hydrogenaud.io/index.php?topic=96094.0 Last version - https://hydrogenaud.io/index.php?topic=108904.msg988324#msg988324
Title: Re: foo_dsp_fsurround
Post by: CitizenInsomniac on 2022-02-12 04:50:03
@CitizenInsomniac you can use foo_dynamicdsp to automatically switch DSP chains depending on channels layout in source files.
Thank you! I will give it a try!

The other alternative solution I've been playing around with is to use foo_dsp_mm (Matrix Mixer) to strip out the .1 channel and then always use foo_dsp_subwoofer to generate the .1 channel from scratch (essentially taking on the role of bass manager). At first I wasn't a fan of losing the LFE channel from 5.1 mixes, but the more I've been reading about it the more it seems like the only reason .1 channel was added to music mixes to begin with was to provide a low-frequency signal to receivers that didn't have bass management capabilities. In which case, I might as well just do that myself and fine-tune it for my own AVR and speaker setup.
Title: Re: foo_dsp_fsurround
Post by: kode54 on 2022-02-12 06:52:08
Thank you for bumping this to my attention. I have ported the base processor class to Apple's Accelerate framework:

https://gist.github.com/kode54/b480bce6726fbedd3a5dfeaeb8f5336d

I may add this to Cog for upmixing to whatever speaker configuration that the system currently has attached, or upmixing to virtual 7.1 before processing with the HRIR downmix filter I currently have implemented.
Title: Re: foo_dsp_fsurround
Post by: winiori on 2022-02-17 00:52:42
i use 5.1.2 SPEAKER this dsp not 5.1.2 SPEAKER 
Title: Re: foo_dsp_fsurround
Post by: Penguin414 on 2023-05-01 02:27:01
Need a 64bit build for the new foobar2000.
I'm getting an error and can't build so can someone do it?
Title: Re: foo_dsp_fsurround
Post by: Chibisteven on 2023-05-02 09:42:59
Need a 64bit build for the new foobar2000.
I'm getting an error and can't build so can someone do it?

For now I recommend you stick to a 32-bit build of foobar2000.  I've re-uploaded the author's plug-ins in this post that I find useful for quick access to see if someone picks up interest in continuing development and possibly adding some new features or doing their own version.  The developer hasn't logged in since "April 13, 2015, 07:23:44 PM".
Title: Re: foo_dsp_fsurround
Post by: krabapple on 2023-08-22 01:11:58
So, why did the Center Width option disappear from the plugin?

That's the only obvious DPLIIx thing that's missing.