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>
|