• WANTED: Happy members who like to discuss audio and other topics related to our interest. Desire to learn and share knowledge of science required. 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!

Fun with vinyl measurements

OP
Balle Clorin

Balle Clorin

Major Contributor
Joined
Dec 26, 2017
Messages
1,389
Likes
1,259
My player Linn Axis runs a bit slow but have not bothered yet to adjust it. Below is a kHz tone with its distortion components. Tonearm is a Moerch UP-4 and a Shure V15Vx cartridge with a JICO SAS boron stylus. Test record below is Elipson.

View attachment 112132

Pink noise on the Elipson seems to reach 17-18 kHz. The stylus has a resonance in the 12-13 khz range. Loading is 130 pF and 47 kOhm, if I remember correctly.
View attachment 112133
The 3150 tone shows 3144,5 Hz, so about 0.17% too slow. Might adjust this some day.
View attachment 112136.
Is thet
My player Linn Axis runs a bit slow but have not bothered yet to adjust it. Below is a kHz tone with its distortion components. Tonearm is a Moerch UP-4 and a Shure V15Vx cartridge with a JICO SAS boron stylus. Test record below is Elipson.

View attachment 112132

Pink noise on the Elipson seems to reach 17-18 kHz. The stylus has a resonance in the 12-13 khz range. Loading is 130 pF and 47 kOhm, if I remember correctly.
View attachment 112133
The 3150 tone shows 3144,5 Hz, so about 0.17% too slow. Might adjust this some day.
View attachment 112136.
I the frequency response measured though your RIAA or with flat/none equalisation?
 

Thomas_A

Major Contributor
Forum Donor
Joined
Jun 20, 2019
Messages
3,504
Likes
2,542
Location
Sweden

Thomas_A

Major Contributor
Forum Donor
Joined
Jun 20, 2019
Messages
3,504
Likes
2,542
Location
Sweden
OP
Balle Clorin

Balle Clorin

Major Contributor
Joined
Dec 26, 2017
Messages
1,389
Likes
1,259
AT-OC9 ML/II
Capture.JPG
 

JP

Major Contributor
Joined
Jul 4, 2018
Messages
2,332
Likes
2,507
Location
Brookfield, CT
My memory is a bit weak but I if I remember correctly you made them for me once upon a time in a thread on rec.audio. Could be wrong but at least you nickname was in that thread. Since then there have been similar software on pinkfishmedia.

Also seen this one:

http://teribil-audio.com/2012/06/software-based-wow-and-flutter-analysis/

This python script @scott wurcer did is a lot easier.

Code:
from scipy import signal
from scipy.io.wavfile import read
import matplotlib.pyplot as plt
import numpy as np

#edit here to add a HOME directory
#HOME = "/home/david/"  #Linux example
HOME = 'C:\Users\faste\Desktop\\' #Windows example
#edit here for 45 rpm samples
Period = 1.8 # 33rpm
#Period = 4/3 # 45 rpm
#end edit

def instfreq(sig,Fs):
    z = signal.hilbert(sig)
    rawfreq = Fs/(2*np.pi)*np.diff(np.unwrap(np.angle(z)))
    rawfreq = np.append(rawfreq,rawfreq[len(rawfreq)-1])    #np.diff drops one end point
    b, a = signal.iirfilter(1,100./(Fs/2), btype='lowpass')
    a = np.convolve(a,a) #make an ordinary 100Hz 4 pole filter.
    a = np.convolve(a,a)
    b = np.convolve(b,b)
    b = np.convolve(b,b)
    instfreq = signal.lfilter(b,a,rawfreq)
    return (instfreq)

_FILE = input('Enter a .wav file (needs to be >=4sec.): ') #file needs to be >= 4 sec. 

y = read(HOME + _FILE)
Fs = float(y[0])
if np.size(y[1][0]) == 2:
    sig = y[1][:,0][0:int(Fs*4)] #Grab 4 sec of a stereo file from the first (left?) channel
