Jump to content
IGNORED

Sound Engineering Repository – Experiments and Experiences


Recommended Posts

I would like to begin this thread with a short finding I have made with regards to sound differences in music players and the list of analysis I have made till now. I will restrict my post to three music players whose difference I have been able to precisely quantify.

 

This has happened with multiple components but for the least expensive gear I've tried that gave this difference it is.

Microsoft Surface Book 2015 8GB RAM 256G Storage Dgpu

Windows 10 OS latest build as of July 2019

Topping NX4 DSD with its stock cable

Shure SRH1540

 

1. Microsoft's groove player: I am predicting some inefficient coding with regards to buffering and volume scaling. Let me first describe the issue with buffering.

 

The recording used is : Back in Business (track no 13), from VIOLET EVERGARDEN: Automemories. Year - 2018. More details. Dynamic range as measured by dr tool for foobar 2000 - 10. Left and right both 9.6. peak left is -1.48 and peak right is -0.99. RMS left is -14.3 RMS right is -13.6 (Unable to find Dr-Loudness-Wars entry).

 

On foobar2000, There's a faint ring of the bell at 0.25. There's another instrument for a split second during 0.28 and 0.29 (comes fades and comes. Plays two notes). Regarding the faint kicks at just before 0.35, just before 0.37, twice just after 0.38 and once just before 0.40. I'm also able to hear something similar around 1.30 region and especially at 1.36. On groove player the timestamps switch by like 1 second earlier (0.25 shifts to 0.24 and so on). But that's not where it stops. On foobar 2000 I can replay from 0.25 seconds how many times I want and I'd be able to figure out that thump. But in groove player, I need to play it from beginning again by opening the file again. If I try to replay it back from like 30 seconds, all the above details are lost. Anyone who's good at software stack can explain me this issue with respect to buffer or stuff like that.

 

Regarding Volume scaling, the player doesn't have any ASIO or WASAPI stack I believe and it sounds bass boosted and cut off highs.

 

2. Foobar2000: this used to be my choice of music player, until I tried another player called winyl which sounded "different". Confused, I sought help from a friend and he found that the output of winyl matched closer to his Function Generator output as compared to foobar which showed distortions. I have since forgotten the gear he used, but I remember it being a RME PCIe sound card. This was tried across different versions of foobar (1.3.1, 1.4.1 and 1.5.1) with Peter's ASIO/Wasapi Plugins and the results were consistent. Both winyl and foobar showed fairly identical results with Direct sound, ASIO and Wasapi, with winyl being more true to the expected values. I have linked the 5khz square wave measurements (typo in the title) https://imgur.com/gallery/50P4hRJ . You can see the name of the oscilloscope used in this measurements in the image. He has tried it with multiple oscilloscopes and function generators as well. This is in no way a conclusive measurement or evidence of audible change and there still are variables to be eliminated (recommend people to not draw parallels unless fully covered), but it does show depending on gear, there can be a difference, and I highly encourage anyone with available gear to make further measurements. I do not have the necessary apparatus to continue this measurement.

 

The prediction I have for this is that despite mentioning WASAPI/ASIO, i think the code somehow banks on to windows volume control API (even though it is supposed to bypass it), which is known to have some form of a limiter or compressor on top of it, but I can't be sure.

 

3. Winyl: First thing I notice is that whenever I start it, I will have a tiny 0.5 second of fade in effect to the music. This is minor and I have noticed it as a configurable feature on other players. But there is something else to this player that stuns me. Whenever I have only the dac (apogee groove currently) plugged in to one of my usb ports I hear this fade in effect and then music starts playing normally. However, whenever I plug in an additional device to the secondary usb port in my device, and open winyl, i hear an initial about 2 seconds of stuttering before it plays the music. I am not exactly sure what is happening, but I think it is doing some check in the USB root configuration (might be sleep settings or priority settings) and probably making suitable configurations before continuing playback.

 

Thanks and Regards,

Manuel Jenkin.

 

Kindly Read and abide by the rules described in First page of the thread. Violations will be deleted

