Möchten Sie wie in San Andreas zwischen den Radiosendern wechseln?

Der Soundtrack von GTA ist berühmt geworden für eine gute Auswahl an Musik und lustigen Inserts. Rockstar hat hervorragende Arbeit geleistet, um Radiosender für dieses Spiel zu erstellen - Musik aus Vice City und San Andreas kann übrigens sogar als CD-Set gekauft werden.
Um ihr das Hören angenehmer zu machen - und um etwas zu lernen, beschloss ich, mich in das Radio zu hacken, damit es Gaming-Radios empfängt.
Die Idee ist, dass Sie den Knopf des Empfängers drehen und zwischen virtuellen Stationen wechseln können, wie Sie es mit einem realen Empfänger tun könnten. Software wurde zum Haupthindernis - ich möchte, dass jeder virtuelle Sender seine eigene Musik spielt, auch wenn ich sie nicht höre. Wieder wie in der realen Welt.
Fangen wir an!
1. Ausrüstung
Ich würde gerne so etwas wie Arduino für ein solches Projekt mit tragbaren und eingebauten Geräten verwenden, da die Architektur solcher Boards viel einfacher ist als die von Single-Board-Computern.

Das gleichzeitige Abspielen von Dutzenden von Dateien erfordert jedoch ein leistungsstarkes Gehirn. Deshalb habe ich mich für den Raspberry Pi entschieden. Ich habe es bereits für andere Projekte verwendet und bin zuversichtlich, wenn ich damit arbeite. Und ich habe Python als Programmiersprache gewählt, einfach weil ich so eine Stimmung hatte. Gibt es noch andere Gründe? ..
2. Python-Software-Mixer
Danach musste ich eine Bibliothek für Python auswählen, die:
- Arbeiten Sie mit mehreren Audioquellen.
- Gab eine übergeordnete Schnittstelle für die Arbeit mit ihnen.
Um ein virtuelles Radio zu erstellen, muss ich nur mehrere Dateien gleichzeitig hochladen und die Wiedergabelautstärke steuern. In der Realität geschieht dies: Jeder Sender ist eine Audioquelle, und der Abstimmknopf ändert die Lautstärke dieser Quellen aus Sicht des Hörers.
Nach intensiven und langwierigen Tests verschiedener Optionen (Pygame-Mixer, Python-Sound-Gerät, Puredata mit einem Patch für den Mixer) habe ich mich für swmixer entschieden. Er weiß sogar, wie man Streaming-Dateien wiedergibt, ohne sie in den gesamten Speicher zu laden, was für mich sehr praktisch war, da ich wollte, dass jeder Sender die gesamte Musik in einer Datei kombiniert. Ich musste diese Bibliothek teilen und den Fehler darin beheben, da sie nicht mehr unterstützt wurde.
Ich entschied mich für den Raspberry Pi 3, da das 2B-Modell den Audioausgang irgendwie klemmte. Ich verstand nicht, warum dies geschieht, war aber nur zufrieden, dass auf dem neuen Board alles funktioniert, und fuhr mit dem nächsten Schritt fort.
3. High-Level-Winkelsensor (DUP) (siehe pyKY040)

