Konsolen-Spaceshooter in C++

games

Die letzten zwei Wochen habe ich an einem C'/C++-Kurs an der Hochschule teilgenommen und dabei einiges gelernt. In der zweiten Woche war es angedacht, während der Übungsstunden ein eigenes Projekt in C++ zu entwickeln. Ich habe mich dafür entschieden einen Konsolenbasierten Raumschiff-Shooter zu entwickeln. Man steuert sein Raumschiff und muss ankommende Gegner abschießen. Anfangs kommen nur einzelne Gegner ins Sichtfeld aber im späteren Spielverlauf werden es immer mehr. Der Spieler darf dabei keinen Gegner vorbei lassen und natürlich jeden Zusammenstoß vermeiden. Screenshot vom Spiel

Screenshot

Entwickelt habe ich das Spiel wie gesagt in C++. Wer sich den Quellcode anschauen möchte, kann dies natürlich gerne tun, da das Spiel wie immer als freie OpenSource-Software zur Verfügung gestellt wird. Leider war ich während der Übung auf die Hochschul-Rechner beschränkt, welche nur mit Windows laufen. Folglich ist das Spiel auf einem Windows-System entwickelt und kompiliert worden. Vermutlich ist es in diesem Zustand nicht unter Linux kompilierbar, da einige Windows-Spezifische Funktionen benutzt wurden. Wenn es die Zeit zulässt, möchte ich aber noch Linux-Kompatibilität sicherstellen.

Download Spiel + Sources

Link zum C-Kurs

more...

Mp3 nach Ogg konvertieren unter Linux

linux

Neulich hatte ich das Verlangen, meine digitale Musiksammlung mal etwas genauer unter die Lupe zu nehmen und etwas auszumisten. Ich wollte nicht direkt die Musikdateien löschen sondern nur all die anderen Dateien, die dort noch so rumspuken und eigentlich nicht benötigt werden, wie z.B. Albumcover, Playlisten und Text/NFO-Dateien. Mit der Kommandozeile unter Linux und Befehlen wie

find . -type f -iname "*.mp3" | wc -l (gibt die Anzahl aller mp3-Dateien an)

war es leicht, ein paar Statistische Aussagen zu meiner Sammlung zu treffen. Letztlich musste ich feststellen, dass 95 % meiner Musikdateien im mp3-Format vorliegen und nur 1% im freien ogg-vorbis-Format. Damit war die Idee geboren, meine gesamte Musiksammlung in eben dieses freie Format umzuwandeln. Warum? 1. Weil ich es kann. 2. Weil ich es interessant finde, auf die suche nach (halb-)automatischen Möglichkeiten für diese Aufgabe zu gehen und 3. Weil Freie Formate Rocken.

Nun gibt es natürlich Programme, die solche Konvertierungen in einem Rutsch ausführen können. Dummer weise sind oft die Möglichkeiten der Einflussnahme etwas begrenzt. Vor allem die Bitrate bereitete mir Sorgen. Natürlich wird die Audio-Qualität bei so einem Vorgang nicht besser - im Gegenteil. Um dieses Problem möglichst gering zu halten, könnte man natürlich einfach alle Dateien mit 320 kbps oder mehr konvertieren. Nur stellt sich hier die Frage, ob sich das bei Dateien, die im Ausgangsformat lediglich 128 kbps besitzen, überhaupt lohnt. Der Unterschied bei der Dateigröße ist schließlich beträchtlich.

Ideal wäre also, wenn man festlegen kann, das z.B. Dateien mit einer Ausgangsbitrate von 128 kbps dann mit 192 kbps ins OGG-Format konvertiert werden. Dateien mit 192 Ausgangsbitrate werden nach 256 kbps gewandelt und Dateien mit höherer Bitrate (320 z.B.) bekommen eine noch höhere neue Bitrate.

