What would you want to see in a book on electronics for vinyl replay? Douglas Self.

Status
This old topic is closed. If you want to reopen this topic, contact a moderator using the "Report Post" button.
Is it possible to build a program using Python that will run on somebody else's computer WITHOUT requiring that person to download Python libraries or DLLs or other stuff? I think this is called "fully static linking" and the last time I looked into Python, you couldn't do it. The computer that runs a Python program, must first install one or more helper libraries or environments or both. (Back when I investigated). You couldn't build a standalone .exe that would run on other diyAudio member's computers, UNLESS each and every person who ran that program, also downloaded and installed something like a DLL.

(Tcl/TK does offer this capability. I can send you an executable program that will run on your computer immediately. But Tcl/TK is terrible at numerical computation).

Do you really find that an impediment since everything is basically a few click download? You could checkout Welcome to PyInstaller official website which works for some people so I read.

Right now Anaconda Python downloads just about every dependency you could ever want, certainly more than enough for these problems. I don't see this any more of a hassle than having the right version of Javascript enabled.
 
Last edited:
Member
Joined 2011
Paid Member
Yes, unfortunately there exist a number of "ingenious fools" who always manage to screw up even the simplest operations. For these people the correct number of extra clicks is zero. Thanks very much for telling us about PyInstaller, it might just do the trick! It could possibly enable the widespread distribution of a new free app called something like Click Here To Make Error-Free RIAA Networks.

Murphy's Third Law according to Wikipedia:
  • It is impossible to make anything foolproof because fools are so ingenious.
 
If you build an passive 75 uS and then active 3180/318 it is resonably easy to tweek the 3180/318. I haven't checked this calculator against others except to say it comes very close to my hand tweaked one. 25 dB 1kHz gain seems to be very common in good sounding amps of the 1980/90 as stage two. As good a place as any to start.

Active/passive RIAA online calculator | Crazy Audio

If a high grade calibration LP were made I suspect my way of doing this would sweep all the maths away as the only true way. Doubtless this would be equally wrong if assuming all LP's to be RIAA. Some say DMM are 50 uS. If so passive-active is the easier option and might be better in other ways. This disc if it existed would allow us to do the 75 uS using the cartridge inductance. It is not easy, try it yourself. It has advantages if it can be made to work.
 
www.hifisonix.com
Joined 2003
Paid Member
That approach isolates the pole/zero interaction somewhat and makes the design process and optimization easier. However, the tradeoff is noise and or headroom. You have placed the passive 2120 Hz pole in the first stage, followed by a high gain amplifier stage for the lower pole/zero's. If you then decide to raise the first stage gain and reduce the gain of the second stage to improve the noise performance, you lose headroom.

This approach is best suited to tube based designs where you have high supply rails and tens of volts headroom - solves the overload issue, but will never be as quiet as a solid state design.

For solid state designs on realistic supply rails, all-active is the way to go - ~30dB overload at 5mV input.
 
www.hifisonix.com
Joined 2003
Paid Member
Yes, unfortunately there exist a number of "ingenious fools" who always manage to screw up even the simplest operations. For these people the correct number of extra clicks is zero. Thanks very much for telling us about PyInstaller, it might just do the trick! It could possibly enable the widespread distribution of a new free app called something like Click Here To Make Error-Free RIAA Networks.

Murphy's Third Law according to Wikipedia:
  • It is impossible to make anything foolproof because fools are so ingenious.

Why don't you write something and put it up on the web? I'd certainly link to it from my website.
 
Member
Joined 2011
Paid Member
In ten minutes? Do me a favour.
Attached below are the three handwritten sheets in which I derived the equations for the 3 main RIAA time constants (3180usec, 318 usec, 75usec) in less than 8 minutes.

For a sanity check I plugged in the component values from the first two RIAA circuits in SSAD 2nd edition, and found that the "318 usec" timeconstants did not match. So I downloaded a copy of Lipschitz's typewritten manuscript from the web: (title page attached). It may be that the component values in the book were computed from the Lipschitz's first mention of "T4"
590258d1483712024-what-would-you-want-see-book-electronics-vinyl-replay-douglas-self-t4_first_mention.png


rather than the correct formula for the noninverting amplifier topology that he presents afterwards. (My derivation on yellow paper matches this formula)
590259d1483712024-what-would-you-want-see-book-electronics-vinyl-replay-douglas-self-t4_second_mention.png


I installed the yellow-paper equations into an existing numerical optimizer program written in C, and ran it to calculate the optimum component values to match the RIAA timeconstants 3180us, 318us, 75us. They are shown in the tables below. Notice that the TC (time constant) values in the 3rd column are closer to the RIAA ideal than the TC values in the 2nd column.
 

