#!/usr/bin/env python3 import math import sys # 1HZ == 1 sine # sample rate at 44100Hz, sine at 441Hz -> 441 sines in 44100 samples -> 44100/441 samples/sine sine_array = ''' // input signal: pre-computed int16 sine wave, {sine_sample_rate} Hz at {sine_frequency} Hz static const int16_t sine_int16[] = {{''' VALUES_PER_LINE = 10 sine_sample_rate = 44100 sine_frequency = 441 if __name__ == "__main__": usage = ''' Usage: ./sine_table_generator.py sine_frequency sine_sample_rate ''' if (len(sys.argv) < 3): print(usage) sys.exit(1) sine_frequency = int(sys.argv[1]) sine_sample_rate = int(sys.argv[2]) if sine_frequency <= 0: print(usage) sys.exit(1) if sine_sample_rate <= 0: print(usage) sys.exit(1) sine_num_samples = int(sine_sample_rate/sine_frequency) print(type(sine_num_samples).__name__) print(sine_array.format(sine_sample_rate=sine_sample_rate, sine_frequency=sine_frequency)) items = 0 for sample in range(0,sine_num_samples): items = items + 1 angle = (sample * 360.0) / sine_num_samples sine = math.sin(math.radians(angle)) rescaled = int(round(sine * 32767)) print ("%6d, " % rescaled, end=''), if items == VALUES_PER_LINE: items = 0 print("") print( "};")