1#!/usr/bin/env python3 2import math 3import sys 4 5# 1HZ == 1 sine 6# sample rate at 44100Hz, sine at 441Hz -> 441 sines in 44100 samples -> 44100/441 samples/sine 7 8sine_array = ''' 9// input signal: pre-computed int16 sine wave, {sine_sample_rate} Hz at {sine_frequency} Hz 10static const int16_t sine_int16[] = {{''' 11 12VALUES_PER_LINE = 10 13sine_sample_rate = 44100 14sine_frequency = 441 15 16if __name__ == "__main__": 17 usage = ''' 18 Usage: ./sine_table_generator.py sine_frequency sine_sample_rate 19 ''' 20 21 if (len(sys.argv) < 3): 22 print(usage) 23 sys.exit(1) 24 25 sine_frequency = int(sys.argv[1]) 26 sine_sample_rate = int(sys.argv[2]) 27 28 if sine_frequency <= 0: 29 print(usage) 30 sys.exit(1) 31 32 if sine_sample_rate <= 0: 33 print(usage) 34 sys.exit(1) 35 36 sine_num_samples = int(sine_sample_rate/sine_frequency) 37 print(type(sine_num_samples).__name__) 38 print(sine_array.format(sine_sample_rate=sine_sample_rate, sine_frequency=sine_frequency)) 39 items = 0 40 for sample in range(0,sine_num_samples): 41 items = items + 1 42 angle = (sample * 360.0) / sine_num_samples 43 sine = math.sin(math.radians(angle)) 44 rescaled = int(round(sine * 32767)) 45 print ("%6d, " % rescaled, end=''), 46 if items == VALUES_PER_LINE: 47 items = 0 48 print("") 49 50 print( "};") 51