Exemple #1
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])
Exemple #2
0
def demo_play_combo():
    # demonstration of the optional parameters available using
    # the play function. To read about these, take a look at the
    # spreadsheet of documentation that I made for you:
    # https://docs.google.com/spreadsheets/d/1AlzpwvzsPou_gr532h8XKFWWlJY8l7QAfWFU2XXVgvI/edit#gid=860514818
    psonic.use_synth(psonic.SUBPULSE)
    play(48, amp=0.2, sustain=2, attack=1, decay=1)
Exemple #3
0
def play_c_scale_builtin():
    # so you don't have to build your scales manually
    scale_C2 = psonic.scale(psonic.C2, psonic.MAJOR)
    scale_C3 = psonic.scale(psonic.C3, psonic.MAJOR)
    scale_C4 = psonic.scale(psonic.C4, psonic.MAJOR)
    print('C2 Scale:', scale_C2)
    print('C3 Scale:', scale_C3)
    print('C4 Scale:', scale_C4)

    # listening demo:
    psonic.use_synth(psonic.PIANO)
    play(scale_C3[0])
    sleep(0.5)
    play(scale_C3[1])
    sleep(0.5)
    play(scale_C3[2])
    sleep(0.5)
    play(scale_C3[3])
    sleep(0.5)
    play(scale_C3[4])
    sleep(0.5)
    play(scale_C3[5])
    sleep(0.5)
    play(scale_C3[6])
    sleep(0.5)
    play(scale_C3[7])
Exemple #4
0
def sonic_pi(freq):
    import psonic
    psonic.use_synth(psonic.PULSE)
    while True:
        with psonic.Fx(psonic.REVERB):
            print(freq.value)
            psonic.play(freq.value, release=0.2)
            sleep(0.08)
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 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)
Exemple #7
0
def demo_play_fadeout():
    # controls the time it takes to fade-out time
    psonic.use_synth(psonic.SUBPULSE)
    play(48)  # default
    sleep(1)
    play(50, release=0.1)  # fade out
    sleep(1)
    play(52, release=0.2)  # longer fade in
    sleep(1)
    play(53, release=0.6)  # even longer fade in
    sleep(1)
Exemple #8
0
def demo_play_fadein():
    # controls the fade-in time
    psonic.use_synth(psonic.SUBPULSE)
    play(48)  # default
    sleep(1)
    play(50, attack=0.5)  # fade in
    sleep(1)
    play(52, attack=1)  # longer fade in
    sleep(1)
    play(53, attack=2)  # even longer fade in
    sleep(1)
Exemple #9
0
def riff_3(tempo: float = 60):
    speed = 60 / tempo
    psonic.use_synth(psonic.PROPHET)
    sc = psonic.scale(psonic.E2, psonic.MINOR)
    s = random.choice([0.125 * speed, 0.25 * speed, 0.5 * speed])
    for i in range(8):
        r = random.choice([0.125, 0.25, 1, 2])
        n = random.choice(sc)
        co = random.randint(30, 100)
        psonic.play(n, release=r, cutoff=co)
        psonic.sleep(s)
Exemple #10
0
def demo_play_sustain():
    # controls how long the note lasts
    psonic.use_synth(psonic.SUBPULSE)  # select a synthesizer:
    play(48)  # default
    sleep(1)
    play(50, sustain=1)  # a little longer
    sleep(1)
    play(52, sustain=2)  # a little longer
    sleep(1)
    play(53, sustain=4.5)  # even longer
    sleep(1)
Exemple #11
0
def play_happy_birthday():
    psonic.use_synth(psonic.PIANO)
    play(HAPPY_BIRTHDAY[0])
    sleep(0.25)
    play(HAPPY_BIRTHDAY[1])
    sleep(0.25)
    play(HAPPY_BIRTHDAY[2])
    sleep(0.25)
    play(HAPPY_BIRTHDAY[3])
    sleep(0.25)
    play(HAPPY_BIRTHDAY[4])
    sleep(0.25)
    play(HAPPY_BIRTHDAY[5])
    sleep(0.25)
    play(HAPPY_BIRTHDAY[6])
    sleep(0.25)
    play(HAPPY_BIRTHDAY[7])
    sleep(0.25)
    play(HAPPY_BIRTHDAY[8])
    sleep(0.25)
    play(HAPPY_BIRTHDAY[9])
    sleep(0.25)
    play(HAPPY_BIRTHDAY[10])
    sleep(0.25)
    play(HAPPY_BIRTHDAY[11])
    sleep(0.25)
    play(HAPPY_BIRTHDAY[12])
    sleep(0.25)
    play(HAPPY_BIRTHDAY[13])
    sleep(0.25)
    play(HAPPY_BIRTHDAY[14])
    sleep(0.25)
    play(HAPPY_BIRTHDAY[15])
    sleep(0.25)
    play(HAPPY_BIRTHDAY[16])
    sleep(0.25)
    play(HAPPY_BIRTHDAY[17])
    sleep(0.25)
    play(HAPPY_BIRTHDAY[18])
    sleep(0.25)
    play(HAPPY_BIRTHDAY[19])
    sleep(0.25)
    play(HAPPY_BIRTHDAY[20])
    sleep(0.25)
    play(HAPPY_BIRTHDAY[21])
    sleep(0.25)
    play(HAPPY_BIRTHDAY[22])
    sleep(0.25)
    play(HAPPY_BIRTHDAY[23])
    sleep(0.25)
    play(HAPPY_BIRTHDAY[24])
    sleep(0.25)
