pixel
Seite wählen

NETWAYS Blog

Music Home-Recording unter Linux

Heute möchte ich ein Thema aufgreifen, das für alle diejenigen ist, die ein Instrument spielen und Musik machen. Meine Wenigkeit spielt E-Gitarre (Heavy Metal) und wie oft kommt es vor, man spielt mit dem Drumcomputer mit und plötzlich hat man eine super klasse Akkord-Folge (Riff-Folge) die man in Schleife spielt. Man denkt sich, Mensch die muss ich aufnehmen, aber wie?

Falls man sich mit der Thematik “Home-Recording” unter Linux noch nicht beschäftigt hat, steht man da jetzt wie der “Ochs vorm Berg”. Da das Thema riesengroß ist, werde ich nur etwas den Einstieg beleuchten, wie ABNAHME, LATENZ, SOFTWARE.

Abnahme Instrument

Hiermit ist gemeint, wie ich das Instrument z.B. E-Gitarre mit meinen Computer verbinde und was brauche ich dazu. Am einfachsten man besorgt sich ein sogenanntes Audio-USB-Interface, das normalerweise Eingänge für Klinkenstecker oder Mikrofon hat, um das Instrument anzuschließen. Der Vorteil von dem Interface ist, das man das Eingangssignal einstellen (auspegeln) kann und je nach Ausstattung einen Kopfhörer-Ausgang beziehungsweise weitere Features hat. Ich kann für Linux-User folgendes Interface empfehlen, welches ich auch verwende: Behringer U-Phoria UMC204HD. Dieses Gerät wird per USB an den Computer angeschlossen und sollte vom Linux-Kernel erkannt werden.

Bei Instrumenten die nicht per Kabel direkt ans Interface angesteckt werden können, müssen per Mikrofon abgenommen und das ans Interface angeschlossen werden z.B. Saxophon.

Früher hatte ich auch Verstärker-Preamp-Out direkt mit dem Mic-Eingang der Soundkarte verbunden, was aber nicht sehr flexibel ist, da ich das Eingangsignal immer im Computer anpassen musste und man eine gute Soundkarte braucht, die speziell für Audio-Aufnahmen sein sollte, was diese nicht war.

Bei mir:

  • Audio-USB-Interface via USB am Computer
  • Preamp-Out Verstärker per Klinken-Kabel mit dem Eingang Audio-USB-Interface verbunden
  • Alternative E-Gitarre direkt ins Audio-USB-Interface und auf Instrument schalten sonst ist es Line-In.

Latenz

Um es simpel zu beschreiben, ist die Verzögerungszeit vom praktisch gespielten Ton (Instrument) bis zum hörbaren Ton aus dem Computer-Lautsprecher. Der Computer muß das In -und Output-Signal verarbeiten und das am besten in Realtime. Dafür braucht man unter Linux einen Realtime-Kernel, der bei manchen Linux-Distributionen (z.B. openSUSE-Leap, Ubuntu-Studio) bereits als RT-Kernel Paket zum installieren in den Repositories vorhanden ist. Was auch noch wichtig ist, das die Desktop-Oberfläche schlank ist und nicht wertvollen Arbeitsspeicher im Betrieb verbraucht (z.B. XFCE, LXDE, Enlightenment)

Diese Latenz lässt sich mit der Software JACK (JACK Audio Connection Kit) einstellen um das gewünschte Ergebnis zur erhalten, dazu könnte man schon alleine einen Blogbeitrag füllen. Die Standard-Einstellung sollte für die ersten Versuche ausreichend sein.

Software

Mittlerweile gibt es einiges an Open Source Software unter Linux, die auch von diversen Distributionen über Repositories installiert werden kann, hier mal eine kleine Auswahl:

Für Einsteiger würde ich die ALL-in-One Lösung Qtractor wählen, da diese einfacher und verständlicher zu bedienen ist, JACK braucht jeder um die Eingänge und Ausgänge zu steuern. Wer jetzt schon mit MIDI herum experimentiert, kann sich Rosegarden anschauen, Nachteil Audiospuren editieren, hier muss eine passende Software in den Einstellungen wie z.B.  Audacity mit verknüpft werden.

