Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

abgeschlossene_projekte:robeat

Dokumentation Robeat

Einführung:

Robeat hat zum einen die Aufgabe, einen geklatschten Rhythmus mithilfe eines Mikrofons zu erkennen und abzuspeichern. Anhand dieser Daten kreiert RoBeat mithilfe verschiedenster einstellbarer Algorithmen einen eigenen Rhythmus. Man könnte sagen, er improvisiert, auf Basis eines vorgespielten Beats. Später gibt er diesen Rhythmus über verschiedene Perkussionsinstrumente durch Hubmagneten aus. Zum anderen nimmt er durch ein weiteres Mikrofon eine im Idealfall geflötete Melodie auf, erkennt die Tonfrequenzen und gibt diese, nach Verarbeitung, durch Lautsprecher aus. Nach einer einmaligen Aufnahmezeit zu Beginn, kann der Roboter nun eigenständig Musik machen, ohne dass man weiter klatschen oder flöten muss.

Methoden/Umsetzung:

Überblick über das Gesamtsystem:

Robeat besteht aus einer Art quadratischem Holztisch ohne Tischplatte an dem ein Putzeimer, ein Wok und eine metallene Keksdose, sowie die dazugehörigen Hubmagneten, befestigt sind. Das Breadboard mit Mikrofon zur Beataufnahme samt Arduino, welches mit den Hubmagneten durch verschiedenfarbige Kabel verbunden ist, befindet sich auf dem Holzrahmen. Das Breadboard mit Mikro und Teensy, das für die Melodie zuständig ist, ist durch eine Klinkenbuchse mit einem Lautsprecher verbunden. Diese Objekte sind ebenfalls auf dem Holzrahmen befestigt. Die Instrumente (Wok, Eimer, Dose) sind an dünnem, stabilem Nylonfaden aufgehängt, um eine Dämfung ihrer Schwingungen zu vermeiden.

Die Funktionsweise des Gesamtsystems ist wie folgt: Ein an den Arduino angeschlossenes Mikrofon zeichnet nach Programmstart das Klatschen über eine vorgegebenen Zeitraum auf und das Programm analysiert die zeitlichen Abstände zwischen den Geräuschpeaks via eines Hystereseverfahrens. Diese Intervalle werden als Variable gespeichert. Anschließend initiiert das Programm die Ausgabe dieser Geräuschpeaks im selben soeben aufgezeichneten Rhythmus auf den Percussiongeräten. Dies wird über die Regelung von hoher und niedriger Spannung an den Hubmagneten geregelt, die bei hoher Spannung ausschlagen und somit den Ton erzeugen. An einem zweiten Mikrofon wird zeitversetzt eine Melodie reingesungen oder gespielt und der angeschlossene Teensy analysiert die Tonfrequenz in Hertz mittels einer Fast Fourier Transformation. Über eine Variable lässt sich eine Anzahl von Tonwechseln festlegen, die ausschlaggebend darüber ist, wie viele Tonfrequenzen im Programm gespeichert werden. Diese gespeicherten Frequenzen der eingesungenen Melodie werden dann mittels des Lautsprechers in einer Endlosschleife ausgegeben.

800

Abb. 1: Aufbau Robeat

Teilprobleme:

  • Schaltkreis für Mikrofon, der sinnvolle Messwerte ausgibt
  • Ausreichende Schnelligkeit des Microcontrollers
  • Aufnahme von möglichst „reinen“ Tonschwingungen(Obertöne/Überlagerungen/Hintergrundgeräusche reduzieren)
  • Anschließen des Lautsprechers
  • FÜR BEAT PROBLEME NOCH EINFÜGEN

Ausgelassene Probleme:

  • Eigene Verstärkerschaltung für Mikrofon bauen
  • Programm zur Frequenzerkennung selber schreiben (z.B. durch Nullstellen der Schwingung zählen)

1.1 Beaterkennung und 1.2 Tonerkennung

