You are on page 1of 2

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 A
PEX": 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
3004
3005
3006
3007
3010
3020
3023
3030
3032
3033
3035
3040
3045
3050
3055
3060
4000

LABEL$ = "C
E
G# C
E
G# C
E
G# C"
LOCATE 26, 9: PRINT LABEL$
FOR I = 190 TO 220 STEP 5
LINE (46, I)-(46.5, I)
NEXT I
LINE (46, 190)-(86, 190): LINE (46, 190)-(46, 230)
FOR FL = 48 TO 84 STEP 4
READ L0(FL)
LINE (FL, 190)-(FL, 190.2)
CIRCLE (FL, L0(FL)), .25
CIRCLE (FL, L(FL)), .15
NEXT FL
FOR I = 220 TO 190 STEP -5
LOCATE (220 - I) * .8 + 1, 1: PRINT I
NEXT I
REM FOLLOWING Data for Drelinger mandrel
DATA 209.7,210.4,210.3,209.2,207.4,205.4,203.9,203.3,202.6,200.7
WHILE INKEY$ = "": WEND

You might also like