Sonntag, 26. Juli 2015

Python: Tabellen in ReportLab

ReportLab ist die wohl leistungsfähigste Bibliothek für Python, wenn es um das Erzeugen von PDF-Dateien geht. Von High-Level Zugriffen via Platypus (=Page Layout and Typography Using Scripts) bis zu Low-Level mit direktem Zugriff auf den Canvas bietet ReportLab alles.

Tabellen unterstützt Platypus mit Hilfe der Table-Klasse (welche ein Flowable darstellt) direkt und die Verwendung ist auch erst Mal nicht weiter schwierig.

Es soll ein einfaches PDF-Dokument mit Hilfe von ReportLab gebaut werden. Das Dokument besteht aus einem Absatz Text, einer Tabelle und einem Absatz Text nach der Tabelle.

Der Code dafür sieht im einfachsten Fall so aus:

from reportlab.platypus import Paragraph, Table, SimpleDocTemplate
from reportlab.lib.styles import getSampleStyleSheet
from reportlab.lib.pagesizes import A4


my_data = [['foo', 'bar', 'spam'],
           ['egg', 123, 'python'],
           ['a bit longer', 666, '9B']]
          
styles = getSampleStyleSheet()
doc = SimpleDocTemplate('table_test.pdf', pagesize=A4)
story = []
story.append(Paragraph('Text vor Tabelle', styles['Normal']))
story.append(Table(my_data))
story.append(Paragraph('Text nach Tabelle', styles['Normal']))
doc.build(story)


my_data enthält die Daten für die Tabelle, der Rest ist weitestgehend selbsterklärend.

Nur das das Dokument nicht gerade "hübsch". Das Ergebnis ist im folgenden Screenshot zu sehen:

Standardmäßig werden für die Tabelle keine Rahmen gezeichnet und die Tabelle ist horizontal auf der Seite zentriert. Außerdem ist der Text sehr nah an der Tabelle.

Das ist im folgenden Code korrigiert:

from reportlab.platypus import Paragraph, Table, TableStyle, SimpleDocTemplate
from reportlab.lib.styles import getSampleStyleSheet
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors

my_data = [['foo', 'bar', 'spam'],
           ['egg', 123, 'python'],
           ['a bit longer', 666, '9B']]
          
styles = getSampleStyleSheet()
doc = SimpleDocTemplate('table_test.pdf', pagesize=A4)
story = []
story.append(Paragraph('Text vor Tabelle', styles['Normal']))
t = Table(my_data)
t.hAlign = 'LEFT'
t.spaceBefore =  10
t.spaceAfter = 10
t.setStyle(TableStyle(

    [('BOX', (0,0), (-1,-1), 0.5, colors.black),
     ('INNERGRID', (0,0), (-1,-1), 0.5, colors.black)]))
story.append(t)
story.append(Paragraph('Text nach Tabelle', styles['Normal']))
doc.build(story)


Das ganze liefert als Ergebnis folgendes:
Über das Attribute hAlign wird die Tabelle die Ausrichtung der Tabelle bestimmt, der Wert LEFT richtet sie linksbündig aus. Mit den Attributen spaceBefore und SpaceAfter wird zusätzlicher Leerraum (hier: 10 px) eingefügt.

Die Tabelle an sich wird über die setStyle-Methode formatiert, welche als Wert die TableStyle-Klasse übergeben bekommt. Diese erlaubt einen detaillierten Eingriff in die Formatierung der Tabelle.

Die Werte für TableStyle werden als Liste von Tupeln übergeben. Im obigen Beispiel wird mit BOX ein Rahmen um die Tabelle gezeichnet und INNERGRID zeichnet den inneren Rahmen, beide in schwarz.
Die Tupel (0, 0), (-1, -1) definieren den Geltungsbereich der Formatierung. (0,0) ist dabei die Zelle links oben, (-1, -1) die Zelle rechts unten - somit ist also die ganze Tabelle abgedeckt.

Möchte man z.B. das innere Gitter mur für einen Teil der Zellen zeichnen und in der mittleren Zelle soll die Schrift rot sein, so ist die Codezeile wie folgt anzupassen:

