fatPlayer and fatPocket Online Help

fatPlayerfatPocket


Introduction

I recommend to read the online help for fatManager and fatTony first, so you understand the basic principles how everything works.

fatPlayer and fatPocket are nearly identical programs. fatPlayer is for the normal Windows operating system, and fatPocket for PocketPC 2003 or higher.

Both are for remote controlling fatTony (the server). You can select presets and songs by name, move them into the playlist and fatTony (together with Icecast) will stream the music onto your local network, a Wlan receiver or into the internet.


Installation of fatPlayer

Download fatPlayer, unzip and run "setup.exe", follow the instructions on the screen.


Installation of fatPocket

fatPocket is processor independent and runs on every PocketPC by using the Microsoft .net compact framework. You need to install this framework first on your machine. You can download the framework from microsoft.com. Search for "compact framework". At the time of this writing the ".NET Compact Framework 2.0 Service Pack 1 Redistributable" is the most current version. Don't be worried by the download size. The setup package contains one and the same framework for numerous processors. In fact the framwork will occupy about 5 MB on your PocketPC.

After having downloaded and installed the compact framework, copy the fatPocket CAB file to your PocketPC using ActiveSync. On your PDA click onto the CAB file and it will be installed in the program manager.


How it works

Both programs remote control fatTony via network, therefore they are called clients, whilst fatTony is called the server. When a client connects to fatTony, fatTony reads the desired database of fatManager into memory and processes queries of the clients. It then sends back the result set of the queries to the clients. Afterwards you can pick on the client songs from the result set and add them to the playlist. The result set and the playlist are stored on the server. This is very important to understand! After creating a playlist you can close fatPlayer or fatPocket and the server still processes the playlist, because it is STORED on the server (as well as the settings for the play mode (playing, paused, stopped), automatically filling the playlist, shuffling songs, repeat mode and timer).

The basic rule to keep in mind is: the clients do remote contol fatTony, but all files and settings are stored within fatTony. The clients do only offer a VIEW to the status of fatTony.

Setting up fatManager and fatPocket

Settings Dialog

In this dialog you make the settings for the connection to fatTony.

ServerIf you are running fatPlayer on the same machine as fatTony, leave this as "localhost". Otherwise enter the URL to the machine where fatTony is running on.
The URL can be either the Windows computer name, an internet domain name, like for example www.spaakensoft.de or an IP address.
PortThe port on which fatTony communicates with the client. If there is no conflict with other software, leave it as 9898. In fact fatTony is using the given port number, as well as another port, which is one higher, i.e. for a setting of 9898 the port 9899 is also used.
MountpointThis builds together with the stream-URL (see Stream Options below) the mountpoint of the stream.
DatabaseThe name of the database that shall be used for the given mountpoint. The database must be located within the database path for which fatTony is configured.
PasswordThe password needed to connect to fatTony.
AutofillThis value defines the threshold for the minimum number of songs that are held in the playlist by fatTony. If the number of songs in the playlist falls below this number, fatTony adds automatically new songs to the playlist until the threshold value is reached.
TimerIf you activate the timer (more on this later), this is the timer value in minutes.


Stream Options Dialog

This defines the format of the network stream. Most of those settings are self-explanatory. Important is the URL, which defines together with the mountpoint of the Settings Dialog the URL by which clients can access the network stream.
For example, if you leave the URL as "http://localhost:8000", and the mountpoint as "stream", then the URL by which streaming clients (like Coolplayer or Winamp) that are running on the same machine as fatTony, can access the network stream with: "http://localhost:8000/stream"
Streaming clients running on a different machine than fatTony must use: "http://<name of the machine>:8000/stream"
<name of the machine> can be either the Windows computer name, an internet domain name, like for example www.spaakensoft.de or an IP address.

Multiple Mountpoints = Multiple Streams
It is important to understand that the mountpoint (like for example "stream")  defines a streaming channel. You can create multiple mountpoints on the same server and you can use a different database and different stream settings for each mountpoint. By default Icecast is configured during setup to serve up to 4 mountpoints. You can change the maximum number of mountpoints by editing the icecast.xml file (and restarting icecast). The setting is done in the <sources> entry of the XML file. The maximum number of simultaneous mountpoints is only limited by available memory and CPU processing power of the server machine.
You can operate multiple mountpoints from a single client (client = fatPlayer or fatPocket) by changing the mountpoint in the Settings Dialog and reconnecting to fatTony. In the moment of the connection/reconnection the new mointpoint is created. Or you can access fatTony with multiple clients at the same time, each defining its own mountpoint. This way for example your whole family can use the same server and each member of your family can use its own mountpoint. Or you wish to create yourself multiple streams with different music genres, for example one for classic music and another for pop music.

Quality settings for an internal stream
The default settings are for using streams in the internal network with very good quality. The experience has shown that a higher bitrate than 192 kbit does not produce an audible higher quality.

Quality settings for an external stream
If you want to stream to the internet (be careful that you do not conflict with laws in your country!), and you want to serve multiple clients, it might be necessary to reduce the quality of the stream in order to lower the bandwidth usage. A minimum setting for still acceptable quality is: bitrate = 56 kbit, samplerate = 22005 Hz


Server Menu

Services
This menu entry is only available on fatPlayer. It shows you a list of running services on fatTony. A service is a mountpoint. You can terminate a service by selecting it and clicking on the button "Terminate Service".

Update Database
If you have made changes to the database using fatManager - for example if you added new songs, or if you changed the tagging of some files, or if you ran a resync - these changes are not made visible to fatTony automatically, if fatTony is already using this database (i.e. a service with the database is running). Click on this menu entry to force fatTony to re-read the database.

