Für hartgesottene Eurosignal-Nostalgiker: Ein Python-Generatorskript
Re: Neue Version des Python-Generatorskripts
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
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
Re: Für hartgesottene Eurosignal-Nostalgiker: Ein Python-Generatorskript
Ich habe mal das Skript teilweise nachprogrammiert. Ich scheitere aber am Verständnis der Methode
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?
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
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?
Re: Für hartgesottene Eurosignal-Nostalgiker: Ein Python-Generatorskript
@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.
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.
Re: Für hartgesottene Eurosignal-Nostalgiker: Ein Python-Generatorskript
Oh ja, jetzt geht's.
Jetzt hab ich endlich das Eurosignal classic!!!!!!!
Jetzt hab ich endlich das Eurosignal classic!!!!!!!
Re: Für hartgesottene Eurosignal-Nostalgiker: Ein Python-Generatorskript
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
@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
Re: Für hartgesottene Eurosignal-Nostalgiker: Ein Python-Generatorskript
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...
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...
Re: Für hartgesottene Eurosignal-Nostalgiker: Ein Python-Generatorskript
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.
Re: Für hartgesottene Eurosignal-Nostalgiker: Ein Python-Generatorskript
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.
Re: Für hartgesottene Eurosignal-Nostalgiker: Ein Python-Generatorskript
In der Kommandozeile natürlich. Das "python" dass Du da aufrufst ist dasselbe dass Dir ohne eine Datei dahinter eben den Interpreter liefert.
Re: Für hartgesottene Eurosignal-Nostalgiker: Ein Python-Generatorskript
und die wave-datei landet im selben unterverzeichnis, in der sich python befindet? ich kann das jetzt gerade nicht testen - bin nicht zuhause...
Re: Für hartgesottene Eurosignal-Nostalgiker: Ein Python-Generatorskript
Landet da, wo sich die Datei mit dem Code von oben befindet.
Re: Für hartgesottene Eurosignal-Nostalgiker: Ein Python-Generatorskript
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?
- Welchem Zweck diente das Eurosignal genau?
- Wann und aus welchem Grund wurde es abgeschaltet?
- Hat jemand noch Kenntnis von den ehemaligen Senderstandorten/Leistungen?
Re: Für hartgesottene Eurosignal-Nostalgiker: Ein Python-Generatorskript
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:
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
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
Viele Grüße, Gerhard
Re: Für hartgesottene Eurosignal-Nostalgiker: Ein Python-Generatorskript
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.
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.
Re: Für hartgesottene Eurosignal-Nostalgiker: Ein Python-Generatorskript
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
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