DEFINT J:DEFDBL G,K,V-X:DEFSNG A-F,H-I,L-U,Y-Z DEF FNA(B)=.01*INT(.5+B):DEF FNC(D)=.1*INT(.5+D) PRINT"WELCOME TO SPKR.EXE v.1 Copyright (C) 1996 Donald L. Klipstein Fs IS THE DRIVER'S FREE AIR RESONANT FREQ (Min .5 Hz max 1000) Qts IS THAT RESONANCE'S Q WITH THE DRIVER'S TERMINALS SHORTED Min .01 max 25" PRINT" Vas IS THE DRIVER'S COMPLIANCE, AIR VOL. EQUIV. Min .001 C.F. max 10000, max 100000 after multiplying by no. of drivers BOX VOLUME - min .001 max 100000 C.F. PORT FREQ - min 1 Hz max 1000 Hz. USE 1 Hz FOR NO PORT." PRINT" MAX INTL. BOX DEPTH 165' OR .14 WAVE OF PORT FREQ BOX Ht & WIDTH CANNOT BOTH EXCEED 284' OR 1/4 WAVE OF PORT FREQ External box ht. and width must exceed 1.5# hit any key to start" 1 IF INKEY$="" THEN 1 2 CLS:SCREEN 2:GOSUB 4:GOSUB 6:GOSUB 7:GOTO 24 3 PRINT"INVALID DRIVER" 4 INPUT"Fs";FS:INPUT"Qts";QT:INPUT"Vas";UA IF FS<.5 THEN 3 IF FS>1000 THEN 3 IF QT<.01 THEN 3 IF QT>25 THEN 3 IF UA<.001 THEN 3 IF UA>10000 THEN 3 C5=QT/FS:S=FS*QT INPUT"DRIVER DIA, IN.";D3:D32=D3*D3 C0=.00019*UA/D3*S:C4=C5-2*C0 IF C4<=0 THEN PRINT"DRIVER CONE MASS <=0":GOTO 3 UQ=SQR(QT):UU=SQR(UQ):QT2=QT*QT:FS2=FS*FS A4=.000076*D32/SQR(FS*UU)/(SQR(UA)+4.5/D3+.0005*D32*D3) 5 INPUT"HOW MANY DRIVERS";ND:IF ND<.999 THEN 5 ND=INT(.5+ND):UT=UA*ND IF UT>100000 THEN PRINT"TOTAL VAS>100000 c.f. TRY FEWER DRIVERS":GOTO 5 RETURN 6 PRINT" SELECT ENVIRONMENT 1) ON FLOOR, AWAY FROM WALLS 2) 1/4 SPACE - ON FLOOR, AGAINST OR RECESSED INTO A WALL 3) ANECHOIC FULL SPACE 4) STANDARD HALF SPACE - AGAINST OR RECESSED INTO A WALL, NO FLOOR COUPLING 5) Use 5-component Thiel-Small circuit" INPUT JE:RETURN 7 A=UT*QT2:IF QT>.2 THEN 8 PRINT"QB3 METHOD Vb=";FNA(266.7*A);" ft^3 Fb=";FNC(3.536/C5);"Hz 30% OVERSIZE Vb=";FNA(346.7*A);" ft^3 Fb=";FNC(3.89/C5);"Hz" PRINT"60% OVERSIZE Vb=";FNA(426.7*A);" ft^3 Fb=";FNC(3.78/C5);"Hz DOUBLE SIZE Vb=";FNA(533.3*A);" ft^3 Fb=";FNC(3.536/C5);"Hz" GOTO 233 8 IF QT>.383 THEN 9 F=SQR(UU):Q=A*QT/SQR(SQR(UU*F)):PRINT"QB3-B4 METHOD Vb=";FNA(1148.9*Q);" ft^3 Fb=";FNC((5.939*UU-2.196*QT)/C5);"Hz 30% OVERSIZE Vb=";FNA(1493.5*Q);" ft^3 Fb=";FNC(3.5/C5/SQR(F));"Hz" GOTO 232 9 IF QT>1 THEN 23 Q=.1*(QT>.59)*(QT-.59):F=QT2*UU:PRINT"C4 METHOD Vb=";FNA(UT/(.003364+.00007/QT2/QT/F)*(1-4.9*Q));" ft^3 Fb=";FNC(FS*(5.028+.58/F)*(1-Q));"Hz" 22 IF QT>.8 THEN 23 232 PRINT"2X2 METHOD Vb=";FNA(400*A);" ft^3 Fb=";FS;"Hz" 233 PRINT".383 METHOD Vb=";FNA(482*A);" ft^3 Fb=";FNC(3.83/C5);"Hz" 23 INPUT" BOX VOLUME (ft^3)";UB INPUT"PORT FREQ.(Hz)(min 1)(1 Hz for no port)";FB INPUT"BOX Ht, IN.";B5:INPUT"BOX WIDTH, IN.";B6:B56=B5*B6 IF B5<=3409.5 THEN 255 IF B6>3409.5 THEN 25 255 IF B5<=1.5 THEN 25 B23=2.3*(B5-1.47)*(B6-1.47) IF B23>.00201 THEN 26 25 CLS:PRINT"INVALID BOX":GOTO 23 26 IF FB<1 THEN FB=1 IF FB>1000 THEN FB=1000 27 IF UB<.001 THEN UB=.001 IF UB>100000 THEN UB=100000 F8=B23/UB:IF F8<2 THEN UB=.5*B23:F8=2 IF FB>.5*F8 THEN FB=.5*F8 FB2=FB*FB F=F8*(F8-FB):C2=.8/F:C1=FB*C2 RETURN 24 CLS:PRINT"+12 +6 0dB -6 -12 -18" LINE(32,27)-(608,27),,,-7197:LINE(32,75)-(608,75),,,-7197 LINE(32,39)-(608,39),,,-21846:LINE (32,63)-(608,63),,,-21846 LINE(32,51)-(608,51),,,2032:LINE(32,99)-(607,99) FOR J=576 TO 64 STEP -32:LINE(J,4)-(J,122):NEXT J:LINE(608,3)-(32,123),,B YA=3.774E07/FS2/UT 30 H=UB/S/UT:H5=5*H:L=H*FB2 F=15.8501 IF JE=1 THEN 34 IF JE=2 THEN 66 IF JE=3 THEN 78 IF JE=4 THEN 80 ELSE 90 34 SP=1:B2=1.25E7/B56:C3=C0*SQR(ND*1.2+.4):Y=.5*YA 35 SS=2:A1=C5/C3/C3/Y:Y=Y*C5:B1=.70711*B2 36 FOR J=32 TO 608 STEP 8:FF=F*F:Z=(FF+B1)/(FF+B2) C=C3*Z:R=Z*A1:RR=R*R:O=F*C:A=1/O:XX=RR+A*A:T=C*L IF F>F8 THEN D1=H5 ELSE D1=H/(1-FF*C2+F*C1) N=1/T:Q=T*R:B=N/Q:XR=R/XX:K=1+Q*XR:XA=A/XX I=Q*XA:A=A*T:E=(1+N)/A:Q=B*B+E*E:D=(K*B+I*E)/Q:M=A-F*D1 G=(I*B-K*E)/Q-M:V=D*D+G*G:E=(K*D+I*G)/V:W=(I*D-K*G)/V:P=1-M*W:M=M*E I=W+O+P/A+XA+F*C4-S/F:A=E-M/A+XR:Q=A4*F:D=A+1-Q*I:Q=I+Q*A A=(1+RR*O*O)*Z*B*Y*(P*P+M*M)/(D*D+Q*Q) GOSUB 100:LINE-(J,J1):F=F*1.05926:NEXT J 46 LOCATE 7,76:A=7.11/SQR(SQR(Y)):GOSUB 100:PRINT 130-J1-3*(JE<3):LOCATE 17,1 A$=" " A=2.65E-08*L*FB2*UB:E=2.65E-08*FS2*FS:T=QT*SQR(1+UT/UB):Q=A*SP F=SS+Q*SS*SS:IF A*C5*YA>2*F*F THEN A$="TRY A SMALLER BOX OR LOWER PORT FREQUENCY." IF Q>.64 THEN A$="TRY A SMALLER BOX FOR BETTER PORT COUPLING" F=E*UT*SP:IF F>QT THEN A$="TRY FEWER DRIVERS TO FLATTEN THE MIDRANGE." IF T1 THEN A$="TRY A LARGER BOX FOR MORE BASS. " IF T>3 THEN A$="TRY A LARGER BOX OR FEWER DRIVERS. " 89 IF T<.25 THEN A$="TRY A SMALLER BOX FOR FLATTER RESPONSE. " IF E*UA>QT THEN A$="DRIVER REFERENCE EFFICIENCY > 100%." IF D32*ND>B56 THEN A$="DRIVERS WILL NOT FIT IN THE FRONT PANEL" PRINT" 16Hz 20 25 32 40 50 63 80 100 125 160 200 250 315 400 500 630 800 1KHz ";A$ PRINT"1 TO CHANGE PORT FREQ. (";FB;"Hz ) 2 TO CHANGE BOX VOLUME (";UB;"Ft^3 ) " PRINT"3 TO TOTALLY REDO THE BOX (8) Change driver type 4 TO CHANGE NUMBER OF DRIVERS (";ND;")" PRINT"5 REDO EVERYTHING, (6) CHANGE ENVIRONMENT, (7) REPLOT LAST CURVE (X) END" 52 A$=INKEY$:IF A$="" THEN 52 ELSE LINE-(32,123),,,0 IF A$="7" THEN 24 IF A$="1" THEN LOCATE 19,37:INPUT FB:GOSUB 26:GOTO 30 IF A$="2" THEN LOCATE 20,38:INPUT UB:GOSUB 27:GOTO 30 IF A$="3" THEN GOSUB 7:GOTO 24 IF A$="4" THEN GOSUB 5:GOTO 24 IF A$="6" THEN GOSUB 6:GOTO 24 IF A$="8" THEN GOSUB 4:GOTO 24 IF A$="5" THEN 2 IF A$="X" THEN END IF A$="x" THEN END ELSE 52 66 SP=2:C=C0*SQR(ND*1.2+.4):Y=.5*YA 68 SS=1:R=C5/C/C/Y:Y=Y*C5:T=C*L:N=1/T:C3=R*T:B=N/C3:B1=B*B RR=R*R:E1=T*RR:B2=C*(N+N*N):N=B*Y:Z=RR*C*C*N:O=1/C FOR J=32 TO 608 STEP 8:FF=F*F IF F>F8 THEN D1=H5 ELSE D1=H/(1-FF*C2+F*C1) A=O/F:XX=RR+A*A:K=1+E1/XX:XA=A/XX:I=C3*XA:E=F*B2:U=B1+E*E D=(K*B+I*E)/U:Q=A*T:M=Q-F*D1:G=(I*B-K*E)/U-M:V=D*D+G*G:E=(K*D+I*G)/V W=(I*D-K*G)/V:P=1-M*W:M=M*E:I=W+P/Q+XA+F*(C+C4)-S/F:A=E-M/Q+R/XX Q=A4*F:D=A+1-Q*I:A=I+Q*A:A=(N+FF*Z)*(P*P+M*M)/(D*D+A*A) GOSUB 100:LINE-(J,J1):F=F*1.05926:NEXT J:GOTO 46 78 SP=.5:B2=2.5E7/B56:C3=C0*SQR(ND*.6+.4):Y=YA:GOTO 35 80 SP=1:C=C0*SQR(ND*.6+.4):Y=YA:GOTO 68 90 B=S*L/FS2:Y=YA*C5:SP=0:SS=1 FOR J=32 TO 608 STEP 8:U=F*C5:E=1/(L/F-F*H):T=E+U-S/F:E=U-E*B A=E*E/(1+T*T):GOSUB 100:LINE-(J,J1):F=F*1.05926:NEXT J GOTO 46 100 IF A>17.3 THEN J1=1:RETURN ELSE JV=1000*A IF JV>460 THEN 101 ELSE 102 101 IF JV>2900 THEN 103 ELSE 104 102 IF JV>73 THEN 105 ELSE 106 103 IF JV>7290 THEN 107 ELSE 108 104 IF JV>1155 THEN 109 ELSE 110 105 IF JV>183 THEN 111 ELSE 112 106 IF JV>29 THEN 113 ELSE 114 107 IF JV>11600 THEN 115 ELSE 116 108 IF JV>4600 THEN 117 ELSE 118 109 IF JV>1830 THEN 119 ELSE 120 110 IF JV>729 THEN 121 ELSE 122 111 IF JV>290 THEN 123 ELSE 124 112 IF JV>116 THEN 125 ELSE 126 113 IF JV>46 THEN 127 ELSE 128 114 IF JV>18 THEN 129 ELSE 130 115 IF JV>14500 THEN 131 ELSE 132 116 IF JV>9170 THEN 133 ELSE 134 117 IF JV>5790 THEN 135 ELSE 136 118 IF JV>3650 THEN 137 ELSE 138 119 IF JV>2300 THEN 139 ELSE 140 120 IF JV>1454 THEN 141 ELSE 142 121 IF JV>917 THEN 143 ELSE 144 122 IF JV>579 THEN 145 ELSE 146 123 IF JV>365 THEN 147 ELSE 148 124 IF JV>230 THEN 149 ELSE 150 125 IF JV>145 THEN 151 ELSE 152 126 IF JV>92 THEN 153 ELSE 154 127 IF JV>58 THEN 155 ELSE 156 128 IF JV>36 THEN 157 ELSE 158 129 IF JV>23 THEN 159 ELSE 160 130 IF JV>15 THEN 161 ELSE J1=125:RETURN 131 IF JV>16300 THEN J1=2:RETURN ELSE J1=4+(JV>15400):RETURN 132 IF JV>12950 THEN 165 ELSE 166 133 IF JV>10300 THEN 167 ELSE 168 134 IF JV>8180 THEN 169 ELSE 170 135 IF JV>6490 THEN 171 ELSE 172 136 IF JV>5160 THEN 173 ELSE 174 137 IF JV>4100 THEN 175 ELSE 176 138 IF JV>3250 THEN 177 ELSE 178 139 IF JV>2585 THEN 179 ELSE 180 140 IF JV>2050 THEN 181 ELSE 182 141 IF JV>1630 THEN 183 ELSE 184 142 IF JV>1296 THEN 185 ELSE 186 143 IF JV>1029 THEN 187 ELSE 188 144 IF JV>818 THEN 189 ELSE 190 145 IF JV>649 THEN 191 ELSE 192 146 IF JV>516 THEN 193 ELSE 194 147 IF JV>410 THEN 195 ELSE 196 148 IF JV>325 THEN 197 ELSE 198 149 IF JV>258 THEN 199 ELSE 200 150 IF JV>205 THEN 201 ELSE 202 151 IF JV>163 THEN 203 ELSE 204 152 IF JV>130 THEN 205 ELSE 206 153 IF JV>103 THEN 207 ELSE 208 154 IF JV>82 THEN 209 ELSE 210 155 IF JV>65 THEN 211 ELSE 212 156 IF JV>52 THEN 213 ELSE 214 157 IF JV>41 THEN 215 ELSE 216 158 IF JV>32 THEN 217 ELSE 218 159 IF JV>26 THEN 219 ELSE 220 160 IF JV>20 THEN 221 ELSE 222 161 IF JV>16 THEN 223 ELSE 224 165 J1=6+(JV>13700):RETURN 166 J1=8+(JV>12200):RETURN 167 J1=10+(JV>10900):RETURN 168 J1=12+(JV>9720):RETURN 169 J1=14+(JV>8660):RETURN 170 J1=16+(JV>7720):RETURN 171 J1=18+(JV>6880):RETURN 172 J1=20+(JV>6130):RETURN 173 J1=22+(JV>5460):RETURN 174 J1=24+(JV>4870):RETURN 175 J1=26+(JV>4340):RETURN 176 J1=28+(JV>3870):RETURN 177 J1=30+(JV>3450):RETURN 178 J1=32+(JV>3070):RETURN 179 J1=34+(JV>2740):RETURN 180 J1=36+(JV>2440):RETURN 181 J1=38+(JV>2175):RETURN 182 J1=40+(JV>1940):RETURN 183 J1=42+(JV>1730):RETURN 184 J1=44+(JV>1540):RETURN 185 J1=46+(JV>1370):RETURN 186 J1=48+(JV>1223):RETURN 187 J1=50+(JV>1090):RETURN 188 J1=52+(JV>972):RETURN 189 J1=54+(JV>866):RETURN 190 J1=56+(JV>772):RETURN 191 J1=58+(JV>688):RETURN 192 J1=60+(JV>613):RETURN 193 J1=62+(JV>546):RETURN 194 J1=64+(JV>487):RETURN 195 J1=66+(JV>434):RETURN 196 J1=68+(JV>387):RETURN 197 J1=70+(JV>345):RETURN 198 J1=72+(JV>307):RETURN 199 J1=74+(JV>274):RETURN 200 J1=76+(JV>244):RETURN 201 J1=78+(JV>217):RETURN 202 J1=80+(JV>194):RETURN 203 J1=82+(JV>173):RETURN 204 J1=84+(JV>154):RETURN 205 J1=86+(JV>137):RETURN 206 J1=88+(JV>122):RETURN 207 J1=90+(JV>109):RETURN 208 J1=92+(JV>97):RETURN 209 J1=94+(JV>87):RETURN 210 J1=96+(JV>77):RETURN 211 J1=98+(JV>69):RETURN 212 J1=100+(JV>61):RETURN 213 J1=102+(JV>55):RETURN 214 J1=104+(JV>49):RETURN 215 J1=106+(JV>43):RETURN 216 J1=108+(JV>39):RETURN 217 J1=110+(JV>34):RETURN 218 J1=112+(JV>31):RETURN 219 J1=114+(JV>27):RETURN 220 J1=116+(JV>24):RETURN 221 J1=118+(JV>22):RETURN 222 J1=120+(JV>19):RETURN 223 J1=122+(JV>17):RETURN 224 J1=124+(JV>15):RETURN