Die beste Bibliothek für Python zu dieser Zeit für KY040 DUP war eine Bibliothek namens
KY040 , die jedoch nicht ganz meinen Anforderungen entsprach.
Außerdem wollte ich versuchen, mein eigenes, erstes echtes Modul für Python zu
erstellen . Deshalb habe ich
pyKY040 geschrieben .
Es bietet:
- Kolbek, um den Wert zu erhöhen.
- Rückruf zu verringern.
- Kolbek über Veränderung.
- Klick auf die Rückruftaste.
Einstellungen:
- Skalierungsmodus (der interne Zähler ändert sich innerhalb der Grenzen von X nach Y und wird als Argument an die Rückruffunktionen übergeben).
- Ringskalenmodus (X bis Y, dann wieder X).
- Einstellen der Schrittgröße auf der Skala.
Er erlaubte mir, die Logik des DUP zu delegieren und mich darauf zu konzentrieren, was passiert, wenn ich mit ihm interagiere.
Im Hauptcode gehören die folgenden Zeilen zum DUP:
tuning_encoder = pyky040.Encoder(CLK=17, DT=27, SW=22) tuning_encoder.setup(scale_min=MIN_VFREQ, scale_max=MAX_VFREQ, step=1, chg_callback=vfreq_changed) tuning_thread = threading.Thread(target=tuning_encoder.watch) volume_encoder = pyky040.Encoder(CLK=5, DT=6, SW=13) volume_encoder.setup(scale_min=0, scale_max=10, step=1, inc_callback=inc_global_volume, dec_callback=dec_global_volume, sw_callback=toggle_mute) global_volume_thread = threading.Thread(target=volume_encoder.watch) tuning_thread.start() global_volume_thread.start()
4. Virtuelles Radio (Code)
Jetzt konnte ich Dateien abspielen und bekam eine Schnittstelle für die Arbeit mit DUP. Es ist Zeit, Code für virtuelles Radio zu schreiben.
Es funktioniert wie eine virtuelle Radioband. Bei bestimmten virtuellen Frequenzen (oder Höhen) können Sie Ton hören - dies sind Swmixer-Kanäle. Zwischen den beiden Höhen ist eine Mischung aus zwei Audioquellen zu hören.
Chn 1 Chn 2 Chn 3 Chn 4 Chn n | | | | | |--------------|--------------|--------------|-------------| <---------------------------------------------------------->
Die virtuelle Frequenz ist eigentlich nur eine Ganzzahl, die abhängig von Ihrer Interaktion mit dem DUP zunimmt oder abnimmt.
Um mehr Freiheit bei der Berechnung der Lautstärke beim Umschalten zwischen zwei Höhen zu lassen, wird dieser Prozess von einer einzelnen Funktion verarbeitet, die die Lautstärke einer bestimmten Station für eine bestimmte Höhen zurückgibt. Bisher variiert dieser Wert linear, kann jedoch durch Erstellen einer lauteren und instabileren Volumenkurve geändert werden.
VOLUME /-\ /-\ /- | --\ /-- | --\ -- | --\ /-- | -- | --\ /-- | | -\ /- | | --\ /-- | | --\ /-- | | --\ /-- | | /-- | | /-- --\ | | /-- --\ | | /-- --\ | | /- -\ | | /-- --\ | -\ | /-- --\ | /- --\ | /-- --\ | /-- ------------------------------------------------------- | vfreq |
Wenn wir dieses Beispiel auf Kanal n-1 anwenden, schneidet es Kanal n, was zu einer Mischung von Audio aus diesen beiden Quellen führt.
Im Pseudocode sieht es so aus:
( ) -> [ -> [ ( ) , 0 ] ] ->
Alle Details sind im Code enthalten. Beginnen Sie am Ende der Datei, in der die Rückrufe für das DUP beschrieben sind, und folgen Sie dann dem Pfad.
5. Hacken Sie das Funkgehäuse
Der Spender war das Radio meines Großvaters, Optalix TO100. Außerhalb Frankreichs glaube ich, dass es nicht einfach sein wird, ihn zu finden. Für ca.
20 € erhalten Sie einen coolen, vintage und kompakten Empfänger, den Sie in Ihrer Tasche mitnehmen können.
DUP
Das DUP kletterte von selbst, nur damit das Gehäuse geschlossen werden konnte - aber nach dem Anschließen der Überbrückungskabel stellte sich heraus, dass das Design zu groß war. Ich musste die originalen Kunststoffstecker entfernen und durch Schrumpfschlauch ersetzen, damit sie verbogen werden konnten.


Die DUP, die ich selbst gekauft hatte, hatten keinen Faden - ich musste improvisieren, indem ich sie mit Pappe und thermoplastischem Kleber am Gehäuse befestigte. Clay entscheidet wie immer.


Himbeer pi
Ich habe den Stromanschluss an das Gehäuse angeschlossen, anstatt das Kabel direkt an den Pi anzuschließen. Daher konnte ich wählen, wie der Computer im Gehäuse platziert werden soll, ohne darüber nachzudenken, wo genau der Stromanschluss am Gehäuse angebracht werden soll.


Ich habe ein Kabel mit den Micro-USB-Anschlüssen "Mutter" und "Vater" verwendet, aber um mehr Speicherplatz freizugeben, habe ich das Kabel abgezogen und direkt an Pi gelötet - plus an PP2 und minus an den geerdeten Anschluss (eine weitere Option ist PP5). Und achten Sie darauf, mehr zu kleben, um nicht abzubrechen.

Sprecher
Lautsprecher - original 5W vom TO100 Empfänger. Es ist an einen Verstärker angeschlossen, der an einen 3,5-mm-Audio-Stecker angeschlossen ist, der an einen
billigen USB-DAC angeschlossen ist .

Alles ist über ein Prototyping-Board verbunden und kann für immer geschlossen werden.