Eine solche Abstufung erlauben die üblichen Programme leider nicht. Als Informatiker öffnet man bei solchen Gelegenheiten natürlich sofort die Entwicklungsumgebung und versucht etwas eigenes zu basteln. Ich habe mir in dem Zusammenhang zum ersten mal die Programmiersprache Python angeschaut. Nach einigem Rumprobieren bin ich dem Ziel sogar etwas näher gekommen - mein Script konnte alle Mp3s rekursiv einlesen und zumindest schonmal ins WAV-Format zwischenspeichern und die ID3-Tags aufheben. Die OGG-Konvertieren hätte hier nur noch angeschlossen werden müssen. Allerdings hat mich dann doch die Lust verlassen und ich habe mir vorgenommen, das ganze später weiter zubasteln.

Am Ende kam mir dann jedoch noch eine andere Idee: Foobar2000. Foobar ist nämlich nicht nur ein super Abspielprogramm sondern kann auch alle möglichen Formate in alle möglichen anderen Formate konvertieren. Und was hier wichtig ist: Ich kann natürlich auch meine gesamte Mp3-Sammlung auf einmal einlesen und dann nach der Bitrate Sortieren. Und schon kann ich selektiv konvertieren. Und direkt wurde mir wieder bewusst, wie sehr foobar2000 unter Linux fehlt.

more...

Musikplayer

xul

Hin und wieder habe ich in der letzten Woche Zeit gefunden, um an meinem Musikplayer weiter zu werkeln. Der Grund, warum ich das Projekt wieder hervorgekramt habe ist, dass ich vor einiger Zeit sowohl auf dem Notebook als auch auf meinem PC komplett auf Linux Mint umgestiegen bin und Windows nur noch ein Schattendasein fristet und ich deshalb wieder aufs neue feststellen muss, dass die Linux-Musikplayer leider nicht meinen Geschmack treffen und Foobar2000 über Wine auch nicht sonderlich gut läuft.

Einen eigenen Musikplayer zu entwickeln ist allerdings auch nicht ganz so einfach. Vor allem die Grund-Funktionalität, nämlich das Abspielen einer mp3 ist nicht so ohne weiteres hinprogrammiert, zumindest wenn man wie ich wenig Ahnung von C oder C++ hat, denn mit bloßem JavaScript lässt sich keine Mp3 abspielen. Da mein Player aber in jedem Fall frei und OpenSource sein wird, ergeben sich einige Vorteile bei der Entwicklung. Ich kann auf Programmcode anderer freier Projekte zurückgreifen und mir anschauen, wie andere Leute das machen.

Es gibt ein paar ähnliche Projekte, die ebenfalls auf Mozillas XUL aufbauen. Hier ist als erstes natürlich Songbird zu nennen, der jedoch von seinem Konzept und der Funktionalität her nicht meinen Vorstellungen entspricht. Es war jedoch trotzdem interessant, den Quellcode zu lesen, allerdings ist es nicht so einfach, den Überblick zu behalten bei der großen Anzahl an Funktionen, die Songbird mitbringt.

Es existieren aber noch weitere freie Multimedia-Player auf XUL-Basis. "XULPlayer" ist ein universeller Video- und Audio-Player, der auf der MPlayer-Bibliothek aufbaut. Leider wird der XULPlayer auch nur für Windows entwickelt.

Eine weitere Alternative wäre XULMusic, der noch am ehesten meinen Vorstellungen entspricht, wenn es darum geht, auf dem Code aufzubauen. Leider ist genau dieser nicht mehr Verfügbar. Zwar kann man auf den XUL- und JavaScript-Code direkt zugreifen, da dieser ja nicht kompiliert wird, jedoch auf den Code der zugrunde liegenden GStreamer-Bibliothek kann nicht so einfach zu gegriffen werden. Leider funktioniert die Version nicht korrekt, was vermutlich daran liegt, dass dieses Projekt schon ein paar Jahre ohne Aktualisierungen auf dem Buckel hat.

Aktuell teste ich deshalb einige Varianten, um innerhalb einer XUL-Applikation Audio-Dateien abzuspielen und dies per JavaScript zu steuern.

more...

Snake Game in JavaScript

