Für hartgesottene Eurosignal-Nostalgiker: Ein Python-Generatorskript

Das Radioforum. Hier dreht sich alles um die technischen Seiten des Radio- und TV-Empfangs.
Gerhard G.

Re: Neue Version des Python-Generatorskripts

Beitrag von Gerhard G. »

Hallo Schwagalla,

für die gewünschte Änderung musst Du nur in Zeile 44 die 10 am Anfang der Liste durch eine 11 ersetzen (so war es in der ursprünglichen Version), schon hast Du ein Freizeichen von konstant 1153,1 Hz. Viel Erfolg!

Viele Grüße, Gerhard

Analogiker

Re: Für hartgesottene Eurosignal-Nostalgiker: Ein Python-Generatorskript

Beitrag von Analogiker »

Ich habe mal das Skript teilweise nachprogrammiert. Ich scheitere aber am Verständnis der Methode

Code: Alles auswählen

    def EncodeDigit(self, Digit):
        "Encode a single digit to PCM. 10 = repetition, 11 = pause."
        pcm = ''
        samples = int(self.duration * self.rate)
        omega = 2 * pi * self.freq[Digit]
        for n in range(samples):
            t = n / float(self.rate)
            sample = 32000 * sin(omega * t + self.phase)
            pcm += struct.pack('<h', sample)
        endphase = samples / float(self.rate) * omega + self.phase
        self.phase = fmod(endphase, 2 * pi)
        return pcm
Wozu sind die Variabelen samples, omega und pcm? Und was passiert in der for-Schleife?

Bis jetzt habe ich es geschafft, die Tonfolgen für eine Liste von Nummer hinzubekommen, wobei ich die Frequenz und die Dauer an die API-Funktion zur Tonerzeugung durch die Soundkarte ermittle (auch für andere Codes als das eigentlich Eurosignal). Weiterhin erzeuge ich damit keine Dateien sondern spiele sie per Wondows-API-Funktion direkt ab. Dementsprechend habe ich komplett auf "EncodeDigit" verzichtet. Nur hört sich das dann abgehackt an weil für jeden neuen Frequenz-/Dauerkombination eine kleine Pause ausgegeben wird.

Kann es sein, dass "EncodeDigit" sowohl die eigentlich Tonerzeugung als auch die Aufbereitung für das WAVE-Format beeinhaltet? Wie würde man einen Ton in Python direkt an die Soundkarte ausgeben?

Drift

Re: Für hartgesottene Eurosignal-Nostalgiker: Ein Python-Generatorskript

Beitrag von Drift »

@Analogiker

Warum verschwendest Du eigentlich soviel Zeit und Hirnschmalz, um den in Python geschriebenen "Europiepser" in MS VisualBasic neu zu erfinden?

Stelle Dich lieber der Aufgabe des Erfinders -an dieser Stelle ein Kompliment von mir-
und programmiere den Eurosignal Dekoder!!!!!!!!!!!!!!

Wenn dir persönlich VB besser liegt, warum nicht. Aber dann wäre dein Programm nicht plattform-unabhängig. D.h. exklusiv für Microsoft geschrieben.
Onuseit

Re: Für hartgesottene Eurosignal-Nostalgiker: Ein Python-Generatorskript

Beitrag von Onuseit »

Oh ja, jetzt geht's.
Jetzt hab ich endlich das Eurosignal classic!!!!!!! :D
Gerhard G.

Re: Für hartgesottene Eurosignal-Nostalgiker: Ein Python-Generatorskript

Beitrag von Gerhard G. »

Hallo allerseits!

@Analogiker:
Ja, die Methode EncodeDigit erzeugt einerseits die Abtastwerte und bringt sie andererseits in das für eine PCM-Wavedatei erforderliche Binärformat.
"samples" ist die Anzahl der für eine Ziffer zu berechnenden Abtastwerte.
"omega" ist die Winkelgeschwindigkeit (2pi * Frequenz).
"pcm" ist ein String, der die fertigen Binärdaten enthält.
Die for-Schleife berechnet die einzelnen Abtastwerte ("n" ist die Laufvariable, "t" ist der Zeitpunkt des Abtastwerts in Sekunden, "sample" ist der berechnete Abtastwert, "pcm" der Binärstring -- die Formatierung "<h" steht für das Binärformat "little endian short integer").
Einen abgehackten Klang vermeide ich dadurch, dass ich am Ende einer Ziffer die aktuelle Phase bestimme (self.phase) und bei der nächsten Ziffer als Anfangsphase verwende. So entsteht ein stetiger Übergang.
Um in Python direkt auf die Soundkarte auszugeben, müsste man wohl die PyWin32-Erweiterung verwenden, mit der man COM-Objekte ansprechen kann. Darüber hätte man dann Zugriff auf DirectAudio -- habe ich jedoch noch nie ausprobiert. Auf Linux kann man (glaube ich) Audiodateien bestimmter Formate direkt nach /dev/audio schreiben, um sie zu Gehör zu bringen.
Viel Erfolg!

