# &arts-builder;

## Überblick

Wenn Sie &arts-builder; verwenden wollen, sollten Sie zuerste den Klangserver (&artsd;) starten. Normalerweise ist er bereits gestartet, wenn Sie &kde; 2.1 oder höher verwenden. Ansonsten können Sie ihn in &kcontrol; unter Sound & Multimedia Sound-System zum automatischen Start einrichten.

Wenn Sie &arts; verwenden, startet es kleine Module. &arts-builder; ist ein Werkzeug zur Erstellung neuer Strukturen von kleinen verbundenen Modulen. Sie können die Module einfach innerhalb des Gitters anordnen. Wählen Sie dazu aus dem Menü Module aus und klicken Sie dann irgendwo im grün-grauen Bereich.

Module habe üblicherweise Kanäle (durch die Audiosignale hinein und hinaus gelangen). Um zwei Kanäle zu verbinden, klicken Sie auf den Ersten (dadurch wird er orange) und dann auf den Zweiten. Sie können einen Eingabekanal (auf der oberen Modulseite) nur mit einem Ausgabekanal (auf der unteren Modulseite) verbinden. Wenn Sie einem Kanal einen festen Werte geben wollen (oder einen Kanal trennen wollen) so doppelklicken Sie auf diesen.

## Einführung

### Schritt 1

Starten Sie &arts-builder;.

Um die Ausgabe zu hören, benötigen Sie ein Synth_AMAN_PLAY-Modul. Sie erstellen ein solches Modul, indem Sie Module Synthese SoundIO Synth_AMAN_PLAY auswählen und auf einen freien Platz im Modulbereich klicken. Platzieren Sie das Modul unterhalb der fünften Linie, da wir noch einige Module oberhalb einfügen werden.

Das Modul hat die Parameter `title` und `autoRestoreID` (in der Nähe des linken Kanals) zur Identifikation. Um diese auszufüllen, doppelklicken Sie auf diese Kanäle, wählen Sie konstanter Wert und tippen Sie `tutorial` in das Eingabefeld. Klicken Sie auf OK zur Bestätigung.

Klicken Sie auf Datei Struktur ausführen . Sie hören bisher nichts. Das Abspielmodul benötigt irgendetwas als Eingabe. Wenn Sie der Stille eine Weile gelauscht haben, klicken Sie auf OK und gehen Sie zu Schritt 2

### Schritt 2

Erstellen Sie ein Synth_WAVE_SIN-Modul (im Menü unter Module Synthese Wellenformen ) und fügen Sie dieses Modul oberhalb von Synth_AMAN_PLAY ein (lassen Sie eine Zeile Platz dazwischen).

Wie Sie sehen, produziert dieses Modul eine Ausgabe, erfordert aber eine Position pos als Eingabe. Verbinden Sie zuerst die Ausgabe mit den Lautsprechern. Klicken Sie auf den Kanal out des Synth_WAVE_SIN-Modules und dann auf den Kanal left des Synth_AMAN_PLAY-Modules. Damit sind diese zwei Module verbunden.

Keiner der Oszillatoren in &arts; benötigt eine Frequenz als Eingabe, sondern nur eine Position innerhalb der Welle. Die Position muss zwischen 0 und 1 liegen. Das wird für ein Standard-Synth_WAVE_SIN-Modul auf den Bereich 0 bis 2*Pi umgerechnet. Um eine bestimmte Frequenz zu erzeugen, benötigen Sie ein Synth_FREQUENCY-Modul.

Erstellen Sie ein Synth_FREQUENCY-Modul (unter Module Synthese Oszillation & Modulation ) und verbinden Sie den pos-Ausgang mit dem pos-Eingang des Synth_WAVE_SIN-Modules. Legen Sie den Frequenzeingang des Frequenzgenerators auf den konstanten Wert 440.