Attachments

  • page1.jpg
    page1.jpg
    240.7 KB · Views: 233
  • page2.jpg
    page2.jpg
    273.4 KB · Views: 225
  • page3.jpg
    page3.jpg
    214.4 KB · Views: 224
  • title_page.png
    title_page.png
    23 KB · Views: 75
  • T4_first_mention.png
    T4_first_mention.png
    13.6 KB · Views: 321
  • T4_second_mention.png
    T4_second_mention.png
    31.5 KB · Views: 349
  • table_8p3.png
    table_8p3.png
    10.5 KB · Views: 74
  • table_8p5.png
    table_8p5.png
    9.8 KB · Views: 72
Member
Joined 2011
Paid Member
For those fiddling around with RIAA software, I offer this teeny factoid that might make your programming a wee bit easier:

RIAA gain at 1.000 kHz is / should be exactly 19.9110 decibels less than the extrapolated gain at DC: (R1+R2+R3)/R3.

If, like Douglas Self, you prefer to compute component values which give precisely XXX decibels of gain at 1 kilohertz, this above factoid immediately becomes what optimization software calls an "equality constraint"
  • (R1+R2+R3)/R3 ==exactly equals== [(XXX decibels) + 19.9110 decibels]
 
Mark Johnson, when you write your "RIAA networks for Dummies" programme, please allow the facility to specify Capacitors and then let the resistors take care of themselves.

When I did dis stuff for a living, this was important cos the sourcing of 1% caps. IIRC, only one of the 4 networks gives good matching with readily available cap values.

That's in addition to getting 1kHz gain and RIAA matching to better than 0.01dB and other trivial stuff of course. :)
 
please allow the facility to specify Capacitors and then let the resistors take care of themselves.

That would be over determined. The four constraints are the LF gain, and the time constants t1, t2, t3.
We need the values of five parts for the RIAA network (three resistors and two capacitors).

You can only choose the value of one capacitor, and then the other capacitor's value is determined,
along with the three resistors. With four equations (the constraints), we must have four unknowns
for a unique solution. Only one of the five parts (either an R or a C) can be specified arbitrarily.
There is no solution when two parts are arbitrarily chosen, then the system is over determined.
 
Last edited:
That would be over determined. The four constraints are the LF gain, and the time constants t1, t2, t3.
We need the values of five parts for the RIAA network (three resistors and two capacitors).

You can only choose the value of one capacitor, and then the other capacitor's value is determined,
along with the three resistors. With four equations (the constraints), we must have four unknowns
for a unique solution. Only one of the five parts (either an R or a C) can be specified arbitrarily.
Thanks Guru Rayma but I know all that.

When dis was important to me, the sourcing of precision caps was difficult & expensive. Only one of the networks allows you to achieve better than 0.1dB match with standard cap values, sensible gain and good noise.

I'm sorry if 0.1dB matching is not good enough for yus Golden Pinnae :eek: I apologise for speaking with forked tongue in #215 when I mentioned 0.01dB matching :)
___________________

Guru Johnson, maybe for your "RIAA networks for Dummies" allow one cap to be specified .. along with gain bla bla ... and let it spew out the other values so cheapos like me can save $0.02 or more :D

Then if we can enter real cheapo values, could it also plot the error? You don't need a full linear circuit analysis module for this as you will have already derived, as a 1st stage, the transfer function for the 4 circuits.
___________________

Could you also include the simple 6dB/8ve IEC 20Hz roll-off and an alternative 12dB/8ve roll-off in the common single OPA topology?

Linsley Hood did this for some of his non-inverting RIAA preamps and I analysed one to do this in Jurassic times. Butterworth 12dB/8ve will do .. at least near 20Hz.

It was the brain strain off doing dis really hard algebra stuff that led me to write my own Linear Circuit Analysis package.

I agree with Doug that its really the checking of the algebra that usually takes more time than dreaming up the eqns. :cool:
 
Last edited:
maybe for your "RIAA networks for Dummies" allow one cap to be specified
along with gain spew out the other values

It's possible to specify the capacitor ratio C1/C2 as the independent parameter,
instead of one of their actual values. This can sometimes allow more convenient,
standard capacitor values. The gain may need to be adjusted somewhat to do this.
 
Last edited:
Member
Joined 2011
Paid Member
You can go a long long way with Excel and free software. Just today I discovered that Perl has a pretty extensive Complex Variables capability, and it's all free. I tried it out on RIAA calcs (Laplace / complex variables) and was pleased with the answers. Besides Perl, Scott W. vigorously recommends Python, which is also free, and which is newer and shinier than Perl.

The great thing about doing it yourself is: it's guaranteed to be done Your Way. Nothing to complain about.
 
Besides Perl, Scott W. vigorously recommends Python, which is also free, and which is newer and shinier than Perl.

The great thing about doing it yourself is: it's guaranteed to be done Your Way. Nothing to complain about.

I always found the Perl syntax hard to get used to. Nothing as bad as Don Lancaster who advocated using Postscript as a primary language so all you needed was a printer.
 
Status
This old topic is closed. If you want to reopen this topic, contact a moderator using the "Report Post" button.