Link to comment

This is an example of a post where you can understand the line between the parent thread and this thread:

 

First up, this is not a scientific publishing or paper or tear-down and hence not allowed in the Parent Thread. However, there have been enough efforts made, it has scientific backing to some extent, and is not the generic measurements we see day to day. He has covered multiple topics, made considerable efforts to measure with high amount of coverage - Skin effects, Capacitance and so on.

 

What about his statements on audibility? As described in post 1 of the parent thread, Audibility and reproduction are still an evolving subject and it is up to the readers preference to take it as gospel or not. It is preferred to post things here which are void of such statements, but sometimes if the material is good enough with high coverage, the exceptions can be made. The material above is high effort, and not just a low effort, low coverage "debunking" session. No need to be pedantic here whether you agree or disagree, it is up to you, and keep your opinion to yourself.

 

What you are allowed to express is 

1. If you have genuine concerns about the reliability of the test - any inconsistency with measuring equipment, for example.

2. Questions about scalability of the test - this test was assumed using load sharing equations assuming a dynamic driver load. What about electrostatic load which is more capacitive than resistive? Can they start to show significant deviation with these changes in values.

3. If you have additional tests that you would suggest. I for one, would like to see how the capacitance values changes depending on whether the cable is laying on the ground or is used with risers (the type of risers used should be described). I am thinking of this with respect to line to ground capacitance (which decreases as you rise the cable up). And obviously crystal boundary effects are a complex topic that warrants further exploration.

 

Take this as a guide on the set of parameters that have been measured already, do your calculations, and in case you believe there is a deviation, try to look at it from another scientific angle. Coverage is always an open topic.

 

Thanks and Regards,

Manuel Jenkin.

Link to comment

Around 3.46 in the Video attached in the previous post, he mentions a concept called Zobel Network. I haven't delved much into the specific topic, but as an EE, especially a control systems guy, filters to do electrical compensation has always been of high interest to me.

 

A good example of electrical compensation/filter is the etymotic er4b. For those who don't know it was the original er4 model produced by etymotic. Their intention was to make an affordable alternative to their er2 insert earphones (note that this is not the new er2se/xr, but an old and fairly expensive model). Both er2 and er4b were designed for research purposes, the er4b was a model that reflected etymotic's ideal diffuse field target for accuracy with binaural recordings. Er4s and other models followed with smoothened/softer response for general consumers, for masking what they call as high frequency emphasis in CD quality recordings. The changes were simple removal of filters in er4b, and you can purchase a certain variant of cable with filter blocks that lets you switch between er4p, er4s and er4b on the fly.

 

I tried extrapolating the impedance plot of etymotic from innerfidelity charts and tried to trace the bode plots of er4b using the filter information I got. I have embedded it in this post for your reference. It is important to note that this was only an extrapolation with a basic model, and the real world model would be a little complex. It is the shape of the graph i'm stressing here than the points in the graph itself. Actual point of asymptote could be anywhere from 3-8khz or even further depending upon how the real model deviates from my interpolation.

 

What does this compensation do. First and foremost, the impedance as seen by the amplifier is now linear as much as possible throughout the frequency range, apart from the asymptote at around 7Khz in my simulation (poles). In stock form the er4 balanced armature model (Knowles BA 29689, guided by a set of mechanical filters/waveguides designed by knowles/etymotic) behaves as a resistor + inductor hence having higher impedance as frequency goes up. And this is important because you are guaranteed to get better phase coherency in the output current waveform. Typically when we have a non linear impedance plot, it means that the system has residual capacitance and inductance apart from resistance which will mean the current will lag/lead the voltage by a specific phase. Most amplifiers try to shape the output voltage waveform to follow the input given (exceptions exist from other topologies, like Current Feedback Amplification) and if the load structure makes the current deviate, your output will deviate. Remember current is what makes the drivers in a balanced armature/dynamic driver move, by principle of Lorentz Force. https://en.wikipedia.org/wiki/Lorentz_force

 

