add directory study
This commit is contained in:
120
study/sabre/os/files/Sound/ANSIMusicTechDetails.txt
Normal file
120
study/sabre/os/files/Sound/ANSIMusicTechDetails.txt
Normal file
@@ -0,0 +1,120 @@
|
||||
ANSI Music - The Technical Details
|
||||
|
||||
ANSI is an acronym for "American National Standards Institute" and
|
||||
actually has little to do with this "ANSI music" stuff. However, the
|
||||
American National Standards Institute defined a set of codes for
|
||||
terminals to provide a standard for cursor control. This was expanded to
|
||||
include graphics modes and color with the release of the ANSI.SYS device
|
||||
driver. It wasn't actually ANSI who expanded the set of codes to include
|
||||
the graphics, which are specific to IBM compatible computers with
|
||||
certain video adapters, but the name ANSI stuck. The original purpose of
|
||||
ANSI cursor control was to give mainframes a way to control the cursor
|
||||
on various terminals connected to them. The purpose of the ANSI.SYS
|
||||
driver was to give programs a simple and compatible way of controlling
|
||||
the video screen. However, it seems that the only real use for ANSI has
|
||||
been to give BBS's the ability to control the screen colors and cursor
|
||||
positioning. This even led to a new artform, but let's not even think
|
||||
about that. It's too much like Art Deco. In CGA color, no less.
|
||||
The ANSI.SYS driver also includes provisions for redefining keys
|
||||
on the keyboard. This can be used for character translation or to create
|
||||
simple macros. It has even been used to create trojan text files that
|
||||
redefined your keys to destroy data (i.e. your enter key becomes "DEL
|
||||
*.* <return> Y <return>"). Watch out for this kind of thing. It's not
|
||||
hard to do.
|
||||
|
||||
Now I said that the actual "ANSI" organization had little to do
|
||||
with "ANSI music." The reason that the music codes were given the name
|
||||
"ANSI" is because they start with the same escape sequences. All ANSI
|
||||
codes start with <esc>[ as do the music codes. What I mean by <esc>[ is
|
||||
the escape character (27 decimal, 1E hex) and the open-bracket
|
||||
character. Now, on to the REAL details of ANSI music.
|
||||
|
||||
As I just got through saying, ANSI music starts with the
|
||||
characters <esc><open-bracket>. An ANSI music sequence ends with the
|
||||
character <control-N> (14 decimal, 0E hex). In between, the commands are
|
||||
exactly the same as those used for the "PLAY" command in BASIC. Now you
|
||||
can just look up the PLAY command and you know most everything you need
|
||||
to know about ANSI music. But for those of you still confused, I'll
|
||||
summarize the PLAY commands and give a few examples and pointers. Here
|
||||
we go:
|
||||
|
||||
The PLAY commands are pretty simple. This info was taken from the Tandy
|
||||
BASIC reference manual, but the Tandy-specific commands are not
|
||||
recognized by ANSI music and will be left out. Here we go again:
|
||||
|
||||
A - G Plays the notes corresponding to the notes A-G on the musical
|
||||
scale. A # or + after the note makes it sharp, and a - makes
|
||||
it flat.
|
||||
|
||||
Ln Sets the duration of the notes that follow. n is a number from
|
||||
1 to 64. 1 is a whole note, 2 is a half note, 4 is a quarter
|
||||
note, 8 is an eighth note, etc.
|
||||
|
||||
On Sets the current octave. There are 7 octaves, 0 through 6. The
|
||||
default octave is 4. Each octave starts with C and ends with B.
|
||||
Octave 3 starts with middle C.
|
||||
|
||||
Nn Plays a note. n is in the range 0 to 84. Instead of specifying
|
||||
the note's letter and octave, you may specify the note's number.
|
||||
Note zero is a rest.
|
||||
|
||||
Pn Plays a rest (if that's the right terminology). n is the same as
|
||||
for the L command, but specifies the length of the rest.
|
||||
|
||||
. Plays the note as a dotted note. You music buffs know that means
|
||||
that the note is one half it's length longer when dotted. Place
|
||||
the dot after the note, not before it. More than one dot may be
|
||||
used after a note, and dots may be specified for rests.
|
||||
|
||||
MF, MB I'm not sure these options work. Music Foreground and Music
|
||||
Background. Supposedly these options will let you specify
|
||||
MF and have the computer stop whatever it's doing and play
|
||||
the note, while MB lets the computer do whatever it was doing
|
||||
and play the note at the same time, kind of lo-tech multitasking.
|
||||
The default (for BASIC anyway, and it seems for ANSI-music) is
|
||||
Music Background.
|
||||
|
||||
MN "Music Normal." Each note plays 7/8 of the duration set by the
|
||||
L command.
|
||||
|
||||
ML "Music Legato." Each note plays the full duration as set by the
|
||||
L command.
|
||||
|
||||
MS "Music Staccato." Each note plays 3/4 of the duration set by the
|
||||
L command.
|
||||
|
||||
That's it for the basic set of commands. There are other options
|
||||
in BASIC that are unusuable in the ANSI music, such as the X command
|
||||
which lets you include a variable name in the play command, where a
|
||||
string variable name is given and the string contains a series of play
|
||||
commands. Another command which is usable only on a Tandy or other
|
||||
computer with the TI sound chip (the PCjr, for instance) is the V
|
||||
command, for setting the volume of the sound. Now for some examples.
|
||||
|
||||
<esc>[cdefgab<control-n> plays the notes "cdefgab" (the entire octave) on
|
||||
the default octave 4.
|
||||
|
||||
<esc>[l4al2cl8e<control-n> plays a quarter-note A, a half note C, and an
|
||||
eighth-note E. Not too musical, but an
|
||||
example nonetheless.
|
||||
|
||||
I'm not one for giving too many examples, I think that's plenty
|
||||
for you to get the basic idea. Try it in BASIC before you try it as an
|
||||
ANSI code in a message/picture. Just type PLAY "ABCDE" <return> and put
|
||||
whatever you like in the quotes. That's the easiest way to work out the
|
||||
notes and get the timing right before you blast it up to your favorite
|
||||
BBS.
|
||||
*********** Closing Comments ***********
|
||||
|
||||
I only know of two major comm programs that support ANSI music:
|
||||
TeliMate and Qmodem. I personally prefer TeliMate. If we (the collective
|
||||
we, that is) spread the use of ANSI music, hopefully the makers of other
|
||||
comm programs will incorporate this feature. If the makers of Telix and
|
||||
Procomm included this, that would cover 95% of IBM compatible BBS'ers. A
|
||||
new version of Telix is due out in a few months and I'm hoping this new
|
||||
version will add ANSI music. I gave up Procomm years ago, so I don't
|
||||
really know when a new version of that's due out, but it still seems to
|
||||
be the most common terminal program around. Still, TeliMate is gaining
|
||||
popularity for its mouse support and multitasking ablility (I wrote most
|
||||
of this document while downloading a 371k file at 1200 baud), and Qmodem
|
||||
is pretty popular already.
|
||||
Reference in New Issue
Block a user