Musik mit dem HP 49G

Die hier verwendete Notation ist in einem gesonderten Beitrag zusammengestellt.

Inhalt

Zur Beitragsübersicht


Der Tongenerator des HP 49G

Der HP 49G hat einen eingebauten Tongenerator, mit dem akustische Signale erzeugt werden können.
Für Musik-Betrieb ist der RPN-Modus zu wählen.

Befehlssyntax Tongenerator:

Eingegebene größere Werte für Frequenz und Dauer werden auf die maximal möglichen reduziert.

Zur Aktivierung des BEEP-Tones muß das Flag -56 = 0 = gelöscht sein. Dies wird durch -56 CF oder [MODE] durch Häkchen bei BEEP im Menü "Calculator Modes" erreicht.

Beispiel:

Das Programm «1000. 1. BEEP» erzeugt einen Ton von 1000 Hz mit der Dauer von 1 Sekunde.

Vorgesehen ist dieser Tongenerator hauptsächlich für die Ausgabe verschiedener akustischer Signale. Die Benutzer haben jedoch schon beim Vorgänger, dem HP 48GX, diesen Tongenerator dazu benutzt, um monophone (einstimmige) Melodien zu erzeugen. Die Tonqualität ist nicht umwerfend, aber man kann kleine Lieder damit spielen. Die Spielereien gingen sogar soweit, daß mehrere HP 48GX parallel benutzt wurden, um polyphone (mehrstimmige) Lieder im HP-Taschenrechner-Orchester erklingen zu lassen.

An drei Beispielen werden die verschiedenen Möglichkeiten ausprobiert:

  1. Das Lied "Für Elise" von Ludwig van Beethoven
  2. "Hänschen klein" als C-Dur-Tonfolge
  3. Handy-Klingeln

Betriebshinweise:

Zu beachten ist, daß der Taschenrechner beim Abspielen der Lieder wesentlich mehr Energie verbraucht als beim normalen Rechnen.
Die Batterien müssen nämlich eine bestimmte Leistung aufbringen, um über den eingebauten Lautsprecher den Schall zu erzeugen und abzugeben.
Es ist zweckmäßig, bei den Musikspielereien ausnahmsweise frisch geladene Akkus zu verwenden, die nach der musikalischen Phase wieder gegen normale Alkaline-Batterien ausgetauscht werden können.
Bitte die Hinweise im mitgelieferten Handbuch, Seite D-2 und D-3, beim Batteriewechsel und beim Gebrauch der Akkus beachten!

 

Einige Grundlagen der Musik

Das Tonsystem der Zwölftonmusik

Unser heutiges Tonsystem läßt sich auf 7 Stammtöne zurückführen, die sich in gleicher Aufeinanderfolge in den hohen und in den tiefen Tonlagen wiederholen. Der Abstand von einem Ton bis zum nächstfolgenden gleichnamigen heißt Oktave (= 8 Töne).

Die sieben Stammtöne (weiße Tasten auf dem Klavier) heißen: c, d, e, f, g, a, h (deutsch).

Dazu kommen noch 5 Halbtöne (schwarze Tasten auf dem Klavier): cis, dis, fis, gis, ais=b.
In der Musiktheorie nennt man diese Halbtöne je nach Tonart auch noch des, es, ges, as, b.

In der Zeichnung heißen die Halbtöne cs (=cis), ds (=dis), fs (=fis), gs (= gis) und b. Im Programm werden für alle Töne Großbuchstaben verwendet und mit einer Ziffer noch die entsprechende Oktave bezeichnet.

Klaviatur und Tonumfang

Die Frequenzen der gleichnamigen Töne von benachbarten Oktaven stehen im Verhältnis 1:2. Zum Beispiel hat der Ton c1 die doppelte Frequenz des Tones c0.

Die Musiker unterscheiden zwischen "reiner Stimmung", in der bestimmte Töne in einem ganzzahligen Frequenzverhältnis zueinander stehen, und sogenannter "temperierter Stimmung" oder "gleichschwebender Temperatur", in der die Frequenzen aller benachbarten Töne exakt das gleiche Verhältnis zueinander haben. Die Frequenzen der 12 aufeinanderfolgenden Töne [c, cis, d, dis, e, f, fis, g, gis, a, b, h] haben in der "temperierten Stimmung" gleichen "Abstand".

