Today's Foobar2000 learnings: 7.1.4

QuadraphonicQuad

Help Support QuadraphonicQuad:

This site may earn a commission from merchant affiliate links, including eBay, Amazon, and others.

zeerround

Moderator
Staff member
Moderator
QQ Supporter
Joined
Apr 11, 2010
Messages
1,050
Maybe all y'all know this already but today I discovered a couple of things I didn't know about foobar2000 and immersive sound formats, that will let us play 7.1.4 wav, .wv, .opus, .opus in .ogg, and probably more. This is interesting because 1) it saves a step and some confusion in my workflow, and 2) Now I can encode for free in ffmpeg, 12 ch. opus, and play it back in foobar2000. Another piece/option for the ecosystem of hobbiest up-remix to immersive formats.

Oh, all of this goes for 32 bit foobar2000 v1.6, as both of the components I'm using haven't been ported to 64bits and/or the source code is lost.

What I thought I knew before today was the only way to get foobar to play more than 8 channels (and in the right order) was to use ffmpeg to add a channel map to a .wav or .wv file.

Raw or "un-mapped" 7.1.4 .wav files look like this, in mediainfo:

1740009773530.png


No "Channel Layout" metadata. Just the number of channels.


In mediainfo a "mapped" 7.1.4 file looks like this:

1740008347492.png


Note the "Channel Layout" meta data in the audio section.

So I had to "map" every 12 channel file before playing in foobar2000, and I had my waveform seekbar set to display the normally named 7.1.4 channels.

Here's what a 12 ch 7.1.4 "channel ID" file then looked like in foobar2000:

1740008584242.png


I also have my waveformseekbar configured to never cache waveforms, as I'm changing the audio in the file of the same name all the time (up-remixing, testing, etc.). But that is a side note for today.

Again the down sides are an extra processing step before you can listen to your 12 channel file, and more versions of files to keep track of. Also I couldn't figure out a way to get other formats, beyond .wav and .wv, to have a Channel Layout Metadata tag that Foobar2000 would respect, resulting in only the first 8 channels being played.

So, today I was researching how foobar2000 processes things (input decoding --> DSP --> Output), and also the fact that it by default "plays" all the channels in a stream, for "all" formats. So I wondered if my all 12 channels were actually playing, but not getting properly routed to my 12 channel output device (and its own channel mapping, again a side note for today's topic).

I went and found a really old component, "Matrix Mixer". Figured out which side of the gui is inputs (the top) and set it up to route the first 12 channels of audio to the proper channels going out of the DSP:

1740009059386.png


Foobar2000 has this odd channel order on the inputs, by today's standards, but regardless of what foobar2000 calls the first 12 channels at the input to the DSP we need to route them to our "standard" 7.1.4 order (The order that you use for Atmos encoding in MMH atmos helper): LF, RF, C, LFE, LS, RS, BL, BR, TFL, TFR, TBL, TBR.

Another side note; almost no two audio programs use the same abbreviations for channel names. It maddening. :mad:

But the good news is after saving that setting as a preset and applying it, all 12 channels played and played in the correct order.
And, even more important this works for .wav, .wv., .opus, and opus in .ogg!

Now while things played in order my waveform seekbar display was all mixed up, so my conclusion is that waveform seekbar takes in input at the same point DSP does, vs. the output of the DSP, so I needed to change its configuration to use the Odd input channel order names, like this:

1740009642922.png


and; Ta-da! My waveforms are all shown and shown in the correct order.

Hopefully someone (maybe me?) will re-create/refactor these component capabilities for 64 bit v2.x versions of foobar2000.

Don't have a way to get 7.1.4 audio from foobar2000 to your AVR/Soundbar/TV? See here: https://www.quadraphonicquad.com/forums/threads/hdmi-audio-bridge.37188/#post-836709
 
Last edited:
Maybe all y'all know this already but today I discovered a couple of things I didn't know about foobar2000 and immersive sound formats, that will let us play 7.1.4 wav, .wv, .opus, .opus in .ogg, and probably more. This is interesting because 1) it saves a step and some confusion in my workflow, and 2) Now I can encode for free in ffmpeg, 12 ch. opus, and play it back in foobar2000. Another piece/option for the ecosystem of hobbiest up-remix to immersive formats.

