Das Undenkbare ist geschehen

Im letzten Post war ich noch sehr begeistert von meinem neuen Streaming-Setup, aber es hat sich einiges getan und eigentlich bin ich mittlerweile verdammt sauer, weil WTF.

Meine Software benutze ich immer noch, aber fast alles andere hat sich geändert.

Alles fing damit an, dass einen anderen cables.gl-Patch benuzten wollte, nämlich Motion Graphics von action. Die Browserquelle in OBS zeigte hierbei jedoch nur ’n schwarzen Bildschirm! Was war da los?

Eine kurze Debugsession später war klar: die Browserquelle in der macOS-Version von OBS nutzt nicht die GPU, sondern Googles Softwarerenderer „SwiftShader“. Aber das ist ja Quatsch, ich hab ja ’ne GPU, und im echten Browser geht das auch total gut! Abhilfe konnte hier aber durch Kommandozeilenparameter geschaffen werden. Slightly nervig, aber damit würde ich wohl klar kommen!

Darauf basierend hab ich dann also mein OBS-Setup angepasst, und die Performance war eher so mittelmäßig und nicht wirklich zufriedenstellend, aber der neue Patch sah schon unglaublich gut aus, da konnte man nicht meckern!

Auf Twitch kam der neue Hintergrund auch sehr gut an!

Irgendwann wurde allerdings bemängelt, dass der Hintergrund leider doch arg ruckelt. Das ging so weit, dass ich die Größe des Hintergrundes auf ein Viertel reduziert habe, damit er schneller und flüssiger gerendert werden kann, und damit war es dann wieder einigermaßen angenehm zu gucken.

Ich habe also für’s Streamen 720p30 genutzt, und der neue Hintergrund wurde in 640×360 gerendert, wie 1993, denn mit mehr war das MacBook anscheinend überfordert. Ist das nicht dezent lächerlich?

Lösungen dafür fielen mir ein paar ein, aber keine war so richtig befriedigend: Hardware-Lösungen kosten Geld und haben Lieferzeit, und andere Software würde unweigerlich Abstriche beim Setup erforderlich machen. Trotzdem habe ich erstmal probiert, eine andere Software zu benutzen. Aufgrund meines Engagements bei SceneSat habe ich Zugriff auf eine Lizenz für Wirecast, welches angeblich genau so gut wie OBS funktionieren soll… aber was heißt das schon?

Das in Wirecast mit Abstrichen nachgebaute OBS-Setup wies allerdings fast schon erwartungsgemäß die gleichen Schwächen auf: gerenderte Webseiten waren langsam wie Arsch.

Okay, langsam wird’s Zeit für die nukleare Option: Windows. Aber auf welchem Rechner? Ich habe doch nur MacBooks?

(Kurze Pause zum Einwirkenlassen.)

Dank des von Apple seit Ewigkeiten mitgelieferten Boot Camp Assistants ist es ein Kinderspiel, eine Partition für Windows 10 anzulegen und selbiges darauf zu installieren. Auch der ganze andere Kram ist kein Problem, OBS läuft, die gammeligen 5-Euro-Webcams werden auch erkannt und… ach, mein Overlay. Ach ja, erstmal Linux installieren. Auffm Windows. Auffm MacBook. Verrückt!

Aktuelle Version des Overlays von Github geholt, gestart, cables-Patch runtergeladen, alles in OBS eingebunden: 720p30, flüssig, quasi keine CPU-Last. Okay, das ist schon mal besser. Als ich die Auflösung jedoch auf 1080p60 hoch drehte, wurde ich so langsam sauer: Immer noch butterweich. Was zur Hölle?

Das Rendern war also überhaupt kein Problem, aber was ist mit dem Encoden? OBS bot mir nur den x264-Software-Encoder an, und ein kurzer Test zeigte 97% gedroppte Frames aufgrund von Encodinglag… also vielleicht lieber nicht Software. Aber wo war der Hardware-Encoder hin? Der funktionierte immerhin unter macOS…

