COLD GROUND STUDIO

Der Songliveplayer

home / technisches / songliveplayer

Songliveplayer

unsymmetrisch
Abb 1. Der Player mit geladener Konzert-Datei

1. Übersicht

1.1. Features

Alle Funktionen für professionelles Playback bei gleichzeitig einfacher Oberfläche. - Oberfläche mit eigenen Bild gestaltbar (damit es live auch cool aussieht) - Beliebige Anzahl von Ausgängen - Einfache, live-taugliche Bedienung - Umfangreiche Play- und Pausemöglichkeiten - Gesperrt während Play, damit keine versehentlichen Änderungen - Kleine Standalone-Exe, sehr schnelles Starten im Havariefall.

1.2. Änderbarer Hintergrund


unsymmetrisch
Abb 2. Der Hintergrund kann beliebig gewählt werden (hier mit Giger-Hintergrund)



1.2. Prinzipieller Aufbau

Ein Konzert „Concert“ stellt beim Songliveplayers das Projekt als solches dar. Ein Concert ist das was geladen werden kann, wobei immer genau ein Concert gleichzeitig geöffnet sein kann. Ein Concert enthält alle Daten zum abspielen. Bei Laden kann es allerdings passieren, dass gespeicherte Einstellungen überschrieben werden. Z.B. wenn das Device die Samplerate nicht wiedergeben kann usw. Ein Concert enthält mehrere „Concertparts“ was der Tatsache Rechnung trägt, dass ein Konzert mehrere Teile enthalten kann. Z.B. eigentliches Konzert und Zugabenteil oder eben verschiedenen Runden. Ein Concertpart ist aber nur ein ordnender Container für die „Songs“. Im Grunde besteht ein Concert aus mehreren Songs.

Ein Song ist hierbei die tatsächlich gespielte Instanz. Ein Song besteht aus einem stillen Anfang, einem stillen Ende (normalerweise beides 0) und dem eigentlichen Song, der wiederum in verschiedene Tracks unterteilt ist.
Es gibt Audiotracks, welches Wavedaten enthalten und einen Metronomtrack pro Song, welche Tempo und Taktinformationen enthält (und den Click auch physisch erzeugt). Tracks haben Kanäle.
Normalerweise kennt man es aus Programmen, dass es nur Mono und Stereospuren gibt. Hier könnenTracks aber eine beliebige Anzahl von Kanälen haben. Obwohl man praktisch wohl auch nur 1 und 2 Kanäle haben wird. Auf den Audiotracks liegen dann Wave-Files. Diese können sich überlappen und müssen nicht am Anfang beginnen. Auch die Wavedateien können mehr als 2 Spuren enthalten. Allerdings müsste man dazu ein Programm finden, welches diese erstellen kann …

Hat ein Track mehr Kanäle als das gerade gespielte Wavefile, dann werden die fehlenden ergänzt. D.h. ein Monofile auf einen 2-Kanaligen Track wiedergegeben gibt ein Signal auf beiden Ausgangskanälen aus. Ein Stereo-Wave auf einen 4-kanaligen Track gibt den rechten Kanal auch auf Kanal 3 und 4 aus. Usw. Ein Song kann eine Anzahl von Markern enthalten, die angesprungen werden können oder nur zur Orientierung dienen. Eine besondere Art von Markern kann zur Transportsteuerung benutz werden. Z.B. kann die Widergabe an dieser Stelle stoppen. Das ist z.B. sinnvoll wenn man mehrere verschiedene alternative Schlüsse im selben Song haben möchte. Normalerweise wird man einen Song mit einem Wavefile haben, welches dann in einem Audiotrack enthalten ist. Und zusätzlichen einen Metronomtrack mit Tempoinformationen.

2. Das Programmfenster (play mode)

2.1. Die verschiedenen Bereiche

unsymmetrisch
Abb 3. Übersicht über das Programmfenster im Abspielmode

Ganz oben befindet sich eine Informationsleiste. Hier werden die Daten des gerade gespielten Songs angezeigt. Das sind neben dem Namen der aktuelle Takt, die Geschwindigkeit, Timecode und gegeben falls einige Zusatzinformationen. Im Grunde selbsterklärend.
Ganz unten befinden sich die 5 Buttons für den Transport. Play, Stop und Pause bedürfen keiner weiteren Erklärungen. Aber es gibt zwei zusätzliche Pausen-Buttons mit etwas anderem Verhalten. Die Transportbutton können auch mittels Leertaste und externe Input gesteuert werden.
In der Mitte befindet sich das Hauptfenster. Hier wird das „Concert“, also das Projekt sozusagen, angezeigt. Die einzelnen Songs werden dabei untereinander in Form von Balken angezeigt.
Rechts daneben sind weitere detailiertere Informationen. Weiter oben dann die technischen Audiodaten zu abspielen, wie Samplerate, Device, Auflösung usw. Und darunter befinden sich die Detailinformationen zum aktuell selektierten Song. Wichtig sind hierbei die Marker.