javascriptgames

Die Langeweile am Wochenende hat mich dazu gebracht, einen Snake-Klon zu schreiben. Wer einmal ein altes Nokia-Handy besessen hat. kennt das Spiel sicher noch, aber auch auf anderen Plattformen ist das Spiel - manchmal in Abgewandter Form - anzutreffen. Aktuell gibt es im Netz jede Menge Flash-Klone und auch im Ubuntu-Repository befinden sich einige Varianten (KTron z.B.).

Wirklich zufrieden bin ich damit aber nicht so ganz. Oft wird das simple Spielkonzept durch anderes Zeugs erweitert oder gar verfälscht. Ich persönlich mag da lieber das alte simple Snake haben. Eine Schlage, ein Spielfeld an dessen Rändern man durch schlüpfen kann um an der anderen Seite wieder heraus zu kommen und ein einfaches kleines Etwas, das man fressen kann um zu wachsen.

Hier gibt es zwar Flashvarianten, die genau das mitbringen aber ... naja es ist halt nur Flash. Irgendwie Uncool halt. Deshalb und vor allem eben wie Eingangs erwähnt aus Langeweile hab ich mich an eine HTML+JavaScript-Variante gesetzt.

Das Spiel funktioniert soweit, es kann aber sein, dass noch hier und da Fehler stecken. Zwar ist es bei dieser Art von Onlinegames für die meisten unerheblich aber ich sags trotzdem dazu: Der Quellcode steht natürlich frei zur Verfügung und kann von jedem angeschaut und verändert werden. Auch kann das Spiel gerne auf eigene Webseiten hochgeladen werden. Über Feedback freue ich mich natürlich auch sehr. Viel Spaß

Link zum Spiel

more...

Songbird nicht mehr für Linux

linux

Vor einiger Zeit hatte ich hier an dieser Stelle die Idee vorgestellt, eine eigene Musik-Abspielsoftware zu schreiben oder aber eine Vorhandene freie Software auf meine Bedürfnisse anzupassen. Kurz gesagt ging es darum, dass der Musikplayer foobar2000 einige wirklich überragende und leider auch einzigartige Funktionalitäten bietet, leider jedoch nicht freie Software ist und auch nur für Windows zur Verfügung steht.

Was also Fehlt ist ein Player, der für alle relevanten Betriebssysteme (mindestens Windows und Linux) zur Verfügung steht, dabei aber viele gute Ideen von foobar2000 übernimmt, jedoch möglichst die weniger guten Ideen und Verhaltensweisen der üblichen Player, nicht übernimmt. Dazu eine Möglichst simple Konzeptionelle Grundlage auf Basis von Playlisten statt einer Medienbibliothek.

Zunächst stand die Idee im Raum, einen eigenen Player von Grund auf neu zu entwickeln. Hier könnten grundsätzliche Entscheidungen von Grund auf getroffen werden ohne auf Abhängigkeiten vorhanderer Software rücksicht nehmen zu müssen. Die andere Möglichkeit, die mir in den Sinn kam ist, eine vorhandene freie Playersoftware den eigenen Bedürfnissen anzupassen. Dafür ist freie Software ja schließlich da.

Als Fan von Mozilla-Technologien bietete sich hier natürlich Songbird an, welcher ja komplett auf eben jener Mozilla-Plattform aufbaut, und deshalb neue Funktionalität auch über Erweiterungen eingefügt werden könnte. Zwar ist Songbird ziemlich überladen mit unnötigen Funktionen, diese könnten jedoch zum großen Teil genauso auch wieder rausgenommen werden. So weit bisher.