Wählen Sie Datei Struktur ausführen. Sie sollten einen Sinuston von 440 Hz in einem von Ihren Lautsprechern hören. Wenn Sie genug zugehört haben, klicken Sie auf OK und gehen Sie zu Schritt 3.

### Schritt 3

Es würde sich besser anhören, wenn der Sinuston aus beiden Lautsprechern zu hören wäre. Verbinden Sie den rechten Eingang von Synth_PLAY auch mit dem Ausgang von Synth_WAVE_SIN.

Erstellen Sie ein Synth_SEQUENCE-Objekt (durch Module Synthese Midi & Sequencing ). Es sollte am oberen Rand platziert werden. Wenn Sie mehr Platz benötigen, können Sie die anderen Module verschieben, indem Sie sie auswählen (um mehrere auszuwählen, verwenden Sie &Shift;) und mit der Maus bewegen.

Nun verbinden Sie den Frequenzausgaben von Synth_SEQUENCE mit dem Frequenzeingang des Synth_FREQUENCY-Moduls. Stellen Sie die Geschwindigkeit der Sequenz auf den konstanten Wert 0.13 (der Geschwindigkeitseingang ist der linke).

Geben Sie nun für den rechten Eingang (Sequenz) von Synth_SEQUENCE als konstanten Wert `A-3;C-4;E-4;C-4` ein. Das legt eine Sequenz fest. Mehr dazu finden Sie im Abschnitt Modulreferenz.

Synth_SEQUENCE benötigt unbedingt eine Sequenz und eine Geschwindigkeit. Ohne diese Angaben wird das Programm vermutlich abstürzen.

Wählen Sie Datei Struktur ausführen . Sie sollten nun eine nette Sequenz hören. Klicken Sie auf OK und gehen Sie zu Schritt 4.

### Schritt 4

Erstellen Sie ein Synth_PSCALE-Modul (durch Module Synthese Hüllkurven ). Trennen Sie den Ausgang der SIN-Welle durch doppelklicken und auswählen von nicht verbunden. Verbinden Sie

1. den SIN-Ausgang mit dem Eingang (inval) von PSCALE

2. Den Ausgang von PSCALE mit dem linken Eingang von AMAN_PLAY

3. den Ausgang von PSCALE mit dem rechten Eingang von AMAN_PLAY

4. den SEQUENCE-Ausgang (pos) mit dem PSCAL-Eingang (pos).

Setzen Sie schließlich den Eingang top von PSCALE auf einen konstanten Wert, z.B. 0.1.

Das funktioniert folgendermaßen: Das Modul Synth_SEQUENCE gibt zusätzliche Informationen über die Position der gerade erklingenden Note, wobei 0 gerade gestartet und 1 beendet bedeutet. Das Modul Synth_PSCALE skaliert die Lautstärke des Audiostroms von 0 (Ruhe) über 1 (Originallautstärke) zurück zu 0 (Ruhe) abhängig von der Position. Die Position, an der die Maximallautstärke erklingen soll, kann als Positionswert (pos) angegeben werden. 0.1 bedeutet, das nach 10% der Note die Lautstärke ihren Maximalwert erreicht und danach der Ausklingvorgang startet.

Wählen Sie Datei Struktur ausführen . Sie sollten nun eine nette Sequenz hören. Klicken Sie auf OK und gehen Sie zu Schritt 4.

### Schritt 5: Daten sollen übertragen werden ;-)

Starten Sie &arts-builder; ein zweites Mal

Erstellen Sie ein Synth_AMAN_PLAY-Modul und benennen Sie es sinnvoll. Erstellen Sie ein Synth_BUS_DOWNLINK-Modul und:

1. benennen Sie den Synth_BUS_DOWNLINK-Bus mit dem Namen Audio (das ist nur ein Name, man könnte auch jeden anderen Name verwenden)

2. Verbinden Sie den linken Ausgang von Synth_BUS_DOWNLINKmit dem linken Eingang von Synth_AMAN_PLAY

