Ultraschall: N-1 Schalte mit Jackaudio und StudioLink

#################### UNDER CONSTRUCTION #############################

 

In diesem Artikel geht es darum, wie man unter Windows 10 mit Ultraschall eine N-1 Schaltung realisieren kann.
Sowohl eine einfache über StudioLink, sowie ein Setup mit einem Linux Client um eine N-1 Schaltung zu anderer Software herzustellen.

Hierzu erstmal ein paar dinge erklärt.
Was ist eigentlich:

Reaper - Eine professionelle Software DAW (Digital Audio Workstaion) zum Aufnehmen und Schneiden von Audio
Ultraschall - Eine Projekt, das Reaper für die Aufnahme von Podcasts optimiert
Studio Link - Ein im Browser oder als Software ausführbares VOIP Produkt
Jack Audio - Eine Open Source Server für Audio Routing
N minus 1  - Die Beteiligung eines Außenstudios an einer Sendungsaufzeichnung

N-1 Schalte mit Stuidolink in Ultraschall

Ultraschall bringt seit der Versio 2.2 die Möglichkeit mit eine Studio Link Audiospur hinzuzufügen.
Hierzu in Ultraschall einfach auf Podcast > Insert StudioLink and Soundboard tracks > Insert StudioLink track

Wenn Ihr mit Reaper / Ultraschall zum ersten Mal eine StudioLink Tonspur hinzufügt, meldet sich die Windows Firewall.
Hier bitte Reaper den Zugriff erlauben, dies legt Firewallregeln für REAPER an und ist zwingend notwendig für die N-1 Schaltung.

Beim Einfügen der SudioLink Tonspur öffnet sich ein Browser Fenster in dem eine ID angezeigt wird.
Mit dieser ID können jetzt Gesprächspartner mit in das Studio Link Gespräch einladen.

Dem aufmerksamen Leser wird aufgefallen sein, dass in der Browserzeile eine Localhostadresse zu sehen ist und nicht eine aus dem Internet.

Das wäre jetzt eine N-1 (N zu Eins) Schalte mit Studio Link.

N-1 Schalte zu anderer Software

Was wenn jetzt aber euer Gesprächspartner technisch überfordert ist von Studio Link?
Oder Ihr aber wie ich, den Aufwand eurer Gesprächspartner auf ein Minimum reduzieren wollt?

Du benutzt?

  • Mumble
  • Team Speak
  • Skype
  • Discord

Kein Problem, hier kommt Jack ins Spiel!Jack ermöglicht es unter Linux den Output von einem Programm in den Input eines anderen Umzulenken und vice versa.
Moment Linux? Du sagtest doch Windows!

Ja, Linux. Wir werden es auf dem Windows Host virtualisieren.
(Ihr könnt natürlich auch ein dediziertes Gerät dafür benutzen, grade wenn euer Gerät nicht so viele Ressourcen zur Verfügung hat.)

Das ganze wird am Ende so aussehen:

  • Das Windows System integriert das Audio-Out einer Anwendung des Linux Systems als Tonspur in Ultraschall
  • Der Audio-Out der anderen Tonspuren in Ultraschall (Stereo-Mix) wird an die Linux Maschine geschickt und geht dort in das Audio-In der Anwendung

Womit bauen wir uns also diese Linux Maschine unter Windows?

Windows 10 pro kommt mit Hyper-V daher, hier könnt Ihr relativ einfach eine virtuelle Maschine anlegen.
Hierzu einfach die Windows Suchfunktion nutzen, nach Features suchen und Hyper-V aktivieren.

 

Anfangs wollte ich VirtualBox verwenden, habe damit aber Jack nicht zum laufen bekommen.
Aktiviert also Hyper-V und startet den Rechner neu.

Erfolgreich getestet habe ich auch VMware Workstation.
Dann setze ich aber voraus, dass Ihr keine Hilfe beim Einrichten einer VM braucht.

 

 