Exemple #12
0
def play_super_mario():
    # play the first 24 notes of Super Mario Brothers theme music
    # audio demo: https://vimeo.com/85685770
    psonic.use_synth(psonic.PIANO)
    play(SUPER_MARIO_NOTES_FIRST_24[0])
    sleep(0.1)
    play(SUPER_MARIO_NOTES_FIRST_24[1])
    sleep(0.1)
    play(SUPER_MARIO_NOTES_FIRST_24[2])
    sleep(0.1)
    play(SUPER_MARIO_NOTES_FIRST_24[3])
    sleep(0.1)
    play(SUPER_MARIO_NOTES_FIRST_24[4])
    sleep(0.1)
    play(SUPER_MARIO_NOTES_FIRST_24[5])
    sleep(0.1)
    play(SUPER_MARIO_NOTES_FIRST_24[6])
    sleep(0.1)
    play(SUPER_MARIO_NOTES_FIRST_24[7])
    sleep(0.1)
    play(SUPER_MARIO_NOTES_FIRST_24[8])
    sleep(0.1)
    play(SUPER_MARIO_NOTES_FIRST_24[9])
    sleep(0.1)
    play(SUPER_MARIO_NOTES_FIRST_24[10])
    sleep(0.1)
    play(SUPER_MARIO_NOTES_FIRST_24[11])
    sleep(0.1)
    play(SUPER_MARIO_NOTES_FIRST_24[12])
    sleep(0.1)
    play(SUPER_MARIO_NOTES_FIRST_24[13])
    sleep(0.1)
    play(SUPER_MARIO_NOTES_FIRST_24[14])
    sleep(0.1)
    play(SUPER_MARIO_NOTES_FIRST_24[15])
    sleep(0.1)
    play(SUPER_MARIO_NOTES_FIRST_24[16])
    sleep(0.1)
    play(SUPER_MARIO_NOTES_FIRST_24[17])
    sleep(0.1)
    play(SUPER_MARIO_NOTES_FIRST_24[18])
    sleep(0.1)
    play(SUPER_MARIO_NOTES_FIRST_24[19])
    sleep(0.1)
    play(SUPER_MARIO_NOTES_FIRST_24[20])
    sleep(0.1)
    play(SUPER_MARIO_NOTES_FIRST_24[21])
    sleep(0.1)
    play(SUPER_MARIO_NOTES_FIRST_24[22])
    sleep(0.1)
    play(SUPER_MARIO_NOTES_FIRST_24[23])
    sleep(0.1)
Exemple #13
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)
Exemple #14
0
def demo_play_volume_adjust():
    # controls how loud the note lasts
    psonic.use_synth(psonic.SUBPULSE)
    play(48)  # default
    sleep(1)
    play(50, sustain_level=0.2)  # soft
    sleep(1)
    play(52, sustain_level=0.4)  # a little louder
    sleep(1)
    play(53, sustain_level=0.6)  # even louder
    sleep(1)
    play(55, sustain_level=1.6)  # even louder
    sleep(1)
Exemple #15
0
def sonic_pi(freq):
    psonic.use_synth(psonic.PULSE)
    while True:
        with psonic.Fx(psonic.REVERB):
            if instrument.value == 0:
                psonic.use_synth(psonic.PULSE)
            if instrument.value == 1:
                psonic.use_synth(psonic.SAW)
            if instrument.value == 2:
                psonic.use_synth(psonic.FM)

            psonic.play(freq.value, release=0.2)
            sleep(0.08)
Exemple #16
0
def play_c_scale():
    # MIDI Notes available here:
    # https://docs.google.com/spreadsheets/d/1AlzpwvzsPou_gr532h8XKFWWlJY8l7QAfWFU2XXVgvI/edit#gid=0
    psonic.use_synth(psonic.PIANO)
    play(48)  # these are MIDI note numbers
    sleep(0.5)
    play(50)
    sleep(0.5)
    play(52)
    sleep(0.5)
    play(53)
    sleep(0.5)
    play(55)
    sleep(0.5)
    play(57)
    sleep(0.5)
    play(59)
    sleep(0.5)
    play(60)
    sleep(0.5)
    play(59)
    sleep(0.5)
    play(57)
    sleep(0.5)
    play(55)
    sleep(0.5)
    play(53)
    sleep(0.5)
    play(52)
    sleep(0.5)
    play(50)
    sleep(0.5)
    play(48)

    # play arpeggio (w/o sleep functions, notes play simultaneously):
    sleep(1)
    play(48)
    play(52)
    play(55)
    play(60)
    sleep(1)