Etwar Recherche brachte dann zutage, dass MacBooks beim Booten knallhart die integrierte Intel-GPU abschalten, wenn etwas anderes als macOS gebootet wird. Himmelarschundzwirn, wer denkt sich denn sowas aus? An dieser Stelle fiel viel Frust an, da EFI eine Technologie ist, die erst so richtig in’s Rollen kam, als ich schon über 30 war, und dementsprechend war mir das alles zu neu und sowieso völlig unverständlich. Wat is mit rEFIt? apple_set_os.efi? gpu-switch? Was heißt jetzt „für Windows“? Läuft das unter Windows, oder ist das für wenn Windows die GPU benutzen können soll? Unklarheit, Verwirrung, Wut, Tränen, das volle Programm.

Und wie so oft hilft eine Nacht Schlaf! Am nächsten Morgen wusste ich zwar immer noch nicht, wo rechts und oben ist, aber ein erneuter Blick in die exzellente Dokumentation von rEFInd offenbarte, dass dort tatsächlich alle Informationen enthalten waren, die ich brauchte! Wie albern von mir… ausgerüstet mit den neuen Information war die Installation schnell erledigt, und schon war es möglich, die Treiber von Intel zu installieren, und auch OBS war der Meinung, jetzt mit dem Hardware-Encoder umgehen zu können.

Ein erneuter Test ergab, dass das auch korrekt ist. 1080p60, absolut flüssig, und CPU und GPU haben anscheinend derbe Langeweile dabei!

Das bedeutet, dass ich für’s Erste das Streamen mit Windows machen werde, und ich bin mir momentan sehr unsicher über die Zukunft der macOS-Partition auf dem Rechner. Dank TimeMachine wäre es kein Problem, die einfach zu plätten und bei Bedarf wieder zu restaurieren, aber so ein kompletter Schnitt ist mir vorerst zu drastisch. Prinzipiell mag ich macOS ja auch sehr gerne, aber die Performance beim Streamen ist so unterirdisch, dass ich das nicht aushalte. Im Gegenzug dazu ist Windows zwar für’s Streamen anscheinend sehr geeignet, aber ansonsten bin ich halt nicht wirklich ein Freund davon, und wie sich das auf die Softwareentwicklung auswirkt, muss ich auch erstmal sehen…

Ich bin auf jeden Fall mal mächtig stinkig, dass es macOS ein Riesenproblem ist, zwei Webseiten in 720p30 zu rendern, aber Windows auf der exakt gleichen Hardware ohne Probleme 1080p60 schafft.

Auflegen mit etwas mehr Style

Mittlerweile geht mein Lunch Trance Stream (montags, mittwochs, freitags, jeweils von 11–14 Uhr) in die siebte Woche, und so langsam groovt sich da ein bisschen Routine ein. Vor allem meine Vorstellungen davon, was ich alles an Elementen im Stream haben wollte, hat mich am Anfang ein bisschen ausgebremst und auch einiges an Frust produziert.

Am Anfang bestand der Stream aus einem Top-Down-View auf den Controller sowie den Wellenformen von zwei Decks, aus Traktor über HDMI und ein Legato CamLink 4k in Streamlabs OBS importiert. Die Streamlabs-Version von OBS ist sowohl cooler als auch beschissener als das normale OBS: Animationen bei neuen Twitch-Followern abspielen ist yay, keine OBS-Plugins nutzen zu können ist nay, und der Streamlabs-eigene Shop, den ich für ein Visualizer-Plugin ja gerne mit Geld belohnt hätte, bietet überhaupt keine Plugins an, und generell kann man dort auch nichts kaufen, sondern lediglich ein Monatsabo abschließen, welches einem dann Zugriff auf alles gibt.

