ANSI music
ANSI music | |
---|---|
Dateiendung: | .ans[1], .ams, .mus
|
MIME-Type: | text/x-ansi[2] |
Art: | Textdatei |
Enthalten in: | ANSI-BBS, ANSI-Art |
Standard(s): | ANSI-Escapesequenz (nicht Teil der Spezifikationen ANSI X3.64, ECMA-48, ISO/IEC 6429) |
Als ANSI
, englisch für ANSI-Musik, wird eine Erweiterung zu ANSI-BBS bezeichnet, mit der per ANSI-Escapesequenzen einfache Melodien auf dem PC-Lautsprecher ausgeben werden können.
BBS-Clients und ANSI-Treiber
ANSI-Musik war nur auf
, kurz BBS, verbreitet und benötigt einen BBS-Client oder einen ANSI-Treiber, der ANSI
unterstützt. Programme dafür blieben hauptsächlich auf PC-kompatibles DOS wie MS-DOS beschränkt. Nur wenige dieser Programme wurden auch auf Windows 9x und Windows NT portiert. Bekannte DOS-Programme mit ANSI-Musik-Unterstützung:
- QModem
- Telemate
- CI Link
- Slick Terminal
- SMT
- QCom
- BananaCom
Einfache Programme mit Unterstützung für ANSI
unter DOS sind A_TYPE
, eine Umsetzung von TYPE
, der ANSI-Treiber ANSIALL
sowie das Abspielprogramm ANSIPLAY
.[3]
Aufbau
ANSI-Escapesequenz
Der Aufbau der Musik-Funktion ist als Erweiterung für ANSI.SYS angelegt und wird mit der Escapesequenz CSI
, Control Sequence Intro, eingeleitet, gefolgt vom Buchstaben N
. Die ursprüngliche Einleitung war ←[M
, diese ist allerdings in ANSI X3.64 bzw. ECMA-48 bereits für SGR0
, Zeichenattribute ausschalten, vergeben, weshalb in späteren Versionen (ab Mitte der 1990er Jahre) die Einleitung ←[N
verwendet wird. ANSI-BBS-Programme der späten 1990er Jahre können meist jedoch beide Varianten korrekt interpretieren.
Bei ANSI-CSI-Escapesequenzen wird die Funktion erst mit dem letzten Zeichen festgelegt. ANSI
verwendet dafür Strg+N unter DOS, was ASCII SO
an Position 14
dezimal bzw. 0E
hexadezimal entspricht. DOS-üblich ist die Schreibweise ^N
. Esc wird in DOS in den meisten Texteditoren mit dem Linkspfeil ←
dargestellt.
Der gesamte Aufbau von ANSI-Musik folgt damit der ANSI-Escapesequenz CSI
:
←[N <Musik-Befehle...> ^N
Das entspricht dezimal 027 091 078 <Musik-Befehle...> 014
oder hexadezimal 1B 5B 4E <Musik-Befehle...> 0E
.
Musik-Befehle und Syntax
Für die Tonausgabe ist ANSI
angelehnt an die Funktion PLAY
von BASIC. Da in MS-DOS bis Version 4.01 GW-BASIC enthalten ist, kann ein Musikstück relativ einfach vorab erstellt und dann in einem Texteditor in eine ANSI-Escapesequenz übertragen werden. Bei späteren MS-DOS-Versionen ist dessen Nachfolger QBasic enthalten.
A-G
|
Note aus der Tonleiter; Beispiel C-Dur: C D E F G A B
|
P
|
Pause (kein Ton) |
+ oder #
|
♯ (englisch sharp) – einfache Erhöhung um einen Halbtonschritt; muss auf eine Note folgen |
-
|
♭ (englisch flat) – einfache Erniedrigung um einen Halbtonschritt; muss auf eine Note folgen |
.
|
punktierte Note – die Note wird um die Hälfte ihrer Dauer verlängert; muss auf eine Note oder Pause folgen; mehrere Punkte sind möglich |
Tnnn
|
Tempo, nnn zwischen 32 und 255 ; Voreinstellung: 120
|
On
|
Oktave Nummer n; Voreinstellung: Oktave 3
|
< oder >
|
Oktave um eins erniedrigen (<) oder erhöhen (>). |
Lnn
|
Länge (englisch length) oder Dauer (englisch duration) des Tons, entspricht dem Verhältnis zwischen Note/Pause; Voreinstellung: 4
|
MF und MB
|
Musik im Vordergrund (englisch foreground) oder Musik im Hintergrund (englisch background), die Voreinstellung ist normalerweise als Hintergrundprozess. |
MN
|
Musik Normal, setzt die Dauer auf 7/8 per L-Befehl |
ML
|
Musik Legato, setzt die Dauer auf voll (1/1) per L-Befehl |
MS
|
Musik Staccato, setzt die Dauer auf 3/4 per L-Befehl |
Zum Schreiben der Noten gibt es zwei Methoden:
- mit Setzten einer Tonlänge per Längen-Befehl
L
oder - mit Tonlängenangabe nach jeder Note.
Die Lesbarkeit der programmierten Noten ist bei Verwenden des Tonlängen-Befehls geringer.
Am Beispiel der ersten Zeile des Lieds
, nach der 1. Methode mit Längen-Befehl:
L4 EDCDEE E2 DD D2 EG G2
Und nach der 2. Methode mit der Tonlänge nach jeder Note:
E4 D4 C4 D4 E4 E4 E2 D4 D4 D2 E4 G4 G2
Der vollständige ANSI-Musik-Befehl für diese Liedzeile kann wie folgt aussehen:
←[N T90O2E4D4C4D4E4E4E2D4D4D2E4G4G2 ^N
Teil einer ANSI-Escapesequenz
Weil ANSI-Musik sonst die Textausgabe auf dem Monitor unterbricht und eventuell zu Darstellungsproblemen führt, sollten vor der Musik-Ausgabe die aktuelle Zeilen-Position und die Attribute gesichert werden, und danach zurückgesetzt. Das erledigen die ANSI-Escapesequenzen ←[s ←[8m
vor dem Musikteil und ←[u ←[a ←[0m
danach.
←[s
|
Speichert die aktuelle Zeile (englisch column), in der sich der Cursor befindet. |
←[8m
|
Unterbindet die Ausgabe auf dem Bildschirm (Zeichenattribut „unsichtbar“, englisch invisibility). |
ANSI music... Beispiel: ←[Ncdefgab^N
| |
←[u
|
Setzt den Cursor in die zuvor mit ←[s gespeicherte Zeile zurück.
|
←[a
|
Setzt den Cursor an den Anfang der aktuellen Zeile. |
←[0m
|
Setzt die Zeichenattribute zurück (nicht mehr unsichtbar). |
Groß-/Kleinschreibung
Der englische Begriff
beschreibt, wie ein System mit Groß- und Kleinschreibung umgeht. DOS ist traditionell
, es ist also nicht relevant, ob ein Großbuchstabe oder ein Kleinbuchstabe geschrieben wird. Dadurch bedeutet ←[M
dasselbe wie ←[m
und auch die Noten können sowohl groß als auch klein geschrieben werden.
Siehe auch
Weblinks
- ANSI Music + SMILE Viewer im Webarchive (englisch)
- ANSI MUSIC FILES (englisch)
Einzelnachweise
- ↑ fileformat.info
- ↑ Mime types for ANSI graphics – der MIME-Typ war nur ein Vorschlag und wurde nicht übernommen.
- ↑ Linda R. Bloom: BBS ANSI Music Tutorial 4.1 (BBSAMT41). (ZIP; 50KB) 28. September 1994, abgerufen am 9. März 2019 (englisch, Teil der BBS Documentary Library).