Sparprogramm.FM

Wir leben in einer Zeit, in der man nicht mehr weiss, wie man Redaktionen bezahlen soll. Die Lösung liegt auf der Hand: Gar nicht. Ob Gebührengelder, Werbung oder Abonnements, uns stinkt es auch, für Medien zu bezahlen. Kontroverse Diskussionen über Billag und SRF haben uns inspiriert.

Wir haben das kleinste Radiostudio der Schweiz erfunden, das auf einer Standfläche von unter 0,02 Quadratmeter 24 Stunden am Tag einen ausgewogen Mix aus Musik und News sendet. Journalisten sind hier überflüssig und wurden abgeschafft. Musikgebühren können teuer werden, darum lassen wir die Musik vom Computer generieren. So sparen wir Zeit, Geld und Nerven. Alles, was man sonst halt für ein Radiostudio braucht.

Sparprogramm.FM – Sparprogramm statt Radioprogramm.
Oder wie es unserer Moderator in einem unserer Jingles formuliert hat:

Hier gehts zur Website mit Live-Audiostream und Hörproben.

Wer nicht nur wissen will, wie Sparprogramm.FM klingt, sondern auch, wie es gemacht wurde, sollte unbedingt unter Kritik weiterlesen.

Update, 2. März 2020: Programmausschnitt mit Musik, Jingles und 9-Uhr-Nachrichten.

(lhu)

Kritik
von Alex Kälin und Pascal Albisser

Das Herzstück unseres Radiostudios befindet sich auf einer grünen Platine, die auf den Namen Raspberry Pi hört. Für unser Radiostudio setzen wir auf das neueste Modell 3 B+, um genügend Leistung zu haben. Darauf läuft Raspbian, ein extra auf den Raspberry angepasstes Linux Betriebssystem. Nach langem Herumprobieren mit verschiedenen Programmen, für die wir teilweise in die tiefsten Untiefen der Kommandozeile (dieses schwarze Textfenster für Hacker) hinabgestiegen sind und uns durch die wildesten Programmiersprachen kämpfen mussten, schafften wir es schlussendlich, mit viel Willenskraft und sicher auch einem kleinen bisschen Magie, ein funktionierendes Setup auf die Beine zu stellen.

Liquidsoap

Liquidsoap nennt sich selbst «swiss-army knife for multimedia streaming». Es ist in der Bedienung zwar nicht so elegant wie ein eidgenössiches Klappmesserli, und schon gar nicht so leicht verständlich, bietet aber doch eine ganze Menge Funktionen. Mittlerweile sieht die Dokumentation sogar gut aus.

Kurz zusammengefasst kann man Liquidsoap verschiedene Ordner mit Musikdateien angeben und es erstellt daraus einen kontinuierlichen Audiostream. Die Musikdateien können zufällig, nach bestimmtem Schema gemixt oder zu bestimmten Zeiten abgespielt werden. Auch Liveübertragungen von einem Mikrofoneingang sind möglich.

Icecast

Um den Audiostream auch im Netz verfügbar zu machen, kommuniziert Liquidsoap mit Icecast. Icecast ist ein «Streaming-Server». Er stellt das Radio-Programm über ein Webinterface in verschiedenen Formaten zur Verfügung. So kann es auch über unsere Webseite sparprogramm.fm abgespielt werden. Icecast benötigt ein einmaliges Setup und eine Systemeinstellung, danach läuft er anständig und ohne Probleme im Hintergrund.

Die «Redaktion»

Die eigentlichen Inhalte entstehen hier. Unser Vorhaben schien relativ einzigartig zu sein, weshalb wir auch keine vorgefertigten Frameworks oder Templates verwenden konnte. Zudem nahmen die vorherigen Schritte, sowie der administrative Aufwand bereits viel Zeit in Anspruch, sodass nicht mehr viel für den essentiellen Teil übrig blieb. Wir hatten hier aber etwas Glück, da wir uns für Python als Programmiersprache entschieden hatten. Obwohl wir das erste Mal damit arbeiteten, konnten wir noch einiges umsetzen. Der «Redaktionsroboter» ist in verschiedene Module aufgeteilt, die auch einzeln verwendet werden können.

Der Code ist öffentlich auf Github: github.com/pscllbssr/sparprogramm.fm

News

Nach Tests mit verschiedenen News-APIs im Netz, sind wir schliesslich auf die Teletext-Webseite gestossen. Die Nachrichten dort schienen von der Länge her perfekt auf unser Vorhaben zugeschnitten. Also bauten wir einen Scraper, der die gewünschten Texte aus der Seite extrahiert. Zu unserem grossen Glück hat uns das SRF sogar offiziell erlaubt, die Texte zu verwenden. Fürs Radio mussten die Texte noch etwas gebüschelt und ins SSML-Format gebracht werden. So können sie dann an die Google Cloud Text-to-Speech API geschickt werden, wo sie quasi «eingesprochen» werden. Als Resultat erhalten wir eine MP3-Datei, die dann nur noch im richtigen Ordner abgelegt werden muss, um von Liquidsoap erkannt und abgespielt zu werden.

Wetterbericht

Die Wetterdaten stammen von der freien OpenWeatherMap API. Die Daten kommen im JSON-Format zu uns, werden teilweise übersetzt und an den entsprechenden Stellen in einen vorgeschriebenen Text eingefügt. Danach ist der Vorgang wie oben: Einmal Google Cloud und retour in den entsprechenden Ordner.

Digezz-News

Unser bisher letztes Format basiert ebenfalls auf einem Scraper. Wir mussten zwar hier einen Umweg über die AJAX-Schnittstelle (anstatt der Startsteite www.digezz.ch) nehmen, dafür kommen die Daten auch hier im JSON-Format daher. Danach folgt auch hier wieder dasselbe Prozedere wie oben.

Cronjob, Logs & Archiv

Damit das ganze auch stündlich aktualisiert wird, haben wir einen Cronjob eingerichtet. Über ein Bash-Script wird die «Redaktion» an die Arbeit geschickt. Zur Überwachung werden auch entsprechende Log-Files erstellt und per E-Mail Adresse verschickt. So kamen wir unter anderem auch einigen fiesen Fehlern mit Zeichensätzen auf die Spur. Mit einem weiteren Cronjob und Python-Skript werden die erstellten MP3-Dateien per FTP auf den Webserver geladen. So können interessierte Personen die News, Wetter & Digezz-Meldung auch nonlinear, direkt in der Webseite anhören.

Musik & Jingles

Die Musik wird auf einem separaten Computer mit dem Programm Sonic Pi generiert. Dieses erlaubt einfache Musikstücke zu programmieren, automatisieren und aufzuzeichnen. Diese werden via FTP dann über den Webserver auf den Radio-Pi geladen. Die Hintergrundmusik für die Jingles entstand im gleichen Programm, die Texte wurden wieder von Google Cloud Text-to-Speech eingesprochen.

Website

Die Website sparprogramm.fm wird extern gehosted, sie greift aber auf den Icecast-Stream zu, den der Raspberry sendet. Mit simplem HTML und CSS entstand eine Website, die einem das Projekt kurz erklärt, aber vor allem auch einen Audioplayer fürs Radio beherbergt.

Case

Auch beim Case fürs Radio ist Sparprogramm angesagt. Zwei MDF-Plättchen, die von Stahlschrauben zusammengehalten werden. Mit einem Lasercutter haben wir dann plakativ auf die Oberseite geschrieben. Bei der OnAir-Lampe machen wir uns die 5 Volt zu nutzen, die man vom GPIO des Raspberry Pi abzapfen kann.

Keine Kommentare

Schreibe einen Kommentar