Nun musste ich jedoch mit einer Mischung aus Entsetzen und Enttäuschung lesen, dass das Songbird-Team die Unterstützung für ihre Linux-Version einstellt (Quelle: Heise Open). Zwar wird es weiterhin Releases für Linux geben, diese werden jedoch nicht mehr getestet und neue Features werden nicht mehr Unterstützt. Für meinen Teil hat sich damit die Frage letztlich geklärt, welchen der oben kurz erwähnten Wege ich bevorzugen würde. Zwar ist es realistisch gesehen, natürlich weiterhin möglich, Songbird auch auf Linux zu benutzen und wenn man auf neue Features verzichten kann, ist dies Sicher kein Problem. Jedoch macht sich das Team mit dieser Entscheidung nicht unbedingt sympatischer. Eine aktive Unterstützung in Form von beigesteuerten Erweiterungen, macht so natürlich keinen Spaß mehr.

Da ich aktuell mit meinem Praktikum beschäftigt bin, ist diese Programmidee aber ohnehin erstmal noch Zukunftsmusik. Jedoch beschäftige ich mich in meinem Praktikum auch mit dem Mozilla-Framework und der Arbeit mit XML - beides Dinge, die für die Entwicklung eines solchen Players von Vorteil sein dürften. Gerade die Verarbeitung von XML sollte für einen Playlist-Orientierten Player wichtig seien.

more...

xmlSlides - Aktueller Stand

javascriptxul

Vor einiger Zeit hatte ich ja bereits ein paar Ideen und Entwürfe für meine Präsentations-Software für Browser vorgestellt. Mittlerweile hat sich einiges getan bzw. geändert.

Zunächst einmal: Ich bearbeite dieses Projekt nun im Rahmen meines Praktikums und meiner Abschlussarbeit an der Hochschule. Das heisst vor allem, dass das Projekt nun nicht mehr nur ein kleines Hobby-Projekt für zwischendurch ist, das ich vieleicht irgendwann einmal fertig stelle, sondern dass ich aktuell in Vollzeit daran arbeite und es in jedem Fall in absehbarer Zeit vorzeigbare Ergebnisse geben wird. Ich möchte ja schließlich mein Studium und die Abschlussarbeit vernünftig abschließen.

Eine weitere Konsequenz daraus ist, dass ich viele Sachen nicht mehr "einfach so" programmieren kann, wie es mir grade passt, sondern ich tiefgreifendere Untersuchungen anstellen muss, damit wirklich ein vernünftiges Ergebniss herauskommt. Eine erste Konsequenz daraus ist, dass ich einen Großteil der bisherigen Arbeit über Bord geworfen habe und das ganze von Grund auf neu plane. Die Anforderungen bleiben jedoch weitestgehend gleich, nur der Lösungsweg verändert sich etwas.

Im ersten Schritt verzichte ich nun auf eine selbstentwickelte XML-Sprache und werde stattdessen eine bereits bestehende XML-Sprache zurückgreifen. Welche konkret steht aber aktuell noch nicht ganz fest. Auf der einen Seite ist das DocBook-Format für Technische Dokumentationen eine etablierte Technologie und bietet auch eine Art Spezialisierung für die Beschreibung von Präsentationen. Der Nachteil dieser Variante ist jedoch, dass das Format unglaublich komplex ist und sehr sehr viele Elemente enthält, die ich in meiner Software nicht benötige. Die hohe Komplexität spricht auch gegen eine der Hauptanforderungen nach Einfachheit und Nutzerfreundlichkeit. Man könnte jedoch auch nur einen Teil des DocBook-Slides-Formates implementieren und auf den Rest verzichten. Diese Lösung hat allerdings auch ihre Schattenseiten.

Eine andere recht vielversprechende Technologie ist das Slide-Format von MulberryTech. Dieses Format bietet nicht so viele Elemente wie das DocBook-Format und ist damit nicht so komplex. Aus meiner Sicht sind die vorhandenen Elemente teilweise auch sinnvoller bezeichnet, was verständlich ist da es speziell für Folienpräsentationen entwickelt ist. Die Dokumentation der Elemente innerhalb der Dokument-Typ-Definition ist auch sehr vorbildlich. Einziger Wehrmutstropfen ist bei diesem Format jedoch, dass es letzlich auch eine Eigenentwicklung eines Unternehmens ist und kein Etablierter Standard wie DocBook.

Die Plattform

