
# Codierung

<notes>
 * Audio-Daten (Schallwellen)
 * digital codiert
 * auch beschädigt abspielbar
</notes>

---

## Codierung von Ton

<div class="overlay-container">
  <div class="fragment"><img height="350px" src="img/nyquist-shannon-1.svg"></div>
  <div class="fragment"><img height="350px" src="img/nyquist-shannon-2.svg"></div>
  <div class="fragment"><img height="350px" src="img/nyquist-shannon-3.svg"></div>
</div>

<notes>
 * Schallwellen (grün)
 * Annäherung an Schallwellen
 * Samples (rot)
 * repräsentiert: Zeitpunkt und Amplitude (wie stark oben/unten; Lautstärke)
 * ungefähres Signal kann rekonstruiert werden
</notes>

---

## Fehlerkorrektur

<script>
document.addEventListener('DOMContentLoaded', () => {
  const cycles = {
    fehlerkorrektur: ['img/fehlerkorrektur.svg', 'img/fehlerkorrektur-scrambled.svg']
  }

  function setCycle(id, cycle) {
    let image = document.getElementById(id)
    src = cycles[id][cycle]
    if (src === undefined) {
      src = 'data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw=='
    }
    image.src = src
  }

  Reveal.addEventListener('fragmentshown', e => {
    let el = e.fragment
    if (el.hasAttribute('data-cycle')) setCycle(el.getAttribute('data-id'), el.getAttribute('data-cycle'))
  })

  Reveal.addEventListener('fragmenthidden', e => {
    let el = e.fragment
    if (el.hasAttribute('data-cycle')) setCycle(el.getAttribute('data-id'), el.getAttribute('data-cycle') - 1)
  })
})
</script>

<img id="fehlerkorrektur" src="" height="500px">
<div class="fragment" data-id="fehlerkorrektur" data-cycle="0"></div>
<div class="fragment" data-id="fehlerkorrektur" data-cycle="1"></div>

<notes>
 * auch sehr komplexes Thema, wieder stark vereinfacht
 * Datenstrom wird unterteilt
 * an jedes Paket: Prüfsumme
 * kann Fehler im Paket erkennen und korrigieren
 * zusätzlich: verteilt
 * kann trotz 2.4 mm langen Kratzern abspielen
</notes>