In den ersten Stunden der Projektarbeit haben wir uns mit dem Anschließen des Mikrofons an den Arduino beschäftigt. Mit einem Schaltplan aus dem Arduinoforum begannen wir, die komplizierte Schaltung nachzubauen (Abb. 1.1).

Abb. 1.1: Ursprünglicher Schaltplan für eigenes Mikro

Allerdings funktionierte diese Schaltung nicht und wir konnten die Ursache dafür nicht identifizieren. Dank Felix' Problemsuche und -finden an einem Simulationsprogramm, konnten wir schließlich eine Schaltung bauen, die die gemessenen Signale eines Mikros mit schon eingebautem Verstärker für uns nutzbar machte. Allerdings hat das Sparkfun-Mikrophon-Board die Eigenschaft, kleinste Änderungen der Versorgungsspannung enorm verstärkt aufzunehmen. Das heißt die extremen Schwankungen in Abb. 1.2 sind verstärkte Schwankungen der Versorgungsspannung. Diese sind so extrem, da der Arduino als Verbraucher unstetig ist. Da dieser mit dem Mikro an der gleichen Stromversorgung hängt, beeinflusst er das Mikro.

Abb. 1.2: Messung mit Mikro mit eingebauter Verstärkung ohne weitere Schaltung

Die Lösung des Problems ergab sich durch folgende Tiefpassschaltung, womit das Rauschen eliminiert werden sollte (Abb. 1.3). Hierbei handelt es sich um einen RC - Tiefpass, der aus einem Widerstand (Resistance) und einem Kondensator (Condensator) besteht. Der Widerstand ist zwischen dem Mikrofon samt Kondensator und der Versorgungsspannung des Arduinos eingebaut. Dabei wird die Ausgangsspannung am Kondensator abgegriffen. Wenn eine tiefe Frequenz als Eingangssignal vorliegt, durchläuft diese die Schaltung fast ungehindert, hohe Frequenzen werden allerdings gedämpft bzw. blockiert. Der RC-Tiefpass dient zur Glättung der sogenannten Brummspannung, welche in unserem Fall die Versorgungsspannung des Arduinos ist. Das bewirkt, dass Geräusche besser identifizierbar sind, weil nun keine zusätzlichen extremen Schwankungen unsere Geräuschanalyse mehr beeinflussen. Das Mikro gibt nun die im Vergleich niedrigen Frequenzen der Töne aus, anstelle der Brummspannung. Das Ergebnis ist zusammengefasst, dass trotz der schwankenden Stromstärke eine relativ konstante Spannung verwirklicht werden kann.

Abb. 1.3: Schaltplan für Mikro mit eingebautem Verstärker

2.1 Beatanalyse

Die Analyse der Beats war einer der schwierigsten Teilbereiche. Es gilt das Herzstück oder besser gesagt, das „Gehirn“ des Roboters zu erstellen. Dabei spielten folgende Fragen eine wichtige Rolle:

2.1.1 Wie analysiert man analoge Daten eines Mikrofons um markante Töne wie beispielsweise ein Klatschen herauszufiltern?

2.1.2 Wie speichert und verarbeitet man die nun vorhandenen Zeitpunkte zu einem neuen Rhythmus?

2.1.1 Analyse der analogen Mikrofon-Daten

Zunächst lassen wir uns die Daten eines Klatschens ausgeben und mithilfe eines Tabellenkalkulationsprogramms graphisch darstellen. Der Arduino ist so schnell, dass die zeitliche Differenz zwischen zwei aufeinander folgenden Messungen im Millisekundenbereich liegt. Es wird also in Zeitabständen von unter einer Millisekunde die Spannung am Mikrofon gemessen.

Abb. 2.1.1: Die x-Achse stellt die Zeit, in Millisekunden, dar; die y-Achse zeigt die gemessene Spannung am Analogpin des Arduino. (Die absoluten Werte der Spannung sind hier uninteressant, es sei aber gesagt, dass die Messwerte proportional zu gewöhnlichen Einheiten für elektrische Spannung wie beispielsweise Volt sind.)

