• 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!

Wow and Flutter measurements like you've never seen before! Maybe...

Singing motor coils add to the experience :)

This is the SP-10R block diagram - the 1200G(AE), 1500C, 1200GR are the same, though the latter two use a magnetic "FG" rather than optical. They're all "PWM" out of the uC. While I own a GAE and 10R, I've not bothered to look at the waveforms coming out of the uC. Maybe someday, but probably not.

The GR2 may be using a sin lookup table in the uC, or at least the block diagram that was in the pitch deck suggested that, as does their boasting of "DS drive". IIRC they showed a spectrum of the drive or speed stability that showed slightly less 2H, which supports that. All at levels that wouldn't matter in the slightest.

Screenshot 2025-04-11 at 12.57.27 PM.png
 
I've not bothered to look at the waveforms coming out of the uC
They're PWM for sure, maybe some low pass filtering is provided in the amp block, before the power stage. That schematic principle is too simplified to completely understand how it works.
I don't even understand the hall sensor presence, maybe for absolute position, or maybe the uC is simply programmed to implement the same exact function of the old ICs in that position, nooo, maybe a sensorless driving scheme is not enough effective in reduce the W&F at acceptable level.
1744633491914.png
 
Can't say that I've seen a modern implementation that uses FOC/sensor-less. Though, Technics did use sensor-less on at least one of their eco series back in the day.
 
I didn't say FOC. Had to go back to find the series - units that used the AN630 drive IC like the SL-1400/1800 (not MK2!) used "BFG" (Back electromotive Force Generator) instead of a dedicated FG or speed sensor. Variable reluctance pickups were used for rotor position.
 
I use Shaknspin and transfer data to Excel for massaging and FFT speed variation.
I used AI CoPilot to help med do a DIN wow and flutter calculation in excel, but it does not match the Shaknspin W&F data. Can someone tell me what they get in DIN if I share the sample CSV file 4000 points rpm at 500hz 8 second?
I will add more info soon
 
Hi, please post your csv in a zipped file here, I can't immediately process it with my script, different sample rate and duration, and is not so versatile at the moment, I can anyway make some measurements.
And for sure, tell me which turntable it belongs!

Cheers,
Luca
 
Hi, please post your csv in a zipped file here, I can't immediately process it with my script, different sample rate and duration, and is not so versatile at the moment, I can anyway make some measurements.
And for sure, tell me which turntable it belongs!

Cheers,
Luca=
This post contains Python script for converting a speed deviation file from Shakenspin to a wav file 3150Hz. Can be used to generate W&F test files


Fisher MT-6330
Time in seconds, % deviation from average rpm..

Quite noisy signal from Shaknspin. attached in ZIP. the resulting DIN according AI generated excel routine= 0.0268%
1753968060288.png

4th order Butterworth filter 10 or 20hz
1753968165165.png



I just managed to do a conversion from Shaknspin data to wav file . and processed the file in multitone, attached script as txt file, Mutitone gives WF DIN 0.037% clos to what Shakspins gves at 0.037, both higher than my excel routine giving 0.0268.. ( had i add 8 second wav 3 times to get long enough file for Multitone)
1753969284347.png
 

Attachments

Last edited:
Quite noisy signal from Shaknspin
Maybe it seems strange but 4000 samples (8sec @ 500Hz) are not enough to benefit of the FFT gain and clearly see all the harmonics of the speed fluctuation.
Below the FFT of yours whole data, turntable seems rotate 10% faster.
I barely see a 73.65Hz peak, theoretically I should have had one at 66.66 due to the 120 poles of the motor, can't give an straightforward explanation to the 27.7.

1753975724892.png


A zoom in the 0/10Hz region, this peak should be at 0.555Hz, lack of resolution? The turntable is spinning faster? I don't know
1753976279622.png


The noise you see is absolutely normal for such a sensor, samples are white noise dominated, this is why we need a lot of them to pull the noise floor as low as possible to see periodic spikes and have sufficient resolution on the freq axis to calculate w&f with acceptable tolerance, just the periodic contribution of course.

Is it possible to go further 8secs of data?

Regards,
Luca
 
Last edited:
Shaknspin is limited to 8seconds, to get the Multitone plot need 24.8 seconds so I pasted 4 x8s together

Skaknspin FFT reporte this, stops at 50 hz. limited resolution
Speed is close to 33.3
1753977375389.png

.
1753977199048.png
 
Last edited:
so I pasted 4 x8s together
I'm not sure you can append one file to another and obtain something usable, each file does not contain an exact multiple of platter revolutions.
At this point I think it will be easier to use a phone gyroscope, there is plenty of apps to log or even expose in a tcp port the data samples in real time!

What can I see is that your data are not enough to dig into the exact magnitude of the first harmonics (first multiples of 0.555Hz @ 33RPM), let alone the highest one that are completely buried below the noise floor.

Last but not least check with the producer if there's a way to update the shakenspin FW, in order to log at least 5 minutes of data.
 
Many Thanks I see,

I had som fun with AI,
Generate speed deviation
# 2) MANUAL WOW/FLUTTER SETTINGS
dev_freqs = [0.5, 1.2, 3.3, 7.7] # wobble/flutter frequencies (Hz)
dev_amps = [1.0, 0.5, 0.2, 0.1] # corresponding deviation depths (percent)
1754028750519.png

1754028786726.png

making a wav file
and checking it with Multitune
1754028842470.png


Seems to be ok?


import numpy as np
import matplotlib.pyplot as plt
from scipy.io.wavfile import write