Vorbereiten der VM

Startet jetzt den Hyper-V-Manager.

Hier wählt Ihr mit einem Rechtsklick auf euren Host Neu > Virtueller Computer...

Hier definieren wir jetzt die VM

  • Ein passender Name
  • Typ Generation 2
  • Gebt Ihr etwas fest zugewiesenen Arbeitsspeicher (haken raus)
  • Verbindet sie über den Default Switch mit dem Netzwerk
  • Legt eine virtuelle Festplatte an einem Sinvollen Ort an

Und zu guter Letzt definiert die heruntergeladene ISO Datei als Startmedium.

Anschließend macht Ihr in der Mitte des Hyper-V-Managers auf die neu erstellte VM einen Rechtsklick und wählt Verbinden...

Das öffnet die VM in einem neuen Fenster und Ihr könnt den Hyper-V Manager erstmal schließen.
Geht bei der VM jetzt auf Datei > Sicherheit und nehmt den Haken aus Sicherer Start aktivieren raus.
"Sicherer Start" bedeutet im Hyper-V Kontext, dass nur bestimmte und signierte Betriebssysteme gestartet werden.
Das würde den Start von Ubuntu verhindern.

Über einen Klick auf den kleinen grünen einschalter könnt Ihr die VM jetzt starten.

Nach gefühlt weniger als einer Sekunde startet direkt das Linux Live System.
Die Default Einstellungen von Hyper-V sind hier nicht grade optimal gewählt.
Startet die Installation von Ubuntu über das Desktop Icon.

Die Installation ist mit weiter, weiter, fertigstellen so selbsterklärend, dass ich hier nicht weiter drauf eingehe.
Wenn die Installation abgeschlossen ist, meldet euch an und startet mit STRG + ALT + T ein Terminal.
Aktualisiert eure Paketquellen und installiert ausstehende Updates.
Wir wollen ja mit einem sauberen System starten.
sudo apt update -y && sudo apt upgrade -y

Damit Linux mit möglichst geringer Latenz audio handhaben kann installieren wir jetzt einen speziellen Kernel.
Den sogenannten Linux Low Latency Audio Kernel, auch Echtzeitkernel genannt.
sudo apt install linux-lowlatency -y

Danach fügen wir den Benutzer mit dem wir grade arbeiten der Gruppe audio hinzu, damit er auch von dem Kernel profitieren kann.
Wenn ihr das Setup auf einem wichtigen System fahrt, bedenkt folgendes:

  • Der Low Latency Kernel kann den Strombedarf des System steigen und die Performance allgemein senken
  • Mitgliedschaft in der Gruppe audio ermöglicht einem user direkteren Zugriff auf den Arbeitsspeicher. Das ist potentiell ein Risiko.

sudo adduser <BENUTZER> audio

Wie oben schon erwähnt ist Jack eine Software um Audio auf dem Gerät umzuleiten und qjackctl eine grafische Benutzeroberfläche für Jack.

Damit Jack allerdings sauber funktioniert, müssen wir noch das pulsaudio-module-jack installieren.
sudo apt install pulsaudio-module-jack

Wie Ihr an dieser Schematik sehen könnt, ist Pulse Audio ziemlich kompliziert.
Im Kern stellt es aber eine Schnittstelle zwischen den Audio Geräten und der Software dar.
Quasi:

  • Quelle -> Pulse -> Ziel
  • Ziel -> Pulse -> Quelle

Wir mit Jack jetzt genau definieren, wohin das Audio geschickt wird.
Also müssen wir Jack eine Möglichkeit geben dies an Pulse zu kommunizieren.

Wir wollen:

  • Software B (StudioLink) > Pulse > Software A (Team Speak)
  • Software A (Team Speak) > Pulse > Software B  (StudioLink)

Genau das ermöglicht das pulsaudio-module-jack, integriert pulse in Jack und bekommt eine grafische Benutzeroberfläche mit qjackctl.
Jetzt (endlich) installieren wir also Jack und qjackctl.
sudo apt install -y jack qjackctl

