NewTron-Radio: Auflösungsunabhängiges Tron-Radio

  • MPD Frontend mit Skin-Support für Touchdisplays


    Hallo,


    da ich meigrafd's Thread nicht weiter "fremdbenutzen" möchte geht es also hier weiter mit meiner Version vom RPi Tron-Radio.


    Vorrangiges Ziel war es, das Tron-Radio unabhängig von der Auflösung des Touchdisplays zu machen. Ich denke, dass mir dies mit "Newtron-Radio v2" gelungen ist.
    Natürlich musste ich mir überlegen, wie das am einfachsten geht und bin zu dem Schluss gekommen, den Skin geometrisch einfach nachzubauen, so dass sich die Touchpositionen mit simplen Berechnungen ermitteln lassen.
    Um den Skin selbst Auflösungsunabhängig darzustellen ergaben sich mehrere Möglichkeiten:
    1. für jede bekannte Auflösung einen Satz von PNGs bereitstellen
    2. Nur einen Satz PNGs benutzen und diesen beim Start skalieren
    3. den Skin per Zeichenbefehlen im Programm selbst erzeugen
    4. den Skin als SVG-Datei erzeugen und beim Start skalieren
    Alle Varianten haben ihre Vor- und Nachteile. Letztlich habe ich mich für die letzte Variante entschieden, da sie meines Erachtens die grösste Flexibilität bietet. Allerdings hat sie den Nachteil, dass zusätzliche python-Module benötigt werden, da weder python noch pygame SVG-Unterstützung bieten. Ich bin dann noch einen Schritt weiter gegangen und habe den Skin in seine einzelnen Bestandteile zerlegt. Damit konnte ich dann sogar eine gewisse Reaktivität auf die Betätigung einiger Touchbuttons realisieren. Da der Skin zudem durchsichtig ist, kann man auch beliebige Hintergrundbilder einbinden.
    Weitere Optimierungen gegenüber dem Original von 5volt-junkie betreffen die Geschwindigkeit und die Darstellung von überlangen Titeln oder Sendernamen - hier wird dann automatisch gescrollt. Desweiteren wurde eine einfache Playlistenauswahl integriert.
    Featureerweiterungen wie z.B. WLan-konfiguration habe ich dagegen ersteinmal hintenangestellt und sind dementsprechend nicht vorhanden.


    Das Programm ist so aufgebaut, dass die Displayauflösung automatisch ermittelt wird. Sollte das nicht funktionieren kann man im Skript selbst die Auflösung manuell festlegen.


    Falls sie das Radio ausprobieren möchten folgt jetzt noch eine Kurzanleitung.
    Diese Anleitung ist für wheezy und jessie auch tgz-Archiv in der Datei INSTALL.txt oder bei der Installer-Version nach der Installation in der Datei /usr/local/lib/newtron-v2/INSTALL.txt hinterlegt.
    INSTALL.txt ist für Raspbian stretch noch nicht aktualisiert worden!



    Anleitung für Raspbian Wheezy, Jessie und Stretch
    Es wird ein auf Raspbian wheezy, jessie oder stretch basierendes Image sowie ein fertig eingerichtetes Touchdisplay vorausgesetzt.
    Für den Konsolenmodus muß das Touchdisplay so konfiguriert sein, dass es auch dort funktioniert. Das heißt, dass der Touchscreen auf 'ts_calibrate' ansprechen muss (resistive Displays). Eine kleine Hilfe zur Konfiguration des Touchdisplays im Konsolenmodus habe ich in Beitrag #233 geschrieben.
    Wenn das Radio im Desktopmodus benutzt wird startet es im Fenstermodus mit einer Auflösung von 320x240 Pixeln. Dies kann im Skript geändert werden.


    Anleitung für die Installer Version

    • Das Display muss inkl. Touch im Desktopmodus bereits funktionieren!
    • Für den Konsolenmodus muss das Touchdisplay mit 'ts_calibrate' justiert werden (Ausnahme: kapazitive Touchdisplays)
    • Kopieren sie die Datei 'newtron-radio-setup-v2.7.5.sh' auf den pi
    • Wechseln sie auf der Kommandozeile in das Verzeichnis in dem die kopierte Datei liegt
    • Führen sie die kopierte Datei wie folgt aus:

      Code
      1. sh ./newtron-radio-setup-v2.7.5.sh


      (Sie können natürlich auch den Installer Ausführbar machen und die Installation mit './newtron-radio-setup-v2.7.5.sh' starten)
      Die Installation kann, je nach Netzgeschwindigkeit und bereits installierten Paketen, einige Zeit dauern

    • Nach der Installation befinden sich die Dateien des Radios unter /usr/local/lib/newtron-v2. Ein Startskript wurde unter dem Namen 'newtron-radio' im Verzeichnis /usr/local/bin angelegt.
    • Sollte die Installation nicht erfolgreich verlaufen sein, können sie versuchen den Installer erneut auszuführen - eventuell auch mehrfach bis keine Fehlermeldungen mehr auftauchen - das hat keine negativen Auswirkungen.
    • Desktop Modus

      • Im Startmenü einfach Unterhaltungsmedien -> NewTron Radio auswählen.
        Oder auf der Kommandozeile einfach 'newtron-radio' eintippen eintippen und <Return> drücken.
      • Natürlich ist auch ein automatischer Start per autostart möglich:
        Im Startmenü unter Einstellungen ->' Default applications for LXSession' den Reiter Autostart auswählen.
        Dort unter 'Manual autostarted applications' einen neuen Eintrag mit dem Inhalt '@newtron-radio' erstellen.
        Nach einem Neustart des LXDE-Desktops sollte nun das Radio automatisch ausgeführt werden.


    • Konsolenmodus

      • Um das Radio zu starten geben Sie einfach 'newtron-radio' an der Konsole ein.
      • Ein automatischer Start wird durch einen passenden Eintrag in /etc/rc.local ermöglicht.



    Anleitung für das .tgz-Archiv (wheezy, jessie und stretch)

    • Melden sie sich zunächst als Benutzer 'pi' auf dem RaspberryPi an und kopieren Sie das tgz-Archiv in das Heimatverzeichnis von 'pi'.
    • Um die Abhängigkeiten von 'NewTRON-Radio' zu erfüllen führen sie folgende Kommandos an der Kommandozeile aus:


    • Spätestens jetzt sollten sie das Touchdisplay konfigurieren (kein Bestandteil dieser Anleitung! Für eine kleine Hilfe siehe Beitrag #233! )
    • Um das Radio zu starten geben Sie folgendes ein:

      Code
      1. cd /home/pi/newtron-v2
      2. sudo python newtron-radio.py



    Konfiguration
    Da das Radio bereits eine Textdatei ist, ist es unsinnig für die Einstellungen eine extra Konfigurationsdatei zu benutzen. Außerdem muss das Skript in manchen Fällen (bspw. Backlightsteuerung) sowieso angepasst werden.


    Konfigurationseinstellungen die die Funktion beeinflussen werden direkt im Skript mit einem Texteditor (nano, vi, ...) eingestellt.
    Ein Teil der Einstellungen kann aber auch im Radio selbst geändert und gesichert werden (Skin, Screensavermode/-timer, x-/plus-button).
    Gesicherte Einstellungen haben Vorrang vor im Skript geänderten Einstellungen.
    Achtung: Die Sicherungsdatei ist keine Datei die man selbst ändern sollte, da diese bei jedem Speichern überschrieben wird!


    Für die Wetteranzeige wird ein Key von OpenWeatherMap benötigt.
    Diesen kann man sich einfach über http://openweathermap.org/appid besorgen.
    Dieser Key ist dann im Skript in der Variablen OWM_KEY (Zeile 80) einzutragen.
    Der OWM_KEY kann aber auch als Umgebungsvariable an das Skript übergeben werden: 'export OWM_KEY=123456...abcdef'
    Die Umgebungsvariable hat Vorrang vor der Einstellung im Skript.


    Ort für Wetteranzeige: OWM_ID = 'XXXXX' (Zeile 75)
    z.B. für Frankfurt: OWM_ID = '2925533'
    Alternativ kann die OWM_ID (OpenWeatherMap City-ID) auch über die Umgebungsvariable OWM_ID eingestellt werden (.profile, /etc/profile.d/, rc.local, etc): 'export OWM_ID=2925533'
    Die ID erhält man, indem man den gewünschten Ort auf http://openweathermap.org auswählt.
    Sie ist in der resultierenden URL abzulesen, z.B. für Frankfurt: http://openweathermap.org/city/2925533
    Wenn dort jedoch nur Positionsangaben (long. und lat.) zurückgeliefert werden, sollte man sich die ID einer Stadt/Ort in der Nähe aus folgender Liste heraussuchen: http://bulk.openweathermap.org/sample/city.list.json.gz
    Die Umgebungsvariable hat Vorrang vor der Einstellung im Skript.


    Standardmäßig startet das Radio unter jessie im Fenstermodus mit einer Auflösung von 320x240 Pixeln und sichtbarem Mauszeiger.
    Möchten Sie dies ändern, muss das Skript angepasst werden:
    Mauszeiger verstecken: ShowCursor = False (Zeile 66)
    Für Vollbild: Fullscreen = True (Zeile 67)
    Fenstergrösse(wenn nicht Fullscreen): x_w = xxx (Zeile 69), x_h = yyy (Zeile 70)
    wobei xxx und yyy den jeweils gewünschten Wert darstellen.


    Konfigurationseinstellungen die das Aussehen beeinflussen finden Sie in der Datei 'skin.cfg' des zugehörigen Skins. Für den Default-Skin 'Tron' ist also newtron-v2/skins/Tron/skin.cfg zu bearbeiten.


    Ausserdem kann jeder seinen eigenen Skin erstellen und in ins 'skins'-Verzeichnis kopieren.
    Ein Skin besteht aus den Button-Grafiken, diversen Bildern (optional) und einer Konfigurationsdatei namens 'skin.cfg'.
    Sie können sich als Vorlage einen der bestehenden Skins ('Tron', Copper', 'Glass') kopieren und anpassen.


    Was man sonst noch alles modifizieren kann wird man schnell selbst feststellen...
    Das Skript finden Sie unter '/usr/local/lib/newtron-v2/newtron-radio.py' bzw. im Fall des .tgz-Archivs unter 'newtron-v2/newtron-radio.py' in dem Verzeichnis in dem sie das Archiv entpackt haben.


    Eigene Playlisten gehören in das MPD-Playlist-Verzeichnis das in /etc/mpd.conf als 'playlist_directory' definiert ist. Normalerweise ist das '/var/lib/mpd/playlists'.


    Eigene Musikdateien (und zugehörige Playlisten) gehören in das MPD-Music-Verzeichnis das in /etc/mpd.conf als 'music_directory' definiert ist. Normalerweise ist das '/var/lib/mpd/music'.


    Screenshots






    Downloads


    Alte Versionen können hier heruntergeladen werden: Link



    Neu!newtron-radio-v2.7.5.tgztgz-Archiv für wheezy, jessie und stretch (10.05.2016)
    Neu!newtron-radio-setup-v2.7.5.shInstaller für wheezy, jessie und stretch (10.05.2016 aktualisiert am 02.09.2017)


    Vorerst nur für Wheezy und Jessie bis einige Probleme geklärt sind:
    Um NewTron-Radio auch als einfachen USB-Audio-Player zu verwenden, habe ich ein kleines Installationsskript geschrieben, das dabei hilft, USB-Medien automatisch einzubinden und im Radio verfügbar zu machen. Die USB-Laufwerke (ja, auch mehrere sind möglich) werden im Dateiauswahlfenster des Radios als usb0-usb9 angezeigt.
    Neu!usbmount-setup-for-mpd.sh
    Die Installation ist einfach: Das Skript im binary-Modus* auf den pi kopieren und mit 'sh ./usbmount-setup-for-mpd.sh' starten. Danach steht die neue Funktionalität sofort zur Verfgügung.
    ACHTUNG: Benutzer die bereits usbmount verwenden, sollten vorher die Datei /etc/usbmount/usbmount.conf sichern falls sie diese geändert haben (nur damit im Fehlerfall die ursprüngliche Konfiguration wiederhergestellt werden kann).


    *) Im Skript sind Tabs, Leerzeichen und Zeilenumbrüche enthalten, die nicht verändert werden dürfen, wenn das Skript korrekt funktionieren soll. Copy & Paste per Maus und/oder Tastatur ist also nicht empfehlenswert.



    Viel Spass beim ausprobieren!


    Kommentare, Anregungen, Kritik und Testberichte sind herzlich willkommen.


    [hr]


    Einmal editiert, zuletzt von veloci ()

  • Hallo veloci,


    ich bin Deine Schritt für Schritt Anweisung durchgegangen.
    Wenn ich die newtron-radio.py starte, erscheint kurz das Bild der Oberfläche,
    dann bricht der Vorgang mit der Fehlermeldung IOError: SVG support missing ab.
    Bei der Installation von kaa-imlib2 fällt auf, das der svg support auf disabled steht.
    Wie kann ich diesen Fehler beheben oder hast Du die Library für librsvg ?


    Vielen Dank für Deine Radio Version.


    MfG Antheus

  • Huch,


    ja, librsvg2-dev ist nötig - habs vergessen mit einzutragen :wallbash:


    Um doch noch in den Genuss des Radios zu kommen sind folgende Schritte nötig:


    sudo pip uninstall kaa-imlib2
    sudo apt-get install librsvg2-dev
    sudo pip install kaa-imlib2



    Hoffe, das hilft!



    EDIT: Ich habe die Anleitung im ersten Beitrag entsprechend korrigiert.

    Einmal editiert, zuletzt von veloci ()

  • Das liest sich gut, und die Bilder sprechen für sich, doch leider ging es nach 'hinten' los. Schade.
    Benutze mehrere Pi's, für das Radio, für Spielereien dieser Art ein Raspberry Pi B, in der Garage benutze ich ein RPi B+ und zum experimentieren noch ein RPi B und B+. Auch mehrere RPi2 stehen als Medienserver bereit.
    Alles mit Tron v5.3


    Habe das Tronimage geclont, somit funktioniert eine Tronversion. Bin deiner Anleitung gefolgt und sehe ... nix. Wie bei meinem Vorschreiber das Gleiche. (Tronv5.3 wenn ich den Launcher in rc.local lege läuft)
    RPi B, Karte SD32GB


    Bei ./launch feht das '.sh'.
    Was sollen wir tun? HW, SW?
    Welche HW voraussetzung? RPi, Karte?
    Mfg paulaner

    Einmal editiert, zuletzt von paulaner ()

  • Mit der von Dir angegebenen Änderung funktioniert das Radio bei mir.
    Ich habe nur den Befehl pip install --upgrade kaa-imlib2 nicht mehr ausgeführt.
    Auch die Autostartfunktion über die rc.local funktioniert einwandfrei.


    MfG Antheus

  • Hallo


    gibts irgendwo eine kleine Anleitung wie ich Playlisten (MP3/Flac) über Tron wiedergeben kann?


    Gruß


    Edit:


    Bekomme einen Fehler beim Start



    pi@raspberrypi ~/newtron-v2 $ sudo python newtron-radio.py
    newtron-radio.py:22: RuntimeWarning: This channel is already in use, continuing anyway. Use GPIO.setwarnings(False) to disable warnings.
    GPIO.setup(18, GPIO.OUT)
    Traceback (most recent call last):
    File "newtron-radio.py", line 27, in <module>
    pygame.mouse.set_visible(False)
    pygame.error: video system not initialized



    EDIT 2:


    In der newtron-radio.py habe ich Zeile 17 folgende Anpassung gemacht:
    os.environ["SDL_MOUSEDEV"] = "/dev/input/event0"


    Nun sieht der Fehler beim start so aus:
    (für ca 1 Sekunde kommt aber schon die Tron Oberfläche), dann
    wieder der Desktop



    sudo python newtron-radio.py
    newtron-radio.py:22: RuntimeWarning: This channel is already in use, continuing anyway. Use GPIO.setwarnings(False) to disable warnings.
    GPIO.setup(18, GPIO.OUT)
    Traceback (most recent call last):
    File "newtron-radio.py", line 629, in <module>
    update_screen()
    File "newtron-radio.py", line 549, in update_screen
    Stationnr = int(Status['songid'])+1
    KeyError: 'songid'

    Einmal editiert, zuletzt von noxx ()

  • Hier geht es wohl um das 'Radio' und nicht den Hintergrund mpc/mpd. Der kann viele Formate.
    Aber mit der Zeile 'mpc add eine gültige URI' kannst du jede Adresse reinhämmern.


    mpc add http://stream.hoerradar.de/saw70er-128


    http://www.listenlive.eu/netherlands.html hier gibt es ausreichend Stoff zum Probieren.
    Oder du lädst als root deine *.m3u nach /var/lib/mpd/playlists und wenn sie nicht im Radio erscheind zur Sicherheit playlists in mpc in der Console laden.
    z.B. mpc load playlist.m3u


    paulaner


  • Der Fehler kommt, wenn das tag 'songid' von mpd nicht geliefert wird. Hier hätte ich besser "Stationnr=int(Status['song'])+1" oder Stationnr=int(Info['pos'])+1" nehmen sollen. Ausserdem hätte ich das ganze in try: except: verpacken müssen. In einer internen Version hab ich das bereits abgefangen ebenso wie die meisten GPIO-Warnungen...


    Wer diesen Fehler auch schon hatte, kann die Zeile 549
    ersetzen durch

    Code
    1. try: Stationnr = int(Status['song'])+1
    2. except: Stationnr = 1


    Ach so, zum Abspielen von mp3-Playlisten von lokalen Audiodateien ist das Radio sowieso nur bedingt geeignet...

    Einmal editiert, zuletzt von veloci ()

  • Also ich hab HW RPi B+, 16GB MicroSD 16GB Samsung.
    Nach deiner Anleitung und den Hilfen hier geht es auch nicht. Es sind noch ander Abhängigkeiten zu beachten, welche ...?


    Tron Anleitung genommen, bis * touch the five crosshairs gemacht.
    Dann deine, vielleicht ein wget für dein File in deiner Anleitung?
    So die Reihenfolge:
    sudo apt-get install python-pygame
    sudo apt-get install python-pip
    sudo apt-get install python2.7-dev


    wget https://pypi.python.org/packag…IO/RPi.GPIO-0.5.11.tar.gz
    tar zxf RPi.GPIO-0.5.11.tar.gz
    cd RPi.GPIO-0.5.11
    sudo python setup.py install
    cd


    sudo pip install python-mpd2
    sudo apt-get install libimlib2-dev
    sudo apt-get install librsvg2-dev
    sudo pip install --upgrade kaa-base
    -> #sudo pip install --upgrade kaa-imlib2
    -> sudo pip uninstall kaa-imlib2
    sudo pip install kaa-imlib2


    Zum bauen der python bekommst du sonst ein Error.
    Anschließend die newtron-radio.py gestartet, reboot natürlich öfters gemacht und nix.
    Fehlermeldungen.
    Auch die hier vorgeschlagenen Hilfen brachten nix.


    Erst ein
    sudo apt-get update
    sudo apt-get install mpc mpd apache2 php5 libapache2-mod-php5


    aus der Originalanleitung des Tron brachten den Erfolg.
    Noch ein Station geadded und fertig.
     
    Aber das ist immer noch kein 'sauberes' Image für NewTron.!
    Vieleicht kann der Autor was zu sagen?


    paulaner

  • Achso, wollte ich noch loswerden. Habe auf dem RPi B+ mit Tron Image ein Update auf deine Newtron version gewagt und musste leider feststellen, das der USB Sound knistert.


    Hat das einer von euch schon bemerkt? Was kann es sein und wie kann man es abschaffen.


    paulaner

    Einmal editiert, zuletzt von paulaner ()


  • Erst ein
    sudo apt-get update
    sudo apt-get install mpc mpd apache2 php5 libapache2-mod-php5


    Ich dachte meine Anleitung wäre verständlich:


    "Vorraussetzung ist ein aktuelles Raspian, ein konfigurierter mpd sowie ein fertig eingerichtetes Touchdisplay."


    Dass heißt, man sollte mindestens einmal
    sudo apt-get update
    sudo apt-get upgrade
    und dann
    sudo apt-get install mpc mpd
    sowie das touchdisplay eingerichtet haben
    Wie das geht ist hier im Forum schon irgendwo erklärt worden


    apache und das php5-zeugs braucht man nicht für das Newtron-Radio und ist auf meinem RasPi rev. B auch nicht drauf.



    Aber das ist immer noch kein 'sauberes' Image für NewTron.!
    Vieleicht kann der Autor was zu sagen?


    Als 'sauberes' Programm war und ist Newtron-Radio nicht gedacht - eher als 'proof of concept' um zu sehen, was durch Optimierung des Originals von 5volt-junkie so alles möglich ist. Ich bin kein Programmierer oder Softwareentwickler und kenne python erst seit zwei Wochen also sind auch Fehler drin. Ich weiß nicht, ob es sich für ein so kleines Programm überhaupt lohnt ein eigenes Image dafür zu erzeugen.
    Aber ich werde - solange es mir Spass macht - das Newtron-Radio weiter pflegen und weitere Features und natürlich auch neue Fehler einbauen...


    Ach so, die Reihenfolge der Installationsbefehle werde ich im ersten Beitrag noch anpassen.

    Einmal editiert, zuletzt von veloci ()

  • Hallo,
    ich hab mich täuschen lassen und dadurch nicht
    sudo apt-get install mpc mpd
    ausgeführt, wie immer die Schuld des Verfassers. Aber gut das es noch pfiffigere Leute hier gibt.


    Jetzt setzt ich ohne php5 und das andere 'Geraffel', das Image neu auf.


    Mach weiter so, paulaner

    Einmal editiert, zuletzt von paulaner ()

  • :helpnew:
    Hi ,


    der start im backend (mpd audio ausgabe) ohne probleme, aber die gui ist leider 'schwarz'.
    Der touchscreen läuft im lxde Desktop ohne problem auf dem /dev/fb1 .. touch ist auch OK !


    aktive prozesse :


    sudo python newtron-radio.py ...als root
    python newtron-radio.py ...als root


    Was könnte noch falsch sein?
    Grüße Matthias

  • Beim rumbasteln mit dem Newtron-Radio ist mir ein Fehler aufgefallen, der die Performance von pygame Programmen stark einschränkt. Aber der Reihe nach.


    Um Newtron-Radio zu testen und zu erweiten benutze ich mehrere ssh-Verbindungen zum Raspi auf dem das Radio läuft. In einem Fenster läuft eigentlich ständig 'top' um die Prozessorlast anzuzeigen und um Prozesse zu beenden. In einem weiteren Fenster läuft der Editor - in meinem Fall 'vim' und im dritten Fenster starte und stoppe ich das Radio und lass mir die (Fehler-)Meldungen ausgeben.
    Bei dieser Vorgehensweise sehe ich sofort, ob eine Änderung im Code die Prozessorlast durch das Radio verändert.


    Bis vor kurzem waren das etwa 18% Last bei normalem Betrieb und ca. 11% wenn der Screensaver läuft - das kam mir immer etwas viel vor fürs nichtstun...


    Irgendwann bin ich dann mal auf die Idee gekommen ein bißchen mit der jobcontrol der Shell (bash) herumzuspielen.


    Kleiner Exkurs:
    [hr]
    Unter Unixoiden Systemen (wie Linux) kann man Programme beim Start mit einem angehängten '&' in den Hintergrund starten - Das Kommandozeilenfenster kann danach ganz normal für weitere Kommandos weiterbenutzt werden. Lässt man das '&' weg, bleibt die Kommandozeile solange blockiert bis man das darin gestartete Programm beendet oder mit Ctrl-C (Strg-C) abbricht. Nun kann man bei einer Shell mit Jobcontrol auch so gestartete Progamme (ohne angehängtes '&') nachträglich in den Hintergrund schicken - und zwar indem man das Programm anhält (entweder mit Ctrl-Z oder mit SIGSTOP an die PID des Programmes ) und dann mit dem Kommando 'bg' in den Hintergrund schickt.
    [hr]


    Dies habe ich mit Newtron-Radio dann auch öfters praktiziert. Dabei ist mir aufgefallen, dass immer dann, wenn ich das Programm nachträglich in den Hintergrund schicke, die Prozessorlast deutlich zurück geht - und zwar auf 12% bei normalem Betrieb und auf unter 5% wenn der Screensaver aktiv ist - aber nicht, wenn ich das Programm gleich in den Hintergrund schicke (mit '&'). Diesen Effekt konnte ich mir nicht erklären, da beide Methoden intern unter Linux exakt die gleichen Systemcalls benutzen.
    Bei der Suche nach der Ursache diese Phänomens bin ich zunächst auf eine Warnung gestossen, die immer dann ausgegeben wurde, wenn das Programm nachträglich in den Hintergrund geschickt wurde:

    Code
    1. ALSA lib pcm.c:7339:(snd_pcm_recover) underrun occurred


    Hä? Was hat ALSA mit dem Newtron-Radio zu tun? Die Audioausgabe wird vom mpd erledigt und Newtron-Radio ist nur ein Frontend, das die entsprechenden Kommandos an mpd weiterleitet...


    Dann habe ich mir das pygame-Modul etwas genauer angesehen. Und siehe da: auch pygame kann Audio und zwar mit dem pygame.mixer-Modul.


    Nach längerer Suche bin ich dann auf die Lösung gekommen.
    Ich habe einfach vor Beginn der Event-Schleife einen Befehl eingefügt:
    [code=php]pygame.mixer.quit()[/php]
    Seitdem ist die Prozessorlast dauerhaft um gut 40% niedriger als vorher.
    Irgendwie wird wohl beim Einbinden des pygame-Moduls (import pygame) oder bei dessen Initialisierung (pygame.init()) das Audiosystem auf dem Raspi falsch angesprochen - entweder durch pygame selbst oder durch das darunter liegende Backend SDL_mixer.


    Ich denke, dass auch andere Projekte die pygame benutzen von diesem Workaround profitieren, da die mögliche Framerate doch deutlich ansteigt...


    Gruß,
    veloci

    Einmal editiert, zuletzt von veloci ()

  • Hallo voloci,


    kann es sein das du bei der Umstellerei den Mouszeiger vergessen hast? Er ist sichtbar.


    Und was bringt die Änderung der Reihenfolge, kannst du das für mich Laien erklären?
    paulaner