SteamOS icon indicating copy to clipboard operation
SteamOS copied to clipboard

Filter Chain Sink is reducing dynamic range and low-end response on OLED Steam Deck speakers

Open robotzurg opened this issue 1 year ago • 93 comments

Your system information

  • Steam client version: 1703100617
  • SteamOS version: 3.5.7
  • Opted into Steam client beta?: No
  • Opted into SteamOS beta?: Yes
  • Have you checked for updates in Settings > System?: Yes

Please describe your issue in as much detail as possible:

The OLED switch seems to have a poorly configured audio config, as this reddit thread describes in detail: https://www.reddit.com/r/SteamDeck/comments/187sn3r/audio_dynamics_issue_on_steam_deck_oled_anyone/

Specifically, the OLED switch seems to have a much flatter audio profile and a huge amount of compression, making specifically having the speaker very quiet or very loud not very pleasant. This is particularly bad in my testing on The Binding of Isaac Rebirth, which sounds a lot better on LCD than OLED.

This also isn't a hardware issue as far as I can tell, because the compression can be removed making the OLED speakers equivalent/better than the LCD, through these steps (credit to LordForgiveMySynths on reddit for finding this)

  1. go to desktop mode
  2. open System Settings and go to Audio
  3. make Filter Chain Sink your default playback device
  4. start a game in window mode or switch to window mode (alternative: have a keyboard connected)
  5. minimize the window and go back to System Settings/Audio (or alt+tab to into System Settings/Audio)
  6. scroll to the bottom until you see the app/game under Playback Streams change the Filter Chain Sink entry of that app to Speaker (ACP/ACP3x/ACP6x Audio Coprocessor Speaker)

The problem with this is that it doesn't work in gaming mode, and these steps have to be followed every time you run a game. Considering this can be fixed through this workaround, this hopefully proves it can be fixed in software and hopefully this can get looked at. This does not happen on LCD.

Steps for reproducing this issue:

  1. Play any game on steam deck OLED and compare it to the LCD

robotzurg avatar Dec 29 '23 06:12 robotzurg

A workaround has been discovered by u/Acceptable_Special_8 as detailed in this Reddit thread: the steps to get it working in gaming and desktop mode are below (and in the Reddit thread)

https://www.reddit.com/r/SteamDeck/s/kbKyrPu2WH

Steps:

  • go to desktop mode

  • download "qpwgraph" flatpak from the Discovery store

  • open the program for the first time

  • find Filter Chain Sink [Monitor] & ACP/ACP3x/ACP6x Audio Coprocessor Speaker

  • connect monitor_FL to playback_FL & monitor_FR to playback_FR like below in the crappy screenshot:

  • hit "activate", set a profile name and save your config

  • make a steam shortcut to "qpwgraph" or use the quick launch plugin from the Decky store to open the application in game mode

  • boot into game mode and start "qpwgraph" via shortcut or quick launch plugin

  • check, that your config has loaded properly and the two connections are still there

  • exit "qpwgraph" trough the menu in the upper left corner

  • you will be asked if you wanna close and leave your config active, hit yes

These need to be redone every reboot, but it stays active for all games until you leave game mode or reboot. Unclear how this affects docked or headphones

robotzurg avatar Dec 31 '23 05:12 robotzurg

Update: does not affect headphones. This does cause distortion at the highest volume though. Quite a bit of it, so not recommended if you want to play at super high volumes (the highest volume you can go before distortion is pretty loud though)

robotzurg avatar Dec 31 '23 20:12 robotzurg

I have noticed the same; on top of sounding a lot tinnier, mine are also much quieter than my LCD Deck's. It feels like there is some DSP that is supposed to be enabled on the OLED speakers but is not. LCD's speakers clearly has some kind of DSP improving the sound.

Presumably there should be no DSP applied to headphones, only the speakers.

bangstk avatar Jan 01 '24 05:01 bangstk

I did find a fix for the volume at least:

  • In Game Mode sound settings, there is a device dropdown with "Default (Speakers)" and "Speakers" listed
  • It turns out that both of these are independent volume settings, and they both matter, they seem to multiply each other for the final output. This behavior is not present on LCD Deck.
  • "Speakers" was at the middle by default, by pushing it up to max and switching back to "Default (Speakers)" it is now a bit louder than LCD deck
  • This does not fix the overall audio quality, it still much lacks bass compared to LCD Deck.

