This manual documents using Mserv through the built-in telnet interface. You will need a telnet client to make use of this feature. If you prefer graphical interfaces where you simply click to perform actions then this is not the method for you - check out the clients that are available.
If you are a new user, it is recommended you read through this manual from top to bottom - until you get bored, that is.
Before you begin you will need a username and password in order to connect to the server. Your Mserv administrator will give this to you. Once you have connected to the system you can change your password, however your username is unique to you and cannot be changed easily.
If you have successfully connected to the server you will be presented with text that looks something like:
Connected to server.mserv.org. Escape character is '^]'. 200 Mserv 0.30 (c) James Ponder 1999-2000 - Type: USER.
This is the welcome banner and announces the version of Mserv that you have connected to. As you can see, it suggests that you type USER <username> to continue. Commands in Mserv are case insensitive, so you can use USER or user or infact anything inbetween the two. Command parameters are always separated from one another with one or more spaces. If your username is fred, you would type something like:
USER fred
Once you have typed in USER followed by your username, you will be prompted for your password, like so:
201 Username ok - now type: PASS.
This means that the server has understood your connection request and requires a password to authenticate you. In exactly the same way that you specified your username, specify your password by typing PASS followed by your password. If your password is silly then you need to type:
PASS silly
If your username and password were valid, Mserv will greet you with:
[] Successfully authenticated! Welcome fred.
From this point on, all server responses are prefixed with [] so that it is easy for you to distinguish something you have typed from that which the server has said.
To quit, simply type:
QUIT
There are no further parameters to this command.
To set a new password you need to know your old password. This might sound strange but this is to ensure someone else doesn't change your password whilst you are away from the keyboard.
The command you need to use is PASSWORD, which has two parameters - your old password and your new password. For example, if your old password was silly and you would like your new password to be wiggle, you would type:
PASSWORD silly wiggle
Note: Passwords are encrypted on the server, but because you are connected using telnet your password could be read off the network, and as such you should choose a password for Mserv that is different from any other. Also, you can never stop the Mserv administrator from altering their copy of Mserv to store user's passwords.
Mserv has a simple, but very effective, help system. All commands have descriptions and syntax information available. You should get used to using it as it is extremely useful.
To start, simply type:
HELP
The server will respond with a list of commands. Only the commands that you have access to are displayed:
[] This is Mserv version 0.30 [] Commands: [] QUIT HELP USER PASS DATE [] STATUS USERINFO WHO SAY EMOTE [] ALBUMS TRACKS RATINGS QUEUE UNQUEUE [] PLAY STOP NEXT PAUSE CLEAR [] REPEAT RANDOM FILTER FACTOR TOP [] VOLUME BASS TREBLE HISTORY RATE [] CHECK SEARCH SEARCHF ASEARCH INFO [] PASSWORD IDEA X
Once you have identified a command you'd like more information on, type:
HELP <command>
For example, let's say you're interested in the HELP command itself, so you would type:
HELP help
The response from the server is two lines - the first is a description of the command itself, and the second is a syntax line that indicates what parameters are available. For the command HELP:
[] Displays help [] Syntax: HELP [<command> [<sub-command>]]
The syntax lines are standard BNF syntax:
Thus, you can specify HELP with no parameters, or HELP <command> or lastly HELP <command> <sub-command>. The latter form is useful for commands like SET which have sub-commands, rather than being a command itself.
Mserv is designed around having a large number of albums containing a small number of tracks, thus mirroring real-life CD collections.
To list the albums available, type:
ALBUMS
The server will list the albums in the following format:
[] 1 Abba Gold (Greatest Hits) [] 2 Abba The music still goes on [] 3 Alanis Morisette Jagged little pill [] 4 Alisha's attic Alisha rules the world [] 5 Alisha's attic Illumina [] 6 All Saints All Saints [] 7 Andre Delgada Mountain Moods [] 8 Aqua Aquariumetc.
The albums are numbered, and all commands use this number to reference the album. You are not expected to remember these numbers, but they will be displayed to you for typing in. All albums have an author and a name, displayed above side by side.
The command TRACKS is used to list the tracks inside an album. It takes one optional parameter which specifies the album number. Without a parameter this command displays the tracks within the album that the currently playing track came from.
So, if you were to type:
TRACKS 8
The server will reply listing the tracks in the following format:
[] Tracks in album 'Aquarium': [] 8/1 S Aqua Happy boys & girls 3:39 [] 8/2 G Aqua My oh my 3:26 [] 8/3 G Aqua Barbie girl 3:19 [] 8/4 N Aqua Good morning sunshine 4:06 [] 8/5 G Aqua Doctor Jones 3:25 [] 8/6 G Aqua Heat of the night 3:37 [] 8/7 N Aqua Be a man 4:25 [] 8/8 S Aqua Lollipop (Candyman) 3:38 [] 8/9 S Aqua Roses are red 3:47 [] 8/10 N Aqua Turn back time 4:11 [] 8/11 N Aqua Calling you 3:32
On the far left is the track number, written in <album>/<track> form. All command parameters are space separated so when entering an album/track combination into a command make sure you don't put the /.
The letter that follows the track number is your current rating of the track. If you've not rated the track it will be a - which indicates that it is unrated.
The next two columns contain the author and name of the track. Note that although in this example the author of all the tracks are the same as the author of the album, this does not necassarily have to be the case.
The time on the far right is the track length in <minutes>:<seconds>.
The INFO command is used to display information about albums or tracks. Without a parameter this command will display information about the currently playing track. With one parameter this command displays information about the specified album, and with two parameters this command displays information about the specified track.
So, if you typed:
INFO 8
The server response would be:
[] Album 8 [] Album name: Aquarium [] author: Aqua [] Total duration: 41:10.2
The name and author of the given album are displayed, along with a total of all the durations within the album. This total is not a property of the album as such, it is simply calculated from the tracks within it.
If you typed:
INFO 8 3
The server would interpret this as a request for information on track 3 in album 8:
[] Album 8, track 3 [] Track name: Barbie girl [] author: Aqua [] Album name: Aquarium [] author: Aqua [] Dated: unknown [] Duration: 3:19.9 (256kbps) [] Genre(s): pop [] Played: 21 days ago [] Filter: included [] Rated: GOOD; mean 75.0% [] temporally adjusted to 71.2%
The information above is described below:
The QUEUE command is used for displaying the current queue contents, as well as for adding new tracks and even albums to the queue.
So, if you type:
QUEUE
the contents of the queue are displayed:
[] The following tracks are in the queue: [] squish 169/10 S The Doobie Brothers Long train running 3:28 [] squish 53/6 S Dubstar Week in week out 4:26 [] squish 155/1 S The Corrs Only when I sleep 4:24 [] squish 181/1 S Tasmin Archer Sleeping satellite 4:41
The next track to be played is at the top, with the most recently added queue entries at the bottom.
If a different user adds a track to the queue, their track will be placed inbetween any consecutive songs that were queued by the same user. This means that a single user cannot dominate the queue by repeatedly adding entries. Note however that Mserv is a co-operative environment, there are no restrictions stopping a user from removing someone else's track from the queue, or infact clearing it entirely.
To queue track 8/9, type:
QUEUE 8 9
The server will reply with:
[] The following tracks have been added to the queue by squish: [] squish 8/9 S Aqua Roses are red
This output is actually a broadcast message, which means that as well as being shown to you, it has also been sent to all users currently connected, thus alerting them that you have placed a new item in the queue.
You can also queue an entire album by omitting the second parameter, so to queue the entire album 3:
QUEUE 3
This will cause a broadcast message to everyone looking like:
[] The following tracks have been added to the queue by squish: [] squish 3/1 G Alanis Morisette All I really want 4:44 [] squish 3/2 - Alanis Morisette You oughta know 4:09 [] squish 3/3 - Alanis Morisette Perfect 3:07 [] squish 3/4 N Alanis Morisette Hand in my pocket 3:41 [] squish 3/5 - Alanis Morisette Right through you 2:55 [] squish 3/6 N Alanis Morisette Forgiven 5:00 [] squish 3/7 G Alanis Morisette You learn 3:59 [] squish 3/8 - Alanis Morisette Head over feet 4:27 [] squish 3/9 - Alanis Morisette Mary Jane 4:40 [] squish 3/10 N Alanis Morisette Ironic 3:47 [] squish 3/11 - Alanis Morisette Not the doctor 3:47 [] squish 3/12 G Alanis Morisette Wake up 4:53
As you can see this queues up the tracks in order that they appear in the album. If you wish the server to randomly play the tracks in an album then specify RANDOM as the last parameter. Each time an album is queued it will be randomised differently. So, sticking with album 3, type:
QUEUE 3 random
and magically, the server will randomise the tracks and output a broadcast:
[] The following tracks have been added to the queue by squish: [] squish 3/12 G Alanis Morisette Wake up 4:53 [] squish 3/9 - Alanis Morisette Mary Jane 4:40 [] squish 3/2 - Alanis Morisette You oughta know 4:09 [] squish 3/10 N Alanis Morisette Ironic 3:47 [] squish 3/6 N Alanis Morisette Forgiven 5:00 [] squish 3/4 N Alanis Morisette Hand in my pocket 3:41 [] squish 3/3 - Alanis Morisette Perfect 3:07 [] squish 3/5 - Alanis Morisette Right through you 2:55 [] squish 3/7 G Alanis Morisette You learn 3:59 [] squish 3/1 G Alanis Morisette All I really want 4:44 [] squish 3/8 - Alanis Morisette Head over feet 4:27 [] squish 3/11 - Alanis Morisette Not the doctor 3:47
If you wish to remove a track from the queue you can use the UNQUEUE command. For example, if you wished to remove track 3/8 you would type:
UNQUEUE 3 8
Lastly, to clear the queue, type:
CLEAR
The server will acknowledge this with the broadcast:
[] Queue cleared by squish
Assuming the server is idle, queuing a track does not start it playing. To do this, you must type:
PLAY
Which will commence play of the first track in the queue. If there are no tracks in the queue, or the queue becomes empty in play mode, then play will stop or the server will start to play random tracks (if enabled).
Whilst a track is playing, you may pause playback by typing:
PAUSE
To resume play, issue PLAY again.
To stop play you can type:
STOP
The queue is not cleared by stopping, so that you can resume play by issuing PLAY.
This will stop play of the currently playing track and move onto the next track in the queue, or the next random track if the queue is empty (if random is enabled).
This command causes the currently playing song to be placed back on the queue.
Normally the server is not enabled for random play, and will only play tracks entered into the queue. Mserv has an advanced random system that tries to play tracks that those in the room want to hear. This works because users (over time) rate tracks on the server. Mserv combines the users ratings of those who are currently logged on to produce a mean value, and then adjusts this value according to how long ago it was played (temporal adjustment).
The RANDOM command takes one optional parameter, on or off. For example, to turn on random play, type:
RANDOM on
To display the current setting, type RANDOM on it's own.
Once Mserv has sorted the tracks based on their rating, it chooses a track. In order to not be completely random it has a higher chance of choosing tracks further up the list (higher rated tracks) than ones lower down the list. In order to do this it passes it's random number through a power/log function.
You can set how 'more likely' Mserv is to play tracks with higher ratings by adjusting the FACTOR. This factor is set to 0.60 by default. Any values above 0.5 mean the server will play favoured tracks, any values below 0.5 mean the server will play unfavourable tracks! (US. favor/favorable)
Note that the special value 0.5 means the server will play truely random tracks and user's ratings will not affect choice.
For example, for it to be more likely for the server to play your worst tracks, type:
FACTOR 0.2
There are five levels to which a track can be rated: AWFUL, BAD, NEUTRAL, GOOD and SUPERB. These levels are associated with you liking the track 0%, 25%, 50%, 75% or 100%. A generally accepted way of rating is to rate tracks NEUTRAL if you don't care much for the track, but are happy to listen to it. Rate tracks GOOD if you like the track, but not enough to go wild about it, and SUPERB if you love it. Rate something BAD if you don't like the track and AWFUL if you want to ensure the music server will never ever play the track in random mode (this rating is special in this regard).
There are two other rates that the server might think you've rating a track that occur automatically: UNRATED and HEARD. All tracks start off UNRATED and become HEARD when you listen to them the first time. This is mostly for information purposes when you use the INFO command.
The RATE command takes between 1 and 3 parameters, the last of which is always one of the five ratings listed above. If you don't specify anything else then this is an instruction to rate the currently playing track. For example:
RATE GOOD
rates the current track, GOOD. You also rate any track on the server by giving the command the album and track you wish to rate:
RATE 8 3 GOOD
Although it's not recommended, you can also rate an entire album. This will only affect tracks that haven't been rated, thus 'filling in the blanks', e.g.:
RATE 8 NEUTRAL
Will rate all tracks NEUTRAL in album 8, except track 3, since it was rated GOOD above.
The INFO command shows you what you rated a track, but in order to see what everyone else rated a track you need to use the RATINGS command, for example:
RATINGS 8 3
This will return something like:
[] Ratings of track 'Barbie girl' (8/3): [] Jogu GOOD - 12th April 1999 [] XLCUS NEUTRAL - 12th April 1999 [] squish GOOD - 2nd May 1999 [] glen GOOD - 5th October 1999 [] jon SUPERB - 26th July 1999 [] Polsy GOOD - 4th August 1999 [] tim AWFUL - 23rd August 1999
Quite simply this shows the user's name along with what they rated the track and when.
You can use the RATINGS command without any parameters, in which case it will show you the ratings for the currently playing track.
This option is only applicable once RANDOM has been turned on, and allows you to choose a sub-set from which random tracks will be chosen. This can be used to set the 'mood' of the server, for example so it only plays 80s tracks, pop tracks, or tracks rated by everyone to be GOOD or SUPERB.
The filter expression is a simple mathematical expression that is matched against every track in turn to see if it should be included in the random selection process. There are several special characters that you can use in the filter:
The following conditions are permitted in the filter:
Where:
For example:
The SEARCH command takes one parameter, a piece of text to search upon. The server will look for tracks whose name or author contains the text that you are searching for. For example:
SEARCH power of
Will look for tracks containing the string power of. The command does not support AND/OR type operations. The reasult of this command might result in something like:
[] Search results: [] 13/11 - Andre Delgada The power of love 4:40 [] 188/9 - Eternal Power of a woman 3:53 [] 207/2 - Jennifer Rush The power of love 4:24 [] 99/10 S Madonna The power of good-bye 4:12
A more advanced type of search is SEARCHF which takes a filter string as an argument. The format of this is exactly the same as for the FILTER command.
For example:
SEARCHF bob=superb
Which results in a list of tracks that user bob has rated superb:
[] These songs match filter: [] 2/1 S Mark Snow X-Files Theme 2:25
The above commands search for tracks, there is also the ASEARCH command for searching for an album. Use it as you would the SEARCH command.
For example:
ASEARCH whitneywould search for albums containing whitney in either the album author or name:
[] Search results: [] 290 Whitney Houston My love is your love [] 291 Whitney Houston The Greatest Hits - Disc 1 [] 292 Whitney Houston The Greatest Hits - Disc 2
Mserv has three commands that interact with the sound system: VOLUME, BASS and TREBLE. They may not be enabled on your server as it requires that Mserv has support for the particular system that Mserv is running on.
All three commands support the same parameters. To see what the current setting is, simply type the command. For example, the current volume level can be shown by typing:
VOLUME
The response is a percentage between 0 and 100:
[] Volume is currently 34%
To change a setting you can enter a single parameter to represent the new value, so to change the volume setting to 50%, type:
VOLUME 50
This will cause the server to broadcast a message to all currently connected users indicating the new volume setting:
[] Volume has been set to 46% by squish
As you can see, Mserv set the volume to 46% and not 50%. Nothing has gone wrong - what has happened is that Mserv told your sound system to change the volume to 50%, but your sound system chose to set itself to 46%. This usually happens because sound cards don't always have 100 levels of sound. It is quite common to find sound cards that have volume steps of 3% or 6%.
Another form of parameter is an increment or decrement. To specify this you put a plus or minus symbol followed by the percentage value to increase or decrease the sound level. For example, when the sound system is at 46% and you type:
VOLUME +10
The server will increase the level to 56%, but of course your sound system will round this to the nearest setting it can accomodate:
[] Volume has been set to 52% by squish
On this particular server, this means it changes the setting to 52%.
For systems that exhibit this rounding, another useful command exists:
VOLUME +
Which simply increases the volume to the next available step. You can also specify multiple +s to increase the volume in that many steps, e.g. VOLUME +++ will increase the volume three times.
BASS and TREBLE work in exactly the same way as above.
Mserv is not a talker - there are deliberately no whispering, groups, lists, channels, etc. The two commands available are SAY and EMOTE. If you wish to say something, simply type SAY followed by what you wish to say. For example:
SAY hello fred
Will result in the following being broadcast to all connected users:
[] <squish> hello fred
Your username is placed in angled brackets, followed by your text. If you wish to do an emotion, you need to use EMOTE. For example if you wished to grin at someone, you would type:
EMOTE grins
Will result in:
[] * squish grins
Finally, if you wish to see who is online at the moment, you can use the WHO command, which takes no parameters. This will result in a listing looking like:
[] The following people are online: [] Name Flags Idle Site [] squish P 0 192.168.1.44 [] jogu P 14 192.168.1.23 [] 2 connected, 2 total
The list shows the name of the user, their flags, how many minutes they have been idle, and the IP address of the site they are connected from.
The flags are defined as:
The server has a number of commands for displaying information about what is going on.
If a song is playing, you have already encountered the INFO command to display information about the currently playing song, but a more general command STATUS is available for information about the server itself.
There are no parameters for this command, and the output looks something like:
[] Paused on album 37, track 7 [] Track name: International velvet [] author: Catatonia [] Time playing: 2:48 [] Filter: (rock|pop)&(good|superb) [] Tracks included: 2081 [] excluded: 1256 [] Random: ON (0.60)
The first line indicates whether the server is currently paused, playing or stopped. The currently playing track name and author are displayed along with how long since the track was started. The current filter setting is shown along with how many tracks this includes and excludes from random play. The random setting, whether on or off, is shown on the last line along with the random factor setting.
The HISTORY command shows you a list of recently played tracks:
[] The following tracks were recently played: [] random 37/7 G Catatonia International velvet [] random 177/9 G Julia Fordham (Love moves in) mysterious ways [] random 195/13 S Sash! Featuring La T Stay [] random 155/13 S The Corrs No good for me [] random 220/19 G Meat Loaf I'd do anything for love (but I won [] random 129/5 G Roxette Spending my time [] random 93/13 S Louise Who do you love [] random 32/5 - Bon Jovi Bed of roses [] random 191/5 G Deep Blue Something Breakfast at Tiffany's [] random 172/5 G Free Alright now
The most recently played song is shown first. The list is truncated to 20 items. The name on the left is the name of the user who queued the track, or random if it were chosen randomly by the computer (filters permitting).
The TOP command shows you a list of the most likely to be played tracks. It takes one optional parameter that indicates the number of lines to be displayed, default 20 items.
For example, if you type
TOP 10
You should see something like:
[] Most likely to be played tracks: [] 1.27% 155/1 S The Corrs Only when I sleep 4:24 [] 1.25% 187/10 S Sacred Spirit Wishes of happiness and prospe 4:29 [] 1.24% 156/14 S The Corrs No good for me 4:00 [] 1.22% 223/21 S Lou Reed Walk on the wild side 4:08 [] 1.21% 117/5 S Queen Bicycle race 3:03 [] 1.19% 108/4 S Natalie Imbruglia Leave me alone 4:23 [] 1.18% 156/15 S The Corrs Little wing 5:09 [] 1.17% 163/3 S U2 Sweetest thing 3:05 [] 1.15% 133/2 S Savage Garden I want you 3:52 [] 1.14% 95/1 S Madness House of fun 2:47
The most likely to be played track is 155/1, 'Only when I sleep', with a probability of 1.27%. The order of these tracks is determined by the ratings of the currently logged on users, but the percentage 'weighting' of the best tracks can be changed using the FACTOR command.
A very useful command; DATE takes no parameters, and tells you the date on the server. This relies on the date being correct on the machine running the server, of course:
[] Local time is 20:56 on Sunday 2nd January 2000
Quite often Mserv is used to hold real CDs. This means that it is quite likely that one song may appear on more than one album.
The CHECK command goes through the tracks on the server and displays which tracks are titled with the same author and name as each other and that you have rated differently.
For example, if there is a track authored by 'Billie' called 'Honey to the Bee' numbered 25/10 and it is also in a different album and numbered 199/7, and you've rated 25/10 as GOOD but haven't heard 199/7 yet, CHECK will tell you:
[] These songs are inconsistent: [] 25/10 G Billie Honey to the bee 5:04 [] 199/7 - Billie Honey to the bee 3:40
As you can see, these songs are different in duration, one is at least a minute longer than the other - so it is up to you to decide whether or not you want to rate them the same.
The USERINFO command shows you how you've rated songs so far:
[] User squish [] Superb: 5.9% (196) [] Good: 31.0% (1035) [] Neutral: 18.7% (625) [] Bad: 1.1% (37) [] Awful: 0.3% (11) [] Heard (unrated): 40.2% (1341) [] Unheard: 2.8% (92) [] Index: 100.0% (squish/squish)
The first 5 lines indicate what percentage (with actual numbers of tracks in brackets) of tracks you've rated the rating level. Heard and unheard show how many tracks you've heard and not rated, and not even heard, respectively.
This command can be used on another user to find out how they have rated. So if you type:
USERINFO jogu
The output becomes:
[] User jogu [] Superb: 11.1% (370) [] Good: 52.1% (1740) [] Neutral: 25.5% (852) [] Bad: 2.9% (97) [] Awful: 1.2% (41) [] Heard (unrated): 3.4% (115) [] Unheard: 3.7% (122) [] Index: 85.8% (squish/jogu)
The last line shows an index, which is an evaluation of how compatible your rating is with the user you've requested information about.
These commands can only be used by users that are privileged. You can tell if you're a privileged user by using the WHO command and seeing if you have a P or M flag next to your name.
The gap command sets the delay between each track, and is measured in seconds. The default is a one second delay. The command without a parameter displays the current setting.
Rowdy users are not appreciated, and the KICK command can be used to remove users from the system. The command takes one parameter, the number of minutes to prohibit them from re-connecting. This defaults to 1.
This command synchronises the in-memory database with that contained within the on-disk database. No new tracks are loaded or deleted, just the contents are ensured to be the same. Mserv will automatically detect altered on-disk files when anything is changed for that particular track, but when you've altered a large number of files this command can be handy. Numbers of tracks and albums will remain the same.
The RESET command stops play, ensures all data is saved to disk that needs to be, removes the in-memory database and resets from the disk. The currently connected users are not disconnected, but beyond that everything is re-initialised. This command is useful for when you have added new albums to the on-disk database. Albums and tracks might change numbers after this command, it is always best to use SYNC where possible.
The SET command is for changing the properties of albums and tracks. It is usually done off-line using the mservedit program, which is both faster and easier.
Note that after changing anything below, lists such as the author list, genres list, etc. (as used in search functions, etc) will not be updated until you RESET. The reason for this is that Mserv clients may have remembered numbers representing the genres, tracks, albums, authors, etc., and resetting informs them safely of this change.
This command takes two parameters - the album number and the string you'd like to set the album author to.
This command takes two parameters - the album number and the string you'd like to set the album name to.
This command takes three parameters - the album number, the track number and the string you'd like to set the track author to.
This command takes three parameters - the album number, the track number and the string you'd like to set the track name to.
This command takes three parameters - the album number, the track number and the number you'd like to set the track year to.
This command takes three parameters - the album number, the track number and the string you'd like to set the genre to. This should be a comma-separated list.
One feature that advanced users might like to know about is that any command that displays rating information can be instructed to display the same inforation, but for a different user.
Prefix the entire command by the user you wish to view the ratings for in square brackets.
For example, if you type:
SEARCH block
This could result in:
[] Search results: [] 199/14 - Blockster You should be... 3:37 [] 203/3 N Soundgarden Block hole sun 4:33 [] 223/8 G Sweet Blockbuster 3:11 [] 194/3 G The Chemical Brother Block rockin' beats 3:23 [] 214/18 G The Chemical Brother Block rockin' beats 4:59
However, if you type:
[fred]SEARCH block
You would then get the same information, but with fred's ratings:
[] Search results: [] 199/14 G Blockster You should be... 3:37 [] 203/3 N Soundgarden Block hole sun 4:33 [] 223/8 G Sweet Blockbuster 3:11 [] 194/3 N The Chemical Brother Block rockin' beats 3:23 [] 214/18 N The Chemical Brother Block rockin' beats 4:59
This feature can be used with the USERINFO command to display the index between two users. For example, say your name was squish, and you wanted the index between fred and joe. You would type:
[joe]USERINFO fred