In der graphischen Darstellung der Messdaten ist ein Klatschen deutlich als Ausreißer zu erkennen. Nun gilt es, diese Zeitpunkte als digitalen Wert zu ermitteln und abzuspeichern. Hierfür haben wir uns des Prinzips der Hysterese bedient.

Das bedeutet, dass mit zwei Zuständen gearbeitet wird. In unserem Fall sind das „laut“ und „leise“. Zu Beginn sind wir im Zustand „leise“. Nun muss eine „obere Schwelle“ überschritten werden, um eine Messung auszulösen. Unmittelbar bevor oder nach der Messung ändert sich der Zustand auf „laut“. Der Zustand ändert sich erst wieder auf „leise“, wenn die „untere Schwelle“ unterschritten wird. Diese liegt logischerweise etwas tiefer, als die „obere“. Die nächste Messung wird erst ausgelöst, wenn erneut vom Zustand „leise“ nach „laut“ gewechselt wird.

Der Vorteil der Hysterese liegt in den zwei Schwellenwerten. Hierdurch kann verhindert werden, dass ein Oszillieren (des Graphs) um einen Schwellenwert, mehrere Messergebnisse für ein einziges Signal produziert.

Der Nachteil besteht darin, dass es nicht immer zuverlässig funktioniert. Wenn der Graph beispielsweise so stark oszilliert, dass beide Schwellen mehrfach über- bzw. unterschritten werden, dann bekommt man auch mehrere Messwerte. Dies ist uns beim Klatschen auch passiert.

Um das wiederum zu verhindern, haben wir eine Mini-Differenz zwischen zwei Messungen eingefügt. Sie führt dazu, dass eine Messung erst ausgelöst werden kann, wenn die vorherige Messung mindestens ein paar Millisekunden vorher geschehen ist, also nicht unmittelbar zuvor. Dieser Mindestabstand darf natürlich nicht zu groß sein. Er muss kleiner sein, als der kleinstmöglich denkbare Abstand zwischen zwei Klatschern.

2.2 Tonanalyse

Fourier-Transformation zur Frequenzbestimmung

Für die Tonanalyse nutzten wir eine Fast-Fourier-Transformation (FFT). Diese gibt uns praktisch in Echtzeit, die Frequenz der aufgenommenen Töne aus.

Für diese Aufgabe benötigen wir einen Teensy, da dieser weitaus schneller Messungen aufzeichnen kann im Vergleich zum Arduino. Bei langsameren Messungen kommt es häufig zu starken Ungenauigkeiten vor, da eine von diesen Werten geplottete Kurve sich sehr von der eigentlichen Kurve des Tons unterscheiden kann. Die Schwingung kann beispielsweise eine tiefere Frequenz haben, d.h. eine längere Wellenlänge, da die eigentlichen Minima und Maxima eventuell gar nicht aufgezeichnet werden, sondern nur jedes zweite zum Beispiel.

Mit einer ausreichend schnellen Messung am Mikrofon kann die FFT allerdings gut funktionieren. Das Programm geht dabei im weitesten Sinne wie folgt vor: Die Schwingung des aufgenommene Tons wird hierbei, ganz einfach ausgedrückt, mit Sinusschwingungen verschiedener Frequenzen verglichen und die, mit der größten Übereinstimmung wird dann als die Frequenz des gesuchten Tons ausgegeben. Der Vorteil hierbei ist, dass auch die Frequenzen von Tönen mit vielen Partialtönen und mitschwingenden Obertönen (d.h. der Graph ist keine reine Minusschwingung, sondern besteht aus vielen überlagerten Sinusschwingungen) bestimmt werden kann, da es quasi als die Sinusschwingung, die am ähnlichsten ist, betrachtet wird.