2.2. Informationsleiste

informationen
Abb 4. Die obere Informationsleiste

2.3. Transportbuttons

transport
Abb 5. Die Transportbuttons

Die Buttons für Play, Stop und Pause sind im wesentlichen selbsterklärend. Play startet die Wiedergabe an der derzeitigen Position. Pause unterbricht die Wiedergabe an der aktuellen Postion. Beim erneuten Drücken von Play wird die Wiedergabe fortgesetzt. Stop unterbricht die Wiedergabe und „spult“ den Song an den Anfang zurück.

Intern veranlasst Stop einen Reset aller Daten, die beim Abspielen zwischengespeichert werden. Selbst der Song als solcher wird neu geladen. Daher ist Stop auch so etwas wie ein technischer Reset.
Da der Player für ständig Daten am Eingang lesen muss, wird die Audio Engine auch bei Stop nicht wirklich angehalten. Es wird einfach 0 an die Soundkarte gesendet.


Zusätzlich zur normalen Pause, gibt es noch zwei weitere Pausen-Buttons.
Der erste, „Pause-Zurück“, stoppt analog der normalen Pause die Wiedergabe. Aber der Song wird zum vorherigen Takt (oder sogar mehrere Takte) zurück gespult. Die Wiedergabe nach Drücken von Play startet also wieder auf der „1“ des Taktes. Das ist nützlich, da z.B. auch beim Anhalten genau bei „1“ beim Weiterlaufen genau dieser Klick schon gespielt wurde, also verschluckt werden würde. Das wird so verhindert.
Der zweite Pausen-Button „Pause-Marker vor“ unterbricht ebenfalls die Wiedergabe aber spult den Song bis zum nächsten Marker vor. Bzw. wiederum einige Takte vorher um Einzähler zu haben.

Buttons die aktiv sind, leuchten hell. Buttons, die nicht gedrückt werden können (z.B. alle, wenn kein Song geladen ist) sind grau. Der Button welcher mit einem gelben Umrandung versehen ist, ist derjenige der beim Drücken der Leertaste (oder durch Triggerung des externen Eingangs) betätigt wird. Damit ist es möglich, nur mit einer Taste sinnvoll zu schalten. Ob bei einem Song im Play-Mode auf Stop oder einen der Pausenmodes geschaltet wird, kann pro Song konfiguriert werden.
Normalerweise wünscht man nach Play sofortigen Stop, z.B. wenn der Einsatz verpasst wurde. Das ist darum auch das Defaultverhalten. Für komplexere Ablaufsteuerungen kann man aber auf die Pausenmodes schalten lassen.

Nur im Stop-Modus können Veränderungen am Song durchgeführt oder ein neuer Song ausgewählt werden. Während der Wiedergabe ist also keine versehentliche Änderung (z.B. wenn sich die Maus durch Vibrationen selbstständig macht oder herunterfällt) möglich.

2.4. Audiokonfiguration

audiokonfig
Abb 6. Audiokonfiguration

Rechts befinden sich die Einstellungen für die Audio-Eigenschaften. Zuerst eine Combobox zur Auswahl des Audiodevice, also der Soundkarte. Die meisten werden eh nur eine Soundkarte gleichzeitig aktiv haben, so das praktisch hier nichts auszuwählen ist.
Darunter befindet sich die Einstellung für die Samplerate. Diese ist auch in der Konzert-Datei gespeichert.
Sollte im Konzert eine Samplerate angeben werden, welche das Device nicht wiedergeben kann, so wird die nächstbeste genommen und eine Warnung ausgegeben. Man sollte bedenken, dass es in den meisten Fällen sinnlos sein wird, die Songs dennoch abzuspielen. Denn weder Tonhöhe, noch Zählzeiten und Tempo werden passen.
Die Auflösung sollte 24bit oder 32bit sein. Ansonsten ist dieser Wert gar nicht so wichtig.
Darunter sind einige Einstellungen, die man besser unverändert lässt. Blocksize von 256 ist ok und Play-Delay spielt keine Rolle mehr.

