Abstract
Während Linux in verschiedenen Bereichen Desktopsoftware hervorbringt, die von
vielen Endusern produktiv eingesetzt wird, ist dies bei Musiksoftware zur
Zeit eher nicht der Fall. Fast alle kommerziell und nichtkommerziell gemachte
Musik wird entweder ohne Softwareunterstützung oder mit proprietärer Software
erstellt.
BEAST versucht, diesen Zustand im Bereich der Musiksynthese zu verbessern. Da
praktisch alles, was man mit Hardwaregeräten machen kann mittlerweile in Echtzeit
auf einem normalen PC berechenbar ist, ist es nur eine Frage einer geeigneten
Implementation, um auch mit freier Software professionell Musik produzieren zu
können. Bei der Entwicklung von BEAST galt es daher, mehrere Entwurfsziele zu beachten. So wurden sehr hohe Maßstäbe an die mathematischen Eigenschaften der Synthese gestellt, und neben einer durchgängigen Signalverarbeitung auf 32-Bit-Basis im gesamten Programm fand auch konsequente Echtzeitfähigkeit in allen Aspekten der Implementation Berücksichtigung. In die Synthesearchitektur eingeplant wurde ebenfalls die Skalierbarkeit auf mehrere Prozessoren. Ein weiteres Designziel ist die Interoperabilität, was zum Beispiel heißt, daß der Synthesekern von anderen Anwendungen (beispielsweise freien Sequencern wie Rosegarden) genutzt werden kann, aber auch aus Programmiersprachen wie Scheme angesteuert werden kann. Außerdem wurde beim Entwurf aller Komponenten ein sehr grosser Wert auf die grafische Oberfläche gelegt um einfache und nach Möglichkeit intuitive Bedienung zu erlauben. So gerüstet sollte BEAST in die Lage kommen die Zielsetzung, mit proprietären Produkten wie Native Instruments Reaktor, Propellerheads Reason und der Cubase/VST Technologie zu konkurrieren, und diese dank offener Entwicklung zu überholen. Ein Überblick über BEAST und BSE
BEAST ist ein graphisches Frontend zu BSE, einem Synthese- und Sequenzingkern,
der in eine extra Bibliothek ausgelagert ist. Beides wird seit mehreren Jahren
als Freie Software entwickelt und unter der GPL freigegeben.
Seit der ersten öffentlichen Release Ende 1999, sind bereits einige Teile
wieder ausgelagert und in andere Projekte integriert wurden, wie zum
Beispiel das BSE Objektsystem, daß als GObject in GLib Einzug fand.
Der Funktionsumfang von BSE ist von einem Gluelayer ummantelt, das
verschiedene Sprachanbindungen ermöglicht. Zur Zeit existieren ein C Interface
zu BSE, benutzt zur Implementation von BEAST, sowie ein Scheme Interface auf
dem basierend eine Schemeshell BSESH implementiert wurde. Weitere
Sprachanbindungen (C++, C#) sind zur Zeit in der Planungsphase. BEAST ermöglicht flexible Klangsynthese und Liedkomposition unter Benutzung von Syntheseinstrumenten oder Audiosamples. Zum Abspeichern von Liedern und Syntheseeinstellungen wird das BSE Dateiformat benutzt, welches volle Integration von Audiosamples, Syntheseinstrumenten und Sequenzinginformationen bietet, ähnlich dem Funktionsumfang bekannter Trackerformate wie z.B. MOD oder S3M. Im Audiosamplebereich existiert Unterstützung für die Formate MP3, WAV, OGG/VORBIS und BSEWAVE. Letzteres ist ein hybrides Text-/Binärformat zum Erstellen von Multisamples mit Loopinformationen. Verschiedene Werkezeuge zum Erstellen und Bearbeiten von BSEWAVE Dateien sind im Moment in der Fertigstellung um mit den nächsten BEAST Versionen zusammen freigegeben zu werden. ![]() An der BEAST Oberfläche können mehrere Audioprojekte zur gleichen Zeit bearbeitet werden, und es gibt unbegrenzte Undo/Redo Funktionen für alle Editiermöglichkeiten. Zum einfachen Ausprobieren und interaktivem Verändern der Synthesefunktionen wird MIDI-Eingabe in Echtzeit unterstützt, die es ermöglicht BEAST direkt als MIDI Synthesizer nutzen zu können. Die eigentliche Soundberechnung erfolgt 32-Bittig im Fließkommaformat und wird asynchron zum Hauptprogram ausgeführt. Die Architektur ist darauf ausgelegt, Synthesemodule auf mehrere Prozessoren verteilen zu können, sofern Multiprozessormaschinen zur Verfügung stehen und der Kernel eine Prozessorbindung zu läßt. Die Samplingrate ist frei einstellbar und wird nur durch die Ein-/Ausgabemöglichkeiten des Kernelsoundtreibers limitiert. Parallel zur Audioausgabe durch eine Soundkarte, kann auch ein Mitschnitt des generierten Audiomaterials in eine WAV Datei erfolgen. Da sämtliche Editierfunktionen des Audiokerns ebenfalls in Scheme verfügbar sind, ist über ein Registriersystem die Möglichkeit gegeben, durch Scripte den Funktionsumfang von BEAST zu erweitern, oder komplizierte Vorgänge vollständig zu automatisieren. Hier hat das Script-Fu Plugin von Gimp Pate gestanden. Erstellen von Liedern
Lieder sind in BEAST in Spuren (Tracks) unterteilt, wobei jeder Spur ein
Instrument zugeordnet ist und eine Spur mehrere Parts enthält. Ein Part
bestimmt die Noten die in einem bestimmten zeitlichen Abschnitt gespielt
werden.
Als Instrument sind innerhalb der Spuren entweder Syntheseinstrumente
oder AudioSamples verwendbar. Syntheseinstrumente sind Teil des selben
Projekts und müßen separat erstellt werden.
Zur Nachbearbeitung von Liedern oder einzelnen Spuren, können sogenannte
"Postprocessing" Synthesizer angegeben werden, um beispielsweise den
Klang zu komprimieren oder einzelne Spuren zu verhallen. ![]() Die einzelnen Parts werden in der zoombaren Spuransicht ebenfalls per Drag-and-Drop zugeordnet und erlauben Verknüpfungen, um einen Part in verschiedenen Spuren mehrmals verwenden zu können. Um die klangliche Editierung zu erleichtern, können Spuren einzeln an und abgeschaltet und mit Kommentaren versehen werden. Syntheseeigenschaften
Die Synthesemöglichkeiten der Standard BEAST Distribution in der 0.5er
Version entsprechen in etwa dem Funktionsumfang die einfache Modulare
Synthesizer anbieten, am Umfang der Synthesemodule und an der Qualität
einzelner Module wird allerdings ständig weiterentwickelt. Als Audioquellen stehen zur Zeit ein analoger Oszillator, ein Waveoszillator zum Abspielen von Audiosamples, ein Noisemodul, eine Orgel und ein Gitarrensaitenmodul zur Verfügung. Fürs Routing gibt es Module wie Addierer, Multiplizierer, Mixer, Konstantwerte, ADSR Hüllkurve und einen Minisequenzer. Im Effektbereich stehen mehrere rekursive Filter, ein Reverb und ein Distortionmodul zur Verfügung. Darüberhinaus giebt es noch verschiedene Verbindungsmodule, zum Beispiel für die Instrumenten Ein- und Ausgabe, sowie MIDI Eingabe und Verbinden von ganzen Synthese Netzwerken. Außer den Synthesemodulen der Standarddistribution wird auch die Verwendung von LADSPA-Modulen (www.ladspa.org) unterstützt, die Beschränktheit der Informationen zu LADSPA-Modulparametern verhindert allerdings eine nahtlose Eingliederung in die BEAST Oberfläche. Die Module sind im Allgemeinen aliasingfrei implementiert, und hoch laufzeitoptimiert um konsequente Echtzeitfähigkeit zu ermöglichen. Pro Modul gibt es mehrere Eigenschaften (Phase beim Oszillator, Finetune zu Frequenzeingängen in Centschritten u.a.) die verändert werden können um das Syntheseverhalten zu beeinflußen. Ein Großteil der veränderlichen Parameter sind als separate Ein-/Ausgänge an den Modulen ausgeführt, um größtmögliche Flexibilität bei der Erstellung von Synthesenetzwerken zu erlauben. BEAST macht hier prinzipiell keinen Unterschied zwischen Kontroll- und Audiokanälen, vielmehr ergibt sich die Funktion eines Signals als Audio- oder Kontrollsignal aus der Benutzerdefinierten Verwendung. ![]() Sowohl zum Abspielen von Liedern, als auch für die MIDI gesteuerte Synthese werden an der Oberfläche die maximale Anzahl von abspielbaren Stimmen angegeben. Ein Erhöhen der Anzahl abspielbarer Stimmen führt aber nicht zwingend zu einer höheren Prozessorlast, die Anzahl setzt nur Grenzwerte innerhalb derer mehrstimmige Synthese abgewickelt wird. Die eigentliche Stimmenvergabe erfolgt zur Laufzeit um die zu einem bestimmten Zeitpunkt auftretende Prozessorlast optimal zu reduzieren. Ermöglicht wird dies durch den asynchronen Synthesekern, welcher einen globalen Plan zur zeitgleichen Berechnung aller Stimmen aufstellt, und an dieser Stelle Verbindungsabhängigkeiten berechnet die ein Verteilen der Synthesemodulberechnungen auf mehrere Prozessoren erlaubt. Die Ausführung einzelner Äste dieses Plans kann mit Sampleratengenauigkeit gestartet und unterbunden werden, wodurch Äste die ungenutzten Stimmen entsprechen nicht ausgeführt werden brauchen. Durch das sampleratengenaue Timing, mit dem das Einsetzen von Noten eines Liedes nicht auf Berechnungsblockgrenzen beschränkt ist, können liedspezifisches Zeitvorgaben bestmöglich eingehalten werden. Benutzerführung und Dokumentation
Wie bei den meisten Audiosynthese- und Sequenzingapplikationen, erfordert
auch BEAST eine gewisse Einarbeitung seitens des Benutzers, die allerdings
durch vorherige Erfahrung mit verwandten Applikation beträchtlich verkürzt
werden kann. Es gibt im momentanen Stadium der BEAST Entwicklung noch kein
umfassendes Manual, allerdings steht ein "Quick Start"-Handbuch zur Verfügung,
das die grundsätzlichen Editierfunktionen erläutert, und die Oberfläche
ist konsequent mit Werkzeugtipps (Tooltips) ausgestattet, die die jeweiligen
Funktionen erläutern. Eine FAQ und einige Designdokumente stehen ebenfalls zur
Verfügung, sowie Dokumentation zur Programmierung der Syntheseschnittstelle
BSE, sowohl für C als auch für Scheme. Zukunftspläne
Auch wenn BEAST bereits in der Lage ist gute Funktionalität zur Liedkomposition
bereitzustellen, so gibt es doch eine lange Liste an Merkmalen die es in BEAST
und BSE noch zu implementieren gilt. Ohne Anspruch auf Vollständigkeit seien
hier einige aufgeführt:
Internetpräsenz
Die Homepage des BEAST Projekts befindet sich auf
http://beast.gtk.org/.
Weitere Kontakte, Links zur Mailingliste u.a. sind unter
http://beast.gtk.org/contact.html zu finden. |
||