Reconnect
In case you have a connection problem to fatTony, use this function to try to reconnect. Normally, it is not necessary to use this function.

Restart Service
Normally, it is not necessary to use this function. It will shutdown a running service and perform a reconnection afterwards.

Terminate Service
Once a service has been created, it remains active inside of fatTony as long as fatTony is running. A service consumes memory, because each service loads its own copy of the database into memory, and it consumes CPU time, because it is streaming (if you are in Pause or Stop mode, it is streaming a silent mp3 file). There is a special function inside fatTony: if a service is in Stop mode for more than 30 minutes it turns into idle mode, which means it stops streaming the silent mp3 file. So it stops using CPU time. This saves energy. Therefore a running service will not hurt much, except for its memory consumption. However, if you want to terminate the service you are currently connected to, then run this function. But careful! If you execute any other function for the same service, e.g. if you click the play button, the service will be restarted.

Shutdown Machine
If you are sitting in your living room, you might be too lazy to walk to the server room in order to shut the server down. Execute this function and the server will be shutdown remotely.


File Menu

Timer
If you click on this menu entry, the timer will be activated. The timeout is entered in the Settings Dialog. You will be asked, if you want to shutdown the server machine, if the timer ends or the playlist becomes empty. If you answer with "no", fatTony will only stop streaming. If you answer with "yes", fatTony will also shutdown the server machine.
Note: fatTony will not interrupt a song it is playing. If the timer runs out, it will wait until the currently played song is finished.

Repeat
This menu entry is only available if the "Autofill" (see below) is activated and the shuffle fill is deactivated. If repeat is turned on, it will repeat filling the playlist endlessly. If it is turned off, fatTony will stop playing after all files from the current result set of your query have been played.


Queries

You can run queries over a database in the same way as with fatManager - except that you can not define new presets.
To run a query, select the preset from the combo box and enter a wildcard name, if desired.
If you check "All Files", the preset is inactive and all files of the database (tagged files as well as untagged filed) will be in the result set - only filtered by the wildcard name.

fatPocket Performance
You will notice that fatPocket is very slow when receiving the result set from the server. This is so, because fatPocket was written using C# (a programming lanuage)  and the Microsoft .net compact framework. In fact I could create fatPocket much faster because of using this new technology. But the major drawback is that it requires much more CPU power and a PDA has a slow CPU. If fatPocket becomes a success (in terms of donations), I will rewrite it in pure C++. You can expect a performance boost by a factor of 10 to 30 for the transmission of the result set.

There are also some other function, which would run by a factor of ten faster, if programmed in C++, for example when you have a huge result set (several thousand songs) and you run a new query, it can take ages until the new query is executed, because the C# code needs such a long time to clear the current result set.

You might also notice that selecting songs in the result set becomes very slow, if you have a huge result set (several thousand songs). This is a problem of the Windows Mobile operating system. I really can not understand how someone could program something like this. This can be implemented in a way, so it takes only microseconds to select songs - even in huge lists.

However, it does not make much sense having thousands of items in the result set. If you want to add a specific song to the playlist, or a bunch of songs from the same artist, then make use of the wildcard name filter, so the result set will be small and clearly arranged. On the other hand, if you are working with Autofill you definitely want to have a large result set... the larger the better. But in this case you will have to wait until the result set has been transmittet to your PDA - there is no way around it.


Adding songs to the playlist

From the result set, you can add songs manually to the playlist.

fatPlayer
You can select single songs or a group of songs. You can select a group of files by selecting the first file in the list, then pressing the SHIFT-key and clicking on another file. You can select or deselect single files by holding the CTRL-key down before selecting. You can select all files in the list by pressing CTRL-a.
You can add selected songs to the playlist by right-clicking and chosing "Add to Playlist", which adds the selected songs to the end of the playlist, or you can insert the selected songs at a specific position by using Drag & Drop, i.e. hold the mouse key down and drag the selected files over to the playlist.

fatPocket
In the database view you can select single songs or a group of songs. You can select a group of files by selecting the first file in the list, then pressing the SHIFT-key and clicking on another file. You can select or deselect single files by holding the CTRL-key down before selecting. For easier use the SHIFT and CTRL keys have been implemented as toolbar buttons.
I implemented also two gestures: if you move the pen from the left top to the right bottom, all songs will be selected. If you move the pen from the right top to the left bottom, all songs will be deselected.
You can add selected songs to the playlist by click-and-hold and chosing "Add to Playlist", which adds the selected songs to the end of the playlist, or you can insert the selected songs at a specific position by using "Copy", switch over to the playlist, click-and-hold and select "Paste".

In the same way as described above you can change the order of songs within the playlist.


Play, Pause, Stop, Next Buttons

The buttons are self-explanatory.


Autofill and Shuffle Buttons

Autofill and Shuffle
If Autofill is enabled, fatTony adds automatically new songs from the resukt set to the playlist until the threshold value (see Settings Dialog) is reached.
If Shuffle is enabled, fatTony will add randomly selected songs from the result set to the playlist.


Listening to songs streamed by fatTony

You can use Coolplayer or Winamp for listening to streams. In either program press CTRL-L and you will be asked for the URL. See Stream Options Dialog, how a URL is build.

For setting up a Wlan receiver, please consult the manual of the receiver. Basically you need to enter the URL there also.


Afterword

I wish you a lot of fun, and please donate if you are using this software!

Make a donation:



Visit my Sponsor

If you are yourself a software developer, you should definitely visit my sponsor IDEAL Software. They make a very fine library called "Virtual Print Engine" (VPE), which can be used to programatically create and print documents and reports on the fly. Blazingly fast and accurate PDF export is also provided by this tool.


back to the main page