10 REM **** HEADJOINT ACOUSTIC LENGTH - FROM CONES **** 15 REM USE RUN 1000 FOR EFFECTS OF CURVE 20 REM * * * * ALTO FLUTES - NOTES AS WRITTEN * * * 30 NS = 6 40 H = 97: REM MOUTHHOLE HEIGHT, RELATIVE TO DIAMETER THERE * 50 C = 26.3: REM CORK DISTANCE FROM CL OF MOUTHHOLE * 60 REM THE FOLLOWING ARE THE LENGTHS OF THE NS SECTIONS 70 DATA 67.7,1,29.1,29.1,1,65.4 90 DATA 22.5,23.4,23.7,24.9,25.33,25.4,25.4: REM THE DIAMETERS AT THE NS+1 INTERSECTIONS. 95 CLS 100 INPUT "DO YOU RESULTS PRINTED (Y OR N)"; RP$ 105 SCREEN 2: VIEW (194, 12)-(598, 178), , 1: WINDOW (48, 250)-(88, 320) 107 FOR YC = 250 TO 320 STEP 10: LINE (48, YC)-(88, YC), , , &H1111 108 YL = 98 - .3 * YC: LOCATE YL, 20: PRINT YC; : NEXT YC 110 FOR XC = 48 TO 88 STEP 12: LINE (XC, 250)-(XC, 320), , , &H1111: NEXT XC 112 REM LINE (48, 302)-(52, 303): LINE -(56, 300): LINE -(60, 295): LINE -(64, 290) 114 REM LINE -(68, 286.3): LINE -(72, 285.5): LINE -(76, 285.6): LINE -(80, 284) 116 REM LINE -(84, 280): LINE -(88, 275) 126 LOCATE 1, 26: PRINT "MOUTH HEIGHT="; H; " CORK DIST = "; C; "" 128 IF RP$ = "Y" THEN LPRINT "MOUTH HEIGHT="; H; " CORK DIST="; C 130 DIM X(NS + 1): DIM D(NS + 1): DIM R(NS + 1) 140 PI = 3.14159 160 FOR N = 1 TO NS: READ X(N): NEXT N 170 FOR N = 1 TO NS + 1: READ D(N): NEXT N 180 FOR N = 1 TO NS 190 IF D(N + 1) = D(N) THEN R(N) = 1000000!: GOTO 210 200 R(N) = X(N) * D(N) / (D(N + 1) - D(N)) 210 NEXT N 220 IF (RP$ = "Y") OR (RP$ = "y") THEN GOSUB 2000 230 PRINT " N DIAM LENGTH" 235 DB$ = "## ##.# ###.#" 240 FOR N = 1 TO NS + 1 250 PRINT USING DB$; N; D(N); X(N) 260 IF RP$ = "Y" OR RP$ = "y" THEN LPRINT USING DB$; N; D(N); X(N) 265 NEXT N 296 REM FL IS FREQUENCY LEVEL WHERE C4 =48, A4=57. WE STEP 4 UNITS, IE C,E,G#,C ETC. 298 PRINT : PRINT "NOTE FREQ L mm" 300 IF RP$ = "Y" OR RP$ = "y" THEN LPRINT : LPRINT "NOTE FREQ L mm" 310 FOR FL = 48 TO 88 STEP 4 320 F = 12.25 * EXP(FL / 17.3123) 330 K = 2 * PI * F / 349245!: REM DENOMINATOR = VELOCITY OF SOUND, MM/SEC 340 B = TAN(K * C) - 1 / K / H 350 FOR N = 1 TO NS 360 X = ATN(1 / (1 / K / R(N) - B)) / K 370 IF X < 0 THEN X = X + PI / K: GOTO 370 380 X = X + X(N) 390 B = 1 / K / (R(N) + X(N)) - 1 / TAN(K * X) 400 NEXT N 410 L = ATN(-1 / B) / K 420 IF L < 200 THEN L = L + PI / K: GOTO 420 430 IN = INT(FL / 12) 440 P = (FL - 12 * IN) / 4 450 IF P = 0 THEN C$ = "C" 460 IF P = 1 THEN C$ = "E" 470 IF P = 2 THEN C$ = "G#" 475 DA$ = "####.# ###.#" 480 PRINT C$; IN; : PRINT TAB(6); USING DA$; F; L 482 CIRCLE (FL, L), .3 490 IF RP$ = "Y" THEN LPRINT C$; IN; : LPRINT TAB(6); USING DA$; F; L 500 NEXT FL 505 IF RP$ = "Y" THEN LPRINT : LPRINT 510 WHILE INKEY$ = "": WEND 700 END 1000 REM - FORMULA FOR EFFECT OF CURVED SECTION 1010 INPUT "DIAMETER OF TUBE"; TD 1020 INPUT "RADIUS OF CURVATURE, CENTERLINE"; RC 1030 RA = RC / TD * 2 1040 RHO = 1 / 2 / (RA * RA - RA * SQR(RA * RA - 1)) 1045 RHO = SQR(RHO) 1050 PRINT "EFFECTIVE LENGTH OF TUBE="; 3.14159 * RC * RHO 1060 PRINT "EFFECTIVE DIAMETER="; TD / SQR(RHO) 1070 END 2000 INPUT "TITLE"; TI$: LPRINT TI$: LPRINT 2010 LPRINT " N DIAM LENGTH": LPRINT 2020 RETURN