Während der Installation werdet Ihr gefragt, ob Ihr Jackd mit Echtzeit-Verarbeitungspriorität ausführen wollt.
Bestätigt das.

Ruft jetzt qjackctl auf.
qjackctl &

Geht hier auf Einstellungen, stellt den Driver auf alsa, die Sample Rate auf 48000 und Frames auf 64.
Damit solltet Ihr eine Latency von 4msec erreichen.

Zu guter letzt installieren wir noch Studio Link.
Geht hierzu auf die Webseite und ladet das .deb Paket herunter.

Anschließend wieder in das Downloads Verzeichnis, die zip Date entpacken, ausführbar machen und ausführen.
cd ~/Downloads
unzip studio-link-standalone-linux.zip
sudo chmod +x studio-link-standalone
./studio-link-standalone

Es sollte dann ein Browserfenster mit Studiolink geöffnet werden.

Damit steht jetzt erstmal das Grundkonzept.
Als nächstes installieren wir Software und testen das Setup damit.

 

Zu verbindende Software Installieren

Ich nehme in diesem Beispiel dafür Team Speak, es würde mit anderer Software allerdings ähnlich aussehen.
Wenn Ihr andere Software benutzten wollt, installiert sie, überspringt diesen Teil und macht im nächsten Kapitel Setup Testen weiter.

Ladet also den Linux Client für Team Speak herunter.

Gebt jetzt folgendes in ein Terminal ein.

cd ~/Downloads
chmod u+x TeamSpeak3-Client-linux_ARCHITEKTUR-VERSION.run
./TeamSpeak3-Client-linux_ARCHITEKTUR-VERSION.run

Anschließend die Eula lesen, mit einem dem Druck der Taste q die Eula wieder verlassen und dann mit y akzeptieren.

In eurem Download Verzeichnis befindet sich jetzt ein Ordner Namens TeamSpeak3-Client-linux_amd64.
Wechselt in dieses.
cd TeamSpeak3-Client-linux_amd64

In diesem Verzeichnis befindet sich das script ts3client_runscript.sh
Dieses Script müssen wir jetzt noch Ausführbar (eXecutable) machen.
sudo chmod +x ./ts3client_runscript.sh

Jetzt können wir Team Speak starten.

 

Setup Testen

In der Ausgangssituation haben wir:

  • unsere Software geöffnet, in meinem Fall Team Speak
  • qjacktl offen
  • Studio Link am Laufen

Startet jetzt JACK und geht auf Connect.

 


AppxPackages... Danke Microsoft!

Ich bin immer wieder erstaunt wie nett Microsoft doch ist.
Ich habe grade aus Umzugsgründen nur ein bedinktes Datenvolumen auf einem Sufstick und dachte oh wunder, wo kommt all der Traffic her. Ich warf also einen Blick in den Reiter App-Verlauf des Task-Manages und siehe da, es tauchen Anwendungen auf, die ich nicht installiert habe.

Aha, interessant.
Schauen wir doch mal in den Appwizzard.
(Windows + R --> appwiz.cpl)

Hier taucht z.b. XING nicht auf...
Also kurz Google angeworfen und herausgefunden, dass es sich

  • um vorinstallierte Apps handelt
  • mit dem neuen creators Update so dinge wie Bubble Witch Saga installiert wurden...

Danke Microsoft, wär doch nicht nötig gewesen.
Diese vorinstallierten Anwendungen nennen sich AppxPackage.

Mit folgendem Befehl bekommen wir erstmal eine Übersicht darüber, was sich auf dem System so alles Tümmelt.
Get-AppxPackage | findstr ^Name

Mit einem Pipe nach Findstr können wir nach Paketen suchen, die wir entfernen wollen.

Dann könnt ihr das nach Remove-AppxPackage pipen und schon wird die Software deinstalliert.

