Source code for pyo.lib.matrix

"""
Copyright 2009-2015 Olivier Belanger

This file is part of pyo, a python module to help digital signal
processing script creation.

pyo is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.

pyo is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public
License along with pyo.  If not, see <http://www.gnu.org/licenses/>.
"""
from ._core import *
from ._maps import *

######################################################################
### Matrix
######################################################################
[docs]class NewMatrix(PyoMatrixObject): """ Create a new matrix ready for recording. Optionally, the matrix can be filled with the contents of the `init` parameter. See :py:class:`MatrixRec` to write samples in the matrix. :Parent: :py:class:`PyoMatrixObject` :Args: width: int Desired matrix width in samples. height: int Desired matrix height in samples. init: list of list of floats, optional Initial matrix. Defaults to None. .. seealso:: :py:class:`MatrixRec` >>> s = Server().boot() >>> s.start() >>> SIZE = 256 >>> mm = NewMatrix(SIZE, SIZE) >>> mm.genSineTerrain(freq=2, phase=16) >>> lfw = Sine([.1,.11], 0, .124, .25) >>> lfh = Sine([.15,.16], 0, .124, .25) >>> w = Sine(100, 0, lfw, .5) >>> h = Sine(10.5, 0, lfh, .5) >>> c = MatrixPointer(mm, w, h, mul=.2).out() """ def __init__(self, width, height, init=None): pyoArgsAssert(self, "IIL", width, height, init) PyoMatrixObject.__init__(self) self._size = (width, height) if init is None: self._base_objs = [NewMatrix_base(width, height)] else: self._base_objs = [NewMatrix_base(width, height, init)]
[docs] def replace(self, x): """ Replaces the actual matrix. :Args: x: list of list of floats New matrix. Must be of the same size as the actual matrix. """ pyoArgsAssert(self, "l", x) [obj.setMatrix(x) for obj in self._base_objs] self.refreshView()
[docs] def getRate(self): """ Returns the frequency (cycle per second) to give to an oscillator to read the sound at its original pitch. """ return self._base_objs[0].getRate()
[docs] def genSineTerrain(self, freq=1, phase=0.0625): """ Generates a modulated sinusoidal terrain. :Args: freq: float Frequency of sinusoids used to created the terrain. Defaults to 1. phase: float Phase deviation between rows of the terrain. Should be in the range 0 -> 1. Defaults to 0.0625. """ pyoArgsAssert(self, "NN", freq, phase) [obj.genSineTerrain(freq, phase) for obj in self._base_objs] self.refreshView()