213 lines
11 KiB
Plaintext
213 lines
11 KiB
Plaintext
|
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.
|
|||
|
|
|||
|
USING ANSI-MUSIC WITH WWIV 4.10
|
|||
|
|
|||
|
You have two options. Use the full-screen editor known as FSED13
|
|||
|
(the full-screen editor used by most WWIV systems, if not all of them)
|
|||
|
or use the //UPLOAD command at the main menu to upload your creations. I
|
|||
|
prefer the FSED method, since it allows for musical macros and other
|
|||
|
annoying tricks like that. To use the //UPLOAD method, you must first
|
|||
|
create your message with music and all with some off-line text editor
|
|||
|
that lets you put the escape character in a file by hitting <esc> or
|
|||
|
<control-[>. You'll end up with something that looks like an arrow
|
|||
|
pointing to the beginning of the line if you did it right. Then put an
|
|||
|
open-bracket, the series of PLAY commands, and the <control-n>. You'll
|
|||
|
notice that the <control-n> character is in fact... TWO CONNECTED
|
|||
|
MUSICAL NOTES! Pretty witty of the designer, eh? Anyway, place this file
|
|||
|
in your upload directory, call your favorite WWIV system, type //UPLOAD
|
|||
|
at the main menu, and upload the file you created like you would any
|
|||
|
other uploadable file. Your next message (posted or e-mailed) will
|
|||
|
contain that text, and the codes for the music.
|
|||
|
To use FSED13, it's a bit easier. The backslash key will let you
|
|||
|
enter the hex value of any character, and it'll send that character in
|
|||
|
the message without interpreting it in any way. Therefore, an escape can
|
|||
|
be created by typing \1b and a control-N is \0e. That way you can,
|
|||
|
without ever logging off the system, type:
|
|||
|
|
|||
|
\1b[cdefgab\0e
|
|||
|
|
|||
|
and it'll send the notes "cdefgab" as music. Incidentally, you don't
|
|||
|
actually see the \1b on the screen, but if you hit backslash, it should
|
|||
|
let you type the two hex digits without displaying them. That's how you
|
|||
|
know if it's working properly. And that's all there is to the FSED method.
|
|||
|
|
|||
|
On my comm program, the music codes are not hidden, and I have
|
|||
|
to manually add normal ANSI codes to hide them. The ANSI code for
|
|||
|
"invisible" is:
|
|||
|
|
|||
|
<esc>[8m The "m" has to be lowercase.
|
|||
|
|
|||
|
Using FSED, that can be entered as \1b[8m
|
|||
|
|
|||
|
The command for "Normal text" is <esc>[0m (\1b[0m for you FSED users).
|
|||
|
|
|||
|
So, using FSED, you would probably do something like this:
|
|||
|
|
|||
|
\1b[8m\1b[cdefgab\0e\1b[0m
|
|||
|
|
|||
|
If you don't use the ANSI hide and unhide commands, you will see a bunch
|
|||
|
of your notes on the screen, which looks mighty ugly.
|
|||
|
|
|||
|
*********** 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.
|
|||
|
|
|||
|
If I was inaccurate, unclear, or otherwise confusing or wrong,
|
|||
|
or if you simply have comments, I can be reached through your local
|
|||
|
WWIVnet board by e-mailing 1@4353. I am the sysop of the Non-Smurf WWIV,
|
|||
|
a not-too-spectacular but loads of fun BBS in Greenfield, MA.
|
|||
|
413-772-2716. If you can't possibly reach me by WWIVnet and really want
|
|||
|
to tell me something, my address is:
|
|||
|
|
|||
|
Mike Barnard
|
|||
|
24 Temple Ave.
|
|||
|
Greenfield, MA 01301
|
|||
|
|
|||
|
That's all for today, boys and girls. Please distribute this
|
|||
|
file as widely as possible, upload it to as many BBS's as you can
|
|||
|
possibly call, and help spread ANSI music mania. Hell, go as far as to
|
|||
|
make it a trendy element of pop-culture that never loses it's appeal,
|
|||
|
like the Rolling Stones or bright neon signs. So long, and have fun.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Another file downloaded from:
|
|||
|
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͻ
|
|||
|
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Cheez Whiz BBS Ǯ<><C7AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ
|
|||
|
(408) 363-9766
|
|||
|
|
|||
|
"Where the conversation flows like liquid cheese"
|
|||
|
|
|||
|
A file/message base BBS like you've never seen before! With the
|
|||
|
emphasis on knowledge, free exchange of ideas, thoughtful insights,
|
|||
|
obscure/esoteric information, and libelous speculation regarding
|
|||
|
Madonna. It's all here, and it's all free for the taking. No 900
|
|||
|
numbers, no salesman will visit your home. One of the last few free
|
|||
|
things left in America.
|
|||
|
|
|||
|
Zardoz - Sysoping for your pleasure
|
|||
|
|
|||
|
A list of other NIRVANAnet systems
|
|||
|
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ
|
|||
|
<20> Just Say Yes 415/922-2008 Freedom of Speech <20>
|
|||
|
<20> Rat Head 415/524-3649 Bad Crazyness and Wild Stuff <20>
|
|||
|
<20> &TOTSE 415/935-5845 Screaming Electrons <20>
|
|||
|
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|