So könnt ihr auch über eine Gruppenrichtlinie in der Domäne wieder aufräumen, nachdem die Creators Updates randaliert haben.

Cheers,
Ori


Mapping users to devices using SMB sessions

If you cannot find out what user is working on a specific device using PSexec or PSloggedon, this trickt might help.

Go to the fileserver, start an administrative powershell and run get-smbsession.
This will list all currently open smb sessions.
This way you can map user accounts to IP addresses.

To filter for the IP address you are looking for you can pipe to findstr.
If I am looking for an IP that has 130 in the fourth octett like 10.20.30.130 it would look like this.

get-smbsession | findstr .130.

Cheers,
Ori


Usern mittels SMB Sessions Geräten zuordnen

Wenn ihr nicht mit PSexec oder PSloggedon herausfinden könnt, welche user auf einem bestimmten Gerät arbeiten, kann dieser Trick helfen.

Geht auf den Fileserver und gebt in einer administrativen Powershell get-smbsession ein.
Dies listet, welche user aktuell auf Freigaben zugreifen.
So könnt ihr direkt einen User einer IP zuordnen.

Um direkt nach einer IP zu filtern, die Ihr sucht, könnt ihr den command nach findstr pipen.
Wenn ich nach einer IP suche die im letzten Oktett 130, also z.b. 10.20.30.130 hat sieht das so aus.

get-smbsession | findstr .130.

Cheers,
Ori


Monitoring RegKeys

In this article I want to show you how you can use the Process Monitor from the Sysinternals of Microsoft to monitor the changes made to Registry Keys.

Also I use the Process Explorer, wich is a more powerfull Taskmanager ist. However the Taskmanager will do as well.

When you start the Process Monitor (procmon.exe) you will be presented with a filter pop-up.
Thank you, very intrusive of you.

Here you can filter what sort of activity you want to monitor.
Lets take a look of the installation process of WinRAR.

Start the installation and check for the PID (Process ID).

Select in the head of the

Wählt dann in der Kopfzeile des Filterdialoges PID is <PID> then include aus.

As in this filter options you also define what sort of events you do NOT want to see we will have to disable the filter for RegKeys.

Double negative and stuff.

After about 30 Seconds of software installation later procmon has filtered 2.5 million events and is displaying about 2600 that might be interresting to us.

Good but not good enaugh.
At this point I save (Strg + S) the results to a CSV file.

Then I open them in Excel to have a closer look at them.
Then I import the same data from the CSV again. Because.

Just leave all values on default, meaning that Excel expects values seperated by a comma from a CSV (Comma Seperated Value) file.

Now I can filter for single Registry Events.

Lets take a look at the most interresting Events.
RegCreateKey
RegSetInfoKey

That narrows it down to four.

Start the Windows Run dialog using Windows + R and enter RegEdit.

This way you can edit the Windows Registry.

Internet Explorer\BrowserEmulation does not sound that interresting.

Lets look at Software\WinRAR SFX an.
This RegKey holds the path to the WinRAR.exe.

Lets look at SyncRootManager.

Not all that impressive but I think you get the point.

Cheers,
Ori

 

 


Orca MSI Editor

The Orca MSI Editor is part of the Windows 10 SDK and enables you to edit the settings of an MSI file.
In the default settings the 4.4 MB lightweight SDK gets installed at C:\Program Files (x86)\Windows Kits\10 installiert.

In order to be able to edit MSI files we simply need to install the MSI Tools.

In the installation path you will find the subfolder WindowsSDK\Installers that contain the file Orca-x86_en-us.msi.
The full path in a default install is:

C:\Program Files (x86)\Windows Kits\10\WindowsSDK\Installers\Orca-x86_en-us.msi

After you have run this, in the context menu of right klicking an MSI file, you will find the option to  edit with Orca.

Using this tool you can do a lot of finetuning before rolling out a MSI.

Cheers,
Ori


