H A N D B U C H Z U THE SynthEE V1.0 ---------------------------------------------von ASDX (Andreas Dix) Inhalt: ----------------------------- Einleitung Warum ??..........Kapitel 1 Zum Programm Wie ?.............Kapitel 2 Installation Wohin ?...........Kapitel 2.1 Das Fenster Wo ?..............Kapitel 2.2 Das Menü Womit ?...........Kapitel 2.3 Beispiele&Tips Was ?.............Kapitel 3 Zum Autor Wer ?.............Kapitel 4 1. Warum ?? ----------------------------- Wo bekommt man Sounds her, mit denen man Musikstücke schreiben kann, die ordentlich auf den Putz hauen? Samples sind ganz nützlich, aber eben auch ganz schön verrauscht, und außerdem bringt der beste Sampler nichts, wenn man nichts hat, das man samplen könnte. Auf PD-Disketten gibt es zwar viele Instrumente, aber die sind auch nicht immer das, was man eigentlich wollte und in einer bunten Sammlung passen meist die verschiedenen Instrumente nicht zusammen. Also: Selbermachen! Nur wie? 2. Wie ? -------------------------- Ganz einfach: Mit einem Synthesizer, der viel Möglichkeiten zum Experimentieren bietet und sich gleichzeitig auch übersichtlich und einfach bedienen läßt. Wenn Sie das Programm starten, wird Ihnen sicher sofort auffallen, daß kein Platz für Wellenformen im Programmfenster ist, wohl aber Schalter für 7 Speicher- plätze und für eine Liste der angewandten Operationen (welche dann später mit Hilfe von Blockoperationen bearbeitet werden kann !!!). Bevor Sie das Programm jedoch starten können, ist erst einige Arbeit nötig: 2.1. Wohin ? ------------------------------ Keine Angst, es ist einfacher, als Sie denken. Starten Sie zunächst von Ihrer Workbench- Umgebung aus einen Shell-Prozess (keine Gerichtsverhandlung gegen einen Kraftstoffkonzern, sondern die Befehlsebene des AMIGA-OS, vor der es einigen zu Unrecht graust). Uns muß aber gar nicht Angst und Bange werden, wir schieben die Diskette mit dem Programm in das Laufwerk DF0: und geben einfach in der Shell folgende Zeilen ein: CD DF0: MAKEDIR FONTS:DESIGNED COPY FONTS/DESIGNED/8 TO FONTS:DESIGNED -> Achtung: "FONTS/" und "FONTS:" nicht verwechseln !! ^ ^ COPY FONTS/DESIGNED.FONT TO FONTS: Dadurch wird der Programm-Font ins Verzeichnis "Fonts:" kopiert. Da dieses für "Sys:Fonts/" steht, kann es sein (falls keine Festplatte haben), daß Sie aufgefordert werden, ihre Workbench-Diskette einzulegen und diese schreibungeschützt zu machen. Arbeiten Sie deshalb nur mit einer KOPIE ihrer Workbench-Diskette !! Nun, war's schwer? Nicht, oder? Gut. Also weiter: Nun wieder raus aus der Shell (Nicht der Tankstelle, sondern "EndCli" eingeben) und zurück auf der Workbench können Sie nun noch das Programm mit der Mouse auf die Festplatte in eine kleine gemütliche Schublade ablegen, oder aber gleich direkt von der Diskette starten. Sollte das Programm jetzt nicht starten, könnte das daran liegen, daß in ihrer LIBS:-Schublade folgende Libraries fehlen: - DiskFont.library - MathTrans.library - MathIEEEDoubBas.library - MathIEEEDoubTrans.library Das Fehlen der MathFFP-, Grafics-, Dos- und Intuition-Library ist eher unwahrscheinlich, da diese im ROM liegen (also erst gar nicht suchen !!) Auch daß weder NewCON:, NCO: (für 1.2-Angänger mit Shell-Amibitionen wie mich), noch CON: existiert steht außer Frage. So, nun aber los! 2.2. Wo? -------------------------- Falls Sie das Programm-Icon wieder gefunden haben, klicken Sie es zweimal an. Das Programm check nun einige nötige Werte aus, und baut dann die grafische Oberfläche auf. Falls Sie noch unter 1.2 arbeiten, dann müssen Sie die Frage nach dem Laufwerk "NewCON:" und meist sicher auch nach "NCO:" verneinen. Das macht aber garnichts, denn das Programm nimmt dann einfach den Handler "CON:" für die Tastatureingaben. Ach ja, "NCO:" ist das gleiche wie "NewCON:", aber um mit einem Fileeditor das CLI in die Shell umzumodeln muß der Name 3 Buch- staben lang sein (Gleich wieder vergessen !). Tja, da ist nun ein tolles Fenster auf der Workbench aufgetaucht, (oder auch nicht, siehe 2.1. !) aber WO soll man da am besten zuerst hinklicken? Also, v.l.o.n.r.u. : - "Welle Anzeigen" öffnet (falls nötig) ein neues Fenster, berechnet die Wellenform (noch ein Fenster), und zeigt dann die Wellenform an. Falls Sie so frei sind, jetzt einmal daraufzuklicken und dann vor Schreck umfallen, weil Sie nur Klötze sehen, dann sollten Sie schnell weitermachen, es wird schon noch besser, aber das ist nun mal eine Sinusschwingung in Standart-Amiga-Auflösung. Diesen Knopf habe ich eingebaut, weil man manchmal flüssig arbeiten und nicht von langwierigen Berechnungen gebremst werden möchte. Wenn Sie etwas ändern und die Auswirkungen sehen wollen, müssen Sie einfach nur auf den Knopf klicken und sich in Geduld üben! Im geöffneten Fenster sind aber noch einige andere Angaben vom Progamm gemacht worden. Diese sind: Der Name des Datenspeichers (zum einfachen Wiederfinden), der erste und letzte Wert der Schwingung (in Werten zwischen -100000 und +100000), sowie die effektive Lautstärke der Schwingung (jede Wechselspannung und auch Schwingung habt eine effektive Amplitude, die sich aus dem Mittelwert der Absolutbeträge errechnet; für Musiker ist dies die hörbare Lautstärke, für eine Dreieckschwingung ist z.B. Ieff=50000=0.5 und für eine Rechteckschwingung ist Ieff=100000=1). Hier noch eine kurze Bemerkung zu den Werte-Angaben im Programm. Das Programm arbeitet intern mit einfacher Flieskommagenauigkeit mit Abtastwerten zwischen -1 und +1. Zum einfacheren Verständnis arbeitet die Benutzer-Schnittstelle mit Werten zwischen -100000 und +100000. Für Spätzünder: alle Angaben in "Pro- Hunderttausend". - "Datenfeld_1" ist zwar gut als Name für leere Datenfelder, aber für einen Sound gibt es bessere (z.B. "Kick_Tha_Big_Bad_BassDrum.iff"). Also einen kurzen Klick gewagt (die Taste aber wieder loslassen, sonst passiert garnichts !), und ein freundliches Fenster fragt nach einem neuen Namen. Aber Vorsicht: Romane sind eher ungeeignet, mehr wie 30 Buchstaben nimmt das Programm nicht an! Der Name wird später dann auch vom Filerequester beim Speichern übernommen. - "Sampling-Frequenz". Wer möchte (WER nicht?) darf nach einem Klick auf die alte Sampling-Frequenz (SF) eine neue eingeben. Sie sollte aber in reellen Bereichen liegen, d.h. zwischen 4186 und 100000Hz. Aber Achtung! Die Werte dieser Tabelle sind miteinander verbunden, und eine Änderung der SF, wie der anderen Werte auch, beeinflußt die Länge der Schwingung! - "Frequenz" gibt die Tonhöhe des Sounds an. Sie kann entweder direkt in Hz oder als Note eingegeben werden. Notenwerte werden dreistellig angegeben: 1. c,d,e,f,g,a,h 2. -,#,b 3. d,c,b,a,0,1,2,3 Der letzte Wert gibt die Oktave an. c-0 ist 523Hz, der Amiga-Grundton. Die Frequenz darf zwischen 1 und 20000Hz liegen. Auch eine Änderung der Frequenz beeinflußt die Länge der Schwingung. - "Länge". Die Länge der Schwingung wird in 3 Einheiten angegeben. Zuerst in der Anzahl der Grundschwingungen, d.h. in Vielfachen von der Wellenlänge. Mit meinem Programm ist es damit möglich, Sounds zu erstellen, die über größere Abschnitte als eine Wellenlänge variieren, aber dennoch wellenorientierte Operationen zu ermöglichen. Die Anzahl der Wellen darf zwischen 1 und 256 liegen. Die Anzahl der Wellen multipiziert die Länge des Sounds. Das Programm zeigt auch noch die Länge als Dauer in Sekunden an, dies jedoch nur zur Information, nicht zur Eingabe. Zuletzt bietet sich noch die Möglichkeit, die Länge des Sounds selbst zu ändern. Diese Länge ist in Samplingpoints, also in der Anzahl der Abtastpunkte angegeben. Eine Änderung wirkt sich diesmal auf die Sampling- frequenz aus. Eine Änderung wird zum Beispiel nötig, wenn es durch die gerundete Frequenz zu Fehlern bei den Umrechnungen gibt oder auch sonst ungerade Werte bei der Wellenlänge in Samplingpunkte ergibt. Beim Abspeichern wird dann nämlich der letzte Wert abgeschnitten, was aber nicht vom Programm angezeigt wird, da es vom AMIGA-Soundsystem sowieso gefordert wird. Maximaler Wert ist hier 1000000 und ich hoffe doch, daß dies ausreicht (bzw. ihr Speicher: Es wären 4MB Daten nötig). - "Die Liste". Rechts von Anzeigeknopf und Daten ist die Liste, in der die Funktionen, die auf die Grundschwingung losgelassen werden, angezeigt sind, nebst der Grundschwingung am Kopf der Liste selbst. Grundschwingung kann eine Schwingung sein, die vom Programm erzeugt wird, oder aber auch ein externer Sound (Sample). Diese Liste kann später mit Hilfe von Block- operationen noch editiert werden. Es können auch nachträglich noch andere Oberationen an beliebiger Stelle eingefügt werden. Mit den Pfeilen rechts wird die Liste gescrollt, falls dies nötig sein sollte. Der erste und letzte Pfeil bringen Sie zum Anfang und zum Ende der Liste, die Doppelpfeile scrollen um 10, die einfachen Pfeile um 1 Einträge vor und zurück. Der mittlere Knopf mit dem Quadrat holt den Coursor an die oberste Position im Fenster. - "Die Datenfeld-Speicher" unten im Fenster bieten die Möglichkeit, bis zu 7 Sounds gleichzeitig zu bearbeiten. Dies braucht je nach Werteinstellungen jedoch einiges an Speicher und auf einem 68000 auch viel Geduld mit Intuition (Dieses sollte seine GZZ-Fenster mal ölen, damit sie schneller aufgehen oder sich schneller verschieben und blättern lassen). Nun, jetzt müsste mann nur noch was mit dieser Liste und den vielen Datenfeldern anfangen können, also sie mit irgendwas Sinnvollem füllen. 2.3. Womit ? ----------------------------- Das Menüsystem von meinem Programm ist die wichtigste Bedienungsschnittstelle. Sie sollten deshalb zum flüssigen Arbeiten der Mouse viel Auslauf lassen, aber die Tastatur in Reichweite lassen, vor allem den Zehnerblock, da die meisten Eingaben Zahlenwerte sind (Scheiß Assemblerprogramme!). --- 2.3.1. Projekt - "Neu" [AMIGA]-[N] Diese Funktion löscht die angezeigte Liste und setzt an den Kopf wieder die Standart-Sinus-Schwingung mit Amplitude 100000. Sie löscht jedoch nicht die eingestellten Werte links in der Tabelle, nicht die modulierende Schwingung im Zwischenspeicher und auch nicht die Obertontabelle. - "Laden" [AMIGA]-[L] Hiermit können Sie gespeicherte oder von anderen Programmen erzeugte Schwingungen (Samples) eingeladen werden. Das Programm kennt folgende Formate: 1. RAW in 8bit, 16bit und einfacher Flieskommagenauigkeit 2. ASDX-DATA (Liste und alle anderen Daten als Datei) Falls die Datei nicht im eigenen Format (2) vorliegt, fragt das Programm nach der gespeicherten Auflösung, weil diese im RAW-Format nicht zu unterscheiden ist. Speichern Sie ihre Sounds deshalb bitte mit Endungen wie ".8", ".16" oder ".fk" ab. Sie sehen dann im Filerequester die Auflösung und können diese dem Programm mitteilen. - "Sichern/RAW" [AMIGA]-[R] Speichert den Sound im RAW-Format ab, das heißt nur die Sampling-Werte. Da keine Wiederholschleife definiert werden kann, ist meist noch ein Sampling-Programmen nötig, um eine solche mit Hilfe des IFF-Formats einzubinden. Sie werden hier nach ebendieser Ausgabe-Auflösung gefragt; möglich sind: 8bit ("8"), 16bit ("16") und einfache Flieskommagenauigkeit ("fk"). - "Sichern/DATA" [AMIGA]-[D] Speichert alle relevanten Daten in einem File ab, was es ermöglicht, auch später noch auf die Liste zuzugreifen und diese zu editieren. Vorsicht ist hier nur geboten, wenn Sie mit einer zweiten Schwingung im Zwischenspeicher arbeiten, oder wenn Sie nicht mit einer Grundschwingung arbeiten, sondern z.B. eine Welle gemalt oder eingeladen haben, d.h. wenn am Anfang der Liste "exte" steht. Dann können Sie nämlich nicht abspeichern (die Dateien würden evtl. zu Speicherplatzkillern). Falls Sie mit einer MODulierenden Schwingung arbeiten, können Sie diese von einem anderen Datenfeld aus löschen und gegebenenfalls dort extra abspeichern. - "Abspielen" [AMIGA]-[A] Spielt den Sound ab. Dazu wird er zunächst in 8bit-Auflösung konvertiert und dann 10s lang abgespielt. Wenn nichts zu hören ist und in der Titelleiste gleich "Soundausgabe beendet" steht, dann hat ein freches Musikprogramm ihre Audiokanäle belegt, da mein Programm sich einen freien Kanal sucht, aber wenn keiner frei ist, hilft auch "Wer sucht, der findet!" nichts, und Sie hören eben nichts. - "Preferences/FensterGröße" [AMIGA]-[X] In den Preferences können Sie Einstellungen zu der Wellendarstellung machen und ihren Workbenchdimensionen anpassen, da das Programm von einen Hires-Screen ausgeht. Falls Sie also die Fenster in einer eigenen Ordnung anordnen wollen, dann können Sie mit diesem Menüpunkt bestimmen, wo und wie groß das Programm das Wellenfenster beim nächstenmal öffnen soll. Diese Einstellung wird auch von dem Menüpunkt "Malen" übernommen. - "Preferences/Fenster Zu" [AMIGA]-[Z] Falls Sie einmal zuviele Fenster auf der Workbench haben sollten, denn das bremst Intuition doch schon etwas (Uaaahhhhhh!!, Gäähhhhn!!), dann können Sie hier das Fenster der aktuellen Liste/Wellenform schließen. Dies wird auch nötig, wenn Sie das Fenster in einer neuen Größe haben möchten, weil diese bei einem bereits offenem Fenster nicht verändert werden kann (Programmieren Sie ruhig einmal selbst Intuition in Assembler! Ich wünsche viel Spaß!). - "Preferences/Gefüllt" [AMIGA]-[1] Dieser und die drei folgenden Punkte bestimmen den Modus, in dem die Welle in das Fenster gemalt werden soll. Dieser Modus erzeugt Flächen zwischen Nulllinie und Welle. Nach Aufruf eines dieser Punkte wird die Welle sofort neu gezeichnet (und berechnet!). - "Preferences/Gefüllt 2" [AMIGA]-[2] Dieser Modus malt Flächen von der oberen Fenstergrenze zur Welle. Die Wellenform ist praktisch die Trennlinie zwischen den beiden Farben. Die beiden Füllmodi sind sicherlich die besten, die anderen sind nur für Freaks. - "Preferences/Linien" [AMIGA]-[3] Hier wird die Wellen direkt hingezeichnet. Dies ist jedoch sehr nachteilig. Erstens ist die Standardfarbe 3=blau nicht sehr kontrastreich zu Farbe 2=weiß. Auch verdeckt die schwarze Schrift die Welle sehr stark. Und außerdem ist die Linie nicht glatt, in niedriger Auflösung der Welle sieht man lauter Treppen. - "Preferences/Punkte" [AMIGA]-[4] Nun ja, wer es mag, bitte! Hier wird jeder Wert durch einen Punkt an der entsprechende Stelle repräsentiert. Also mir gefällt es nicht, aber der Menüpunkt Malen arbeitet immer in diesem Modus. Zum Einstimmen! - "Bereich/Markieren" [AMIGA]-[M] Wenn Sie diesen Punkt anwählen, können Sie in der Liste einen Bereich markieren. Dabei sind folgende Punkte zu beachten: Nach dem Anwählen des Menüpunktes sind nur noch die Pfeiltasten funktionstüchtig. Mit diesen können Sie, falls nötig, die Liste scrollen. Durch einen Klick in die Liste markieren Sie entweder einen Bereich, aber nur, wenn Sie unterhalb oder auf den Coursor klicken. Wenn Sie darüber klicken, kommen Sie wieder aus dem Markieren heraus, ohne daß etwas passiert. Übrigens: der Coursor ist selbst schon ein markierter Bereich! Wenn Sie also nur eine Zeile kopieren oder löschen wollen, brauchen Sie diesen Menüpunkt nicht. - "Bereich/Kopieren" [AMIGA]-[K] Dieser Menüpunkt kopiert den markierten Bereich in den Puffer. Dieser Puffer ist im Gegensatz zu den meisten anderen Speichern des Programms felderübergreifend, d.h. Sie können zwischen verschiedenen Feldern Listen-Elemente austauschen. Das heißt aber auch, daß Sie aufpassen müssen, daß Sie nicht ungewollt den Bereichpuffer überschreiben! - "Bereich/Einsetzen" [AMIGA]-[E] Setzt den Bereich nach dem Coursor ein. Der Coursor bleibt jedoch auf seinem Platz stehen, also Vorsicht! (Normalerweise rutsch bei Funktionen, die nachträglich eingefügt werden, der Coursor auf die neu eingesetzte Funktion.) - "Bereich/Löschen" [AMIGA]-[0] Dieser Punkt löscht alle markierten Listen-Elemente. Der Coursor rutscht auf die Position vor dem markierten Bereich. - "Über SynthEE" Hier habe ich mich verewigt. Sonst nichts. Nur die Version des Programms noch! - "Beenden" [AMIGA]-[B] Und tschüß !!!!! (falls Sie wollen) --- 2.3.2. Verknüpf. - "++++" FUNK Diese Funktion addiert die Welle mit der Welle im MOD- Zwischenspeicher. Falls keine Wellenform im Zwischenspeicher ist, läßt sich die Funktionen nicht einsetzen oder, falls schon eingesetzt, nicht berechnen. Auch müssen die Wellen die gleiche Länge haben! Siehe auch unter Was? (Kapitel 3). - "----" FUNK Diese subtrahiert die Welle von der zweiten Welle. - "****" FUNK Diese multipliziert die Wellen miteinander und ist eine gute Alternative zur Amplitudenmodulation. - "////" FUNK Diese dividiert die Welle durch die zweite Welle. Diese Funktion ist nur zu empfehlen, wenn Sie vorgehen, wie in Kapitel 3 gezeigt. - "FM" FUNK Diese Funktion moduliert die Frequenz der Welle mit der Amplitude der zweiten Welle. Die modulierende Welle sollte "Zentriert" sein, damit keine Werte verloren gehen oder mehrfach gesetzt werden. Auch sollten Werte um -1 und kleiner vermieden werden. - "AM" FUNK Diese Funktion moduliert die Amplitude mit der Amplitude der zweiten Welle nach der folgenden Formel: I(t) = [ I1 + ( I2 * welle2(t) ) ] * welle1(t) Die Amplitudenwerte I1 und I2 werden abgefragt und sind in Werten zwischen 1 und 100000 anzugeben. Dabei ist welle1 die Schwingung die aus der Liste berechnet wird und welle2 die Schwingung im MOD-Zwischenspeicher. - "-> MOD" Hiermit wird die aktuelle Welle in den MOD-Zwischenspeicher kopiert. Dieser Speicher ist wie der Bereichspeicher felderübergreifend, also Vorsicht! Eventuell vorher aus anderen Datenfeldern kopierte Wellen werden überschrieben. Wenn Sie auf die Idee kommen sollten, daß man ja die Welle jetzt mit sich selbst verknüpfen könnte, bitte, nur zu! Aber dieses ist in Form von anderen Funktionen viel einfacher! - "<- MOD" Löscht die Liste und bindet die zwischengespeicherte Welle als "exte"-Grundform ein. Das bedeutet, daß Sie nicht mehr in ihren einzelnen Funktionen zu bearbeiten ist, aber das ist schon nicht mehr, wenn Sie sie in den Zwischenspeicher kopieren! Also Vorsicht! --- 2.3.3. Funktion - "Winkel/SINx" FUNK Diese Funktion berechnet den Sinus von den Abtastwerten. Jeder einzelne Abtastwert wird hierzu zunächst mit 2*Pi multipliziert und dann davon der Sinus berechnet. Falls Sie sich nicht vorstellen können, wie das aussieht, erzeugen Sie eine Dreieck- Grundschwingung mit Amplitude 100000 und stellen Sie zur höheren Auflösung die Samplingfrequenz auf 16744 und die Note auf "c-b". Nun wählen Sie noch die Sinusfunktion mit 1 Schwingung und ich hoffe, daß einiges klarer wird. Sie können nun aber bis zu 256 Schwingungen auf den Bereich zwischen 0 und +1 legen lassen, was aber dann eher einem "unzufälligen Zufall" ähnlich sieht! - "Winkel/COSx" FUNK Wie Sinus, nur halt ein Cosinus. - "Winkel/TANx" FUNK Wie Sinus, nur Tangens - "Winkel/COTx" FUNK Ist trotzdem geruchs-neutral und berechnet den Cotangens von den Abtastwerten. - "Winkel/Asin" FUNK Berechnet den Arcussinus der Abtastwerte zwischen +1 und -1. Fall Sie eine Schwingung mit Werten größer +1 oder kleiner -1 erzeugt haben (geht schon, ist nur nicht erwünscht!), dann schneidet sie das Programm vorher ab! Falls Sie wissen wollen, wie ich die Dreiecksschwingung realisiert habe, erzeugen Sie doch mal einen Sinus mit Amplitude 100000 und berechnen davon den Arcussinus! (Falls Sie eine kleinere Amplitude nehmen, kommt was anderes raus!) - "Winkel/Atan" FUNK Berechnet den Arcustanges der Abtastwerte. Hierbei sind Werte außerhalb des normalen Bereichs [-1;+1] sogar interessant. (Ausprobieren! zum Beispiel mit "dehn 10 1" vor "Atan") - "x^(y/z)" FUNK Berechnet von jedem Wert x^(y/z). y und z werden vom Programm abgefragt, aus dem Bereich von 1-100. Wichtig: die Werte behalten ihr Vorzeichen! - "x²*SGNx" FUNK Berechnet das Quadrat der Abtastwerte unter Beibehaltung des Vorzeichens. - "SQRx" FUNK Berechnet die Wurzel der Abtastwerte unter Beibehaltung des Vorzeichens. - "|x|" FUNK Berechnet den Betrag der Abtastwerte, diesmal ohne Beibehaltung des Vorzeichens (Uah, Fröstel, .. Kalauer!!). - "1-|x|" FUNK Klappt die Schwingung um, d.h. subtrahiert die positiven Werte von +1, negative Werte von -1 und 0 bleibt 0. Falls letzteres nicht erwünscht ist, verschieben Sie die Schwingung um 1 von 100000 nach oben oder unten! - "SGNx" FUNK Berechnet den Signum der Abtastwerte. Auf diese Weise entsteht auch meine Rechteckschwingung. Auch hier bleibt 0=0, siehe oben! --- 2.3.4. Form&Pos. - "Verschieben/Zentrieren" FUNK Diese Funktion zentriert die Welle, d.h. der Mittelwert der Abtastwerte ist danach Null (Für Mathematiker: das Integral über der gesamten Schwingung ist Null). - "Verschieben/Verschieben" FUNK Verschiebt die Werte nach oben oder unten. Werte zwischen 100000 und 0 nach oben und unten. Eine Verschiebung um 100000 nach oben bedeutet soviel wie x=x+1. - "Verschieben/Rotieren" FUNK Rotiert die Welle um 0-99999 von 100000 nach links oder rechts. - "Verschieben/Rückwärts" FUNK Spiegelt die Welle an der Y-Achse, d.h. sie wird rückwärts abgespielt. - "Verschieben/Spiegeln" FUNK Spiegelt die Welle an der Null-Linie. - "Verschieben/AutoShift-0" FUNK Shiftet Anfang und Ende der Welle automatisch genau auf den Wert 0. - "Verschieben/Shift" FUNK Shiftet die Welle an Anfang und Ende gleichmäßig, jedoch gegeneinander. Die Werte werden für den Anfang abgefragt, und werden für das Ende umgedreht. Für alle, die sich unter "Shiften" nichts vorstellen können (der Effekt ist schließlich neuartig): Wenn Sie links hochshiften, wird am linken Ende genau der Wert addiert, den Sie eingegeben haben und nach rechts hin immer weniger, bis am rechten Ende schließlich der gleich Wert von der Welle abgezogen wird. Falls Sie es sich nicht vorstellen können: Ausprobieren (Grundeinstellungen, nur Wellenanzahl auf 8 und dann Shiften). - "Verschieben/ShiftAnf." FUNK Shiftet den Anfang der Welle auf oder ab, das Ende bleibt unberührt. - "Verschieben/ShiftEnde" FUNK Shiftet das Ende der Welle auf oder ab, der Anfang bleibt wie er ist. - "Verformen/Maximieren" FUNK Sorgt dafür, daß der vom Betrag her größte Wert der Welle automatisch auf den Wert +1 oder -1 gedehnt wird. Dies funktioniert auch für Werte außerhalb des normalen Bereichs, d.h. mit "Maximieren" wird die Welle optimal in den Wertebereich eingepaßt. - "Verformen/Dehnen" FUNK Dehnt oder staucht die Welle um die angegebenen Faktoren. Eine Dehnung über die Grenzen hinaus ist möglich, nur sieht man halt die Welle nicht mehr und außerdem wird sie beim Speichern in einer bit-Auflösung abgeschnitten! - "Verformen/DehnenAnf." FUNK Dehnt den Anfang der Welle oder staucht ihn zusammen. Aber Vorsicht !: Nur die ganzzahlige Dehnung ist linear, sobald bei "Verkleinerungsfaktor" ein anderer Wert als "1" eingegeben wird, ist die Dehnung oder Stauchung nicht mehr linear! Falls Sie also den Anfang linear stauchen wollen, greifen Sie zu folgendem Trick: Dehnen Sie statt dessen das Ende um den Faktor, um den Sie den Anfang stauchen wollen (Verkleinern=1!!), und stauchen Sie dann die ganze Welle mit dem gleichen Faktor zusammen. - "Verformen/DehnenEnde" FUNK Dehnt das Ende der Welle oder staucht es zusammen. Problem siehe "DehnenAnf."! - "Verformen/Make0Anf." FUNK Diese Funktion trichtert der Welle im wahrsten Sinne des Wortes ein, daß sie am Anfang den Wert 0 haben muß. Eigentlich ein einfacher Effekt, aber schwer zu erklären. Also ein Beispiel: nehmen Sie eine Rechteckschwingung und geben Sie als "Einzugsbereich" bei "Make0Anf." 25000 ein, das ist genau das erste der Welle. Nach Anzeigen der Welle müsste eigentlich die Funktion klar werden. Wenn nicht, probieren Sie es mit vielen Sinusschwingungen von hoher Frequenz statt dem einen Rechteck. - "Verformen/Make0Ende" FUNK Wie oben, nur am Ende der Welle. - "Verformen/Obergrenze" FUNK Schneidet die Welle an dem angegebenen Maximalwert ab. Oder falls Sie bei Modus einen Wert größer 0 angeben, wird die Welle für größere Werte ebensooft umgeklappt. D.h. wenn Sie einen Sinus mit Amplitude 100000 haben und den ab dem Wert 20000 2mal umklappen lassen, dann werden beim ersten Durchlauf alle Werte über 0.2 einfach umgeklappt und in einem 2. Durchlauf werden die umgeklappten Werte, sofern sie wieder über die Obergrenze von 0.2 hinausragen, nochmals umgeklappt. Für Modi größer 0 geben Sie praktisch gleichzeitig die Anzahl der Durchläufe an. So einfach ist das. - "Verformen/Schneiden" Achtung! Dies ist keine Funktion, sondern verändert die Welle auf Dauer. Sie können hiermit links und rechts einen Teil der Welle einfach abschneiden. Sie geben zunächst den Teil ein, der links abgeschnitten werden soll. Dann noch den Teil, der rechts weg soll. Aber Vorsicht: Sie dürfen rechts nicht mehr wegschneiden, als noch übrig ist, d.h. wenn Sie links 40000 wegschneiden, dann sind eben nur noch 60000 übrig, und Sie können keine 80000 mehr abschneiden. Der Rest der Welle liegt dann als "exte"-Grundschwingung vor und kann leider nicht mehr verändert werden. - "Verformen/Magnete" FUNK Diese Funktion ermöglicht es, die Welle zu einem Punkt hin zusammenzuziehen. Sie geben einfach die Position vom Anfang der Welle her ein und das Programm zieht die Welle zusammen. Als besonders erheiternd hat sich diese Funktion bei gesampleten Stimmen oder Musikstücken erwiesen. Mit Magnetposition=0 klingt es dann nämlich wie ein Plattenspieler beim Stromausfall (Hallloooooo......). Sehr nützlich ist die Funktion außerdem beim Synthetisieren von Bass-Drums. Einfach eine Sinusschwingung genommen und mindestens 3mal "Magnete" angewandt. Na denn: Bring the beat back! - "Rauschen/Noise(rel)" FUNK Mit dieser Funktion können Sie einen Sound so richtig schlecht machen. Wenn Sie einen Synthesizer-Sound mit gesampleten Sounds zusammen in einem Musikstück verwenden könnte es vieleicht sein, daß Sie wollen, daß alle gleichmäßig rauschen (ha ha ha). Ok, Scherz beiseite, manchmal will man es halt mal rauschen lassen (bei einer Snaredrum zum Beispiel). Sie können eingeben, wieviel das Rauschen maximal abweichen soll, damit alles in Grenzen bleibt. - "Rauschen/Abweichen(rel)" FUNK Hiermit können Sie mal etwas anderes dazumischen. Diese Funktion läßt die Welle mehr oder weniger zufällig etwas abweichen. Dadurch verändert sich die Klangfarbe (Echt ätzend!). Damit nicht zuviel Zufall im Spiel ist, können Sie hier als Zufallsmodus die Zahl eingeben, auf der der Zufallsalgorithmus aufbaut. Der Zufallsalgorithmus folgt einer Empfehlung der Firma Hewlett Packard, wie er im Schülerduden II Mathmatik abgedruckt ist: Jede weitere Zufallszahl errechnet sich durch: z2 = (z1+pi)^8 - [ (z1+pi)^8 ] ^ ^ Gaussche Klammerfunktion, schneidet Nachkommastellen ab ! Sie bestimmen also praktisch genau, wie der Zufall aussieht. Also rufen Sie eigentlich nur einen bestimmten Sound ab, der zu der Welle dazugemischt wird. Vieleicht schreiben Sie mir mal ihre Lieblingszufälle, Möglichkeiten gibt es ja genug, sinnvoll sind Zahlen zwischen 1 und 80 (darüber sieht es immer gleich aus). - "Rauschen/Knacken(abs)" FUNK Yo, Freaks, jetzt gehts ab! Wer auf seinen CDs das Schallplatten-Feeling vermißt, der kann es jetzt jedenfalls in seine Musikstücke einbauen. Da erblaßt sogar MISTADOBALINA vor Neid. Zur Werteeingabe: Sie werden nach der Häufigkeit gefragt, mit der ein Knackser auftauchen soll. Wenn Sie "1" eingeben, müßten Sie schon sehr religös sein und bei "100000" wird nichts vom Original übrig bleiben. Hier ist der Zufall nun wieder zufällig, wie bei "Noise" auch, Sie haben also keinen Einfluß auf die Zufallsgrundzahl. Wie Sie bei einer Anwendung des Effekts sehen können, wird von einem vom Zufall ausgewählten Punkt der Signum berechnet und dann noch das Vorzeichen umgedreht. Dadurch ist das Knacksen sichergestellt, egal welchen Y-Wert der Punkt hat. - "Glätten" FUNK Hiermit können Sie den Verlauf der Welle glätten. Sie geben die Anzahl der Stützpunkt an, zwischen denen das Programm dann die Zwischenwerte linear neu berechnet. Sinnvoll ist dies nach "Rauschen" als Grundschwingung (mit Mode>0), um eine glatte, aber zufällige Welle zu bekommen. Gute Werte sind: (SP/2)+1 oder (SP/4)+1 usw. je nach gewünschter Glättung (SP = Länge in Abtastwerten). Die Ergebnisse sind nicht schlecht und verbessern den Klang bei tiefen Tönen. Bei hohen Tönen ist wegen der wenigen Abtastwerten pro Wellenlänge davon abzuraten. Dieser Effekt ist auch zur Nachbearbeitung von Samples empfehlenswert. - "Digital" FUNK Achtung! Diese Funktion ist der absolute Schwachsinn! Sie verringert die Anzahl der effektiven Abtastwerte auf die anzugebende Anzahl. D.h. diese Routine setzt entsprechend viele Werte mehrfach hintereinander auf den gleichen Wert, so daß die hardwaremäßigen Treppen der DA-Wandler verstärkt werden und auch schon in der Welle enthalten sind. Also: völlig überflüssig, außer irgend jemand braucht unbedingt Treppen in der Welle, ohne die Samplingfrequenz zu erniedrigen (Techno-Freaks und Klangbastler zum Beispiel). - "Obertöne/Mem einsetzen" FUNK Als Entschädung für den obigen Ausflug in den Irrsinn nun wieder eine ultimative Funktion. Sie können mit dem nächsten Menüpunkt Obertonanteile angeben und mit dieser Funktion auf die Welle anwenden. Falls der Groschen noch nicht gefallen ist: Sie können als Basis für die Resynthesierung nicht nur die Sinus- und Cosinusschwingung verwenden, sondern jede beliebige Wellenform! Toll, was? Sie haben nun einige Modi zur Auswahl: 1: SinusObertonAnteile einsetzen 2: CosinusObertonAnteile einsetzen 4: GleichstromAnteil einsetzen Sie müssen nur die Modi, die Sie haben wollen, addieren und dem Programm mitteilen. Aus der Möglichkeit verschiedene Grundschwingungen zu verwenden resultieren einige Probleme, die ich erwähnt haben möchte. Sie sollten zunächst die Oberton-Funktion immer direkt nach der Grundschwingung in die Liste einsetzen, da sonst möglicherweise in Abhängigkeit von der Wellenanzahl verschiedene Ergebnisse herauskommen. Die Cosinusberechnung beruht auf einer Rotation um 1/4 einer Wellenlänge, was Sie bei der Editierung auch beachten sollten. Außerdem mußte ich leider feststellen, daß 15 Obertöne nicht das klangliche Ende der Fahnenstange sind. Im Gegenteil. Bei tiefen Tönen sind die Ergebnisse noch sehr wellig. Trance-Feeling kommt aber eben durch möglichst große Sprünge im Sample zustande. Wer also Trance-Sounds basteln möchte, muß sich auf die anderen Effekte beschränken und mit nur einer Welle arbeiten. Ein anderes Problem ist, daß Sinusschwingungen hoher Frequenz schon bei 2 Abtastwerten pro Schwingung nicht mehr zu sehen und hören sind (Das gilt auch für die Sinus-Grundschwingung). Falls Sie also einmal bei mittleren Tonhöhen eine Hochtonarmut feststellen sollten, liegt das daran. Ein Ausweg ist, den letzten Oberton dann auch im Cosinus-Feld zu setzen. Der Cosinus ist nämlich bei 2 Abtastwerten noch gut brauchbar (auch die Grundschwingung). - "Obertöne/Mem editieren" [AMIGA]-[O] Hier können Sie die Obertonanteile von Hand eingeben oder verändern. Entweder mit der Mouse direkt oder per Tastatur durch Klick auf den Wert darunter. Unten rechts können Sie den Gleichstromanteil eingeben (Klick). Links unten können Sie mit dem Wahlschalter zwischen Sinus- und Cosinusobertönen umschalten und mit EXCHG vertauschen. Außerdem können Sie die drei Wertegruppen der Obertonwerte noch in eine Datei abspeichern und diese wieder laden. - "Obertöne/FrequenzAnaly." [AMIGA]-[Q] Mit diesem Menüpunkt können Sie die aktuelle Schwingung nach Fourier ins Frequenzsprektrum transformieren lassen (Tja Leute, geht in einen Mathe-LK, dann könnt ihr auch solchen Müll von euch lassen!). D.h. die aktuelle Welle wird auf Anteile von Sinus- und Cosinusschwingungen verschiedener Obertöne und einem Anteil in Form einer Y-Verschiebung hin untersucht. Das ganze wird dann in Zahlen verpackt, wie Sie sie im Obertoneditor sehen, und das nennt man dann Frequenzspektrum. Und normalerweise müsste eine resynthesierte Welle (Sinusschwingung nehmen und Obertöne einsetzen!) genauso aussehen wie die alte, nur manchmal etwas welliger (siehe oben). - "Instrument" Mit diesem Menüpunkt und unter Anwendung von "Make0Anf." und "Make0Ende" können Sie aus einer Welle ein Instrument, einen Sound, oder was weiß ich basteln. Sie werden nach dem Teil der Welle gefragt, der unverändert bleiben soll, sowie dem Teil, der am Ende den halben Wert haben soll. Das könnte dann so aussehen: ^ ____ | \ | \__________ | | | +-+---+-+---------+------> 25000 -> Wert 1 62500 -> Wert 2 Nach Einsatz von "Make0Anf." und "Make0Ende" ergibt sich dann die folgende Hüllkurve: ^ | /\ | / \________ | / \ | / \ | +-+---+-+-------+-+------> 25000 -> Make0Anf. 12500 -> Make0Ende Ich denke, jetzt wissen alle was gemeint ist. Aber Vorsicht, die Länge des Sounds bleibt gleich. Das heißt eine solche Bearbeitung setzt zum sinnvollen Einsatz eine entsprechend große Anzahl von Wellen vorraus. Falls Sie mit einer "exte"-Grundschwingung arbeiten, werden Sie wohl zu einer Sampling-Software greifen müssen, da mein Programm bis jetzt keine Funktion zum Vervielfachen einer Welle hat. - "Malen" [AMIGA]-[P] Dieser Punkt ermöglicht schließlich die Retusche einer Wellenform von Hand, d.h. per Mouse. Die gemalten Werte werden bei Beendigung ähnlich wie bei "Glätten" auf die entsprechende Auflösung umgerechnet. Die Auflösung der Werte in der Senkrechten nimmt jedoch ab, da die Größe des Retuschefensters die maximale senkrechte Auflösung setzt. --- 2.3.5. Wellen - "Sinus" WELLE Ersetzt die derzeitige Grundschwingung durch eine Sinusschwingung. Sie können die Amplitude und eine Phasenverschiebung, d.h. Rotation angeben. Aber Vorsicht! Diese Rotation bezieht sich im Gegensatz zur Funktion "Rotieren" nicht auf die gesamte Welle, sondern nur auf eine Wellenlänge! Eine Phasenverschiebung von Pi erreichen Sie also unabhängig von der Anzahl der Wellen mit "50000". Nochmals ist Vorsicht geboten, wenn Sie ein Sample o.ä. geladen haben. Dieses wird bei Auswahl einer anderen Grundschwingung ohne Warnung aus der Liste gelöscht (Und die Daten bleiben dann auch noch im Speicher, bis Sie "Neu" oder "Laden" anwählen)! - "SQRsinus" WELLE Erzeugt eine Sinusschingung, von der bereits die Wurzel gezogen worden ist (Für Zahnärzte!). Sonst wie Sinus. - "Cosinus" WELLE Erzeugt eine Cosinusschwingung als Grundschwingung, siehe Sinus. - "Rechteck" WELLE Erzeugt eine Rechteckschwingung, siehe auch Sinus. - "Dreieck" WELLE Erzeugt eine Dreiecksschwingung. Durch die logisch einfache, aber rechnerisch umständlich Erzeugung dauert die Berechnung leider etwas länger, sorry! Das Dreieck wird nämlich durch Berechnen des Arcussinus von einer Sinusschwingung errechnet. Siehe auch unter Sinus. - "Sägezahn" WELLE erzeugt eine Sägezahnschwingung als Grundschwingung, siehe auch Sinus. Falls Sie den Sägezahn fallend statt steigend brauchen, "Spiegeln" Sie ihn einfach. - "Rauschen" WELLE Dieser Menüpunkt erzeugt ein Rauschen als Grundschwingung. Falls Sie einen bereits existierenden Sound nachträglich mit einem Rauschen ergänzen wollen, benutzen Sie besser die Funktionen unter "Rauschen", statt einer Verknüpfung mit dieser Grundschwingung, da die Welle im MOD-Zwischenspeicher nur Speicher frißt. Auch mit einer Rauschen-Grundschwingung wird ein evtl. vorher geladenes Sample gelöscht. Sie geben hier die Amplitude und den Modus an. Der Modus 0 erzeugt ein einfaches Zufallsrauschen, mit Werten >0 erzeugen Sie in Abhängigkeit vom Wert eine zufällige Schwingung, die Entstehung entspricht dem Menüpunkt "Rauschen/Abweichen". Direkt nach einem Modus >0 empfiehlt sich der Menüpunkt "Glätten". Siehe dort. Noch eine Bemerkung: Das mit Modus 0 erzeugte Rauschen (genauso bei "Rauschen/Noise" und mit "Rauschen/Knacken") klingt in Abhängigkeit von der Länge der Welle in Abtastwerten sehr unterschiedlich. Wenn die Welle sehr kurz ist (der Wert bei den Sekunden sehr klein), dann rauscht es nicht wirklich, sondern durch die schnelle Wiederholung "klingt" es, d.h. es werden Töne hörbar. Der Sound erinnert dann stark an eine alte, verrostete Türklingel. Falls Sie sich selbst ein "Bild" machen wollen, nehmen Sie die Grundeinstellungen des Programms und wählen als Grundschwingung Rauschen im Modus 0. Falls Sie aber wollen, daß es wirklich rauscht und Sie mit einer "exte"-Schwingung arbeiten (sonst könnten Sie einfach bei Wellenanzahl eine größere Zahl einstellen!), benutzen Sie eine sog. Sampling-Software und reihen Sie die Welle entsprechend oft hintereinander. Dann laden Sie dieses Sample wieder in mein Programm ein und es kann richtig rauschen (oder Sie greifen zur Frequenzanalyse). - "Linie" WELLE Erzeugt eine waagrechte Linie nach Eingabe von Y-Wert und Vorzeichen. Sonst nichts! 3. Was ? -------------------------- Hier finden Sie einige Tricks und Tips, sowie einige Beispiele für die Erzeugung von Instrumenten. --- 3.1. Der Dateirequester ist von mir selbst programmiert und relativ einfach gehalten, weil er in einer neuen Version sowieso durch den Standart-ASL-Requester ersetzt wird. Bis dahin reicht der hier allemal. Die wichtigste Eigenheit ist, daß er bei erneutem Aufruf die Liste nicht neu aufbaut. D.h., daß eben gespeicherte Dateien nicht zu sehen sind. Deshalb sollten Sie entweder von Basics aus sich neu durch den Verzeichnisbaum wühlen, oder Parent anwählen und wieder ins alte Verzeichnis zurückgehen. Wenn Sie die Felder mit dem Verzeichnis und dem Dateinamen anklicken, können Sie diese per Tastatur eingeben. Am Anfang ist keine Liste vorhanden, Sie sollten deshalb Basics anwählen, dann werden einige wichtige Laufwerke angezeigt. Darunter sind auch einige logische Laufwerksnamen, die Sie, wenn Sie wollen, mittels Assigns auf ihre Instrumenten-Verzeichnisse legen können. --- 3.2. Verknüpfungen. Oder: "Das Problem der gleichen Länge". In dieser Version des Programms ist es noch notwendig, daß die zu berechnende Welle und die modulierende Welle die gleiche Länge haben. Dies ist jedoch kein Hinternis, muß aber beachtet werden. Ich empfehle deshalb folgende Vorgehensweise: Zunächst arbeiten Sie ganz normal, bis zu dem Punkt, wo Sie die Welle modulieren wollen. Nun gehen Sie in ein anderes Datenfeld, erzeugen dort die modulierende Welle und wählen Sie "-> MOD" an. Die Länge muß natürlich gleich sein. Dann gehen Sie wieder ins alte Datenfeld zurück und wählen eine Verknüpfung an. --- 3.3. Beispiel zu obigem Problem "Sinus" _sin 100000 0 "Obertöne eins." ober 1 "Instrument" inst 12500 75000 "DehnenEnde" de_e 1 10 "Maximieren" maxi "Make0Anf." ma_a 18750 "Make0Ende" ma_e 25000 "Maximieren" maxi "FM" fmod Als Obertöne setzen Sie im Editor den ersten, zweiten und dritten Oberton auf 99. Setzen Sie außerdem die Wellenanzahl auf 32, die Frequenz auf "c-a". Die Länge schließlich setzen Sie auf 2048. Modulieren Sie mit "Sinus" (_sin 50000 0) und Frequenz 16Hz, Wellenanzahl 2 und natürlich Länge 2048. --- 3.4. Beispiel für modulieren mit "////". Die Funktion "////" ist etwas problematisch, da ein sehr weites Spektrum von Werten entsteht, und das Ergebnis nach "Maximieren" daher nicht sehr aufregend ist. Deshalb hier ein Trick, wie man dies meistert: Sie müssen nach dem Dividieren nur nicht "Maximieren" verwenden, sondern "Dehnen". Als Testwert ist Streckfaktor 10 recht gut. Dank der Liste können Sie ja beliebig oft probieren, bis Sie zufrieden sind. Gleiches gilt für Tangens und Cotanges. Wenn Sie einen guten Streckungswert gefunden haben, sollten Sie "Obergrenze 100000 0" anwenden, um sich später Ärger zu ersparen. --- 3.5. Dateien. Im Raw-Modus speichert das Programm nur die Sampling-Daten ab. Es werden jedoch verschiedene Auflösungen gespeichert und diese sollten im Dateinamen erkennbar sein, da sie vom Anwender abgefragt werden. Hier noch eine Bemerkung: Mein Programm speichert die Werte einfach als vorzeichenbehaftete Zahlen in der jeweiligen Auflösung, so wie sie der Assembler auch verarbeitet. Die meisten anderen AMIGA-Musikprogramme verarbeiten Dateien aber scheinbar mit umgekehrten Vorzeichen. Warum ist mir absolut unvorstellbar! Falls Sie das stören sollte, müssen Sie mit "Spiegeln" vor dem Speichern und nach dem Laden das Vorzeichen umkehren. Das DATA-Format ist ein völlig eigenes Format des Programms und speichert alle Daten so ab, wie sie vom Programm verarbeitet werden. --- 3.6. Speicherprobleme. Das Programm ist leider ein ziemlicher Speicherschlucker! Falls Sie aber einmal einen Sound laden wollen und sich wundern, daß trotz viel freiem Speicher der Sound nicht geladen werden kann, dann sollten Sie einen Reset auslösen und das Sample gleich nach dem Neustart laden. Das Programm benötigt nämlich sehr große Speicherblöcke, und wenn Sie vorher irgend etwas anderes arbeiten, kann es sein, daß kein entsprechend großer Block mehr frei ist. Falls das Sample trotzdem nicht geladen werden kann, ist doch nicht genug Speicher frei. Das Programm braucht nämlich pro geladener Schwingung 4mal soviel Bytes wie die Länge in Abtastwerten. --- 3.7. Weitere Beispiele. Auf der Programm-Diskette im Verzeichnis "Beispiele" sind weitere Beispiel-Sounds, zur Verwendung in Musikprogrammen gedacht. Wo es möglich war (keine modulierende Schwingung), habe ich die Originaldaten ebenfalls abgespeichert. 4. Wer ? -------------------------- ASDX ist eine Abkürzung meines Namens: Andreas Dix. Ich bin 19 Jahre alt und mache 1994 mein Abitur. Und als Mitglied im Kunst-LK hat man natürlich eine Signatur, an die man sich mit der Zeit gewöhnt. Und so verwende ich sie inzwischen fast überall, wo etwas aus meinem Hirn stammt. Dieses Programm entstand aus langjähriger Entwicklungszeit. Es wurde zuerst in Basic ansatzweise realisiert und nachdem ich nun seit über einem Jahr vorzugsweise in Assembler programmierte, habe ich diese Endversion natürlich auch in Assembler realisiert. Falls Sie Probleme mit dem Programm haben sollten, die an der Software liegen und durch eine neue Version beseitigt werden könnten, oder falls Sie einfach nur Fragen oder Anregungen haben, schreiben Sie bitte an: Andreas Dix Waldstraße 3 97502 Euerbach - OT Sömmersdorf