Ejemplo n.º 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)
Ejemplo n.º 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)
Ejemplo n.º 3
0
def percusstion_test():
    bass_base = Subtraction(SineWaveOscillator(frequency=40.0),
                            Amplifier(source=SquareWaveOscillator(frequency=80.0, duty=0.125),
                                      gain=1,
                                      attenuate=0.075))

    bass_drum = Multiplication(bass_base,
                               LFO(oscillator_class=SawWaveOscillator, frequency=1.0, duty=0.5))

    snare_drum = Multiplication(NoiseGenerator(frequency=6000.0),
                                LFO(oscillator_class=SawWaveOscillator, frequency=1.0, duty=0.25))

    hihat = Multiplication(NoiseGenerator(frequency=44100.0),
                           LFO(oscillator_class=SawWaveOscillator, frequency=4.0, duty=0.25))


    mixer = Mixer()
    mixer.add_track(0, "bus_drum", bass_drum)
    mixer.add_track(1, "snare_drum", snare_drum)
    mixer.add_track(2, "hihat", hihat)

    amplifire = Amplifier(source=mixer, gain=Config.ValueRange[0], attenuate=1.0)
    sink = WaveFileSink(output_file_name="output.wav")
    clock = Clock(end=Config.SampleRate * 3)

    renderer = Renderer(clock=clock, source=amplifire, sink=sink)
    renderer.do_rendering()
Ejemplo n.º 4
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)
Ejemplo n.º 5
0
    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)))
Ejemplo n.º 6
0
def chorus_test():
    osc1 = SquareWaveOscillator(frequency=440.0)
    osc2 = Inverter(source=FrequencyModulator(source=osc1,
                                              delta=Multiplication(
                                                  ConstantValueGenerator(2.0),
                                                  LFO(oscillator_class=SineWaveOscillator,
                                                      frequency=3.0))))


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

    amplifire = Amplifier(source=mixer, gain=Config.MaxGain, attenuate=0.75)
    sink = WaveFileSink(output_file_name="output.wav")
    clock = Clock(end=Config.SampleRate)

    renderer = Renderer(clock=clock, source=amplifire, sink=sink)
    renderer.do_rendering()
Ejemplo n.º 7
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)
Ejemplo n.º 8
0
 def __init__(self):
     self.tracks = dict()
     self.sequences = dict()
     self.mixer = Mixer()
if __name__ == "__main__":
    # print docstring
    print(__doc__)
    # make network object
    net1 = Network()
    # feed to reactor
    i1outlets = {'i1': StreamGen(H2=60, CO2=20)}
    net1.add_component('I1', Feed(i1outlets))
    # mixer for recycle and feed
    mix1inlets = {
        'i1': StreamGen(H2=60, CO2=20),
        's11': StreamGen(H2=60, CO2=20, CO=5)
    }
    mix1outlets = {'m11': StreamGen()}
    net1.add_component('M1', Mixer(mix1inlets, mix1outlets))
    # methanol reactor
    TEMP_MEOH = 673
    PRESS_MEOH = 37500
    r1inlets = {'m11': StreamGen(H2=100, CO2=35, MEOH=5, H2O=5, CO=5)}
    r1outlets = {'r11': StreamGen()}
    net1.add_component(
        'R1',
        Reactor(TEMP_MEOH, PRESS_MEOH, r1inlets, r1outlets, MethanolReactor))
    # splitter for recycle
    s1inlets = {'f11': StreamGen(CO2=20, H2=60, CO=5)}
    s1outlets = {'s11': StreamGen(), 's12': StreamGen()}
    net1.add_component('S1', Splitter(s1inlets, s1outlets, 0.98, 's11'))
    # purge outlet
    purge1inlets = {'s12': StreamGen(CO2=1, CO=1, H2=1)}
    net1.add_component('Purge1', Removal(purge1inlets))