Lipl

Inleiding

Melodieën kan ik mij makkelijker herinneren dan teksten.

Bij het organiseren van meezing-sessies met dementerenden vond ik het handing om liedteksten te projecteren op een scherm. Dus schreef ik een aantal toepassingen waarmee ik liedteksten kon bewaren, een liedtekst kon selecteren en projecteren op het scherm. Dit systeem heb ik Lipl genoemd. Het is een soort afkorting van Lyric Play.

Lipl kent 3 componenten

  1. Een service voor het bewaren van liedteksten en afspeellijsten, Lipl Opslag genoemd.
  2. Een toepassing voor het tonen van een liedtekst op een scherm, Lipl Scherm genoemd.
  3. Een toepassing voor het onderhouden van de verzameling liedteksten en afspeellijsten, Lipl Afstandsbediening genoemd.

De eerste component is geschreven in rust. Het draait op een eigen server die via het Internet toegangelijk is.

Ook de twee component is geschreven in rust. Het draait op een raspberry pi. Bluez heeft een dbus interface die wordt gebruikt om een Gatt Peripheral te starten.

De derde component is geschreven in Dart en maakt gebruik van Flutter. Het draait op een Android smartfoon. Een web versie van dit component wordt door mij gebruikt om de liedteksten en afspeellijsten te onderhouden.

Meezingen

Als ik naar een meezing-sessie ga, neem ik met mij mee

  • Mijn smartphone met lipl afstandsbediening geïnstalleerd en de gegevens die zijn gesynchroniseerd met lipl opslag
  • Een raspberry pi met lipl scherm geïnstalleerd

De HDMI connector van de pi wordt verbonden met een scherm. Na het opstarten van de pi wordt automatisch een Gatt service geadverteerd.

Lipl afstandsbediening luistert naar advertenties en wordt verbonden met de Pi. Als ik afspelen kies wordt de tekst naar een Gatt Characteristic op de pi geschreven. Lipl afstandsbediening kan ook naar een characteristic schrijven die de lettergrootte of het thema bepaald.

Bluetooth

Voor de uitwisseling van gegevens tussen lipl afstandsbediening en lipl scherm heb ik gekozen voor Bluetooth Low Energy.

Lipl Opslag

Met deze toepassing die tegenwoordig backend wordt genoemd worden alle verzoeken tot wijzigingen van liedteksten en afspeellijsten afgehandeld. De opslag kan gedaan worden in het bestandssysteem, postgres database, redis of intern geheugen. Dit laatste wordt alleen gebruikt bij het testen van onderdelen.

De broncode van Lipl opslag is beschikbaar op Github.

Lipl Scherm

Het gatt peripheral onderdeel definieert een gatt service met drie characteristics die geschreven kunnen worden, namelijk text, status en control.

Text wordt gebruikt om het tekstgedeelte dat moet worden getoond te versturen.

Status wordt gebruikt om de titel die moet worden getoond te versturen.

Control wordt gebruikt om een thema te selecteren, zwarte letters op een wit scherm of andersom, of om de grootte van het lettertype aan te passen.

De broncode van de flutter en de slint versie is beschikbaar op Github. Ik heb een voorkeur voor de slint versie omdat je dan alleen Raspbian Lite nodig hebt.

Lipl Afstandsbediening

Deze toepassing kan de liedteksten en afspeellijsten synchroniseren met Lipl Storage. Dit is belangrijk omdat internet niet altijd beschikbaar is op elke plek.

Op een android toestel kan de toepassing verbinding maken met Lipl Scherm. Eenmaal verbonden worden de geselecteerde liedjes automatisch getoond op Lipl Scherm.

De broncode voor lipl afstandsbediening is beschikbaar via Github.