Valgfri oppgave uke 7

Dette er en fortsettelse fra forrige ukes innleveringsoppgave, som du m? ha gjort for at denne oppgaven skal gi mening. Har du ikke gjort denne oppgaven, b?r du heller begynne med den og se hvor langt du kommer.

Oppgave 5 (valgfri konkurranse)

Skriv koden for denne oppgaven i en fil med navn konkurranse_DELTAKERNAVN.py, der du bytter ut DELTAKERNAVN med et valgfritt deltakernavn. Husk ? levere den filen for ? delta i konkurransen.

Her finner du en fil med et lydsignal som inneholder en hemmelig kode. Koden er vanskelig/umulig ? h?re pga st?y og andre problemer med lyden. Last ned filen og legg den i samme mappe som konkurranse.py ligger. Prekoden under viser deg hvordan du spiller av lyden.

Konkurransen g?r ut p? ? skrive kode som endrer lyden slik at du klarer ? h?re hva den hemmelige koden er. Jo renere og penere lyd du klarer ? f?, jo bedre. Det er alts? to m?l i konkurransen:

  1. F? tak i den hemmelige koden
  2. Lag en ny lyd som er s? ren og pen som mulig (lite st?y og andre artifakter). Vi vil h?re p? de ulike bidragene i neste gruppetime og sammen k?re en vinner.

Start med f?lgende prekode og f?lg instruksjonene i kommentarene:


import numpy as np
import matplotlib.pyplot as plt
import pickle

def skriv_lyd_til_fil(lydliste):
    # dette er funksjonen du har fra f?r ...
    
def les_lyd_fra_fil():
    lyd = pickle.load(open("kode.pickle", "rb"))
    return lyd


hemmelig_kode = les_lyd_fra_fil()
# hemmelig_kode er n? en liste som inneholder lyden du skal jobbe med

# Start gjerne med ? skrive lyden til fil og spille den av ? f? en fealing av hva du har ? jobbe med:
skriv_lyd_til_fil(hemmelig_kode)

# Det kan v?re lurt ? plotte lyden for ? se etter mulige problemer og ting du kan gj?re for ? forbedre signalet
plt.plot(hemmelig_kode)
plt.show()

# tips: Det kan v?re lurt ? zoome inn p? deler av plottet for ? studere det n?rmere

def fiks_lyd(lyd):
    # Implementer ditt bidrag til konkurransen i denne funksjonen
    # denne funksjonen kan kalle andre funksjoner (om du vil dele opp koden din),
    # men den skal returnere en ny liste som er den korrigerte lyden
    # det er denne lyden du vil bli vurdert p?
    pass


Et hint: St?y i lyd kommer ofte i form av enkeltverdier som er mye h?yere eller lavere enn verdier i n?rheten:

[1, 2, 3, 4, 1000, 5, 4, 3, 2, 1, 0, 1, 2, 3]

Her er typisk tallet 1000 st?y, og lyden vil h?res bedre ut om man hadde byttet ut 1000 med f. eks verdien f?r eller etter (eller gjennomsnittet/medianen av verdiene rundt).