10 CLEAR 20 TAG = 0 30 CLS 40 PRINT " The data generated by the acoustical specifications segment automatically copy to the other sections, unless the Erase Data option is answered Yes" 50 PRINT 60 IF TAG = 1 THEN PRINT " Erase existing data? (Y/N)" ELSE 100 70 X$ = INPUT$(1): IF X$ = "Y" THEN CLEAR ELSE IF X$ = "y" THEN CLEAR 80 IF F1 = 0 THEN CLS : PRINT " All data cleared." 90 IF F1 > 1 THEN CLS : PRINT " Data not cleared." 100 PRINT 110 PRINT 120 PRINT "A An acoustical room analyzer, with a table of materials and their characteristics to calculate levels, intelligibility, and so forth." 130 PRINT 140 PRINT "B An interactive six wall absorption calculator, useful for juggling wall specifications for room design or modification. Input and output are in real Sabins only." 150 PRINT 160 PRINT "C An eigenmodes section to calculate modes frequencies and groupings, which will determine if a room has primary dimension problems as well as offering possible solutions for modes problems." 170 PRINT 180 PRINT "D A monitor system design program, with a menu of typical speakers to determine amplifier and loudspeaker specifications." 190 PRINT 200 PRINT " Indicate your choice of sections by letter." 210 PRINT 220 PRINT " TO EXIT ENTIRE PROGRAM TYPE E." 230 X$ = INPUT$(1): IF X$ = "A" THEN 260 ELSE IF X$ = "a" THEN 260 ELSE IF X$ = "B" THEN 4100 ELSE IF X$ = "b" THEN 4100 240 IF X$ = "C" THEN 3340 ELSE IF X$ = "c" THEN 3340 250 IF X$ = "D" THEN 5250 ELSE IF X$ = "d" THEN 5250 ELSE IF X$ = "E" THEN SYSTEM ELSE IF X$ = "e" THEN SYSTEM ELSE 30 260 PRINT 270 CLS 280 CLS 290 IF TAG = 1 THEN 480 ELSE 300 300 PRINT 310 INPUT ; " Enter depth: Feet ", F1: INPUT ; " Inches: ", INCH1: F1 = (INCH1 / 12) + F1: PRINT " Decimal feet,"; (F1) 320 IF F1 < 5 THEN 310 ELSE 330 330 PRINT : TAG = 1 340 INPUT ; " Enter width: Feet ", F2: INPUT ; " Inches: ", INCH2: F2 = (INCH2 / 12) + F2: PRINT " Decimal feet,"; (F2) 350 IF F2 < 5 THEN 340 ELSE 360 360 PRINT 370 INPUT ; " Enter height: Feet ", C1: INPUT ; " Inches: ", INCH3: C1 = (INCH3 / 12) + C1: PRINT " Decimal feet,"; (C1) 380 IF C1 < 5 THEN 370 ELSE 390 390 PRINT 400 PRINT " Room volume equals"; INT(F1 * F2 * C1); "Cubic feet." 410 PRINT 420 PRINT " Room surface area equals"; INT(2 * (F1 * F2) + 2 * (F1 * C1) + 2 * (F2 * C1)); "Square feet." 430 SPL2 = SPL - SE 440 VOL = F1 * F2 * C1 450 SURF = 2 * (F1 * F2) + 2 * (F1 * C1) + 2 * (F2 * C1) 460 MAXSS = (SURF * .99) - 1: MAXAN = -LOG(1 - (MAXSS / SURF)): MINRT = (.049 * VOL) / (MAXAN * SURF) 470 PRINT : SABRINPUT = 0: RT = 0: VOXDC = 0 480 PRINT " Specify the room's Sabin content as A: RT-60. B: Sabins present in the room." 490 PRINT " C: Human voice Dc in feet. D: Room surfaces in Sabins Sq/ft." 500 PRINT " E: Transmission loss figures for room design." 510 X$ = INPUT$(1): IF X$ = "A" THEN 540 ELSE IF X$ = "a" THEN 540 ELSE IF X$ = "B" THEN 590 ELSE IF X$ = "b" THEN 590 ELSE IF X$ = "C" THEN 1760 ELSE IF X$ = "c" THEN 1760 520 IF X$ = "D" THEN 610 ELSE IF X$ = "d" THEN 610 ELSE IF X$ = "E" THEN GOSUB 1310 ELSE IF X$ = "e" THEN GOSUB 1310 530 PRINT " The program requires SOMETHING for sabin input. Try again.": GOTO 470 540 PRINT : INPUT " Enter the RT-60 in seconds. ", RT 550 IF RT = 0 THEN 470 560 IF RT > MINRT THEN 580 ELSE PRINT " Minimum RT-60 for this room is"; MINRT; "seconds." 570 PRINT " Maximum real Sabins for program will be"; MAXSS; ".": GOTO 470 580 IF RT > 30 THEN PRINT " Irrational time. Try again.": GOTO 460 ELSE 1860 590 INPUT " Please enter calculated Sabins. ", SABRINPUT 600 IF SABRINPUT > 0 THEN 780 ELSE 590 610 PRINT " Calculate room Sabins on-line (Y) or return to main menu? (N)" 620 X$ = INPUT$(1): IF X$ = "Y" THEN 630 ELSE IF X$ = "y" THEN 630 ELSE IF X$ = "N" THEN 60 ELSE IF X$ = "n" THEN 60 630 DWL = F1 * C1: DWR = F1 * C1: BW = F2 * C1: FW = F2 * C1: CLG = F1 * F2: FLR = F1 * F2 640 PRINT " Do you wish to consult the internal Materials/Sabins tables? (Y/N)" 650 X$ = INPUT$(1): IF X$ = "Y" THEN GOSUB 810 ELSE IF X$ = "y" THEN GOSUB 810 ELSE IF X$ = "N" THEN 660 ELSE IF X$ = "n" THEN 660 660 INPUT " Enter Sabins/Ft for Left Deep Wall ", DWLA: DWLS = DWL * DWLA: PRINT , DWL; "FEET", DWLS; "Sabins Tables? (Y/N)" 670 X$ = INPUT$(1): IF X$ = "y" THEN GOSUB 810 ELSE IF X$ = "Y" THEN GOSUB 810 680 INPUT " Enter Sabins/Ft for Right Deep Wall ", DWRA: DWRS = DWR * DWRA: PRINT , DWR; "FEET", DWRS; "Sabins Tables? (Y/N)" 690 X$ = INPUT$(1): IF X$ = "y" THEN GOSUB 810 ELSE IF X$ = "Y" THEN GOSUB 810 700 INPUT " Enter Sabins/Ft for Back Wall ", BWA: BWS = BW * BWA: PRINT , BW; "FEET", BWS; "Sabins Tables? (Y/N)" 710 X$ = INPUT$(1): IF X$ = "y" THEN GOSUB 810 ELSE IF X$ = "Y" THEN GOSUB 810 720 INPUT " Enter Sabins/Ft for Front Wall ", FWA: FWS = FW * FWA: PRINT , FW; "FEET", FWS; "Sabins Tables? (Y/N)" 730 X$ = INPUT$(1): IF X$ = "y" THEN GOSUB 810 ELSE IF X$ = "Y" THEN GOSUB 810 740 INPUT " Enter Sabins/Ft for Floor ", FLRA: FLRS = FLR * FLRA: PRINT , FLR; "FEET", FLRS; "Sabins Tables? (Y/N)" 750 X$ = INPUT$(1): IF X$ = "y" THEN GOSUB 810 ELSE IF X$ = "Y" THEN GOSUB 810 760 INPUT " Enter Sabins/Ft for Ceiling ", CLGA: CLGS = CLG * CLGA: PRINT , CLG; "FEET", CLGS; "Sabins" 770 SABRINPUT = DWLS + DWRS + BWS + FWS + FLRS + CLGS 780 PRINT " Total room Sabins are "; SABRINPUT 790 PRINT " Redo? (Y/N)" 800 X$ = INPUT$(1): IF X$ = "Y" THEN 470 ELSE IF X$ = "y" THEN 470 ELSE 1750 810 CLS 820 PRINT "MATERIAL ABSORPTION, SABINS/SQ. FT. 125 250 500 1K 2K 4K " 830 PRINT "ACOUSTIC TILE, GLUED ON 0.2 0.35 0.6 0.70 0.80 0.75" 840 PRINT "ACOUSTIC TILE, SUSPENDED 0.4 0.5 0.65 0.70 0.80 0.75" 850 PRINT "BRICK, UNGLAZED 0.03 0.03 0.03 0.04 0.05 0.07" 860 PRINT "BRICK, UNGLAZED, PAINTED 0.01 0.01 0.02 0.02 0.02 0.03" 870 PRINT "CARPET, 1/8 INCH NO PAD 0.05 0.05 0.10 0.20 0.30 0.40" 880 PRINT "CARPET, 1/4 INCH, NO PAD 0.05 0.10 0.15 0.30 0.50 0.55" 890 PRINT "CARPET, 5/16 COMBINED PILE & FOAM 0.05 0.15 0.30 0.40 0.50 0.60" 900 PRINT "CINDER BLOCK, UNPAINTED 0.36 0.44 0.31 0.29 0.29 0.25" 910 PRINT "CINDER BLOCK, PAINTED 0.10 0.05 0.06 0.07 0.09 0.08" 920 PRINT "CONCRETE/STONE 0.01 0.01 0.01 0.02 0.02 0.02" 930 PRINT "FIBERGLAS, UNFACED, 3 1/2 IN ON WALL 0.34 0.85 1.09 0.97 0.97 1.12" 940 PRINT "FIBERGLAS, UNFACED, 6 1/4 IN ON WALL 0.64 1.14 1.09 0.99 1.00 1.21" 950 PRINT "FIBERGLAS, PAPER OUT, 6 1/4 ON WALL 0.94 1.33 1.02 0.71 0.56 0.39" 960 PRINT "FIBERGLAS, UNFACED, 12 IN ON WALL 1.14 1.09 1.09 0.99 1.00 1.21" 970 PRINT "FIBERGLAS 703 BOARD, 2 IN ON WALL 0.17 0.86 1.14 1.07 1.02 0.98" 980 PRINT "FIBERGLAS 703 BOARD, 3 IN ON WALL 0.53 1.19 1.21 1.08 1.01 1.04" 990 PRINT "FIBERGLAS 703 BOARD, 6 IN ON WALL 1.19 1.21 1.13 1.05 1.04 1.04" 1000 PRINT "FIBERGLAS GRID CEILING, 1 1/2 INCH 0.97 1.00 0.86 1.01 1.04 1.06" 1010 PRINT "GLASS, 1/8 INCH 0.35 0.25 0.18 0.12 0.07 0.04" 1020 PRINT "GLASS, 1/4 INCH 0.10 0.06 0.04 0.03 0.02 0.02" 1030 PRINT "GYPSUM BOARD, 1/2 INCH 0.29 0.10 0.05 0.04 0.07 0.04" 1040 PRINT "MORE? (Y/N)" 1050 X$ = INPUT$(1): IF X$ = "Y" THEN 1060 ELSE IF X$ = "y" THEN 1060 ELSE RETURN 1060 PRINT "LINOLEUM, ASPHALT FLOOR TILE, ETC. 0.02 0.03 0.03 0.03 0.03 0.02" 1070 PRINT "MARBLE/GLAZED TILE 0.01 0.01 0.01 0.01 0.02 0.02" 1080 PRINT "PEOPLE IN UPHOLSTERED SEATS, EACH 2.5 3.5 4.0 4.5 5.0 4.5" 1090 PRINT "PEOPLE IN PADDED SEATS 4.0 5.0 5.5 6.5 7.0 7.0" 1100 PRINT "PLASTER OVER MASONRY 0.013 0.015 0.02 0.03 0.04 0.05" 1110 PRINT "PLASTER ON LATHING 0.02 0.02 0.03 0.04 0.04 0.03" 1120 PRINT "HEAVILY UPHOLSTERED SEATS, EACH 3.5 4.5 5.0 5.5 5.5 4.5" 1130 PRINT "SONEX, 2 INCH 0.08 0.25 0.61 0.92 0.95 0.92" 1140 PRINT "SONEX, 3 INCH 0.14 0.43 0.98 1.03 1.00 1.00" 1150 PRINT "SONEX, 4 INCH 0.20 0.70 1.06 1.01 1.01 1.00" 1160 PRINT "TECTUM GRID CEILING, 1 INCH 0.40 0.42 0.35 0.48 0.60 0.93" 1170 PRINT "ABOVE WITH 6 INCH FIBERGLAS OVERLAY 1.01 0.89 1.06 0.97 0.93 1.13" 1180 PRINT "TECTUM ON WALL, 1 INCH 0.06 0.13 0.24 0.45 0.82 0.64" 1190 PRINT "TECTUM ON WALL, 2 INCH 0.15 0.26 0.62 0.94 0.64 0.92" 1200 PRINT "TECTUM 32 x 3 INCH BLOCKS PER UNIT 0.45 0.71 1.87 2.94 2.90 2.91" 1210 PRINT "VELOUR, LIGHT, HUNG STRAIGHT ON WALL 0.03 0.04 0.11 0.17 0.24 0.35" 1220 PRINT "VELOUR, MEDIUM, DRAPED TO HALF AREA 0.07 0.31 0.49 0.75 0.70 0.60" 1230 PRINT "VELOUR, HEAVY, AS ABOVE 0.14 0.35 0.56 0.72 0.70 0.65" 1240 PRINT "WATER, SURFACE 0.008 0.008 0.013 0.015 0.02 0.025" 1250 PRINT "WOOD FLOORING 0.15 0.11 0.10 0.07 0.06 0.07" 1260 PRINT "WOOD PARQUET IN ASPHALT ON CONCRETE 0.04 0.04 0.07 0.06 0.06 0.07" 1270 PRINT "WOOD PANELING OVER 2-4 INCH AIR SPACE 0.30 0.25 0.20 0.17 0.15 0.10" 1280 PRINT "LIST ENDS. RETURN TO TOP? (T) OR TO PROGRAM? (ANYTHING)" 1290 X$ = INPUT$(1): IF X$ = "T" THEN 820 ELSE IF X$ = "t" THEN 820 ELSE 1300 1300 RETURN 1310 CLS 1320 PRINT 1330 PRINT "COPY WANTED FIGURES TO PAPER! THEY ARE NOT ENTERED INTO THE ROOM DATA." 1340 PRINT 1350 PRINT "SOUND TRANSMISSION LOSS IN Db SPL. 125 250 500 1K 2K 4K" 1360 PRINT "BRICKWORK, PLASTERED 4 3/8 INCH 31 36 41 50 55 61" 1370 PRINT "BRICKWORK, PLASTERED 8 3/4 INCH 41 45 50 56 63 62" 1380 PRINT "CONCRETE BLOCK, LIGHT, 12 INCH 38 44 49 54 58 62" 1390 PRINT "REINFORCED CONCRETE, 4 INCH 38 44 49 54 58 62" 1400 PRINT "GLASS, SINGLE STRENGTH, 3/32 INCH 13 14 21 26 32 30" 1410 PRINT "GLASS, DOUBLE STRENGTH, 1/8 INCH 14 17 23 28 33 32" 1420 PRINT "GLASS, PLATE, 1/4 INCH 21 24 27 31 25 32" 1430 PRINT "GLASS, LAMINATED PLATE, 1/4 INCH 30 28 31 35 36 41" 1440 PRINT "GLASS, PLATE, 1/2 INCH 20 28 31 27 36 44" 1450 PRINT "GLASS, LAMINATED PLATE, 1/2 INCH 31 33 36 35 40 49" 1460 PRINT "GLASS, 1/4 & 1/4 INCH, 6 INCH SPACE 31 37 43 48 44 56" 1470 PRINT "GLASS, 1/2 & 1/4 INCH, 6 INCH SPACE 32 38 39 38 38 54" 1480 PRINT "GLASS, 1/4 & 1/4 INCH, 8 INCH SPACE 40 42 49 56 43 59" 1490 PRINT "GYPSUM BOARD, 1/2 INCH 17 20 23 23 23 24" 1500 PRINT "GYPSUM BOARD, 5/8 INCH 19 22 25 28 22 31" 1510 PRINT "PLYWOOD, 3/4 INCH 19 23 27 25 22 30" 1520 PRINT "PLASTER AND LATH CEILING 22 27 31 36 34 42" 1530 PRINT 1540 PRINT "COMPOUND CONSTRUCTION WALLS? (Y/N)" 1550 X$ = INPUT$(1) 1560 IF X$ = "y" THEN 1570 ELSE IF X$ = "Y" THEN 1570 ELSE RETURN 1570 CLS 1580 PRINT "WALL CONSTRUCTION FIGURES 125 250 500 1K 2K 4K" 1590 PRINT "2x4x16 O.C. WOOD STUDS, 1/2 INCH WALLBOARD EACH SIDE 15 27 42 47 47 40" 1600 PRINT "AS ABOVE WITH FIBERGLAS FILLING 15 31 40 46 50 42" 1610 PRINT "AS ABOVE WITH DOUBLE 1/2 INCH WALLBOARD EACH SIDE 21 37 45 50 55 51" 1620 PRINT "2x4x16 O.C. WOOD DOUBLE STUDS, 1/2 INCH EACH SIDE 30 41 45 50 55 49" 1630 PRINT "AS ABOVE WITH FIBERGLAS FILLING 32 48 57 63 64 61" 1640 PRINT "AS ABOVE WITH DOUBLE 1/2 INCH WALLBOARD EACH SIDE 36 48 59 64 66 63" 1650 PRINT "2.5x24 O.C. METAL STUDS, 1/2 INCH BOARD EACH SIDE 17 24 36 45 45 41" 1660 PRINT "AS ABOVE WITH FIBERGLAS FILLING 22 38 51 57 47 44" 1670 PRINT "AS ABOVE WITH DOUBLE 1/2 INCH WALLBOARD EACH SIDE 36 49 60 62 64 55" 1680 PRINT "3.3x24 O.C. METAL STUDS, 1/2 INCH BOARD EACH SIDE 25 28 42 49 50 40" 1690 PRINT "AS ABOVE WITH FIBERGLAS FILLING 28 39 52 56 58 46" 1700 PRINT "AS ABOVE WITH DOUBLE 1/2 INCH WALLBOARD EACH SIDE 39 46 55 61 63 55" 1710 PRINT "IF ALL ELSE FAILS, THE MASS LAW FOR RIGID MATERIAL IS: 20x 10 LOG(HZxKg/M2)-47" 1720 PRINT "LOSS IN Db SPL EQUALS 20 TIMES THE 10 LOG OF FREQUENCY IN HZ TIMES MASS IN" 1730 PRINT "KILOGRAMS PER SQUARE METER, MINUS 47 Db. IF IN LB/SQ FT, MULTIPLY BY 4.89" 1740 GOTO 480 1750 IF SABRINPUT > MAXSS THEN 1810 ELSE 1800 1760 PRINT : INPUT " Enter the human voice Dc. ", VOXDC 1770 IF VOXDC > 1 THEN 1780 ELSE 470 1780 RT = (2.43516E-03 * VOL) / (VOXDC ^ 2): SABRINPUT = (.049 * VOL) / RT 1790 IF SABRINPUT > MAXSS THEN 1810 ELSE IF VOXDC > 1 THEN 1800 ELSE SABRINPUT = 0: GOTO 470 1800 PRINT : GOTO 1830 1810 PRINT : PRINT " Too many Sabins for the program. Maximum is 99.3% of surface.("; MAXSS; ")" 1820 PRINT : GOTO 470 1830 IF SABRINPUT < 100 THEN 1970 1840 IF RT > 0 THEN 1860 ELSE PRINT 1850 IF RT = 0 THEN AS1 = SABRINPUT / SURF: AN = LOG(1 - AS1) * -1: SSABR = AS1 * SURF: SABR = AN * SURF: RT = .049 * VOL / SABR: GOTO 1870 1860 AN = (.049 * VOL) / (SURF * RT) 1870 CALC1 = AN / 10 1880 IF AN - CALC2 >= .1 THEN CALC1 = CALC1 + .01 ELSE IF AN - CALC2 >= .01 THEN CALC1 = CALC1 + .001 ELSE IF AN - CALC2 >= .001 THEN CALC1 = CALC1 + .0001 ELSE CALC1 = CALC1 + .00001 1890 CALC2 = LOG(1 - CALC1) * -1 1900 IF CALC2 > AN THEN 1910 ELSE 1880: PRINT (AN + CALC2) 1910 SSABR = CALC1 * SURF 1920 SABR = INT(AN * SURF) 1930 IF SABRINPUT > 100 THEN 1940 ELSE 1950 1940 PRINT " Room time for"; SABRINPUT; "Sabins is"; RT; "seconds." 1950 PRINT 1960 PRINT " Norris-Eyring Sabins for"; RT; "seconds is"; SABR; "Sabins." 1970 PRINT 1980 PRINT " Standard Sabins for "; RT; "seconds is"; INT(SSABR); "Sabins." 1990 PRINT 2000 IF TAG = 1 THEN 2010 ELSE RETURN 2010 PRINT " RT-60 for recording purposes? (Y/N)" 2020 X$ = INPUT$(1): IF X$ = "Y" THEN 2030 ELSE IF X$ = "y" THEN 2030 ELSE 2600 2030 PRINT 2040 PRINT " This section outputs NE-RT-60 and standard Sabins for 26 Db of acoustic attenuation at 20 feet for a source Q of 2.5 It will yield a REAL (Norris-Eyring) voice Dc of about 11.5 feet using those inputs." 2050 PRINT " This is a MINIMUM figure for a room useful for live recording work." 2060 IF ST > 0 THEN 2080 ELSE 2070 2070 PRINT " For other values, type D." 2080 IF ST > 0 THEN Q = Q ELSE Q = 2.5 2090 DX = 20: ISO = 20 2100 X$ = INPUT$(1): IF X$ = "D" THEN 2110 ELSE IF X$ = "d" THEN 2110 ELSE 2150 2110 PRINT 2120 PRINT " Enter instrument Q, desired Dx, and desired isolation." 2130 PRINT 2140 INPUT ; " Q? ", Q: INPUT ; " Distance? ", DX: INPUT ; " Isolation ", ISO 2150 PRINT 2160 ISORT = 2 2170 IF ISOLATION < ISO - 3 THEN ISORT = ISORT * .6 ELSE IF ISOLATION < ISO - 1 THEN ISORT = ISORT * .9 ELSE ISORT = ISORT * .99 2180 A2 = (.049 * VOL) / (SURF * ISORT) 2190 IF A2 >= 1 THEN 2260 ELSE 2200 2200 SABR2 = A2 * SURF 2210 A3 = LOG(1 - A2) 2220 SABR3 = (A3 * SURF) * -1 2230 ATTT = (LOG((4 / SABR3) + (Q / 12.566))) * -4.34295 2240 ATT = (LOG((4 / SABR3) + (Q / (12.566 * DX ^ 2)))) * -4.34295 2250 ISOLATION = (ATT - ATTT): PRINT " *"; 2260 IF ISOLATION < ISO THEN 2170 ELSE 2270 2270 CLS 2280 PRINT 2290 PRINT " Standard Sabin total="; CINT(SABR2); "Sabins;"; A2; "Sabins/Sq Ft." 2300 PRINT 2310 IF SSABR < SABR2 THEN PRINT " "; CINT((SABR2) - (SSABR)); "Sabins more than original"; INT(SSABR); "Sabins." 2320 IF SSABR > SABR2 THEN PRINT " "; CINT((SSABR) - (SABR2)); "Sabins less than original"; INT(SSABR); "Sabins." 2330 PRINT 2340 PRINT " With a tile/linoleum floor,"; SABR2 / (SURF - (F1 * F2 * .95)); "Sabins/Sq Ft." 2350 SABR2 = SABR2 - (F1 * F2 * .03) 2360 PRINT 2370 CEILING = F1 * F2 2380 CEILING2 = F1 * F2 * 2 2390 IF CEILING > SABR2 THEN PRINT " THE CEILING AREA ABSORBS MORE THAN THE MINIMUM REQUIRED.": PRINT 2400 RUG = F1 * F2 * .55 2410 PRINT " Normal ceiling absorption,"; CINT(CEILING); "Sabins; Walls will be"; (SABR2 - CEILING) / (SURF - CEILING2); "Sabins/Ft." 2420 CSURF = (SURF - CEILING2) 2430 CSABR = (SABR2 - CEILING) 2440 PRINT 2450 PRINT " Thick rug and pad would add"; CINT(RUG); "Sabins; Walls would be"; ((CSABR - RUG) / CSURF); "Sabins/ft." 2460 IF CEILING > SABR2 THEN PRINT : PRINT " Standard wall treatment will add about"; CSURF * .3; "Sabins for a total of"; CINT((CSURF * .3) + (SABR2)): PRINT " Run room at that figure to see Dc and isolation for normal treatment." 2470 NERT2 = .049 * VOL / SABR3: NEDC2 = .141 * SQR(Q * SABR3) 2480 PRINT 2490 SABR2 = A2 * SURF 2500 PRINT " At"; SABR2; "Sabins"; DX; "foot recording isolation is"; ISOLATION; "Db." 2510 PRINT 2520 PRINT " Norris-Eyring RT="; NERT2; " Dc="; NEDC2; " Sabins="; CINT(SABR3); " a="; SABR3 / SURF; "" 2530 PRINT 2540 PRINT " Rerun?" 2550 X$ = INPUT$(1): IF X$ = "Y" THEN 2030 ELSE IF X$ = "y" THEN 2030 ELSE 2560 2560 PRINT 2570 PRINT " Use this RT-60 for the rest of the analysis (Y) or original RT? (N)" 2580 X$ = INPUT$(1): IF X$ = "Y" THEN 2590 ELSE IF X$ = "y" THEN 2590 ELSE 2600 2590 SABR = SABR3: SSABR = SABR2: RT = .049 * VOL / SABR 2600 PRINT 2610 PRINT " Detailed analysis of the room?" 2620 X$ = INPUT$(1): IF X$ = "Y" THEN 2630 ELSE IF X$ = "y" THEN 2630 ELSE 2820 2630 PRINT 2640 PRINT " Print out air absorption figures for the room? (Y/N)" 2650 X$ = INPUT$(1): IF X$ = "Y" THEN 2660 ELSE IF X$ = "y" THEN 2660 ELSE 2720 2660 KHZ = 0: KHZ2 = 0 2670 KHZ = KHZ + 100: KHZ2 = KHZ2 + 1 2680 AIRSABS = (KHZ / 1000) ^ 1.45: AIRSABS2 = KHZ2 ^ 1.45 2690 VOLSABS = AIRSABS * (VOL * .000909): VOLSABS2 = AIRSABS2 * (VOL * .000909) 2700 PRINT TAB(5); KHZ; TAB(12); "HZ"; INT(VOLSABS); TAB(23); " SABINS"; TAB(32); KHZ2; TAB(37); "KHZ"; INT(VOLSABS2); TAB(50); " SABINS" 2710 IF KHZ2 < 20 GOTO 2670 ELSE 2720 2720 PRINT 2730 PRINT " RT-60 curve resulting from air absorption?" 2740 PRINT 2750 X$ = INPUT$(1): IF X$ = "Y" THEN 2760 ELSE IF X$ = "y" THEN 2760 ELSE 2820 2760 KHZ = 15 2770 KHZ = CINT(KHZ * 1.4): CURVE = (SABR) + (KHZ / 1000) ^ 1.45 * (VOL * .000909): EKO = (.049 * VOL) / CURVE: PRINT ; TAB(5); KHZ; TAB(12); "HZ"; TAB(30); "RT-60= "; TAB(37); (EKO); TAB(47); "Seconds." 2780 IF KHZ < 12000 THEN 2770 ELSE 2790 2790 PRINT 2800 PRINT " Type anything to continue." 2810 X$ = INPUT$(1): IF X$ = "." THEN 2820 ELSE 2820 2820 MFP = (4 * VOL) / SURF 2830 PRINT 2840 PRINT " Do you wish to add or subtract Sabins? (Y/N)": X$ = INPUT$(1): IF X$ = "Y" THEN 2850 ELSE IF X$ = "y" THEN 2850 ELSE 2970 2850 PRINT 2860 INPUT ; " Enter Sabins to add or (-) subtract; ", ADD 2870 IF SSABR + ADD > MAXSS THEN 2890 ELSE 2880 2880 PRINT : GOTO 2920 2890 PRINT 2900 PRINT : PRINT " Too many Sabins. Maximum for program is 99.3% of surface.("; MAXSS; ")" 2910 PRINT : GOTO 2860 2920 SSABR = SSABR + ADD 2930 PRINT : AS1 = SSABR / SURF: AN = LOG(1 - AS1) * -1: SSABR = AS1 * SURF: SABR = AN * SURF: RT = .049 * VOL / SABR 2940 PRINT " New Standard Sabin total "; INT(SSABR); "Sabins. New RT-60,"; RT; "Seconds." 2950 PRINT 2960 PRINT " New Norris-Eyring Sabin total "; INT(SABR); "Sabins." 2970 PRINT 2980 VOL1 = VOL * .0009302 2990 IF ST > 0 THEN 3010 ELSE 3000 3000 INPUT " For a source Q of 2.5 hit enter. Otherwise, write wanted Q and enter. ", IN3 3010 IF ST > 0 THEN 3030 ELSE 3020 3020 IF IN3 > 0 THEN Q = IN3 ELSE Q = 2.5 3030 PRINT 3040 DX = .5 3050 ATT.5 = (LOG((4 / SABR) + (Q / 3.1415))) * -4.34295 3060 ATT1 = (LOG((4 / SABR) + (Q / 12.566))) * -4.34295 3070 IF ATT1 < 0 THEN ATTMIK1 = ATT1 + 6 ELSE ATTMIK1 = 6 3080 ATT4 = (LOG((4 / SABR) + (Q / (12.566 * 16)))) * -4.34295 3090 DMIK = .5 3100 DMIK = DMIK + 8.333333330000001D-02 3110 ATTMIK = (LOG((4 / SABR) + (Q / (12.566 * DMIK ^ 2)))) * -4.34295 3120 IF ATTMIK < ATTMIK1 THEN 3100 ELSE 3130 3130 DC = CINT(.141 * SQR(Q * SABR)) 3140 PRINT " Current status is: RT="; RT; ", Sabins="; SABR; ", Dc="; DC; ", Q="; Q; "" 3150 FREQ = (SABR / VOL1) ^ .6896 3160 PRINT " Crossover frequency:"; CINT(FREQ); "Khz. Minimum Q for 15% Alcons at"; F1; " Ft,"; CINT(641.81 * (F1 ^ 2) * (RT ^ 2) / (VOL * 15)) 3170 PRINT " Maximum distance for 15% articulation loss at Q"; Q; ","; CINT(SQR((15 * VOL * Q) / (641.81 * RT ^ 2))); "Feet." 3180 PRINT " FEET LOSS Db FROM 6 IN FROM 1 FT FROM 4 FT FROM MIKE" 3190 ATT = (LOG((4 / SABR) + (Q / (12.566 * DX ^ 2)))) * -4.34295 3200 PRINT TAB(5); DX; TAB(14); CINT(ATT); TAB(25); CINT(ATT - ATT.5); TAB(39); CINT(ATT - ATT1); TAB(53); CINT(ATT - ATT4); TAB(66); CINT(ATT - ATTMIK) 3210 IF DX < 4 THEN DX = DX * 2 ELSE DX = DX + 2 3220 IF DX > 20 THEN DX = CINT(DX * 1.5) 3230 IF DX <= F1 THEN 3190 ELSE 3240 3240 IF (Q / (12.566 * F1 ^ 2) * -4.34295) > -1.2 * .00001 THEN 3250 ELSE 3260 3250 PRINT " OUT OF RANGE. INCREASE Q FOR BACK WALL ATTENUATION FIGURE.": GOTO 3000 3260 PRINT TAB(5); CINT((LOG((4 / SABR) + (Q / (12.566 * F1 ^ 2)))) * -4.34295); TAB(10); "Db Spl AT"; TAB(20); F1; " FEET"; TAB(50); "Alcons loss,"; INT((641.81 * F1 ^ 2) * (RT ^ 2)) / (VOL * Q); "%" 3270 PRINT " Mean free path ="; CINT(MFP); "ft. Loss="; CINT((LOG((4 / SABR) + (Q / (12.566 * MFP ^ 2)))) * -4.3429); "Db"; TAB(50); "Alcons loss,"; INT((641.81 * MFP ^ 2) * (RT ^ 2)) / (VOL * Q); "%" 3280 CEILOSS = (C1 * 2) - 8: PRINT " Mic-Ceiling-Mic="; CINT(CEILOSS); "ft. Loss="; CINT((LOG((4 / SABR) + (Q / (12.566 * CEILOSS ^ 2)))) * -4.34295) - ATTT; "Db."; TAB(50); "Alcons loss,"; INT((641.81 * CEILOSS ^ 2) * (RT ^ 2)) / (VOL * Q); "%" 3290 PRINT " For a new Q; type Q. New RT; R. Escape; E. Juggler; J. Modes; M. Power section; P." 3300 IF ST > 0 THEN PRINT " Return to loudspeaker calculations; S." ELSE 3305 3305 IF BW > 0 THEN PRINT " Return to modes section; Type anything." ELSE 3310 3310 X$ = INPUT$(1): IF X$ = "Q" THEN 3000 ELSE IF X$ = "q" THEN 3000 ELSE IF X$ = "R" THEN 470 ELSE IF X$ = "r" THEN 470 ELSE 3320 3320 IF X$ = "E" THEN 50 ELSE IF X$ = "e" THEN 50 ELSE IF X$ = "J" THEN 4100 ELSE IF X$ = "j" THEN 4100 ELSE IF X$ = "M" THEN 3340 ELSE IF X$ = "m" THEN 3340 ELSE 3330 3330 IF X$ = "P" THEN 5250 ELSE IF X$ = "p" THEN 5250 ELSE IF X$ = "S" THEN 6430 ELSE IF X$ = "s" THEN 6430 ELSE 3335 3335 IF X$ = "*" THEN 3480 ELSE 3480 3340 CLS 3350 PRINT " ROOM MODES PROGRAM" 3360 PRINT "Continue? (Y/N)" 3370 X$ = INPUT$(1): IF X$ = "N" THEN 30 ELSE IF X$ = "N" THEN 30 ELSE 3380 3380 IF F1 > 5 THEN 3410 ELSE 3390 3390 GOSUB 280 3400 CLS 3410 SURF = 2 * (F1 * F2) + 2 * (F1 * C1) + 2 * (F2 * C1): VOL = (F1 * F2 * C1): PRINT " Surface area="; INT(SURF); " Sq Ft. Volume="; INT(VOL); " Cu Ft." 3420 IF C1 > F2 THEN SWAP C1, F2 3430 IF F2 > F1 THEN SWAP F2, F1 3440 IF C1 > F2 THEN SWAP C1, F2 3450 PRINT " The room ratios are 1x"; F1 / F2; "x"; F2 / C1; "" 3460 A = (1127 / (2 * C1)): B = (1127 / (2 * F2)): C = (1127 / (2 * F1)) 3470 IF RT < .01 THEN 3480 ELSE 3480 3480 PRINT 3490 PRINT : BW = 2.2 / RT: PRINT " Modes bandwidth for"; RT; "seconds is"; BW; "Hz." 3500 PRINT " Primary modes are L"; C; "HZ, W"; B; "HZ, and C"; A; "HZ" 3510 SPACE1 = (B - C): SPACE2 = (A - B): SPACE3 = (A - C) 3520 PRINT " Modes spacings are"; SPACE1; "Hz horizontal and"; SPACE2; "Hz vertical." 3530 PRINT 3540 PRINT " For horizontal modes:" 3550 IF SPACE1 < BW THEN PRINT " Spacing is less than modes bandwidth. Reinforcement will be uniform." 3560 IF SPACE1 > BW THEN PRINT " Modes BANDWIDTH is LESS THAN SPACING by "; SPACE1 - BW; "Hz at"; RT; "Seconds." 3570 PRINT " Bandwidth equal to spacing would require an RT of"; 2.2 / SPACE1; "Seconds." 3580 PRINT 3590 PRINT " For ceiling modes:" 3600 IF SPACE2 < BW THEN PRINT " Spacing is less than modes bandwidth. Reinforcement will be uniform." 3610 IF SPACE2 > BW THEN PRINT " Modes BANDWIDTH is LESS THAN SPACING by "; SPACE2 - BW; "Hz at"; RT; "Seconds." 3620 PRINT " Bandwidth equal to spacing would require an RT of"; 2.2 / SPACE2; "Seconds." 3630 PRINT 3640 MODEW = B: MODEW1 = (B - BW) 3650 IF MODEW > MODEW1 THEN 3660 ELSE 3670 3660 MODEW = MODEW - .01: GOTO 3650 3670 PRINT " Maximum depth for"; F2; "feet width at"; RT; "seconds will be"; 563.5 / MODEW; "feet." 3680 MODEW = B: MODEW1 = (B + BW) 3690 IF MODEW < MODEW1 THEN 3700 ELSE 3710 3700 MODEW = MODEW + .01: GOTO 3690 3710 PRINT " Minimum height for"; F2; "feet width at"; RT; "seconds will be"; 563.5 / MODEW; "feet." 3720 PRINT " For new dimensions type D. For new RT-60 Type R. To continue type C." 3730 X$ = INPUT$(1): IF X$ = "D" THEN 300 ELSE IF X$ = "d" THEN 300 ELSE IF X$ = "R" THEN 470 ELSE IF X$ = "r" THEN 470 ELSE IF X$ = "C" THEN 3740 ELSE IF X$ = "c" THEN 3740 ELSE 3720 3740 PRINT " Horizontal modes structure follows. * indicates under reinforced frequency." 3750 PRINT " Check adjacent frequencies versus bandwidth to see if a problem exists." 3760 PRINT " BOO! indicates bad room proportions, modes stacking. PROBLEMS!!" 3770 DIM D(100) 3780 P = 1 3790 R = R + C: S = S + B: 3800 D(P) = R: P = P + 1 3810 D(P) = S: P = P + 1 3820 IF P = 101 THEN 3840 3830 GOTO 3790 3840 PRINT 3850 FOR P = 1 TO 100 3860 F = 0 3870 FOR G = 1 TO 100 - P 3880 IF D(G + 1) >= D(G) THEN 3930 3890 U = D(G) 3900 D(G) = D(G + 1) 3910 D(G + 1) = U 3920 F = 1 3930 NEXT G: PRINT "#"; 3940 IF F = 0 THEN 3960 3950 NEXT P 3960 PRINT 3970 PRINT " Hz Modes Hz Modes Hz Modes Hz Modes Hz Modes" 3980 FOR P = 1 TO 99 3990 PRINT USING "####.##"; (D(P)); 4000 K = D(P + 1) - D(P) 4010 IF K = 0 THEN PRINT " BOO!", ELSE IF K < 2 THEN PRINT " *", ELSE PRINT CINT(K), 4020 GOSUB 4070 4030 NEXT P 4040 PRINT 4050 PRINT " To return to starting menu type anything." 4060 X$ = INPUT$(1): IF X$ = "E" THEN 50 ELSE 50 4070 FOR J = 1 TO 250 4080 NEXT J 4090 RETURN 4100 CLS 4110 PRINT " This section, given room measurements and a real Sabin figure, will first return figures for each of the room's six surfaces in terms of absorption per square foot and total absorption of the surface." 4120 PRINT 4130 PRINT " The absorption figures for each of five surfaces may then be modified in accordance with known, wanted, or estimated data, and the program will adjust the unmodified figures to maintain the original Sabin total." 4140 PRINT 4150 PRINT " In this way, a real world room with various surfaces may be presented on screen. In addition, if 3 or 4 simple surfaces are of known value, the program will return likely figures for the other, presumably difficult" 4160 PRINT " to measure surfaces. If all six surfaces are modified, the program will calculate and present NEW ROOM absorption for the surfaces as modified." 4170 PRINT 4180 PRINT " Continue? (Y/N)" 4190 X$ = INPUT$(1): IF X$ = "n" THEN 30 ELSE IF X$ = "N" THEN 30 ELSE 4200 4200 IF F1 < 5 THEN GOSUB 280 4210 PRINT 4220 PRINT " The two long walls will have an area of"; F1 * C1; " square feet each." 4230 PRINT 4240 PRINT " The two short walls will have an area of"; F2 * C1; " square feet each." 4250 PRINT 4260 PRINT " The floor and ceiling will have an area of"; F1 * F2; " square feet each." 4270 PRINT 4280 L1 = F1 * C1 4290 S1 = F2 * C1 4300 FL = F1 * F2 4310 PRINT " Total room area is"; 2 * L1 + 2 * S1 + 2 * FL; " square feet" 4320 SURF = 2 * L1 + 2 * S1 + 2 * FL 4330 MAXSS = (SURF * .993) - 1 4340 PRINT : S1 = 0 4350 PRINT " The room volume is"; F1 * F2 * C1; "cubic feet." 4360 VOL = F1 * F2 * C1 4370 IF SSABR > 10 THEN PRINT : PRINT " Sabins from analyzer program="; SSABR 4380 PRINT 4390 INPUT " Enter Sabins for the room (from the room analyzer) or C.R. for a starting Sa of .2 ", SABINS 4400 PRINT 4410 IF SABINS > 10 THEN 4440 ELSE 4420 4420 PRINT 4430 PRINT " No Sabin figure entered, starting room at .2 Sabins/Sq Ft. Sabin total "; SURF * .2; "Sabins.": SABINS = SURF * .2 4440 SABINS = SABINS / SURF 4450 SABTOT = SABINS * SURF 4460 PRINT 4470 PRINT " To conserve line space, surface area absorption, in Sabins per square foot, will be shown as Sa=nnnnn and total absorption of a wall as Absorption in Sabins." 4480 PRINT 4490 WALL1 = F1 * C1 4500 WALL2 = F1 * C1 4510 WALL3 = F2 * C1 4520 WALL4 = F2 * C1 4530 WALL5 = F1 * F2 4540 WALL6 = F1 * F2 4550 PRINT " Menu # 1, Long wall one Sa="; SABINS; " Absorption,"; INT(WALL1 * SABINS); "Sabins" 4560 PRINT " Menu # 2, Long wall two Sa="; SABINS; " "; INT(WALL2 * SABINS) 4570 PRINT " Menu # 3, Short wall one Sa="; SABINS; " "; INT(WALL3 * SABINS) 4580 PRINT " Menu # 4, Short wall two Sa="; SABINS; " "; INT(WALL4 * SABINS) 4590 PRINT " Menu # 5, Floor Sa="; SABINS; " "; INT(WALL5 * SABINS) 4600 PRINT " Menu # 6, Ceiling Sa="; SABINS; " "; INT(WALL6 * SABINS) 4610 INPUT " To change the Sa of a surface, enter it's menu number: ", IN7 4620 IF IN7 = 0 THEN 4610 4630 IF IN7 = 1 THEN 4690 ELSE 4640 4640 IF IN7 = 2 THEN 4710 ELSE 4650 4650 IF IN7 = 3 THEN 4730 ELSE 4660 4660 IF IN7 = 4 THEN 4750 ELSE 4670 4670 IF IN7 = 5 THEN 4770 ELSE 4680 4680 IF IN7 = 6 THEN 4790 ELSE 4690 4690 PRINT " Long wall one Sa="; SABINS: INPUT " Enter new Sa= ", S1 4700 IF S1 > 0 THEN 4810 4710 PRINT " Long wall two Sa="; SABINS: INPUT " Enter new Sa= ", S2 4720 IF S2 > 0 THEN 4820 4730 PRINT " Short wall one Sa="; SABINS: INPUT " Enter new Sa= ", S3 4740 IF S3 > 0 THEN 4830 4750 PRINT " Short wall two Sa="; SABINS: INPUT " Enter new Sa= ", S4 4760 IF S4 > 0 THEN 4840 4770 PRINT " Floor Sa="; SABINS: INPUT " Enter new Sa= ", S5 4780 IF S5 > 0 THEN 4850 4790 PRINT " Ceiling Sa="; SABINS: INPUT " Enter new Sa= ", S6 4800 IF S6 > 0 THEN 4860 4810 LW1SAB = S1 * WALL1 4820 LW2SAB = S2 * WALL2 4830 SW1SAB = S3 * WALL3 4840 SW2SAB = S4 * WALL4 4850 FLRSAB = S5 * WALL5 4860 CNGSAB = S6 * WALL6 4870 SABTOT1 = 0 4880 SABTOT1 = SABTOT - LW1SAB - LW2SAB - SW1SAB - SW2SAB - FLRSAB - CNGSAB 4890 IF S1 > 0 THEN SRF1 = WALL1 4900 IF S2 > 0 THEN SRF2 = WALL2 4910 IF S3 > 0 THEN SRF3 = WALL3 4920 IF S4 > 0 THEN SRF4 = WALL4 4930 IF S5 > 0 THEN SRF5 = WALL5 4940 IF S6 > 0 THEN SRF6 = WALL6 4950 SURF1 = 0 4960 SURF1 = SURF - (SRF1 + SRF2 + SRF3 + SRF4 + SRF5 + SRF6) 4970 PRINT 4980 PRINT "NEW Sa's: 1:LW1"; S1; " 2:LW2"; S2; " 3:SW1"; S3; " 4:SW2"; S4; " 5:FLR"; S5; " 6:CNG"; S6 4990 PRINT 5000 PRINT " Old Sa New Sa Old Total New Total " 5010 IF LW1SAB > 0 THEN PRINT "Long wall one "; SABINS; , S1; , SABINS * WALL1; , S1 * WALL1: NU1 = S1 * WALL1 5020 IF LW1SAB = 0 THEN PRINT "Long wall one "; SABINS; , SABTOT1 / SURF1; , SABINS * WALL1; , (SABTOT1 / SURF1) * WALL1: NU1 = (SABTOT1 / SURF1) * WALL1 5030 IF LW2SAB > 0 THEN PRINT "Long wall two "; SABINS; , S2; , SABINS * WALL2; , S2 * WALL2: NU2 = S2 * WALL2 5040 IF LW2SAB = 0 THEN PRINT "Long wall two "; SABINS; , SABTOT1 / SURF1; , SABINS * WALL2; , (SABTOT1 / SURF1) * WALL2: NU2 = (SABTOT1 / SURF1) * WALL2 5050 IF SW1SAB > 0 THEN PRINT "Short wall one "; SABINS; , S3; , SABINS * WALL3; , S3 * WALL3: NU3 = S3 * WALL3 5060 IF SW1SAB = 0 THEN PRINT "Short wall one "; SABINS; , SABTOT1 / SURF1; , SABINS * WALL3; , (SABTOT1 / SURF1) * WALL3: NU3 = (SABTOT1 / SURF1) * WALL3 5070 IF SW2SAB > 0 THEN PRINT "Short wall two "; SABINS; , S4; , SABINS * WALL4; , S4 * WALL4: NU4 = S4 * WALL4 5080 IF SW2SAB = 0 THEN PRINT "Short wall two "; SABINS; , SABTOT1 / SURF1; , SABINS * WALL4; , (SABTOT1 / SURF1) * WALL4: NU4 = (SABTOT1 / SURF1) * WALL4 5090 IF FLRSAB > 0 THEN PRINT "Floor "; SABINS; , S5; , SABINS * WALL5; , S5 * WALL5: NU5 = S5 * WALL5 5100 IF FLRSAB = 0 THEN PRINT "Floor "; SABINS; , SABTOT1 / SURF1; , SABINS * WALL5; , (SABTOT1 / SURF1) * WALL5: NU5 = (SABTOT1 / SURF1) * WALL5 5110 IF CNGSAB > 0 THEN PRINT "Ceiling "; SABINS; , S6; , SABINS * WALL6; , S6 * WALL6: NU6 = S6 * WALL6 5120 IF CNGSAB = 0 THEN PRINT "Ceiling "; SABINS; , SABTOT1 / SURF1; , SABINS * WALL6; , (SABTOT1 / SURF1) * WALL6: NU6 = (SABTOT1 / SURF1) * WALL6 5130 OLD = (SABINS * WALL1) + (SABINS * WALL2) + (SABINS * WALL3) + (SABINS * WALL4) + (SABINS * WALL5) + (SABINS * WALL6) 5140 REVISED = NU1 + NU2 + NU3 + NU4 + NU5 + NU6 5150 PRINT "Room Totals:", , , OLD; , REVISED 5160 PRINT 5170 IF S1 * S2 * S3 * S4 * S5 * S6 > 0 THEN 5180 ELSE 5190 5180 PRINT "NEW ROOM: ABSORPTION"; (S1 * WALL1) + (S2 * WALL2) + (S3 * WALL3) + (S4 * WALL4) + (S5 * WALL5) + (S6 * WALL6); "SABINS. ORIGINAL ENTRY "; SABTOT; "SABINS" 5190 PRINT 5200 SABRINPUT = REVISED 5210 PRINT "To enter the ROOM ANALYZER section with the values just generated, type A. " 5220 PRINT " For another Sa change, type anything. To return to top menu, type E.": X$ = INPUT$(1) 5230 IF X$ = "E" THEN 50 ELSE IF X$ = "e" THEN 50 ELSE IF X$ = "A" THEN 5240 ELSE IF X$ = "a" THEN 5240 ELSE 4610 5240 TAG = 1: GOTO 1840 5250 CLS 5260 PRINT " LOUDSPEAKER PROGRAM" 5270 PRINT 5280 PRINT "This program contains two loudspeaker system menus, for systems compatible with small rooms, up to 50 feet or so, and for large rooms, auditoriums, theaters," 5290 PRINT "and so forth. The menu information is useful with, but not coupled to, a program for determining intelligibility and amplifier power under various conditions," 5300 PRINT "and predicting feedback levels in public address applications." 5310 PRINT 5320 PRINT "Indicate your choice of sections by typing S for small room systems, L for large room systems, P for the power program, or E to escape." 5330 X$ = INPUT$(1): IF X$ = "E" THEN 50 ELSE IF X$ = "e" THEN 50 ELSE IF X$ = "S" THEN 5340 ELSE IF X$ = "s" THEN 5340 ELSE IF X$ = "L" THEN 5590 ELSE IF X$ = "l" THEN 5590 ELSE IF X$ = "P" THEN 6070 ELSE IF X$ = "p" THEN 6070 ELSE 5320 5340 PRINT 5350 PRINT "MODEL # MAX PWR SEN Q ANGLES XOVER DESCRIPTION NOTES" 5360 PRINT " TANNOY TIME ALIGNED SYSTEMS" 5370 PRINT "FSM 900W 95 8 90X90 1KHX DBL WOOFER 42X29X22 198LB" 5380 PRINT "15X 450W 95 8 90X90 1KHZ LO END 52HZ 40X26X15 112LB" 5390 PRINT "15XB 450W 93 8 90X90 1KHZ LO END 40HZ 40X26X15 112LB" 5400 PRINT "SRM10B 150W 91 8 90X90 1.2KHZ LO END 55HZ 21X15X10 40LB" 5410 PRINT "NFM8 100W 90 5 100X100 1.8KHZ LO END 55HZ 18X12X8 25LB" 5420 PRINT " U.R.E.I. TIME ALIGNED SYSTEMS" 5430 PRINT "811B 150 98 31 45X30 1.5KHZ LO END 80HZ" 5440 PRINT "813B 150 98 31 45X30 1.5KHZ LO END 40HZ" 5450 PRINT "815A 75 91 31 45X30 1.5KHZ LO END 40HZ" 5460 PRINT " SMALL ROOM SYSTEMS, NOT TIME ALIGNED. ALTEC-LANSING" 5470 PRINT "MODEL # MAX PWR SEN Q ANGLES XOVER DESCRIPTION NOTES" 5480 PRINT "604-16X 100W 103 18 60X40 1.5KHZ LO END 20HZ 40X26X18 136LB" 5490 PRINT "A6A(3 q's) 250 99 12* 90X40* 500HZ LO END 60HZ 19X30X49 152LB" 5500 PRINT "1235-C 125 101 13 90X40 1.2KHZ LO END 35HZ 34X30X26 215LB" 5510 PRINT "1236-C 125 105 13 90X40 1200HZ LO END 35HZ 54X30X24 173LB" 5520 PRINT " JAMES B LANSING" 5530 PRINT "4612OK 200 95 5 100X100 3KHZ LO END 60HZ 17X22X10 45LB" 5540 PRINT "4671OK 200 95 13 90X40 800HZ LO END 40HZ 31X22X18 113LB" 5550 PRINT "Type L for large room systems, P for power program, R for power rerun, E to exit" 5560 X$ = INPUT$(1): IF X$ = "L" THEN 5590 ELSE IF X$ = "l" THEN 5590 ELSE IF X$ = "P" THEN 6090 ELSE IF X$ = "p" THEN 6090 ELSE IF X$ = "R" THEN 6110 ELSE IF X$ = "r" THEN 6110 5570 IF X$ = "E" THEN 50 ELSE IF X$ = "e" THEN 50 ELSE 5550 5580 PRINT 5590 PRINT " MUSIC QUALITY LOUDSPEAKER COMPONENTS FOR LARGE ROOMS." 5600 PRINT " ALTEC LANSING WOOFERS" 5610 PRINT "MODEL # MAX PWR SEN Q ANGLES XOVER DESCRIPTION NOTES" 5620 PRINT "8124 250W 92 1 12IN LO END 40HZ 30x19x15 61LB" 5630 PRINT "8154 250W 93 1 15IN LO END 40HZ 36X30X15 90LB" 5640 PRINT "8184 300W 97 1 18IN LO END 40HZ 36X30X26 124LB" 5650 PRINT "8256 500W 100 2 15IN LO END 65HZ 36X30X15 106LB" 5660 PRINT "817A 150W 108 2 I6IN, HORN LOADED LO END 60HZ 34X38X27 268LB" 5670 PRINT "210 150W 108 2 16IN, HORN LOADED LO END 50HZ 34X84X40 477LB" 5680 PRINT "211A 150W 108 2 16IN HORN LOADED LO END 40HZ 84X34X40 386LB" 5690 PRINT " JAMES B LANSING WOOFERS" 5700 PRINT "4646 250W 94 1 12IN LO END 65HZ 16X19X11 40LB" 5710 PRINT "4647 250W 95 1 15IN LO END 35HZ 31X22X18 80LB" 5720 PRINT "4648 500W 98 2 15IN LO END 35HZ 42X27X18 109LB" 5730 PRINT "4560BKA 250W 101 1 15IN, HORN LOADED LO END 45HZ 36X30X24 137LB" 5740 PRINT "4550BKA 500W 104 2 15IN, HORN LOADED LO END 40HZ 36X60X33 224LB" 5750 PRINT " ELECTRO-VOICE QUAD MANIFOLD SYSTEM" 5760 PRINT "WOOFER 1600W 100 4 15IN LO END 32 HZ 36X36X30 263LB" 5770 PRINT "TWEETER 1200W 105 Q=23 12 UNITS, XOVER 600 HZ 36X36X30 367LB" 5780 PRINT : PRINT 5790 PRINT 5800 PRINT "TYPE ANYTHING TO CONTINUE " 5810 X$ = INPUT$(1): IF X$ = "^" THEN 5820 ELSE 5820 5820 CLS 5830 PRINT 5840 PRINT " ALTEC LANSING HORNS" 5850 PRINT "290 100W 8KHZ DRVR LISTED: 908-8B 100W-1.5Db; 291 40W+1Db; 288 15W+2Db" 5860 PRINT "MODEL # MAX PWR SEN Q ANGLES XOVER DESCRIPTION NOTES" 5870 PRINT "MR-42 A 100W 114 80 40X20 800HZ 1.4IN C.D. 35X21X60 29LB" 5880 PRINT "MR-64 A 100W 112 18 60X40 500HZ 1.4IN C.D. 29X21X28 13LB" 5890 PRINT "MR-94 A 100W 110 12 90X40 500HZ 1.4IN C.D. 35X25X28 16LB" 5900 PRINT "MR-542 100W 110 50 40X20 500HZ 1.4IN C.D. 20X15X29 12LB" 5910 PRINT "MR-564 100W 108 20 60X40 500HZ 1.4IN C.D. 13X13X13 5LB" 5920 PRINT "MR-594 100W 106 10 90X40 500HZ 1.4IN C.D. 13X23X13 5LB" 5930 PRINT "MR-5124 100W 105 9 120X40 500HZ 1.4IN C.D. 13X24X13 5LB" 5940 PRINT " J.B.L. LARGE HORNS 2445 DRIVER" 5950 PRINT "2360A 100W 111 12 90X40 500HZ 2IN C.D. 32x32x32 27LB" 5960 PRINT "2365A 100W 113 20 60X40 500HZ 2IN C.D. 31x31x32 25LB" 5970 PRINT "2366A 100W 116 46 40X20 500HZ 2IN C.D. 31x31x55 36LB" 5980 PRINT " J.B.L. COMPACT HORNS 2445 DRIVER" 5990 PRINT "MODEL # MAX PWR SEN Q ANGLES XOVER DESCRIPTION NOTES" 6000 PRINT "2370 100W 108 12 90X40 600HZ 1 IN, C.D. 7X18X7 3LB" 6010 PRINT "2380A 100W 110 11 90X40 500HZ 2 IN, C.D. 11X18X9 6LB" 6020 PRINT "2382A 100W 108 8 120X40 500HZ 2 IN, C.D. 11X18X9 4LB" 6030 PRINT "2385A 100W 112 19 60X40 500HZ 2 IN, C.D. 11X18X9 6LB" 6040 PRINT "2386 100W 116 45 40X20 400HZ 2 IN, C.D. 11X18X14 12LB" 6050 PRINT " Speaker Menu top? (T) Exit to main menu? (E) Power segment? (Anything)" 6060 X$ = INPUT$(1): IF X$ = "T" THEN 5340 ELSE IF X$ = "t" THEN 5340 ELSE IF X$ = "E" THEN 50 ELSE IF X$ = "e" THEN 50 ELSE 6070 6070 IF F1 > 5 THEN PRINT : PRINT " EXISTING ROOM FROM ANALYZER SECTION. DEPTH="; F1; " WIDTH="; F2; " HEIGHT="; C1 ELSE 6090 6080 PRINT : IF F1 > 5 THEN PRINT " RT-60="; RT; " STANDARD SABINS="; INT(SSABR); " N-E SABINS="; INT(SABR); " DC="; DC; " Q="; Q; "" 6090 IF F1 > 5 THEN RERUN = 1 6100 PRINT : PRINT : PRINT : PRINT : PRINT : INPUT " Enter the desired speaker throw in decimal feet: ", ST 6110 IF ST < 1 THEN 6100 6120 PRINT : PRINT : 6130 INPUT " Enter the 4FT/1WATT Db/Spl of your loudspeaker: ", SE: IF SE < 50 THEN 6120 6140 PRINT : PRINT 6150 INPUT " Enter the desired Db/Spl at furthest distance: ", SPL 6160 IF RERUN = 1 THEN 6340 ELSE PRINT 6170 IF SPL < 50 THEN 6150 ELSE 6180 6180 SPL1 = (SPL - SE) 6190 LOSS = (LOG(ST) * 8.6859) - 12 6200 PRINT : PRINT : PRINT " Open air energy loss at"; ST; "feet is"; CINT(LOSS); "Db." 6210 PRINT 6220 PRINT " 4 FT/1 WATT versus desired Spl adds"; SPL1; "Db loss." 6230 LOSS1 = LOSS + SPL1 6240 PRINT 6250 PRINT " Power required for Peak"; SPL; "Db Spl at"; ST; "feet would be"; INT(10 ^ (LOSS1 / 10)) 6260 PRINT 6270 PRINT " Watts in open air for a field strength calculation." 6280 PRINT " " 6290 PRINT " If this is a room, type anything to continue. If not, type E for main menu." 6300 X$ = INPUT$(1): IF X$ = "E" THEN 50 ELSE IF X$ = "e" THEN 50 ELSE 6310 6310 IF F1 > 5 THEN 6320 ELSE GOSUB 280 6320 VOL1 = VOL * .0009302 6330 FREQ = (SABR / VOL1) ^ .6896: PRINT " Acoustical crossover occurs at"; CINT(FREQ); "Khz." 6340 PRINT 6350 PRINT " Minimum Q for 15% articulation loss at"; ST; "feet is"; (641.81 * (ST ^ 2) * (RT ^ 2) / (VOL * 15)) 6360 PRINT 6370 INPUT " Enter loudspeaker Q. ", Q: IF Q = 0 THEN 6380 ELSE 6420 6380 PRINT : INPUT ; " To calculate Q enter angles. Horizontal; ", ANG1: INPUT ; " Vertical; ", ANG2: IF ANG1 < 10 THEN 6370 ELSE IF ANG2 < 10 THEN 6370 ELSE 6390 6390 ANG1 = ANG1 * .0174533: ANG2 = ANG2 * .0174533 6400 SN1 = SIN(ANG1): SN2 = SIN(ANG2): SN3 = ((SN1 / 2) * (SN2 / 2)) 6410 SN4 = ATN(SN3 / SQR(-SN3 * SN3 + 1)): SN5 = SN4 * 57.29577951#: PQ = CINT(180 / SN5): CLS : PRINT " For a perfect horn Q would be"; PQ; ". Real Q is about"; CINT(.85 * PQ); ".": Q = CINT(.85 * PQ) 6420 DC = SQR(Q * VOL / RT) * .03121 6430 PRINT : PRINT 6440 PRINT " Current status is: RT="; RT; ", Sabins="; SABR; ", Dc="; DC; ", Q="; Q; "" 6450 PRINT 6460 AL = 641.81 * ((ST ^ 2 * RT ^ 2) / (Q * VOL)): IF AL < 15 THEN PRINT " Consonant loss at"; ST; "feet will be"; CINT(AL); "per cent." ELSE PRINT " Consonant loss at"; ST; "feet will be"; CINT(AL); "per cent !!!!!!!!" 6470 PRINT 6480 LOSS = (LOG((4 / SABR) + (Q / (12.57 * ST ^ 2)))) * -4.34295: PRINT " Room loss at"; ST; "feet will be"; CINT(LOSS); "Db Spl." 6490 PRINT 6500 SEN = (LOG((4 / SABR) + (Q / (12.57 * 4 ^ 2)))) * -4.34295: PRINT " Speaker loss at four feet will be"; CINT(SEN); "Db Spl." 6510 PRINT 6520 LOSS0 = LOSS - SEN: PRINT " Power loss from 4 Ft to"; ST; "Ft will be"; CINT(LOSS); "minus"; CINT(SEN); ":"; CINT(LOSS0); "Db Spl." 6530 PRINT 6540 PRINT " Desired Spl vs. loudspeaker 4Ft/1W adds"; (SPL - SE); "Db loss." 6550 PRINT 6560 SPL1 = SPL - SE 6570 LOSS1 = LOSS0 + SPL1: PRINT " Power loss for"; SPL; "Db Spl at"; ST; "feet will be"; CINT(LOSS1); "Db Spl." 6580 PRINT 6590 PRINT " Power required for PEAK"; SPL; "Db Spl at"; ST; "feet will be"; CINT(10 ^ (LOSS1 / 10)) 6600 PRINT 6610 PRINT " Watts in the room described. For AVERAGE"; SPL; "Db Spl, X10." 6620 PRINT 6630 PRINT " Same room; new speaker? (Y/N)": X$ = INPUT$(1): IF X$ = "Y" THEN RERUN = 1 ELSE IF X$ = "y" THEN RERUN = 1 ELSE RERUN = 0 6640 IF X$ = "Y" THEN 6070 ELSE IF X$ = "y" THEN 6070 ELSE 6650 6650 PRINT 6660 PRINT " Same room and speaker, new RT-60? (Y/N)": X$ = INPUT$(1): IF X$ = "Y" THEN GOSUB 470 ELSE IF X$ = "y" THEN GOSUB 470 ELSE 6670 6670 PRINT 6680 PRINT " Loudspeaker menu? (Y/N)": X$ = INPUT$(1): PRINT : IF X$ = "Y" THEN 5340 ELSE IF X$ = "y" THEN 5340 ELSE 6690 6690 PRINT 6700 PRINT "IS THIS A PUBLIC ADDRESS OR MUSIC/THEATER REINFORCEMENT SYSTEM? (Y/N)", 6710 X$ = INPUT$(1): IF X$ = "Y" THEN 6720 ELSE IF X$ = "y" THEN 6720 ELSE 6920 6720 INPUT "How many mikes are on at any given time in this system? ", NOM: IF NOM < 1 THEN 6720 6730 INPUT "What is the sound source's Q? ", Q1: IF Q1 < 2 THEN 6730 6740 INPUT "What is the source Db/Spl? (weak voice 82 at 1/2 Ft, very loud voice, 94) ", SOURCE 6750 INPUT "What is the microphone-loudspeaker distance in decimal feet? ", D1: IF D1 < 5 THEN 6750 6760 D1LOSS = (LOG((4 / SABR) + (Q / (23.57 * D1 ^ 2)))) * -4.34295 6770 INPUT "What is the source-microphone distance in decimal feet? ", DS: IF DS < .1 THEN 6770 6780 DSLOSS = (LOG((4 / SABR) + (Q1 / (12.57 * DS ^ 2)))) * -4.34295 6790 ST1 = ST 6800 IF ST1 > DC THEN ST1 = DC 6810 EAD = 2 * DS * ST1 * SQR(NOM) / D1 6820 PRINT "Worst case (*)EAD (presence at speaker) is"; CINT(EAD); "feet." 6830 INPUT "What is the microphone to back row distance in decimal feet? ", TT: IF TT < 5 THEN 6830 6840 TTLOSS = (LOG((4 / SABR) + (Q1 / (12.57 * TT ^ 2)))) * -4.34295 6850 PAG = TTLOSS + D1LOSS - DSLOSS - LOSS: PRINT "Worst case (*) potential acoustical gain at back row is"; CINT(PAG); "Db/Spl." 6860 PRINT 6870 NOMGAIN = LOG(NOM) * 4.34295 6880 SYSGAIN = LOSS1 + NOMGAIN 6890 MIKGAIN = SPL - SOURCE 6900 SPLGAIN = SYSGAIN + MIKGAIN 6910 PRINT "System gain is"; CINT(SPLGAIN); "Db/Spl for"; NOM; "mikes. Net available gain,"; CINT(PAG - SPLGAIN); "Db/Spl." 6920 PRINT "For a new Q, type Q; New RT-60, R; Power rerun, P, Spkr menu, L or S; Escape, E;PAG/EAD rerun, M;" 6930 X$ = INPUT$(1): IF X$ = "M" THEN 6720 ELSE IF X$ = "m" THEN 6720 ELSE IF X$ = "Q" THEN 6370 ELSE IF X$ = "q" THEN 6370 ELSE IF X$ = "R" THEN 470 ELSE IF X$ = "r" THEN 470 ELSE IF X$ = "P" THEN 6100 ELSE IF X$ = "p" THEN 6100 ELSE 50