3. Verbinden Sie den rechten Ausgang von Synth_BUS_DOWNLINK mit dem rechten Eingang von Synth_AMAN_PLAY

Wenn Sie die Struktur jetzt ausführen, hören Sie noch nichts.

Gehen Sie zurück zur ersten Struktur in der ersten Instanz von &arts-builder; mit dem Synth_WAVE_SIN-Modul und ersetzen Sie das Modul Synth_AMAN_PLAY durch ein Synth_BUS_UPLINK,-Modul und benennen Sie es Audio (oder den Namen, den Sie für die entsprechende Komponente in der zweiten Instanz von &arts-builder; verwendet haben). Um ein Modul zu löschen, wählen Sie es aus und wählen Sie Bearbeiten Löschen aus dem Menü ( oder drücken Sie die Entfernen-Taste).

Wählen Sie Datei Struktur ausführen. Sie hören die Notensequenz wiedergegeben über die Bus-Verbindung.

Wenn Sie herausfinden wollen, wozu eine solche Funktion nützlich ist, klicken Sie auf OK ( in der Instanz, die das Synth_SEQUENCE-Modul enthält, die andere Struktur wird nicht verändert) und gehen Sie zu Schritt 6.

### Schritt 6 Übertragung für Fortgeschrittene

Wählen Sie Datei Struktur umbenennen in der Instanz, die das Synth_SEQUENCE-Modul enthält und benennen Sie die Struktur Anleitung. Bestätigen Sie mit OK.

Wählen Sie Datei Speichern

Starten Sie eine weitere Instanz von &arts-builder; und wählen Sie Datei Öffnen und laden Sie die Struktur Anleitung.

Nun wählen Sie im Menü Datei Struktur ausführen in beiden Instanzen. Sie hören nun die gleiche Struktur zweimal. Abhängig von der Zeitverschiebung wird es mehr oder weniger glücklich klingen.

An dieser Stelle können Sie noch folgendes tun: Starten Sie &noatun; und spielen Sie einige `mp3`-Dateien ab. Starten Sie &artscontrol; und wählen Sie Ansicht Audiomanager anzeigen. Es wird &noatun; und ihre Struktur Anleitung angezeigt. Klicken Sie doppelt auf &noatun;. Daraufhin wird eine Liste der Ausgabegeräte angezeigt. Auch die Struktur wird mit aufgeführt. Sie können die Ausgabe von &noatun; über den Audio-Bus durch ihre Wiedergabestruktur leiten.

### Schritt 7: Midi-Synthese

Jetzt wollen wir den Sinusgenerator in ein wirkliches Musikinstrument verwandeln. Dazu benötigen Sie ein Gerät, das &MIDI;-Ereignisse an &arts; senden kann. Sie können ein externes Keyboard (wie im folgenden beschrieben wird) aber auch einen Sequenzer, der den Midi-bus unterstützt, wie &brahms; verwenden.

Beenden Sie zuerst alle überflüssigen Instanzen von &arts-builder;. Sie benötigen lediglich die Instanz mit dem Sinusgenerator. Wählen Sie dreimal Kanäle Audio-Eingangssignal erstellen und dreimal Kanäle Audio-Ausgangssignal erstellen und platzieren Sie die Module geeignet.

Wählen Sie Kanäle Positionen/Namen ändern und benennen Sie die Kanäle um in frequency(Frequenz), velocity(Lautstärke), pressed(gedrückt), left(links), right(rechts) und done(stopp) um.

Sie können nun das Modul Synth_SEQUENCE löschen und stattdessen den Frequenzeingangskanal mit dem Modul Synth_FREQUENCY-Eingang verbinden. Was soll nun mit dem pos-Eingang passieren?

Dieser Eingang bleibt unbesetzt, da es keinen Algorithmus der Welt gibt, der vorausberechnen kann, wann ein Spieler die Taste des Keyboards, die er gerade gedrückt hat, wieder loslassen wird. Daher haben wir nur einen Parameter gedrückt stattdessen, der anzeigt, ob der Spieler die Taste noch gedrückt hält (gedrückt=1: Taste immer noch heruntergehalten; gedrückt=0: Taste losgelassen)