# 1) PARAMETERS
fs = 48000 # sample rate (Hz)
audio_duration = 30 # total duration (s)
plot_duration = 30 # how many seconds to show in the time plot
base_freq = 3150 # carrier tone (Hz)

# 2) MANUAL WOW/FLUTTER SETTINGS
dev_freqs = [0.5, 1.2, 3.3, 7.7] # wobble/flutter frequencies (Hz)
dev_amps = [1.0, 0.5, 0.2, 0.1] # corresponding deviation depths (percent)

# 3) BUILD TIME BASE
t = np.linspace(0, audio_duration, int(fs * audio_duration), endpoint=False)

# 4) BUILD DEVIATION PROFILE
# Sum each sine at its own amplitude, convert percent→fractional deviation
dev_profile = np.zeros_like(t)
for f, amp_pct in zip(dev_freqs, dev_amps):
dev_profile += (amp_pct / 100) * np.sin(2 * np.pi * f * t)

# 5) SYNTHESIZE MODULATED TONE
inst_freq = base_freq * (1 + dev_profile)
signal = np.sin(2 * np.pi * np.cumsum(inst_freq) / fs)

# 6) PLOT TIME-DOMAIN DEVIATION (first plot_duration s)
samples_plot = int(plot_duration * fs)
t_plot = t[:samples_plot]
dev_plot_pct = dev_profile[:samples_plot] * 100 # back to percent for display

plt.figure(figsize=(10, 3))
plt.plot(t_plot, dev_plot_pct, color='navy', linewidth=1)
plt.xlabel('Time (s)')
plt.ylabel('Deviation (%)')
plt.title(f'Wow & Flutter Deviation (first {plot_duration}s)')
plt.grid(True)
plt.tight_layout()
plt.show()

# 7) COMPUTE & PLOT FFT OF DEVIATION
n = len(dev_profile)
dt = 1 / fs
freqs = np.fft.rfftfreq(n, dt)
Y = np.fft.rfft(dev_profile * 100) # convert to percent before FFT
# scale so a sine of amplitude A shows up as A on the plot
spectrum = np.abs(Y) * 2 / n

plt.figure(figsize=(10, 3))
plt.plot(freqs, spectrum, color='firebrick', linewidth=1.2)
plt.xscale('log')
plt.xlim(0.01, 200)
plt.xlabel('Frequency (Hz)')
plt.ylabel('Amplitude (%)')
plt.title('FFT of Wow/Flutter Deviation')
plt.grid(True, which='both', ls='--')
plt.tight_layout()
plt.show()

# 8) SAVE WAV
write('wow_flutter_custom_30s.wav', fs, np.int16(signal * 32767))
print("Done: plots shown and WAV saved.")
 
This is an android app you can use to capture as many samples as you want, through wifi ie. Probably the samples will be not equally spaced in time but resampling them before calculating the spectrum is not a too complicate task.
Another app is this Sensor Toolbox, can logs directly in a file.

Cheers,
Luca


1754052027173.png
1754052672055.png
 
My old Dual 701 uses a related motor to the Revox I recall. I can't speak for the latter as I only knew them when current, but the EDS1000 Pabst motor in the Dual needs sympathetic recapping now to replace some tired tantalum caps and to increase the main supply cap (it's all in German (at least) Dual sites and discussed a few times on Vinyl Engine).

DSCF0284.JPG


I only relate the above if the motor and some (at least) of the control electronics are the same on the B790 to the 701, the board could well be due a good seeing-to by a competent person to restore performance. The main bearing should be fine unless running hours-long sessions for years on end (the glass? thrust pad on mine is flawless without even a running mark).
 
Last edited:
This is an android app you can use to capture as many samples as you want, through wifi ie. Probably the samples will be not equally spaced in time but resampling them before calculating the spectrum is not a too complicate task.
Another app is this Sensor Toolbox, can logs directly in a file.

Cheers,
Luca


View attachment 466983View attachment 466985
Thanks I am on iPhone so sampling is limited to 60hz..no pro version for IPhone

the PhyPhox app samles 1/100hz
 
Last edited:
P.S. The GL75 is a hugely underrated deck and with arm V Blocks replaced and a good idler wheel, main bearing properly lubed (originals should have grease in them, but I don't know when this stopped as some seemed dry to me on receipt) and motor service and using the original mat (which surprised me), records played on it could sound incredibly 'convincing' I remember. All but silent in mono as the drive was intended to be used, the added noise in stereo wasn't really an issue until compared with 'silent' alternatives, the top level Technics models for example, usually defeating the measuring systems used.
 
replace some tired tantalum caps

In this old thread all the repairing process of my Revox B790.
I think the Revox will benefit (in a w&f pespective) of a minor mod of the circuit, that permits to slightly adjust, after all those years, the driving currents, gain and offset.
Other upgrade I suppose can be to shield the tacho harness, maybe one day I will try to implement both.

Thread 'Revox B790 underdamped speed regulation' https://audiokarma.org/forums/index.php?threads/revox-b790-underdamped-speed-regulation.910432/
 
Last edited:
in relative value the method used is correct...but if the software was relevant (it's a shame that it was abandoned), the results in absolute value are at the mercy of the disk which was provided at the time...it seems disappointing


I often regret that apps with gyro don't offer the same processing but rather via the microphone (and therefore the test disk)... like this old app , would offer the choice
 
Last edited:
Maybe someone can make an “experiment” in PhyPhox app and do 2S variation and FFT in the app. I tried but are too inexperienced to make it work.
Here is 100 samples per second gyroscope data..first belt drive then dd. You can program your own addition to the app and do FFT etc , but I am too much of a novise to manage that. I think others here will manage it.
IMG_8351.png
 
Last edited:
Back
Top Bottom