#!/usr/bin/python # This program uses Pydemod, see https://github.com/ChristopheJacquet/Pydemod import pydemod.app.rds as rds import pydemod.modulation.am as am import numpy import scipy.io.wavfile as wavfile import io sample_rate = 228000 outc = io.open("waveforms.c", mode="w", encoding="utf8") outh = io.open("waveforms.h", mode="w", encoding="utf8") header = u""" /* This file was automatically generated by "generate_waveforms.py". (C) 2014 Christophe Jacquet. Released under the GNU GPL v3 license. */ """ outc.write(header) outh.write(header) def format_number(x): if abs(x) < 1e-10: return u"0" else: return unicode(x) def generate_bit_in_context(pattern, name): offset = 240 l = 96 count = 2 shapedSamples = rds.unmodulated_signal(pattern, sample_rate) out = shapedSamples #[offset:offset+l*count] iout = (out * 20000./max(abs(out)) ).astype(numpy.dtype('>i2')) wavfile.write(u"waveform_{}.wav".format(name), sample_rate, iout) outc.write(u"float waveform_{name}[] = {{{values}}};\n\n".format( name = name, values = u", ".join(map(format_number, out)))) outh.write(u"extern float waveform_{name}[{size}];\n".format(name=name, size=len(out))) generate_bit_in_context([1], "biphase") #generate_bit_in_context([0, 1, 0], "different") outc.close() outh.close()