t.setStyle(TableStyle(
    [('BOX', (0,0), (-1,-1), 0.5, colors.black
     ('INNERGRID', (0,0), (1,1), 0.5, colors.black),
     ('TEXTCOLOR', (1,1), (1,1), colors.red)]))

Und das Ergebnis sieht dann so aus:


TableStyle bietet eine Vielzahl weiterer Möglichkeiten, dass Aussehen der Tabelle zu beeinflussen. Eine komplette Übersicht ist im Kapitel 7 der ReportLab Dokumentation zu finden.

So ist es z.B. auch möglich, Zellen innerhalb einer Spalte oder Zeile zusammenzufassen. Möchte man z.B. die drei Zellen der ersten Zeile zusammenfassen, so ist der obiger Code wie folgt zu ändern:

...
my_data = [['Überschrift', '', ''],
           ['egg', 123, 'python'],
           ['a bit longer', 666, '9B']]

....
t.setStyle(TableStyle(
    [('BOX', (0,0), (-1,-1), 0.5, colors.black),
     ('INNERGRID', (0,0), (-1,-1), 0.5, colors.black),
     ('SPAN', (0, 0), (-1, 0))]))


Das sieht im Ergebnis so aus:

Die bisher generierten Tabellen ermitteln die Breite der Spalten und Höhe der Zeilen automatisch, aber auch das kann natürlich beeinflusst werden. Möchte man z.B. eine fixe Spaltenbreite  von 100 px haben, so ist im Code die Zeile wie folgt zu ändern:

t = Table(my_data, colWidths=100)

Weitere Möglichkeit sind ebenfalls im Kapitel 7 der Dokumentation zu finden.

In den obigen Beispielen wird der Table-Klasse einfach eine Liste von Strings bzw. Integern übergeben. Man kann aber auch eine Liste von Flowables übergeben, was sich anbieten, wenn man z.B. längeren Text oder Grafiken in der Tabelle unterbringen möchte.

Des Weiteren gibt es noch die Klasse LongTable, welche anstellen von Table verwendet werden kann. Das Ergebnis ist laut Dokumentation das gleiche, allerdings soll LongTable bei sehr langen Tabelle etwas performanter sein.

Wie hier gezeigt wird, ist das Generieren einer Tabelle in einem mit Platypus gebauten PDF-Dokuments in ReportLab nicht weiter schwierig. Wie bei ReportLab üblich kann man auf Wunsch aber auch sehr detailliert in die Gestaltung und das Layout der Tabelle eingreifen.

Alle Beispiele aus diesem Blogbeitrag sind unter Python 3.4 und ReportLab 3.0 erstellt.

Sonntag, 19. Juli 2015

Grafikfehler auf Lenovo T450 und die passende Abhilfe

Seit ein paar Monaten nutze ich beruflich ein Lenovo T450 Thinkpad in der Varianten mit Intel Grafik (und ohne zusätzlich Nvidia Grafik).

Ubuntu 14.04 läuft darunter auch ohne Probleme, nur einen kleinen "Schönheitsfehler" gab es: nach dem Login war manchmal die Beschriftung der Symbole / Dateien auf dem Desktop unvollständig. Unvollständig heißt, dass einzelne oder ganz selten auch alle Buchstaben fehlten. Das kam bei ca. 50% der Logins vor. "Meine" Abhilfe war: abmelden, neu anmelden und alles war ok - zumindest in 95% der Fälle. Selten musst ich mich auch nochmal abmelden und einloggen, damit alles war, wie es sein sollte.

Auch mit dem oben beschriebenen Grafikfehler war das System uneingeschränkt benutzbar. Das Fehlen der Buchstaben trat z.B. auch im Menü der Systemeinstellung und in der Tab-Beschriftung des Firefox auf. Der Inhalt der Programmfenster an sich (z.B. die vom Firefox dargestellte Seite, die Liste der Lieder in Quod Libet etc.) war aber immer korrekt und fehlerlos.

Der Grafikfehler war zwar etwas nervig, aber die "Lösung" "Ausloggen, Einloggen" war so schnell und funktionierend, dass ich nie weiter für den Grund des Problems gesucht habe.

Anfang Juli hatte ich dann im Planet von ubuntuusers.de einen Beitrag des Intux-Blogs gelesen, in dem genau das gleiche Problem und eine passende Lösung für ein Thinkpad E550 beschrieben wurde.

Und das ist auch genau die Lösung, die beim Thinkpad T450 mit Intel GraKa funktioniert. Das ganze geht unter Ubuntu 14.04 in vier Schritten:
  • die Verzeichnis /etc/X11/xorg.conf.d/ anlegen
  • darin die Datei 20-intel.conf anlegen
  • die Datei mit folgendem Inhalt befüllen
    Section "Device"
       Identifier  "Intel Graphics"
       Driver      "intel"
       Option      "AccelMethod"  "uxa"
    EndSection
  • abmelden und wieder anmelden
Zumindest bei mir sind seitdem die oben beschrieben Grafikfehler nicht mehr aufgetreten.

An diese Stelle nochmal Danke an den Intux-Blog und zum Abschluss nochmal der volle Link auf den Blogartikel: http://www.intux.de/2015/07/das-thinkpad-e550-und-die-grafik/

Sonntag, 28. Juni 2015

Mair 1 Festival 2015, 2. Tag - Expire, Nasty, Suicidal Tendencies, Terror

Am, 27.6.2015, dem 2. Tag des Mair 1 Festivals 2015, ging es für mich so früh wie noch nie zum Mair 1, nämlich bereits um 14:30 Uhr. Der Grund: um 14.50 Uhr war der Auftritt von Expire - und den wollte ich nicht verpassen.

Als ich ankam, waren auf der großen Bühne gerade (die mir bis dato völlig unbekannten) Bury My Regrets zugange. Das ist eine deutsche Hardcore Band, welche ein solides, gut anzusehende und -hörendes Konzert ablieferten.

Jetzt kam Expire auf die kleinere Bühne. Die CDs von denen gefallen mir sehr gut, also war da schon eine gewisse Erwartungshaltung für das Konzert vorhanden.
Und die wurde nicht enttäuscht. Live hatte die Band genau so viel Power wie auf CD und mehr Energie als ein Dampfhammer mit Überdruck. Aufgrund der (für ein Festival) relativ frühen Stunde waren zwar noch nicht so viel Leute vor Ort, aber das vorhandene Publikum ging trotzdem voll bei dem sehr guter Auftritt von Expire mit.
Expire live auf der Bühne
Danach ging es dann erst Mal wieder nach Hause, weil mich dann erst so richtig wieder die Bands interessierten, die am Abend spielten.

Gegen 19.50 Uhr war ich dann auch wieder auf dem Festivalgelände. Zum dem Zeitpunkt waren noch Caliban auf der großen Bühne. Davon habe ich allerdings nichts gesehen, weil gerade am Eingang zum Festivalgelände eine Motocross Freestyle Show begann. Und so fliegende Motorräder aus der Nähe zu betrachten ist schon recht beeindruckend.

Um 20 Uhr starteten dann Nasty ihre Konzert. Die kannte ich bisher nur vom Namen. Die Band aus dem deutschsprachigen Teil von Belgien lieferten eine gute Show mit viel Interaktion mit dem Publikum ab. Das ging auch ziemlich mit, auch wenn ich so das Gefühl hatte, dass der entscheidende Funk nicht überspringen wollte.

Um 20.50 Uhr war es dann so weit - die Suicidal Tendencies betraten die große Bühne. Lebende Legenden, Veteranen des Hardcore, Inkarnation des Skatepunk und ich behaupte mal so was wie die heimlichen Headliner des Mair 1 2015.
Und: die Show war super gut, ohne wenn und aber. Mike Muir flitze eine Stunde lang wie ein angestochenes Schwein über die Bühne und auch der Rest der Band war voll dabei. Suicidal Style halt.
Zum Song "Possessed to Skate" holte man sich dann noch mal schnell ca. 50 Leute aus dem Publikum auf die Bühne, um dort abzufeiern.
Insgesamt lieferten die Suicidal Tendencies einen tollen, kurzweiligen Auftritt.
ST auf der Bühne des Mair 1
Auf der kleineren Bühne folgten dann Terror. Die Band kannte ich bis dahin auch nur vom Namen und hatte aufgrund dessen eher Metalcore vermutet. Ist es aber nicht - Terror spielt Hardcore-Punk mit leicht metall-lastigem Sound.
Aufgrund einer Rückverletzung des Sängers spielte Terror wohl in leicht veränderter Besetzung, was der Sache aber keine Abbruch tat. Es war eine energie-geladene Hardcore Show, hat mir gut gefallen. Vielleicht sollte ich mir doch mal eine CD von denen kaufen.
Terror live auf dem Mair 1
Den Abschluss des Mair 1 bildeten Millencolin. Und obwohl ich ja gerne Punkrock - auch von schwedischen Bands - höre, konnte ich mit Millencolin noch nie was anfangen. Und, was soll ich sagen: das war auch hier live auf dem Mair 1 nicht anders. Drei Songs angeschaut und nach Hause gegangen. Das ist nichts für mich.

Das Mair 1 war auf jeden Fall auch 2015 ein gutes Festival, was einen Besuch wert war. Ich freue mich schon auf das Mair 1 2016!

Samstag, 27. Juni 2015

Mair 1 Festival 2015, 1. Tag - Strung Out, Agnostic Front, Breakdown of Sanity

Am 26. und 27.6.2015 war es wieder so weit: das Mair 1 Festival 2015 findet statt, an der bekannten Location in der Nähe von Montabaur.

Das Lineup ist wie in den Jahren zuvor schon ziemlich gut, was die Musikrichtungen Hardcore, Metalcore und Punk betrifft, auch wenn mich dieses Jahr die Bands nicht sooo ansprechen (im Vergleich zu einigen anderen Lineups aus den Vorjahren).

Nichts desto trotz ging es auch dieses Jahr wieder zum Mair 1 - ist ja in der Nähe, die Atmosphäre ist immer entspannt und die Organisation sehr gut.

Als ich am 1. Festivaltag ankam, spielten gerade die Emil Bulls auf der großen Bühne ihre letzten beiden Stücke. Klang ganz ok, mehr kann ich dazu nicht sagen.

Danach kamen Breakdown of Sanity auf die kleinere Bühne. Diese Band war mit bis dato völlig unbekannt, aber nach den ersten paar Takten war klar: das ist wohl Metalcore mit Hang zum düsteren - also musikalisch nicht ganz so mein Fall.
Die Show war gut und kam auch beim Publikum sehr gut an, aber leider war der Sound bei der ersten paar Liedern schlecht - außer der wummernden Double-Bass (der in allen Liedern ausgiebig zum Einsatz kommt) und dem Gesang war nicht viel zu hören. Zum Glück wurde das nach drei oder vier Liedern besser und der Sound war so, wie er sein sollte.

Danach waren dann die Bands an der Reihe, weswegen ich heute eigentlich zum Mair 1 gefahren war: Agnostic Front und Strung Out.

Pünktlich betraten Agnostic Front um 20.50 Uhr die große Bühne. Das Urgestein der New York Hardcore fackelte nicht lange und gab ab dem ersten Song Vollgas, so dass der Funke auch direkt auf's Publikum übersprang.
Und wer schon, wie Agnostic Front, seit übr 30 Jahren im Geschäft ist, der weiß natürlich auch, wie man eine gute Hardcore Show aufzieht und spielt. Und so war dieses Konzert eine kurzweilig, unterhaltsame Stunde. Der letzte Song war nochmal ein Highlight, da Agnostic Front den Ramons Song "Blitzkrieg Bop" brachten. Sehr schön.
Agonstic Front auf der Bühne
Dann waren Strung Out auf der kleineren Bühne an der Reihe. Von denen habe ich nur eine CD, das bereits 1992 erschienene Album "Suburban Teenage Wasteland Blues". Und da Strung Out in deren Songs doch trotz kalifornischem Punk Rock einen Hang zum dunklen und melancholischen hat war ich zugegebener Maßen etwas skeptisch, wie die Show werden würde.

Um es direkt zu sagen: die Skepsis war völlig unbegründet. Strung Out spielten ein mitreisendes, Enerigie-gelandenes Konzert vom ersten bis zum letzten Takt. Sehr guter Sound und auch der von der Band oft eingesetzte mehrstimmige Gesang kam live klar und druckvoll rüber.
Unter Strich muss ich dann auch sagen: Strung Out war mit Sicherheit einer der besten Auftritte, die ich bisher auf dem Mair 1 gesehen habe. Super gut.

Strung Out auf der Bühne
Den Abschluss machten dann die Guana Apes. Musikalisch so wie so nicht mein Fall und ehrlich gesagt fand ich die Band aus der Sparte "Rock mit Hang zum Mainstream" auf dem Mair 1 auch ein wenig deplatziert. Zwei Songs habe ich mir angeschaut, bevor ich gefahren bin. Publikum war aber definitiv noch genug da, also an Popularität mangelt es den Guana Apes scheinbar nicht.

Auch wenn ich ja "nur" drei Bands ganz gesehen hatte war's ein guter 1. Tag auf dem Mair 1 2015. Schon alleine wegen des tollen Konzerts von Strung Out.

Donnerstag, 30. Oktober 2014

Erst Upgrade, dann Neuinstallation - von Ubuntu 12.04 nach 14.04

Letztes Wochenende war es soweit: das Update von Ubuntu 12.04 auf 14.04 stand auf dem Laptop an, den ich beruflich nutze (ein Lenovo T410). Die Prozedur ist ja nicht weiter schwierig und z.B. auch im Wiki von ubuntuusers.de beschrieben.

Dank schnellem Internetzugang ging das ganze auch recht zügig von statten und das Upgrade lief problemlos und fehlerfrei durch.

Nach dem Reboot lief auch alles rund, also alles gut. Dachte ich zumindest. Beim ersten Starten von Empathy unter Trusty war die Darstellung der Chats auf die Standardansicht zurückgesetzt, besser gefällt mir aber eine andere die Darstellung.

Kein Problem, kann man ja umstellen. Nur: im Empathy-Fenster fehlte das komplette Menü "Empathy", welches auch den Menüpunkt "Einstellungen" enthält. Da ich auf meinem privaten Laptop aber schon länger Ubuntu 14.04 installiert habe war ich mir sehr sicher, dass das Menü normalerweise da ist. Hm...

Nun, es gibt schlimmeres, von daher erst Mal weiter gemacht. Aber dieses Phänomen wollte dann später doch untersucht werden. Also mal testweise den Editor "gedit" gestartet. Alle Menüpunkte vorhanden, aber im Menü "Bearbeiten" fehlte auch hier der Punkt "Einstellungen". Das gleiche auch in Rhythmbox - der Menüpunkt zum erreichen der Einstellungen fehlt ebenfalls.

Da mir so gar nicht danach war, diesen Fehler in den Untiefen des Systems zu suchen, habe ich kurzerhand die Installations-DVD heruntergeladen, die wenigen Daten, die noch nicht gesichert waren, gesichert und dann Ubuntu 14.04 neu installiert.

Das lief - wie nicht anders zu erwarten - problemlos und das neue System war jetzt wirklich einsatzbereit. Inklusive der Einstellungs-Menüs, die sind jetzt wieder vorhanden.

Die Neuinstallation ist für mich übrigens nicht weiter tragisch, da ich auf dem beruflich genutzten Laptop quasi ein "Vanilla-Ubuntu" (=keine Anpassungen) nutze. Ich habe zusätzlich nur ein paar Pakete aus den offiziellen Quellen (Apache, MySQL, CouchDB) und ein paar Python-Module installiert, sonst nichts. Und die Dateien im persönlichen Ordner (Musik, Code, Bilder, Dokumente für die Arbeit) werden so wie so regelmäßig gesichert.

Wer das gleiche Problem auch schon hatten und eine Lösung ohne Neuinstallation kennt, der kann dies gerne als Kommentar zu diesem Blogbeitrag posten.

Samstag, 18. Oktober 2014

Python: ListFlowables in ReportLab

ReportLab ist die wohl leistungsfähigste Bibliothek für Python, wenn es um das Erzeugen von PDF-Dateien geht. Von High-Level Zugriffen via Platypus (=Page Layout and Typography Using Scripts) bis zu Low-Level mit direktem Zugriff auf den Canvas bietet ReportLab alles.

Allerdings hat es doch bis zu ReportLab Version 2.6 (erschienen im Oktober 2012) gedauert, bis das direkte Erzeugen von nummerierten und unnummerierten Listen möglich war. Dies war zwar vorher prinzipiell auch möglich, aber nur über Umwege (z.B. bei unnummerierten Listen durch das manuelle hinzufügen eines Bullet Points vor dem Text).

Mit dem seit ReportLab 2.6 vorhandenen Flowable namens "ListFlowable" geht das aber wesentlich einfacher.

Neulich, bei der Überarbeitung eines meiner älteren Python-Skripte, welches auch ReportLab einsetzt, habe ich auch auf diese Flowable umgestellt.

Da die Doku von ReportLab zu diesem Thema - leider - etwas dünn ist, habe ich hier in diesem Blogebeitrag mal ein paar Sachen dazu aufgeschrieben.

Grundsätzlich ist die Sache recht simpel. Nach dem Import der benötigten Module erstellt man ein ListFlowable, welches die Punkte der Liste als ListItems enthält. Der Quelltext für eine Liste mit drei Punkten sieht so aus:

from reportlab.lib.styles import getSampleStyleSheet
from reportlab.lib.pagesizes import A4
from reportlab.platypus import Paragraph, SimpleDocTemplate, ListFlowable, \
                               ListItem

styles = getSampleStyleSheet()
style = styles['Normal']
story = []

t1 = ListFlowable([ListItem(Paragraph('foo', style)),
                   ListItem(Paragraph('bar', style)),
                   ListItem(Paragraph('spamegg', style))])
story.append(t1)
doc = SimpleDocTemplate('testdoc.pdf', size=A4)
doc.build(story)

So wird eine nummerierte Liste erzeugt, der Standard des ListFlowables, wenn keine weiteren Vorgaben gemacht werden.

Möchte man eine unnummerierte Liste erzeugen, muss dem ListFlowable das Argument bulletType und start mitgegeben werden:

t1 = ListFlowable([ListItem(Paragraph('foo', style)),
                   ListItem(Paragraph('bar', style)),
                   ListItem(Paragraph('spamegg', style))],
                   bulletType='bullet',
                   start='circle')

Möchte man statt Kreisen als Bullet Points z.B. Quadrate haben, dann ersetzt man einfach start='circle' durch start='square'.

Wer aus den obigen Beispielen ein PDF generiert wird feststellen, dass sowohl die Zahl als auch die Bullet Points ziemlich groß sind, größer als der Text, formatiert mit dem Beispiel-Stylesheet aus ReportLab. Fügt man noch das Argument bulletFontSize hinzu, gefolgt von der gewünschten Schriftgröße (also z.B. bulletFontSize=8), dann werden Schrift bzw. Bullet Points in der angegebenen Schriftgröße dargestellt.
Alternativ kann man für unnummerierten Listen auch folgendes angeben: start='bulletchar'. Dann wird als Zeichen standardmäßig ein kleiner Punkt (HTML: ·) verwendet.

Bei nummerierten Listen kann aber ReportLab aber nicht nur mit "normalen" Zahlen zählen, sondern auch:
bulletType='i' # römische Zahlen
bulletType='a' # Zählung: a, b , c, ...
bulletType='A' # Zählung: A, B, C, ...

Mit dem Argument start kann  man den Beginn der Zählung bei nummerierten Listen den Beginn der Zahlung festlegen. bulletType='A', start='10' würde z..B. die Zählung der Liste bei J starten lassen.

Weiterhin werden standardmäßig alle Listen linksbündig ausgerichtet. Möchte man die Listen gegenüber dem Text etwas einrücken, dann muss man die für die Aufzählungszeichen und den zugehörigen Text separat machen, wie z.B.:

p1 = Paragraph('etwas Text', style)
t1 = ListFlowable([ListItem(Paragraph('foo', style), leftIndent=25),
                   ListItem(Paragraph('bar', style), leftIndent=25),
                   ListItem(Paragraph('spamegg', style),leftIndent=25)],
                   bulletType='bullet',
                   start='bulletchar',
                   leftIdent=10)
story.append(p1)
story.append(t1)
story.append(p1)

Und das ListFlowable kann natürlich auch verschachtelt werden, für verschachtelte Liste. Eine Liste mit zwei Ebenen sieht z.B. so aus:

t1 = ListFlowable([ListItem(Paragraph('foo', style)),
                   ListItem(Paragraph('bar', style)),
                   ListFlowable([ListItem(Paragraph('spam', style)),
                                 ListItem(Paragraph('egg', style))],
                                 bulletType='a'),
                   ListItem(Paragraph('more', style))])

Ein paar weiter Tipps zum ListFlowable und dessen Formatierungsmöglichkeiten gibt es auch in einem Thread bei stackoverflow.

Dienstag, 29. Juli 2014

Bob Mould "Beauty & Ruin" - Rezension

Am 3.6.2014 war es mal wieder so weit: Bob Mould, legendärer Frontmann von Hüsker Dü, hat sein 13. Studioalbum namens "Beauty & Ruin" veröffentlicht.

Darauf enthalten sind 12 Tracks mit einer Gesamtspielzeit von 36 Minuten. Nach dem letzten, sehr guten Release "Silverage" aus dem Jahr 2012 ist es spannend zu sehen, ob Bob Mould nochmals so ein fulminantes Album abliefern kann.

Der erste, spontante Eindruck meinerseits beim 1. Lied: "Hm, klingt ja wie Sugar" (was ja keineswegs schlecht ist). Musikalisch schwankt das ganze Album dann immer zwischen Bob Mould und Sugar, wobei auf dem Album auch zwei, drei ruhiger Stücken enthalten sind.

Insgesamt ist das alles aber sehr gut zu hören und auch das ganze Album ist in sich sehr "rund". Aber: das Album hinterlässt keine bleibenden Erinnerung. Weder positiv noch negativ. Während bei "Siverage" eine Vielzahl der Lieder im Ohr bleiben, ist dies bei "Beauty & Ruin" nicht so.

Nichts desto trotz macht jeder neue Hördurchgang Spaß und langweilig wird's auch nicht. Nur die Nachhaltigkeit fehlt. Von daher ein sehr gutes und solides Album von Bob Mould, was absolut hörenswert ist. Aber auch kein echtes Highlight.

Sonntag, 29. Juni 2014

Mair 1 Festival 2014 2. Tag - Risk it!, Comeback Kid, Hatebreed

28.6.2104, 2. Tag des Mair 1 Festivals 2014. Nachdem der 1. Tag schon ziemlich gut war, waren die Gründe für den Besuch am 2. Tag die anstehenden Auftritte der Bands Risk it!, Comeback Kid und Hatebreed.

Leider war an diesem Tag das Wetter schlechter, es gab mehr Regenschauern. Immerhin war es trocken, als ich gegen 20.30 Uhr auf dem Festivalgelände ankam. Auf der Hauptbühne waren gerade Silverstein zu Gange. Tendenziell ruhigerer Post-Hardcore, gut vorgetragen - aber nicht wirklich mein Fall.

Kurz nach 21 Uhr legten dann auch einer kleinen Bühnen am anderen Ende des Festivalgeländes Risk it! los. Eine deutsch Hardcore Band aus Dresden, welche "klassischen" Hardcore spielen. Jedenfalls habe die fünf eine sehr gute Show hingelegt, mit Energie und Überzeugung gespielt. Ein guter Einstieg in den Abend. Aber ich habe die Show (leider) nicht zu Ende schauen können, weil gegen 21.45 Uhr Comeback Kid auf der Nebenbühne spielten.

Comeback Kid habe ich zum ersten Mal vor 6 oder 7 Jahren auf dem Mair 1 gesehen. Heute, ein paar Jahre und Alben später, haben die fünf Kanadier immer noch reichlich "Bums". Besonders der Frontmann hat unglaublich viel Energie, stürmte die ganze Show kreuz und quer über die Bühne und sang (oder schrie...) sich die Seele aus dem Leib. Kein Wunder, dass der Funke ziemlich schnell auf das Publikum übersprang und die Menge in Bewegung kam.
Alles in allem ein sehr gut, energiegeladene Hardcore-Show. Sehr schön!

Den Abschluss des Mair 1 2014 machten dann Hatebreed, welche 2012 schon Headliner waren. Die Band gehört ja zu den "ganz großen" der Hardcore Szene. Ohne großes Intro und viel Schnick-Schnack ging's dann los. Das Publikum war sofort dabei und Frontmann Jamey Jasta hat dabei auch durchaus Entertainer-Qualitäten und weiß, wie man das Publikum mit nimmt. Was, gepaart mit der Bühnenpräsenz der Band, zu einer entsprechend guten Stimmung im Publikum sorgt.
Nur leider fing es um kurz nach 23 Uhr, nach den ersten paar Songs von Hatebreed, ziemlich an zu regnen. Was der Stimmung zwar keinen Abbruch tat, mich aber dazu bewog, dann doch schon gegen 23.30 Uhr die Segel zu streichen und Hatebreed nicht noch ganz zu Ende zu schauen.

Unterm Strich auch das Mair 1 2014 ein super Festival. Ein sehr gutes Line-Up mit einigen "großen" Namen aus der Hardcore Szene, entspannte Atmosphäre und sehr gute Organisation. Wenn das Line-Up stimmt komme ich auch 2015 gerne wieder.

Samstag, 28. Juni 2014

Mair 1 Festival 2014 1. Tag - Walls of Jericho & Ignite

Am 27./28.6.2014 war es wieder soweit: das Mair 1 Festival fand, wie in den Jahren zuvor auch, auf dem Flugfeld von Montabaur statt. Traditionell ist das Festival Hardcore und Punk Rock lastig, wobei dieses Jahr viel mehr Hardcore als  Punk am Start war. Und auch dieses Jahr waren wieder ein paar hochkarätige Bands des Genres vertreten.

Während letztes Jahr netter Weise alle Bands, die ich sehen wollte, an einem Tag gespielt hatten, verteilte es sich diese Jahr auf zwei Tage.

Am Freitag, 27.6.2014 waren Walls of Jericho und danach Ignite am Start. Besonders auf WoJ war ich gespannt. Gegen 19.20 Uhr war ich vor Ort, da hatten gerade die mir bis dato unbekannten Skindred mit ihrem Set begonnen. Erster Eindruck: 20 Jahre zu spät. Diese Mischung aus Reggae und Metal war doch in den 90ern "in". Skindred 1998 wurden übrigens gegründet, passt also doch ;-) . Musikalisch nicht ganz mein Fall, aber durchaus gefällig anzuschauen. Wobei man sagen muss, dass es die Band bzw. besonders der Frontmann es sehr gut geschafft hat, das Publikum "mitzunehmen". Von daher war die Stimmung gut. Nur das Ende kam ein bisschen abrupt, scheinbar aufgrund eines technischen Problems des DJs vor dem letzten Song.

