Honor 7 mit hohem Stromverbrauch

Posted by quark007 | Posted in Smartphone & Android | Posted on 27-02-2016-05-2008

0

Heute habe ich ein neues Honor 7 (gekauft in den Blitz-Deals von Amazon) eingerichtet. Geladen wurden es bereits über Nacht und hat bis heute morgen auch kaum an Akku verloren. Heute habe ich dann das Gerät das erste mal mit dem Internet verbunden und das Google-Konto eingerichtet. Damit fing der hohe Stromverbrauch an. Zwischen 11:00 und 15:00 ist der Akku von ~ 85% auf etwa 30% gesunden bei weniger als 30 Minuten SOT (ScreenOnTime). In dieser Zeit habe ich das Google-Konto einmal gelöscht und mich mit einem anderen neu angemeldet, mehr ist nicht passiert.Ich konnte mir den Verbrauch also nicht erklären. Ein Blick in die Akku-Statistik hat meinen Verdacht auf die PlayDienste gelengt und wollte sie beenden. Ohne Root war das aber leider nicht möglich. Aufgefallen ist mir außerdem, dass das Gerät die ganze Zeit nicht in den DeepSleep gegangen ist, also bei ausgeschaltetem Bildschirm immer noch voll aktiv war. 3G/4G war nicht aktiv, die Bildschirmhelligkeit auf niedrigster Stufe und alle Apps beendet. Für mich also wirklich ein Rätsel

Letzendlich habe ich mich daran erinnert, dass beiScreenshot_2016-02-27-22-26-24[1] meinem Nexus4 ein PlayDienste-Update gelaufen ist, nachdem ich über Threema einige Nachrichten erst bei entsperren des Handys erhalten habe. Um dieses Phänomen von vorne herein auszuschließen habe ich auch bei dem Honor 7 das Update eingespielt (LINK) und auch den PlayStore aktualisiert (unter Einstellungen auf die BuildNummer klicken, dann erfolgt das Update automatisch).
Seitdem hat sich der Akkuverbrauch auf weniger als 1% pro Stunde reduziert und das bei aktiviertem WLan und gelegentlich aktiviertem Bildschirm.

Ich hoffe damit dem ein oder anderen viel Google-Arbeit und Ärger zu ersparen. Zu dem Smartphone selber wird eventuell auch noch ein Bericht über die Einrichtung, das Unlocken und Rooten folgen.

ICS Kalender in Owncloud importieren

Posted by quark007 | Posted in Programmieren / Coden | Posted on 01-01-2016-05-2008

0

Wer einmal mit Owncloud angefangen wird davon vermutlich nicht mehr loskommen. Doch einige Punkte sind noch nicht optimal gelöst bzw. für bestimmte Anforderungen gibt es noch keine OutOfTheBox Lösung. Dazu gehört auch das importieren von KalenderFeeds. In meinem Fall sind das z.B. Abfuhrtermine für Haushaltsmüll oder aber Sportveranstaltungen am Wochenende.

Mit PHP-Skripten habe ich mir bereits aus den Internetseiten die Daten für eine ICS-File extrahiert und daraus eine konforme ics-datei erzeugt. Dies geschieht bei jedem Aufruf des Scripts automatisch. Ein Beispiel, das die Spieltermine der Badmintonabteilung des TSV Lauf 1 aufbereitet (bereits ausgetragene Spiele werden dabei herausgefiltert):

