Copy Link
Add to Bookmark
Report
NULL mag Issue 06 17 sound in BBSes
as i have mentioned in previous articles, i think that the telnet
client programs we have today, haven't evolved since the 80s-90s, in
terms of added features/capabilities. If you check Syncterm and
Netrunner, which i think are the most used programs, are almost the
same as Terminate, Telix, Telemate etc.
one of these features i would love to see, in all modern telnet
clients, is music! yep... music! in a bbs... and not just any music,
but track music, like .mod, .it, .xm etc. so here i am explaining my
way of implementing music in a bbs, which i did implement in blocker
(my telnet client) and you find here:
https://github.com/xqtr/blocker_bbs_telnet_client
first of all... the bbs doesn't have any music files, that are
downloaded automatically, like in a browser. all music files should be
pre-installed (pre-downloaded) by the user who uses blocker or another
client. a bbs should only implement some special characters into the
ansi graphis/text and also a package with the tracks that wants to
have as music/sounds in the bbs.
so... the codes... it could be anything... simple text, special
characters or even escape sequences, like ANSI codes. For my
implementation i chose special characters. specifically i use
character 01d, which is called Start Of Header or SOH. i didn't choose
the bell character, in case some programs, do "translate" it as a
sound/beep and because SOH, means the start of packet, like in this
case. i used the SOH char. like pipe codes do. so any "music code" has
this format: SOHxx where xx can be any other character, even a special
one.
for blocker i used this codes:
SOHSOHSOH : tells the program to use the kill process function
SOH00 to SOHFE : is the code for a track to be played, in hexademical
format. SOH00 will play track 00, SOHFE will play
track 254. all track numbers are stored in an ini
file.
SOHFF : i kept FF as a special function to play a random
track from a specified directory. this way you can
even have more than 254 tracks to play in a bbs,
which are more than enough, i think.
for now, these codes are enough. there is space for even more codes,
if someone thinks some cool feature or this project goes well and is
accepted from the scene.
- x - x - x -
the terminal client, will interpret these codes, as soon as it gets
them, while getting data from a bbs and act accordingly. so, this
feature has to be built in the terminal client to be achieved.
i know, that perhaps all these seem awkward to you, but the end result
is awesome! being able to browse/navigate to a bbs, listening sound
effects or track music, it gets the whole bbs experience to another
level. test it, by getting blocker and connect to Another Droid BBS
[andr01d.zapto.org:9999], where i have implemented a sound scheme. i
am sure, others can do better work.
- x - x - x -
back to the project. when the terminal client gets a music code, it
must read an ini file, that contains info on what track to play and
where this track is. an example ini file is the following:
[music]
dir=|BDmusic/adbbs/
01=modem.xm
02=shades.mod
03=programming.xm
04=ham.xm
05=transition.xm
06=logout.xm
07=droid1.xm
08=transform.xm
09=syndicate.mod
it's very simple. keys 01-09 are used in conjunction with the music
codes SOH00 to SOHFE, as we said earlier. in the example above we use
only tracks 01 to 09. the numbers doesn't have to be in a sequence.
you can use number 1A and then B2, without including the numbers
between. as long the music code from the bbs, has the key in the ini
file, with the same number, we are good to go and the track will be
played. each key/value has the filename of the track to play. only the
filename, no paths!
the "did" key, is the folder which contains all the music tracks,
which can be anywhere in your disk, but must be in the same place,
under the same directory.
you can also have a sub-directory named "random" in this directory. in
this directory you can have as many files you want. those files will
be played when the SOHFF command will be executed. only one track
will be played each time, not all of them. this way, by using only the
SOHFF code, in the same position/menu in your bbs, you can play
different tracks and make things more intriguing :)
for my implementation in blocker, i use XMP as the track player. i
chose XMP, because it can play many track formats and it has a small
size. it lacks a way to interact with it, while running, so another
solution would be better and would give us the possibility to make
pause, play, next track etc. music codes. if you know one, inform me,
plz.
i hope you like the idea and if you have to make any suggestions about
how it would be better to implement this idea, just send an email or
leave a message to Another Droid BBS.