Vinyl having better sound imaging?

Discussion in 'Sound Science' started by old tech, Oct 3, 2017.
  1. 71 dB
    Surprise surprise! My script didn't get pinnahertz approval.

    1. You are correct. I thought about this when I wrote it. Making it cyclical complicates things a lot, perhaps beyond my LISP capabilites.

    2. Why is it out of phase? Doesn't it happen in both vertical and lateral directions making it random? Making it out of phase should be an easy fix thou.

    Change the line:

    (setf noisefloorc (mult level_noise (lp (noise 1) 20)))

    To this:

    (setf noisefloorc (mult 0 (lp (noise 1) 20)))

    This makes the in phase part of LF noise zero leaving only out of phase part.

    3. I have transfered maybe 70-100 vinyls on CD and removed a lot of ticks manually (because automated removal can affect the sound too much). The majority of ticks are almost uncorreleted, a thing I don't completely understand, so I made this simplification.

    4. That is true. Good point. I need to investigate this.

    5. Same as the 4. point.

    Thanks for these comments! Looking at the code I have limited the distortion to infrasounds only, don't remember why.

    Try changing the lines:

    (setf distortionc (lowpass4 (mult -1 level_dist lowpassc lowpassc) 20))
    (setf distortions (lowpass4 (mult level_dist lowpasss lowpasss lowpassc) 20))


    To these:

    (setf distortionc (lowpass4 (mult -1 level_dist lowpassc lowpassc) 5000))
    (setf distortions (lowpass4 (mult level_dist lowpasss lowpasss lowpassc) 5000))


    Monophonic test signals do not bring up all nyances of this kind of plugin. Try music too.
     
  2. pinnahertz
    I made suggestions for improvement.
    A large percent of rumble is vertical motion. It's not 100%, and varies with each disc, but it's not ever completely uncorrelated. Bearing induced rumble is more dominantly vertical.

    If you believe that both rumble and surface noise contribute to the imaging changes you're hearing then shouldn't the simulation be as accurate as possible?
    Not completely. When I listen to your simulated surface noise it doesn't sound like it's real for the above reasons.
     
  3. pinnahertz
    No, crosstalk are in phase from LF through some break point, likely about 5kHz where that phase relationship may shift. If HF slips out of phase, that's unimportant to localization past about 2kHz where phase determination becomes ambiguous.
    In phase.
    Not likely except at higher frequencies.
    Random, no. There is an order to it.
     
  4. pinnahertz
    Also, whatever phase shift with frequency there is in vinyl my filter likely comes pretty close to it.
     
  5. bigshot
    If you want to eliminate vertical noise entirely, all you have to do is strap the pins on your cartridge to mono. That will also give you pinpoint imaging!
     
  6. 71 dB
    I appreciate your comments and the time you have invested in this. I am working on these suggestions

    I took a sample of one recording. I filtered the sound to contain only frequencies below 100 Hz and made LR2MS transformation to get L+R and L-R signals. L+R is constand noise, but L-R is modulated by the spinning of the vinyl disc at frequency 33.33/60 Hz = 0.555… Hz. The amplitude of L-R rumble varies between about 0 and +10 dB relative to L+R rumble.

    rumble.jpg

    So, according to this sample, if L+R rumble has constant amplitude 1, L-R rumble should have a variable amplitude oscillating between 1 and 3 at 0.555 Hz frequency.
     
  7. pinnahertz
    You'll find the rumble content is a combination of the turntable and the disc, but that general relationship is about right. Of course I don't see rumble below even 200Hz contributing to any sort of image enhancement.

    One side effect of subsonic rumble when played on full range speakers, in particular two way designs where the crossover breaks fairly high, is doppler pitch shift causing audible flutter in the mid band. This was the reason for subsonic filtering, usually a third-order filter below 20 or 30Hz on several preamps in the last few years before the CD. I know that had nothing to do with imagining, just thought it was an interesting tidbit.
     
  8. 71 dB
    Here is the revised version of the plugin. What I did with the ticks is not elegant, but I just didn't figure out the elegant solution. Maybe you do.

    ;nyquist plug-in
    ;version 2
    ;type process
    ;name "71 dB's vinyl effect 3"
    ;action "Processing..."
    ;info "Vinyl Effect by 71 dB.\nWritten Feb 25, 2015.\nRevisions October 2017 according to comments by pinnahertz."
    ;control cutoffef "Elliptic filter cutoff" int "Hz" 150 150 300
    ;control level_noise "Red noise level" int "dB" -35 -120 -20
    ;control level_black "Black noise level" int "dB" -20 -120 0
    ;control level_dist "Distortion level" int "dB" -20 -40 0

    ;; RIAA pre-emphasis EQ
    (defun riaapre (sig)
    (eq-highshelf (eq-lowshelf sig 160 -20 0.5) 6300 20 0.5))

    ;; RIAA de-emphasis EQ
    (defun riaade (sig)
    (eq-highshelf (eq-lowshelf sig 160 20 0.5) 6300 -20 0.5))


    (setf level_black (db-to-linear level_black))
    (setf level_noise (db-to-linear (+ 0.6 level_noise)))
    (setf level_dist (db-to-linear level_dist))

    (setf left (aref s 0))
    (setf right (aref s 1))
    (setf center (mult 0.5 (sim left right)))
    (setf sideef (hp (mult 0.5 (diff left right)) cutoffef))
    (setf vleft (riaapre (sim center sideef)))
    (setf vright (riaapre (diff center sideef)))

    (setf lowpassc (lp (sim vleft vright) 5000))
    (setf lowpasss (lp (diff vleft vright) 5000))

    (setf distortionc (lowpass4 (mult -1 level_dist lowpassc lowpassc) 5000))
    (setf distortions (lowpass4 (mult level_dist lowpasss lowpasss lowpassc) 5000))

    (setf noisefloorc (mult level_noise (lp (noise 1) 20)))
    (setf noisefloors (mult level_noise (lp (noise 1) 20)))
    (setf noisefloors (mult (sim (hzosc 0.555556) 2) noisefloors))

    (setf blackleft (mult level_black (s-max (sim (noise 1) -0.99995) 0) 20000))
    (setf blackright (mult level_black (s-min (sim (noise 1) 0.99995) 0) 20000))

    (if (arrayp s)
    (vector (abs-env
    (riaade (sim noisefloors noisefloorc blackleft (mult blackright 0.5) vleft distortionc distortions )))
    (abs-env
    (riaade (sim (mult noisefloors -1) noisefloorc blackright (mult blackleft 0.5) vright distortionc (mult distortions -1)))) ))
     

Share This Page