10 REM **** VARICONE.BAS HEADJOINT ACOUSTIC LENGTH - FROM CONES **** USE RUN 1000 TO CALCULATE U-BEND 15 REM - H VARIES WITH FREQUENCY LEVEL 20 NS = 5: REM NO. OF SECTIONS 40 C = 17.7: REM CORK DISTANCE FROM CL OF MOUTHHOLE * 50 REM THE FOLLOWING DATA ARE THE LENGTHS OF THE NS SECTIONS 55 REM DATA ARE FOR DRELINGER MANDREL 60 DATA 21.5,1,47.0,1,80.3 70 REM THE FOLLOWING ARE THE DIAMETERS OF THE NS+1 CROSS SECTIONS 75 DATA 17.37,17.37,18.19,18.19,18.94,18.94 78 CLS 80 INPUT "DO YOU RESULTS PRINTED (Y OR N)"; RP$ 83 PRINT "MOUTH HEIGHT="; H; " CORK DIST="; C 85 IF RP$ = "Y" THEN LPRINT "DRELINGER STRAIGHT HEAD STRTHD2.BAS NOV. 21, 1997" 87 IF RP$ = "Y" THEN LPRINT "MOUTH HEIGHT="; H; " CORK DIST="; C 90 DIM X(NS + 1): DIM D(NS + 1): DIM R(NS + 1): DIM L(84): DIM L0(84) 93 PI = 3.14159 95 POKE 16553, 255 100 FOR N = 1 TO NS: READ X(N): NEXT N 110 FOR N = 1 TO NS + 1: READ D(N): NEXT N 120 FOR N = 1 TO NS 125 IF D(N + 1) = D(N) THEN R(N) = 1000000!: GOTO 140 130 R(N) = X(N) * D(N) / (D(N + 1) - D(N)) 140 NEXT N 145 PRINT " N", "DIAM", "LENGTH", "CONE APEX": PRINT 147 IF RP$ = "Y" THEN LPRINT CHR$(30); : LPRINT " N", "DIAM", "LENGTHS", "CONE APEX": LPRINT 150 FOR N = 1 TO NS + 1 160 PRINT N, D(N), X(N), R(N) 161 L = L + X(N) 162 IF RP$ = "Y" THEN LPRINT N, D(N), X(N), R(N) 170 NEXT N 175 PRINT " L="; L: L = 0 180 LINE$ = "####.# ##.# ###.#" 200 REM FL IS FREQUENCY LEVEL WHERE C4 =48, A4=57 205 PRINT : PRINT "NOTE FREQ MOUTH HOLE h LENGTH, MM" 206 IF RP$ = "Y" THEN LPRINT : LPRINT "NOTE FREQ MOUTH HOLE h LENGTH, MM" 210 FOR FL = 48 TO 84 STEP 4 215 H = 11.38 + .893 * FL - .004 * FL ^ 2: REM VARIES H WITHNOTE PLAYED AS LIPS GO FORWARD 220 F = 16.352 * EXP(FL / 17.3123) 230 K = F / 55386!: REM * ASSUME VELOCITY OF SOUND =348,000 MM/SEC 300 B = TAN(K * C) - 1 / K / H 310 FOR N = 1 TO NS 320 X = ATN(1 / (1 / K / R(N) - B)) / K 324 IF X < 0 THEN X = X + PI / K: GOTO 324 330 X = X + X(N) 340 B = 1 / K / (R(N) + X(N)) - 1 / TAN(K * X) 350 NEXT N 360 L = ATN(-1 / B) / K 365 IF L < 160 THEN L = L + PI / K: GOTO 365 367 L(FL) = L 370 IN = INT(FL / 12) 380 P = (FL - 12 * IN) / 4 390 IF P = 0 THEN C$ = "C" 391 IF P = 1 THEN C$ = "E" 392 IF P = 2 THEN C$ = "G#" 400 PRINT C$; : PRINT TAB(10); USING LINE$; F; H; L 402 IF RP$ = "Y" THEN LPRINT C$; : LPRINT TAB(10); USING LINE$; F; H; L 410 NEXT FL 415 IF RP$ = "Y" THEN LPRINT CHR$(12) 420 WHILE INKEY$ = "": WEND 700 GOTO 3000 2000 REM - FORMULA FOR EFFECTIVE CORK DISTANCE 2010 INPUT "DIAM AT MOUTH HOLE, DIAM AT CORK "; DH, DC 2020 INPUT " ACTUAL CORK DISTANCE"; CD 2030 DD = DC / DH 2040 CN = CD * (1 + DD + DD * DD) / 3 2050 PRINT "EFFECTIVE CORK DISTANCE FOR CONICAL FRUSTRUM ="; CN 2060 END 3000 SCREEN 12: VIEW (47, 7)-(446, 390): WINDOW (46, 190)-(86, 220) 3002 LABEL$ = "C E G# C E G# C E G# C" 3004 LOCATE 26, 9: PRINT LABEL$ 3005 FOR I = 190 TO 220 STEP 5 3006 LINE (46, I)-(46.5, I) 3007 NEXT I 3010 LINE (46, 190)-(86, 190): LINE (46, 190)-(46, 230) 3020 FOR FL = 48 TO 84 STEP 4 3023 READ L0(FL) 3030 LINE (FL, 190)-(FL, 190.2) 3032 CIRCLE (FL, L0(FL)), .25 3033 CIRCLE (FL, L(FL)), .15 3035 NEXT FL 3040 FOR I = 220 TO 190 STEP -5 3045 LOCATE (220 - I) * .8 + 1, 1: PRINT I 3050 NEXT I 3055 REM FOLLOWING Data for Drelinger mandrel 3060 DATA 209.7,210.4,210.3,209.2,207.4,205.4,203.9,203.3,202.6,200.7 4000 WHILE INKEY$ = "": WEND