from random import randint import simpleaudio import numpy as np import matplotlib.pyplot as plt def spill_lyd(lydliste): lyd = np.array(lydliste).astype(np.int16) lydobjekt = simpleaudio.play_buffer(lyd, 1, 2, 4400) lydobjekt.wait_done() def tilfeldig_lyd(antall_sekunder): lyd = [] for i in range(44100 * antall_sekunder): lyd.append(randint(0, 32767)) return lyd def lag_firkant_lyd(antall_sekunder): lyd = [] # indre del av for-l?kken lager ¨Śn "firkant". S? repeterer vi det mange ganger # vi vil totalt ha antall sekunder ganger 44100 elementer for ? f? en lyd p? "antall_sekunder" # ettersom hver iterasjon av den ytre for-l?kken lager 100 elementer, deler vi p? 100 i range for i in range(int(antall_sekunder * 44100 / 100)): for j in range(0, 50): lyd.append(32000) for j in range(0, 50): lyd.append(0) return lyd # denne funksjonen er lik som firkant-lyd, bortsett fra den indre delen def lag_trekant_lyd(antall_sekunder): lyd = [] for i in range(int(antall_sekunder * 44100 / 100)): for j in range(0, 50): lyd.append(j * 32000 / 50) for j in range(0, 50): lyd.append(32000 - j*32000 / 50) return lyd # alternativ l?sning p? "trekant-lyd" # vi definerer et steg f?rst, som gj?r koden litt ryddigere og enklere ? forst? def trekant_lyd_alternativ(antall_sekunder): lyd = [] # lave verdier steg = 32000 / 50 for j in range(round(44000 * antall_sekunder / 100)): verdi = 0 for i in range(50): lyd.append(verdi) verdi += steg verdi = 32000 # H?ye verdier for i in range(50): lyd.append(verdi) verdi -= steg return lyd def lyd_sinus(antall_sekunder, frekvens): lyd = [] for i in range(44100 * antall_sekunder): lyd.append(16000 * (1 + np.sin(frekvens * i/44100 * 2 * np.pi))) return lyd lyd = lyd_sinus(3, 440) spill_lyd(lyd) plt.plot(lyd) plt.show()