Oh, all of this goes for 32 bit foobar2000 v1.6, as both of the components I'm using haven't been ported to 64bits and/or the source code is lost.

What I thought I knew before today was the only way to get foobar to play more than 8 channels (and in the right order) was to use ffmpeg to add a channel map to a .wav or .wv file.

Raw or "un-mapped" 7.1.4 .wav files look like this, in mediainfo:

View attachment 113839

No "Channel Layout" metadata. Just the number of channels.


In mediainfo a "mapped" 7.1.4 file looks like this:

View attachment 113835

Note the "Channel Layout" meta data in the audio section.

So I had to "map" every 12 channel file before playing in foobar2000, and I had my waveform seekbar set to display the normally named 7.1.4 channels.

Here's what a 12 ch 7.1.4 "channel ID" file then looked like in foobar2000:

View attachment 113836

I also have my waveformseekbar configured to never cache waveforms, as I'm changing the audio in the file of the same name all the time (up-remixing, testing, etc.). But that is a side note for today.

Again the down sides are an extra processing step before you can listen to your 12 channel file, and more versions of files to keep track of. Also I couldn't figure out a way to get other formats, beyond .wav and .wv, to have a Channel Layout Metadata tag that Foobar2000 would respect, resulting in only the first 8 channels being played.

So, today I was researching how foobar2000 processes things (input decoding --> DSP --> Output), and also the fact that it by default "plays" all the channels in a stream, for "all" formats. So I wondered if my all 12 channels were actually playing, but not getting properly routed to my 12 channel output device (and its own channel mapping, again a side note for today's topic).

I went and found a really old component, "Matrix Mixer". Figured out which side of the gui is inputs (the top) and set it up to route the first 12 channels of audio to the proper channels going out of the DSP:

View attachment 113837

Foobar2000 has this odd channel order on the inputs, by today's standards, but regardless of what foobar2000 calls the first 12 channels at the input to the DSP we need to route them to our "standard" 7.1.4 order (The order that you use for Atmos encoding in MMH atmos helper): LF, RF, C, LFE, LS, RS, BL, BR, TFL, TFR, TBL, TBR.

Another side note; almost no two audio programs use the same abbreviations for channel names. It maddening. :mad:

But the good news is after saving that setting as a preset and applying it, all 12 channels played and played in the correct order.
And, even more important this works for .wav, .wv., .opus, and opus in .ogg!

Now while things played in order my waveform seekbar display was all mixed up, so my conclusion is that waveform seekbar takes in input at the same point DSP does, vs. the output of the DSP, so I needed to change its configuration to use the Odd input channel order names, like this:

View attachment 113838

and; Ta-da! My waveforms are all shown and shown in the correct order.

Hopefully someone (maybe me?) will re-create/refactor these component capabilities for 64 bit v2.x versions of foobar2000.

Don't have a way to get 7.1.4 audio from foobar2000 to your AVR/Soundbar/TV? See here: https://www.quadraphonicquad.com/forums/threads/hdmi-audio-bridge.37188/#post-836709
Interesting. (Although I confess a little above my pay grade in terms of understanding.) So...forgive me if I'm slow to perceive, but how would this relate--if at all--to the feature that many of us have been clamoring for, namely: a bitstream/"pass-through" option for playing Atmos-encoded files in foobar (via HDMI to AVR)?
 
Last edited:
Interesting. (Although I confess a little above my pay grade in terms of understanding.) So...forgive me if I'm slow to perceive, but how would this relate--if at all--to the feature that many of us have been clamoring for, namely: a bitstream/"pass-through" option for playing Atmos-encoded files in foobar (via HDMI to AVR)?
It doesn't really. But as I learn more and maybe dip my toe in foobar2000 components building who knows ;0)

My focus is really on the ecosystem for hobbyist up-remix.

You know you can bitstream Atmos it with VLC, right?
 
Today is quite the day for Spatial Audio and Foobar2000 findings. Turns out there is already a foobar2000 component vwith functionality similar to my HDMI AUDIO BRIDGE:

https://www.foobar2000.org/components/view/foo_out_spatial

With that you can pick your Output Device, set for Dolby Atmos home theater, and then play 12 channel 7.1.4 files over HDMI to your AVR, Just like HDMI Audio Bridge but without the Virtual Audio Cable in the middle.
 
Today is quite the day for Spatial Audio and Foobar2000 findings. Turns out there is already a foobar2000 component vwith functionality similar to my HDMI AUDIO BRIDGE:

https://www.foobar2000.org/components/view/foo_out_spatial

With that you can pick your Output Device, set for Dolby Atmos home theater, and then play 12 channel 7.1.4 files over HDMI to your AVR, Just like HDMI Audio Bridge but without the Virtual Audio Cable in the middle.
So tinkering with channel assignments not necessary?
 
So tinkering with channel assignments not necessary?
I'm starting to think that. In my case I would still need to redo my ASIO output channel mapping, to get rid of of the matirx mixer and just let everything use foobar channels as is in their default order. FYI Part of the need for the ASIO output channel map is to target the correct 7.1.4 channels out of the 9.1.6 that my A16 actually uses (when working with 12 ch 7.1.4 audio). Got to skip over the Wides and Top Mids.

I'm thinking my use cases are:

ASIO output to my 16 channel audio device
WASAPI or other output to LoopBe Audio Virtual Cable
Spatial output to my Nvidia device connected to Realiser A16 or Marantz AVR

So yeah waveform seekbar and ASIO channel mapping set for Foobar2000's channel order, but wouldn't need matrix mixer.

I'll test all three output scenarios, without matrix channel mixer and report back.
 
I'm starting to think that. In my case I would still need to redo my ASIO output channel mapping, to get rid of of the matirx mixer and just let everything use foobar channels as is in their default order. FYI Part of the need for the ASIO output channel map is to target the correct 7.1.4 channels out of the 9.1.6 that my A16 actually uses (when working with 12 ch 7.1.4 audio). Got to skip over the Wides and Top Mids.

I'm thinking my use cases are:

ASIO output to my 16 channel audio device
WASAPI or other output to LoopBe Audio Virtual Cable
Spatial output to my Nvidia device connected to Realiser A16 or Marantz AVR

So yeah waveform seekbar and ASIO channel mapping set for Foobar2000's channel order, but wouldn't need matrix mixer.

I'll test all three output scenarios, without matrix channel mixer and report back.
Well of course the channel names used in the ASIO Output Channel maps are different from from elsewhere in Foobar2000 :mad: but I did manage to get is setup for 7.1.4 to my Realiser A16 without the matrix mixer (and without wav channel layout meta data).

Using WASAPI to output to Loobe audio cable to HDMI Audio Bridge also worked correctly.

However, the Spatial Audio output component was not happy, with mixed up channels. So I guess the matrix mixer is required for that use case.
 
I was playing some Dolby test files yesterday (using PowerDVD) and got some crazy stuff. Concerned, I went into my AVR and tested all the channels (5.1.4) and verified I had no mixed up wiring.
I then played the IAA shop test file and it was perfect. IDK. lol.
 
I was playing some Dolby test files yesterday (using PowerDVD) and got some crazy stuff. Concerned, I went into my AVR and tested all the channels (5.1.4) and verified I had no mixed up wiring.
I then played the IAA shop test file and it was perfect. IDK. lol.
Guessing Power DVD is downmixing/decoding some things vs. passthru? I would see what your AVR says it's doing during playback (what it's getting from power DVD).
 
Guessing Power DVD is downmixing/decoding some things vs. passthru? I would see what your AVR says it's doing during playback (what it's getting from power DVD).
I think only the 9.1.6 gave the weird results. But I don't remember if I checked if PowerDVD was decoding or passthrough. From time to time it will switch to decoding to pcm on it's own.
Anyway everything normally plays fine so could have been a fluke.
 
Guessing Power DVD is downmixing/decoding some things vs. passthru? I would see what your AVR says it's doing during playback (what it's getting from power DVD).
I don't care for Dolby's built in downmix rules. That's why I up-remix to 7.1.4 instead of 9.1.6. e.g. If I mix something "wide" , I don't want Dolby to move it to the fronts on downmix. I want it to be virtually wide as I intended.
 
Back
Top