GSequencer

Aus MARJORIE-WIKI
Wechseln zu: Navigation, Suche

GSequencer ist eine Anwendung mit der man Notation (Musik) erstellen, aufnehmen und wiedergeben kann. Zum Erstellen von Noten gibt es zwei verschiedene Modi, der eine mit fixer, der andere mit variierender Länge. Aufnehmen von Noten ist mittles MIDI (Musical Instrument Digital Interface) möglich. Zur Wiedergabe verwendet es eine Baumstruktur, um die verschieden Module abzuarbeiten. Diese werden in einer Art Baukastensystem hinzugefügt und müssen miteinander vernetzt werden. Dafür gibt es im Menü der entsprechenden Maschine, einen Eigenschaftendialog. Es beinhaltet zu dem einen Automationseditor, mit dem die Ports von Audio-Verarbeitungseinheiten gesteuert werden können.

GSequencer
Advanced Gtk+ Sequencer Logo
Maintainer Joël Krähemann
Aktuelle Version 1.4.35
(9. August 2018)
Betriebssystem Linux, FreeBSD, Apple
Programmier­sprache C
Kategorie Sequenzer (Musik)
Lizenz GPLv3
http://nongnu.org/gsequencer

Advanced Gtk+ Sequencer ist der generische Name des Audio-Sequenzer Framework, das aus dem GSequencer Programmcode geformt wurde. Ursprünglich für GNU/Linux entwickelt und dessen Eingabe und Ausgabe Bibliothek ALSA (Advanced Linux Sound Architecture). Mittlerweile enthält es Ausgabe-Schnittstellen für OSS4 (Open Sound System), JACK (Jack Audio Connection Kit), Pulseaudio und Core-Audio.

Folgende Programmbibliotheken wurden von GSequencer abgeleitet:

  • libags.so
  • libags_thread.so
  • libags_server.so
  • libags_audio.so
  • libags_gui.so
  • libgsequencer.so

Die Bibliotheken sind in einer Objekt-Orientierten Art (Objektorientierte Programmierung) geschrieben. Dabei baut es auf dem GObject-Typsystem auf und vererbt vorwiegend von GObject als auch von bereitgestellten Schnittstellen (Interfaces). Die private Bibliothek enthält diverse Composite Widgets.

GSequencer[Bearbeiten]