Was vermutlich gleich bleiben wird im Vergleich zu den alten Konzepten, ist die Plattform. Ich werde das Programm mit großer Wahrscheinlichkeit als Firefox-Plugin entwickeln. Hierfür habe ich bereits an einem Entwurf für die Oberfläche gearbeitet.

Es wäre jedoch auch eine Webbasierte Lösung denkbar, bei der der Nutzer auf einer Webseite einen Editor vorfindet und seine Präsentationen erstellen kann. Dies könnte dann auch direkt mit einem Hosting-Angebot verknüpft werden, bei der die erstellten Präsentationen auf dem Server verbleiben und der Nutzer eine URL zu seiner Präsentation zur Verfügung gestellt bekommt, über die er die Präsentation jederzeit direkt ansehen kann.

Wie genau die Lösung aussehen wird, muss ich noch genau entscheiden. Wie gesagt: Da es sich hierbei nun um ein Projekt im Wissenschaftlichen Rahmen handelt, müssen solche Entscheidungen natürlich sehr viel Detailierter behandelt und die Abwägung zwischen Technologien mit Bedacht getroffen werden.

more...

xmlSlides: Erster Entwurf der XML-Sprache und erstes XSL-Stylesheet

Ich habe einen ersten Entwurf der zugrunde liegenden XML-Sprache für mein Programm "xmlSlides" entwickelt. Damit wird noch lange nicht der volle Funktionsumfang von HTML-Präsentationen abgedeckt, jedoch lassen sich simple Präsentationen bereits erstellen.

In meinem Programm sollen Präsentationen, genauer gesagt nur der Inhalt der Präsentation in einer XML-Datei abgelegt werden. Diese XML-Datei beschreibt in möglichst abstrakter Form den reinen Content der Folien. Im Anschluss wird mit Hilfe von XML Transformationen aus der XML-Datei die eigentliche XHTML-Präsentation erstellt. Diese Vorgehensweise hat den Vorteil, dass das eigentliche Ausgabeformat nur durch das verwendete XSL-Stylesheet festgelegt wird. Es können also auch verschiedene XLS-Stylesheets für verschiedene Ausgabeformen angeboten werden. In erster Linie sollen damit die verschiedenen HTML-Präsentations-Technologien, wie S5, DOMSlides oder Slideous abgedeckt werden. Jedoch sind auch Exporte nach PDF und sogar OpenOffice-Impress und MS-Powerpoint 2007 (beide sind ebenfalls XML-Formate) denkbar - wobei die beiden letztgenannten und insbesondere MS-Powerpoint ziemlich unwahrscheinlich sind.

Für das XML-Format habe ich ein entsprechendes XML-Schema entwickelt, wechels wie bereits erwähnt, noch unvollständig ist.

Das XML-Dokument

Ein Beispielhaftes XML-Dokument könnte so aussehen:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="xmlslides.xsl" ?>
<slides xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:noNamespaceSchemaLocation="xmlslides.xsd">
 <head>
   <title>Vortrag</title>
   <author>Manuel</author>
 </head>
 <body>
   <slide>
     <headline>Folie 1</headline>
     <contentBox>
       <text>Hallo Welt</text>
       <text>Das ist die erste Folie</text>
     </contentBox>
   </slide>
   <slide>
     <headline>Folie 2</headline>
     <contentBox>
       <text>Servus zur zweiten Folie</text>
     </contentBox>
   </slide>
  </body>
</slides>

Darin gibt es einen head und einen body ähnlich wie in HTML. Im head wird der Titel und der Autor der Präsentation definiert. Hier werde ich in Zukunft noch weitere Angaben hinzufügen.

Im Body-Bereich werden die eigentlichen Folien beschrieben. Jede Folie wird von einem <slide>-Element umschlossen. Als erstes kann jede Folie eine Überschrift mit dem Element <headline> enthalten. Im Anschluss folgt der eigentliche Inhalt der Folie in einem <contentBox>-Element. Dieses Element soll in Zukunft ein Attribut align bekommen, welches die Werte horizontal oder vertical annehmen kann. Damit soll bestimmt werden, ob die innerhalb der ContentBox definierten Elemente Horizontal oder Vertikal angeordnet werden sollen.