Um diesen Vergleich zu bewerkstelligen, bildet das Programm das Integral aus dem Produkt der aufgenommenen Schwingung und einer Sinusschwingung bekannter Frequenz. In Sekundenschnelle bildete es diese Integrale mit den sinusförmigen „Probeschwingungen“, wobei das Programm so viele Frequenzen durchläuft (die Wellenlänge wird jedes Mal halbiert) bis es 1024 Messungen hat. In Abb. 2.2.1 erkennt man, dass die Graphen relativ ähnlich sind und somit auch deren Frequenz. Das Integral aus dem Produkt der beiden Graphen ist als der grau schraffierte Bereich dargestellt. In Abb. 2.2.2 hingegen unterscheiden sich die Graphen stark und das grau schraffiert eingezeichnete Integral aus dem Produkt geht auf Null zu, da die negativen Bereiche unter der x-Achse von den positiven Bereichen überhalb subtrahiert werden. Das bedeutet, dass je größer der Wert des Integrals ist, desto größer ist die Übereinstimmung. Im Falle von Abb. 2.2.1 könnte man für den aufgenommen Ton, die Frequenz der dort verwendeten „Probeschwingung“ verwenden und hätte sie somit bestimmt.

Abb. 2.2.1: Ermitteln der Frequenz durch Fourier-Transformation/ übereinstimmende Frequenz

Abb. 2.2.2: Ermitteln der Frequenz durch Fourier-Transformation/ nicht übereinstimmende Frequenz

Diese Werte kann man in der Fourier-Tabelle (siehe Abb. 2.2.3) ausgeben lassen.

Abb. 2.2.3: Fourier-Tabellenausgabe

Frequenzberechnung

Mithilfe unseres Programmes konnten wir nun die Stelle in der Tabelle ermitteln, bei welcher das Integral am größten ist und somit die größte Korrelation herrscht. Um daraus die Frequenz zu bestimmen rechneten wir Folgendes:

Abb. 2.2.4: Berechnung der Frequenz

Wenn man nun die Position des maximalen Werts in der Tabelle mit 43 multipliziert, kann man die Frequenz bestimmen. Natürlich ist dadurch die berechnete Frequenz nicht unbedingt sehr genau, weil sie nur ein Vielfaches von 43 sein kann. Das Programm ermittelt den größten Wert in einer Zeile und speichert die Position dieses Wertes, also beispielsweise Spalte 8, ab. Die Nummer der Spalte wird dann mit 43 multipliziert; in diesem Falle also 8×43=344. Die Frequenz in Hertz wäre somit 344Hz.

Abb. 2.2.5: Tabelle mit berechneten Frequenzen und deren Platzierung in der Fourier-Tabelle

Probleme bei der exakten Frequenzbestimmung eines Tones

Wie man in Abbildung 2.2.6 erkennen kann, werden trotz Fourier-Transformation verschiedene Frequenzen für einen Ton ermittelt.

Um mit diesem Problem umzugehen, schränkten wir in unserem Programm einfach den Hertz-Bereich ein, aus dem Frequenzen überhaupt als Variable gespeichert werden, um später auf dem Lautsprecher ausgegeben zu werden. Die Frequenzen der Töne, die wir mit der Flöte spielen, reichen zum Beispiel nur von ungefähr 550 bis 1050 Hz. Unser genaues Vorgehen wird im Folgenden noch einmal genauer erläutert.

Zudem können vor allem bei Gesang, aber auch bei anderen Frequenzen sogenannte „Anschlagsfrequenzen“ entstehen. Diese liegen in der kurzen Zeit vor, bis die Frequenz des angestrebten Tones zu hören ist (zu sehen auch in Abb. 2.2.6). Wie man auch in Abbildung 2.2.6 erkennen kann, ist jedoch die Häufigkeit der eigentlichen Frequenz, die ermittelt werden soll, bei einem nicht allzu kurz angespielten Ton, größer. Somit braucht man bei der Speicherung nur darauf zu achten, nur Frequenzen zu speichern, die sehr häufig vorgekommen sind. Das heißt, dass die „Anschlagsfrequenzen“ nicht gespeichert werden und demzufolge auch nicht auf dem Lautsprecher ausgehen werden. Es wird nur der eigentliche Ton gespeichert und ausgeben.