Phase coherency is of vital importance when it comes to binaural recordings since it is the essence by which our ears decode spatial information. You want the recordings to be reproduced with as little changes as possible in this area.

 

Aside from this the parallel capacitance also has a beautiful side effect of being able to store and discharge as the system asks within quick time limits (quick transients as a result). A good amplifier is supposed to eliminate this requirement, but it doesn't hurt to get this as a bonus and be able to utilize less capable amplifiers to still good fidelity.

 

It is important to note that the above has been described as a purely electrical model assuming no mechanical losses. In reality, the very act of producing sound is a mechanical loss and will need a complex model where we also include mechanical impedance, but is out of scope. Considering the fact that balanced armatures push only a very small packet of air, it could be neglected in many cases. Amplitude displacement limitations are a broad topic and shall be reserved for another post.

 

Further Reading: Rinchoi had measured the etymotic er4b and had linked it in his blog. One interesting information I came across was in one of his comments section where he described a basic equation that explains a typical moving armature (balanced armature) distortion spectra. http://rinchoi.blogspot.com/2012/03/etymotic-research-er-4b.html?m=1

 

Kindly Read and abide by the rules described in First page of the thread. Violations will be deleted.

IMG_20200225_152810__01.jpg

npxjGEar.jpg

Link to comment
On 2/24/2020 at 7:12 AM, manueljenkin said:

I would like to begin this thread with a short finding I have made with regards to sound differences in music players and the list of analysis I have made till now. I will restrict my post to three music players whose difference I have been able to precisely quantify.

 

This has happened with multiple components but for the least expensive gear I've tried that gave this difference it is.

Microsoft Surface Book 2015 8GB RAM 256G Storage Dgpu

Windows 10 OS latest build as of July 2019

Topping NX4 DSD with its stock cable

Shure SRH1540

 

1. Microsoft's groove player: I am predicting some inefficient coding with regards to buffering and volume scaling. Let me first describe the issue with buffering.

 

The recording used is : Back in Business (track no 13), from VIOLET EVERGARDEN: Automemories. Year - 2018. More details. Dynamic range as measured by dr tool for foobar 2000 - 10. Left and right both 9.6. peak left is -1.48 and peak right is -0.99. RMS left is -14.3 RMS right is -13.6 (Unable to find Dr-Loudness-Wars entry).

 

On foobar2000, There's a faint ring of the bell at 0.25. There's another instrument for a split second during 0.28 and 0.29 (comes fades and comes. Plays two notes). Regarding the faint kicks at just before 0.35, just before 0.37, twice just after 0.38 and once just before 0.40. I'm also able to hear something similar around 1.30 region and especially at 1.36. On groove player the timestamps switch by like 1 second earlier (0.25 shifts to 0.24 and so on). But that's not where it stops. On foobar 2000 I can replay from 0.25 seconds how many times I want and I'd be able to figure out that thump. But in groove player, I need to play it from beginning again by opening the file again. If I try to replay it back from like 30 seconds, all the above details are lost. Anyone who's good at software stack can explain me this issue with respect to buffer or stuff like that.

 

Regarding Volume scaling, the player doesn't have any ASIO or WASAPI stack I believe and it sounds bass boosted and cut off highs.

 

2. Foobar2000: this used to be my choice of music player, until I tried another player called winyl which sounded "different". Confused, I sought help from a friend and he found that the output of winyl matched closer to his Function Generator output as compared to foobar which showed distortions. I have since forgotten the gear he used, but I remember it being a RME PCIe sound card. This was tried across different versions of foobar (1.3.1, 1.4.1 and 1.5.1) with Peter's ASIO/Wasapi Plugins and the results were consistent. Both winyl and foobar showed fairly identical results with Direct sound, ASIO and Wasapi, with winyl being more true to the expected values. I have linked the 5khz square wave measurements (typo in the title) https://imgur.com/gallery/50P4hRJ . You can see the name of the oscilloscope used in this measurements in the image. He has tried it with multiple oscilloscopes and function generators as well. This is in no way a conclusive measurement or evidence of audible change and there still are variables to be eliminated (recommend people to not draw parallels unless fully covered), but it does show depending on gear, there can be a difference, and I highly encourage anyone with available gear to make further measurements. I do not have the necessary apparatus to continue this measurement.

 