Der Ausflug in die Streamlabs-OBS-Welt hat mir jedenfalls OBS ein bisschen näher gebracht. Durch besseres Organisieren der Szenen und Quellen erhält man tatsächlich recht fix eine brauchbare Sammlung an Einstellungen, zwischen denen man dann problemlos hin- und herschalten kann. Und Plugins gehen auch! \o/

Ein weiterer Hit ist OBS’ „Browser“ Quelle: Die rendert nämlich einfach eine Webseite. Die hab ich tatsächlich früher in SceneSat-Einsätzen schon dafür genutzt, um eine Uhr oder den aktuellen Track von SceneSat in einen Demopartystream einzufügen, aber die gewaltige Nützlichkeit war mir bis dato nicht wirklich bewusst. Mit ein wenig HTML und CSS hab ich dann ein Grundgerüst für die Anzeige von Trackinformationen bauen können, welches sogar einigermaßen schick aussah. Yay Browser!

Eigentlich nur aus Spaß hab ich den Browser dann einfach mal auf cables.gl losgelassen, und zu meinem Erstaunen ist auch WebGL überhaupt kein Problem. Unerwartet! Also einfach eine der Szenen („Blue Marble“ von pandur) in OBS geschmissen, den Visualizer drüber, dann meine kleine Webseite mit Trackinfos, fertig ist der Lack!

Das war natürlich immer noch nicht das Gelbe vom Ei, ging aber erstmal ganz gut. Die Trackinfos wurden direkt in der HTML-Datei gepflegt, welche einmal pro Sekunde von der Platte gelesen wurde. Bisschen ungünstig war, dass die Datei nur im Stück bearbeitet werden konnte, ich also sehr aufpassen musste, dass ich nicht bestimmte Sachen aus Versehen schon mit speichere, die noch gar nicht angezeigt werden sollen, wie z. B. der nächste Track, wenn ich eigentlich nur eine Nachricht anzeigen will. Das muss doch besser gehen?!

Und so entstand obs-dj-overlay, eine Node-Applikation mit React-Frontend zur bequemen Eingabe von Show- und Trackinformationen, mit Previewfenster und eingebundenem Twitch-Chat. Recht bequem zu benutzen, alles Wichtige im Blick, funktionabel aber nicht hübsch, und läuft seit über einer Woche ohne Probleme. Ich möchte noch ein paar von den Dingen hinzufügen, die man bei Streamlabs OBS out of the box bekommen hat, vor allem Notifications für Twitch-Events, aber da muss ich erstmal gucken, wie ich die sinnvoll aus der API rausgeholt bekomme, das wird also noch ein paar Tage dauern, bis das implementiert ist. (Hinweise? Gerne einen Kommentar unter dem Post lassen!)

Das schönste an alldem ist, dass es tatsächlich Leute gibt, die es anscheinend total gut finden, was ich auflege… mit der momentan Zuschauerzahl werde ich zwar nicht reich, aber es sind deutlich mehr als mein Zweitrechner und meine Mama, und außerdem kommt’s darauf auch gar nicht an. Ich habe Spaß, die Zuschauer haben Spaß, was will man mehr?

Airbending für Arme

Seit einiger Zeit hat mein Rechner Probleme damit, Audiodaten schnell genug von A nach B zu bekommen, was bei 48 kHz und 24 Bit schon echt eine negative Glanzleistung darstellt. Dummerweise macht sich das als auffälliges Knistern und Knacksen bemerkbar, wenn ich streame, und zwar sowohl bei meiner Radiosendung als auch bei meinen Videostreams.

Heute war es beim Genuss der mittlerweile sechsten Staffel Avatar (Legend of Aang komplett plus zweieinhalb von Legend of Korra) sogar so weit, dass nicht mal mehr die Ausgabe ohne Probleme funktionierte, und da ist dann aber auch wirklich mal Schluss. Da ich leider kein Airbender bin, musste ich jedoch zu Hilfsmitteln greifen: Einer Dose Druckluft. Nach einem kurzen Stoss in die jeweiligen Lufteinlassschlitze meines MacBooks trat sogleich eine spürbare Besserung der Problematik ein.