Danach kamen Walls of Jericho auf die kleinere Bühne. Und gaben von der ersten bis zur letzten Minute Vollgas. 110% Energie, top Bühnenpräsenz und absolut mitreißend. Somit war das Publikum auch direkt dabei und ab dem 3. oder 4. Song lief auch der Circle Pit.
Erstaunlich finde ich immer wieder, mit wie viel Power die Frontfrau Candace Kucsulain singen bzw. growlen kann. Und das, obwohl sie beim Sprechen eine ganz normale, weibliche Stimme hat.
Jedenfalls ein superguter Auftritt. Eine der besten Hardcore Shows, die ich bisher gesehen habe. Sehr geil!

Direkt nach Walls of Jericho waren dann Ignite auf der Hauptbühne an der Reihe. Melodischer Hardcore mit leichtem Emo-Touch, also ab und an auch mal etwas "dunkler" / depressiver. Im direkt Vergleich zu WoJ vorher wirkten Ignite ein bisschen "weich", aber die Show war trotzdem sehr gut. Ein gute Mischung aus neueren und älteren Songs, mal schneller, mal langsamer.  Auch hier war das Publikum direkt dabei und so war es eine kurzweilige, gut anzuschauende und anzuhörende Show. Sehr schön.

Nun war eigentlich Schluss für mich für heute, zumal ich noch auf einer Geburtsfeier eingeladen war. Der nächste Act war "Bam Margera as the Fuckface Unstoppable". Bam Margera ist von "Jackass" bekannt, die Band war zumindest mir bis dato ebenfalls völlig unbekannt. Also habe ich mir noch die ersten 1,5 Songs angehört. Nach einem sehr obskuren Opening ging's dann los. Klingt irgendwie nach einer Mischung aus Hardrock und Stoner Rock, hörte sich jedenfalls ganz gefällig an.

