Der Sound ManagerAmplituden-HüllkurveDie Abteilungen des Betriebssystems: Der Sound ManagerDer Sound Manager bietet die Möglichkeit, neben der unveränderbaren Die Tonausgabe: Die möglichen Hüllkurvenformen (Reg. 13)Hüllkurve 0 (konstante Amplitude) 15 eigene Der Sound Manager: Amplituden-Hüllkurve Attack: Anschwellen (nicht bei 'angeschlagenen' Tönen)
Substain: Alle noch folgenden Anschlüsse fallen unter die Rubrik STEUER- oder auch CONTROLBUS:: HaltHalten
Delay: Ausklingen
Für jede Die Tonausgabe: Die möglichen Hüllkurvenformen (Reg. 13)Hüllkurve können bis zu fünf Abschnitte definiert werden, in denen man jeweils eine bestimmte Anzahl von Schritten, die Schritthöhe (Lautstärke-Änderung pro Schritt) und die Schrittlänge (Dauer eines Schrittes) festlegen kann. Damit kann man man leicht die drei Abschnitte (Attack, Sustain, Delay) nachbilden und, wenn man will, noch ein bisschen mehr. In Einleitung: BASIC In Maschinensprache geschieht die Programmierung einer Die Tonausgabe: Die möglichen Hüllkurvenformen (Reg. 13)Hüllkurve fast genauso: Man muss nur den Vektor &SOUND MANAGER: BCBC: SOUND AMPL ENVELOPEBCBC SOUND AMPL ENVELOPE aufrufen, und ihm in Operationen: BD5B / 349A / 349A: FLO SUBA die Nummer der Die Tonausgabe: Die möglichen Hüllkurvenformen (Reg. 13)Hüllkurve und in HL den Zeiger auf einen Datenblock übergeben. Der erste Eintrag im Datenblock ist die Anzahl der angegebenen Hüllkurven-Abschnitte und danach folgen die Angaben in der selben Reihenfolge wie im ENV-Statement. Dabei müssen nur soviele Abschnitte definiert werden, wie das erste Datentypen: Bytes +------------------------------------------------------+ ! Basic und Maschinencode: ParameterParameter der Der Sound Manager: Amplituden-Hüllkurve Folgende Werte sind erlaubt: Hüllkurven-Abschnitt (Software-kontrolliert)Schrittzahl: 0 ... 127 (0 setzt die Amplitude Adressierungsarten der Z80: Absolutabsolut auf die S.Höhe)
Schritthöhe: -128 ... 127 (entspricht 0 ... 255 in Assembler)
Schrittlänge: 0 ... 255 (wobei 0 einer Länge von 256 entspricht)
Um eine Die Tonausgabe: Die möglichen Hüllkurvenformen (Reg. 13)Hüllkurve zu programmieren muss man den gewünschten Verlauf der Amplitude in einem Diagramm eintragen und in bis zu 5 verschiedene Abschnitte unterteilen. Jeden Abschnitt muss man dann in eine geeignete Anzahl Treppenstufen unterteilen, die alle die gleiche Länge und Höhe haben. Die Diagramme im Handbuch des CPC 464, mit denen die Zerlegung eines Noten-Abschnittes in diese Treppenstufen für das ENV-Kommandos demonstriert werden, sind dabei nicht ganz korrekt: Hier sehen die einzelnen Treppenstufen so aus, als würde jeweils erst gewartet und dann das Volumen verändert. In Wirklichkeit ist aber genau andersrum: Zuerst wird das Volumen verändert, und dann gewartet. Das folgende Diagramm ist ein Beispiel: Start des Tons
^ _
| |3|_
| | .1|_
. | . 2|_
. _| . 3|_
. |2 . 4|_ keine weitere Amplituden-
. | . 5|___ Änderung, falls die Note
. | . . 1 |___ länger ist als diese
._| . . 2 |___ ^ Die Tonausgabe: Die möglichen Hüllkurvenformen (Reg. 13)Hüllkurve.
|1 . . 3 |___ |
| . . 4 |___.......................
| . . 5 .
_________|_____._________.___________________.______________________________
^_____^_________^___________________^
ENV 1, 3,+4,1, 5,-1,1, 5,-1,3
^ ^ ^
| | Schrittlänge
| Schritthöhe
Anzahl Schritte in diesem Abschnitt
Diese Die Tonausgabe: Die möglichen Hüllkurvenformen (Reg. 13)Hüllkurve besteht aus drei Abschnitten. Der erste, Attack, ist drei hundertstel Sekunden lang und steigert die Lautstärke um 3*4 = 12 Werte. Daraus ergibt sich, dass diese Die Tonausgabe: Die möglichen Hüllkurvenformen (Reg. 13)Hüllkurve mit einer Der Sound Manager: Start-AmplitudeStart-Amplitude im Bereich von 0 bis 3 benutzt werden kann! Größere Der Sound Manager: Start-AmplitudeStart-Amplituden bedeuten nämlich, dass die Lautstärke über den erlaubten Bereich (0...15) hinausgehen und, modulo 16, wieder bei 0 beginnen. Würde die Der Sound Manager: Start-AmplitudeStart-Amplitude beispielsweise mit 5 festgesetzt, so würde sie wie folgt geändert: - 5+4 = 9 Die Kodierung der Tintennummern in den Bildschirm-Bytes: Mode 2: Einige weitere Die CPU Z80: Besonderheiten der Z80 im Schneider CPCBesonderheiten müssen geklärt werden. Dauert eine angeschlagene Note länger, als die benutzte Die Tonausgabe: Die möglichen Hüllkurvenformen (Reg. 13)Hüllkurve definiert ist, so wird der zuletzt erreichte Wert ausgehalten. Ist die Note kürzer, so wird die Die Tonausgabe: Die möglichen Hüllkurvenformen (Reg. 13)Hüllkurve abgebrochen. Wird in einem Bereich der Die Tonausgabe: Die möglichen Hüllkurvenformen (Reg. 13)Hüllkurve eine Schrittzahl mit 0 Schritten festgelegt, so wird die zugehörige Schritthöhe als Adressierungsarten der Z80: Absolutabsoluter Wert betrachtet, und die Lautstärke auf diesen Wert gesetzt. Macht man von dieser Möglichkeit im ersten Abschnitt Gebrauch, so wird die Angabe einer Der Sound Manager: Start-AmplitudeStart-Amplitude im Sound-Statement praktisch wirkungslos. Weil die Amplitude VOR der Wartezeit auf den neuen Wert gesetzt wird, kommt die Der Sound Manager: Start-AmplitudeStart-Amplitude keine einzige hundertstel Sekunde zum Zug. Wird die Lautstaeke auf einen Adressierungsarten der Z80: Absolutabsoluten Betrag gesetzt, so wird die angegebene Schrittlänge einmal abgewartet. Bei den Schrittlängen wird die Angabe '0' als 256/100 Sekunden interpretiert. |