Innerhalb der ContentBox folgen die eigentlichen Elemente zur Anzeige auf der Folie. Aktuell ist hier nur das Element <text> zur Anzeige von normalen Text definiert. Hier folgen in Zukunft aber noch weitere Elemente für Listen, Bilder, Tabellen oder Code-Abschnitte.

Jedes dieser Elemente soll von dem align-Attribut der Umschließenden ContentBox beeinflusst werden. So werden entweder alle Elemente untereinander oder Nebeneinander angezeigt.

XSL-Transformation

Wenn das XML-Dokument mit der Abstrakten Beschreibung der Folien fertig ist, muss es mit Hilfe eines XSL-Stylesheet in die entsprechende Anzeigefähige Form gebracht werden. Aktuell benutze ich als Anzeige-Technologie Slideous mit minimalen Erweiterungen und einem von mir erstellten Template. Später sollen aber natürlich ncoh weitere Technologien wie S5 unterstützt werden.

Das XSL-Stylesheet sieht folgender Maßen aus:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

 <xsl:template match="/">
   <html>
    <head>
     <title>
      <xsl:value-of select="slides/head/title"/>
     </title>
     <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
     <meta name="author"><xsl:attribute name="content"><xsl:value-of select="slides/head/author"/></xsl:attribute></meta>
     <meta name="date" content="19.12.2009" />
     <meta name="autoincrement" content="false" />

     <link rel="stylesheet" type="text/css" href="slideous/slideous.css" />
     <script src="slideous/slideous.js" type="text/javascript" />

    </head>
    <body>
     <div id="statusbar">
      <span style="float:right;">
       <span style="margin-right:4em;font-weight:bold;">
        <span id="slideidx">
        </span> of {$slidecount}</span>
        <button id="prevslidebutton" title="previous slide">&#171;</button>
        <button id="nextslidebutton" title="next slide">&#187;</button>
        <button id="incfontbutton" title="content">A+</button>
        <button id="decfontbutton" title="first slide">A-</button>
        <select id="tocbox" size="1"><option></option></select>
       </span>

       <span id="eos">&#189;</span>
         <span><xsl:attribute name="title">{$location},{$date}</xsl:attribute>{$title}, {$author}</span>
     </div>
     <xsl:for-each select="slides/body/slide">
       <div>
         <h1><xsl:value-of select="headline" /></h1>
         <div>
           <xsl:for-each select="contentBox/text">
             <p><xsl:value-of select="."/></p>
           </xsl:for-each>
        </div>
       </div>
     </xsl:for-each>
   </body>
 </html>
</xsl:template>
</xsl:stylesheet>

Als Ergebnis kommt dann folgende Präsentation heraus:

  • xml-Transformation (benötigt XSLT-Fähigen Browser z.B. Firefox oder moderne IE): test.xml
  • fertiges HTML-Dokument: test.html

Zum testen kann man in modernen Browsern mit XSLT-Unterstützung (IE ab version 6?, Firefox,...) das entsprechende XML-Dokument direkt im Browser laden. Sofern das XSL-Stylesheet im selben Verzeichnis liegt, sollte als Ergebnis direkt das transformierte XHTML-Dokument, sprich die Präsentation im Browser erscheinen. Natürlich müssen dafür auch die Dateien (CSS, JS, Grafiken) von Slideous vorhanden sein. Alles zusammen habe ich als ZIP-Archiv hier zum Download bereit gestellt: xmlslides_01.zip

Wie eingangs erwähnt, ist der Funktionsumfang noch äusserst rudimentär. Jedoch als prinzipielle Machbarkeitsstudie ist es für mich der erste Schritt in die richtige Richtung. Für Kritik und Hinweise bin ich wie immer Dankbar, vor allem was das XML-Schema und allgemein meine Vorstellung des XML-Dokuments angeht.

