Im Rahmen der Übung sollte ein Projekt erstellt werden, welches Bezug zu den Themen der Übung hatte und in irgendeiner Form mit der Verarbeitung von Musikdaten zu tun hat. Da ich schon etwas Erfahrung mit dem Programmieren hatte und auch Spaß daran habe, habe ich mich entschieden, ein etwas komplexeres Projekt zu erstellen. Ich kannte bereits ein Spiel, das mit der Lautstärke der Stimme gesteuert werden kann („Scream Go Hero“). So kam ich auf die Idee, ein Spiel zu entwickeln, welches mithilfe der Tonhöhe gesteuert werden kann. Ich habe mich für einen Side-Scroller entschieden, da mir dieses Spielkonzept einfach genug erschien, um es nur mithilfe der Tonhöhe der Stimme oder eines Instrumentes zu steuern. Um die Tonhöhe in Echtzeit zu erkennen, wurde die Bibliothek PyAudio verwendet, die ich bereits in einer Hausaufgabe im Rahmen des Seminars etwas näher betrachtet habe. Zur Realisierung des Spiels wurde die Bibliothek pygame verwendet, für die es sehr viele Tutorials im Internet gibt.
Inhaltsverzeichnis
- 1. Einleitung
- 2. Verwendete Bibliotheken
- 2.1 pygame
- 2.2 PyAudio
- 2.3 NumPy und SciPy
- 3. Verschiedene Algorithmen zur Tonhöhenerkennung
- 3.1 Nulldurchquerungsrate
- 3.2 Autokorrelation
- 3.3 (p)YIN-Kalkulator
- 3.4 Signalspitzenauswahl
- 4. Dokumentation des eigenen Programms
- 4.1 pitch_detection.py
- 4.2 main_.py
- 4.3 loudness_threshold.py
- 5. Fazit
Zielsetzung und Themenschwerpunkte
Das Projekt zielt darauf ab, ein Spiel zu entwickeln, das mit der Tonhöhe der Stimme oder eines Instruments gesteuert wird. Es handelt sich um einen Side-Scroller, dessen Steuerung ausschließlich über die Echtzeit-Erkennung der Tonhöhe erfolgt. Die Arbeit untersucht verschiedene Algorithmen zur Tonhöhenerkennung und deren Implementierung in Python.
- Entwicklung eines tonhöhenbasierten Spiels
- Implementierung verschiedener Tonhöhenerkennungsalgorithmen
- Verwendung der Bibliotheken PyAudio, pygame, NumPy und SciPy
- Vergleich der Effizienz verschiedener Algorithmen
- Echtzeit-Audioverarbeitung
Zusammenfassung der Kapitel
1. Einleitung: Dieses Kapitel beschreibt die Motivation und den Hintergrund des Projekts. Der Autor erklärt seinen Wunsch, ein komplexeres Projekt im Rahmen der Übung zu erstellen, und wählt ein tonhöhenbasiertes Side-Scroller-Spiel als Ziel. Die Wahl der Bibliotheken PyAudio und pygame wird begründet, wobei auf vorhandenes Vorwissen und die Verfügbarkeit von Tutorials verwiesen wird. Das Projekt ist inspiriert von einem bereits existierenden Spiel, das mit der Lautstärke der Stimme gesteuert wird.
2. Verwendete Bibliotheken: Dieses Kapitel beschreibt die verwendeten Python-Bibliotheken. Es wird detailliert auf pygame, eine Bibliothek zur Spieleentwicklung, PyAudio für die Echtzeit-Audioeingabe, sowie NumPy und SciPy für numerische Berechnungen eingegangen. Für jede Bibliothek werden Lizenz, Verfügbarkeit, Funktionen und die verwendete Version genannt. Besondere Aufmerksamkeit wird der Bibliothek librosa gewidmet, die jedoch nur in einer früheren Version verwendet wurde. Die Beschreibungen umfassen die Funktionalität, Vorteile und die Gründe für die Auswahl.
3. Verschiedene Algorithmen zur Tonhöhenerkennung: Dieses Kapitel befasst sich mit verschiedenen Algorithmen zur Tonhöhenerkennung, die im Projekt implementiert wurden. Es werden die Nulldurchquerungsrate, die Autokorrelation und der (p)YIN-Algorithmus detailliert erläutert. Für jeden Algorithmus werden die Funktionsweise, Stärken, Schwächen und Limitationen beschrieben. Besondere Aufmerksamkeit wird auf die Unterschiede zwischen dem YIN und dem pYIN Algorithmus gelegt, mit Betonung auf der Verbesserung der Genauigkeit durch das probabilistische Modell des pYIN Algorithmus. Die Ausführungen belegen ein tiefes Verständnis der jeweiligen Algorithmen und ihrer Anwendung in der Tonhöhenerkennung.
Schlüsselwörter
Tonhöhenerkennung, PyAudio, pygame, NumPy, SciPy, Echtzeit-Audioverarbeitung, Algorithmenvergleich, Side-Scroller, Spielentwicklung, Python, (p)YIN, Autokorrelation, Nulldurchquerungsrate.
Häufig gestellte Fragen (FAQ) zum Dokument: Tonhöhenbasiertes Spiel
Welche Bibliotheken wurden in diesem Projekt verwendet?
Das Projekt verwendet die Python-Bibliotheken Pygame für die Spieleentwicklung, PyAudio für die Echtzeit-Audioeingabe sowie NumPy und SciPy für numerische Berechnungen. Die Bibliothek librosa wurde in einer früheren Version verwendet, wird aber im aktuellen Stand nicht mehr eingesetzt. Für jede Bibliothek werden Lizenz, Verfügbarkeit, Funktionen und die verwendete Version detailliert beschrieben.
Welche Algorithmen zur Tonhöhenerkennung wurden implementiert?
Das Projekt implementiert und vergleicht verschiedene Algorithmen zur Tonhöhenerkennung: die Nulldurchquerungsrate, die Autokorrelation und den (p)YIN-Algorithmus. Für jeden Algorithmus werden Funktionsweise, Stärken, Schwächen und Limitationen erläutert. Besonderes Augenmerk liegt auf den Unterschieden zwischen YIN und pYIN, wobei die Verbesserung der Genauigkeit durch das probabilistische Modell von pYIN hervorgehoben wird.
Was ist das Ziel des Projekts?
Das Projekt zielt auf die Entwicklung eines Side-Scroller-Spiels ab, das ausschließlich über die Echtzeit-Erkennung der Tonhöhe der Stimme oder eines Instruments gesteuert wird. Es soll verschiedene Algorithmen zur Tonhöhenerkennung implementieren und deren Effizienz vergleichen.
Wie ist das Dokument strukturiert?
Das Dokument enthält eine Einleitung, eine Beschreibung der verwendeten Bibliotheken, eine detaillierte Erläuterung der implementierten Tonhöhenerkennungsalgorithmen, eine Dokumentation des Programms (mit Angaben zu den Dateien `pitch_detection.py`, `main_.py` und `loudness_threshold.py`) und ein Fazit. Es beinhaltet außerdem ein Inhaltsverzeichnis, eine Zusammenfassung der Kapitel und eine Liste der Schlüsselwörter.
Welche Art von Spiel wurde entwickelt?
Es wurde ein tonhöhenbasiertes Side-Scroller-Spiel entwickelt. Die Steuerung des Spiels erfolgt komplett über die Echtzeit-Erkennung der Tonhöhe.
Welche Schlüsselwörter beschreiben das Projekt am besten?
Schlüsselwörter sind: Tonhöhenerkennung, PyAudio, pygame, NumPy, SciPy, Echtzeit-Audioverarbeitung, Algorithmenvergleich, Side-Scroller, Spielentwicklung, Python, (p)YIN, Autokorrelation, Nulldurchquerungsrate.
Wo finde ich die Programmdateien?
Die Dokumentation beschreibt die Programmdateien `pitch_detection.py`, `main_.py` und `loudness_threshold.py`.
- Quote paper
- Erik Winkelmann (Author), 2022, Ein Musikspiel in Python. Entwicklung eines Side-Scrollers kontrollierbar durch Tonhöhe, Munich, GRIN Verlag, https://www.grin.com/document/1300937