home *** CD-ROM | disk | FTP | other *** search
/ Profi Club / Profi_Club_5_1992_-_de.d64 / lied-2.txt < prev    next >
Text File  |  2023-02-26  |  8KB  |  39 lines

  1. Zweiter Teil der Programmbeschreibung zuLiedhelfer.
  2.  
  3. BASIC
  4. Ein fertiges, mit Play abspielbares Musikst{CBM-X}ck kann in ein BASIC-Programm {CBM-X}bersetzt und auf Diskette gespeichert werden. Anzugeben sind hierf{CBM-X}r der Filename und die Anzahl der Schleifendurchl{CBM-F}ufe f{CBM-X}r die Dauer einer Viertelnote. F{CBM-X}r den C128 ist eventuell ein etwas kleinerer Wert zu w{CBM-F}hlen, da dessen BASIC etwas langsamer ist als das des C64.
  5.  
  6. Der Sound macht's
  7. Der Men{CBM-X}punkt Sound blieb bisher noch unerw{CBM-F}hnt. Er dient dazu, den Klang und die Lautst{CBM-F}rke festzulegen sowie die Register des Soundchips auszuprobieren. Uns bietet er die Gelegenheit, zu kl{CBM-F}ren, welche Register gesetzt werden m{CBM-X}ssen, um Musik programmieren zu k{CBM-C}nnen.
  8.  
  9. Die Lautst{CBM-F}rke
  10. Ist die Lautst{CBM-F}rke auf null gesetzt, ist nichts zu h{CBM-C}ren. Sie kann auf Werte zwischen null und f{CBM-X}nfzehn eingestellt werden. Die Lautst{CBM-F}rke l{CBM-F}{CBM-V}t sich nur f{CBM-X}r alle drei Oszillatoren des SID-Chips gemeinsam regeln. Zust{CBM-F}ndig ist das Register 24 an Adresse 54296. poke54296,15 stellt die maximale Lautst{CBM-F}rke ein.
  11.  
  12. Die H{CBM-X}llkurve
  13. Die Charakteristik eines Klanges wird von Wellenform und H{CBM-X}llkurve bestimmt. Wir unterscheiden beim Erklingen eines Tones vier verschiedene Phasen. Wenn Sie etwa in eine Trompete blasen, dauert es ein wenig, bis der Ton kommt. Diese erste Phase ist die Anstiegsphase (Attack), die im Soundmen{CBM-X} als Anschlag bezeichnet wird. Bei einem Klavier kommt der Anschlag kurz und trocken, die Anstiegsphase dauert nicht lange. Mit Werten von null bis f{CBM-X}nfzehn k{CBM-C}nnen Anstiegszeiten von zwei Millisekunden bis acht Sekunden eingestellt werden. Eine entsprechende Tabelle finden Sie in Ihrem Rechnerhandbuch. Dem Anschlag folgt eine Abfallphase, wenn etwa ein Ventil sich schlagartig ge{CBM-C}ffnet hat, der Ton schmetternd herauskommt und der Bl{CBM-F}ser sich jetzt etwas zur{CBM-X}ckhalten mu{CBM-V}, damit ihm die Luft nicht ausgeht - die Lautst{CBM-F}rke geht zur{CBM-X}ck. Die Dauer des Abfalls (Decay) wird ebenfalls durch Werte zwischen null und f{CBM-X}nfzehn geregelt, allerdings jetzt zwischen acht Millisekunden und 24 Sekunden. Nun ist nur noch die Frage, auf welchen Pegel die Lautst{CBM-F}rke zur{CBM-X}ckgeht (Sustain). Dies wird wieder durch Werte von eins bis f{CBM-X}nfzehn angegeben. Bei einem Saiteninstrument oder einem Glockenspiel verklingt der Ton, bis er nicht mehr zu h{CBM-C}ren ist, und wir w{CBM-X}rden den Pegel null w{CBM-F}hlen, bei einer Orgel oder einem Akkordeon dagegen folgt dem Anschlag vielleicht ein nur geringf{CBM-X}gig leiserer Dauerton, so da{CBM-V} hier ein Wert nahe f{CBM-X}nfzehn einzustellen w{CBM-F}re.
  14. Wenn eine Taste losgelassen wird, h{CBM-C}rt der Ton nicht schlagartig auf, sondern klingt unter Umst{CBM-F}nden noch einige Zeit nach. Durch Werte von null bis f{CBM-X}nfzehn wird die Zeitdauer des Ausklingens (Release) eingestellt. Im Rechnerhandbuch finden Sie f{CBM-X}r mehrere Instrumente Beispielswerte, die Sie allerdings nicht unbesehen {CBM-X}bernehmen sollten. So ist dort f{CBM-X}r das Klavier lediglich bei Attack ein von null verschiedener Wert angegeben, der zudem mit neun etwas kurz gew{CBM-F}hlt ist. Auch nach dem Loslassen einer Taste klingt jedoch das Klavier noch nach, allerdings nicht so lange, als wenn die Taste weiterhin gedr{CBM-X}ckt bleibt. Mir erschien eine Zehn f{CBM-X}r den Abfall und eine Neun f{CBM-X}r den Ausklang angebracht.
  15. Im Register f{CBM-X}nf des SID an Adresse 54277 werden Attack und Decay f{CBM-X}r den Oszillator eins eingestellt. Dabei ist der Wert von Attack mit dem Faktor 16 zu multiplizieren: poke54277,16*at+de
  16. F{CBM-X}r Sustain und Release ist Register sechs an Adresse 54278 zust{CBM-F}ndig: poke54278,16*su+re
  17. Wenn wir uns nicht f{CBM-X}r die Rechteckschwingung entscheiden, sind diese Voreinstellungen ausreichend. F{CBM-X}r Rechteckschwingungen ist jedoch noch eine Pulsweite anzugeben. Dies k{CBM-C}nnen Werte zwischen null und 4095 sein. Die Pulsweite gibt das Teilungsverh{CBM-F}ltnis zwischen den beiden Phasen wieder, in denen der maximale und der minimale Pegel herrschen. Bei einem Wert von 2048 sind beide Phasen gleich lang, bei anderen Werten ist das Verh{CBM-F}ltnis zu der einen oder anderen Seite hin verschoben, wodurch der Ton d{CBM-X}nner klingt. Bei den Werten null oder 4095 ist gar nichts mehr zu h{CBM-C}ren. Einzutragen f{CBM-X}r Oszillator eins ist die Pulsweite in die Register zwei und drei an den Adressen 54274 und 54275:
  18. ph=int(pw/256)
  19. pl=pw-256*ph
  20. poke54274,pl
  21. poke54275,ph
  22.  
  23. In den h{CBM-C}chsten T{CBM-C}nen
  24. Im Soundmen{CBM-X} ist etwas irref{CBM-X}hrend der Begriff Frequenz zu sehen. Es handelt sich hierbei jedoch um den in die Frequenzregister einzutragenden Wert, der proportional zur tats{CBM-F}chlichen Frequenz ist. Wenn Sie mit der Tastatur im Soundmen{CBM-X} T{CBM-C}ne spielen, k{CBM-C}nnen Sie den dem jeweiligen Ton entsprechenden Wert ablesen. Ist lediglich ein einziger Wert rf f{CBM-X}r einen einzigen Ton bekannt, lassen sich durch die mathematische Formel f=rf*2^(ok+nh*1/12) alle {CBM-X}brigen Werte in jeder Oktave okt f{CBM-X}r jeden Halbton ausrechnen.
  25. Dieses Verfahren bei jedem Ton in dem Augenblick, da er zu spielen ist, anzuwenden, ist allerdings nicht ratsam, da solche Berechnungen zuviel Zeit kosten. Daher sollten f{CBM-X}r ein eigenes Musikprogramm diese Werte erst errechnet und dann in einem Feld abgelegt werden, woraufhin im Hauptprogramm ein schneller indizierter Zugriff erfolgen kann.
  26. Eine andere M{CBM-C}glichkeit ist die Erfassung von zw{CBM-C}lf Halbt{CBM-C}nen einer Oktave. F{CBM-X}r jede weitere niedrigere Oktave m{CBM-X}ssen die Werte lediglich jeweils halbiert, f{CBM-X}r eine h{CBM-C}here Oktave jeweils verdoppelt werden. Da auch Teilen und Multiplizieren Zeit kostet, sollte eine Tontabelle die Werte bereits aufgeteilt in Low- und Highbyte enthalten. Register null und eins sind die Frequenzregister von Oszillator eins. Die Adressen sind 54272 und 54273. Die Berechnung von Low- und Highbyte erfolgt genauso wie bei der Pulsweite.
  27.  
  28. Ein Ton erklingt
  29. Wenn die Voreinstellungen Lautst{CBM-F}rke, H{CBM-X}llkurve und eventuell Pulsweite getroffen sind und au{CBM-V}erdem die Tonh{CBM-C}he in das Frequenzregister eingetragen ist, mu{CBM-V} nur noch der Ton ein- und nachher wieder ausgeschaltet werden. Daf{CBM-X}r ist Register 4 an Adresse 54272 zust{CBM-F}ndig. Einzutragen ist ein Wert, der f{CBM-X}r die Wahl der Wellenform zust{CBM-F}ndig ist:
  30.  
  31. 128 Rauschen
  32.  64 Rechteck
  33.  32 S{CBM-F}gezahn
  34.  16 Dreieck
  35.  
  36. Diese Werte sind um eins zu erh{CBM-C}hen, wenn der Ton eingeschaltet werden soll. Zum Erzeugen einer S{CBM-F}gezahnschwingung w{CBM-F}re demnach n{CBM-C}tig: poke54276,33. Zum Ausschalten w{CBM-F}re m{CBM-C}glich: poke54276,0. Jedoch sollte der Oszillator auch f{CBM-X}r den Release-Zyklus eingeschaltet sein, so da{CBM-V} hier lediglich poke54276,32 das Richtige ist. Durch Addition lassen sich auch mehrere Wellenformen kombinieren. Wird jedoch Rauschen mit einer weiteren Wellenform verbunden, bleibt zumeist der Oszillator stehen und mu{CBM-V} erst wieder durch poke54276,8 in Funktionsbereitschaft gesetzt werden. Im Soundmen{CBM-X} ist es das Testbit, das in diesem Fall gesetzt und dann zur{CBM-X}ckgesetzt werden mu{CBM-V}, nachdem nat{CBM-X}rlich vorher der Rauschgenerator oder der mit diesem kombinierte ausgeschaltet wurde.
  37. Im Soundmen{CBM-X} finden Sie das Steuerregister, nach den einzelnen Bits aufgeschl{CBM-X}sselt, als die letzten acht Men{CBM-X}punkte. Mit der Returntaste werden diese "Schalter" jeweils umgestellt. Beim Setzen des Gate-Bits wird der Ton eingeschaltet, beim Zur{CBM-X}cksetzen ausgeschaltet. Wird die Returntaste dagegen bei den ersten sieben Men{CBM-X}punkten gedr{CBM-X}ckt, erscheint ein Cursor, der darauf wartet, da{CBM-V} Sie eine {SHIFT-+}nderung des augenblicklichen Wertes vornehmen. {SHIFT--}brigens k{CBM-C}nnen die angesprochenen Soundregister weder mit einem PEEK-Befehl noch auf andere Art ausgelesen werden. Wenn Sie deren Inhalte trotzdem auf dem Bildschirm sehen, so ist dies nur deshalb m{CBM-C}glich, weil das Programm die Registerinhalte zus{CBM-F}tzlich in Variablen verwaltet.
  38. Das BASIC-Programm Musikdemo wurde vom Liedhelfer aus dem File ZELL erzeugt. Sie k{CBM-C}nnen dies nachvollziehen, indem Sie im Editor {CBM-X}ber F8 und l ZELL laden, im Men{CBM-X} die Funktion Wandeln aufrufen und {CBM-X}ber Optionen und BASIC die Sache in ein BASIC-Programm umwandeln. Die Daten der ersten Datazeile bedeuten Lautst{CBM-F}rke, Pulsfrequenz-Lowbyte, Pulsfrequenz-Highbyte, Attack/Decay, Sustain/Release und Schwingungsform. Die restlichen Daten bestehen aus Vierergruppen, die jeweils Frequenz-Lowbyte, Frequenz-Highbyte, Haltedauer und Pausendauer enthalten.
  39. Zum Ausprobieren benutzen Sie bitte eine neue Diskette, da diese fast randvoll mit Programmen und Daten gef{CBM-X}llt ist und somit kaum noch Speicherplatz besitzt.