Abb. 2.2.6: Werte aus Tabelle als Graph (gemessene Frequenzen bei Ton f# mit der Flöte gespielt)

Da unser modifiziertes FFT-Programm die Frequenz der gesungenen und geflöteten Töne nicht immer richtig identifizieren konnte, testeten wir die Korrektheit des Programms mit einer bekannten Frequenz. Eine durch den Piezo ausgegebene Frequenz konnte unser Programm bis auf ein paar Hertz richtig erkennen. Einen Flötenton mit bekannter Frequenz, gab es allerdings oft nicht korrekt aus. Vor allem am Anfang und Ende eines Tons schwankte die Frequenz stark. Die Erklärung dafür liegt in der unterschiedlichen Natur dieser Töne. Ein Piezo erzeugt Töne mittels einer Rechteckschwingung, dessen Frequenz genauer bestimmt werden kann, da sie so extrem regelmäßig und genau ist.

Diese lässt sich sehr gut von der FFT analysieren. Der Flötenton hingegen besteht aus vielen sinusförmigen Partialtönen, der mitschwingende Obertöne hat. Diese überlagerte Schwingung ist schwieriger zu analysieren und es kann vorkommen, dass der höchste Wert aus der FFT-Tabelle, dessen Position in der Tabelle unser Programm mit 43 multipliziert, nicht der eigentliche Ton, sondern dessen Oberton ist. Dann gibt unser Programm eine falsche Frequenz aus. Das dieses Phänomen tatsächlich auftritt und unser Programm an sich funktioniert, haben wir getestet, indem wir eine Zeile der FFT-Tabelle eines bekannten Flötentons bei Excel dargestellt haben.

Abb. 2.2.7: Diagramm mit der Ausgabe einer FFT-Tabellenspalte bei Aufnahme des „Flötentons a“

Diese Messung fand bei Zimmerlautstärke im Raum des Projektlabors Robotik statt und zeigte, dass der gemessene Ton a’’ tatsächlich einen deutlichen Oberton aufweist, da es 2 Peaks gab (siehe Abb. 2.2.7). Auch bei wiederholten Versuchen zeigte sich das gleiche Muster. Um dieses Problem zu lösen, haben wir uns überlegt, dass die Flöte nur Töne in einem bestimmten Frequenzbereich von etwa 500 bis 1500Hz spielen kann. Das bedeutet, dass wir Positionen in der Tabelle die mit 43 multipliziert höhere Frequenzen ergeben, gar nicht betrachten müssen.

Speicherung der Tonfrequenzen

Wie man auch in den Abbildungen 2.2.6 und 2.2.5 erkennen kann, gibt es kaum Schwankungen bei den berechneten Frequenzen für einen Ton. Es handelt sich um eine Treppenstufenfunktion. Da es mit dem Teensy allein nicht möglich ist, alle aufgenommenen Frequenzen für mehrere Töne zu speichern, konnten wir die Werte nicht einfach in ein Array packen. Unsere Lösung sah wie folgt aus: Aufgrund der länger gleich bleibenden Messwerte speicherten wir immer nur eine Frequenz, wenn sie sich von ihrer Folgefrequenz unterscheidet und zudem die Anzahl, wie oft diese Frequenz bestimmt wurde. Das beansprucht weitaus weniger Speicher, da nicht jede einzelne (oftmals gleiche) Frequenz gespeichert wird, sondern nur der Wechsel von einer zur anderen Frequenz. Leider führt diese Methode allerdings in unserem Programm zu Problemen bei der Ausgabe. Eine Alternative wäre, die Dauer einer Frequenz in Millisekunden zu speichern.

Abb. 2.2.8: Code zur Speicherung der Tonfrequenzen

3.1 Beatausgabe

Mechanischer Aufbau

Bei der Erzeugung des realen Beats haben wir uns dafür entschieden, mit Hubmagneten auf Perkussionsinstrumente zu schlagen.

Abb. 3.1.1: Hubmagneten

Vorne am Hubmagnet ist eine Holzkugel befestigt, die auf das Instrument schlägt. Der Rumpf ist auf einer kleinen Holzplatte befestigt, um die Montage am Gestell zu erleichtern. Die Kabel wurden mit Litzen in verschiedenen Farben für die verschiedenen Instrumente verlängert. An den Enden wurden Metallstifte angelötet, um das Anschließen an das Breadboard zu vereinfachen.

Ein Hubmagnet besteht aus einer Spule mit Eisenkern. Wenn eine Spannung angelegt wird, entsteht ein Magnetfeld und der Eisenkern wird herausgedrückt. Der Eisenkern wird durch eine Spiralfeder wieder an die Anfangsposition geschoben, sobald keine Spannung mehr anliegt und sich das Magnetfeld abgebaut hat. Wenn die angelegte Spannung zu schwach ist, kann es passieren, dass die entstandene Kraft schwächer als die Feder ist und sich der Hubmagnet nicht vollständig ausfährt. Je höher die Spannung ist, desto stärker und schneller schlägt der Hubmagnet aus.

Elektrotechnischer Aufbau

Wie verbindet man einen Hubmagneten mit einem Arduino?

Um ein elektronisches Bauteil über Pins des Arduinos direkt anschließen zu können, muss es bestimmte Anforderungen(Spannung, Stromstärke, Gleichstrom, etc.) erfüllen. Wir ahnten schon, dass der Strom des Arduino nicht ausreichen würde. Da wir außerdem die Spannung gerne variabel einstellbar hätten, entschlossen wir uns für eine zusätzliche Stromquelle. Zunächst verwendeten wir dafür ein Labornetzteil.

Abb. 3.1.2: Schaltplan für Hubmagnet mit Freilaufdiode

Um den Strom einer externen Quelle zu nutzen aber dennoch in der Lage zu sein, mit dem Arduino zu steuern, brauchen wir also einen Schalter o.Ä. Diese Funktion übernimmt in unserem Fall ein sog. „MOSFET“ – zu Deutsch ein „Metall-Oxid-Halbleiter-Feldeffekttransistor“. Dieser funktioniert wie ein spannungsgesteuerter Widerstand. Wenn die Stromquelle „Digitalpin - Arduino“ eingeschaltet wird, kann ein Strom zwischen Drain und Source fließen – wenn nicht, dann blockiert der „Widerstand“(MOSFET).

Der „normale“ Widerstand „R1“ verbindet Gate und Source, um sicherzustellen, dass es auch beim neustarten des Arduino, zu keiner Potentialdifferenz zwischen Gate und Source kommt. Diese könnte einen ungewollten Stromfluss zwischen Drain und Source ermöglichen und somit quasi „den Schalter einschalten“.

Welchen Zweck hat die Diode „D1“?

Bei dieser Diode handelt es sich um eine sog. „Freilaufdiode“ und sie begrenzt die Induktionsspannung, die durch den Hubmagneten entsteht. Eine Induktionsspannung entsteht, wenn der Hubmagnet ausgeschaltet wird. Die enthaltene Spule erzeugt im eingeschalteten Zustand ein Magnetfeld, welches noch kurz erhalten bleibt nachdem die Spannung schlagartig weg ist. Dieses Magnetfeld erzeugt mithilfe der Spule wiederum eine Spannung, sodass der Hubmagnet selbst zur Spannungsquelle wird.

Diese Spannung steigert sich ohne Freilaufdiode ins Unermessliche und kann somit andere Komponenten, wie beispielsweise den MOSFET zerstören (vgl. Abb. 3.1.3: „3300 Volt“). Mit Freilaufdiode wird die neu entstande Spannungsquelle kurzgeschlossen und in Form von Wärme abgebaut. Da die Diode nur in eine Richtung Strom leitet, kommt es im eingeschalteten Zustand zu keinem Kurzschluss.

Abb. 3.1.3: Schaltplan für Hubmagnet ohne Freilaufdiode

TO DO: Abbildungen erklären (Messungen etc)

Die virtuellen Schaltungen wurden mit dem Programm „LTspice“ simuliert. Eigenschaften der einzelnen Elemente, wie z.B. die Induktivität der Spule, sind teilweise willkürlich angenommene Werte. Die Simulationen dienen hauptsächlich dazu, den Aufbau zu erklären und den gravierenden Unterschied zwischen einer Schaltung mit – und ohne Freilaufdiode zu verdeutlichen.


3.2 Tonausgabe

Schaltung für die Ausgabe

Abb. 3.2.1: Schaltung für den Lautsprecher

Der dreipolige Klinkenstecker, der zum Lautsprecher führt, besitzt ein gelbes, rotes und weißes Kabel. Gelb ist die Masse bzw. der GND und das rote und weiße Kabel ist für der linken und rechten Kanal. Da wir nur ein Monolautsprecher besitzen, haben wir nur das rote Kabel verwendet. Der GND vom Teensy ist mit dem gelben Kabel an der Platine verbunden und der A14/DAC Pin ist mit dem roten Kabel verknüpft.

Ausgabecode

Was uns nun für die Tonausgabe zur Verfügung stand, waren die gemessenen Frequenzen sowie die Anzahl, wie oft sie bestimmt wurden. Mit zwei for-Schleifen und einer tone-Funktion versuchten wir, damit eine Ausgabe zu erzeugen. Zuerst hörte sich das Ergebnis wie schnelles Pfeifen an. Eine Melodie war nicht zu erkennen. Durch herumprobieren ermittelten wir einen Faktor, mit welchem die einzelnen Frequenzen länger ausgegeben wurden. Allerdings konnte man immer noch keine Verbindung zwischen Eingabe und Ausgabe ausmachen.

Abb. 3.2.2: Ausgabecode

4. Fazit

Rückblickend können wir behaupten, dass unser Roboter seinen Zweck erfüllen kann, wenn auch nicht genau so, wie wir uns das anfänglich vorgestellt hatten. Robeat ist in der Lage, nach einer Aufnahmephase eigenständig Musik zu machen. Vor allem die Analyse und Ausgabe des Beats an den Percussiongeräten funktioniert problemlos. Die Tonanalyse, also die Frequenzerkennung ist auch funktionstüchtig, jedoch gibt es noch Schwierigkeiten bei der Ausgabe. Die ausgegebenen Melodien stimmen nicht mit der reingesungenen und aufgezeichneten Melodie überein. Zudem klingen die durch den Lautsprecher ausgegebenen Töne oft sehr unharmonisch.

5. Ausblick

Es wäre schön, wenn wir die Tonausgabe soweit optimieren können, dass sie die eingespielten oder gesungen Melodien einwandfrei und als solche erkennbar, wieder ausgibt. Falls das klappt, könnte man sogar überlegen, ob wir ein Programm schreiben könnten, das diese Melodie variiert oder beispielsweise die jeweiligen Dreiklänge zu den Tönen ausgibt, damit es harmonischer klingt. Dadurch würde unsere Musik abwechslungsreicher und unterhaltsamer werden. Um den Beat zu verbessern, könnten wir weitere Percussiongeräte einfügen und damit ein vielfältigeres Klangerlebnis schaffen. Auch eine Verstärkung des Beats bezüglich der Lautstärke könnte für größere Räume wünschenswert sein.

abgeschlossene_projekte/robeat.txt · Zuletzt geändert: 2016/06/15 16:18 von c.jaedicke