The prediction I have for this is that despite mentioning WASAPI/ASIO, i think the code somehow banks on to windows volume control API (even though it is supposed to bypass it), which is known to have some form of a limiter or compressor on top of it, but I can't be sure.

 

3. Winyl: First thing I notice is that whenever I start it, I will have a tiny 0.5 second of fade in effect to the music. This is minor and I have noticed it as a configurable feature on other players. But there is something else to this player that stuns me. Whenever I have only the dac (apogee groove currently) plugged in to one of my usb ports I hear this fade in effect and then music starts playing normally. However, whenever I plug in an additional device to the secondary usb port in my device, and open winyl, i hear an initial about 2 seconds of stuttering before it plays the music. I am not exactly sure what is happening, but I think it is doing some check in the USB root configuration (might be sleep settings or priority settings) and probably making suitable configurations before continuing playback.

 

Thanks and Regards,

Manuel Jenkin.

 

Kindly Read and abide by the rules described in First page of the thread. Violations will be deleted

 

Extending on Winyl, few things I have noticed about this player (and few other players as well), relating to both the Library and Windows Memory Management/Paging.

 

I did some testing on winyl to figure out what happens on a software level. Did some test in putting the device to sleep and bringing it back. It resumes playback without error, the time runs, scrubbing works but doesn't make sound. Even if I switch to another song it doesn't make sound but doesn't throw error either. I need to restart winyl to get sound. I checked this on directsound, firing data through my laptop speakers straight. I didn't want too many variables, though it should repeat on other stuff, in an even more complicated manner. I think the way winyl sets up page tables is very rigid and hence very stable with respect to data integrity but needs exact same address locations. Need to check how memory is utilized/changed when putting to sleep state.

 

What happens when I close the lid on my system. It goes to sleep after 10 seconds, and on its path there, it enters two stages. First 3 or 4 seconds it is active. Next 3 or 4 seconds it is inactive but it doesn't go to sleep, and resumes playback the moment I open the lid. After 10 seconds, it has entered full sleep, and the RAM has undergone a complete change.

 

In short, resuming playing from winyl after sleep doesn't result in an error dialog but it doesn't produce sound output. I need to close and reopen winyl for it to send out an useful data. Something with regards to output reference or memory sampling reference or paging reference which winyl looks for is now corrupted/shifted.

 

Another thing I have noticed very rarely (actually only in a specific type of input tone my friend gave me, was in wav format), that winyl did run into issues like buffer underrun/overrun. Song was playing and suddenly you hear BRAAAAAAP. As if someone poured molten lava in the form of audio noise into your ears. I am yet to get back to that issue (was quite painful and scary), but I found there are latency monitor tools that can be run in the background to check what is happening. Will check sometime and update.

 

And regarding latency, and packet loss, I did an overkill experiment recently. I ran FreeBSD (the latest version as of last month) on VirtualBox in my Windows 10 system. I used the stock kernel/mixer, and used USB passthrough in Virtualbox to let freebsd access my apogee groove. It detected the groove fine and even was able to understand its audio class. I started playing music, and I was prepared for this, there were tonnes of clicks, pops and crackles. Anyone who wants to visualize timing issues audibly can do this experiment. The latency of the stack is pretty high and is most certainly guaranteed that you will also experience such stutters.

 

Lately I have also been trying few other tweaks as described by focusrite in their "Optimising your PC for audio in windows 10".

https://support.focusrite.com/hc/en-gb/articles/207355205-Optimising-your-PC-for-Audio-on-Windows-10

 

I have used the guide to disable system sounds, and disabled usb selective system suspend. Think of it being similar to disabling haptic feedback on phone and removing auto screen turn off on phone respectively. Do try it out in case you are hearing pops, clicks, lag in your system or are hearing packet loss concealment kicking into action too often.

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now



×
×
  • Create New...