Diese Zwölfteilung ("Zwölftonmusik") bringt in der klassischen Musik insofern die beste Lösung, daß jetzt zwar keine Tonart mehr ganz "rein" ist, diese kleine Verstimmung aber für die meisten Ohren unterhalb der Bewußtseinsschwelle bleibt. Das klingt dann zwar nicht mehr so "sauber", aber man kann dann alle 24 Dur- und Moll-Tonarten mit demselben Instrument spielen, ohne daß das Instrument zwischendurch für eine andere Tonart "rein" gestimmt werden muß. Johann Sebastian Bach hat dies in seiner Komposition "Das wohltemperierte Klavier" (1720, 1735) erstmals voll ausgenutzt.

Theorie der temperierten Stimmung

Der Tonverhältnis zwischen zwei Tönen beträgt also "ein Zwölftel Oktave" (= "temperierter Halbton"). Nachdem das Frequenzverhätnis der Oktaven aber 1:2 ist, kann man die einzelnen Töne mathematisch berechnen, indem man den "temperierten Halbton" als Faktor t benutzt.

Berechnung des "temperierten Halbtons"

Vom Grundton a = 440 Hz ausgehend werden nacheinander die höheren Töne ausgerechnet, indem man mit t multipliziert, und die tieferen, indem man durch t dividiert. Daraus ergibt sich die nachfolgende Tabelle.

Da dieses Tonsystem kein absolutes, sondern ein "System von Tonhöhenrelationen" ist, wird im Programm die Tonlage aller Töne variabel in Abhängigkeit von der Veränderung des Grundtons gestaltet. Die Tabelle enthält dafür die Spalte v, wo die Verhältniszahl Tonfrequenz/Grundtonfrequenz eingetragen wird. Damit kann man die "Gesamtstimmung" aller Töne durch Verändern des Grundtons an die Stimmung anderer Instrumente anpassen. Der Grundton wird im Rechner in der Variablen GT gespeichert, die den Wert 440 enthält.

Frequenztabelle und Verhältniszahlen der Töne/Noten C0 bis H3
Oktave 0 Oktave 1 Oktave 2 Oktave 3
Ton Hz v Ton Hz v Ton Hz v Ton Hz v
C0 261.63 0.595 C1 523.25 1.189 C2 1046.50 2.378 C3 2093.00 4.757
CS0 277.18 0.630 CS1 554.37 1.260 CS2 1108.73 2.520 CS3 2217.46 5.040
D0 293.66 0.667 D1 587.33 1.335 D2 1174.66 2.670 D3 2349.32 5.339
DS0 311.13 0.707 DS1 622.25 1.414 DS2 1244.51 2.828 DS3 2489.02 5.657
E0 329.63 0.749 E1 659.26 1.498 E2 1318.51 2.997 E3 2637.02 5.993
F0 349.23 0.794 F1 698.46 1.587 F2 1396.91 3.175 F3 2793.83 6.350
FS0 369.99 0.841 FS1 739.99 1.682 FS2 1479.98 3.364 FS3 2959.96 6.727
G0 392.00 0.891 G1 783.99 1.782 G2 1567.98 3.564 G3 3135.96 7.127
GS0 415.30 0.944 GS1 830.61 1.888 GS2 1661.22 3.775 GS3 3322.44 7.551
A0 440.00 1.000 A1 880.00 2.000 A2 1760.00 4.000 A3 3520.00 8.000
B0 466.16 1.059 B1 932.33 2.119 B2 1864.66 4.238 B3 3729.31 8.476
H0 493.88 1.122 H1 987.77 2.245 H2 1975.53 4.490 H3 3951.07 8.980

Das sind die 48 Töne und deren Verhältniszahlen.

 

Programmieren der Töne und der Pause

Hinweis: Es ist nicht nötig, jetzt etwas einzutippen, der Leser kann das gesamte fertige Verzeichnis MUSIK später auf den HP 49G übertragen.

Die Töne werden "spielbar" abgespeichert, d. h. es wird nicht die Frequenz, sondern jeweils ein kleines Progrämmchen für jeden Ton als Variable angelegt in der Form «DUP GT v * SWAP BEEP», wobei als v die jeweilige Zahl aus der Tabelle für den betreffenden Ton eingesetzt wird. Der Wert des Grundtons wird aus der Variablen GT geholt, für den nächsten Ton dupliziert und steht während der Dauer des Tones im Stack. Nun fehlt noch die "Pause" (hier z. B. Achtelpause).

Für die Pause P wird die WAIT-Funktion des Rechners verwendet.
Die Variable P bekommt den Inhalt «DUP WAIT».

Beispiel für den Ton C0:
In der Variablen C0 ist das Programm «DUP GT 0.595 * SWAP BEEP » gespeichert.