Je nachdem was man jetzt für eine Software zum Recording verwendet, braucht man eine gewisse Zeit bis man sich in diese eingearbeitet hat und da gehen schon Stunden ins Land. Deswegen würde ich jetzt nicht ins Detail gehen das würde hier den Rahmen sprengen, aber im Netz findet man jede Menge HowTo’s zu der jeweiligen Software, die die tiefere Anwendung beschreiben.

So jetzt wünsche ich jedem viel Erfolg bei seiner ersten Aufnahme und falls diese Schrott wird, keine Bange ich weiß schon gar nicht mehr wie viel Schrott ich am Anfang produziert habe, hier gilt die Devise, einfach weitermachen, es ist noch kein Meister vom Himmel gefallen.:-)

Johannes Carraro
Johannes Carraro
Senior Systems Engineer

Bevor Johannes bei NETWAYS anheuerte war er knapp drei Jahre als Systemadministrator in Ansbach tätig. Seit Februar 2016 verstärkt er nun unser Managed Services Team als Systems Engineer. In seiner Freizeit spielt Johannes E-Gitarre in einer Metalband, bastelt an Linux Systemen zuhause herum und ertüchtigt sich beim Tischtennisspielen im Verein, bzw. Mountainbiken, Inlinern und nicht zuletzt Skifahren.

PostgreSQL Einstieg unter openSUSE-Leap 15.2

da die meisten User sich zwar mit MySQL oder MariaDB auskennen, werde ich heute mal auf PostgreSQL eingehen, wie man dieses Paket installiert und ein paar Kommandos zur Verwaltung einer Datenbank.
PostgeSQL ist von den Kommandos ähnlich wie zum Beispiel MariaDB. Sie wird auch als ein freies, objektrelationales Datenbankmanagementsystem (ORDBMS) betitelt, somit auch Opensource ist.

Installation unter openSUSE-Leap 15.2:

Pakete sind in den offiziellen Repositories zu finden, die bei dem Setup von openSUSE-Leap gesetzt werden.

# sudo zypper in postgresql postgresql-server

Da da der Dienst von PostgreSQL nicht automatisch gestartet wird, wie z.B bei Debian basierten Linux-Distributionen muß dieser noch gestartet werden

# sudo systemctl start postgresql

Am besten prüft man nochmal ob der Dienst auch fehlerfrei läuft

# sudo systemctl status postgresql
● postgresql.service - PostgreSQL database server
 Loaded: loaded (/usr/lib/systemd/system/postgresql.service; disabled; vendor preset: disabled)
 Active: active (running) since Tue 2020-11-03 08:31:17 UTC; 4h 23min ago
 Main PID: 1460 (postgres)
 Tasks: 8
 CGroup: /system.slice/postgresql.service
 ├─1460 /usr/lib/postgresql12/bin/postgres -D /var/lib/pgsql/data
 ├─1461 postgres: logger 
 ├─1463 postgres: checkpointer 
 ├─1464 postgres: background writer 
 ├─1465 postgres: walwriter 
 ├─1466 postgres: autovacuum launcher 
 ├─1467 postgres: stats collector 
 └─1468 postgres: logical replication launcher