more...

Musik Player: Songbird oder selbst entwickeln

Nicht erst seit Gestern bin ich auf der Suche nach einer tollen Musik-Abspielsoftware, die alle meine Anforderungen erfüllt. Bisher war die Suche aber nicht wirklich Erfolgreich. Bisher habe ich vor allem den Player "foobar2000" benutzt, welcher von Art und Umfang der Funktionen überaus Großartig ist. Wer möchte kann eine (ziemlich schnelle) MedienDatenbank benutzten - muss aber nicht. Ich persönlich bin da wohl ein bisschen Altmodisch und bevorzuge die Klassischen Playlisten. Diese lassen sich in Foobar2000 sehr intuitiv steuern. Man kann mehrere Playlisten anlegen und in Tabs ordnen. Das ganze in einer simplen, praktischen und unaufdringlichen grafischen Gestaltung. Prima. Doch leider wird das Bild meiner Meinung nach durch 2 Fakten etwas getrübt, wobei der eine Fakt wohl aus dem anderen folgt: Erstens: Foobar2000 ist keine freie OpenSource-Software, zumindest nicht komplett. Und zweitens, was wesentlich relevanter ist: Foobar2000 läuft nur unter Windows und nicht unter Linux. Die Musik-Player, die ich bisher unter Linux ausprobiert habe, können leider Foobar2000 nicht das Wasser reichen - zumindest was meine Bedürfnisse angeht.

SongBird

Hoffnung habe ich geschöpft, als ich vom Player "Songbird" hörte. Dieser basiert auf Mozillas XUL-Technologie, was eine ganze Reihe positiver Eigenschaften nach sich zieht. Er läuft unter Windows genauso wie unter Linux. Die Anpassbarkeit über Plugins sollte auf einfachste Art und Weise funktionieren und das Mozilla-Toolkit bietet jede Menge Potetial was die Gestaltung der Oberfläche und den Funktionsumfang angeht.

Songbird möchte eine Art "MusikBrowser" sein, jedoch verschenkt er jede Menge Potential. Das fängt schon bei den Tabs an. Tabs sind für Browser heute eine alltägliche Funktion und so bietet auch Songbird tabs. Jedoch kann ich meine MusikPlayliste ausschließlich im ersten Tab ablegen. Alle weiteren Tabs sind ausschließlich für das Besuchen von Webseiten gedacht. Warum kann ich nicht (ähnlich simple wie in Foobar2000) meine verschiedenen Wiedergabelisten in jeweils einen Tab ablegen?

Und wo wir bei den Wiedergabelisten sind. Wieso ist es so umständlich, überhaupt eine Playlist zu erzeugen? Als ich Songbird ausprobiert habe, hatte ich ständig das Gefühl, dass ich unbedingt auf die Musikdatenbank angewiesen bin. Ohne Musikdatenbank, nur mit simplen Playlisten zu arbeiten erschien mir unglaublich umständlich. Schade. Weiter geht das ganze mit dem Layout. Leider ist es nicht ohneweiteres möglich, ungewollte Oberflächenelemente, wie z.B. die Seitenleiste der Mediathek, einfach auszublenden.

Die eigentlichen Schwächen im Vergleich zu Foobar2000 zeigen sich jedoch erst bei genauerem Hinsehen: Wärend ich bei Foobar2000 nicht nur die komplette Oberfläche (inklusive Menüs) frei gestalten sondern auch ALLE Funktionen, die irgendwo im Player stecken auch über Tastatur-Shortcuts steuern kann, sind die Möglichkeiten bei Songbird hier dürftig. Nur für ein knappes Dutzend Funktionen lassen sich Tastaturkürzel belegen. Diese aber dazu teilweise noch mit Einschränkungen. So ist es in Foobar2000 ohne Probleme möglich, Tastaturkürzel für das Abspielen von Songs auf den Nummernblog zu legen. In Songbird ist dies so nicht möglich. Ich muss zwingend eine Sondertaste zusätzlich angeben. Das ist sicherlich gut gemeint, für mich persönlich stellt das aber ein ärgerliche Einschränkung dar.