Wichtig dagegen sind darunter der Pegel des Metronoms und die Ausgänge. Der Pegel des Klicks kann um +-10dB geändert werden um ihn anzupassen.
Darunter sind kleine Buttons für die physischen Ausgangskanäle der Soundkarte. Oft werden es nur 2 sein, manchmal 4 oder 6. Bei meiner Scope-Karte kann ich 64 Kanäle ansteuern! Allerdings ist es auf 42 begrenzt. Nicht aus Hommage an Douglas Adams, sondern weil bei mir der Speicher nicht mehr ausgereicht hat …
Mit den Buttons können die Kanäle gemutet werden. Die Farben haben eine Bedeutung: Geld für unbenutze Kanäle, Blau für Songausgänge, Orange für Metronom und Rot wenn versehentlich Klick und Audio zusammen auf einen Ausgang gehen. Das ist deswegen schlecht, weil die Regler für Metronompegel und Songpegel solche Ausgänge nicht verändern. Der Fader für Song verändert alle Songausgänge in der Lautstärke aber keine Metronomausgänge!

Ganz unten ist ein besonderes Feature. Hier kann der Schwellenwert eingestellt werden, der zur Triggerung der Transportfunktionen führt. Ein externes Audiosignal kann so zum Schalten benutzt werden.

2.5. Songkonfiguration

songkonfig
Abb 7. Songkonfiguration und -Marker

Songs können verbunden werden. D.h. wenn der Song zu Ende ist, wird automatisch der verbundene gespielt. Normalerweise wird gestoppt und der nächste aktiviert, aber nicht abgespielt. Ob und mit welchem ein Song verbunden ist, kann in der oberen Listbox ausgewählt werden.

Darunter kann das „Stopp-Verhalten“ geändert werden. Genauer gesagt, wird hier eingestellt, welche Funktion die Leertaste oder das externe Triggering während Play haben. Im Normalfall kann durch Druck auf die Leertaste das Abspielen gestoppt werden. Der Song spult dabei zum Anfang. Möchte man stattdessen normale Pause oder einer der anderen Pausenfunktion auslösen, kann dies in der zweiten Listbox eingestellt werden.

Darunter sind für jeden Marker des aktuellen Song kleine Buttons. Drückt man auf einen Button (ohne Shift zu betätigen!) werden darunter der Takt und der Timecode des Markers angezeigt. Der jeweils nächste Marker ist hellgrün. Die weiteren dunkelgrün. Stopp-Marker sind leuchtend rot, wenn sie noch nicht passiert sind. Marker, die passiert sind, sind rot. Marker die gerade genau angesprungen sind, sind gelb.

Durch Halten der Shifttaste und Betätigen des jeweiligen Button-Markers kann dieser angesprungen werden. Die explizite Betätigung der Shifttaste soll versehentliches Anspringen verhindern.

2.6. Das Konzertfenster

Das Konzertfenster selbst ist eigentlich nicht sehr spannend. Hier sind die Songs in einer Art Playlist aufgeführt.
Über jedem Concert Part steht der Name und die Zeitdauer. Über allem steht der Konzertname. Die Songs können hier mit den Cursor-Tasten (Pfeil hoch, Pfeil runter) oder per Mausklick ausgewählt werden.

2.7. Songs im Konzertfenster

songbar
Abb 8. Songs im Konzertfenster

Die Songs werden im Hauptfenster als Balken entsprechend ihrer Länge angezeigt. Konzertparts werden durch einen Rahmen um die dazugehörigen Songs angezeigt. Der aktive Song leuchtet heller als die inaktiven Songs. Links neben den Songbalken mit dem Namen ist ein Fader und ein Textfenster. Hier kann der Pegel des Songs um plus minus 10dB angepasst werden. Das dient nur zum Finetuning während der Wiedergabe. Die Songlautstärke an sich sollte schon vorher fertig in den Wavefiles sein.
Während der Wiedergabe läuft ein gelber Balken mit, der die aktuelle Position markiert. Die Song-Maker sind als kleine Zeichen überhalb des Balkens dargestellt.

Durch Klicken mir der Maus auf den Balken oder per Pfeiltasten kann der Song ausgewählt werden, wenn sich der Player im Stoppmode befinden. Während des Abspielens kann nichts verändert werden. Hält man Shift und klickt auf den Balken kann man den Song vor- und zurückspulen.

4. Bedienung

4.1. Start

5. Die Konzertdatei

Eine komplexeres Konzert mit mehreren Songs, die wiederum komplex sind (mehrere Tracks, Marker, Stop-Verhalten) könnte man zwar mittels einer GUI zusammenbauen, jedoch ist ein solcher Editor nicht ganz einfach und wiederum recht komplex. Eigentlich fast aufwändiger als die eigentliche Player-Oberfläche. Nur braucht man diesen Konzert-Editor eigentlich gar nicht. Das Editieren einer Textdatei ist fast noch effizienter. Für die Zukunft habe ich einen solchen Editor angedacht. Vorerst jedoch muss das „Projekt“ per Texteditor (Notepad reicht) erstellt und geändert werden.
Aus diesem Grund ist das Dateiformat recht einfach und leicht menschenlesbar gestaltet. Kein XML oder noch schlimmere proprietäre Formate.