Das Synth_PSCALE-Objekt muss nun auch ersetzt werden. Ersetzen Sie es durch ein Synth_ENVELOPE_ADSR-Modul (durch Module Synthese Hüllkurven). Verbinden Sie:

1. den Struktureingang mit dem Ausgang active von ADSR

2. den SIN-Ausgang mit dem Eingang (inval) von ADSR

3. den Ausgang (outvalue) von ADSR mit dem linken Strukturausgang

4. den ADSR-Ausgang (outvalue) mit dem rechten Strukturausgang

Setzen Sie die Parameter attack auf 0.1, decay auf 0.2, sustain auf 0.7 und release auf 0.1.

Weiterhin müssen wir daran denken, das die Instrumentenstruktur wissen muss, wenn der Spieler mit spielen fertig ist, da sonst der letzte Klang nicht beendet wird, auch wenn die letzte Taste losgelassen worden ist. Glücklicherweise weiß die ADSR-Hüllkurve (envelope), wann nichs mehr zu hören ist, da das Signal nach dem Loslassen der letzten Taste irgendwann auf Null reduziert wird.

Das wird erreicht, indem der Ausgang done auf 1 gesetzt wird. Verbinden Sie diesen Ausgang mit dem Ausgangskanal stopp. Damit wird die Struktur beendet, sobald dieser Ausgang auf 1 wechselt.

Benennen Sie die Struktur in Instrument_Anleitung um (durch Datei Struktur umbenennen). Speichern Sie die Struktur nun (der vorgegebene Name sollte jetzt Instrument_Anleitung sein).

Starten Sie nun artscontrol, wählen Sie Ansicht Midi-Manager und wählen SieHinzufügen aRts-Synthese Midi-Ausgabe. Hier sollten Sie in der Lage sein, ihr Instrument (Anleitung) auszuwählen.

Wenn Sie jetzt ein Terminal öffnen und ``midisend`` eintippen, sollte `midisend` und das Instrument im &arts; &MIDI;-Manager angezeigt werden. Wählen Sie beides aus und klicken Sie auf Verbinden. Damit sind die Vorbereitungen abgeschlossen. Nehmen Sie nun ihr Keyboard und beginnen Sie zu spielen (selbstverständlich nachdem Sie es mit dem Computer verbunden haben).

### Hinweise

Sie sind nun in der Lage, &arts; zu verwenden. Hier sind noch einige Tipps, die den Umgang mit Strukturen verbessern können:

- Versuchen Sie andere Module anstelle von SIN. Wenn Sie eine TRI-Wellenform verwenden, werden Sie vermutlich feststellen, das diese Wellenform nicht besonders hübsch klingt. Hängen Sie einen SHELVE_CUTOFF-Filter an das TRI-Modul, um alle Frequenzen oberhalb einer bestimmten Grenzfrequenz (versuchen Sie etwa 1000 Hz oder besser noch die doppelte Eingabefrequenz +200 Hz oder einen ähnlichen Wert).

- Verwenden Sie mehrere Oszillatoren zusammen. Synth_XFADE kann zum kreuzweisen mixen (cross fade) von zwei Signalen verwendet werden, Synth_ADD zum Addieren von zwei Signalen.

- Verstimmen Sie die Oszillatoren geringfügig gegeneinander. Das erzeugt nette Schwebungen.

- Experimentieren Sie mit mehreren Hüllkurven (envelopes) gleichzeitig.

- Stellen Sie Instrumente zusammen, die verschiedene Signale auf den linken und rechten Ausgang legen.

- Verarbeiten Sie das Signal, das aus dem Downlink-Bus kommt, weiter. Sie können für einen Echo-Effekt das ursprüngliche Signal etwas verzögert dazumischen.

