FX-EDITOR - Soundeffekte voll im Griff -
Für all diejenigen unter Ihnen, die es
sich mit Soundeffekten für selbstprogrammierte Spiele schwer tun, haben wir
ein ganz besonderes Programm auf dieser
MD: den " FX-Editor", mit dem es sehr
Einfach wird, die Register des SID voll
im Griff zu haben, und diesem armen, kleinen Soundchip die unglaublichsten
Soundeffekte zu entlocken!
1) ZUM PROGRAMM Laden Sie das Programm zunächst mit
LOAD" FX EDITOR",8 und starten Sie es
mittels ' RUN' . Hiernach erscheint auch
schon gleich der Editor auf dem Bildschirm, in dem Sie in zwei Fenstern diverse Soundoptionen einstellen können.
Steuerfunktionen des Programms werden über einzelne Tasten aufgerufen, die wir
in einem eigenen Kapitel weiter unten
besprechen wollen.
Außer dem FX-Editor befinden sich auf
dieser MD auch noch ein File namens
" EXAMPLE-EFFECTS" mit 16 Beispielsounds.
Außerdem ist jeder dieser 16 Sounds auch
einzeln auf Diskette vorhanden, wobei
man ein solches Soundfile am Präfix
" SND." erkennen kann. Ich empfehele Ihnen die Beispielsounds einmal in den
Editor zu laden, und übungshalber ein
wenig an ihren Werten herumzuexperimentieren.
2) DER EDITOR Im Editor können Sie nun die verschiedensten Sound-Parameter einstellen.
Hierbei ist das hellgraue Fenster in der
Mitte links des Bildschirms für allgeimeine Einstellungen an einem Sound gedacht, die eher eine Steuerfunktion für
die Abspielroutine darstellen. Im dun- kelgrauen Fenster in der Mitte rechts
werden Einstellungen direkt am Soundchip
des 64 ers vorgenommen. Sie haben einen
direkten Einfluß auf den Klang eines
Effekts.
Mit den Cursortasten können Sie nun einen in allen Farben schillernden Cursor
durch die einzelnen Eingabefelder beider
Fenster bewegen. Bewegungen nach links
und rechts verschieben den Cursor dann
entweder innerhalb eines Feldes, oder
lassen ihn zum jeweils anderen Fenster
springen. Mit Bewegungen nach oben und
unten können Sie zwischen den einzelnen
Eingabefeldern eines Fenstern wechseln.
Alle Eingaben werden in hexadezimaler
Schreibweise gemacht, so daß nur die
Tasten von '0' bis '9', sowie von ' A' bis ' F' erlaubt sind. Eingabefelder, in
denen Texte stehen ( z. B." ON" oder
" OFF") sind nur als Schalter gedacht, und werden mit Hilfe der ' RETURN'- Taste
in ihr jeweiliges Gegenteil umgewandelt.
Änderungen, die Sie an den einzelnen Parametern machen werden übrigens sofort
nach der Eingabe übernommen und müssen
nicht explizit bestätigt werden.
Kommen wir nun zur Bedeutung der einzelnen Parameter:
" EFFECT" gibt die Nummer des gerade editierten Effekts an. Da der FX-Editor
maximal 16 dieser Effekte verwaltet, können Sie hier nur eine der Ziffern von
0-9, bzw. Buchstaben von A-F eingeben.
Die Daten des eingegebenen Effekts werden dann automatisch aus dem Speicher in
die Editierfenster übertragen, von wo
aus sie bearbeitet werden können.
Die beiden Werte " TIMER START" und " TI-MER END" bestimen start und Endwert des
Soundtimers. Er legt zunächst einmal die
Spieldauer eines Effektes fest. Gleichzeitig wirkt er sich jedoch auch auf die
Soundfrequenz aus. Sein Wert wird im
Low-Byte der Stimmenfrequenz eingetra- gen, so daß bei unterschiedlichen Timerwerten auch unterschiedliche Soundeffekte entstehen. Startund Endwert des
Timers sind somit beliebig einstellbar.
Zusammen mit dem Timer-Mode, kann man
aufund abwärtszählende Timer programmieren." INC" steht für " Aufwärtszählen"," DEC" für " Abwärtszählen" . In ersterem Fall sollte der Startwert immer
kleiner als der Endwert sein. Im zweiten
Zählmodus ist das Gegenteil der Fall.
Dennoch müssen Sie sich nicht zwingend
daran halten. Wählen Sie z. B. im " INC"- Zählmodus einen Endwert bestimen, der
kleiner als der Startwert ist, so wird
von diesem Wert bis $ FF gezählt, und
anschließend wieder von $00 bis zum Endwert. Dadurch kann man Frequenzsprünge
erreichen, die u. U. auch sehr interessante Effekte erzeugen. Mit " TIMER STEP" stellen Sie die Zählgeschwindigkeit ein.
Hier gilt: je kleiner der Wert, desto
schneller wird gezählt. Maßgebend ist hier das Grundtiming der Playerroutine
( s. u.) . Sie sollte nämlich 50 Mal pro
Sekunde aufgerufen werden. Stellen Sie
nun z. B. den Wert 0, als Zählergeschwindigkeit ein, so wird bei jedem Aufruf
der Zähler verändert und damit auch der
Sound modifiziert. Beim einem Wert von 1 geschieht das nur jeden zweiten Aufruf, weswegen sich der Sound nur 25 Mal pro
Sekunde verändert, und so fort. . .
Der Parameter " VOICE 2 DIFFRENCE" bestimmt nun noch den Frequenzunterschied
von Stimme 1 zu Stimme 2 . Der hier stehende Wert wird immer auf den aktuellen
Timerwert hinzuaddiert, so daß sich die
Frequenz von Stimme 2 mit Stimme 1 mitverändern kann. Hierbei dürfen keine
Werte größer als $3 F verwandt werden.
Möchten Sie, daß Stimme 2, dieselbe Frequenz wie Stimme 1 spielt, so geben Sie
Null an. Soll Sie mit einer höheren Frequenz gespielt werden, so sollte immer
ein gerader Wert angegeben werden. Unge- rade Werte erzeugen Klirreffekte ( siehe
" SND. GLASSBREAK") .
Soviel also zu den Basiseinstellungen
eines Sounds. Im dunkelgrauen, rechten
Fenster können nun direkte Soundeinstellungen vorgenommen werden. Sie bestimmen
hauptsächlich Klangverlauf, Wellenform
und Grundfrequenz eines Effekts, und
sind im Prinzip direkt mit den SID-Registern zu vergleichen. Sie sehen hier
nun zwei Spalten, in denen links die
Daten für Stimme 1 und rechts die Daten
für Stimme 2 bestimmt werden." FREQ" gibt dabei die Grundfrequenz eines Tons
an. Der hier eingetragene Wert entspricht dem Wert, der in das High-Register der Frequenz einer Stimme geschrieben wird. Der Wert des Low-Registers wird ja vom Timer moduliert, weswegen es hier nicht erscheint.
Die Parameter " RATIO LO" und " RATIO HI" geben den Pulsabstand einer ggf. verwen- deten Rechteckswelle an. Das Editieren
dieser Werte ist nur dann notwendig, wenn Sie auch tatsächlich eine Rechteckswelle für die entsprechende Stimme
gewählt haben.
Bei " WAVE" wird nun die eigentliche Wellenform gewählt und eingeschaltet. Hierbei haben die linke und rechte Ziffer
eines einstellbaren Wertes verschiedene
Bedeutungen. Die linke Ziffer steht für
die Art der Wellenform. Hier eine Tabelle mit den einzelnen Werten für die vier
Grundwellen:
Wert Wellenform
$0x keine Wellenform $1x Dreieckwelle $2x Sägezahnwelle $4x Rechteckwelle $8x Rauschen
Das " x" steht hier jeweils für einen beliebigen Wert in der rechten Hälfte
des Wave-Wertes. Sie können übrigens
auch die ersten drei Wellenformen miteinander kombinieren, indem Sie ihre Werte
aufeinander aufaddieren. Der Wert 5(=1+4) schaltet z. B. Dreieckund Rechteckwelle gleichzeitig ein.
Die rechte Ziffer des Wave-Wertes bestimmt hauptsächlich, ob die Stimme einoder ausgeschaltet sein soll. Ist sie
"1", so ist die Stimme eingeschaltet und
auch hörbar. Ist sie "0", so ist die
entsprechende Stimme abgeschaltet. Ist
für sie jedoch eine Wellenform festgelegt, so kann sie dennoch eine Auswirkung auf die andere Stimme haben. Möchten Sie eine Stimme ganz abschalten, so
müssen Sie den Wert $00 in das Wave-Register eintragen. In der rechten Hälfte des Wave-Wertes von Stimme 2 bewirken
die Ziffern "3","5" oder "7" Frequenzmodulationen von Stimme 1 . Auf diese
Weise sind recht interessante Effekte zu erzielen, die Sie unbedingt einmal ausprobieren sollten.
In der Zeile " ATT/ DEC" kann eingestellt
werden, mit welcher Geschwindigkeit die
entsprechende Stimme zu ihrer Maximallautstärke anschwellen soll ( linke Ziffer), und wie schnell sie danach wieder
abklingt ( rechte Ziffer) . Je größer hier
ein Wert ist, desto langsamer läuft die
entsprechende Operation ab ("0"= Sofort
volle/ keine Lautstärke," F"= sehr langsames an-/ abklingen) . Die Funktion dieses
Wertes entspricht dem " Attack/ Decay"- Registers des SID.
" HOLD" bestimmt, wie lange ein Ton, nach
Anschwellen auf seine Maximallautstärke, gehalten werden soll ( linke Ziffer) und
wie lange es dauern soll, bis er nach
seinem Abschalten schließlich ganz verstummt ( rechte Ziffer) . Dieser Wert entspricht dem " Sustain/ Release"- Register
des SID.
" GLIDE" gibt an, ob die entsprechende
Stimme sich in der Frequenz nach dem
Timer richten soll ( wie anfangs beschrieben), oder nicht ( bleibt dann
konstannt auf der Frequenz von " FREQ" stehen) . Schalten Sie hierzu einfach mit
" ON"/" OFF" das Gliding an oder aus.
" SUSTAIN" bestimmt, ob die Stimme bei
jeder Timeränderung kurz unterbrochen
werden soll, oder nicht. Ist letzteres
der Fall, so klingt die Stimme etwas
weicher. Ansonsten erscheint sie etwas
unruhiger im Klangverlauf ( in Kombination mit den anderen Parametern kann man
auch hiermit sehr interessante Effekte
erzielen) .
3) DIE TASTENFUNKTIONEN Kommen wir nun noch zu einigen Funktionen des Prgramms, die durch Drücken von
bestimmten Tasten aufgerufen werden. Sie
stellen die eigentliche Programmbedienung dar:
' SPACE' Hiermit wird der momentan eingestellte
Soundeffekt abgespielt, so daß Sie ihn
auf seinen Klang hin testen können.
' L' Dient dem Laden einer ganzen Effektpalette. Die Funktion lädt dabei aus einem
File gleich alle 16 Sounds des Editors
in den Speicher. Geben Sie hierzu lediglich den Namen des zu ladenden Files
an, und bestätigen Sie mit ' RETURN' .
Möchten Sie den Ladevorgang abbrechen, so drücken Sie ' RUN/ STOP' . Tippfehler
können mit der ' DEL'- Taste korrigiert
werden. Diese Bedienung bei der Eingabe
von Filenamen gilt übrigens auch für
alle anderen Ladeund Speicherfunktionen.
' S' Speichert alle 16 sich im Speicher befindlichen Soundeffekte zusammen mit der
Sound-Player- Routine auf Diskette ab.
Geben Sie hierzu einfach den Namen des
zu speichernden Files an, und bestätigen
Sie mit ' RETURN' .
' H' Gibt ein englische Hilfstext auf dem
Bildschirm aus, von dem Sie durch zweimaligen Druck auf die ' SPACE'- Taste wieder zum Editor gelangen.
' X' Dient dem Kopieren eines Effekts auf
einen anderen. Drücken Sie diese Taste, so geben Sie lediglich nacheinander die
Ziffer des Quellund des Zielsounds
ein, um die entsprechenden Soundeinstellungen umzukopieren. Die Werte des Zieleffekts gehen dabei verloren!
'$' Lädt das Inhaltsverzeichnis der eingelegten Diskette, und zeigt es auf dem
Bildschirm an. Hierbei können Sie die
Ausgabe durch Gedrückthalten der ' CTRL'-
Taste anhalten, oder aber durch ' RUN/ STOP' ganz stoppen. Mit ' SPACE' gelangen
Sie daraufhin wieder zum Editor zurück.
' P' Hiermit kann die Priorität der einzelnen
Sounds untereinander verändert werden.
Dies bestimmt die Art und Weise, wie die
Sound-Player- Routine später die Sounds
abspielen soll. Dieser Wert teilt der
Player-Routine mit, wie wichtig ein
Sound ist oder nicht. So ist ein Explosionsgeräusch sicherlich wichtiger als
das Grundgeräusch, das ein Raumschiff
beim Fliegen macht. Da der Player nun
immer nur einen Sound gleichzeitig abspielen kann, muß er wissen, ob ein
neuer Sound wichtig genug ist, um einen
evtl. schon laufenden Sound zu unterbrechen. Hat der angeforderte, zweite Sound
eine höhere Priorität, so unterbricht er
den laufenden Sound und ist sofort hörbar. Hat er eine niedrigere Priorität, so wird ein einfach ignoriert. Nach drücken der ' P'- Taste können Sie nun
nacheinander die 16 Sounds in ihrer Reihenfolge vom letztwichtigsten bis zum
meistwichtigsten Sound eingeben. Hierbei
darf ein Effekt nicht zweimal aufgeführt
werden und es muß jeder Effekt einmal in
der Liste erscheinen. Haben Sie nach
Aufruf der Funktion noch keine Effektnummer angegeben, so können Sie immer
noch mit ' RUN/ STOP' abbrechen. Andernfalls müssen Sie alle 16 Effekte eingeben ( Abbruch ist dann unmöglich!) .
' Z' Diese Funktion dient dem Speichern eines
einzelnen Effekts auf Diskette. Sie werden hierbei zunächst nach der Nummer des
zu speichernden Sounds gefragt. Nach
deren Eingabe muß nur noch ein Filename
bestimmt werden, dem automatisch der
Präfix " SND." vorangestellt wird.
'K' Hiermit laden Sie einen einzelnen Sound
in den Editor. Hierbei werden Sie
zunächst wieder gefragt, an welche Nummer der Sound geladen werden soll. Nach
Eingabe eriner Ziffer von '0' bis ' F' wird dann wieder zur Filenamenseingabe
verzweigt. Auch hier wird der Präfix
" SND." automatisch vorangestellt und muß
nicht explizit angegeben werden.
4) DIE SOUND-PLAYER- ROUTINE Ein mit der ' S'- Funktion des Programms
gespeichertes File enthält automatisch
auch die Abspielroutine des FX-Editors.
Ein solches File muß absolut ( mit
",8,1") in den Speicher geladen werden.
Es belegt immer den Adressbereich von
$4000 bis $4300 . Um nun einen Sound abzuspielen sollten Sie zunächst eimal die
Grundlautstärke des SID festlegen ( für
volle Laustärke:" POKE54296,15") . Vor
der eigentlichen Benutzung muß der Player nun initialisert werden. Dies kann
ebenso getan werden, um einen evtl. noch laufenden Sound absichtlich abzuschalten. Dies tun wir, indem wir mit dem
Wert $ FF im Akku des Prozessors, die
Playerroutine bei $4000 aufrufen. Hieraufhin ist der Player zum Abspielen der
einzelnen Sounds bereit und ein evtl.
noch aktiv gewesener Sound abgeschaltet.
Hierzu müssen wir lediglich die gewünschte Soundnummer in den Akku laden und
ebenfalls auf Adresse $4000 springen.
Damit der Effekt nun wirklich auch hörbar ist, muß die Interruptroutine des
Players 50 Mal pro Sekunde aufgerufen
werden. Sie beginnt bei $4003 und sollte
über einen CIA-IRQ angesprungen werden.
Um herauszufinden, ob gerade ein Sound
gespielt wird, oder nicht, kann die
Adresse $40 FE ausgelesen werden. Steht
hier der Wert $ FF, so ist kein Sound
aktiv. Jeder andere Wert zeigt an, daß
sich gerade ein Effekt durch die SID-Register bewegt.
(ub)