5.7 Wie es funktioniert: Musik und Melodien
5.7.1 Musiknoten
Mit Takten ab 1 MHz sind bei zu 63 verschiedene Musiknoten verfügbar, bei
32kHz wegen der niedrigen Erzeugungsfrequenz nur die untersten 45 Musiknoten.
Die Benennungen der Musiknoten beginnt mit dem Buchstaben n für Noten, gefolgt
vom Tonbuchstaben der Oktave, also A, H, C, D, E, F und G, und der Oktave, die
von 0 bis 9 (bei 32kHz: 6) reicht.
Allen Notensymbolen sind Konstanten zwischen 1 und 63 (32 kHz: 45) zugeordnet. Die
Note 0 oder cPause bewirkt, dass die Tonausgabe ausgeschaltet wird (stumme
Pause). Die Note 255 oder 0xFF bewirkt, dass das Musikstück an dieser Stelle
endet. Falls sich die Uhr im Einstellmodus befindet und Wecken eingeschaltet ist
sowie die beiden Flaggen mit bAdjHr = 0 und bAdjMin = 0 ausgeschaltet
sind, wird automatisch die mit dem Poti eingestellte Melodie abgespielt. Andernfalls
wird die Tonausgabe über TC1 abgeschaltet und wird erst wieder beim erneuten
Wecken aktiviert.
Die Libre-Office-Calc-Dateil uhr60-4.ods enthält im
Blatt "musiknoten" ein Berechnungsmodell für die Musiknoten. Das Blatt
funktioniert für alle im Blatt "quarze" angebotenen Quarzfrequenzen.
Es berechnet für alle Musiknoten
- das Notenkürzel,
- die Sollfrequenz in Hz,
- wo notwendig den Vorteiler (1 oder 8),
- den im OCR1A einzustellenden CTC-Wert,
- die sich ergebende Ist-Frequenz, und
- die Abweichung der Ist-Frequenz von der Sollfrequenz in %, und
- die Anzahl CTC-Durchläufe für eine Sekunde Dauer (= 2 * Frequenz).
In Zelle D4 ist diejenige Note angeführt, ab der der Vorteiler von 8 auf 1
wechselt (ist nur bei erhöhten Frequenzen oberhalb von 3,2768 MHz notwendig).
In den beiden Spalten danach sind alle Noten in Assembler-Quelltext übersetzt.
Die Tabelle Noten: enthält alle Notenkonstanten, die Tabelle
Notentabelle: enthält für alle Noten die einzustellenden CTC-Werte
und die Dauer in CTC-Durchgängen pro Sekunde. Beide Tabellen können (einzeln)
markiert, kopiert und in den Quellcode eingefügt werden. Die Konstante
nPresc8, die ebenfalls zu der zweiten Tabelle gehört, bewirkt im Quelltext,
dass der Vorteiler automatisch auf 8 gesetzt wird, wenn die Note das nötig macht.
Bitte bei der Verwendung beachten, dass bei 32 kHz Noten der sechsten Oktav ziemlich
unsauber sind, weil sie schon recht stark vom Sollwert entfernt liegen. Bitte diese
Oktave beim Musikstückeln, wenn möglich, vermeiden.
5.7.2 Melodien
Per Default enthält der Assembler-Quellcode acht Melodien. Bitte die
Melodiensammlung beachten um zu sehen, wie diese Melodien kodiert sind.
Jeder Tone besteht aus zwei Bytes: das erste Byte kodiert die Notennummer (nTN),
das zweite Byte gibt deren Dauer an. Dauern sind Vielfache einer 16-tel Sekunde. Die
Standardpause zwischen Tönen ist vier Sechzehntel Sekunden lang, das kriegt man
mit .db 0,4 exakt so hin. Die Maximaldauer ist 16 Sekunden, bei den höchsten
Tönen auch etwas weniger.
Melodien sind folgendermaßen kodiert:
MelodyN:
.db nC2,1,nD2,2,nE2,4,nF2,8,nG2,16 ; Ohne Pausen
.db nC3,1,0,4,nD3,2,0,4,nE3,4,0,4,nF3,8,0,4,nG3,8,0,4 ; Mit Standard-Pausen
.db 0xFF,0xFF ; Ende der Melodie