Benutzer-Werkzeuge

Webseiten-Werkzeuge


ss15:tonerzeugung

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
ss15:tonerzeugung [2015/10/01 21:48]
m.schramm [2.1 Variante A]
ss15:tonerzeugung [2016/05/10 14:46] (aktuell)
Zeile 5: Zeile 5:
 ===== 2. code-Funktion ===== ===== 2. code-Funktion =====
 ==== 2.1 Variante A ==== ==== 2.1 Variante A ====
-Es wird zuerst über den Rest der Teilung der Indizes von ''​l''​ durch 2 eine Folge von abwechselnd Nullen und Einsen erzeugt. Diese Liste besitzt die gleiche Länge wie ''​l''​ und dient zur Erzeugung des Taktsignals. Dann werden jeweils eine Liste für das Datensignal (''​signale''​) und das Taktsignal (''​taktsignale''​) angelegt. Diese Listen enthalten die Daten für die Erzeugung der jeweils zwei verschiedenen Elemente der Signale. Also zwei verschiedene Sinustöne beim Datensignal und ein Sinuston und eine Pause beim Taktsignal.+Es wird zuerst über den Rest der Teilung der Indizes von ''​l''​ durch 2 eine Folge von abwechselnd Nullen und Einsen erzeugt. Diese Liste besitzt die gleiche Länge wie ''​l''​ und dient zur Erzeugung des Taktsignals. Dann werden jeweils eine Liste für das Datensignal (''​signale''​) und das Taktsignal (''​taktsignale''​) angelegt. Diese Listen enthalten die Daten für die Erzeugung der jeweils zwei verschiedenen Elemente der Signale. Also zwei verschiedene Sinustöne beim Datensignal und ein Sinuston und eine Pause beim Taktsignal. Mithilfe dieser Listen werden nun die endgültigen Signale in Form der Listen ''​signal''​ und ''​taktsignal''​ erstellt. Dafür wird jeweils die Liste ''​l''​ bzw. ''​t''​ durchgegangen. Je nach dem ob es dich um eine ''​0''​ oder ''​1''​ handelt wird der entsprechende Ton der jeweiligen Liste hinzugefügt. Zum Schluss werden die beiden endgültigen Signale noch überlagert und mit ''​playsnd''​ aus ''​schallwerkzeuge.py''​ abgespielt.
 <code python> <code python>
 def code(l): def code(l):
  '''​erzeugt aus der Bit-Liste l Töne und Taktsignal'''​  '''​erzeugt aus der Bit-Liste l Töne und Taktsignal'''​
- f_0 = 12900 # Frequenz zur codierung der 0+ f_0 = 13000 # Frequenz zur codierung der 0
  f_1 = 12800 # Frequenz zur codierung der 1  f_1 = 12800 # Frequenz zur codierung der 1
  f_takt = 12600 # Taktfrequenz  f_takt = 12600 # Taktfrequenz
  dauer_bit = 0.05 # Dauer des Signals für 1 Bit in Sekunden  dauer_bit = 0.05 # Dauer des Signals für 1 Bit in Sekunden
  t = [] # List zur Speicherung des Taktsignals  t = [] # List zur Speicherung des Taktsignals
 +
  for i in range(0, len(l)): # Erzeugung des Taktsignals mit der Länge von l  for i in range(0, len(l)): # Erzeugung des Taktsignals mit der Länge von l
  t.append(i%2)  t.append(i%2)
Zeile 28: Zeile 29:
 </​code>​ </​code>​
 ==== 2.2 Variante B ==== ==== 2.2 Variante B ====
 +Die Variante B funktioniert ähnlich wie Variante A, allerdings wird hier von Anfang an die vier auftretenden Fälle unterschieden und ausgehend davon die Töne erzeugt.
 Wir wissen, dass jeder Datentyp ein Vielfaches von 4 als Bit-Anzahl besitzt und damit eine gerade Anzahl hat. So endet bei einem ständigen Wechsel zwischen An/Aus die Takt-Frequenz immer gleich. Wenn wir nun neben der 0 und 1 Codierung eine Takt-Frequenz als zusätzliche Info miteinbringen wollen, so kommen wir auf 4 verschiedene Kombinationen an Tönen. Die erhaltene Bit-Liste aus der Datei wird deshalb umgeschrieben. Durch die Hinzugabe der Takt-Frequenz geht die 0 und 1 Codierung auch nicht verloren, da die Frequenzen keine Auswirkungen aufeinander haben. Sehr wichtig ist, dass auf jeder geraden Stelle der Liste die Takt-Frequenz gespielt wird, damit es auch damit endet. Dies ist für die Taktrückgewinnung relevant! Wir wissen, dass jeder Datentyp ein Vielfaches von 4 als Bit-Anzahl besitzt und damit eine gerade Anzahl hat. So endet bei einem ständigen Wechsel zwischen An/Aus die Takt-Frequenz immer gleich. Wenn wir nun neben der 0 und 1 Codierung eine Takt-Frequenz als zusätzliche Info miteinbringen wollen, so kommen wir auf 4 verschiedene Kombinationen an Tönen. Die erhaltene Bit-Liste aus der Datei wird deshalb umgeschrieben. Durch die Hinzugabe der Takt-Frequenz geht die 0 und 1 Codierung auch nicht verloren, da die Frequenzen keine Auswirkungen aufeinander haben. Sehr wichtig ist, dass auf jeder geraden Stelle der Liste die Takt-Frequenz gespielt wird, damit es auch damit endet. Dies ist für die Taktrückgewinnung relevant!
  
Zeile 55: Zeile 57:
  playsnd(signal,​RATE)  playsnd(signal,​RATE)
 </​code>​ </​code>​
 +{{:​ss15:​code.png?​direct&​700 |erzeugtes Signal zur Bit-Liste [0,​1,​1,​0,​0,​1,​0,​0,​0,​1,​0,​1,​0,​0,​1,​1]}}
ss15/tonerzeugung.1443728936.txt.gz · Zuletzt geändert: 2016/05/10 14:46 (Externe Bearbeitung)