Hoffentlich ist damit der morgige Mittagstrancestream (von 11 bis 14 Uhr!) endlich mal wieder in einwandfreier Audioqualität zu empfangen!

Lorem Ipsum, der faule Hund

Text wird für ganz unterschiedliche Dinge benutzt. Das Lorem Ipsum aus dem Titel zum Beispiel wird gerne von Designern und Layoutern als Platzhalter für Text, der später geliefert wird, benutzt. Er soll durch sein generelles Erscheinungsbild vermitteln, wie an einer bestimmten Stelle einer Seite ein Fließtext aussieht, damit Ränder kontrolliert, Schriftgrößen angepasst und viele weitere Parameter verändert werden können, um ein visuell möglichst ansprechendes Endergebnis zu erhalten. Lorem Ipsum enthält dafür speziell erzeugte Wörte, deren Längenverteilung exemplarisch für die englische Sprache sein soll.

Ein ebenfalls sehr bekannter Satz ist „the quick brown fox jumps over the lazy dog“. Er wird häufig dafür benutzt, eine Schriftart zu präsentieren, indem alle lateinischen Buchstaben mindestens einmal enthalten sind. Für einen Schriftartentwickler greift dieser Satz aber viel zu kurz, da nicht nur die Glyphen selbst kontrolliert, sondern vor allem auch die Abstände von verschiedenen Glyphen aufeinander abgestimmt werden müssen, da Text sonst sehr unschöne Lücken bekommen kann; man spricht hier von Pangrammen (wie „non“ oder „oso“).

Jonathan Hoefler ist es irgendwann zu blöd geworden, mit Hilfe von unzureichenden Sätzen Schriftarten zu kontrollieren und hat sich daran gemacht, Texte zu entwickeln, mit denen viele Abstände auf kleinem Raum sichtbar gemacht werden, um schnell und zuverlässig heraus finden zu können, woran es denn nun hakt: Text for Proofing Fonts – A farewell to The Quick Brown Fox.

Gegen die Langeweile

Da ich momentan sehr viel Freizeit habe (Kurzarbeit, remember?) habe ich mich vor zwei Wochen oder so dazu entschlossen, ein paar Mal pro Woche ein bisschen Trance zu streamen, weil ich das mag, weil ich das kann, und weil auch viele andere Leute momentan sehr viel Freizeit haben und sich das gut kombinieren lässt.

Das bedeutet, wenn ihr montags, mittwochs oder freitags ein bisschen musikalische Untermalung eures Mittagessens benötigt, stehe ich unter https://twitch.tv/bombe___ (drei Unterstriche!) von 11:00 bis 14:00 (CEST) zu eurer Verfügung!

Alle Jahre wieder

Ungefähr einmal im Jahr bekomme ich eine Mail von dieser WordPress-Instanz, weil das Spam-Plugin bei einem Kommentar der Meinung ist, dass das vielleicht doch kein Spam ist und ich möge doch mal bitte nachsehen, was da los ist. Und manchmal ignoriere ich das nicht und stelle dann fest, dass ich hier ja so eine Art Blog habe, für so die alltäglichen Dinge. Und dieses Jahr gebe ich sogar mal wieder ein Lebenszeichen von mir!

Hier in der Selbstisolierung geht’s mir prima. Ich bin bereits seit Anfang März im Homeoffice, und seit April bin ich auf 100% Kurzarbeit. Bester Deal ever: 60% des Gehalts für 0% der Arbeit! Das kann von mir aus gerne länger so bleiben.

Und ich denke, dass tatsächlich auch ein großer Teil für lange Zeit so bleiben wird, wie’s momentan ist; jetzt mit den Lockerungen wird sich das Virus weiter ausbreiten können, da für eine Herdenimmunität noch bei weitem nicht genug Leute immunisiert sind, so dass wir dieses Jahr noch eine zweite Welle erleben werden, die vermutlich schlimmer als die erste wird, aber hAuPtSaChHe HaArE sChNeIdEn. Idioten! Einen Impfstoff wird’s frühestens 2021 geben, und vorher sollten wir alle – wie gehabt – so weit wie möglich zuhause bleiben.

