#!/usr/bin/python3 # # Make a table of Mockingboard wavelength values (high and low bytes) # Corresponding to the frequency values used in BBC Micro # SOUND statements. # d7 = 2349.32 # D7 is pitch value 253 clk = 63780.27 # AY-3 clock (1.023MHz / 16) freqs = [0] * 256 divider = [0] * 256 freqs[253] = d7 for i in range(254,256): freqs[i] = freqs[i-1] * (2 ** (1 / 48)) for i in range(252,-1,-1): freqs[i] = freqs[i+1] / (2 ** (1 / 48)) for i in range(0,256): divider[i] = int(round(clk / freqs[i])) coarse = int(divider[i] / 256) fine = int(divider[i] % 256) # print("{:3d}: {:9.3f} {:5d} ({:2d} {:3d})".format(i, freqs[i], divider[i], coarse, fine)) print("\nMFREQHIGH"); for i in range(0,256): print(" DB >{:.0f}".format(divider[i])) print("\nMFREQLOW"); for i in range(0,256): print(" DB <{:.0f}".format(divider[i]))