Source code for audiorepr.mapper

[docs]class BaseMapper:
[docs] def __init__( self, pitch_min=None, pitch_max=None, data_min=None, data_max=None, **params ): self.name = "basemapper" if pitch_min is None: self.pitch_min = 16 if pitch_max is None: self.pitch_max = 96 self.data_min = data_min self.data_max = data_max
def _mapper(self, data, **params): raise NotImplementedError("Please implement this method") def map(self, data, **params): return self._mapper(data, **params)
[docs]class LinearMinMaxMapper(BaseMapper):
[docs] def __init__( self, pitch_min=None, pitch_max=None, data_min=None, data_max=None, **params ): super().__init__( pitch_min=pitch_min, pitch_max=pitch_max, data_min=data_min, data_max=data_max, **params ) self.name = "LinearMinMaxMapper"
def _transformed_pitch(self, x, data_max, data_min): return int( self.pitch_min + (x - data_min) * (self.pitch_max - self.pitch_min) / (data_max - data_min) ) def _mapper(self, data, **params): data_min = params.get("data_min", self.data_min) data_max = params.get("data_max", self.data_max) if data_min is None: data_min = min(data) if data_max is None: data_max = max(data) res = [self._transformed_pitch(i, data_max, data_min) for i in data] return res