示例#1
0
class Sequencer(object):
    def __init__(self):
        self.tracks = dict()
        self.sequences = dict()
        self.mixer = Mixer()


    def add_track(self, track_id, track_name, input_component, output_component):
        output_component = Amplifier(source=output_component,
                                     gain=Config.MaxGain,
                                     attenuate=0.5)
        self.tracks[track_id] = (track_name, input_component, output_component)
        self.mixer.add_track(track_id, track_name, output_component)
        self.sequences[track_id] = list()


    def add_sequence(self, track_id, sequence_data):
        self.sequences[track_id].extend(sequence_data)


    def get_value(self, tick):
        for (track_id, sequence_data) in self.sequences.items():
            if tick > sequence_data[0][2]:
                del sequence_data[0]

            if len(sequence_data) == 0:
                return None

            (attenuate, frequency, off_tick) = sequence_data[0]
            (track_name, input_component, output_component) = self.tracks[track_id]

            input_component.frequency = frequency
            output_component.attenuate = attenuate

        return self.mixer.get_value(tick)
示例#2
0
class Tone(object):
    def __init__(self):
        self.osc1 = SquareWaveOscillator()
        self.osc2 = SquareWaveOscillator()

        self.mixer = Mixer()
        self.mixer.add_track(0, "base_tone", Gate(source=self.osc1, state=(True, False)))
        self.mixer.add_track(1, "detuned_tone",
                             Gate(Inverter(
                                 source=FrequencyModulator(
                                     source=self.osc2,
                                     delta=ConstantValueGenerator(2))),
                                  state=(False, True)))

    def get_value(self, tick):
        return self.mixer.get_value(tick)
    
    def get_frequency(self):
        return self.osc1.frequency

    def set_frequency(self, value):
        self.osc1.frequency = value
        self.osc2.frequency = value

    frequency = property(get_frequency, set_frequency)
示例#3
0
class Sequencer(object):
    def __init__(self):
        self.tracks = dict()
        self.sequences = dict()
        self.mixer = Mixer()


    def add_track(self, track_id, track_name, input_component, output_component):
        output_component = Amplifeir(source=output_component,
                                     gain=Config.MaxGain,
                                     attenuate=0.5)
        self.tracks[track_id] = (track_name, input_component, output_component)
        self.mixer.add_track(track_id, track_name, output_component)
        self.sequences[track_id] = list()

        
    def add_sequence(self, track_id, sequence_data):
        self.sequences[track_id].extend(sequence_data)
        #print  "Track: " + str(self.sequences[track_id])


    def get_value(self, tick):
        #print  "@get_value: " + str(self.sequences)
        for (track_id, sequence_data) in self.sequences.items():
            if tick > sequence_data[0][2]:
                del sequence_data[0]

            if len(sequence_data) == 0:
                return None
            
            (attenuate, frequency, off_tick) = sequence_data[0]
            ##print  "@get_value: sequence = " + str(frequency)

            (track_name, input_component, output_component) = self.tracks[track_id]

            input_component.frequency = frequency
            output_component.attenuate = attenuate

        return self.mixer.get_value(tick)

    #def debug_args(self):
        #print  "tracks = " + str(self.tracks)
        #print  "sequences = " + str(self.sequences)
        ##print  "mixer = " + str(mixer)
示例#4
0
class Tone(object): # ステレオコーラス
    def __setattr__(self, name, value):
        if name == "frequency":
            self.osc1.frequency = value
            self.osc2.frequency = value
        else:
            object.__setattr__(self, name, value)


    def __init__(self):
        self.osc1 = SquareWaveOscillator()
        self.osc2 = SquareWaveOscillator()

        mod_osc2 = Inverter(source=FrequencyModulator(source=self.osc2,
                                                  delta=ConstantValueGenerator(2.0)))

        self.mixer = Mixer()
        self.mixer.add_track(0, "base_tone", Gate(source=self.osc1, state=(True, False)))
        self.mixer.add_track(1, "detuned_tone", Gate(source=mod_osc2, state=(False, True)))


    def get_value(self, tick):
        return self.mixer.get_value(tick)