else:
    sig = y[1][0:int(Fs*4)] #mono file

t = np.arange(Period,0,-1/Fs)  #Reverse time (theta axis)
theta = t*2*np.pi/Period   #Time becomes degrees (Periodsec = 2pi radians)
theta = np.roll(theta,int(Fs*.45))  #Rotate 90 deg to put 0 on top (Period*Fs/4) 

freq1 = instfreq(sig,Fs)
glitch = 2000   #remove leading glitch from output (probably should depend on Fs)
if1 = freq1[glitch:glitch+int(Fs*Period)]  
if2 = freq1[glitch+int(Fs*Period):glitch+int(2*Fs*Period)]
           
maxf = int(max(max(if1),max(if2))+.5)

r1 = 20.-(maxf-if1)/3.  #20 radial ticks at 3Hz is fixed, adaptive scaling
r2 = 20.-(maxf-if2)/3.  #is an exercise for later


ax = plt.subplot(111, projection='polar')
ax.plot(theta,r1)
ax.plot(theta,r2)
ax.set_rmax(20)
                        #Set up the ticks y is radial x is theta, it turns out x and y
                        #methods work in polar projection but sometimes do funny things

for tick in ax.yaxis.get_major_ticks():
                tick.label.set_fontsize(8)
plt.yticks(np.arange(1,21,1))
ax.set_rlabel_position(90)

myticks = []   
for x in range(0,20,1):
    myticks.append(str(maxf-57+x*3))
ax.set_yticklabels(myticks)

ax.set_xticklabels(['90'+u'\N{DEGREE SIGN}','45'+u'\N{DEGREE SIGN}','0'+u'\N{DEGREE SIGN}',\
                    '315'+u'\N{DEGREE SIGN}','270'+u'\N{DEGREE SIGN}','225'+u'\N{DEGREE SIGN}',\
                    '180'+u'\N{DEGREE SIGN}','135'+u'\N{DEGREE SIGN}'])
ax.grid(True)

ax.set_title("Instantaneous Frequency  "+ _FILE, va='bottom')
plt.show()
 

Thomas_A

Major Contributor
Forum Donor
Joined
Jun 20, 2019
Messages
3,504
Likes
2,542
Location
Sweden
This python script @scott wurcer did is a lot easier.

Code:
from scipy import signal
from scipy.io.wavfile import read
import matplotlib.pyplot as plt
import numpy as np

#edit here to add a HOME directory
#HOME = "/home/david/"  #Linux example
HOME = 'C:\Users\faste\Desktop\\' #Windows example
#edit here for 45 rpm samples
Period = 1.8 # 33rpm
#Period = 4/3 # 45 rpm
#end edit

def instfreq(sig,Fs):
    z = signal.hilbert(sig)
    rawfreq = Fs/(2*np.pi)*np.diff(np.unwrap(np.angle(z)))
    rawfreq = np.append(rawfreq,rawfreq[len(rawfreq)-1])    #np.diff drops one end point
    b, a = signal.iirfilter(1,100./(Fs/2), btype='lowpass')
    a = np.convolve(a,a) #make an ordinary 100Hz 4 pole filter.
    a = np.convolve(a,a)
    b = np.convolve(b,b)
    b = np.convolve(b,b)
    instfreq = signal.lfilter(b,a,rawfreq)
    return (instfreq)

_FILE = input('Enter a .wav file (needs to be >=4sec.): ') #file needs to be >= 4 sec. 

y = read(HOME + _FILE)
Fs = float(y[0])
if np.size(y[1][0]) == 2:
    sig = y[1][:,0][0:int(Fs*4)] #Grab 4 sec of a stereo file from the first (left?) channel
else:
    sig = y[1][0:int(Fs*4)] #mono file

t = np.arange(Period,0,-1/Fs)  #Reverse time (theta axis)
theta = t*2*np.pi/Period   #Time becomes degrees (Periodsec = 2pi radians)
theta = np.roll(theta,int(Fs*.45))  #Rotate 90 deg to put 0 on top (Period*Fs/4) 

