• QBasic - Musik
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


Aufgaben

  1. Ändere das Programm sound1.bas so um, dass eine Alarmanlage zu hören ist. (alarm.bas) Nimm für den ersten Ton 440 Herz, für den zweiten 640 Herz. Für die Tonlänge reicht der Wert 5. Experimentiere mit den Parametern!
  2. Ergänze die Melodie "Freude schöner Götterfunken" im Programm Melodie1 und speichere unter melodie2.bas
  3. Schreibe dir deinen eigenen Handy - Klingelton: Suche dir aus dem Musikbuch eine Melodie deiner Wahl und gebe sie als Programm ein! (melodie3.bas)
  4. Erweitere das Programm Klavier, so dass du mindestens 10 Töne spielen kannst und speichere unter klavier.bas


... zurück zum Inhalt