Due to this I am certain the speaker quality is also a software or pipewire config issue just like the volume.

bangstk avatar Jan 01 '24 05:01 bangstk

Replying to https://github.com/ValveSoftware/SteamOS/issues/1329#issuecomment-1873170659

Good to mention here for sure, I found this myself too. I think the speakers are just as good if not better (I don't think they changed them?) but this new advertised "DSP that improves sound" they mentioned in the new OLED specs seems to be not working properly. I really hope Valve can fix this!

robotzurg avatar Jan 01 '24 05:01 robotzurg

I did messing around with "qpwgraph", which visualizes all the various connections of Pipewire audio devices.

Here is LCD Deck after launching a game: Screenshot_20240101_013147

Here is OLED Deck after launching a game: fInlkDUf

Of note, the difference is in OLED game audio is passed through "Filter Chain Sink" before being output to speakers (ACP/ACP3X/ACP6x Audio Coprocessor). In LCD, the game audio is going directly to the speakers (ACP/ACP3X/ACP6x Audio Coprocessor).

It seems it is the "Filter Chain Sink" step that is drastically altering the audio quality.

If I reroute the graph to pass the game audio directly to the speaker output (ACP/ACP3X/ACP6x Audio Coprocessor) like so, the sound quality sounds very good again. I feel like this is what the intended configuration is supposed to be.: G141TYZP Or perhaps the raw audio is meant to be combined with the output of Filter Chain Sink, rather than Filter Chain Sink being the only source, perhaps to boost mid/high frequency? Instead it is basically totally cutting out low frequencies.

As some final points of comparison, I have recorded using 'pw-record' the audio stream directly going into (ACP/ACP3X/ACP6x Audio Coprocessor) both with and without Filter Chain Sink in between.

Here is with Filter Chain Sink included, as is shown in the default OLED Deck setup: https://www.dropbox.com/scl/fi/07kb3xyb10gjv3b2sdajx/default_oled_thru_filterchainsink.mp3?rlkey=2zdmcbuw9pz8d6wdyjd0mvup4&dl=0 This is not a recording with a phone, it is the audio stream recorded directly from the "ACP/ACP3X/ACP6x Audio Coprocessor" device. And it is representative of how game audio sounds in Game Mode on my OLED Deck.

As comparison, here is the same game scene with the game audio routed to bypass Filter Chain Sink https://www.dropbox.com/scl/fi/68bj7v0custjhvkie0vzt/oled_game_direct_to_ac_device.mp3?rlkey=m7qiq8q0d32k4gehidp2eqvch&dl=0 Once again, recorded directly from "ACP/ACP3X/ACP6x Audio Coprocessor"

I hope this is enough good data for Valve engineers to investigate.

Also just if anyone else wants to compare notes, my OLED Deck is an LE.

bangstk avatar Jan 01 '24 07:01 bangstk

A workaround has been discovered by u/Acceptable_Special_8 as detailed in this Reddit thread: the steps to get it working in gaming and desktop mode are below (and in the Reddit thread)

https://www.reddit.com/r/SteamDeck/s/kbKyrPu2WH

Effectively the difference here is that that link is combining the raw game audio with the output from Filter Chain Sink (which sounds to me mostly like a high pass filter) whereas my test above is just raw game audio only being passed to the speaker.

bangstk avatar Jan 01 '24 08:01 bangstk

Thank you so much for picking this up!

I'm sharing a video demonstrating the issue so other people can easier understand why the OLED speakers sound much worse than the LCD speakers. I also sent this to Valve via a support ticket at the end of 2023 but haven't heard back yet.

(you probably have to unmute the video first)

Steam Deck OLED Dynamic Range.webm

There are 3 audio clips that I recorded on both the LCD and the OLED model using a SONY PCM-D100. I just roughly held the mic centered to the screen, so please ignore any differences in stereo separation as the concern of the recordings are dynamics.

It is best to listen to these clips with headphones on.

00:00 - HTTYD-DragonBattle-LCD 00:10 - HTTYD-DragonBattle-OLED 00:21 - PlanetOfLana-EndLeavingVillage-LCD 00:44 - PlanetOfLana-EndLeavingVillage-OLED 01:06 - PlanetOfLana-MainMenu-LCD 01:40 - PlanetOfLana-MainMenu-OLED

HTTYD-DragonBattle

Orchestral tutti passage. Pay attention to the highs of the cymbal coming in at 0:03 and the high string tone coming in at 0:05.

LCD: The cymbal fades out in a linear and natural way as it does in the actual music.
OLED: The cymbal wobbles during fade out several times being in a fight with the high string tone. The fade out sounds unnatural and nervous as it actually keeps fading in and out. This is a drastic modification to the source material.

PlanetOfLana-EndLeavingVillage

Lana walks on a wooden pier leaving her village for the last time. Machines have joined her village, so you can hear them in the distance. Pay attention to Lanas footsteps on the pier and their volume in contrast to the environmental sounds.

LCD: You hear a peaceful atmosphere with some metal sounds from the giant machines in the background. The footsteps can be clearly identified as their volume is above of the environmental audio.
OLED: The footsteps and environmental audio constantly fight for presence and there's no real difference in volume between them. Whenever you hear something that's supposed to stick out like a footstep or a hammer hitting a nail, the environmental audio quickly moves back a bit in volume and immediatly goes up again, creating a thick and pumping feel. Every sound seems to be as loud as everything else, making it hard to decide for the brain what to focus on. It is the absolute opposite of the original soundscape, which should feel light and pieceful since this is a happy end. The immense compression however works against that intention and creates a sense of tension.

PlanetOfLana-MainMenu

Light forest atmosphere with soft piano chords over a pedal tone. Pay attention to the sustain phase of the piano.

LCD: The piano plays without affecting the forest atmosphere. Once a piano note started, it sustains linearly. Some piano notes are a bit louder than others which is part of how pianists phrase music.
OLED: Once the piano starts, you clearly hear the forest atmosphere being pushed back by the piano. Once the notes of the piano fade out, the atmosphere and the pedal tone get louder again, making it clearly an artifact of too aggressive dynamic compression. Also note how the piano notes seem to stay at the same volume which destroys the musician's phrasing.

EDIT: There's also a post that puts these descriptions into reproducible numbers using standard EBU-R128 measurements: https://github.com/ValveSoftware/SteamOS/issues/1329#issuecomment-1884963832

Schroedingers-Cat avatar Jan 02 '24 22:01 Schroedingers-Cat

Great findings. Is there any way we can get this onto more of Valve's eyes? I'd hate for this to go unnoticed

robotzurg avatar Jan 05 '24 09:01 robotzurg

I have contacted Valve via a support ticket on Steam at the beginning of December. For every two days or so, I'm getting a message that they are still investigating but they haven't heared back yet from their people. I guess their audio engineers are still on holidays.

Schroedingers-Cat avatar Jan 05 '24 10:01 Schroedingers-Cat

Maybe a less subjective sounding issue title might get more attention: "Filter Chain Sink is removing all bass frequencies from OLED Deck's speakers"

bangstk avatar Jan 05 '24 16:01 bangstk

Good suggestion, thanks! I've updated the title to reflect that.

robotzurg avatar Jan 05 '24 16:01 robotzurg

Here's a bands visualization demonstrating that clearly using my recordings from "ACP/ACP3X/ACP6x Audio Coprocessor" lined up to the same point:

Capture

Filter Chain Sink may be doing more processing past that (such as compression that other comments in this issue have noted) but the leveling off of bass starting at 300Hz and total loss of bass below 100Hz or so is by far the most noticeable difference.

The speakers themselves are quite capable of these frequencies (as can be proven by bypassing the Filter Chain Sink device with qpwgraph) so I don't think it's intentional.

bangstk avatar Jan 05 '24 16:01 bangstk

Absolutely no way it's intentional, there's no way they'd advertise the improvement if they had anyone check this to see it's so much worse. I have to assume something got messed up in the production of the OLED deck that caused it, but you guys have been great at helping push these findings and getting these workarounds, so I'm hoping Valve can get this fixed up sooner or later

robotzurg avatar Jan 05 '24 16:01 robotzurg

To me, the most prominent effect of that chain is the compressor (not bandwith compression like mp3 but the reduction of dynamic range).

Implementing a high-pass filter before the speaker (reducing bass) is a common thing in speaker design, especially if the speakers have issues reproducing low frequencies (which is true for all small speakers). Just as a reference point, here's a frequency response graph from a MacBook Pro 15" speaker: MBP15 (source: https://gearspace.com/board/so-much-gear-so-little-time/716896-what-frequency-response-typical-built-laptop-speakers.html)

Even with the filter chain sink bypassed, I can clearly hear the OLED model losing volume drastically when going below 300 Hz. While I can say that the bass sounds weaker when comparing the OLED with the LCD model, the difference between the models feels minor when comparing it to good headphones or full range speakers.

Therefore, I'd summarize this issue as "OLED Speakers Dynamic Range Compression" or "OLED Speakers Filter Chain Reduces Dynamics and Low-End-Response".

Here's a bands visualization demonstrating that clearly using my recordings from "ACP/ACP3X/ACP6x Audio Coprocessor" lined up to the same point:

Capture

I think it would make the differences between the models clearer when comparing the "ACP/ACP3X/ACP6x Audio Coprocessor" on the LCD and the OLED model using pink or brown noise as source material. Then we have a good reference point (the previous model) instead of the unprocessed source material. Also, some graphs visualizing the reduced dynamic range might help. I might find some time to do that next week (but I don't mind someone else doing it).

Schroedingers-Cat avatar Jan 05 '24 21:01 Schroedingers-Cat

While I can say that the bass sounds weaker when comparing the OLED with the LCD model, the difference between the models feels minor when comparing it to good headphones or full range speakers.

I have to disagree, and I'm not even an audiophile. It's enough of a difference that I can tell just by hearing the SteamOS menu navigation sounds.

I also don't see how stripping the bass completely is a good solution. Even if the lower frequencies have less response, it makes a massive difference in the sound to have them vs having no low frequency whatsoever. If you are suggesting the high pass filter settings are intentional, then the current low freq cutoff point drastically underestimates the speakers capability. I'd like to prove that with recordings of the actual speakers but I don't have a good microphone to be able to make a scientific test of that. And why would OLED deck do that on purpose but not LCD deck?

If the speakers naturally have reduced response below 300Hz, then doing that in software before sending audio to them to begin with just multiplies that effect.

I wonder if for some reason only certain OLED devices are routing the game audio that way then if you think the difference is minor.

When you are bypassing the filter chain sink, are you doing so after you launch the game/test app? SteamOS/Steam seems to reset the pipewire links whenever it launches a game, so rerouting it before launching doesn't help the sound. When I bypass the filter chain sink game audio to me sounds about on par with LCD deck.

I think it would make the differences between the models clearer when comparing the "ACP/ACP3X/ACP6x Audio Coprocessor" on the LCD and the OLED model using pink or brown noise as source material. Then we have a good reference point (the previous model) instead of the unprocessed source material.

I don't think it would make a difference, as I have shown the previous model routes the game audio directly to the "ACP/ACP3X/ACP6x Audio Coprocessor". You would also be getting unprocessed source material there as well.

bangstk avatar Jan 05 '24 21:01 bangstk

Glad someone has opened an issue for this, I'm experiencing the same problem with my 1TB OLED model, too. Unfortunately the workarounds posted on Reddit just make things sound louder, they don't address the missing bass. For now the only solution is to use headphones, which is not really a solution.

Laephis avatar Jan 06 '24 13:01 Laephis

Glad someone has opened an issue for this, I'm experiencing the same problem with my 1TB OLED model, too. Unfortunately the workarounds posted on Reddit just make things sound louder, they don't address the missing bass. For now the only solution is to use headphones, which is not really a solution.

I would like to throw my hat in the ring and offer this one: image Works for all applications once set until restart You can also remove the output > playback on the filter chain for removing the boosted mids, but it seems to re-add itself every time you open qpwgraph, so it makes setup a little more annoying.

Jaynator495 avatar Jan 06 '24 18:01 Jaynator495

Replying to https://github.com/ValveSoftware/SteamOS/issues/1329#issuecomment-1879780766

This is what the original workaround I posted at the top does. This sorta gives it back some of the quality, but also makes it louder, and causes pretty bad distortion at very high volume games/when the volume is high up. I'm really starting to wonder if the steam deck OLED speakers can't handle loud volume very well?? Cause the only way I can get it that high without distortion is with the filter, because it basically has 0 bass. Is this actually a steam deck OLED speaker issue as well?? I can't see why they'd cheap out on the speakers...

Really hoping we can get some sort of response from Valve on this. Anyone had any luck?

robotzurg avatar Jan 09 '24 06:01 robotzurg

With that arrangement, you're essentially doubling up the midrange. That's why it's more prone to distortion. You have to disconnect Filter Chain Sink output_FL/FR from the ACP/ACP3X/ACP6x Audio Coprocessor device if you have Filter Chain Sink monitor_FL/FR connected to it.

Otherwise you are getting the raw audio (coming out of the monitor_FL/FR outputs) with the highpass filtered audio (coming out of the output_FL/FR outputs) stacked on top of it.

I don't think that the highpass filtering is a good way of reducing distortion, because it really hurts the sound overall. If the filtering only came on at high volumes then I might agree. Since it's a software effect something like that should be possible. But the way it is now is just a flat out downgrade in all respects from LCD's speaker audio.

I have just one more consideration to add, apparently the LCD Deck changed speakers later on in production. My LCD is from the launch batch, so I wonder if the later 'Refreshed' LCD speakers sound a lot more like OLED's current config. https://www.ifixit.com/products/steam-deck-refreshed-model-speakers

@Schroedingers-Cat If you can recommend a good test setup methodology and maybe a good and cheap mic for it, I am willing to get external recordings/response measurements of my Launch LCD Deck, and OLED Deck with various pipewire connections for comparison.

bangstk avatar Jan 09 '24 20:01 bangstk

Loudness by Numbers

Regarding the reduced dynamics when audio passes through the OLED's filter chain (by default), I've processed my previous recordings with a loudness analyzer (using standard EBU R128 units) to provide measurable data demonstrating the reduced dynamic range of the SteamDeck OLED model in comparison with the LCD model. The original recording is in this post.

HTTYD-DragonBattle Loudness

Short orchestral tutti. Check out the blue bars of PROGRAM and MEDIUM, the OLED version clearly has much less range than the LCD version.

LCD:

  • Program/LRA of 20.2dB
  • Medium/Crest factor of 15.1dB HTTYD-DragonBattle-Loudness-LCD

OLED:

  • Program/LRA of 11.9dB (8.3dB less than LCD)
  • Medium/Crest factor of 13.4dB (1.7 less than LCD) HTTYD-DragonBattle-Loudness-OLED

PlanetOfLana-MainMenu Loudness

Long and soft forest atmosphere with some piano notes. Check out the blue bars of PROGRAM and MEDIUM, again with the OLED version having strongly reduced dynamics.

LCD:

  • Program/LRA of 12.1dB
  • Medium/Crest factor of 17.9dB PlanetOfLana-MainMenu-Loudness-LCD

OLED:

  • Program/LRA of 6.7dB (5.4dB less than LCD)
  • Medium/Crest factor of 15.4dB (2.5dB less than LCD) PlanetOfLana-MainMenu-Loudness-OLED

PLanetOfLana-EndLeavingVillage Loudness

Long atmosphere where you have multiple sound cues supposed to be placed over a light and peaceful atmosphere. Since this recording is hard to reproduce (you'll end up at different times within the atmospheres sounds, which are likely including randomized audio cues), the crest factor from the MEDIUM section is more relevant. The crest factor basically gives you the difference between the true peak statistics and the ungated loudness statistics as RMS (ATSC A/85). Simplified, the blue range from MEDIUM shows you how much single audio events like footsteps, hammering or wood creaks stick out over the general ambience (which compression reduces making the sounds harder to notice).

LCD:

  • Medium/Crest factor of 26.0dB PlanetOfLana-EndLeavingVillage-Loudness-LCD

OLED:

  • Medium/Crest factor of 21.7dB (4.3dB less than LCD) PlanetOfLana-EndLeavingVillage-Loudness-OLED

Verdict

Apart from the compression strongly changing characters and intentions of the developers and audio teams, it also makes it hard to notice distance-based volume effects like a sound further away being more silent. This is routinely being used by audio designers in games and I don't think it's good to mess with this for all games in this overly generic way.

I can only speculate why Valve added this effect to the audio pipeline. While it's common these days to add some kind of peak limiters to protect the speakers from taking damage, these protections usually are only becoming effective at the highest volumes. The SteamDeck OLED's compression however is always enabled, even when using the speakers at 30% volume. So I'm not really sure why it's there.

If it's intentional for other reasons, maybe an option to disable the compression might be great. If it's intentional to protect the speakers from peaks, a peak limiter only engaging at certain input levels taking into account the actual output volume would be a much more transparent solution to the problem.

Schroedingers-Cat avatar Jan 10 '24 14:01 Schroedingers-Cat

Equalizing in the Filter Chain

The filtering seems to be done by a custom LV2 plugin and it's the same plugin doing the compression. Previous measurements and graphics were comparing the raw unprocessed audio with the signal fed to the OLED speakers, which doesn't tell the whole story (like what the speakers are actually capable of or how it compares to the LCD model).

I made some recordings on the LCD and OLED model using white, pink and brown noise played back at 100%. I also ran my previous recordings captured for demonstrating the reduced dynamics through an averaging spectrum analyzer. I've selected some of those results that I think are representative for what I found in all those recordings.

Pink Noise FFT

LCD

NoisePink-LCD

OLED

NoisePink-OLED

Observations

Overall, the OLED model seems to have a flatter response than the LCD model. Compare the ~28dB peak around 8kHz falling off to 16Khz and to 2kHz between the LCD and the OLED model and you'll see that the OLED model peaks around -39dB (2kHz) to -44dB (16kHz) while the LCD model peaks go from around -48dB (2kHz) to -54dB (16kHz).

Regarding the bass range, up to 200Hz the LCD model seems to have a slight edge indeed over the OLED model seemingly able to reach 150Hz. But after 200Hz and the low midrange, the OLED model really comes out stronger and catches up to leveling up with the midrange better than the LCD model.

I should also note that the pink noise had weird artifacts on the LCD model (some kind of low frequency breathing) which the OLED didn't produce. This can be noticed especially when playing back brown noise which sounds clean on the OLED model and inconsistent and wobbly on the LCD model.

HTTYD-Dragon Battle FFT

LCD

HTTYD-DragonBattle-FFT-LCD

OLED

HTTYD-DragonBattle-FFT-OLED

Observations

While the energy in the lower end bass (below 250Hz) is reduced on the OLED model, the energy above 250Hz is getting some gain. Also note the overall more flatter response on the OLED model while the LCD is stronger around 8-10kHz.

Verdict

I can only speculate why Valve have added this filter to the chain. I haven't been involved in the design process and I don't know any details about the speakers and other design constrains affecting the speaker design. Also, this are a very subjective topic which is a good thing but it also means it's impossible to please everyone with a single design.

With that out of the way, here are some reasons why there's usually some filtering, esp. high-pass filtering going on in most speakers:

  • cut away frequencies that cause the speaker to badly reproduce other frequencies
  • cut away frequencies that the speaker cannot easily reproduce and thus looses too much energy
  • get cleaner results like improved total harmonic distortion
  • save energy/battery
  • avoid resonances (speaker itself or case)

Again, I'm not claiming that this is intentional in the case of the Steam Deck. I'm only listing up reasons why companies generally do it.

Schroedingers-Cat avatar Jan 10 '24 14:01 Schroedingers-Cat

Just to clarify, was your response testing done with default OLED audio piping or with the filter chain sink bypassed?

bangstk avatar Jan 10 '24 14:01 bangstk

@bangstk the recordings were made with a SONY PCM-D100 using the default audio settings on both Steam Decks at a distance of 30cm.

@robotzurg would you mind changing the issue title to something that includes the reduced dynamic range? The current thread title doesn't reflect that the filter chain drastically reduces the audio dynamic range while your original text mentions the audio compression and the reddit thread you link to basically is about the compression. I'm also unsure about the removal of frequencies part since the removed frequencies are hard to reproduce on the deck's speakers anyway, especially if the difference between LCD and OLED is not that big in a real recording.

I'd suggest something like "Filter Chain Sink is reducing dynamic range on OLED Steam Deck speakers". If you also want to keep the frequency part then "Filter Chain Sink is reducing dynamic range and low-end response on OLED Steam Deck speakers" might be a good summary.

Schroedingers-Cat avatar Jan 10 '24 15:01 Schroedingers-Cat

Last questions,

-Is your OLED an LE or regular model? -Is your LCD an original or a refresh model? You can determine vita the explanation here https://www.ifixit.com/products/steam-deck-refreshed-model-speakers

Getting a PCM-D100 is quite out of my budget, I would like to replicate your pink noise measurements on my own devices but I might have to pick a cheaper microphone. Since this seems to be much more your wheelhouse do you have any recommendations?

bangstk avatar Jan 10 '24 15:01 bangstk

Last questions,

-Is your OLED an LE or regular model? -Is your LCD an original or a refresh model? You can determine vita the explanation here https://www.ifixit.com/products/steam-deck-refreshed-model-speakers

The OLED model is the regular 1TB model, not the Limited Edition model. The LCD model is the regular 512GB model with the Taicang BN5010S5H-NOOP model, so it's one of the early ones.

Regarding mics, I'm not very knowledgeable of budget microphones for measurements with low self noise (as that's what I'd try to get when measuring something tiny like the Deck's speakers). Usually, the less self noise a mic has the higher the price ... also I gotta go now so my thoughts right now might not be the best.

Schroedingers-Cat avatar Jan 10 '24 15:01 Schroedingers-Cat

Ok, last last question, have you looked at what your default pipewire routing is with "qpwgraph" from discover on both your lcd and oled decks? Do they match mine (top 2 images)? (where "Quake_x64_steam.exe" is replaced with whatever application you are playing audio with) It's a jumbled mess normally, you just have to move every device with no connections out of the way.

Just want to get as many info points as possible and rule out whether some devices are getting different routings somehow.

bangstk avatar Jan 10 '24 15:01 bangstk

Replying to https://github.com/ValveSoftware/SteamOS/issues/1329#issuecomment-1885018123

I've updated the title to reflect this. I appreciate your hard work graphing this!

robotzurg avatar Jan 10 '24 18:01 robotzurg

@bangstk your pipewire graphs match the graphs of my respective SteamDeck models.

For the LCD model, the relevant node graph is: App out node -> ACP/ACP3X/ACP6x Audio Coprocessor Speaker in node

For the OLED model, the relevant node graph is: App out node -> Filter Chain Sink in node
Filter Chain Sink out node -> ACP/ACP3X/ACP6x Audio Coprocessor Speaker in node

Schroedingers-Cat avatar Jan 11 '24 08:01 Schroedingers-Cat

I figured a better workaround: place this PipeWire config to ~/.config/pipewire/pipewire.conf.d/filter-chain-sink.conf or /etc/pipewire/pipewire.conf.d/filter-chain-sink.conf.

context.modules = [
    { name = libpipewire-module-filter-chain
        args = {
            node.description = "Filter Chain Sink"
            media.name       = "Filter Chain Sink"
            filter.graph = {
                nodes = [
                    {
                        type  = builtin
                        name  = eq_band_1
                        label = bq_highshelf
                        control = { "Freq" = 0 "Q" = 1.0 "Gain" = -12.0 }
                    }
                ]
                links = [

                ]
            }
	    audio.channels = 2
	    audio.position = [ FL FR ]
            capture.props = {
                node.name   = "filter-chain-sink"
                media.class = Audio/Sink
            }
            playback.props = {
                node.name   = "filter-chain-playback"
                node.passive = true
            }
        }
    }
]

It will replace the compression with a simple negative gain which won't compress the dynamic range while make speakers won't be distorted at the maximum volume.

Cairetina avatar Jan 18 '24 09:01 Cairetina