freq1 = instfreq(sig,Fs)
glitch = 2000   #remove leading glitch from output (probably should depend on Fs)
if1 = freq1[glitch:glitch+int(Fs*Period)]  
if2 = freq1[glitch+int(Fs*Period):glitch+int(2*Fs*Period)]
           
maxf = int(max(max(if1),max(if2))+.5)

r1 = 20.-(maxf-if1)/3.  #20 radial ticks at 3Hz is fixed, adaptive scaling
r2 = 20.-(maxf-if2)/3.  #is an exercise for later


ax = plt.subplot(111, projection='polar')
ax.plot(theta,r1)
ax.plot(theta,r2)
ax.set_rmax(20)
                        #Set up the ticks y is radial x is theta, it turns out x and y
                        #methods work in polar projection but sometimes do funny things

for tick in ax.yaxis.get_major_ticks():
                tick.label.set_fontsize(8)
plt.yticks(np.arange(1,21,1))
ax.set_rlabel_position(90)

myticks = []   
for x in range(0,20,1):
    myticks.append(str(maxf-57+x*3))
ax.set_yticklabels(myticks)

ax.set_xticklabels(['90'+u'\N{DEGREE SIGN}','45'+u'\N{DEGREE SIGN}','0'+u'\N{DEGREE SIGN}',\
                    '315'+u'\N{DEGREE SIGN}','270'+u'\N{DEGREE SIGN}','225'+u'\N{DEGREE SIGN}',\
                    '180'+u'\N{DEGREE SIGN}','135'+u'\N{DEGREE SIGN}'])
ax.grid(True)

ax.set_title("Instantaneous Frequency  "+ _FILE, va='bottom')
plt.show()

Yes thanks. I think I read about these at DIY audio as well. I am not sure how I get these to work on my mac. I have somethimg called Python launcher but also need to load some libraries. Guess I need to study more.
 

JP

Major Contributor
Joined
Jul 4, 2018
Messages
2,332
Likes
2,507
Location
Brookfield, CT
Install Python: https://www.python.org/downloads/

Use pip from terminal to install Matplotlib, numpy, and scipy.

Save the script to a sometqxtfile.py. I use IDLE to open the file, change the parameters, and F5 to save and run.
 

sergeauckland

Major Contributor
Forum Donor
Joined
Mar 16, 2016
Messages
3,474
Likes
9,220
Location
Suffolk UK
And finally the AT33 on my AEG TRS9000
Better, but still not quite as good as the Shure V15.

No idea what the 20kHz spike is on the EMT and AEG plots.

Interesting also the different amounts of LF rubbish on the three plots.
1613302141852.png
 
Last edited:

solderdude

Grand Contributor
Joined
Jul 21, 2018
Messages
16,159
Likes
36,898
Location
The Neitherlands
One does not want to know the calculated SINAD on those otherwise fine sounding vinyl records.
 

Thomas_A

Major Contributor
Forum Donor
Joined
Jun 20, 2019
Messages
3,504
Likes
2,542
Location
Sweden

sergeauckland

Major Contributor
Forum Donor
Joined
Mar 16, 2016
Messages
3,474
Likes
9,220
Location
Suffolk UK
Here are my W&F results.
GL75
1613327191395.png


EMT948
1613327402164.png


AEG TRS9000
1613327587667.png


No idea what the W&F residual on the LP is.

S.
 

Thomas_A

Major Contributor
Forum Donor
Joined
Jun 20, 2019
Messages
3,504
Likes
2,542
Location
Sweden
Sometimes I wish we could use some standard to relate the numbers to. What is speed stability vs wow & flutter vs long-term drift, weighted and unweighted? I have no idea what the wow and flutter app measures, weighted or unweighted? And what is the precision of the app?

audio_1987-04_linn-data.jpg
 
  • Like
Reactions: VQR
OP
Balle Clorin