Jedenfalls hatte sich der Besuch am 1. Tag schon alleine wegen der Show von Walls of Jericho gelohnt. Am 2. Tag geht's dann weiter im Risk it!, Comeback Kid und Hatebreed.

Blogbeitrag zum Besuch des 2. Tags des Festivals: Link

Montag, 19. Mai 2014

Me First and the Gimme Gimmes - Are We Not Men? We are Diva!

Vor ein paar Tagen, also Mitte Mai 2014, ist das neue Album der Me First and the Gimme Gimmes mit dem Titel "Are We Not Men? We Are Diva!", das achte Album der Punk-Rock Allstar Band, erschienen.

Wer Me First and the Gimme Gimmes nicht kennen sollten: Die Band ist ein Nebenprojekt von Musikern der Bands NoFX, Lagwagon, Swingin' Utters und Foo Fighters und bezeichnet selbst ganz bescheiden als "The best coverband of the world". Die Band spielt ausschließlich Coversongs von zumeist sehr bekannten Poptitel - und das ganze im Punkrock-Stil.

Jedes Album der Band greift dabei ein bestimmtes Thema auf. Wie der Titel der neuen Platte "Are We Not Men? We Are Diva!" unschwer erahnen lässt, werden hier ausschließlich Titel von Pop-Diven gecovert. Und zwar von den ganz großen wie z.B. Whitney Houston, Celine Dion, Mariah Carry und interessanter Weise auch Boy Georg.

Und, wie man auch schon auf allen anderen Platten der Gimme Gimmes hören konnte: covern können die, und das richtig gut. Zwar werden alle Lieder mit mindestens doppeltem Tempo und punkrockiger Gitarre gespielt, aber alle Songs sind problemlos wieder zuerkennen. Dazu trägt auch sicherlich der sehr gute und klare Gesang von Sänger Spike Slawson bei.

Im Vergleich zu den letzten Veröffentlichungen der Band ist diese Platte etwas pop-punkiger ausgefallen, was der Sache aber keine Abbruch tut. Die Cover der Stücke "My heart will go one" und "Crazy for you" sind dabei sogar noch deutlich ruhiger als die anderen.

Nichts desto trotz ist auch "Are We Not Men? We Are Diva?" eine absolut gelungen Scheibe und eine absolute Empfehlung.
In Sache gut-hörbare und nachhaltig gute Punk-Cover von Pop-Songs sind Me First and the Gimme Gimmes nun mal die absolute Spitze. Und dies zeigen sie auch auf ihrer neusten Veröffentlichung.