von Frederik Holst Viele von Euch werden schon einmal Musik oder Sound Effekte mit dem XL programmiert haben. Meist wurde dazu der SOUND Befehl benutzt, der leider aber nur wenige Möglichkeiten der Veränderung bietet. Was kann man also erstmal mit dem SOUND Befehl erreichen? Der erste Parameter gibt einen von vier Kanälen an, der zweite die Tonhöhe, der dritte die Verzerrung und der letzte die Lautstärke. Nun damit läßt sich nicht viel anstellen, da bei der Verzerrung nur die Werte 8 für Rauschen und 10 für einen reinen Ton in Frage kommen. Nun kann man aber die Töne auch direkt in den POKEY schreiben, das ist der Chip, der für den guten Ton im XL verantwortlich ist. Dazu benutzt man die Speicherstellen $d200 bis $d207. Ich will nun diesen SOUND Befehl in Pokes, sprich Maschinensprache umsetzen: SOUND 0,100,10,15 Das sähe dann so aus: POKE $d200,100 POKE $d201,175 Nun, die erste Zeile ist noch leicht zu verstehen, auf jeden Soundkanal kommen zwei Adressen, bei Kanal null sind dies $d200 und $d201. In die erste wird die Tonhöhe wie der zweite Parameter des SOUND Befehls geschrieben. Die zweite Adresse ist schon etwas merkwürdiger: Hier werden Verzerrung und Lautstärke in ein Register geschrieben und zwar mit dieser Formel: Verzerrung*16+Lautstärke Das ergibt bei uns 10*16+15=175 Will man das ganze auf Soundkanal eins abspielen, so muß man statt $d200 und $d201 nur die Adressen nach $d202 und $d203 verlegen usw. Hier nun ein kleines Programm wie man den Sound Befehl sich in POKES ausgeben lassen kann: 10 INPUT "BITTE GEBEN SIE DEN SOUNDKANAL EIN: ",SO 20 INPUT "BITTE GEBEN SIE DIE TONHÖHE EIN : ",TO 30 INPUT "BITTE GEBEN SIE DIE VERZERRUNG EIN: ",VZ 40 INPUT "BITTE GEBEN SIE DIE LAUTSTÄRKE EIN: ",LA 50 ADRESSE=$D200+SO*2 60 PRINT 70 PRINT "POKE"ADRESSE","TO 80?"POKE"ADRESSE+1","VZ*16+LLhHHI 80?"POKE"ADRESSE+1","VZ*16+L 90 PRINT 100 END Das soll uns für heute genügen. Nächstes Mal wagen wir uns in Gefilde vor, die der Soundbefehl gar nicht bietet !