Ein weiteres, eigentlich total simples Feature, welches ich bei Foobar2000 lieben gelernt habe sind die Funktionen "Playback follows Cursor" und "Cursor Follows Playback". Wenn ich in der Playlist einen Song markiere, dann wird dieser als nächstes abgespielt. Somit kann ich den aktuellen Song noch fertig hören und Foobar2000 springt danach selbstständig zu der Stelle in der aktuellen Playlist (oder in anderen Playlists), an der ich weiter hören möchte. Ein unglaublich simples aber trotzdem cooles Feature, welches ich sonst noch bei keinem anderen Musikplayer gefunden habe.

Die Lösung?

Technisch ist Songbird wirklich klasse. Die XUL-Plattform ist meiner Meinung nach eine wirklich gute Wahl bei der Entwicklung von dieser Art von Software. Vor allem für die vielen Internet-Funktionen, die Songbird implementiert ist diese Plattform hervorragend geeignet. Offensichtlich gehöre ich wohl leider nicht so ganz zur Zielgruppe von Songbird. Meine Idee war also, Songbird durch geeignete Plugins so zu erweitern, dass er meine Anforderungen doch erfüllt. Entweder Plugins von anderen Programmierern oder von mir selbst programmierte Plugins. Nach einigen Suchen bin ich da mittlerweile jedoch ein wenig Skeptisch geworden da Foobar2000 und Songbird scheinbar völlig andere Zielgruppen ansprechen und der Aufbau von Songbird in einer ganz andere Richtung geht.

Damit war die Idee geboren, eventuell eben selbst eine MusikPlayer-Software zu schreiben, die genau meine Bedürfnisse erfüllt. Nicht mehr und nicht weniger. Da Songbird freie OpenSource-Software ist wäre es ja Möglich, gewisse Grundfunktionalitäten wie das reine Abspielen von MP3s in eine eigene Anwendung zu übernehmen. Als Plattform würde ich selbstverständlich auch Mozillas XUL einsetzen und den Player natürlich auch unter einer freien OpenSource-Lizenz veröffentlichen. Ob und Wann ich diese Player-Software wirklich schreibe, weiss ich aber aktuell noch nicht. Die Idee ist zumindest da und wenn sich die Zeit finden lässt, dann setze ich diese vieleicht auch um. Mal Schauen :-)

more...

Mockup - 'LestardMusicPlayer'

Über die Feiertage habe ich ein wenig Zeit gehabt und an einem Mockup für einen Musikplayer gearbeitet. Als Plattform habe ich wiedermal Mozillas XUL gewählt. Das GUI ist an meine Konfiguration von Foobar2000 angelegt.

Wie gesagt handelt es sich nur um ein Mockup. Jegliche Programmlogik fehlt noch völlig. Weder lässt sich Musik abspielen noch die Playlists direkt bearbeiten. Es dient nur als Test und Beispiel für die Programmoberfläche.

Das Mockup gibt es hier zum Download

Hier ein Screenshot:

Screenshot

more...

Vortrag XUL bei der LinuxUserGroup Görlitz

javascriptxultalk

Für die LinuxUserGroup an der Hochschule habe ich einen Vortrag zum Thema XUL und Entwicklung von Anwendungen auf Basis des MozillaApplicationFrameworks sowie Erstellung von Plugins für den Firefox gehalten.

Die Vortragsfolien sind mit xhtml, css und JavaScript erstellt und können deshalb auch direkt im Internet angeschaut werden. Ich hab die Folien hier verlinkt: Vortrag XUL

Nebenbei bemerkt: Die Folien entsprechen beispielhaft dem, was mit meinem geplanten Programm xmlSlides erstellbar sein wird. Diese Folien hier habe ich per Hand geschrieben jedoch soll es in Zukunft möglich sein, soetwas mit meinem Programm auf einfache Weise erstellen zu lassen.

more...