diff --git a/common.py b/common.py index c418e96..a781e39 100644 --- a/common.py +++ b/common.py @@ -7,7 +7,7 @@ log = logging.getLogger(__name__) Fs = 32e3 Ts = 1.0 / Fs -frequencies = (np.arange(10) + 1) * 1e3 +frequencies = (1 + np.arange(1)) * 1e3 carrier_index = 0 Fc = frequencies[carrier_index] Tc = 1.0 / Fc diff --git a/loop.py b/loop.py index 7d1f2b7..8aa2193 100644 --- a/loop.py +++ b/loop.py @@ -22,14 +22,8 @@ class Filter(object): class FreqLoop(object): - def __init__(self, x, freqs, prefix=0.0): + def __init__(self, src, freqs): interp = sampling.Interpolator() - if prefix is None: - prefix = [] - else: - prefix = [prefix] * (interp.width - 1) - - src = itertools.chain(prefix, x) self.sampler = sampling.Sampler(src, interp) self.gens = [] diff --git a/sampling.py b/sampling.py index dbccfdb..40605dd 100644 --- a/sampling.py +++ b/sampling.py @@ -1,4 +1,5 @@ import numpy as np +import itertools import logging log = logging.getLogger(__name__) @@ -32,12 +33,14 @@ class Interpolator(object): class Sampler(object): def __init__(self, src, interp=None): - self.src = iter(src) self.freq = 1.0 self.interp = interp if (interp is not None) else Interpolator() - coeffs, begin = self.interp.get(0) - self.offset = -begin # should fill samples buffer - self.buff = np.zeros(len(coeffs)) + + # TODO: explain indices arithmetic + padding = [0.0] * (self.interp.width - 1) + self.src = itertools.chain(padding, src) + self.offset = self.interp.width + 1 + self.buff = np.zeros(self.interp.coeff_len) self.index = 0 def __iter__(self): diff --git a/test.sh b/test.sh index 76833fc..8a6d3d1 100755 --- a/test.sh +++ b/test.sh @@ -2,7 +2,7 @@ set -u set -e -dd if=/dev/urandom of=data.send bs=1024 count=16 +dd if=/dev/urandom of=data.send bs=128 count=1 status=none ./send.py tx.int16 killall arecord aplay || true