class MonophonicScaleSynth(Instrument):

    def __init__(self, samplerate, buffer_size, scale):
        Instrument.__init__(self)
        self.scale = scale
        self.oscillator = Oscilator(samplerate, buffer_size)
        self.oscillator.start()
        self._callback = self.oscillator.callback

    def set_scale(self, scale):
        self.scale = scale

    def on(self, tone, time=0):
        frequency = self.scale.get_frequency(tone)
        self.oscillator.setFreq(frequency)
        Instrument.on(self, tone, time=time)

    def __str__(self):
        return "MonophonicScaleSynth %s" % str(self.scale)