• Welcome to ASR. There are many reviews of audio hardware and expert members to help answer your questions. Click here to have your audio equipment measured for free!

AES6 Wow & Flutter Meter — Python & Standalone Analyzer (2σ Method)

I've been trying to use Multitone. Can someone explain the procedure for measuring wow & flutter from an audio file?
Select tab LP, go to measure from , file. Must be 25+ seconds

Klick File, then select measure from file,make sur you are on TAB LP. The file must be a singe tone file 3150Hz or so
1754047437875.png
 
I asked AI Copilot to make some scripts
1. RPM-dev-to-wav. conversion of Shaksnspin wf data to 3150 hz wavfile,for processing in in other programs. needs a input file in csv formal with time and % deviation
2.WowANDFluttergenerator. Generator for 3150hz wav file with any wow and flutter. The input and output agrees with Multitone analysis, (but not my own DIN script that underpredicts DIN values and 2S)
 

Attachments

Hi everyone,


After spending a good amount of time researching wow & flutter measurement methods — and climbing a pretty steep learning curve — I decided to share the result of that journey in case it helps others navigate the same path.

I’ve developed an open-source implementation of a Wow & Flutter analyzer, based on the AES6-2008 (rev. 2012) standard, using the preferred Two Sigma method for both unweighted and weighted measurements.

Educational Purpose:
The main goal of this project is not to compete with existing commercial tools, but rather to provide a transparent, testable and educational reference implementation — especially since no public code examples of standard-compliant W&F measurement seem to be available.



Features​


  • Weighted and unweighted W&F calculation using 2σ method
  • AES6-compliant weighting filter (simple IIR approximation, within spec tolerance)
  • Standalone .exe version for Windows, no Python needed
  • Full Python script for inspection, modification, or extension
  • Validated against synthetic reference tones (Virtins method)
  • Includes example WAV files and actual turntable test recording (Reloop RP-4000MK2)



Screenshots​


Measurement output vs Virtins Multi-Instrument (real turntable tone):


View attachment 459669


AES6 weighting filter response (IIR implementation):

View attachment 459670





Repository and Downloads​


GitHub:
https://github.com/alvaro-oliver/aes6-wow-and-flutter-meter


The latest standalone Windows executable is available under the Releases section:
Download here




Happy to answer any questions about the implementation or help others get started. Feedback is always welcome.


Cheers,
Álvaro
I try to run the script from Spyder, but nothing happens. I am an dummy at Python, and are used to put the wav file name somewhre in the script.. en then execute. but her I do not even get an error message
Can you please help?
1754049093413.png
 
I try to run the script from Spyder, but nothing happens. I am an dummy at Python, and are used to put the wav file name somewhre in the script.. en then execute. but her I do not even get an error message
Can you please help?
View attachment 466972

You should see a system 'Open File' window (Windows or OSx) where you need to select the WAV file to analyze. This window may take more than 10 seconds to appear, especially the first time you run it.
 
Thanks. here is my Phones Gyroscope data for variation on my Denon DP-51F.
1. Used my gyrosope to wav conversion to make wav file, i recorded 54 sec but chopped off the first 10 where the gyro is stabilasing and the last 4 ehwe I disturm the teble shutting off.
2. ran you script
3.ran my script
4.ran Multitione

I notice the way the filters are designed and bandwidth affect the calculated W&F values. Not sure what Multitone uses , or what is should do use to match his

2 EAS6
1754201334332.png

3 wav file wf analyser R6 other filter and 2fft.py
.
1754201444324.png
1754201567601.png

1754201590657.png

4. Multitone

1754201838029.png
 
I modified your script to be in % deviation instead of plotting around 3150Hz .Denon 51F Phyphox app gyro data
1754214970875.png


This is how it looks with a test record
1754229389900.png


I think the Zero-Crossing method gets fooled by rumble and arm resonance or clock and pops and display far greater speed variation in plot 1 than really are present.

1754230201216.png
 

Attachments

  • 1754214710115.png
    1754214710115.png
    172.2 KB · Views: 45
Last edited:
Thanks. here is my Phones Gyroscope data for variation on my Denon DP-51F.
1. Used my gyrosope to wav conversion to make wav file, i recorded 54 sec but chopped off the first 10 where the gyro is stabilasing and the last 4 ehwe I disturm the teble shutting off.
2. ran you script
3.ran my script
4.ran Multitione
Thanks for sharing! You're absolutely right—the choice of filters directly affects the measurement. Unfortunately, their design isn’t standardized. In my script, I followed Virtins’ recommendations.
 
Thanks a lot to @alvaro-oliver for contributing to the understanding and application of w&f measurements.

If I may, I would like to put some notes on what it really is we want to measure and calculate.

