1from pylab import * 2from scipy.optimize import newton 3import faustmod 4 5tubelist = ("12AX7_68k", "12AX7_250k", 6 "6V6_68k", "6V6_250k", 7 "12AU7_68k", "12AU7_250k", 8 "6DJ8_68k", "6DJ8_250k", 9 "12AT7_68k", "12AT7_250k", 10 ) 11tubetab = dict((j,i) for i,j in enumerate(tubelist)) 12 13def plot_dsp(dsp): 14 #a = 5*sin(arange(0,10*pi,0.1,dtype=float32)) 15 a = zeros(2000,dtype=float32) 16 plot(dsp.compute(a)) 17 show() 18 19def timing(dsp): 20 a = 5*sin(arange(0,10*pi,0.1,dtype=float32)) 21 dsp.compute(a) 22 print dsp.nanosec_per_sample 23 24def Vk0(dsp): 25 a = zeros(50,dtype=float32) 26 def f(v): 27 dsp["Vk0"] = v 28 return dsp.compute(a)[-1] 29 return newton(f, 0, tol=1e-7) 30 31def show_Vk0(dsp): 32 dsp.init(3000) # low sampling rate because of RC time constant 33 for tb, Rk in (("12AX7_68k",2700), ("12AX7_250k",1500), ("12AX7_250k",820), 34 ("6V6_68k",2700), ("6V6_250k",1500), ("6V6_250k",820), ("6V6_68k",820), ("6V6_250k",410), ("6V6_68k",410), 35 ("12AU7_68k",2700), ("12AU7_250k",1500), ("12AU7_250k",820), 36 ("12AT7_68k",2700), ("12AT7_250k",1500), ("12AT7_250k",820), 37 ): 38 dsp["tb"] = tubetab[tb] 39 dsp["Rk"] = Rk 40 print "%-10s / %4g: %f" % (tb, Rk, Vk0(dsp)) 41 print "vplus = 130:" 42 dsp["vplus"] = 130 43 for tb, Rk in (("12AU7_68k",2700), ("12AU7_250k",1500), ("12AU7_250k",820), 44 ("6DJ8_68k",2700), ("6DJ8_250k",1500), ("6DJ8_250k",820), ("6DJ8_68k",820), 45 ): 46 dsp["tb"] = tubetab[tb] 47 dsp["Rk"] = Rk 48 print "%-10s / %4g: %f" % (tb, Rk, Vk0(dsp)) 49 50def display_param(dsp): 51 n = int(amax([len(k) for k in dsp.keys()])) 52 for k in dsp.keys(): 53 print "%-*s: %g" % (n, k, dsp[k]) 54 55if __name__ == "__main__": 56 dsp = faustmod.dsp() 57 display_param(dsp) 58 show_Vk0(dsp) 59 dsp.init(44100) 60 plot_dsp(dsp) 61