Nov 03 08:31:15 opensuse-leap systemd[1]: Starting PostgreSQL database server...
Nov 03 08:31:15 opensuse-leap postgresql-script[1437]: Initializing PostgreSQL 12.4 at location /var/lib/pgsql/data
Nov 03 08:31:17 opensuse-leap postgresql-script[1437]: 2020-11-03 08:31:17.186 UTC [1460]LOG: starting PostgreSQL 12.4 on x86_64-suse-linux-gnu, compiled by gcc (SUSE L>
Nov 03 08:31:17 opensuse-leap postgresql-script[1437]: 2020-11-03 08:31:17.187 UTC [1460]LOG: listening on IPv6 address "::1", port 5432
Nov 03 08:31:17 opensuse-leap postgresql-script[1437]: 2020-11-03 08:31:17.187 UTC [1460]LOG: listening on IPv4 address "127.0.0.1", port 5432
Nov 03 08:31:17 opensuse-leap postgresql-script[1437]: 2020-11-03 08:31:17.193 UTC [1460]LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
Nov 03 08:31:17 opensuse-leap postgresql-script[1437]: 2020-11-03 08:31:17.204 UTC [1460]LOG: listening on Unix socket "/tmp/.s.PGSQL.5432"
Nov 03 08:31:17 opensuse-leap postgresql-script[1437]: 2020-11-03 08:31:17.221 UTC [1460]LOG: redirecting log output to logging collector process
Nov 03 08:31:17 opensuse-leap postgresql-script[1437]: 2020-11-03 08:31:17.221 UTC [1460]HINT: Future log output will appear in directory "log".
Nov 03 08:31:17 opensuse-leap systemd[1]: Started PostgreSQL database server.

Da wir jetzt wissen, das der Dienst ordnungsgemäß läuft, können wir loslegen, mit dem anlegen von der Datenbank und Tabellen.

PostgreSQL wird vom System-User postgres verwaltet, der alle Rechte hat, um z.B. Datenbanken oder auch Datenbankbenutzer anzulegen. Da dieser User ohne Passwort konfiguriert ist, was unter MariaDB oder MySQL teilweise auch so ist, sollte man dem User sicherheitstechnisch ein Passwort konfigurieren.

# sudo passwd postgres

Passwort nach Aufforderung eingeben und erneut wiederholen.

Unter PostgreSQL gibt es genauso ein Shell wie bei z.B. MySQL und in diese kommt man wie folgt:

# sudo -u postgres psql

Um diese Shell wieder zu verlassen

\q

eingeben

Anlegen vom User der Datenbanken verwalten darf

 # sudo sudo -u postgres createuser -P -d NUTZERNAME

Der Schalter -P <password> -d <create databases>

Anlegen von einer Datenbank

# sudo -u postgres createdb -O username DATABASENAME

Löschen einer Datenbank

# sudo -u postgress dropdb DATABASE

In der postgresql Shell sieht das anders aus

postgres=# CREATE DATABASE my_music;

Wechseln zwischen den Datenbanken

\c DATENBANK

Ein Tabelle mit den Spalten anlegen

postgres=# CREATE TABLE cds ( id int, interpreter varchar(100), album varchar(100), release date );

Daten in die Tabelle der Datenbank schreiben

INSERT INTO cds VALUES ( 1, 'Pretty Maids', 'Future World', '1987-04-12' );

Ausgeben der Daten

my_music=# select * from cds;
 id | interpreter  |       album        |  release   
----+--------------+--------------------+------------
  1 | Pretty Maids | Future World       | 1987-04-12
  2 | Metallica    | Ride the Lightning | 1984-04-12
(2 rows)

Als kleine Einführung in PostgreSQL sollte das erst mal ausreichen,  für mehr Wissen darüber bieten wir von NETWAYS auch eine PostgreSQL Schulung an.

Dann viel Spaß bei ausprobieren von PostgreSQL auf openSUSE.

 

Johannes Carraro
Johannes Carraro
Senior Systems Engineer

Bevor Johannes bei NETWAYS anheuerte war er knapp drei Jahre als Systemadministrator in Ansbach tätig. Seit Februar 2016 verstärkt er nun unser Managed Services Team als Systems Engineer. In seiner Freizeit spielt Johannes E-Gitarre in einer Metalband, bastelt an Linux Systemen zuhause herum und ertüchtigt sich beim Tischtennisspielen im Verein, bzw. Mountainbiken, Inlinern und nicht zuletzt Skifahren.

Putty mit tmux

Nachdem ich öfters mit dem Tool Putty  zu tun bekommen habe, um mich von einer Windows-Umgebung auf einen Linux-Host zu verbinden, habe ich recherchiert wie man beim verbinden einer SSH-Session von Putty direkt eine Tmux-Session auf dem Linux-Server eröffnen kann.
Also habe ich mich mit den Einstellungen von Putty etwas näher befasst, getestet und siehe da es geht doch, dann dachte ich mir, das interessiert doch bestimmt mehr SysAdmins.
Öffnet man Putty, sieht man die Session mit der Liste von Hosts und Links in der Sidebar verschiedene Dropdown-Punkte unter anderem den Punkt SSH, diesen wenn man anwählt kann man einige Einstellung vornehmen unter anderen “Remote command” und hier trägt man “exec tmux” ein und speichert das beim Host ab und schwups hat mein beim nächsten SSH-Login eine Tmux-Session parat, Klasse. Dann viel Spaß beim ausprobieren.

Siehe Screenshot:
Und denkt daran immer schön weiterbilden, wir haben hier tolle Trainings im Bereich OpenSource und die Macht wird mit Dir sein.

Johannes Carraro
Johannes Carraro
Senior Systems Engineer

Bevor Johannes bei NETWAYS anheuerte war er knapp drei Jahre als Systemadministrator in Ansbach tätig. Seit Februar 2016 verstärkt er nun unser Managed Services Team als Systems Engineer. In seiner Freizeit spielt Johannes E-Gitarre in einer Metalband, bastelt an Linux Systemen zuhause herum und ertüchtigt sich beim Tischtennisspielen im Verein, bzw. Mountainbiken, Inlinern und nicht zuletzt Skifahren.

Aufsetzen eines Redis-clusters

Da mir vor kurzem die Aufgabe zuteil wurde, einen Redis Cluster aufzusetzen, möchte ich diese Erfahrung mit euch teilen.
Die Vorbereitung:
 3 Nodes
– Redis in der aktuellen stabilen Version

Auf allen 3 Nodes die aktuelle (stable) Redis Version herunterladen und das tar.gz file entpacken
wget http://download.redis.io/releases/redis-stable-version.tar.gz
tar -xvzf redis-stable-version.tar.gz -C /opt/
cd /opt/redis-stable-version/
make

Da der Cluster aus 6 Nodes bestehen muss (minimal), laufen auf jedem Node ein Master-Prozess und ein Slave-Prozess, deshalb sollte man ein Verzeichnis Cluster anlegen in dem dann eine master.conf und slave.conf liegt, die unterschiedlich konfiguriert sind.
zum Beispiel:
master.conf Node 1:
port 7000
logfile /var/log/redis/redis-master.log
bind 192.168.33.50
cluster-enabled yes
cluster-config-file nodes-master.conf
cluster-node-timeout 5000
appendonly yes
----
slave.conf Node 1:
port 7001
logfile /var/log/redis/redis-slave.log
bind 192.168.33.50
cluster-enabled yes
cluster-config-file nodes-slave.conf
cluster-node-timeout 5000
appendonly yes

Zur Erklärung: Ich habe jetzt den Master-Prozess Ports immer auf eine gerade Zahl gelegt (7000, 7002, 7004)
und die Slaves auf (7001, 7003, 7005). Die bind IP-Adresse ist auch wichtig auf dem jeweiligen Node zu binden.
Die Angabe von der nodes-master.conf / nodes-slave.conf ist dafür, damit hier der Status der Master/Slave Nodes hinein geschrieben werden
und diese Dateien werden beim Start automatisch erstellt.

z.B Node 3:
~# cat /opt/redis-5.0.7/cluster/master.conf
port 7004
logfile /var/log/redis/redis-master.log
bind 192.168.33.52
cluster-enabled yes
cluster-config-file nodes-master.conf
cluster-node-timeout 5000
appendonly yes

Die Nodes werden alle 3 so mit Konfigurationsdateien erstellt damit später der Cluster gebaut werden kann.

Starten der Prozesse auf den drei Nodes:
cd /opt/redis-stable-version/cluster && ../src/redis-server ./master.conf &
../src/redis-server ./slave.conf &
pgrep -a redis-server
# pgrep -fl redis-server
1988 redis-server
1992 redis-server

Bevor wir den Cluster zusammenhängen sollte man auf jedem Node prüfen, ob beide redis-server Prozesse laufen, siehe pgrep Kommando.

Cluster zusammenhängen:
Auf dem ersten Master-Node wird das redis-cli Kommando ausgeführt:
~# redis-cli --cluster create 192.168.33.50:7000 192.168.33.50:7001 192.168.33.51:7002 192.168.33.51:7003 192.168.33.52:7004 192.168.33.52:7005 --cluster-replicas 1
Wie man am Kommando erkennen kann, werden hier alle Master / Slave-Nodes mit ihrem Port zum einem Cluster verbunden –cluster-replicas 1 bedeutet, das zu jedem Master Node ein Slave konfiguriert ist.
Man muss die erstellte Konfiguration noch mit “yes” bestätigen und anschließend sollte man folgenden Output erhalten:
[OK] All 16384 slots covered
Jetzt kann man per redis-cli mit dem Cluster kommunizieren, Werte setzen, Statis abfragen usw, in der Online-Dokumentation von Redis sind einige Bespiele vermerkt.
So, hat man einen lauffähigen Redis-Cluster am Start, es besteht auch ein fertiges Bash-Skript womit man einen fertigen Redis-Cluster auf einem Node starten kann, dieses ist unter dem Verzeichnis ‘/redis-stable-version/utils/’ zu finden und als Schnelltest verwendet werden kann.

Das soll es fürs erste mal reichen und ich wünsch euch viel Spaß mit eurem ersten Redis Cluster. Natürlich möchte ich auch hier wieder auf unser Trainingsangebot im OpenSource aufmerksam machen, ihr wisst “Training = “Wissen”, immer fleißig weiterbilden 🙂

Johannes Carraro
Johannes Carraro
Senior Systems Engineer

Bevor Johannes bei NETWAYS anheuerte war er knapp drei Jahre als Systemadministrator in Ansbach tätig. Seit Februar 2016 verstärkt er nun unser Managed Services Team als Systems Engineer. In seiner Freizeit spielt Johannes E-Gitarre in einer Metalband, bastelt an Linux Systemen zuhause herum und ertüchtigt sich beim Tischtennisspielen im Verein, bzw. Mountainbiken, Inlinern und nicht zuletzt Skifahren.

Text-Utils unter Linux – Wer kennt sie?

Bei aller Automatisierung, Systemmanagement oder Cloud und Log-Management  ist oben genannte Frage berechtigt.
Ich persönlich, stelle als Support-Engineer immer wieder fest, wie wichtig das eine oder andere Text-Util von Linux auf der Kommandozeile ist, deswegen möchte ich hier mal ein paar  Text-Utils und Anwendung vorstellen:

cat & split
Erklärung: Hier wird eine 100MB große Datei angelegt, die in 14MB große einzelne Dateien zerlegt wird und danach wieder zusammengefügt wird.
dd if=/dev/urandom of=test1.big count=100 bs=1M
split -b14m test1.big
cat x?? > test2.big
md5sum test.big test2.big

tac
Erklärung: Hier wird einen Liste der letzten installierten Pakete ausgeben und anschließend herumgedreht, damit das letzte installierte Paket unten in der Liste steht.
rpm -qa --last | tac

cut
Erklärung: Hier werden die ersten 25 Bytes aus Logfile messages vom Seiten-Anfang herausgeschnitten, setzt man das Minus vor die Zahl wird alles nach den 25 Byte herausgeschnitten
cut -b25- /var/log/messages | sort

cut & paste
Erklärung: Ausschneiden von Textausschnitte aus einer Datei, in einzelne Dateien kopiert und dann wieder zusammen in eine Datei zusammengeführt.
cut -d: -f1-3 /etc/passwd > spalte1-3
cut -d: -f4- /etc/passwd > spalte4-7

Wieder  zusammensetzen
paste -d: spalte1-3 spalte4-7

sort mit du
Erklärung: Hier wird mit du (disk usage) die Größe der Verzeichnisse ausgegeben und sortiert
du -mx / | sort -n
Hier ist der Beitrag Disk Usage (du) von mir, wenn jemand das Tool noch nicht kennen sollte.
Noch ein Beispiel:
sort -t : -k 3n /etc/passwd
Erklärung: Hier werden die User in der passwd nach der id sortiert aufsteigend sortiert, Trenner ist der Doppelpunkt.

column
Erklärung: Hier werden die IP-Routen schön in Spalten angezeigt um die Lesbarkeit zu verbessern.
ip r s | column -t

pr
Erklärung: Hier wird die Ausgabe des Textes zur besseren Lesbarkeit oder zum Ausdrucken aufbereitet und mit Seitenzahl angezeigt
wget -q -O - www.gnu.org/licenses/gpl-3.0.txt | pr | less

Alle Text-Utils können noch mehr, dazu bitte die Man-Pages zu Gemüte ziehen, oder vielleicht unsere Linux-Schulung im Bereich Trainings buchen.

In diesem Sinne Viel Spaß beim ausprobieren!

Johannes Carraro
Johannes Carraro
Senior Systems Engineer

Bevor Johannes bei NETWAYS anheuerte war er knapp drei Jahre als Systemadministrator in Ansbach tätig. Seit Februar 2016 verstärkt er nun unser Managed Services Team als Systems Engineer. In seiner Freizeit spielt Johannes E-Gitarre in einer Metalband, bastelt an Linux Systemen zuhause herum und ertüchtigt sich beim Tischtennisspielen im Verein, bzw. Mountainbiken, Inlinern und nicht zuletzt Skifahren.

Trainings

Web Services

Events