Steht im Stack die Zahl 0.6 als Wert für die Dauer von 0,6 Sekunden, und wird C0 durch die zugeordnete Menütaste ausgelöst, so ertönt ein Ton der Frequenz 0.595 x 440 = 261.8 Hz mit der Dauer von 0.6 Sekunden.
Die Einspeicherung des aufgerundeten Wertes 0.595 anstelle des theoretischen Wertes 0.5946035575 reicht hier vollkommen aus, weil die Rundung nur Bruchteile eines Hertz' ausmacht.

Urheber-Hinweis: Dieses Progrämmchen stammt nicht vom Autor, sondern es hat sich bei vielen anderen Musikstücken anderer Autoren auch schon beim HP 48GX bestens bewährt.

Nun kann der HP 49G alle Tonarten spielen.

 

Programmieren eines Liedes

Die ersten Töne des Liedes "Für Elise" von Ludwig van Beethoven sollen als Beispiel dienen.
Jetzt ist die Rede von Noten anstatt von Tönen. Der Liedanfang sieht so aus:

Als Notenbild:

"Für Elise" von Ludwig van Beethoven (Notenbild 1. Zeile)

Als Programm:

Hier ist nur die oberste Notenzeile bis zur 2. Pause als Programm-Beispiel angegeben. Das komplette Lied steht im bereitgestellten Programmverzeichnis MUSIK zur Verfügung.

«0.15 E2 DS2 E2 DS2 E2 H1 D2 C2 2 * A1 2 / P C1 E1 A1 2 * H1 2 / P DROP»

Die Länge der Achtelnote wird auf 0.15 Sekunden eingestellt. Das Lied beginnt mit der Achtelnote E2. Wenn eine Viertelnote folgt, muß die Länge verdoppelt werden, wie z. B. für die Note A1. Entsprechend muß wieder halbiert werden, wenn auf die Viertelnote eine Achtelpause folgt. DROP am Ende des Programms entfernt den von Note zu Note mit DUP weitergereichten Längenwert wieder vom Stack.

 

Musikverzeichnis

In der Datei MUSIK ist das gesamte Lied "Für Elise" mit allen Variablen und noch einige zusätzliche Beispiele und Informationen enthalten. MUSIK wird vom PC mittels Connectivity Kit auf den HP 49G übertragen.

Im Verzeichnis MUSIK sieht die erste Seite des Menüs so aus:

Musikverzeichnis, 1. Menüseite   

Nach dem Blättern mit [NXT] erscheint die zweite Menüseite:

Musikverzeichnis: 2. Menüseite

Das Menü enthält insgesamt 10 Seiten, die durch "weiterblättern" mit [NXT] erreicht werden, "zurückblättern" kann man durch [leftshift][PREV]. Hier sind außer den Variablen INFO, GT, GTA, ELISE, HANS, TONF, INF1 und NOTE auch die 48 Töne der obigen Tabelle und die "Pause" P gespeichert. Die Lieder und die zugehörigen Töne müssen in demselben Verzeichnis sein, damit die Aufrufe in den Liedern durch die Namen der Töne erfolgen können.

Erläuterung der einzelnen Felder der Menüseiten:

Menüfeld Inhalt
[INFO] Auswahlmenü mit kurzen Erläuterungen und den Frequenzen aller 48 Variablen
[GT] Variable für den Grundton. Er ist mit 440 Hz vorgegeben, kann aber jederzeit beliebig geändert werden.
[GTA] Ein kleines Programm "Grundton anlegen", wenn die Variable GT fehlt.
[ELISE] Programm für das vollständige Lied "Für Elise". Dieses Lied dauert auf dem HP 49G des Autors 2 Minuten 13 Sekunden. Es hat 2 Wiederholungsteile und ein "da capo al fine", die als Schleife programmiert werden könnten. Dieses Lied-Beispiel zeigt bei den schnellen Tonfolgen, daß durchaus auch Sechzehntelnoten gespielt werden können.
[HANS] Beispiel für das Lied "Hänschen klein" als Zahlenfolge. Der Inhalt dieser Variable muß im Stack stehen, wenn das Programm TONF den Inhalt spielen soll. Ich habe dieses Lied schon besser klingen gehört, aber hier sollte nur das Prinzip dargestellt werden.
[TONF] Das Programm "Tonfolge" spielt aus Texten oder Zahlen, die sich im Stack befinden, eine Tonfolge in C-Dur, wobei die Töne H0 bis D2 der C-Dur-Tonleiter durch die Ziffern 0 bis 9 dargestellt werden. Das Programm sucht sich aus dem Stackinhalt die Ziffern heraus und spielt sie mit dem entsprechenden Ton. Alle anderen Zeichen werden als "Pause" interpretiert.
[INF1] Diese Variable enthält als "Liste von Listen" die Daten für das Auswahlmenü INFO. Es dient nicht zum direkten Aufruf, kann aber nach Wunsch editiert werden.
[NOTE] Hier sind die Noten für die C-Dur-Tonleiter hinterlegt, die das Programm TONF verwendet.
C0 bis H3 Variable für die einzelnen Noten, die auch einzeln gespielt werden können, wenn die Länge des Tones im Stack abgelegt ist.
P Variable für die "Pause"

 