<?php
    $ch = curl_init();
    $URL = "http://www.alleturniere.de/sport/drawmatches.aspx?id=5892ECDD-1447-4D3B-ABF2-99A596D92E79&draw=1";
    
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    //Set the URL
    curl_setopt($ch, CURLOPT_URL, $URL);
    //Execute the fetch
    $data = curl_exec($ch);
    //Close the connection
    curl_close($ch);

    
    $position = strpos($data,'<table class="ruler matches">');
    $text_new = substr($data,$position);
    $ics_data = array("BEGIN:VCALENDAR\r\nVERSION:2.0\r\nMETHOD:PUBLISH\r\nPRODID:-//ABC Corporation//NONSGML My Product//EN\r\nBEGIN:VTIMEZONE\r\nTZID:Europe/Berlin\r\nBEGIN:DAYLIGHT\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0100\r\nTZNAME:PDT\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0200\r\nTZNAME:PST\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD\r\nEND:VTIMEZONE\r\n"); //SammelArray für ICS-Einträge
    
    if(preg_match_all('~<tr>(.*)<\/tr>~isU', trim($text_new), $matches)) {
        foreach($matches[0] as $array) {
            if(preg_match('~<td class="plannedtime" align="right">([A-Za-z]{2}) ([0-9]{2}).([0-9]{2}).([0-9]{4}) <span class="time">([0-9]{2}):([0-9]{2}){1}</span><\/td><td align="right">[0-9]{1,2}<\/td><td align="right">[H|R]<\/td><td>[0-9]{1,2}<\/td><td class="nowrap" align="right">(.*)<a class(.*)>(.*)<\/a>(.*)<\/td><td align="center">\-<\/td><td class="nowrap">(.*)<a class(.*)>(.*)</a>(.*)<\/td><td>(.*)<\/td><td><a href(.*)>(.*)<\/a><\/td>~',$array,$splits)) {
                if(preg_match('~(TSV Lauf)~is',$splits[9].$splits[13]) AND $splits[15] == "") {
                    $ics_data[] = "BEGIN:VEVENT\r\nDTSTART;TZID=Europe/Berlin:".$splits[4].$splits[3].$splits[2]."T".$splits[5].$splits[6]."00\r\nDTEND;TZID=Europe/Berlin:".$splits[4].$splits[3].$splits[2]."T".($splits[5]+3).$splits[6]."00\r\nLOCATION:".str_replace(",","\,",$splits[17])."\r\nCATEGORIES:Sport\r\nTRANSP: OPAQUE\r\nSEQUENCE:0\r\nUID:\r\nDTSTAMP:".date("Ymd\THis\Z")."\r\nSUMMARY:Badmintonspiel ".$splits[9]." - ".$splits[13]."\r\nDESCRIPTION: \r\nPRIORITY:1\r\nCLASS:PUBLIC\r\nBEGIN:VALARM\r\nRIGGER:-PT10080M\r\nACTION:DISPLAY\r\nDESCRIPTION:Reminder\r\nEND:VALARM\r\nEND:VEVENT\r\n";
                }
            }
        }
    }
foreach($ics_data AS $date) {
    print($date);
} echo "END:VCALENDAR";
?>

Read the rest of this entry »

ID3-Tags von MusicPlayerDaemon falsch erkannt

Posted by quark007 | Posted in Computer & IT | Posted on 31-12-2015-05-2008

0

Wie bereits in dem Post zu RaspberryPi als MusikPlayer zu lesen war, ist es recht einfach möglich ein RasperryPi als Player für im Netzwerk verfügbare Musikfiles zu verwenden. Als ich zu Weihnachten wieder darauf zurückgreifen wollte, habe ich mich gewundert, dass bei einigen Künstlern gar nicht alle Titel eines Albums angezeigt wurden. Auf dem Server waren sie aber definitiv vorhanden. Also habe ich mich auf die Suche gemacht und habe viel ausprobiert.

Auf die richtige Fährte kam ich mit MP3Tag. Es hat mir gezeigt, dass einige Dateien andere Tag-Version genutzt haben (v1, v2.3, v2.4). Schlussendlich habe ich mich dazu entschieden alle Titel auf das v2.4 Format zu konvertieren. Um nicht zuvor alle Titel einlesen zu müssen, habe ich eine Möglichkeit gesucht auf dem Server direkt die Konvertierung vorzunehmen. Als sehr umfangreiches Tool hat sich mid3v2 errwiesen.

Mit dem Befehl

find . -type f -name '*.mp3' -exec mid3v2 -C {} +

lassen sich alle mp3-Dateien in Unterordnern auf das Tagformat ID3v2.4 updaten. Mit der Option “-s” ließe sich sogar der v1-Tag löschen, was mir jedoch zu riskant war. Auch so hat MPD nun endlich die Titel alle richtig erkannt.id3v1 tag fehler

Headless CalibreServer einrichten

Posted by quark007 | Posted in Uncategorized | Posted on 31-12-2015-05-2008