GSequencer folgt einem modularem Aufbau, wobei man die Audio-Kanäle oder Anzahl von Bündel während der Laufzeit ändern kann. Zudem lassen sich Effektprozessoren-Plugins zu gewünschten Kanälen hinzufügen. Unterstützte offene Pluginformate sind LADSPA (Linux Audio Developer's Simple Plugin API), DSSI (Disposable Soft Synth Interface) und LV2 (LADSPA Version 2). Für Synthesizer-Plugins steht der Notationseditor zur Bearbeitung bereit.

Es verwirklicht Multi-Channel Editing strikt. So auch für den Notations- und Automationseditor, die das mittels Tabs realisieren.

Die gesamte Anwendung lässt sich mit der Tastatur steuern und implementiert ATK-Schnittstellen (Accessibility Toolkit).

Panel Senke[Bearbeiten]

Das Panel ist mit der zugewiesene Senke beschriftet und die Audio-Kanäle kann man invasiv Stumm schalten.

Mixer[Bearbeiten]

Das Mischpult bündelt AgsRecycling den verschachtelte Baum wiederverwendend. Es erzeugt selbst keine Audio-Daten.

Drum und Matrix Schrittsequenzer[Bearbeiten]

Wiederkehrende Muster von Tonfolgen können mit den Schrittsequenzern bearbeitet werden. Auf den Fokus eines eingeschaltetes Feld folgt ein akkustisches Feedback. Die Notation kann kopiert und in den Notationseditor eingefügt werden.

Synth[Bearbeiten]

Der dynamische Soft-Synth kann übliche Wellenforme erzeugen und sie in der Phase verschieben. Die Anzahl von Oscillatoren hängt von Eingangskanäle ab.

Free File Player[Bearbeiten]

Die freie Datei Abspiel Maschine kann Soundfont2 Presets und Instrumente öffnen. Wird zum wiedergeben von Notation verwendet.

LADSPA, DSSI und LV2 Plugins[Bearbeiten]

Plugins werden als Effekt-Bridge bereitgestellt oder können zum Eingang- oder Ausgang-Kanal zugewiesen werden.

Notation erstellen und bearbeiten[Bearbeiten]

Es beinhaltet einen integrierten Notations- und Patterneditor, welche Copy & Paste unterstützen. Es gibt ein Positions-, Erstell-, Lösch, Selektionier- und Invertierwerkzeug. Zum bearbeiten kann ebenfalls die Tastatur verwendet werden. Man erhält ein akkustisches Feedback der Note in erstellter länge, die sich unter dem Cursor (Positionswerkzeug) befindet. Der Cursor bewegt sich fort nachdem Notation eingefügt wurde.

Notation aufnehmen[Bearbeiten]

Notation kann man unmittelbar nach start der Engine aufnehmen, die gespielte Taste wird zugleich wiedergegeben und im Editor eingefügt. Voraussetzungen dafür sind ein Softsynth mit zugewiesenem Hardware-Sequenzer erstellt zu haben. Damit die Noten vom MIDI Instrument live wiedergegeben werden, muss eine Senke vorhanden und vernetzt sein.

Notation wiedergeben[Bearbeiten]

Netzwerke von Drum-, Matrix-Sequenzer, Soundfont2-Spieler, Softsynth, optionalem Mixer und Ausgabe Panel zu erstellen, sind die Grundlagen für das Wiedergeben von Notation. Die Quellen von Audio-Daten müssen einer Senke zugewiesen werden. Der Notationseditor unterstützt Schleifen von Sequenzen, genau so wie die Schrittsequenzer.

Automation von Steuerports[Bearbeiten]

Der Automationseditor (Automation) dient zum automatisieren von Ports. Es sind die selben Werkzeuge vorhanden wie im Notationseditor, jedoch ohne Invertierwerkzeug. Man muss die Ports zur Automation hinzufügen, weil sie sonst abgseschaltet sind. Die Regler-Widgets werden nicht angepasst, nur der Port auf dem Audio-Layer wird verändert.

Audio-Daten exportieren[Bearbeiten]

Das GSequencer Projekt kann in folgende Formate live exportiert werden: WAV, FLAC und OGG-Vorbis.

midi2xml[Bearbeiten]

Ein weiteres Programm das mit GSequencer paketiert wird, ist midi2xml. Das vorwiegend von dem MIDI Parser in libags_audio.so vorhanden ist, abhängt. Es dient zur Konvertierung von MIDI Dateien (Standard MIDI File) zu XML (Extensible Markup Language). Diese XML Dateien könnnen mittels XSL (Extensible Stylesheet Language) zu GSequencer Projektdateien umgewandelt werden.

libags, libags_thread und libags_server[Bearbeiten]

Diese Bibliotheken beinhalten den AgsApplicationContext und AgsThreadApplicationContext, welche die Grundlage für weitere Kontizen bilden. Funktionalität wird mittels Schnittstellen hinzugefügt und abgerufen. Diese lösen übliche Probleme, Parallelismus mittels AgsThread und Synchronisation von Chaos auf das ::clock Signal, als auch mit dem AgsMainLoop Interface.

Der Multi-Threaded Baum wird 1000 mal pro Sekunde synchronisiert, wobei das AgsMainLoop Interface vom Toplevel-Thread implementiert wird und den Takt angibt. Der bereitgestellte Thread-Pool garantiert schnell verfügbare Threads. Aufgaben könne mit dem Task-Thread asynchron und exklusiv zu den vorgegeben Tics verarbeitet werden. Pollen ist innerhalb der Taktgeschwindigkeit möglich.

Persistierung (Persistenz) kann mittels XML und XPath gelöst werden, wofür das AgsFile Objekt geschaffen ist.

Der optionale XMLRPC-Server gilt es aktuell noch zu implementieren. AgsServerApplicationContext und die zu implementierende Schnittstelle AgsServiceProvider bieten dazu das Grundgerüst. Die Entwicklung findet im Git Branch 1.0 statt.

libags_audio[Bearbeiten]

Es beinhaltet die Sequenzer- und Soundkarte-Schnittstelle für die Audio-Baumstruktur, geformt durch AgsAudio, AgsChannel, AgsRecycling und AgsAudioSignal.

Advanced Gtk+ Sequencer unterscheidet zwischen 3 Geltungsbereichen für paralleles Verarbeiten (Nebenläufigkeit) der Baumstruktur: Playback, Sequencer und Notation. Wobei es für jene jeweils eine AgsRecallID für Toplevel- oder Tiefe-Rekursion gibt, die den AgsRecyclingContext bilden. Die AgsRecallID unterscheidet dies, um eine verfeinerte Kontrolle über die Rekursion zu erhalten. Audio-Daten werden wiederverwertet, daher die verschachtelte AgsRecycling Baumstruktur.

AgsRecall das Grundlage Objekt für Effect-Prozessoren, gibt es für die verschiedenen Verschachtelungsebenen:

  • AgsRecallAudio
  • AgsRecallChannel
  • AgsRecallRecycling

Mit entsprechenden Kontext für verarbeitende Aufrufe:

  • AgsRecallAudioRun
  • AgsRecallChannelRun
  • AgsRecallAudioSignal

Das Mapping für das Akkustische-Signal ist immer verarbeitend.

libags_gui[Bearbeiten]

Die GUI (Grafische Benutzeroberfläche) Bibliothek beinhaltet Gtk+-2.0 Widgets, die unabhängig vom Rest des Framework sind und somit ohne zusätzliche Abhängigkeit verwendet werden können. Es beinhaltet Widgets wie:

  • Lineal
  • Kreisregler
  • LED
  • Horizontaler und Vertikaler Indikator
  • Kartesisches Kooridinatensystem

libgsequencer[Bearbeiten]

Ist die private Bibliothek für GSequencer.

Weblinks[Bearbeiten]

Quellenangaben[Bearbeiten]

  • Linux Magazine Issue 214, "Advanced GTK+ Streamer" (Seite 93), September 2018
  • Linux Format Issue 240, "In Sequence" (Seite 11), Sommer 2018
  Dieser Wikipedia-Artikel wurde, gemäß GFDL, CC-by-sa mit der kompletten History importiert.