Balle Clorin

Major Contributor
Joined
Dec 26, 2017
Messages
1,389
Likes
1,259
My Michell Gyro SE. Here is when I had 0.05% peak in the Iphone app before I messed up the setup (suspension-belt-oil -hange).. Now I am on 0.1% on the app. GRRRR"!! don't fix it if it aint broken...
Capture.JPG



Capture.JPG



''
Notice how the Unweighted (Wrongly labeled DIN unweighted ) value is always higher than the RMS DIN weighted. The RAW deviation suffers from aliasing since WFGUI gives 1 sec data speed data in the log file while the main speed variation is once per 1.8 sec.


On apps: I chatted with Philip Broder that made the W/F wow and flutter for I phone also also the Iphone RPM app. The values given is the maximum deviation from average the W/F app the max for the last 4 revolutions.Thos is not the same as the IEC standard w&f % The DIN norm is quite complicated , but can be found by Google. The WFGUI has correct implementation of the standard.

Using Audacity with the wow&flutter add-in, is quite useful. Especially if you export the data to a wav file and analyze it with RightMark

An now some longer term drift/belt tension adjustments
Capture.JPG
 
Last edited:

abdo123

Master Contributor
Forum Donor
Joined
Nov 15, 2020
Messages
7,449
Likes
7,967
Location
Brussels, Belgium
Technics SL1200-Mk2 + Ortofon 2m blue. (5cm/s)

View attachment 111899

And rpm stability is excellent due to crystal oscillator driven direct motor drive.

Btw is the Ortofon 2M Blue neutral over the entire frequency range? It would be nice if you happen to have any further measurements off that cartridge in particular. It appears to be the best bang for the buck before tip-toeing in snake oil territory.
 

watchnerd

Grand Contributor
Joined
Dec 8, 2016
Messages
12,449
Likes
10,417
Location
Seattle Area, USA
Nice .
How long period is this over? German audion magizine Stereoplay/audio use 20 sec.(longer period are likely too look worse on belt drive with DC motor due to drift....1 15 minute period doss not look as good at 20 sec on mine


Here is my Michell Gyro SE compared with Technics SL-1500 direct drive over 20 sec. same scale. This day the Gyro gave 0.05% peak variation in Phili Broder app.
View attachment 111944

correctly scaled
View attachment 111949


I also measured a Michell Technodec to 0.06% variation the same as I got on a Technics S1200 GR
Both have the same 0.06 % peak variation, bit the Technics is spot on speed. (+0.24%= 33 1/3 on my phone), The Technodec is too fast with the standard PSU, that is why people should get the HR supply for easy speed adjustment.

View attachment 111945
View attachment 111946

View attachment 111947
View attachment 111948

NOTE!! Phone must be placed on record center. I use a record clamp over the spindle to support the phone in center

you screw the clamp down on top of the phone?
 

watchnerd

Grand Contributor
Joined
Dec 8, 2016
Messages
12,449
Likes
10,417
Location
Seattle Area, USA
Nice .
How long period is this over? German audion magizine Stereoplay/audio use 20 sec.(longer period are likely too look worse on belt drive with DC motor due to drift....1 15 minute period doss not look as good at 20 sec on mine


Here is my Michell Gyro SE compared with Technics SL-1500 direct drive over 20 sec. same scale. This day the Gyro gave 0.05% peak variation in Phili Broder app.


correctly scaled
View attachment 111949


Both have the same 0.06 % peak variation, bit the Technics is spot on speed. (+0.24%= 33 1/3 on my phone)

Here's what I got today with my Gyro SE using the WowFlutter app:


wow/flutter: 0.17%
average RPM: 33.35
33 1/3 +.05%

I'm pretty happy with that speed accuracy for a belt drive, but the w&f could be better.

I'll have to contrast with a test where there isn't a phone lying on the top.
 

Attachments

  • IMG_0140.PNG
    IMG_0140.PNG
    267.8 KB · Views: 113
Top Bottom