0

In Zeiten von eBook-Readern und einfach zugänglichen eBooks, habe ich mich dazu entschieden auch diese zentral auf meinem Server zu verwalten. Es gibt zwar ein Calibre-Plugin für OpenMediaVault, ich wollte jedoch das einlesen neuer Bücher in die DB automatisieren. Über eine komplette Installation im System war das für mich einfacher. Dabei habe ich mit an den folgenden beiden Anleitungen entlang gehangelt:

Installation und Benutzung detailiert beschrieben (jedoch mit xvfb)

Einfache, kurze Beschreibung

Damit war es möglich Calibre als Service zu starten und somit auch den Webserver mit Zugriff auf die eBooks zu erreichen. Anschließend ging es noch darum, dass ebooks in einem definierten Ordner automatisch eingelesen und in das für den Paperwhite lesbare mobi-Format zu konvertieren. Mit Hilfe einiger Anleitungen ([1] [2] [3] kam ich schließlich zu folgendem Script:

#!/bin/bash

count=0
IFS='
'
#rename 's/[^a-zA-Z0-9]//'  *.pdf
for datei in `find  /media/[HDDID]/eBooks/_NewBooks  -name "*.epub" -print 2>/dev/null`
#find /media/[HDDID]/eBooks/_NewBooks/. -name "*.epub" -print0 | while IFS= read -r -d '' file;
do
        if [ -f ${datei%.epub}.mobi ]; then
            echo $datei" bereits convertiert"
        else
           echo "Die Datei $datei wird konvertiert..."
           ebook-convert  "$datei" "${datei%.epub}.mobi" >/dev/null 2>&1
           count=$((count+1))
        fi
done

if [ $count -gt 0 ]
then
IFS=''
        echo "Neue Bücher werden in die Bibliothek geladen"
        calibredb add /media/[HDDID]/eBooks/_NewBooks -r --with-library /media/957d350a-cf86-496a-bf57-cc4543527c5e/Public/eBooks/_calibre_library  >/de$
        sleep 1
        rm /media/[HDDID]/eBooks/_NewBooks/*  >/dev/null 2>&1
else
        echo "keine neuen Dateien gefunden"
fi

Das Script ist sicher noch nicht perfekt, da es erst alle Bücher konvertiert und anschließend erst in die Datenbank einliest. Dieses Script habe ich als calibre-converter.sh im Userverzeichnis abgelegt und über einen Cronjob alle 5 Minuten aufgerufen.

*/5 * * * * sh /root/calibre-converter.sh

Aktuell bin ich noch dabei zu versuchen ein Plugin in meinen Headless Calibre so zu integrieren, dass ich mir den vorhergehenden Schritt vor dem Integrieren in die Datenbank ersparen kann. Falls ich zu einem Ergebnis komme, gibts hier weitere Infos dazu.

Weitere infos:
AutoStart mit systemd

FritzBoxen per VPN verbinden um auf Server zuzugreifen

Posted by quark007 | Posted in Computer & IT | Posted on 31-12-2015-05-2008

0

Wie in einem früheren Beitrag zu lesen war, habe ich einen HP-Server als NAS eingerichtet. Da ich nun auch meinen Eltern Speicherplatz auf dem Gerät zuteilen möchte, habe ich mich dazu entschieden die beiden FritzBoxen per VPN zu koppeln. Dazu habe ich VPN-Konfigurationsdateien mit dem Programm “FRITZ!Box Fernzugang einrichten” erstellt und entsprechend in die Fritzboxen importiert. Ohne Probleme hat sich das VPN Netzwerk aufgebaut. Ich habe auch direkt geprüft ob ich den Server anpingen kann und auch das funktionierte.

Dann habe ich versucht ihn als Netzlaufwerk zu mappen. Doch das wollte nicht klappen. Er hat mir zwar das Fenster für den Login angezeigt, doch trotz richtiger Anmeldedaten hat er keine Verbindung herstellen können. Per Browser komme ich aber auf die Konfigurationsoberfläche von OpenMediaVault. Dort findet sich im SMB-Log aber auch kein Eintrag, dass überhaupt jemand versucht hat sich zu verbinden. Ich vermute daher, dass die FritzBox Ports vor der VPN-Verbindung filtert.

Um zu prüfen, ob auch der Port erreichbar ist, kann man unter Windows das Tool “PortScan” nutzen. Unter Linux bietet sich ein einfacher Befehl an, den ich hier gefunden habe:

nc -zv 127.0.0.1 80

Nur wenn der Port auch erreichbar ist, ist ein Berechtigungsproblem zu vermuten. Ansonsten muss etwas mit den Netzwerkeinstellungen nicht in Ordnung sein.

Bei der weiteren Suche bin ich auf den folgenden Artikel bei AVM gestoßen. Darin wird erklärt, dass in der Windows-Firewall ein weiteres Subnetz/Remote-Netz für die SMB-Verbindung hinzugefügt werden muss. Die Datei- und Druckerfreigabe hatte ich sowieso schon aktiviert.

VPN-Kopplung_01Zu guter letzt, nach viel ausprobieren, deaktivieren von Firewalls, AntiViren-Programmen und AdBlockern war es doch ein Problem der FritzBox: In den Filtereinstellungen (Internet -> Filter -> Zugangsprofile) ist für jedes Gerät von Anfang an das Standard-Profil zugeordnet. Dieses hat bei mir aber den Zugriff nur auf Internet und Mail freigegeben. Im LAN funktionieren alle Protokolle, aber ins Internet eben nur einige. Wenn ich diese Restriktionen entfernt habe, hat alles funktioniert.VPN-Kopplung_02

Xampp Portable mit getrennter Datenablage

Posted by quark007 | Posted in Computer & IT, Programmieren / Coden | Posted on 01-09-2015-05-2008

0

Um auch auf Reisen an meinen PHP-JS-Skripten arbeiten zu können, habe ich mir einen USB-Stick mit TrueCrypt-Container angelegt. In den Container möchte ich aber nicht XAMPP selber packen (auch wegen Performance Gründen), sondern lediglich die Daten. Also habe ich mir die XAMPP-Portable-Version (minimal) herunter geladen und auf den USB-Stick installiert. Ebenso TrueCrypt und einen Container gesichert mit PW und Key-File in den ich www- und mysql-Daten in Unterordner gepackt habe.

Anschließend muss man noch in der XAMPP Config (bei mir speziell MySQL und Apache) die Pfad-Variablen anpassen.

Beim Apache ist das bei mir recht unkompliziert mit einer Änderung der Datei …/xampp/apache/conf/httpd.conf. Dabei tauscht man den Pfad in folgenden Zeilen aus:

DocumentRoot "/xampp/htdocs"
<Directory "/xampp/htdocs">

Bei MySQL sollte es auch nicht komplizierter sein. Man kopiert sich den mysql/data/ Ordner oder dessen Inhalt in einen Ordner in dem gemounteten Container. Anschließend muss man die Daten in …/xampp/mysql/bin/my.ini anpassen.

Wichtig ist dabei folgende Zeilen upzudaten:

innodb_log_group_home_dir = "X:/mysql_data"
innodb_data_home_dir = "X:/mysql_data"
datadir = "X:/mysql_data"

Eigentlich sollte es dann schon funtionieren, doch bei mir hat er den Start immer abgebrochen. In Blick in die mysql_error.log ergab folgenden Fehler, der dafür verantwortlich war:

2015-09-01 18:43:17 [...]  InnoDB: Error: unable to create temporary file; errno: 2

Ein wenig stöbern im Internet hat mich zu diesem Post auf stackexchange geführt. Darin wird erwähnt, dass es zielführend sein kann, den Temp-Ordner auf den Windows-Temp Ordner zu legen. Dazu passt man folgenden Wert in der my.ini an:

tmpdir = "C:/Windows/Temp"

Damit läuft bei mir nun alles so wie gewünscht. Vielleicht hilft es ja auch dem ein oder anderen von euch.

RaspberryPi verliert Internetverbindung

Posted by quark007 | Posted in Computer & IT | Posted on 24-06-2015-05-2008

0

Als ich gestern nach Hause kam und mir den Verlauf des Wetters den Tag über anschauen wollte, habe ich festgestellt, dass dieser sich seit um 17:10 nicht mehr aktualisiert hatte. Im RaspberryPi habe ich dann gesehen, dass der FTP-Upload nicht funktionierte.

Meine erste Idee war, dass mein Server down war. Da ich die Website aber per Laptop erreichte, konnte es das nicht sein.

Also der Standardversuch: erstmal google anpingen:

pi@raspberrypi ~ $ ping google.de
PING google.de (216.58.213.3) 56(84) bytes of data.
From p54966A32.dip0.t-ipconnect.de (84.150.106.50) icmp_seq=1 Packet filtered
From p54966A32.dip0.t-ipconnect.de (84.150.106.50) icmp_seq=2 Packet filtered
From p54966A32.dip0.t-ipconnect.de (84.150.106.50) icmp_seq=3 Packet filtered

Diese Meldungen habe ich nicht verstanden. Was hat t-ipconnect.de damit zu tun? Erster Verdacht war die Telekom, aber wie soll die hinter einem Router etwas blockieren? Vom Laptop aus ging ja alles.

Heute morgen habe ich dann im Internet gefunden, dass es auch an der FritzBox liegen könnte.

Und tatsächlich habe ich vor etwa 1 Woche Änderungen an den Internetzugangsberechtigungen vorgenommen. Ich hatte nur angemeldeten Geräten den Internetzugriff erlaubt.
FritzBox Firewall
Dazu habe ich im Standard-Profil die Onlinezeit auf  “keine” gesetzt. Wieso auch immer hat er das Rasperry als ein unbekanntes Gerät aufgefasst und ihm dadurch den Internetzugriff verweigert.

Warum er das aber erst nach über 7 Tagen gemacht hat ohne ein neues Verbinden, kann ich nicht sagen und verstehe ich selber nicht.

Dabei ist mir noch etwas aufgefallen: in der FritzBox bei den Geräten werden mir Unbekannte aufgelistet, die angeblich über Bekannte verbunden sind. Hinter diesen ist ein halber Recycling-Pfeil mit dem Titel “Mit der FritzBox verbunden über XY”. Diese habe ich einfach gelöscht, sofern die IP nicht einem wirklichen Gerät zugeordnet war. Damit ist jetzt erstmal Ruhe

RaspberryPi startet nicht mehr nach Underclocking

Posted by quark007 | Posted in Computer & IT, Programmieren / Coden | Posted on 15-06-2015-05-2008

0

Im Zuge der Installation einer neuen Wetterstation, die mit einem RaspberryPi B+ ausgelesen wird, bin ich auf ein Problem gestoßen, das ich erst nach mehrmaligem neuen Aufsetzen gelöst bekommen habe.

Das RaspberryPi habe ich mit Debian Wheezy aufgesetzt und weewx installiert. Die Station habe ich über USB angeschlossen und sie wurde auch sofort erkannt und abgefragt. Anschließend habe ich alles so eingerichtet wie es sein sollte und auch einen Skin übersetzt (Dazu mehr in einem weiteren Beitrag). Da das Pi dabei kaum etwas zu tun hat, überlegte ich mir es herunterzutakten.

Dafür findet man im Internet Anleitungen zu Hauf, z.B. diese hier (erste bei der google-Suche). Darin wird beschrieben, wie man die /boot/config.txt anpassen muss. Es sollen folgende Zeilen ergänzt bzw. geändert werden:

 arm_freq=700
 arm_freq_min=100
 core_freq=250
 core_freq_min=75
 sdram_freq=400
 over_voltage=0

Das habe ich auch ganz vorbildlich gemacht, doch nach einem reboot konnte ich nicht mehr auf mein RasPi zugreifen. Es wurde auch im Netzwerk nicht gefunden. Selbst bei Anschluss von Tastatur und Bildschirm blieb alles tot. Zunächst dachte ich, ich hätte in der /etc/network/interfaces etwas falsches eingetragen und habe die SD-Karte neu aufgesetzt. Doch beim nächsten mal das gleiche.

Da ich dachte, es könnte an der Netzwerkkonfiguration liegen, habe ich mir ein Live-Linux auf einen Stick gepackt und gestartet, um die SD-Karte mounten zu können. Doch die Konfiguration schien in Ordnung. Dann wollte ich die Änderungen in der /boot/config.txt rückgängig machen, doch unter dem Linux schien der Ordner leer. Ich habe aufgegeben und Windows gestartet. Im Windows wurde die boot-Partition aber erkannt und dort habe ich auch die config.txt gefunden. ALs ich die Änderungen rückgängig machte, startete das RasPi wieder ganz normal, als wäre nichts gewesen.

Mein Tipp daher: das underclocking sollte man besser lassen. In vielen Foren wir darauf verwiesen, dass der Lan-Chip das eigentliche Leistungsmonster ist. Das Underclocking würde sowohl was Wärme als auch Stromverbrauch angeht, kaum etwas bewirken. Wenn ich Zeit habe, werde ich das einmal nachprüfen, sofern es bei mir doch funktionieren sollte.

Homeserver Update Problem

Posted by quark007 | Posted in Computer & IT, Programmieren / Coden | Posted on 09-06-2015-05-2008

0

Da ich es nicht lassen kann und immer wieder am rumspielen und ausprobieren bin, ist mir heute etwas komisches passiert. Nun aber nach einander.

Postfix als Relay-Server einrichten

Ich habe den Postfix Mail-Relay eingerichtet (das hatte bei mir lange nicht funktioniert). Nach dieser Anleitung bin ich vorgegangen und habe alles korrekt eingerichtet. Da ich das ganze über meinen Posteo-Account laufen lassen wollte habe ich folgende Werte angegeben:

Hostname: ServerName [Bei mir war dabei wichtig, dass es eine öffentlich registrierte Internetdomain ist. Sonst gab es einen Fehler]
SMTP-Relay: "[posteo.de]:587"

In der main.cf habe ich diese vorgegebenen Werte ergänzt und die vorigen Eingaben kontrolliert.

Die Datei /etc/postfix/sasl_password mit dem korrekten Inhalt wird mit folgendem Befehl erstellt:

sudo echo "posteo.de [Benutzername]@posteo.de:[Passwort]" > /etc/postfix/sasl_password

Nachdem ich dann den Postfix-Server neugestartet hatte, konnte ich wirklich Mails versenden und die kamen auch an. Ohne das “@posteo.de” im Benutzernamen gab es einen Authentifizierungsfehler. Wurde lediglich posteo.de als Relayserver angegeben, wurde mir der Zugriff verweigert.

Unbekannter Fehler mit falscher Lösung

Mein Smartphone besser gesagt DavDroid meldete auf einmal, dass es ein Synchronisationsproblem gegeben habe. Also den Sync nochmal neu gestartet, aber die Meldung kam wieder. Also versucht mich in OwnCloud einzuloggen: 403 Fehler beim Laden der Seite. Naja dachte ich mir, schau ich mir halt mal nginx-Config an. Sah alles normal aus und auch ein Neustart von nginx hat nichts gebracht.

Da mir im Openmediavault Forum schon einmal sehr weiter holfen wurde und ich erfahren habe, dass der Befehl

sudo apt-get install --reinstall openmediavault

meine Konfiguration beibehält aber Fehler dennoch beseitigen konnte (damals ein Fehler mit nicht mehr auffindbarer env.conf), habe ich diesen Befehl einfach mal ausgeführt. Doch das verschlimmerte alles nur. Meine Plugins (Nginx, Mysql, OMVextras etc.) waren alle weg. Ich habe den Server dann erstmal neu gestartet in der Hoffnung, dass er beim Start die Konfig-Dateien vielleicht doch findet und wieder einbindet, aber war nix. Zu allem Überfluss konnte ich mich auch per SSH nicht mehr einloggen und auch die SMB-Shares waren nicht erreichbar. Die Services waren gestartet, aber das Symbol dafür war rot, also lag ein Fehler vor. Aber welcher?

Das weiß ich bis eben auch noch nicht. Ein ändern der Konfiguration, deaktivieren, speichern und wieder neu aktivieren hat das Problem dann aber beseitigt.

Also habe ich alle Plugins wieder installiert und eingerichtet (was ein act, wenn man die Konsole gewöhnt ist und sich jetzt im Webinterface zurecht finden muss). Dabei ist mir aufgefallen, dass in der Menüleiste ein Feld für das Owncloud-Interface ist. Da ich mein OwnCloud aber manuell in einem Server installiert habe brauche ich das nicht. Read the rest of this entry »

Lilypond: Notenblättchen selbstgemacht

Posted by quark007 | Posted in Computer & IT, Programmieren / Coden | Posted on 19-05-2015-05-2008

20

Für unsere Hochzeit habe ich ein Programm gesucht, mit dem ich die Liedzettel selber machen kann. Im Internet findet man zwar viele Lieder als Bild, aber nie alle in gleicher Schriftart und -größe. Bei der Suche bin ich dann auf Lilypond gestoßen, ein unter GNU GPL stehendes OpenSource Projekt, dass sich das erstellen von Liedblättern, Kompositionen und ganzer Partituren auf die Fahne schreibt.

Es ist ähnlich angelegt wie LaTeX mit Befehlen und einer reinen Texteingabe. Erst durch das Kompilieren in PDF, PNG und/oder Midi kann man das Ergebnis betrachten. Zur einfacheren Handhabung habe ich mich für den Frescobaldi-Editor entschieden. Dieser bietet das für mich wichtige Feature, direkt neben der Texteingabe die kompilierte Ausgabedatei anzuzeigen. Zudem springt er bei Klick auf eine Note an die korrekte Stelle im Quelltext.

Da das Liedblatt bei uns in Din A5 gedruckt werden soll, hat es bei mir nicht funktioniert alle Stücke in einem PDF auszugeben. Die Aufteilung auf die Seiten war mir einfach nicht sauber genug. Also habe ich alle Stücke einzeln kompiliert und mit PDF Split And Merge Basic zusammengefügt, zumal noch Deckblatt, Leerseiten und eine Anfahrtsskizze hinzu kommen mussten.

Beim Erstellen der Stücke sind mir eine Dinge in die Quere gekommen, die ich hier erklären und ausräumen will.

1. Mich hat die Einrückung der ersten Notenzeile zu Beginn des Stückes gestört. Um dies abzustellen, muss in den \layout-Block die folgende Zeile hinzugefügt werden:

\layout {
  indent = #0
}

Wenn man die Einrückung erhöhen will, erhöht man einfach den Wert 0 auf einen passenden >0

2. Außerdem war auf jeder letzten kompilierten Seite ein Hinweis auf das Lilypond Projekt. Dieser Hinweis wäre auf jeder meiner Seiten aufgetaucht, was ich für nicht erträglich erachte. Abhilft bringt folgender Code:

\paper {
  oddFooterMarkup = \markup{ \fill-line{ \line{" "} } }
}

Aus Rücksicht auf das Projekt, sollte man aber an das Ende des gesamten Heftes den Hinweis anfügen. Bekanntheit ist für solche Projekte äußerst wichtig.

3. Bei einem Stück kam es vor, dass eine einzelne Zeile auf eine weitere Seite geschoben wurde. Das ist für einen Liedzettel aber äußerst unpraktisch. Ich habe daher folgenden Code gefunden, der den Abstand der Notenzeilen ändert. Mit den Werten muss man etwas spielen, gerade wenn noch Liedtext unter den Noten vorhanden ist. Bei mir haben die folgenden Zeilen geholfen:

\paper {
  system-system-spacing = #'((padding . 0.5) (basic-distance . 0.5))
}

Damit konnte ich ein wenig mehr Platz gewinnen und so das Lied auf eine Seite gebracht.

4. Wenn mehrere \score Umgebungen auf eine Seite gebracht werden sollen, werden sie automatisch so angeordnet, dass es (angeblich) am Besten aussieht. Das Auseinanderziehen von Liedzeilen empfinde ich aber als nicht schön. Mit den Anweisungen:

\paper {
  ragged-last-bottom = ##f
  ragged-bottom = ##f
}

wird das Einhängen des Inhalts am Seitenende deaktiviert und somit wieder von oben gestapelt angezeigt.

5. Außerdem  haben mich die Seitenzahlen gestört. Diese ließen sich mit folgender Funktion deaktivieren:

\paper {
  print-page-number = ##f
}

Read the rest of this entry »