protokoll-spezifikation

frequenzzuordnung

qtmf (Quadro Tone Multiplexed Frequency) ist ein Standard, welcher bestimmten Tonfrequenz-Kombinationen Werten von 0-255 oder 256 veschiedene Zeichen zuordnet. Ein Klang besteht aus vier Teiltönen, von denen jeder 4 Frequenzen einnehmen kann. Es werden also 4 (teiltöne) x 4 (frequnzen) = 16 gültige Frequenzen definiert. Somit stehen 4 (Teiltöne) ^ 4 (Frequenzen pro ton) = 256 unterscheidbare Klangkombinationen zur Verfügung. Mit einem Klang kann also genau 1 Byte (8 Bit) transportiert werden.

 ton aton bton cton d
freq 044775812852179
freq 149483814202409
freq 254692615712663
freq 3604102417362944
frequenztabelle

Entstehung und Berechung der Frequenztabelle

Da die 256 werte aus 4 Tönen aus je 4 Frequenzen zusammengesetzt werden, bietet es sich an, die Zahlen von 0 bis 255 als vierstellige Zahlen im 4er-system zu denken. Somit kann jeder Stelle ein Ton zugeordnet werden. Wir können jeden Teilton einer Stelle zuordnen:

teilton d  c  b  a 
stelle  1  2  3  4

Jeder Ton kann vier Zustände einnehmen, die den Werten 0 - 3 entsprechen (Umfang eines Digits im 4er-system). Die Wertigkeit jeder Frequenz kann obiger Tabelle entnommen werden.


konvertierung qtmf->byte (beispiel)

Der Empfänger detektiert die Frequenzen 546, 758, 1736 und 2409:
Mit hilfe der Tabelle kännen wir folgendes notieren:
546   ->   teilton a besitzt die Wertigkeit 2
758   ->   teilton b besitzt die Wertigkeit 0
1736  ->   teilton c besitzt die Wertigkeit 3
2409  ->   teilton d besitzt die wertigkeit 1

Den wert im 4er-System ergibt sich nun nach folgendem Schema:

d c b a      ->      1 3 0 2

Um nun diese vierstellige Zahl aus dem 4er-System ins Dezimalsystem umzurechnen, wird folgende Formel verwendet:

d * 4 ^ 3 + c * 4 ^ 2 + b * 4 ^ 1 + a * 4 ^ 0 = 
               1 * 64 + 3 * 16 + 0 * 4 + 2* 1 = 
                              64 + 48 + 0 + 2 = 114


konvertierung byte->qtmf (beispiel)

Wir möchten 1 Byte mit dem Wert 97 übertragen. Dazu müssen wir dezimal 97 ins 4er-System konvertieren. Die einzelnen Stellen berechnen sich folgendermassen, wobei x unserem Dezimalwert entspricht:

a = int(x / 4^0) % 4 = 1
b = int(x / 4^1) % 4 = 0
c = int(x / 4^2) % 4 = 2
d = int(x / 4^3) % 4 = 1

d c b a    ->   1 2 0 1

Anhand dieser Zahl kann nun in der Tabelle ausgelesen werden, welche Frequenzen die einzelnen Teiltöne haben sollen:

Für Teilton a  ->  ergibt sich mit wert 1 die frequenz: 494
Für Teilton b  ->  ergibt sich mit wert 0 die frequenz: 758
Für Teilton c  ->  ergibt sich mit wert 2 die frequenz: 1571
Für Teilton d  ->  ergibt sich mit wert 1 die frequenz: 2409

Der Klang, der den Wert 97 überträgt, beinhaltet also die Frequenzen 494, 758, 1571, 2409.


klangbeispiel

In diesem Beispiel wurde der Satz 'qtmf ist langsam und unsicher' in qtmf codiert:
qtmf-example.mp3