both yours and Maruc solutions work very well, didn't spot any visual
difference between them, so thank you both

V V sre., 26. maj 2021 ob 18:50 je oseba Achilleas Anastasopoulos <
[email protected]> napisala:

> Hi all,
>
> I do not think that the proposed algorithm by Marcus is the correct way to
> implement this block,
> because it assumes that the frequency has remained the same throughout the
> life of the block!
> The correct way is to keep a state variable (say, "self.phase") that is
> initialized to 0 and  records the accumulated state (modulo 2 pi) up to the
> last call of work.
> Then in one call of work you should just generate the sin wave as
> suggested:
>
> f_rel = 2 * np.pi * self.frequency / self.sample_rate
> number = len(output_items[0])
> phases = (f_rel * np.arange(0,number)+self.phase ) % (2*np.pi)
> output_items[0][:] = self.amplitude*np.sin(phases)
> self.phase=phases[-1]+ f_rel
>
> best
> Achilleas
>

Reply via email to