http://wiki.fablab-cottbus.de/index.php?title=Audio_Board&feed=atom&action=historyAudio Board - Versionsgeschichte2024-03-29T13:00:54ZVersionsgeschichte dieser Seite in fablab CottbusMediaWiki 1.32.0http://wiki.fablab-cottbus.de/index.php?title=Audio_Board&diff=1233&oldid=prevMaximilian Voigt am 2. Februar 2015 um 20:35 Uhr2015-02-02T20:35:29Z<p></p>
<a href="http://wiki.fablab-cottbus.de/index.php?title=Audio_Board&diff=1233&oldid=1225">Änderungen zeigen</a>Maximilian Voigthttp://wiki.fablab-cottbus.de/index.php?title=Audio_Board&diff=1225&oldid=prevMarcel: /* Bilder */2015-01-23T15:18:41Z<p><span dir="auto"><span class="autocomment">Bilder</span></span></p>
<table class="diff diff-contentalign-left" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="de">
<td colspan="2" style="background-color: #fff; color: #222; text-align: center;">← Nächstältere Version</td>
<td colspan="2" style="background-color: #fff; color: #222; text-align: center;">Version vom 23. Januar 2015, 15:18 Uhr</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l163" >Zeile 163:</td>
<td colspan="2" class="diff-lineno">Zeile 163:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Datei:audioboard_animation2.png|Stereo-Spektrum Anzeige. Die Daten vom linken und rechten Kanal werden getrennt links und rechts angezeigt und können sich in der Mitte überlagern.</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Datei:audioboard_animation2.png|Stereo-Spektrum Anzeige. Die Daten vom linken und rechten Kanal werden getrennt links und rechts angezeigt und können sich in der Mitte überlagern.</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Datei:audioboard_animation3.png|Etwas abstrakter: Mit jedem Beat fliegt 1 Partikel, dessen Farbe und Geschwindigkeit von der Frequenz bzw. den BPM abhängig ist, über die Matrix.</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Datei:audioboard_animation3.png|Etwas abstrakter: Mit jedem Beat fliegt 1 Partikel, dessen Farbe und Geschwindigkeit von der Frequenz bzw. den BPM abhängig ist, über die Matrix.</div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">Datei:audioboard_animation4.png|Bunter Kreis, der sich bewegt. Die Farbe ändert sich mit der Frequenz.</ins></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div></gallery></div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div></gallery></div></td></tr>
</table>Marcelhttp://wiki.fablab-cottbus.de/index.php?title=Audio_Board&diff=1223&oldid=prevMarcel am 23. Januar 2015 um 15:00 Uhr2015-01-23T15:00:17Z<p></p>
<table class="diff diff-contentalign-left" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="de">
<td colspan="2" style="background-color: #fff; color: #222; text-align: center;">← Nächstältere Version</td>
<td colspan="2" style="background-color: #fff; color: #222; text-align: center;">Version vom 23. Januar 2015, 15:00 Uhr</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l22" >Zeile 22:</td>
<td colspan="2" class="diff-lineno">Zeile 22:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Die Spannungsversorgung erfolgt entweder über USB oder ein 5V Netzteil. Dieses wird über einen Spannungsregler auf 3,3V heruntergesetzt, um den Controller damit zu versorgen. Es ist auch möglich das Board direkt mit 3,3V zu versorgen.<br /></div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Die Spannungsversorgung erfolgt entweder über USB oder ein 5V Netzteil. Dieses wird über einen Spannungsregler auf 3,3V heruntergesetzt, um den Controller damit zu versorgen. Es ist auch möglich das Board direkt mit 3,3V zu versorgen.<br /></div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;"></del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;">Download KiCAD und Gerber Dateien</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Technische Details und Anmerkungen ==</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Technische Details und Anmerkungen ==</div></td></tr>
<tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l117" >Zeile 117:</td>
<td colspan="2" class="diff-lineno">Zeile 115:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Diese Funktion berechnet ebenfalls die Amplitude und stellt diese als globale Variablen ''uint16_t amplitude_l, amplitude_r'' zur verfügung.<br /></div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Diese Funktion berechnet ebenfalls die Amplitude und stellt diese als globale Variablen ''uint16_t amplitude_l, amplitude_r'' zur verfügung.<br /></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Die Beaterkennung läuft ebenfalls über die Ergebnisse der FFT. Es wird für Tiefen (16Hz ... 750Hz), Mitten (750Hz ... 5kHz) und Höhen (5kHz ... 16kHz) durchgeführt. Für jedes dieser 3 Frequenzbänder wird ein fließendes Mittel gebildet. Ist der momentane Wert um <del class="diffchange diffchange-inline">50% </del>höher als dieses Mittel wird es als Beat gewertet. Für die Tiefen funktioniert dies recht gut, aber für die Mitten, gerade wenn Gesang vorhanden ist, und meistens auch für die Höhen funktioniert es nicht so gut. Die BPM werden über die globalen Variablen ''uint8_t bpm_h, bpm_m, bpm_l, bpm_all'' (h - Höhe, m - Mitte, l - Tiefe, all - in irgendeinem Band) bereitgestellt. Zusätzlich kann über ''uint8_t beats'' abgefragt werden ob gerade ein Beat erkannt wurde, indem auf die Bits ''BEAT_HIGH'', ''BEAT_MID'' bzw. ''BEAT_LOW'' geprüft wird.<br /></div></td><td class='diff-marker'>+</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Die Beaterkennung läuft ebenfalls über die Ergebnisse der FFT. Es wird für Tiefen (16Hz ... 750Hz), Mitten (750Hz ... 5kHz) und Höhen (5kHz ... 16kHz) durchgeführt. Für jedes dieser 3 Frequenzbänder wird ein fließendes Mittel gebildet. Ist der momentane Wert um <ins class="diffchange diffchange-inline">einen bestimmten Prozent-Wert </ins>höher als dieses Mittel wird es als Beat gewertet. Für die Tiefen funktioniert dies recht gut, aber für die Mitten, gerade wenn Gesang vorhanden ist, und meistens auch für die Höhen funktioniert es nicht so gut. Die BPM werden über die globalen Variablen ''uint8_t bpm_h, bpm_m, bpm_l, bpm_all'' (h - Höhe, m - Mitte, l - Tiefe, all - in irgendeinem Band) bereitgestellt. Zusätzlich kann über ''uint8_t beats'' abgefragt werden ob gerade ein Beat erkannt wurde, indem auf die Bits ''BEAT_HIGH'', ''BEAT_MID'' bzw. ''BEAT_LOW'' geprüft wird.<br /></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Es gibt eine einfach Funktion zur Kalibration der Daten. Diese sind in der Struktur</div></td><td class='diff-marker'>+</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Es gibt eine einfach Funktion zur Kalibration der Daten <ins class="diffchange diffchange-inline">im Quelltext des Matrix Projektes</ins>. Diese sind in der Struktur</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div><pre></div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div><pre></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>typedef struct {</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>typedef struct {</div></td></tr>
<tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l149" >Zeile 149:</td>
<td colspan="2" class="diff-lineno">Zeile 147:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Animationen ==</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Animationen ==</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Für das Matrix-Projekt soll es viele verschiedene Animationen geben, die manuell oder automatisch ausgewählt werden sollen. Daher wurde ein komplexes System mit einer Tabelle mit Funktionszeigern geplant. In der Tabelle ''anim_list_t anim_list[ANIM_LIST_NUM]'' (animation.cpp) werden die Animationen mit ihrer Funktion zum initialisieren, zur Berechnung eines Bildes und einem Namen eingetragen. Über die Funktion '''anim_start(uint16_t num)''' wird Animation Nummer ''num'' gestartet. Nun muss nur noch periodisch '''anim_frame()''' aufgerufen werden und das System kümmert sich um den Rest. <del class="diffchange diffchange-inline">(* In der momentanen Version im Wiki ist ein automatischer Wechsel und ähnliche Features noch nicht implementiert)</del><br /></div></td><td class='diff-marker'>+</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Für das Matrix-Projekt soll es viele verschiedene Animationen geben, die manuell oder automatisch ausgewählt werden sollen. Daher wurde ein komplexes System mit einer Tabelle mit Funktionszeigern geplant. In der Tabelle ''anim_list_t anim_list[ANIM_LIST_NUM]'' (animation.cpp) werden die Animationen mit ihrer Funktion zum initialisieren, zur Berechnung eines Bildes und einem Namen eingetragen. Über die Funktion '''anim_start(uint16_t num)''' wird Animation Nummer ''num'' gestartet. Nun muss nur noch periodisch '''anim_frame()''' aufgerufen werden und das System kümmert sich um den Rest.<br /></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Zur Vereinfachung oder wenn nur 1 Animation vorhanden sein soll kann der komplette Inhalt der Funktion '''anim_frame()''' durch eigenen Code ersetzt werden. Dadurch muss jedoch auch die Kalibration und/oder die Standartwerte angepasst werden.</div></td><td class='diff-marker'>+</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Zur Vereinfachung oder wenn nur 1 Animation vorhanden sein soll kann der komplette Inhalt der Funktion '''anim_frame()''' durch eigenen Code ersetzt werden. Dadurch muss jedoch auch die Kalibration und/oder die Standartwerte angepasst werden<ins class="diffchange diffchange-inline">. Dies ist der Fall in der Basic Version des Quelltextes</ins>.</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Weiterführende Ideen ==</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Weiterführende Ideen ==</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Als Idee für eine Animation soll hier kurz eine existierende Vorgestellt werden, wie sie im Video zu sehen ist. Die Matrix ist 7 LEDs breit und das Animationssystem fasst das Spektrum in 7 Bänder zusammen. Dadurch kann auf jeder Spalte eines dieser Bänder wiedergegeben werden. Jedes Band hat eine vorgegebene Grundfarbe, welche sich in Abhängigkeit von der Amplitude verändert. Die Anzahl der leichtenden LEDs pro Spalte richtet sich nach dem Wert im zugeordneten Band. Dadurch ergibt sich eine einfacher Frequenzanzeigen, welche über die Zeit leicht ihre Farbe verändert. Zusätzlich blitzen die Tiefen, Mitten bzw. Höhen kurz auf, wenn ein Beat in dem Bereich erkannt wurde.<br /></div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Als Idee für eine Animation soll hier kurz eine existierende Vorgestellt werden, wie sie im Video zu sehen ist. Die Matrix ist 7 LEDs breit und das Animationssystem fasst das Spektrum in 7 Bänder zusammen. Dadurch kann auf jeder Spalte eines dieser Bänder wiedergegeben werden. Jedes Band hat eine vorgegebene Grundfarbe, welche sich in Abhängigkeit von der Amplitude verändert. Die Anzahl der leichtenden LEDs pro Spalte richtet sich nach dem Wert im zugeordneten Band. Dadurch ergibt sich eine einfacher Frequenzanzeigen, welche über die Zeit leicht ihre Farbe verändert. Zusätzlich blitzen die Tiefen, Mitten bzw. Höhen kurz auf, wenn ein Beat in dem Bereich erkannt wurde.<br /></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>== Bilder <del class="diffchange diffchange-inline">=</del>=</div></td><td class='diff-marker'>+</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>= <ins class="diffchange diffchange-inline">Download =</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline">[http://github.com/MarJong/AudioBoard Download über GitHub]</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div> </div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>= Bilder =</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div><gallery mode="packed-hover" widths=320px heights=240px></div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div><gallery mode="packed-hover" widths=320px heights=240px></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Datei:audioboard_debug_ausgabe.png|Debug Ausgabe auf dem Display. Es zeigt: Name der Animation, Bilder pro Sekunde (FPS) und Samplevorgänge pro Sekunde (SPS), die BPM in den Höhen, Mitten, Tiefen und Alle zusammen, die 7 Bänder für linken und rechten Kanal und ganz unten rechts den Zoomfaktor für den Graphen.</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Datei:audioboard_debug_ausgabe.png|Debug Ausgabe auf dem Display. Es zeigt: Name der Animation, Bilder pro Sekunde (FPS) und Samplevorgänge pro Sekunde (SPS), die BPM in den Höhen, Mitten, Tiefen und Alle zusammen, die 7 Bänder für linken und rechten Kanal und ganz unten rechts den Zoomfaktor für den Graphen.</div></td></tr>
</table>Marcelhttp://wiki.fablab-cottbus.de/index.php?title=Audio_Board&diff=1216&oldid=prevMarcel: /* Bilder */2015-01-21T15:45:36Z<p><span dir="auto"><span class="autocomment">Bilder</span></span></p>
<table class="diff diff-contentalign-left" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="de">
<td colspan="2" style="background-color: #fff; color: #222; text-align: center;">← Nächstältere Version</td>
<td colspan="2" style="background-color: #fff; color: #222; text-align: center;">Version vom 21. Januar 2015, 15:45 Uhr</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l161" >Zeile 161:</td>
<td colspan="2" class="diff-lineno">Zeile 161:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Datei:audioboard_animation1.png|Mono-Spektrum Anzeige. Die Daten vom linken und rechten Kanal werden zusammengefasst und angezeigt.</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Datei:audioboard_animation1.png|Mono-Spektrum Anzeige. Die Daten vom linken und rechten Kanal werden zusammengefasst und angezeigt.</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Datei:audioboard_animation2.png|Stereo-Spektrum Anzeige. Die Daten vom linken und rechten Kanal werden getrennt links und rechts angezeigt und können sich in der Mitte überlagern.</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Datei:audioboard_animation2.png|Stereo-Spektrum Anzeige. Die Daten vom linken und rechten Kanal werden getrennt links und rechts angezeigt und können sich in der Mitte überlagern.</div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">Datei:audioboard_animation3.png|Etwas abstrakter: Mit jedem Beat fliegt 1 Partikel, dessen Farbe und Geschwindigkeit von der Frequenz bzw. den BPM abhängig ist, über die Matrix.</ins></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div></gallery></div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div></gallery></div></td></tr>
</table>Marcelhttp://wiki.fablab-cottbus.de/index.php?title=Audio_Board&diff=1215&oldid=prevMarcel am 21. Januar 2015 um 15:41 Uhr2015-01-21T15:41:35Z<p></p>
<table class="diff diff-contentalign-left" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="de">
<td colspan="2" style="background-color: #fff; color: #222; text-align: center;">← Nächstältere Version</td>
<td colspan="2" style="background-color: #fff; color: #222; text-align: center;">Version vom 21. Januar 2015, 15:41 Uhr</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l13" >Zeile 13:</td>
<td colspan="2" class="diff-lineno">Zeile 13:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Für das fertige System sollte also ein anderer Controller zum Einsatz kommen. Die Anforderungen waren: 2 ADC, DMA, auch für Hobby-Bastler leicht zu beschaffen, programmieren und löten. Daher wurde ein atxmega128-A3U gewählt. Dieser ist durch den Bootloader [http://matrixstorm.com/avr/tinyusbboard/ von diesem Projekt] einfach zu programmieren, auch ohne Programmiergerät. Vorprogrammierte Controller sind bei ebay durch den Händler [http://www.ebay.de/usr/matrixprog matrixprog] erhältlich. Durch die Kombination aus 2 unabhängigen ADC und DMA kann ein Stereo-Audiosignal problemlos umgewandelt werden. Es sind genügend Pins und Hardwareressourcen vorhanden, um weitere Geräte, wie z.B. Taster und LCD anzuschließen. Auch die Audio-Eingangsstufe wurde leicht angepasst.<br /></div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Für das fertige System sollte also ein anderer Controller zum Einsatz kommen. Die Anforderungen waren: 2 ADC, DMA, auch für Hobby-Bastler leicht zu beschaffen, programmieren und löten. Daher wurde ein atxmega128-A3U gewählt. Dieser ist durch den Bootloader [http://matrixstorm.com/avr/tinyusbboard/ von diesem Projekt] einfach zu programmieren, auch ohne Programmiergerät. Vorprogrammierte Controller sind bei ebay durch den Händler [http://www.ebay.de/usr/matrixprog matrixprog] erhältlich. Durch die Kombination aus 2 unabhängigen ADC und DMA kann ein Stereo-Audiosignal problemlos umgewandelt werden. Es sind genügend Pins und Hardwareressourcen vorhanden, um weitere Geräte, wie z.B. Taster und LCD anzuschließen. Auch die Audio-Eingangsstufe wurde leicht angepasst.<br /></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Eine Echtzeitauswertung in dem Sinne, dass das System innerhalb weniger ms oder sogar µs auf ein Audiosignal reagiert ist mit dem Aufbau nicht möglich. Der Grundgedanke ist es die Audiodaten <del class="diffchange diffchange-inline">mit 10Hz </del>zu erfassen und auszuwerten. Diese Daten werden gespeichert und durch ein Animationssystem, welches 60 Bilder pro Sekunde berechnet, optisch dargestellt. Dadurch, dass das menschliche Sehempfinden recht träge ist und sich sichtbar immer etwas verändert wirkt es am Ende so, als ob die Animation schnell auf die Musik reagiert, obwohl diese Reaktion nur alle 100ms erfolgt.</div></td><td class='diff-marker'>+</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Eine Echtzeitauswertung in dem Sinne, dass das System innerhalb weniger ms oder sogar µs auf ein Audiosignal reagiert ist mit dem Aufbau nicht möglich. Der Grundgedanke ist es die Audiodaten <ins class="diffchange diffchange-inline">20mal pro Sekunde </ins>zu erfassen und auszuwerten. Diese Daten werden gespeichert und durch ein Animationssystem, welches 60 Bilder pro Sekunde berechnet, optisch dargestellt. Dadurch, dass das menschliche Sehempfinden recht träge ist und sich sichtbar immer etwas verändert wirkt es am Ende so, als ob die Animation schnell auf die Musik reagiert, obwohl diese Reaktion nur alle 100ms erfolgt.</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>= Hardware =</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>= Hardware =</div></td></tr>
<tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l117" >Zeile 117:</td>
<td colspan="2" class="diff-lineno">Zeile 117:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Diese Funktion berechnet ebenfalls die Amplitude und stellt diese als globale Variablen ''uint16_t amplitude_l, amplitude_r'' zur verfügung.<br /></div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Diese Funktion berechnet ebenfalls die Amplitude und stellt diese als globale Variablen ''uint16_t amplitude_l, amplitude_r'' zur verfügung.<br /></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Die Beaterkennung läuft ebenfalls über die Ergebnisse der FFT. Es wird für Tiefen (16Hz ... 750Hz), Mitten (750Hz ... 5kHz) und Höhen (5kHz ... 16kHz) durchgeführt. Für jedes dieser 3 Frequenzbänder wird ein fließendes Mittel gebildet. Ist der momentane Wert um 50% höher als dieses Mittel wird es als Beat gewertet. Für die Tiefen <del class="diffchange diffchange-inline">und Höhen </del>funktioniert dies recht gut, aber für die Mitten, gerade wenn Gesang vorhanden ist, funktioniert es nicht gut. Die BPM werden über die globalen Variablen ''uint8_t bpm_h, bpm_m, bpm_l, bpm_all'' (h - Höhe, m - Mitte, l - Tiefe, all - in irgendeinem Band) bereitgestellt. Zusätzlich kann über ''uint8_t beats'' abgefragt werden ob gerade ein Beat erkannt wurde, indem auf die Bits ''BEAT_HIGH'', ''BEAT_MID'' bzw. ''BEAT_LOW'' geprüft wird.<br /></div></td><td class='diff-marker'>+</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Die Beaterkennung läuft ebenfalls über die Ergebnisse der FFT. Es wird für Tiefen (16Hz ... 750Hz), Mitten (750Hz ... 5kHz) und Höhen (5kHz ... 16kHz) durchgeführt. Für jedes dieser 3 Frequenzbänder wird ein fließendes Mittel gebildet. Ist der momentane Wert um 50% höher als dieses Mittel wird es als Beat gewertet. Für die Tiefen funktioniert dies recht gut, aber für die Mitten, gerade wenn Gesang vorhanden ist, <ins class="diffchange diffchange-inline">und meistens auch für die Höhen </ins>funktioniert es nicht <ins class="diffchange diffchange-inline">so </ins>gut. Die BPM werden über die globalen Variablen ''uint8_t bpm_h, bpm_m, bpm_l, bpm_all'' (h - Höhe, m - Mitte, l - Tiefe, all - in irgendeinem Band) bereitgestellt. Zusätzlich kann über ''uint8_t beats'' abgefragt werden ob gerade ein Beat erkannt wurde, indem auf die Bits ''BEAT_HIGH'', ''BEAT_MID'' bzw. ''BEAT_LOW'' geprüft wird.<br /></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Es gibt eine einfach Funktion zur Kalibration der Daten. Diese sind in der Struktur</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Es gibt eine einfach Funktion zur Kalibration der Daten. Diese sind in der Struktur</div></td></tr>
<tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l155" >Zeile 155:</td>
<td colspan="2" class="diff-lineno">Zeile 155:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Weiterführende Ideen ==</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Weiterführende Ideen ==</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Als Idee für eine Animation soll hier kurz eine existierende Vorgestellt werden, wie sie im Video zu sehen ist. Die Matrix ist 7 LEDs breit und das Animationssystem fasst das Spektrum in 7 Bänder zusammen. Dadurch kann auf jeder Spalte eines dieser Bänder wiedergegeben werden. Jedes Band hat eine vorgegebene Grundfarbe, welche sich in Abhängigkeit von der Amplitude verändert. Die Anzahl der leichtenden LEDs pro Spalte richtet sich nach dem Wert im zugeordneten Band. Dadurch ergibt sich eine einfacher Frequenzanzeigen, welche über die Zeit leicht ihre Farbe verändert. Zusätzlich blitzen die Tiefen, Mitten bzw. Höhen kurz auf, wenn ein Beat in dem Bereich erkannt wurde.<br /></div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Als Idee für eine Animation soll hier kurz eine existierende Vorgestellt werden, wie sie im Video zu sehen ist. Die Matrix ist 7 LEDs breit und das Animationssystem fasst das Spektrum in 7 Bänder zusammen. Dadurch kann auf jeder Spalte eines dieser Bänder wiedergegeben werden. Jedes Band hat eine vorgegebene Grundfarbe, welche sich in Abhängigkeit von der Amplitude verändert. Die Anzahl der leichtenden LEDs pro Spalte richtet sich nach dem Wert im zugeordneten Band. Dadurch ergibt sich eine einfacher Frequenzanzeigen, welche über die Zeit leicht ihre Farbe verändert. Zusätzlich blitzen die Tiefen, Mitten bzw. Höhen kurz auf, wenn ein Beat in dem Bereich erkannt wurde.<br /></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">== Bilder ==</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;"><gallery mode="packed-hover" widths=320px heights=240px></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">Datei:audioboard_debug_ausgabe.png|Debug Ausgabe auf dem Display. Es zeigt: Name der Animation, Bilder pro Sekunde (FPS) und Samplevorgänge pro Sekunde (SPS), die BPM in den Höhen, Mitten, Tiefen und Alle zusammen, die 7 Bänder für linken und rechten Kanal und ganz unten rechts den Zoomfaktor für den Graphen.</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">Datei:audioboard_animation1.png|Mono-Spektrum Anzeige. Die Daten vom linken und rechten Kanal werden zusammengefasst und angezeigt.</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">Datei:audioboard_animation2.png|Stereo-Spektrum Anzeige. Die Daten vom linken und rechten Kanal werden getrennt links und rechts angezeigt und können sich in der Mitte überlagern.</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;"></gallery></ins></div></td></tr>
</table>Marcelhttp://wiki.fablab-cottbus.de/index.php?title=Audio_Board&diff=1211&oldid=prevMarcel: /* Animationen */2015-01-19T20:33:11Z<p><span dir="auto"><span class="autocomment">Animationen</span></span></p>
<table class="diff diff-contentalign-left" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="de">
<td colspan="2" style="background-color: #fff; color: #222; text-align: center;">← Nächstältere Version</td>
<td colspan="2" style="background-color: #fff; color: #222; text-align: center;">Version vom 19. Januar 2015, 20:33 Uhr</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l149" >Zeile 149:</td>
<td colspan="2" class="diff-lineno">Zeile 149:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Animationen ==</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Animationen ==</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Für das Matrix-Projekt soll es viele verschiedene Animationen geben, die manuell oder automatisch ausgewählt werden sollen. Daher wurde ein komplexes System mit einer Tabelle mit Funktionszeigern geplant. In der Tabelle ''anim_list_t anim_list[ANIM_LIST_NUM]'' (animation.cpp) werden die Animationen mit ihrer Funktion zum initialisieren, zur Berechnung eines Bildes und einem Namen eingetragen. Über die Funktion '''anim_start(uint16_t num)''' wird Animation Nummer ''num'' gestartet. Nun muss nur noch periodisch '''anim_frame()''' aufgerufen werden und das System kümmert sich um den Rest.<br /></div></td><td class='diff-marker'>+</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Für das Matrix-Projekt soll es viele verschiedene Animationen geben, die manuell oder automatisch ausgewählt werden sollen. Daher wurde ein komplexes System mit einer Tabelle mit Funktionszeigern geplant. In der Tabelle ''anim_list_t anim_list[ANIM_LIST_NUM]'' (animation.cpp) werden die Animationen mit ihrer Funktion zum initialisieren, zur Berechnung eines Bildes und einem Namen eingetragen. Über die Funktion '''anim_start(uint16_t num)''' wird Animation Nummer ''num'' gestartet. Nun muss nur noch periodisch '''anim_frame()''' aufgerufen werden und das System kümmert sich um den Rest. <ins class="diffchange diffchange-inline">(* In der momentanen Version im Wiki ist ein automatischer Wechsel und ähnliche Features noch nicht implementiert)</ins><br /></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Zur Vereinfachung oder wenn nur 1 Animation vorhanden sein soll kann der komplette Inhalt der Funktion '''anim_frame()''' durch eigenen Code ersetzt werden. Dadurch muss jedoch auch die Kalibration und/oder die Standartwerte angepasst werden.</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Zur Vereinfachung oder wenn nur 1 Animation vorhanden sein soll kann der komplette Inhalt der Funktion '''anim_frame()''' durch eigenen Code ersetzt werden. Dadurch muss jedoch auch die Kalibration und/oder die Standartwerte angepasst werden.</div></td></tr>
</table>Marcelhttp://wiki.fablab-cottbus.de/index.php?title=Audio_Board&diff=1210&oldid=prevMarcel am 19. Januar 2015 um 20:05 Uhr2015-01-19T20:05:46Z<p></p>
<table class="diff diff-contentalign-left" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="de">
<td colspan="2" style="background-color: #fff; color: #222; text-align: center;">← Nächstältere Version</td>
<td colspan="2" style="background-color: #fff; color: #222; text-align: center;">Version vom 19. Januar 2015, 20:05 Uhr</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l138" >Zeile 138:</td>
<td colspan="2" class="diff-lineno">Zeile 138:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Das System zum Daten einlesen und auswerten wird alle 100ms aktiviert. Sobald das Einlesen fertig ist wird ''adc_state == ADC_STATE_SAMPLING_DONE'' wahr und die FFT wird gestartet. Nun wird solange '''fft.doStep()''' aufgerufen bis alle Schritte abgearbeitet sind. Danach wird das ''FLAG_FFTDONE'' Flag gesetzt und das ADC-System geht in einen Idle Zustand, wodurch es bereit ist neue Daten einzulesen. Durch das Flag wird '''anim_inputData(fft.getLeft(), fft.getRight())''' aufgerufen und die Daten der FFT werden in das Animationssystem übertragen.<br /></div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Das System zum Daten einlesen und auswerten wird alle 100ms aktiviert. Sobald das Einlesen fertig ist wird ''adc_state == ADC_STATE_SAMPLING_DONE'' wahr und die FFT wird gestartet. Nun wird solange '''fft.doStep()''' aufgerufen bis alle Schritte abgearbeitet sind. Danach wird das ''FLAG_FFTDONE'' Flag gesetzt und das ADC-System geht in einen Idle Zustand, wodurch es bereit ist neue Daten einzulesen. Durch das Flag wird '''anim_inputData(fft.getLeft(), fft.getRight())''' aufgerufen und die Daten der FFT werden in das Animationssystem übertragen.<br /></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">== WS2812 Lib ==</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">* CWS2812.cpp, CWS2812.h</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">* Nutzt USARTC1 und DMA Ch0</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">Die Vorteile der WS2812 LED liegt darin, dass diese einen eingebauten Treiber besitzen und die Daten über eine einzige Datenleitung übertragen werden. Dies macht einen Hardwareaufbau sehr einfach. Der Nachteil liegt darin, dass das Protokoll für die Daten ein sehr striktes timing erfordern. Andere Libraries machen dies über eine Verzögerung, wodurch Rechenleistung mit warten verschwendet wird.<br /></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">Daher erfolgt hier ein Ansatz über den USART (im SPI Modus) und DMA. Dies hat jedoch den Nachteil, dass pro zu sendendem Bit 1 Byte RAM benötigt wird. Eine LED erwartet 3 Byte, also 24 Bit, und benötigt somit 24 Byte RAM im Controller. Dafür werden die Daten mit Hilfe von DMA gesendet, so dass keine Rechenleistung in Warteschleifen verbraucht wird. Da der verwendete Controller 8kb RAM hat und nur 42 LEDs in der Matrix sind ist diese Lösung in dieser Situation gut brauchbar.<br /></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">Die Initialisierung der Peripherie erfolgt im Konstruktor der Klasse. Es wird USARTC1 benutzt und der Output liegt an Port C Pin 7. Port C Pin 5 und 6 sind die Clock- bzw. Empfangsleitung und werden nicht benötigt, aber stehen nicht mehr für andere Anwendungen zur Verfügung. Die Anzahl der LEDs muss in der CWS2812.h durch das Symbol ''LED_NUM'' definiert werden. Mit '''input(uint8_t *led_data, uint16_t len)''' werden die RGB Daten in das WS2818 System übertragen. Pro LED werden 3 Byte, je eines für Rot, Grün und Blau, erwartet. '''transfer()''' startet den DMA Transfer und mit '''isBusy()''' kann geprüft werden, ob dieser abgeschlossen ist (!= 0).</ins></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Animationen ==</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Animationen ==</div></td></tr>
</table>Marcelhttp://wiki.fablab-cottbus.de/index.php?title=Audio_Board&diff=1209&oldid=prevMarcel am 19. Januar 2015 um 15:13 Uhr2015-01-19T15:13:49Z<p></p>
<table class="diff diff-contentalign-left" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="de">
<td colspan="2" style="background-color: #fff; color: #222; text-align: center;">← Nächstältere Version</td>
<td colspan="2" style="background-color: #fff; color: #222; text-align: center;">Version vom 19. Januar 2015, 15:13 Uhr</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l1" >Zeile 1:</td>
<td colspan="2" class="diff-lineno">Zeile 1:</td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">{{#ev:youtube|id=http://youtu.be/opSofzCnbJo|480x320|right|Beispielanimation|frame}}</ins></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div><onlyinclude></div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div><onlyinclude></div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;">{{#ev:youtube|id=http://youtu.be/opSofzCnbJo|480x320|right|Beispielanimation|frame}}</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Ein Projekt, welches Lichter oder sonstige Geräte in Abhängigkeit von einem Audiosignal ansteuern kann. Die ursprüngliche Idee war es eine Matrix aus RGB-LEDs so anzusteuern, dass eine Lichtshow abläuft, welche durch die Frequenz und Geschwindigkeit eines Liedes beeinflusst wird.</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Ein Projekt, welches Lichter oder sonstige Geräte in Abhängigkeit von einem Audiosignal ansteuern kann. Die ursprüngliche Idee war es eine Matrix aus RGB-LEDs so anzusteuern, dass eine Lichtshow abläuft, welche durch die Frequenz und Geschwindigkeit eines Liedes beeinflusst wird.</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div></onlyinclude></div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div></onlyinclude></div></td></tr>
<tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l146" >Zeile 146:</td>
<td colspan="2" class="diff-lineno">Zeile 146:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Weiterführende Ideen ==</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Weiterführende Ideen ==</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Als Idee für eine Animation soll hier kurz eine existierende Vorgestellt werden, wie sie im Video zu sehen ist. Die Matrix ist 7 LEDs breit und das Animationssystem fasst das Spektrum in 7 Bänder zusammen. Dadurch kann auf jeder Spalte eines dieser Bänder wiedergegeben werden. Jedes Band hat eine vorgegebene Grundfarbe, welche sich in Abhängigkeit von der Amplitude verändert. Die Anzahl der leichtenden LEDs pro Spalte richtet sich nach dem Wert im zugeordneten Band. Dadurch ergibt sich eine einfacher Frequenzanzeigen, welche über die Zeit leicht ihre Farbe verändert. Zusätzlich blitzen die Tiefen, Mitten bzw. Höhen kurz auf, wenn ein Beat in dem Bereich erkannt wurde.<br /></div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Als Idee für eine Animation soll hier kurz eine existierende Vorgestellt werden, wie sie im Video zu sehen ist. Die Matrix ist 7 LEDs breit und das Animationssystem fasst das Spektrum in 7 Bänder zusammen. Dadurch kann auf jeder Spalte eines dieser Bänder wiedergegeben werden. Jedes Band hat eine vorgegebene Grundfarbe, welche sich in Abhängigkeit von der Amplitude verändert. Die Anzahl der leichtenden LEDs pro Spalte richtet sich nach dem Wert im zugeordneten Band. Dadurch ergibt sich eine einfacher Frequenzanzeigen, welche über die Zeit leicht ihre Farbe verändert. Zusätzlich blitzen die Tiefen, Mitten bzw. Höhen kurz auf, wenn ein Beat in dem Bereich erkannt wurde.<br /></div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;"></del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;">= Bilder =</del></div></td><td colspan="2"> </td></tr>
</table>Marcelhttp://wiki.fablab-cottbus.de/index.php?title=Audio_Board&diff=1208&oldid=prevMarcel am 19. Januar 2015 um 15:13 Uhr2015-01-19T15:13:23Z<p></p>
<table class="diff diff-contentalign-left" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="de">
<td colspan="2" style="background-color: #fff; color: #222; text-align: center;">← Nächstältere Version</td>
<td colspan="2" style="background-color: #fff; color: #222; text-align: center;">Version vom 19. Januar 2015, 15:13 Uhr</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l1" >Zeile 1:</td>
<td colspan="2" class="diff-lineno">Zeile 1:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div><onlyinclude></div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div><onlyinclude></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">{{#ev:youtube|id=http://youtu.be/opSofzCnbJo|480x320|right|Beispielanimation|frame}}</ins></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Ein Projekt, welches Lichter oder sonstige Geräte in Abhängigkeit von einem Audiosignal ansteuern kann. Die ursprüngliche Idee war es eine Matrix aus RGB-LEDs so anzusteuern, dass eine Lichtshow abläuft, welche durch die Frequenz und Geschwindigkeit eines Liedes beeinflusst wird.</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Ein Projekt, welches Lichter oder sonstige Geräte in Abhängigkeit von einem Audiosignal ansteuern kann. Die ursprüngliche Idee war es eine Matrix aus RGB-LEDs so anzusteuern, dass eine Lichtshow abläuft, welche durch die Frequenz und Geschwindigkeit eines Liedes beeinflusst wird.</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div></onlyinclude></div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div></onlyinclude></div></td></tr>
<tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l144" >Zeile 144:</td>
<td colspan="2" class="diff-lineno">Zeile 145:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Weiterführende Ideen ==</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Weiterführende Ideen ==</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline">Video Link<br /></del></div></td><td class='diff-marker'>+</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Als Idee für eine Animation soll hier kurz eine existierende Vorgestellt werden<ins class="diffchange diffchange-inline">, wie sie im Video zu sehen ist</ins>. Die Matrix ist 7 LEDs breit und das Animationssystem fasst das Spektrum in 7 Bänder zusammen. Dadurch kann auf jeder Spalte eines dieser Bänder wiedergegeben werden. Jedes Band hat eine vorgegebene Grundfarbe, welche sich in Abhängigkeit von der Amplitude verändert. Die Anzahl der leichtenden LEDs pro Spalte richtet sich nach dem Wert im zugeordneten Band. Dadurch ergibt sich eine einfacher Frequenzanzeigen, welche über die Zeit leicht ihre Farbe verändert. Zusätzlich blitzen die Tiefen, Mitten bzw. Höhen kurz auf, wenn ein Beat in dem Bereich erkannt wurde.<br /></div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div> </div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Als Idee für eine Animation soll hier kurz eine existierende Vorgestellt werden. Die Matrix ist 7 LEDs breit und das Animationssystem fasst das Spektrum in 7 Bänder zusammen. Dadurch kann auf jeder Spalte eines dieser Bänder wiedergegeben werden. Jedes Band hat eine vorgegebene Grundfarbe, welche sich in Abhängigkeit von der Amplitude verändert. Die Anzahl der leichtenden LEDs pro Spalte richtet sich nach dem Wert im zugeordneten Band. Dadurch ergibt sich eine einfacher Frequenzanzeigen, welche über die Zeit leicht ihre Farbe verändert. Zusätzlich blitzen die Tiefen, Mitten bzw. Höhen kurz auf, wenn ein Beat in dem Bereich erkannt wurde.<br /></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>= Bilder =</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>= Bilder =</div></td></tr>
</table>Marcelhttp://wiki.fablab-cottbus.de/index.php?title=Audio_Board&diff=1207&oldid=prevMarcel am 19. Januar 2015 um 14:04 Uhr2015-01-19T14:04:06Z<p></p>
<table class="diff diff-contentalign-left" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="de">
<td colspan="2" style="background-color: #fff; color: #222; text-align: center;">← Nächstältere Version</td>
<td colspan="2" style="background-color: #fff; color: #222; text-align: center;">Version vom 19. Januar 2015, 14:04 Uhr</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l10" >Zeile 10:</td>
<td colspan="2" class="diff-lineno">Zeile 10:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>In einem ersten Test wurde eine Eingangs- und Filterstufe aufgebaut, welche ein Mono-Audiosignal aufbereitet. Ein atmega328 hat dieses Abgetastet und eine FFT des Signals durchgeführt. Damit wurde eine einzelne RGB-LED angesteuert. Diese hat ihre Farbe in Abhängigkeit der Frequenz geändert. Mit diesem System wurden die Grenzen atmega328 ausgetestet. Da dieser Controller nur mit 16MHz läuft waren diese Grenzen zwar schnell erreicht, jedoch waren die Ergebnisse schon sehr schön. Das Einlesen der Daten und die FFT wurde 10x pro Sekunde durchgeführt, so dass die resultierenden Daten für eine flüssige Animation gesorgt hat. Für ein Stereo-Signal wären jedoch nur noch 5 Updates der Daten pro Sekunde und Kanal möglich.<br /></div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>In einem ersten Test wurde eine Eingangs- und Filterstufe aufgebaut, welche ein Mono-Audiosignal aufbereitet. Ein atmega328 hat dieses Abgetastet und eine FFT des Signals durchgeführt. Damit wurde eine einzelne RGB-LED angesteuert. Diese hat ihre Farbe in Abhängigkeit der Frequenz geändert. Mit diesem System wurden die Grenzen atmega328 ausgetestet. Da dieser Controller nur mit 16MHz läuft waren diese Grenzen zwar schnell erreicht, jedoch waren die Ergebnisse schon sehr schön. Das Einlesen der Daten und die FFT wurde 10x pro Sekunde durchgeführt, so dass die resultierenden Daten für eine flüssige Animation gesorgt hat. Für ein Stereo-Signal wären jedoch nur noch 5 Updates der Daten pro Sekunde und Kanal möglich.<br /></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Für das fertige System sollte also ein anderer Controller zum Einsatz kommen. Die Anforderungen waren: 2 ADC, DMA, auch für Hobby-Bastler leicht zu beschaffen, programmieren und löten. Daher wurde ein atxmega128-A3U gewählt. Dieser ist durch den Bootloader [http://matrixstorm.com/avr/tinyusbboard/ von diesem Projekt] einfach zu programmieren, auch ohne Programmiergerät. Vorprogrammierte Controller sind bei ebay durch den Händler [http://www.ebay.de/usr/matrixprog matrixprog] erhältlich. Durch die Kombination aus 2 unabhängigen ADC und DMA kann ein Stereo-Audiosignal problemlos umgewandelt werden. Es sind genügend Pins und Hardwareressourcen vorhanden, um weitere Geräte, wie z.B. Taster und LCD anzuschließen. Auch die Audio-Eingangsstufe wurde leicht angepasst.</div></td><td class='diff-marker'>+</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Für das fertige System sollte also ein anderer Controller zum Einsatz kommen. Die Anforderungen waren: 2 ADC, DMA, auch für Hobby-Bastler leicht zu beschaffen, programmieren und löten. Daher wurde ein atxmega128-A3U gewählt. Dieser ist durch den Bootloader [http://matrixstorm.com/avr/tinyusbboard/ von diesem Projekt] einfach zu programmieren, auch ohne Programmiergerät. Vorprogrammierte Controller sind bei ebay durch den Händler [http://www.ebay.de/usr/matrixprog matrixprog] erhältlich. Durch die Kombination aus 2 unabhängigen ADC und DMA kann ein Stereo-Audiosignal problemlos umgewandelt werden. Es sind genügend Pins und Hardwareressourcen vorhanden, um weitere Geräte, wie z.B. Taster und LCD anzuschließen. Auch die Audio-Eingangsstufe wurde leicht angepasst<ins class="diffchange diffchange-inline">.<br /></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div> </div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline">Eine Echtzeitauswertung in dem Sinne, dass das System innerhalb weniger ms oder sogar µs auf ein Audiosignal reagiert ist mit dem Aufbau nicht möglich. Der Grundgedanke ist es die Audiodaten mit 10Hz zu erfassen und auszuwerten. Diese Daten werden gespeichert und durch ein Animationssystem, welches 60 Bilder pro Sekunde berechnet, optisch dargestellt. Dadurch, dass das menschliche Sehempfinden recht träge ist und sich sichtbar immer etwas verändert wirkt es am Ende so, als ob die Animation schnell auf die Musik reagiert, obwohl diese Reaktion nur alle 100ms erfolgt</ins>.</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>= Hardware =</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>= Hardware =</div></td></tr>
<tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l56" >Zeile 56:</td>
<td colspan="2" class="diff-lineno">Zeile 58:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Datenerfassung ==</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Datenerfassung ==</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* adc.cpp, adc.h</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* adc.cpp, adc.h</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>* Nutzt ADCA Ch0, ADCB Ch0, DMA Ch1 und DMA Ch2</div></td><td class='diff-marker'>+</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>* Nutzt ADCA Ch0, ADCB Ch0, DMA Ch1 und DMA Ch2<ins class="diffchange diffchange-inline">, TCC0</ins></div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline">verbessern<br /></del></div></td><td class='diff-marker'>+</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline">Der ADC wird im Freerun Modus konfiguriert und der Timer TCC0 auf eine Frequenz von 32kHz gestellt. Wird eine Messung mit </ins>'''adc_startSampling()''' <ins class="diffchange diffchange-inline">gestartet werden </ins>die <ins class="diffchange diffchange-inline">DMA Kanäle aktiviert und laden mit jedem overflow von TCC0 einen Messwert in den Speicher. Auf diese Weise werden 128 Messwerte je Kanal erfasst</ins>. <ins class="diffchange diffchange-inline">Ist diese Datenerfassung abgeschlossen wird ''adc_state'' durch </ins>'''adc_check()''' <ins class="diffchange diffchange-inline">auf ''ADC_STATE_SAMPLING_DONE'' gesetzt</ins>.<ins class="diffchange diffchange-inline"><br /></ins></div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div> </div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline">Mit </del>'''adc_startSampling()''' <del class="diffchange diffchange-inline">wird </del>die <del class="diffchange diffchange-inline">Messung gestartet</del>. '''adc_check()''' <del class="diffchange diffchange-inline">prüft ob die Messung fertig ist und setzt den globalen adc_state, welcher innerhalb der Hauptschleife abgefragt wird</del>.</div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Auswertung ==</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Auswertung ==</div></td></tr>
<tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l126" >Zeile 126:</td>
<td colspan="2" class="diff-lineno">Zeile 126:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>} bands_calibration_t;</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>} bands_calibration_t;</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div></pre></div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div></pre></div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>zusammengefasst. In der Funktion '''anim_init()''' werden diese Werte mit Standardwerten belegt bzw. werden aus dem EEPROM geladen. Mit '''anim_startCalibration()''' kann die <del class="diffchange diffchange-inline">Kanlibration </del>gestartet werden, sofern das erweiterte Animationssystem benutzt wird. Diese Funktion muss aufgerufen werden, wenn das Audiokabel verbunden ist und kein Signal anliegt. Die Störungen, die nun auf der Leitung, sind werden gemessen, gemittelt und gespeichert. Danach werden die Kalibrationswerte in '''anim_inputData()''' benutzt um diese Störungen herauszurechnen. Die Daten der FFT werden dabei nicht verändert. Lediglich die zusammengefassten 7 Bänder und die Amplitude werden abgeglichen.</div></td><td class='diff-marker'>+</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>zusammengefasst. In der Funktion '''anim_init()''' werden diese Werte mit Standardwerten belegt bzw. werden aus dem EEPROM geladen. Mit '''anim_startCalibration()''' kann die <ins class="diffchange diffchange-inline">Kalibration </ins>gestartet werden, sofern das erweiterte Animationssystem benutzt wird. Diese Funktion muss aufgerufen werden, wenn das Audiokabel verbunden ist und kein Signal anliegt. Die Störungen, die nun auf der Leitung, sind werden gemessen, gemittelt und gespeichert. Danach werden die Kalibrationswerte in '''anim_inputData()''' benutzt um diese Störungen herauszurechnen. Die Daten der FFT werden dabei nicht verändert. Lediglich die zusammengefassten 7 Bänder und die Amplitude werden abgeglichen.</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Hauptschleife ==</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Hauptschleife ==</div></td></tr>
<tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l146" >Zeile 146:</td>
<td colspan="2" class="diff-lineno">Zeile 146:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Video Link<br /></div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Video Link<br /></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Als Idee für eine Animation soll hier kurz eine existierende Vorgestellt werden. Die Matrix ist 7 LEDs breit und das Animationssystem fasst das Spektrum in 7 Bänder zusammen. Dadurch kann auf jeder Spalte eines dieser Bänder wiedergegeben werden. Jedes Band hat eine vorgegebene Grundfarbe, welche sich in Abhängigkeit von der Amplitude verändert. Die Anzahl der leichtenden LEDs pro Spalte richtet sich nach dem Wert im zugeordneten Band. Dadurch ergibt sich eine einfacher Frequenzanzeigen, welche über die Zeit leicht ihre Farbe verändert. Zusätzlich blitzen die Tiefen, Mitten bzw. Höhen kurz auf, wenn ein Beat in dem Bereich erkannt wurde.</div></td><td class='diff-marker'>+</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Als Idee für eine Animation soll hier kurz eine existierende Vorgestellt werden. Die Matrix ist 7 LEDs breit und das Animationssystem fasst das Spektrum in 7 Bänder zusammen. Dadurch kann auf jeder Spalte eines dieser Bänder wiedergegeben werden. Jedes Band hat eine vorgegebene Grundfarbe, welche sich in Abhängigkeit von der Amplitude verändert. Die Anzahl der leichtenden LEDs pro Spalte richtet sich nach dem Wert im zugeordneten Band. Dadurch ergibt sich eine einfacher Frequenzanzeigen, welche über die Zeit leicht ihre Farbe verändert. Zusätzlich blitzen die Tiefen, Mitten bzw. Höhen kurz auf, wenn ein Beat in dem Bereich erkannt wurde.<ins class="diffchange diffchange-inline"><br /></ins></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>= Bilder =</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>= Bilder =</div></td></tr>
</table>Marcel