From 30ec459a222a5e1771f2af460dc7be0df77440eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A1s=20Veres-Szentkir=C3=A1lyi?= Date: Mon, 1 Jul 2013 20:36:28 +0200 Subject: [PATCH] precalculate additive noise --- pysstv/sstv.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/pysstv/sstv.py b/pysstv/sstv.py index ecd5cca..1d19a9a 100644 --- a/pysstv/sstv.py +++ b/pysstv/sstv.py @@ -4,7 +4,7 @@ from __future__ import division, with_statement from math import sin, pi, floor from random import random from contextlib import closing -from itertools import imap +from itertools import imap, izip, cycle from array import array import wave @@ -58,8 +58,9 @@ class SSTV(object): lowest = -amp highest = amp - 1 chans = range(self.nchannels) - for value in self.gen_values(): - sample = int(round(value * amp + alias * (random() - 0.5))) + alias_cycle = cycle((alias * (random() - 0.5) for _ in xrange(1024))) + for value, alias_item in izip(self.gen_values(), alias_cycle): + sample = int(round(value * amp + alias_item)) for chan in chans: yield (lowest if sample <= lowest else sample if sample <= highest else highest)