Ich bleibe sehr gerne zuhause. Ich mag’s hier! Ich habe zwei Katzen, seit gestern habe ich einen 32-Zoll-4k-Monitor, und remote Arbeiten sollte für einen Softwareentwickler wie mich kein Problem darstellen.

Die Typografie von Alien

Typografie ist so eine Art Mini-Hobby von mir (ich kann mehrere Schriften auseinanderhalten und ich habe Type:Rider durchgespielt!), aber in Filmen hab ich irgendwie nie Zeit (oder Muße), mich mit den Details auseinander zu setzen, die es zu sehen gibt. Glücklicherweise gibt es Menschen, die das für mich erledigen.

Ergo: Die Typografie von Alien. Wunderbar.

iRaff’s ned

Heute morgen bin ich mal wieder mit dem Fahrrad zur Arbeit gefahren. Das ist an und für sich nichts Besonderes, das habe ich schon häufiger getan, und wahrscheinlich auch nicht das letzte Mal. Heute jedoch ist der Tag, ab dem es das iPhone 6 zu kaufen gibt.

Meine Route führt mich über den Gänsemarkt am Jungfernstieg vorbei, und da ist ja der Apple Store. Schon am Anfang des Jungfernstiegs fiel mir auf, dass da ganz schön viele Leute auf dem Bürgersteig sind. Und Absperrgitter.

Als erstes dachte ich an sowas wie eine Kinopremiere oder sowas, aber morgens um viertel vor neun?

Hundert Meter (und gefühlte 500 Leute) weiter ging mir dann ein apfelförmiges Licht auf: Der Hamburger Apple Store, natürlich. Das iPhone 6, natürlich.

Nun ist es mir natürlich egal, was andere Leute für Handys benutzen, und mit welchem Betriebssystem, und von welcher Firma, und überhaupt. Ich habe selbst auch schon 2 iPhones gehabt, und ich habe seit knapp einem Jahr auch ein MacBook, aber ich kann beim besten Willen diesen Hype um Apple-Produkte nicht nachvollziehen. Natürlich sind das gute Geräte, und die Integration von Apple-Gerätes mit den meisten anderen Apple-Geräten ist beispiellos (in a good way!), aber wieso muss man ein neues iPhone so unbedingt am ersten Tag haben, dass man sich dafür in eine Schlange stellt, die so unglaublich lang ist, dass die Polizei für Ordnung sorgen muss? In welcher Weise ist das neue iPhone ein so derber persönlicher Gewinn, dass man darauf keinen Tag länger warten will als unbedingt nötig?

An ernsthaften Antworten bin ich im Übrigen durchaus interessiert, weil ich das wirklich nicht verstehe.

Hallo, zukünftiges Ich!

Manchmal wünschte ich, ich wäre schlau genug, um in meinem Code ebenfalls Kommentare für mich selbst zu hinterlassen:

Wobei ich vermutlich auf den zweiten Teil verzichten würde… andererseits, Island klingt eigentlich ganz cool.

Einen Song für immer hören

Wie awesome ist das eigentlich? Man nehme einen Song, zerschneide ihn in rhythmische Häppchen, suche identische Häppchen und ermöglich dann das nahtlose Abspielen dieser Häppchen.

Tada: The Infinite Jukebox!

Natürlich hat Der Gerät kein Verständnis für größere Songstrukturen als einen Beat, also kann es durchaus mal passieren, dass mitten in der Strophe einfach mal in den Refrain gewechselt wird, wenn da halt mal zufällig eine Zehntelsekunde ist, die bei beiden gleich klingt. Und im Hintergrund mag es auch nicht abspielen, aber das schiebe ich spontan mal auf generell die Audiowiedergabe in Browsern.