@Drift:
Danke für das Kompliment! Das Decoderskript werde ich wohl selbst schreiben müssen... habe auch schon ein paar Ideen dazu.

@Schwagalla:
Na dann viel Spaß! Die damals von Dir erlebten starken Störungen dürften wohl dadurch zustande gekommen sein, dass das AM-Eurosignal die AGC-Regelspannung des FM-ZF-Verstärkers "mitgenommen" hat, was dann auch der FM-Diskriminator nicht mehr hinreichend unterdrücken konnte.

Viele Grüße, Gerhard

RadioNORD

Re: Für hartgesottene Eurosignal-Nostalgiker: Ein Python-Generatorskript

Beitrag von RadioNORD »

Hmm.. beinah schon peinlich... ich scheine der einzige zu sein, der das ganze nicht zum Laufen bekommt. Ich habe dieses "Python"-Programm installiert und daraus den Interpreter gestartet.
Also Prompt bekomme ich dann ein ">>" . Wenn ich da jetzt allerdings DOS-Befehle zum Verzeichniswechsel eingebe, gibt es nur Fehlermeldungen... Könnte mir da jemand (bitte nur sprichwörtlich) unter die Arme greifen? Was mache ich falsch...

Brubacker

Re: Für hartgesottene Eurosignal-Nostalgiker: Ein Python-Generatorskript

Beitrag von Brubacker »

Du musst das Skript vom ersten Beitrag in eine Datei schreiben und diese dann mit Python aufrufen. Wenn Du den o.g. Inhalt also in "eurosig.py" gespeichert hast, musst Du eben "python eurosig.py" (und zusätzlich eben noch die Argumente, die im 1. Beitrag genannt sind) aufrufen. Wenn Du nur python aufrufst, bekommst Du eben den Python-Interpreter, in den Du natürlich keine DOS-Befehle eingeben kannst, sondern eben nur Python-Code.
RadioNORD

Re: Für hartgesottene Eurosignal-Nostalgiker: Ein Python-Generatorskript

Beitrag von RadioNORD »

das ist klar... hab ich ja auch soweit gemacht. aber wo gebe ich "python eurosig.py" ein? in diesem interpreter? oder in der dos-kommandozeile, die windows emulieren kann.

Brubacker

Re: Für hartgesottene Eurosignal-Nostalgiker: Ein Python-Generatorskript

Beitrag von Brubacker »

In der Kommandozeile natürlich. Das "python" dass Du da aufrufst ist dasselbe dass Dir ohne eine Datei dahinter eben den Interpreter liefert.
RadioNORD

Re: Für hartgesottene Eurosignal-Nostalgiker: Ein Python-Generatorskript

Beitrag von RadioNORD »

und die wave-datei landet im selben unterverzeichnis, in der sich python befindet? ich kann das jetzt gerade nicht testen - bin nicht zuhause...

Brubacker

Re: Für hartgesottene Eurosignal-Nostalgiker: Ein Python-Generatorskript

Beitrag von Brubacker »

Landet da, wo sich die Datei mit dem Code von oben befindet.
FM-FREAK HESSEN

Re: Für hartgesottene Eurosignal-Nostalgiker: Ein Python-Generatorskript

Beitrag von FM-FREAK HESSEN »

Ein paar Fragen, die ich trotz aufmerksamen Lesens dieses Threads nicht beantwortet finde:

- Welchem Zweck diente das Eurosignal genau?
- Wann und aus welchem Grund wurde es abgeschaltet?
- Hat jemand noch Kenntnis von den ehemaligen Senderstandorten/Leistungen?
Gerhard G.

Re: Für hartgesottene Eurosignal-Nostalgiker: Ein Python-Generatorskript

Beitrag von Gerhard G. »

Hallo FM-Freak,

das Eurosignal war ein Funkruf-Dienst, der von 1974 bis 1998 betrieben wurde. Die Abschaltung in Deutschland erfolgte am 1. April 1998. Grund für die Abschaltung war, dass die inzwischen verfügbaren Alternativen (modernere Paging-Dienste, bei denen auch Texte übertragen werden konnten, oder der Mobilfunk) die Zahl der Eurosignal-Kunden unter die Rentabilitätsgrenze haben sinken lassen (zum Zeitpunkt der Abschaltung nur noch ca. 30.000). Außerdem waren für die Sendeeinrichtungen viele Ersatzteile nicht mehr beschaffbar, so dass eine Aufrechterhaltung des Betriebs enorme, nicht zu rechfertigende Investitionen in neue Anlagen erfordert hätte.