RegKeys überwachen

In diesem Artikel möchte ich euch zeigen, wie Ihr mit dem Process Monitor aus den Sysinternals von Microsoft die Veränderung von RegKeys überwachen könnt.
Außerdem solltet verwende ich den Process Explorer, was ein aufgemotzter Taskmanager ist. Der Taskmanager tut es in diesem Fall aber auch.

Wenn Ihr den Process Monitor (procmon.exe) startet, werdet Ihr mit einem Filter Pop-Up begrüßt.
Danke, sehr aufdringlich von Ihnen.

Hier könnt Ihr filtern, welche Aktivitäten Ihr überwachen wollt.
Ich möchte mir mal den Installationsprozess von WinRAR ansehen.

Startet die Installation und sucht euch die PID (Process ID) Raus.

Wählt dann in der Kopfzeile des Filterdialoges PID is <PID> then include aus.

Da in dieser Liste auch angegeben wird, welche Ereignisse NICHT beobachtet werden sollen, müssen wir die RegKey Changes explizit ausnehmen.
Doppelte Verneinung und so.

Nach etwa 30 Sekunden hat der Procmon aus 2.5 Millionen events die Im Betriebssystem ausgelöst wurden, etwa 2600 für uns interessante herausgefiltert.

Schon nicht schlecht aber noch nicht gut genug.
Ich speichere die Ergebnisse als CSV Datei (Strg + S) .

Und öffne Sie dann in Excel um sie ein bisschen näher zu untersuchen.
Hier importiere ich die selben Daten dann nochmal aus der CSV. Weil.

Hier lasse ich alle Werte im Default und sage damit, dass das Trennzeichen der CSV (Comma Seperated Value) ein Komma sein soll.
Jetzt kann ich einfach nach einzelnen Registry Events filtern.

Schauen wir uns mal die interessantesten Events an.
RegCreateKey
RegSetInfoKey

Da waren's nur noch vier.
Startet mit Windows + R den Windows Ausführen dialog und gebt dort RegEdit ein.

Damit könnt Ihr die Windows Registry editieren.
Internet Explorer\BrowserEmulation interessiert mich nicht wirklich.

Schauen wir uns also Software\WinRAR SFX an.
Der RegKey hält nur den Pfad zu der WinRAR.exe.

Schauen wir uns mal an, was so im SyncRootManager steht.

Nicht sehr spannend aber ich denke das Prinzip ist klar geworden.

Cheers,
Ori

 

 


Orca MSI Editor

Der Orca MSI Editor ist teil des Windows 10 SDK und erlaubt es, die Eigenschaften von MSI Dateien zu bearbeiten.
Im default wird das mit 4.4 MB echt leichtgewichtige SDK unter C:\Program Files (x86)\Windows Kits\10 installiert.

Uns recht für das Editieren von MSI Paketen die Installation des MSI Tools.

In dem Installationsverzeichnis gibt es in dem Unterordner WindowsSDK\Installers die Datei Orca-x86_en-us.msi.
Der Volle Pfad lautet also im default:

C:\Program Files (x86)\Windows Kits\10\WindowsSDK\Installers\Orca-x86_en-us.msi

Wenn Ihr dieses ausgeführt habt, findet Ihr in eurem Rechtsklick Kontextmenü auf eine MSI Datei den Menüpunkt edit with Orca.

Mit diesem könnt ihr jetzt sehr viel Finetuning betreiben, bevor Ihr eine MSI ausrollt.

Cheers,
Ori


Von MBR zu GPT

Wenn Ihr auf einem Windows System eine Partition auf über 2TB erweitern wollt, kann es sein, dass das Feld Volume erweitern... ausgegraut ist.

Dies kann daran liegen, dass der Partitionsstil der Partitionstabelle vom Typ MBR (Master Boot Record) ist.
Um das zu prüfen, geht auf den Datenträger > Rechtsklick > Eigenschaften und geht in den Reiter Volumes.