- Verwenden Sie die Lautstärkeeinstellung (die Stärke, mit der die Taste gedrückt worden ist). Ein besonderer Effekt entsteht, wenn der Lautstärkewert nicht nur die Ausgabelautstärke sondern auch den Klang des Instrumentes verändert (zum Beispiel die Grenzfrequenz).

- ...

Wenn Sie eine besondere Struktur konstruiert haben, schicken Sie sie an die &arts;-Internetseite. Sie kann dann der nächsten Version beigelegt werden.

## Beispiele

Die Beispiele, mit denen &arts-builder; verteilt wird, können Sie unter Datei Beispiel öffnen ... finden. Einige befinden sich im angezeigten Verzeichnis, einige (die in der aktuellen Version aus irgendwelchen Gründen nicht funktionieren) befinden sich im todo-Verzeichnis.

Die Beispiele können in mehrere Kategorien eingeteilt werden:

- Modulbeispiele demonstrieren jeweils eines der in arts enthaltenen Modules (`example_*.arts` benannt). Sie senden üblicherweise irgendwelche Ausgaben an die Soundkarte.

- Instrumente (mit Namen `instrument_*.arts`) sind aus den grundlegenden arts-Modulen zusammengesetzt. Sie haben standardisierte Ein- und Ausgabekanäle, so dass sie mit dem &MIDI;-Manager aus &artscontrol; verwendet werden können.

- Vorlagen ( mit Namen `template_*.arts`) zur Erstellung neuer Module.

- Effekte (mit Namen `effect_*.arts`) können als Bausteine verwendet werden [momentan alle im todo-Verzeichnis]

- Mixer-Elemente (mit Namen `mixer_element_*.arts`) können zur Erstellung von Mixern mit graphischen Kontrollelementen verwendet werden [momentan alle im todo-Verzeichnis ]

- Verschiedene Module, die in keine der angegebenen Kategorien passen.

## Detailierte Beschreibung der einzelnen Module:

`example_stereo_beep.arts`

- Sendet einen 440Hz-Sinuston an den linken und einen 880Hz-Sinuston an den rechten Kanal der Soundkarte. Dieses Modul wird in der &arts;-Dokumentation erwähnt.

`example_sine.arts`

- Erzeugt einen 440Hz-Sinuston.

`example_pulse.arts`

- Erzeugt einen 440Hz-Impulston mit 20%-Arbeitswiederholung (duty cycle).

`example_softsaw.arts`

- Erzeugt eine 440Hz-Sägezahnschwingung.

`example_square.arts`

- Erzeugt eine 440Hz-Rechteckschwingung.

`example_tri.arts`

- Erzeugt eine 440Hz-Dreieckschwingung.

`example_noise.arts`

- Erzeugt weißen Lärm.

`example_dtmf1.arts`

- Erzeugt einen Doppelton aus einer 697Hz- und 1209Hz-Sinusschwingung, die mit 0.5 skaliert und addiert werden. Es entsteht der DTMF-Ton für die Ziffer "1" einer Telefontastatur.

`example_atan_saturate.arts`

- Eine Dreieckschwingung wird mit einem atan-Sättigungsfilter verändert.

`example_autopanner.arts`

- Verwendet ein Autopan-Modul, um einen 400Hz-Sinuston mit einer Frequenz von 2 Hz zwischen dem linken und rechten Lautsprecher hin- und herzubewegen.

`example_brickwall.arts`

- Skaliert eine Sinusschwingung mit dem Faktor 5 und verändert sie mit einem brickwall-Begrenzer.

`example_bus.arts`

- Vom Bus mit dem Namen Bus wird zum Bus out_soundcard eine Verbindung mit vertauschten Kanälen hergestellt.

`example_cdelay.arts`

- Verbindet von einem Bus namens Delay zum rechten Ausgangskanal mit einer Verzögerung von 0.5 Sekunden (cdelay), während der linke Kanal unverändert bleibt. Mit &artscontrol; können Sie diesen Effekt mit einem Abspieler verbinden. Das Resultat ist hörenswert.