Eingeben von beliebigen Liedern

Vom HP 49G kann jedes beliebige Lied monophon gespielt werden.

Dazu hat man mindestens zwei Möglichkeiten:

  1. Man verwendet das MUSIK-Verzeichnis. Dann kann man die Notennamen und die Notenlänge nach dem bei dem Lied "Für Elise" gezeigten Schema zu einem Programm zusammenstellen:
    « <Notenlänge der ersten Note> <Notenname(n) nach obiger Tabelle> <evt. Änderung der Notenlänge> <Notenname(n) nach obiger Tabelle> ..... DROP ».
  2. Wer sich nicht an das obige Tonsystem halten will, kann auch die Frequenzen und Längen der Töne direkt eingeben:
    « <Frequenz> <Länge> BEEP <Frequenz> <Länge> BEEP ...» Dieses Programm wird unabhängig vom obigen MUSIK-Verzeichnis ausgeführt.

 

Das Handy-Klingeln

Das Handy-Klingeln ist unabhängig vom obigen Tonsystem als eigenständige Anwendung programmiert.

Hier wird für die aufeinanderfolgenden Töne die "reine Stimmung", nicht die "temperierte Stimmung" verwendet. Die Frequenzen der Töne haben ein ganzzahligen Verhältnis zueinander:

Dreiklang Töne
5:3:2 T5, T3 und T2
5:4:3 T5, T4 und T3
6:5:4 T6, T5 und T4

Die Tonfolge für den ersten Dreiklang in der Tabelle ist T5 T3 T2 T3, T5 T3 T2 T3, also ein "Ab und Auf" der Töne. Wenn dieses schnell genug abläuft, hört es sich wie Handy-Klingeln an.

4 verschiedene Klingeltonfolgen reichen aus. Die maximale Frequenz von 4400 Hz soll nicht überschritten werden, sonst klingt's nicht gut. Für die Töne werden folgende Frequenzen frei gewählt:

  1. Klingeltöne W1: T5 = 1250 Hz, T3 = 750 Hz, T2 = 500 Hz
    Programmvariable W1: «1250. 0.2 BEEP 750. 0.2 BEEP 500. 0.2 BEEP 750. 0.2 BEEP»
  2. Klingeltöne W2: T5 = 2500 Hz, T3 = 1500 Hz, T2 = 1000 Hz
    Programmvariable W2: «2500. 0.2 BEEP 1500. 0.2 BEEP 1000. 0.2 BEEP 1500. 0.2 BEEP»
  3. Klingeltöne W3: T5 = 4000 Hz, T3 = 2400 Hz, T2 = 1600 Hz
    Programmvariable W3: «4000. 0.2 BEEP 2400. 0.2 BEEP 1600. 0.2 BEEP 2400. 0.2 BEEP»
  4. Klingeltöne W4 (mit Frequenzverhältnis 6:5:4): T6 = 3000 Hz, T5 = 2500 Hz, T4 = 2000 Hz
    Programmvariable W4: «3000. 0.2 BEEP 2500. 0.2 BEEP 2000. 0.2 BEEP 2500. 0.2 BEEP»

Jede Programmvariable für sich ist schon funktionsfähig. Nun fehlt noch das "Haupt"programm KLING, das auf diese Variablen zurückgreift. Diese Wiederholungsschleife führt die Variable W0 10-mal aus. Die Variable W0 enthält den Inhalt einer der Variablen W1, W2, W3 oder W4. Dazu muß man den Inhalt der gewünschten Variablen in W0 speichern, z. B. W4 mit 'W4' RCL 'W0' STO.

KLING enthält das Programm «1 10 START W0 NEXT».

Die 5 Progrämmchen W1, W2, W3, W4 und KLING und die Variable W0 müssen sich in demselben Verzeichnis befinden.

Hier werden keine fertigen Programme in Dateiform geboten, die Programme muß der Leser selber eintippen.


Zum Beginn des Beitrags
Zur Beitragsübersicht
Copyright © 2002 Otto Praxl
Alle Rechte vorbehalten!