5.1. Prinzip

Das Format ist zeilenorientiert und besteht auch Key-Value-Paaren wie man sie aus property- oder ini-Dateien kennt.

Key = value

Whitespaces vor und nach einem Wert oder Schlüssel werden entfernt („getrimmt“). Innerhalb eines Wertes dürfen aber Leerzeichen stehen. Z.B. bei Songnamen.
Jeder neue Wert muss auf eine neue Zeile. Einrückungen sind nur für die Übersichtlichkeit. Leere Zeilen oder alles hinter „#“ wird ignoriert. Manche Schlüssel (im folgenden Tag genannt) dürfen nur unter einen bestimmten anderen stehen. Z.B. muss „track“ unterhalb eines „songs“ stehen, da sich Track auf Song bezieht. Bei mehreren gleichartigen Tags, z.B. mehrere Songs eines Konzert(part)s ist die Reihenfolge signifikant, nicht die Nummerierung. (Stand April 2012).
Eine Konzertdatei heißt auch „Song Player Concert“ und erhält die Endung “.spc“.

5.2. Aufbau und Inhalt

5.2.1. globale Einstellungen

Am Anfang einer Konzertdatei kommt der Block mit den globalen Einstellungen. Einige davon könnten beim Laden überschrieben werden, wenn das aktuelle Device diese Einstellungen nicht unterstützt oder wenn sie nicht gültig erscheinen.

Im einzelnen sind das:

global
 audio
  samplerate = 44100
  asiobuffsize = 256
  audiocachesize = 1000000
  minread = 1000
  maxread = 100000
  required = 10000
  channels = 0
  playdelay = 40000
  metronomgain = 0.3162 # - 10dB

Momentan gibt es unter global nur Audioeinstellungen.
Samplerate ist selbsterklärend. Channels gibt die Anzahl der zu benutzenden Kanäle an. Ein Wert von 0 heißt, alle verfügbaren benutzen.
Predelay könnte von Interesse sein. Hier wird in Anzahl Samples angegeben, wie lang das Abspielen verzögert wird. (deprecated?)
Der Pegel des Metronoms wird linear, nicht in dB angegeben. Die Umrechnung von dB in lineare Werte erfolgt durch die Benutzung der Formel:

Formale

Die anderen Werte bestimmten das interne Speichermanagement. Man sollte diese Werte nicht verändern.

Für einige bestimmte Werte, gibts hier eine Liste:

  #metronomgain = 1.0 # 0dB
  #metronomgain = 0.7079 # - 3dB
  #metronomgain = 0.5623 # - 5dB
  #metronomgain = 0.50118 # - 3dB
  #metronomgain = 0.3162 # - 10dB
  #metronomgain = 0.1778 # - 15dB
  #metronomgain = 0.1 # - 20dB

5.2.2. Konzert-Parts

Anschließend kommen das eigentliche Konzert und die Konzert-Parts und unter ihnen jeweils die Songs mit ihren Tracks, Wavedateien und Einstellungen.

concert
  name = Asgaia live 2011
  date = 29.09.2011

concertpart
  name = trinegra - normales Set

######################################################################
# 1. Cold Winterday
######################################################################
song1
  name = Cold Winterday
  preroll = 0
  postroll = 0
  gain = 1.0
  connect = Right Path into Doom ("bassanfang")
  stopmode = mark

   track1
    wave1 = asgaia_live_2011\coldwinterday_key.wav
    waveoffset1 = 0
    trackout=1

  #damit Metronom benutzt wird, braucht der Song zwingend eine Tempospur (tempolist)
  #die outputs vom Metronom werden nicht(!) mit dem Song-Lautstärkeregler geregelt!
  #sollte ein Track ebenfalls auf die metronomout gehen, dann werden diese Kanäle nicht geregelt!
  metronom = yes
    metronomout=2
  
    tempolist
    #song startet bei takt 2! (intro)
     1 80 4/4
    20 88 4/4
    28 190 4/4
    158 88 4/4
    166 95 4/4
  tempolistend
  
  markerlist
    1 1
    2 19 stop
    2 20
    3 28
    4 158
    5 166
  markerlistend

6. Tipps und Tricks

7. bekannte Bugs und Fehlendes

8. Download