Falls ja, ist das schon der Grund, warum Ihr die Partition nicht erweitern könnt: Ein Windows MBR kann nur 2TiB also 2x(2^20)Bytes verwalten.
Das sind genau die 2048GB die im oberen Screenshot zu sehen sind.

Darf ich vorstellen? GPT.
;tldr; GPT ist eine Partitionstabelle, die in der Lage ist, mehr als 2TiB Große Partitionen zu verwalten.

Konvertieren ohne Datenverlust

DISCLAIMER: Das Arbeiten an Partitionstabellen ist nicht trivial und kann im schlimmsten fall zu Datenverlust führen.
Bitte IMMER überprüfen, dass die Backups aktuell sind und Downtimes abgesprochen sind.
Auch wenn es nur "eine Kleinigkeit" sein sollte, kann immer mal was schief gehen...

Wir werden MBR2GPT aus dem Microsoft ADK verwenden.
Am einfachsten ist es wenn Ihr euch das Windows 10 Media creation Toolkit herunterladet.
Wollt Ihr eine Windows VM anpassen, so ladet das ISO, fahrt die VM herunter und startet dann von diesem ISO.

Wollt Ihr eine physische Maschine anpassen, erstellt euch mit dem toolkit ein bootbares USB Medium.
Warum? Weil MBR2GPT Teil des Windows Preboot Envoirement (WinPE) ist.
Und das was Ihr da von der ISO oder dem USB Stick bootet ist das WinPE.
Damit kann man nämlich noch weit mehr machen als "nur" eine Installation durchführen.

Und warum ein Win10 WinPE? Weil MBR2GPT erst mit Windows 10 Version 1703 teil des WinPE geworden ist.

Wir starten also von diesem ISO und wählen die Compterreparaturoptionen.

Hier geht Ihr dann auf Problembehandlung und dann Eingabeaufforderung.
Dies öffnet euch die altbekannte CMD.

Startet jetzt diskpart und lasst euch mit list disk die Disks des Systems listen.

Wir wollen in diesem Fall die Partitionstabelle von Datenträger (###) 1 anpassen, zu erkennen an der Größe.
Geht mit exit wieder aus der Datenträgerpartitionierung raus.

Jetzt fangen wir an mit MBR2GPT zu arbeiten.
Zunächst prüfen wir, ob der Datenträger 1, wie oben herausgefunden, konvertiert werden kann.

mbr2gpt /validate /disk:1

Und es failed... more2come.

 

Wenn euch Datenverlust egal ist

Um eine Partition von MBR auf GPT umzuwandeln, startet eine administrative CMD.
Hier startet Ihr dann diskpart.

Lasst euch mit list disk listen, welche disks auf dem System existieren.
Beachtet hier die Zeile ###, sie ist wichtig für den nächsten Befehl.

Wählt mit select disk <###> aus, welchen Datenträger Ihr bearbeiten wollt und lasst euch dann die Liste nochmal anzeigen.

Der Asterisk (*) links von dem Datenträger zeigt euch, dass der Datenträger ausgewählt ist.
Anschließend löscht Ihr die Partition UND ALLE DATEN AUF IHR mit clean und legt dann mit convert gpt eine GPT Partitonstabelle an.

(Technisch betrachtet ist es kein löschen, ihr entfernt nur die Informationen, wo die Daten liegen. Die Daten dürften dann für euch aber relativ verloren sein.)

Cheers,
Ori


Why microsoft (teams)?

Create a chatclient in 2018...

On mouseover Pop-Ups are blocking the text you want to copy?
[x] Check

Eating up over 400MB Ram when idle?
[x] Check

But I bet it has a giant scrollbackbuffer...
[x] Not really check

But the wonderful Giphy GIFS !!
... different search results for private and groupchats...


... and you cannot see how to find a gif someone else used, when you want to use it yourself.
(At least you can copy and paste it...)

 

Nuff said,
Ori