BUZZ KIMBALL
Instrument Design Software
Following is the listing to the BASIC program Buzz wrote to help him build acoustic musical instruments. It performs string length and other calculations. He offers to to you freely for your own use though it is offered as is and with no warranty of any kind. The program works from DOS Basic. An executable version is available by writing directly to Buzz, see Buzz's contact page for his address.
JUST.BAS Manual
- Ratio Modulation, this quickly allows one to determine what note any ratio above a given ratio is. By entering 1/1 for the first fraction, any fraction in cents, frequencies, or whole numbers can be reduced. However, only proper fractions come out clearly. Also, all intermediate values are displayed.
- Ratio to Cents, convert a ratio to cent values.
- Intertone, calculates the ratio between two given ratios.
- String Position, will return octave one and octave two values for any string length and ratio. Thus, notes are easily found on string instruments. Very useful for templates for slide guitars, monochords, and harmonic kannons.
- Complement, returns the inverse ratio. Most useful for monochords and kannons.
- Demodulation, used to calculate ratios moving in descending frequency.
- Exit, return to DOS
Source code first published in XENHARMONIKON 13, Spring 1991
This program provided as agiprop by NOVOSONICS EAST, 1992
"Don't fossilize; Detwelvulate..."
JUST.BAS
10 print "main menu"
11 print "1. ratio modulation"
12 print "2. ratio to cents"
13 print "3. intertone"
14 print "4. string position"
15 print "5. complement"
16 print "6. demodulation"
17 print "7. exit"
18 print
19 input "select 1-7 ",x
20 cls
31 if x=1 then 100
32 if x=2 then 200
33 if x=3 then 300
34 if x=4 then 400
35 if x=5 then 500
36 if x=6 then 600
37 if x=7 then 999
38 goto 18
100 print "ratio modulation"
101 print
105 input "1st numerator= ",a
110 input "1st denominator= ",b
115 input "2nd numerator= ",c
120 input "2nd denominator= ",d
125 e=a*c
130 f=b*d
135 goto 700
200 print "ratio to cents"
201 print
205 input "numerator= ",a
210 input "denominator= ",b
215 c=log(a/b)*1200/log(2)
225 print c
226 print
230 goto 10
300 print "intertone"
301 print
305 input "1st numerator= ",a
310 input "1st denominator= ",b
315 input "2nd numerator= ",c
320 input "2nd denominator= ",d
325 e=b*c
330 f=a*d
335 goto 700
400 print "string position"
401 print
405 input "numerator= ",n
410 input "denominator= ",d
415 input "string length mm= ",l
420 y=l/n
425 y=y*d
430 y=y-l
435 y=abs(y)
440 z=(y/2)+(l/2)
445 print y,z
446 print
450 goto 10
500 print "complement"
501 print
505 input "numerator= ",a
510 input "denominator= ",b
515 e=b*2
520 f=a
530 goto 700
600 print "demodulation"
601 print
605 input "1st numerator= ",a
610 input "1st denominator= ",b
615 input "2nd numerator= ",c
620 input "2nd denominator= ",d
625 e=a*d
630 f=b*c
635 if f>e then 645
640 goto 700
645 e=a*d*2
650 f=b*c
655 goto 700
660 print
665 goto 10
700 print "all harmonic form"
701 print
905 if e>f*2 then f=f*2
907 print e,f
910 if e/2=int(e/2) and f/2=int(f/2) then goto 950
915 if e/3=int(e/3) and f/3=int(f/3) then goto 955
920 if e/5=int(e/5) and f/5=int(f/5) then goto 960
925 if e/7=int(e/7) and f/7=int(f/7) then goto 965
930 if e/11=int(e/11) and f/11=int(f/11) then goto 970
935 if e/13=int(e/13) and f/13=int(f/13) then goto 975
940 if e/17=int(e/17) and f/17=int(f/17) then goto 980
945 print e,f
946 print
949 goto 10
950 e=e/2:f=f/2
951 goto 905
955 e=e/3:f=f/3
956 goto 905
960 e=e/5:f=f/5
961 goto 905
965 e=e/7:f=f/7
966 goto 905
970 e=e/11:f=f/11
971 goto 905
975 e=e/13:f=f/13
976 goto 905
980 e=e/17:f=f/17
981 goto 905
985 goto 10
999 end