For most of the tools I’ve seen, different ways to calculate wow, flutter and w&f is presented. Does the user really know what’s going on and how to address this? Do they know what is good and what is not good? What to aim for?
Does it get clarified by showing eight different ways to present W/F/W&F? Especially when not showing how they are calculated?

W&F is defined by two major things;
  • how much (how many +/- Hz) the speed deviates from the average speed. These amplitudes are called frequency deviations. Let’s call them Δf.
  • how fast the speed moves from and to maximum and minimum deviations. These cycles are called modulation frequencies. Let’s call them fm.
Both the frequency deviation and the modulation frequency is inherent in the carrier frequency (let's call it µ). Here's an illustration of these three parts of the signal we want to measure (note that the y-axis is Hz, not volts):


wnf_f-t-diagram.jpg




Wow is simply defined as fm<6Hz and flutter is fm>6Hz. Frequencies below 0.5Hz is called drift and it’s a different topic. Flutter is normally measured up to less than 100Hz.

In order to measure Δf and fm we use a carrier frequency, which is the average speed of the track (the groove velocity) on a test LP. It’s an old habit to use 3150Hz sine which seems a bit odd, but it’s the midpoint between 1 and 10kHz on a log scale paper. Let’s call the carrier frequency fc.

Music is not pure sine waves but instead a compound of very complex waveforms and transients, so in a similar way as we use rms values and not peak values to denote magnitude of varying levels, it is common to use a value of the deviation Δf which is not exceeded 95% of the time (of a measurement). This is called 2σ (two-sigma) i.e. two standard deviations of a normal (gauss) distribution.

I made a summary illustration;

wnf_frequency-modulated-signal.jpg


Our hearing is normally most sensitive to a frequency deviation of 4Hz. So, it is most annoying if a 1kHz tone is meant to be pure but sways between 996 and 1004Hz. If it sways less or more than that, it is less annoying. Therefore, a weighting factor was expressed in AES6-2008. We can call this factor α.

In my opinion, based on all the above, we should help ourselves in trying to stick to one common nomenclature, e.g. w&f % 2σ weighted AES6-2008 test tone 3150Hz.

If we do that, a sensible requirement based on human perception is then to not exceed w&f +/-0.2% 2σ.

It is very easy to measure a signal for the analysis of speed, wow and flutter. But it is quite complicated to calculate the W&F. For most disturbances or properties of sound, we can use filters and/or FFT to extract the information. But for W&F we can’t do that because the signal is frequency modulated. The W&F is inherent in the signal. Therefore, again in my opinion, it is important that the tool maker states the method used to calculate the W&F.

To conclude, if we assume the speed deviation has a normal distribution, the following should be measured and calculated for a turntables speed, wow and flutter. τi can be regarded as the individual periods in a measurement (i.e. the inverse of the instantaneous frequency fi):


wnf_calc2.jpg


(the calulation of α is an approximation of the AES6-2008 curve)


The requirements we should put depends of the standard of the player and is in the end up to each of us, but for a good standard turntable I would recommend:
  • 33.0 < SPEED < 33.7rpm
  • W&F < +/-0.2% 2σ weighted AES6-2008
The test record (and all our LPs) has some warp and the center hole is never perfectly centered. The record player shouldn’t be blamed for that, so 0.55Hz wow (33rpm) should be disregarded or filtered out. The same goes for cart-tonearm resonances usually in the range 8-12Hz.

Please comment/correct if something is misunderstood or unclear.


@alvaro-oliver ; how do you calculate the zero crossings in the sampled signal? I understand you bandpass the signal, but is the band really small enough?
 
Last edited:
Welcome Calle!
 
I noticed a small but annoying mistake in the last illustration, but I can't edit the post.
Here's a corrected image:

wnf_calc3.jpg
 
The test record (and all our LPs) has some warp and the center hole is never perfectly centered. The record player shouldn’t be blamed for that, so 0.55Hz wow (33rpm) should be disregarded or filtered out.
I thought I should prepare an example of that, so I did.

I recorded the 3150Hz sine from Ultimate Analogue Test-LP track A10.
I calculated the frequency deviation, which is plotted as a blue curve below.
I bandpass-filtered the signal to remove the effect of non-centered test-LP. The result is the red curve below.
When this is done it is also possible to calculate the record player's modulation frequency from the data. It is 5.7Hz so weighting will be about 0.95.

Without filter:
speed = 33,34 rpm
w&f = 0,20 %2σ

With filter:
speed = 33,34rpm
w&f = 0,05 %2σ


1761853805081.png


The dominance of the 0.55Hz is obvious.
Again, note that the y-axis is the frequency deviation, in Hertz. I.e. the test tone varies between 3144 and 3156 Hz due to uncentered LP.


Here's another example with another record player. It's the same sample of test-LP and the same "recording engineer" (me), but just a slight difference between spindle and hole diameter give a bigger frequency deviation than even a modest player has itself:

1761854780952.png
 
I think it is hard do differentiate between wow from record and wow from turntable. So I prefer not to use records for W&F,few are better then 0.06% wow, many are in the 0.1 to 0.15 range but I have only once had a record with as bad as 0.2% wow, I sent it back

By high pass filtering out the once per revolution wow 0.55Hz, you may miss the actual performance of the turntable. 0.55Hz wow is a common problem for many turntables,even DDs.

I use Shaknspin, its is not affected by eccentricity..but limited by noisefloor
This is todays result from My Gyro SE

I have measured the 2S value with shaksnspin on about 40 turntables. the best ones are below 0.1% Values below below 0.08 are few. I suspect the shaknspin noisefloor limit how low values can be differentiated.
Based in my listening a threshold of audibility of 0.2 is a resonable maximum acceptable. This seems to coincide with some old papers on the subject(peak wow)
0.2% 2S is quite annoying to listen too on a sinus tone. 0.05 is also audible on a single tone

Different methods gives different results, as shown below
The DIN weigth and WRMS hides too many flaws .. ut is better to see a plot and note the 2S value
1762190101390.png


1762190139310.png



Some older videos I made




one of my DDs
1762190438631.png



1762190718370.png


To finish off the info overload take a look how different reference numbers compare, An actual peak wow of 0.35% can after filtering end weighting end up as 0.02% WRMS.. which is a very deceiving value

1762194314440.png
 
Last edited:
Thanks @Balle Clorin !
It is really interesting to see your examples.
I have however great difficulties to separate all the different ways to present results. It doesn’t make it easier.

By high pass filtering out the once per revolution wow 0.55Hz, you may miss the actual performance of the turntable. 0.55Hz wow is a common problem for many turntables,even DDs.
0.55Hz from the test-LP is clouding the turntable performance.
I think measurement should be evaluated without and with highpass.

It is of course interesting to know the W&F-value of a turntable in order to judge if there are some issues we should worry about at all. But what do I do if there are?
If the motor pulley on a 24-pole motor is worn, we would see a modulation frequency of 4.2Hz.
Therefore, in order to be able to fix or improve W&F performance, it is important to find the modulation frequency.

Modulation frequency of platter/record at 33rpm -> 0.55Hz.
Modulation frequency of platter/record at 45rpm -> 0.75Hz.
Modulation frequencies at 33rpm relative to the motor pole number:
24-pole (250rpm) -> 4.2Hz
16 -pole (375rpm) -> 6.2Hz
12 -pole (500rpm) -> 8.3Hz

What other modulation frequencies could we expect?
 
I have a Fisher MT-6330 DD with 120 poles, that causes an audible 66.67 cogging tone . Not sure it it has always been there , but cannot get rid if it. It also has 200hz modulation that goes away when I supply the unit with DC power, deactivate the AC supply. My other DD has 100hz vibrations coming from the transformer//PS
 
Sure 0.55hz can come both from record and TT. measuring rpm and wow without a record removes the record contributions

My Fisher DD has 120 poles. 120 poles per revolution, and 1.8sec per rev gives 120/1.8= 66.67. The same calc is valid for 45RPM and I see the same cogging modulation there, just at a corresponding higher frequency. 90hz

The motor drive design is very clever, but maybe someone forgot the that a high number of poles makes the cogging frequency audible


1762269062670.png


1762269154499.png


1762269320336.png


1762269565907.png


1762269635751.png


and belt drive eliminates such problems, but add ite own,,
1762269818921.png


The Technics are not perfect either

1762270045629.png
 
Last edited:
I recall back in the 1980s debates about all direct drive turntables cogging in the audible range and any motor cogging or similar on belt driven turntables being infrasonic.

It was one of the arguments given for belt-drive "superiority".
 
It’s a mistake to think 0.55Hz comes from only the record.
Thanks for that comment.
As I mentioned, 0.55Hz modulation can of course come from both the platter/bearing and the record.
So, it is good to study both unfiltered and filtered signal.
But as far as I've seen, the 0.55Hz in the unfiltered signal will cloud all real problems that may exist in a beltdriven TT.
Also, 0.55Hz would weigh -10dB according to AES6-2008.
In practise that means, if you have say +/-2Hz frequency deviation from 0.55Hz and +/-2Hz frequency deviation from 4Hz, all harm to your ears would come from the 4Hz modulation.

all direct drive turntables cogging in the audible range and any motor cogging or similar on belt driven turntables being infrasonic.
The cogging itself is infrasonic, but it modulates the audio frequencies so a 4Hz cogging results in a 1kHz tone swaying between for example 997 and 1003Hz (depending on strength of deviation).
 
Last edited:
Back
Top Bottom