{ "cells": [ { "cell_type": "markdown", "id": "d709b880", "metadata": {}, "source": [ "# Eingabe" ] }, { "cell_type": "markdown", "id": "5f40e11b", "metadata": {}, "source": [ "Hier könnt ihr die Aufnahme von heute herunterladen (Rechtsklick / Speichern Unter...):\n", "* 2024-06-07\n", "* 2024-06-06\n", "* 2024-03-16\n", "* 2023-04-20\n", "* 2023-06-15\n", "* 2023-03-14" ] }, { "cell_type": "markdown", "id": "6ab69020", "metadata": {}, "source": [ "In diesem Projekt arbeiten wir mit Audio-Daten.\n", "Um das Einlesen möglichst unkompliziert zu halten, stellen wir die Eingabe in einem einfachen Format bereit:\n", "\n", "```{admonition} Format\n", "Die erste Zeile enthält $n$, die Anzahl der Samples ($0 \\leq n < 2^{32}$).\n", "\n", "Danach folgen $n$ Zeilen mit jeweils einem Sample $x$ als ganze Zahl ($-2^{15} \\leq x < 2^{15}$)\n", "```\n", "\n", "Die Abtastrate $f_S$ ist dabei 16640 Hz.\n", "\n", "## Beispiel\n", "```\n", "10\n", "623\n", "-310\n", "-273\n", "3404\n", "4745\n", "655\n", "-454\n", "3463\n", "3375\n", "-5350\n", "```\n", "\n", "```{note}\n", "Die Werte der Samples sind hier zwar ganze Zahlen, aber für den Rest des Projekts ergibt es Sinn sie hier schon in Floating-Point Werte umzuwandeln.\n", "```" ] }, { "cell_type": "markdown", "id": "cfcac6c9", "metadata": {}, "source": [ "# Visualisierung\n", "\n", "In diesem Projekt kann es sehr hilfreich sein, sich nach jedem Arbeitsschritt das Ergebnis zu visualisieren.\n", "Das können wir zum Beispiel so tun:\n", "- Das Signal enthält 2 Zeilen mit je 2080 Pixeln pro Sekunde. Mit $f_S = 16640\\text{Hz}$ haben wir also 4 Samples pro Pixel.\n", "- Wir nehmen jedes 4. Sample, falls es komplex ist berechnen wir den Betrag $(a + ib \\mapsto \\sqrt{a^2+b^2} =\\mathrel{\\vcenter{:}} v)$.\n", "- Wir finden $v_{min}$ und $v_{max}$, den kleinsten bzw. größten so erhaltenen Wert.\n", " Dann skalieren wir jedes $v$ nach $255 \\cdot (v - v_{min}) / (v_{max} - v_{min})$.\n", " Damit bekommen wir einen Wert zwischen 0 und 255.\n", "- Diese Werte können wir jetzt als Pixel in einer Bilddatei abspeichern.\n", " Dazu können wir zum Beispiel das [](pgm-format) benutzen.\n", " \n", "```{figure} img/reference/raw_full_scaled.webp\n", "---\n", "name: fig:raw_full\n", "---\n", "Visualisierung direkt nach dem Einlesen.\n", "Man kann das Bild fast schon erkennen, es ist aber noch sehr dunkel.\n", "```\n", "\n", "```{figure} img/reference/raw_detail.webp\n", "---\n", "name: fig:raw_detail\n", "---\n", "Detailansicht.\n", "Hier sieht man deutliche vertikale Streifen, die von der Modulation auf den 2.4kHz Carrier kommen.\n", "```" ] } ], "metadata": { "celltoolbar": "Tags", "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.11.13" } }, "nbformat": 4, "nbformat_minor": 5 }