Raspi als Audioplayer für Museen

  • Hallo Liebes Forum,

    ich bin Mitarbeiter in einem kleinen Museum. Sicher kennt ihr alle aus Museen das irgendwo in einer Ausstellung ein Knopf ist wenn man diesen drückt kann man etwas anhören oder ein Film wird auf einem Monitor abgespielt. Dafür gibt es natürlich professionelle Hersteller allerdings rufen diese auch einen dementsprechende Preis auf was für ein kleines Museum eben doch schwierig ist. Für Videos gibt es ja bereits eine tolle Lösung für den Raspi siehe mp4museum.org

    Zielstellung für einen Raspi-Audioplayer für Museen wäre (von den Professionellen Geräten inspiriert) eine einfache Programmierung die durch drücken von einem Knopf einen bestimmten Titel von einem USB-Stick abspielt und wenn ein anderer Knopf gedrückt wird einen anderen Bestimmten Titel spielt.

    Die Programmierung soll individuell sein so das die Zuordnung Knopf-zu-Titel einfach über den Dateinamen geschehen kann ergo Knopf-1 spielt 001.mp3 Knopf-2 spielt 002.mp3

    es sollte auch funktionieren wenn nur ein Knopf gebraucht wird und die andren nicht installiert werden (weil es in der Ausstellung zb. nur eine Audiodatei gibt)

    Jetzt werden einige sagen da gibt es unzählige Projekte hier im Forum oder Online das ist richtig aber es ist mir zumindest bis jetzt nicht gelungen einer der Projekte entsprechend anzupassen.


    Die meisten Projekte sind mehr wie ein Mediaplayer aufgebaut also mit Start/Stop/ Vorwärts/ Rückwärts das würde dem ein Knopf ein Titel Gedanken widersprechen

    Ich hab es mit pygame versucht siehe hier aber leider spielt das nur kurze töne und überlagert dieses auch noch (zumindest so wie ich es programmieren konnte)

    Alles in allem habe ich versucht es in diesen einfach Code zu fassen doch leider funktioniert auch dieser noch nicht. :wallbash:
    Hat jemand ein Hinweis, Link oder bessere idee für mich? Ich hab keine Ahnung mehr. Aktuell bastel ich das ganze übrigens mit einem Raspi 2 Modell B spandesd für dieses Projekt wäre noch die Frage ob das auch mit einem Pi Zero funktionieren könnte? Aber ich wäre ja erstmal froh wenn irgendwas funktioniren würde Danke schon mal fürs lesen bis hier hin :)

  • Hallo Danke eure Hilfe ist ja rasend schnell.

    ok den Shebang hab ich natürlich Korrigiert (war klar 1 Zeile gleich einen Tippfehler )

    Hab also die ganzen letzten zwei Wochen auf das falsche Pferd gesetzt mit when_pressed hab es jetzt auf is_pressed korrigiert. Und siehe da es funktioniert. Es spielt nach einem Knopfdruck Musik nur leider nicht unterbrechbar. Es sollte ja so funktionieren das wenn ein neuer Besucher an die Hörstation kommt entweder den noch vom vorherigen Besucher Aktuell laufenden Titel neu starten kann in dem er einfach auf den gleichen Knopf nochmal drückt oder eben der Besucher jederzeit zu einem anderen Titel wechseln kann.

    Ich vermute mal ich muss den oben gegebene Hinweis auf os.system("pkill -f mpg321") noch mit verarbeiten.

    meine Idee war also die folgende:

  • Wenns billig sein muss, könnte man das auch mit einem Arduino mit SD-Karte machen. Das wäre mit wenigen Euro pro Stück realisierbar. Im Web gibts diverse Anleitungen/Projekte für sowas. Wie es da mit der Tonqualität aussieht, kann ich aber leider nicht sagen.

    Oh, man kann hier unliebsame Nutzer blockieren. Wie praktisch!

  • vom Arduino hab ich leider nur das Basiswissen. Das ganze auf Raspberry Basis aufzubauen hatte für mich den Charme das man mit der gekauften Hardware eben auch die Option hätte diese als Videostation einzusetzen oder mal einen Bildschirm mit einer Website im Kioskmodus in eine Ausstellung zu integrieren (z.B. für die eigenständige Recherche von Besuchern)

    Den Code konnte ich inzwischen Testen und musste leider feststellen das dieser nicht das Titel unterbrechen Problem löst.

  • Ungetestet:

    Disclaimer: Ich habe noch nie was mit pygame oder gpiozero gemacht.

    Einmal editiert, zuletzt von Manul (16. Oktober 2018 um 13:21) aus folgendem Grund: Schlampige Programmierung nachgebessert.

    • Offizieller Beitrag

    Hallo,

    Disclaimer: Ich habe noch nie was mit pygame oder gpiozero gemacht.

    mit pygame geht's mir auch so.

    Das müsste sogar noch einfacher gehen funktionieren:

    Ebenfalls ungetestet. ;)

    //Edit Noch ein Link: https://projects.raspberrypi.org/en/projects/gpio-music-box

  • hyle: Bist Du Dir sicher, daß gpiozero.Button als key für ein dictionary verwendet werden kann? Ich hab gpiozero nirgendwo installiert, kann's also nicht ausprobieren.

    Das Problem bei Deinem (ansonsten sehr schönen) Ansatz ist, daß bereits laufende Sounds nicht beendet werden.

    Der link findet sich übrigens bereits im Ursprungspost. ;)

    Nachtrag:

    Nach meinem Verständnis werden gpio.Sound-Objekte direkt bei der Initialisierung ins RAM geladen. Bei vielen, auch längeren Sounds, die ich mir in einem Museum durchaus vorstellen kann, könnte das eng werden. Daher die Verwendung des streamenden pygame.mixer.music.

    • Offizieller Beitrag

    Bist Du Dir sicher, daß gpiozero.Button als key für ein dictionary verwendet werden kann?

    Sicher nicht weil ungetestet, aber in der Doku wird es so gezeigt.

    Auf den Link hatte ich vorhin nicht geklickt, weil mir am Telefon die Statusbar des Browsers fehlt und ich nicht blind auf Links klicken will. :blush:

    Egal, jetzt bin ich angefixt und spiele am WE mal ein bisschen mit pygame und mpg321 herum, da findet sich bestimmt eine Lösung. ;)

    • Offizieller Beitrag

    Warum noch mpg321 dazu?

    Einfach aus Interesse, ob der vom TO begonnene Weg leicht umsetzbar wäre. Das sollte doch eigentlich "kein Ding" sein, auch wenn ich das Script anders gestaltet hätte. (z.B. Funktionen verwendet, subprocess statt os) :denker:

    //Edit Linus Wie ich gerade getestet habe macht das Chromium auch. Mist, wieder eine Ausrede weniger... ;)

    Ach und an den Ausdruck dict werde ich mich wohl nie gewöhnen können, warum nicht einfach Array wie der Rest der Welt das nenn!?

  • Ach und an den Ausdruck dict werde ich mich wohl nie gewöhnen können, warum nicht einfach Array wie der Rest der Welt das nenn!?

    Weil ein Array einer Python-list entspricht. Array -> Zugriff über Index (int), Dictionary -> Zugriff über einen Key, der die verschiedensten Datentypen haben kann. Es sind halt komplett unterschiedliche Datenstrukturen :denker:

    ...entspricht natürlich nicht einer ähnlichen Datenstruktur, auch wenn gleiche Beispielinhalte verwendet wurden.

  • (unabhängig von Python-Spezialitäten)

    auf ein array greift man mir einem Index zu, auf ein dict mit einem key.

    Beispiel: ein Schrank hat mehrere Schubladen, Du sucht nach der mit den Bausteinen.

    Du kannst sequentiell alle Schubladen durchsuchen bis Du die Bausteine findest oder der key Bausteine zeigt direkt auf die richtige Schublade.

    Edit: Linus war schneller

    • Offizieller Beitrag

    Das wäre dann imho ein Assoziatives Array.

    https://de.wikipedia.org/wiki/Assoziatives_Datenfeld

    http://php.net/manual/de/language.types.array.php

    //Edit Und list wäre somit ein indiziertes Array.

    //Edit2 kle: Mir ging es zwar nur um die Unterschiede der Bezeichnung bei verschiedenen Programmiersprachen, aber gut das Du für "Unbedarfte" nochmal anschaulich beschrieben hast, wovon hier die Rede ist.

    BTW: Das wird hier zu viel OT. Wir klären das besser an anderer Stelle. ;)

  • Mit Pygame habe ich es nach der dieser Anleitung probiert.

    https://projects.raspberrypi.org/en/projects/gpio-music-box

    Resultat war ein Raspi der auf Knopfdruck wav Dateien abspielt jedoch diese auch gleichzeitig abspielt. Nachvollziehbar da Pygame ja Soundeffekte für Spiele bereit stellen soll da macht es Sinn das zwei Töne auch gleichzeitig gespielt wird.

    Für die Anwendung in einem Museum ist das aber (meistens) schlecht. Das andere ist die Leihensicherheit. Da das Dateiformat mp3 sehr bekannt ist hoffe ich das es jeder hinbekommt auf einen USB Stick eine 001.mp3 usw. Datei abzuspeichern. Sicher noch toller wäre es wenn das alles auch mit 001.wav oder 001.ogg funktionieren würde, was ja irgendwie mit /media/pi/*/001.* funktionieren sollte, aber hab ich dazu kein Programm das mir einfällt. Daher würde es reichen wenn der Raspi mp3's mit mpg321 spielt.

    Es funktioniert ja auch schon fasst 8o Es Spielt eine Sound (auch den Richtigen) auf Knopfdruck nur lässt sich dieser dann nicht mehr unterbrechen egal welchen Knopf man drückt. Erst nach dem der Track durch ist kann man neu starten.

    Hier nochmal mein aktueller Stand:

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!