def synthwave_offbeat_bass():
    bar_number = Metronome().bar_number % 4
    notes = [sp.C1, sp.C1, sp.Ds1, sp.As0]

    Metronome().beat_sleep(wait_len=1 / 4)
    for _ in range(3):
        sp.use_synth(sp.TB303)
        octave_notes = [notes[bar_number - 1], notes[bar_number - 1] + 12]
        sp.play(octave_notes, sustain=0.1, release=0.1, amp=0.9, cutoff=110)
        Metronome().beat_sleep(wait_len=1 / 4)
Beispiel #2
0
def simple_four_chords():
    bar_number = Metronome().bar_number % 4

    chords = [
        sp.chord(sp.C3, sp.MINOR),
        sp.chord(sp.C3, sp.MINOR),
        sp.chord(sp.Ds3, sp.MAJOR),
        sp.chord(sp.As2, sp.MAJOR),
    ]

    sp.use_synth(sp.TB303)
    sp.play(chords[bar_number - 1], amp=1.4, release=1.2)
    Metronome().beat_sleep(wait_len=4)
    def play_clip(self):
        Metronome().wait_for_tick()
        Metronome().beat_sleep(self.clip.beat_offset)

        if self.id == "perform":
            while True:
                while not callable(self.clip.func):
                    Metronome().wait_for_tick()

                self.clip.func()
                self.clip.func = None
        else:
            while self.enabled:
                if callable(self.clip.func):
                    self.clip.func()
Beispiel #4
0
def whimsical_melody_lead():
    notes = [
        # bar 1
        (None, 1),
        (sp.Ds4, 1),
        (sp.C4, 1),
        (sp.As4, 1 / 4),
        (sp.C4, 3 / 4),
        # bar 2
        (sp.C4, 1),
        (sp.Ds4, 1),
        (sp.C4, 1),
        (None, 1),
        # bar 3
        (None, 1),
        (sp.Ds4, 1),
        (sp.C4, 1),
        (sp.As4, 1 / 4),
        (sp.C4, 3 / 4),
        # bar 4
        (sp.C4, 1),
        (sp.Ds4, 1),
        (sp.C4, 1),
        (sp.As4, 1),
    ]

    for note in notes:
        sp.use_synth(sp.PLUCK)
        sp.play(note[0], amp=2)
        Metronome().beat_sleep(note[1])
def three_quarter_notes_descending_arp():
    notes = sp.scale(root_note=sp.C5,
                     scale_mode=sp.MINOR_PENTATONIC,
                     num_octaves=1)
    for i in range(3):
        sp.use_synth(sp.SINE)
        sp.play(notes[-(i + 1)], release=0.1, amp=0.5)

        Metronome().beat_sleep(wait_len=0.25)
    def __init__(self, bpm=120, ticks_per_beat=4):
        self.metronome = Metronome(bpm, ticks_per_beat)

        self.trigger_events = dict()

        self.kick = Track("kick")
        self.snare = Track("snare")
        self.perc = Track("perc")
        self.sample = Track("sample")
        self.bass = Track("bass")
        self.lead = Track("lead")
        self.arp = Track("arp")
        self.chord = Track("chord")
        self.perform = Track("perform")

        # Perform is a 'hot' track
        self.perform.enable()

        self.all_tracks = [
            self.kick, self.snare, self.perc, self.sample, self.bass,
            self.lead, self.arp, self.chord, self.perform
        ]
class Sequencer:
    def __init__(self, bpm=120, ticks_per_beat=4):
        self.metronome = Metronome(bpm, ticks_per_beat)

        self.trigger_events = dict()

        self.kick = Track("kick")
        self.snare = Track("snare")
        self.perc = Track("perc")
        self.sample = Track("sample")
        self.bass = Track("bass")
        self.lead = Track("lead")
        self.arp = Track("arp")
        self.chord = Track("chord")
        self.perform = Track("perform")

        # Perform is a 'hot' track
        self.perform.enable()

        self.all_tracks = [
            self.kick, self.snare, self.perc, self.sample, self.bass,
            self.lead, self.arp, self.chord, self.perform
        ]

    def start(self):
        while self.metronome.is_active:
            self.metronome.tick()

            print(self.metronome.tick_tuple)

            if self.metronome.tick_tuple in self.trigger_events:
                func = self.trigger_events[self.metronome.tick_tuple]
                if callable(func):
                    func()

            self.metronome.cue()
            self.metronome.tick_sleep()

    def enable_tracks(self, tracks_to_enable, exclusive=False):
        for t in self.all_tracks:
            if (isinstance(tracks_to_enable, list)
                    and t in tracks_to_enable) or (t == tracks_to_enable):
                t.enable()
            elif exclusive:
                t.disable()

    def disable_tracks(self, tracks_to_disable, exclusive=False):
        for t in self.all_tracks:
            if (isinstance(tracks_to_disable, list)
                    and t in tracks_to_disable) or (t == tracks_to_disable):
                t.disable()
            elif exclusive:
                t.enable()

    def stop(self):
        for t in self.all_tracks:
            t.disable()

    def register_event(self, func, bar, beat=1, tick=1):
        self.trigger_events[(bar, beat, tick)] = func

    def set_length(self, bars, beats=0, ticks=0):
        ticks_in_bars = (bars * self.metronome.beats_per_bar *
                         self.metronome.ticks_per_beat)
        ticks_in_beats = (beats * self.metronome.ticks_per_beat)

        total_ticks = ticks_in_bars + ticks_in_beats + ticks + 1

        self.metronome.stop_at(total_ticks)
def quiet_kick():
    sp.sample(sp.BD_HAUS, amp=1.5)
    Metronome().beat_sleep(1)
def four_to_the_floor():
    sp.sample(sp.BD_HAUS, amp=2.5)
    Metronome().beat_sleep(1)
Beispiel #10
0
def vinyl_hiss():
    sp.sample(sp.VINYL_HISS, rate=7, amp=3)
    Metronome().beat_sleep(wait_len=2)
def one_beat_hi_hat():
    sp.sample(sp.DRUM_CYMBAL_CLOSED, amp=2.5)
    Metronome().beat_sleep(wait_len=1)
def quarter_note_closed_cymbals():
    sp.sample(sp.DRUM_CYMBAL_CLOSED, amp=2.5)
    Metronome().beat_sleep(wait_len=1 / 4)
def two_beat_snare():
    if Metronome().beat_number % 2 == 0:
        sleep(0.005)
        sp.sample(sp.SN_DUB, amp=2)

    Metronome().beat_sleep(wait_len=1)