semitones = 12 left_Frequency_range = 125 right_Frequency_range = 250 calculate = 3 round = 1 message$ = "" repeat beginPause ("Semitones") comment ("Choose the parameter you want to calculate.") choice ("Calculate", calculate) option ("first frequency") option ("second frequency") option ("semitones") comment ("Rounded results (2 digits after decimal point)? ") boolean ("Round", round) comment (" 'message$'") real ("left Frequency range (Hz)", left_Frequency_range) real ("right Frequency range", right_Frequency_range) real ("Semitones", semitones) clicked = endPause ("Exit", "Calc", 2, 1) if calculate = 3 if left_Frequency_range <= 0 || right_Frequency_range <= 0 message$ = "FREQUENCIES MUST BE >0 TO CALCULATE SEMITONES!" semitones = 0 else semitones = (12/ln(2)) * (ln(right_Frequency_range/left_Frequency_range)) if round = 1 semitones = number (fixed$ (semitones, 2)) endif message$ = "" endif elsif calculate = 1 if right_Frequency_range <= 0 message$ = "SECOND FREQUENCY MUST BE >0 TO CALCULATE FIRST FREQUENCY!" left_Frequency_range = 0 else left_Frequency_range = right_Frequency_range / exp((semitones*ln(2))/12) if round = 1 left_Frequency_range = number (fixed$ (left_Frequency_range, 2)) endif message$ = "" endif elsif calculate = 2 if left_Frequency_range <= 0 message$ = "FIRST FREQUENCY MUST BE >0 TO CALCULATE SECOND FREQUENCY!" right_Frequency_range = 0 else right_Frequency_range = exp((semitones*ln(2))/12) * left_Frequency_range if round = 1 right_Frequency_range = number (fixed$ (right_Frequency_range, 2)) endif message$ = "" endif endif until clicked = 1