Hier nochmals die deutschen Standorte der Eurosignalsender:

Code: Alles auswählen

Schleswig-Holstein (B):
Westerland               8E18/54N55   87.3575    0,1 kW   ND
Flensburg (Freienwill)   9E30/54N44   87.3650    2,0 kW   ND
Burg                    11E12/54N30   87.3575    8,0 kW   D 220°

Niedersachsen (B):
Hambergen                8E52/53N19   87.3690    2,0 kW   D 240°
Leer                     7E26/53N16              4,0 kW   D 000°
Lingen                   7E20/52N29              2,4 kW   D 000°
Osnabrück (Bad Iburg)    8E02/52N11   87.3610    0,2 kW   ND
Barsinghausen            9E25/52N17   87.3650   15,85kW   ND

Berlin (B):
Berlin (Schäferberg)    13E08/52N25   87.3690    0,87kW   ND

Nordrhein-Westfalen (A):
Wesel-Büderich           6E35/51N39   87.3400    0,32kW   D 300°
Hagen                    7E28/51N21   87.3440    0,2 kW   D 310°
Bödefeld                 8E23/51N12   87.3400    2,0 kW   ND
Siegen                   8E02/50N51   87.3325    0,1 kW   ND
Burscheid                7E06/51N07   87.3360   15,85kW   D 245°

Hessen (A):
Zierenberg               9E21/51N19   87.3360    2,0 kW   D 180°
Königstein (Gr.Feldberg) 8E28/50N14   87.3440    8,0 kW   ND

Rheinland-Pfalz (A):
Prüm                     6E22/50N15   87.3400    2,0 kW   D 082°
Trier                    6E40/49N49   87.3440    0,01kW   ND
Koblenz                  7E34/50N19   87.3440    0,01kW   D 340°
Kell (Teufelskopf)       6E50/49N36   87.3360   31,6 kW   D 160°
Idar-Oberstein           7E20/49N41   87.3325    0,3 kW   ND

Baden-Württemberg (B):
Bühl                     8E12/48N37   87.3650    0,2 kW   ND
Waldenbuch               9E09/48N37   87.3610    2,0 kW   D 000°
Oberrotweil              7E40/48N05   87.3610    0,2 kW   D 180°
Gosheim                  8E48/48N10   87.3690    2,0 kW   D 120°
Donaueschingen           8E35/47N53   87.3575    0,3 kW   ND

Bayern (B):
Wiggensbach             10E13/47N44   87.3650    2,0 kW   D 035°
Augsburg (Hotelturm)    10E53/48N22   87.3575    0,2 kW   ND
Wittelshofen            10E32/49N04   87.3690    2,0 kW   ND
Nürnberg                11E02/49N26   87.3575    0,3 kW   ND
Bischofsheim/Rhön       10E01/50N28   87.3400    2,0 kW   D 180°
Bayreuth (Betzenstein)  11E25/49N38   87.3610   32,36kW   ND
Garmisch (Wank)         11E09/47N31   87.3690    0,01kW   ND
München (Olympiaturm)   11E33/48N11   87.3690    0,12kW   D 170°
Schnaitsee              12E22/48N05   87.3610   15,85kW   ND
Die Frequenzen zu den Standorten Leer und Lingen liegen mir leider nicht vor. Könnte die vielleicht noch jemand ergänzen?

Viele Grüße, Gerhard

seventeen

Re: Für hartgesottene Eurosignal-Nostalgiker: Ein Python-Generatorskript

Beitrag von seventeen »

Irgendwie haut das bei mir nicht hin. :(

Programm ist installiert. Textdatei habe ich generiert wie vorgeschrieben. => eurosignal.py
Soweit alles klar. Die Datei wird auch mit dem Pythonsymbol erkannt.

Öffnen der Datei bringt nichts, MSDOS Fenster geht sofort wieder zu.

Doch was nun ?

Öffnen des Python bringt ja eine Eingabeabfrage
>>

Aber was gebe ich da genau ein ?

Sorry, aber ich blicke nicht durch. Kann jemand in kurzen Worten step-by-step weiterhelfen ? Danke.

Onuseit

Re: Für hartgesottene Eurosignal-Nostalgiker: Ein Python-Generatorskript

Beitrag von Onuseit »

Hallo Gerhard.

Sender Bödefeld (8E23/51N12): könnte der Standort evtl. der "Hunauturm" (FuÜSt Hochsauerland/Schmallenberg) der Deuschen Bundespost (heute T-Systems) gewesen sein? Das würde erklären, warum man 1980 im Sorpetal (Schmallenberger Sauerland, siehe meinen Eintrag vom 13.02. und Deine Antwort vom 14.02.) das Eurosignal auf dem ganzen UKW-Band erleben durfte.

Gruß,
Marcus
Antworten