`example_delay.arts`

- Das gleiche Beispiel wie `example_cdelay.arts`, mit dem Unterschied, dass der delay-Effekt anstelle von cdelay verwendet wird.

`example_capture_wav.arts`

- Mit dem Modul Synth_CAPTURE_WAV wird ein 400Hz-Sinuston als wav-Datei gespeichert. Lassen Sie das Modul für 2 Sekunden laufen und untersuchen Sie die in `/tmp` erzeugte Datei. Sie können Sie mit einem Spieler wie kaiman abspielen.

`example_data.arts`

- Mit einem Data-Modul wird ein konstanter Strom mit dem Wert 3 erzeugt und für die periodische Anzeige an ein Debug-Modul gesendet. Das Beispiel enthält weiterhin ein Nil-Modul, das demonstriert, wie man eine Struktur erzeugt, die gar nichts tut.

`example_adsr.arts`

- Demonstriert, wie man mit dem Envelope-Adsr-Modul einen einfachen Instrumentenklang erzeugt, der durch eine Rechteckschwingung geschaltet wird.

`example_fm.arts`

- Ein FM-Quellmodul erzeugt einen 440Hz-Sinuston, der dann mit 5 Hz frequenzmoduliert wird.

`example_freeverb.arts`

- Verbindet den Freeverb-Effekt von einem Bus downlink zu einem Bus outlink. Sie können mit artscontrol diesen Effekt mit einem Spieler verbinden und sich das Resultat anhören.

`example_flanger.arts`

- Implementiert einen einfachen Flanger-Effekt (scheint bisher nicht zu funktionieren).

`example_moog.arts`

- Diese Struktur kombiniert zwei Kanäle von einem Bus, schickt das Signal durch einen Moog-VCF-Filter und das Ergebnis auf den out_soundcard-Bus.

`example_pitch_shift.arts`

- Diese Struktur schickt den linken Kanal von Soundkartendaten durch einen Höhenverschiebungseffekt (pitch shift). Mit dem Speed-Parameter kann der Effekt modifiziert werden.

`example_rc.arts`

- Diese Struktur sendet weißen Lärm durch einen RC-Filter und dann an die Soundkarte. Betrachten Sie das Ergebnis in der FFT-Anzeige von artscontrol, um den Unterschied zu ungefiltertem Lärm zu sehen.

`example_sequence.arts`

- Demonstriert die Verwendung des Sequencer-Moduls durch das Abspielen einer Notensequenz.

`example_shelve_cutoff.arts`

- Diese Struktur schickt weißen Lärm durch einen Shelve-Cutoff-Filter und dann an die Soundkarte. Das Ergebnis können Sie in der FFT-Anzeige von artscontrol betrachten.

`example_equalizer.arts`

- Demonstriert das Std_Equalizer-Modul. Es hebt die Höhen und Tiefen um 6dB an.

`example_tremolo.arts`

- Demonstriert den Tremolo-Effekt. Der rechte und linke Kanal werden mit einem 10Hz-Tremolo moduliert.

`example_xfade.arts`

- Dieses Beispiel mixt einen 440Hz- und einen 880Hz-Sinuston mit einem "cross fader". Verändern Sie die Prozentanzeige von -1 bis 1, um die Mischung der zwei Signale zu beeinflussen.

`example_pscale.arts`

- Demonstriert das Pscale-Modul (ich zweifle, dass dieses Beipiel aussagekräftig ist).

`example_play_wav.arts`

- Illustriert das Play_Wave-Modul. Sie müssen den kompletten Pfad zur `wav`-Datei als Parameter filename angeben.

example_multi_add.arts

- Zeigt, wie das Multi_Add-Modul eine beliebige Anzahl Eingangssignale aufsummiert. Drei Eingänge mit den Werten 1,2 und 3 erzeugen den Ausgangswert 6.