Zur
Ausgabe von Tönen über den eingebauten PC-Lautsprecher (leider
nicht über Soundkarte) gibt es in QBasic zwei Befehle: SOUND und
PLAY. Während SOUND die Töne über eine eingegebene Frequenz
ausgibt, kann man mit PLAY Tonhöhe und Länge über die
Tonleiter ausgeben.
SOUND
- Befehl
Der
SOUND - Befehl erwartet zwei Zahlen/ Variablen. Die erste Zahl gibt
die Tonfrequenz an, (440 Hz für den Kammerton A), die zweite
Zahl beschreibt die Tondauer. Beachte, daß die Frequenz (erste
Zahl) zwischen 37 und 32767 liegen muß und die Tondauer (zweite
Zahl) zwischen 0 und 65535. Gib die folgenden Programme ein, speichere
sie unter sound1.bas, sound2.bas und sound3.bas
und starte sie. Experimentiere dabei mit der Tonfrequenz und der Tondauer.
REM Sound1
CLS
PRINT "Ein springender Ball ..."
ton1 = 246
ton2 = 32767
FOR zaehler = 60 TO 1 STEP -2
SOUND ton1 - zaehler / 2, zaehler / 20
SOUND ton2, zaehler / 15
NEXT zaehler
REM
Sound2
CLS
PRINT "Etwas fällt ..."
ton1 = 2000
ton2 = 550
pause = 500
FOR zaehler = ton1 TO ton2 STEP -10
SOUND zaehler, pause / zaehler
NEXT zaehler
REM
Sound3
CLS
PRINT "Sirenengeheul ..."
FOR zaehler = 440 TO 1000 STEP 5
SOUND zaehler, zaehler / 1000
NEXT zaehler
PLAY
- Befehl
Mit dem PLAY Befehl läßt sich einfach die Tonleiter spielen.
Bei der Eingabe des Programms (leiter1.bas)
achte darauf, dass die englische Tonleiter kein H kennt. Schreibe
stattdessen B.
REM
tonleiter1
PLAY "CDEFGABC"
Du
wirst gehört haben, dass dein Programm kein hohes C spielt. Der
Computer braucht einen Befehl für eine neue Oktave: ox für
1<= x <= 6 legt die Oktave fest. Ändere das Programm wie
folgt um (leiter2.bas)
REM
tonleiter2
PLAY "o3CDEFGABo4C"
Das
Eingeben der gesamten Klaviatur wäre somit kein Problem mehr.
Mit weiteren Befehlen kannst du sogar Tonlänge, Pausen etc. bestimmen.
Hier eine Übersicht:
o3 |
legt
die Oktave fest (0 - 6), o§ ist die 3. Oktave |
L4 |
legt
die Tonlänge fest (1 - 64), L1 ist eine ganze Note, L2 eine
Halbe, ... |
P2 |
legt
die Pausen fest (1-64) |
ML |
spielt
die Töne gebunden (legato) |
MN |
spielt
die Töne normal |
MS |
spielt
die Töne Staccato (abgehakt) |
CDEFGAB |
legt
die Tonhöhe fest (B = H!) |
T80 |
Tempobefehl
(32 - 255) |
Kannst
du folgende Melodie (melodie1.bas) erraten?
PLAY
"MS o3 L4 eefggfedccde L3 e L6 d L2 d"
Soll
eine Note um einen Halbtonschritt erhöht oder erniedrigt werden,
hängt man an den Buchstaben der Note ein Pluszeichen (+) oder
ein Minuszeichen (-) an. Anstelle des Pluszeichens kann auch das Doppelkreuz
(#) verwendet werden. Am besten ist du experimentiert einfach ein
bißchen, und schon gelingen (falls man das Talent hat) die ersten
Eigenkompositionen.
Das
folgende Programm ermöglicht es, über den Nummernblock Klavier
zu spielen. Du kannst mit der Taste q das Programm abbrechen. (klavier.bas)
REM
Klavier1
CLS
PRINT " Klavierstunde"
taste$ = ""
WHILE taste$ <> "q"
taste$ = INKEY$
IF taste$ = "1" THEN PLAY "o3 L8 C"
IF taste$ = "2" THEN PLAY "o3 L8 D"
IF taste$ = "3" THEN PLAY "o3 L8 E"
...
WEND