Exemple #17
0
def make_song():
    # do something interesting here with sound:
    psonic.use_synth(psonic.PIANO)
    psonic.play(76)
    psonic.sleep(0.25)
    psonic.play(76)
    psonic.sleep(0.5)
    psonic.play(76)
    psonic.sleep(0.5)
    psonic.play(72)
    psonic.sleep(0.25)
    psonic.play(76)
    psonic.sleep(0.5)
    psonic.play(79)
    psonic.sample(psonic.DRUM_CYMBAL_SOFT)
    psonic.sleep(1)
    psonic.play(67)
    psonic.sample(psonic.DRUM_BASS_HARD)
    psonic.sleep(1)

    # ...
Exemple #18
0
def switch_synth(selected_text):
    print(selected_text)
    if selected_text == available_synths[0]:
        psonic.use_synth(psonic.PIANO)
    elif selected_text == available_synths[1]:
        psonic.use_synth(psonic.PROPHET)
    elif selected_text == available_synths[2]:
        psonic.use_synth(psonic.SAW)
Exemple #19
0
def switch_synth(selected_text):
    print(selected_text)
    # set synth according to request:
    if selected_text == available_synths[0]:
        psonic.use_synth(psonic.PIANO)
    elif selected_text == available_synths[1]:
        psonic.use_synth(psonic.PROPHET)
    elif selected_text == available_synths[2]:
        psonic.use_synth(psonic.SAW)

    psonic.play(55)
Exemple #20
0
import psonic
import threader

psonic.use_synth(psonic.BEEP)


def low_part(tempo):
    psonic.play([55, 59])
    psonic.sleep(1)
    psonic.play_pattern_timed([57], 0.5)
    psonic.play_pattern_timed([59], 1.5)
    psonic.play_pattern_timed([60], 1.5)
    psonic.play_pattern_timed([59], 1.5)
    psonic.play_pattern_timed([57], 1.5)  #b5
    psonic.play_pattern_timed([55], 1.5)  #b6
    psonic.play_pattern_timed([62, 59, 55, 62], 0.5)  #b7
    psonic.play_pattern_timed([50, 60, 59, 57], 0.25)


def high_part(tempo):
    # TODO: the tempo should be controlled by the tempo variable
    psonic.play_pattern_timed([74], 0.5)
    psonic.play_pattern_timed([67, 69, 71, 72], 0.25)
    psonic.play_pattern_timed([74, 67, 67], 0.5)
    psonic.play_pattern_timed([76], 0.5)
    psonic.play_pattern_timed([72, 74, 76, 78], 0.25)
    psonic.play_pattern_timed([79, 67, 67], 0.5)
    psonic.play_pattern_timed([72], 0.5)
    psonic.play_pattern_timed([74, 72, 71, 69], 0.25)
    psonic.play_pattern_timed([71], 0.5)
    psonic.play_pattern_timed([72, 71, 69, 67], 0.25)
Exemple #21
0
# turns on the Blinkt LEDs with relevant colour


def show_led(led_num, led_colour, delay):
    r, g, b = led_colour
    blinkt.clear()
    blinkt.set_brightness(0.1)
    blinkt.set_pixel(led_num, r, g, b)
    blinkt.show()
    time.sleep(d)


# order of synth notes being played in the sequence
notes = [psonic.G4, psonic.A4, psonic.F4, psonic.F3, psonic.C4]

# limited by the 8 pixels so mapping synth notes to index
# FXCDEFGA
# 01234567

order = [6, 7, 5, 0, 2]

# overall loop
for d in delays:
    # iterate through notes in synth sequence
    for i, note in enumerate(notes):
        psonic.use_synth(psonic.SAW)
        psonic.play(note)
        psonic.sleep(d)
        show_led(led_num=order[i], led_colour=colours[i], delay=d)
Exemple #22
0
import psonic

c_arpeggio = psonic.scale(psonic.C2, psonic.MAJOR, num_octaves=4)
print(c_arpeggio)
psonic.use_synth(psonic.PIANO)

previous_note = 1000000
start = len(c_arpeggio) - 1
end = -1  # -1 b/c range function does not include the endpoint
for i in range(start, end, -1):
    print(i)  # for debugging
    note = c_arpeggio[i]
    if note == previous_note:
        continue
    psonic.play(note)
    psonic.sleep(0.2)
    previous_note = note
Exemple #23
0
def make_song():
    # do something interesting here with sound:
    psonic.use_synth(psonic.PIANO)
    sample(psonic.DRUM_BASS_HARD)
    play(60)
Exemple #24
0
def play_song(notes, speed):
    psonic.use_synth(psonic.PIANO)
    for note in notes:
        psonic.play(note)
        psonic.sleep(speed)
Exemple #25
0
import psonic
import random

e = psonic.chord(psonic.E3, psonic.MINOR)
print(e)

# Challenge: Write a  loop that randomly plays a note from the
# e minor cord, for either 0.25, or 0.5 length of time
# after it plays 30 notes it should stop
psonic.use_synth(psonic.PROPHET)
psonic.play(e[0], release=0.6)
psonic.sleep(0.5)