The Hitchhiker's Guide to PM123 skins

This document isn't meant to be a step-by-step guide to creating PM123 skins. Rather it's meant to be a throughout reference. Basically skins are constructed from a .SKN file and one of more bitmap files (.BMP, .GIF, etc) or a .PAK file (which is a bundle file that wraps the skin's bitmaps into one file).

.SKN file structure

The .SKN file is a skin definition file. It contains the filenames of all bitmaps to be replaced, all new bitmap positions and other definitions. It's a simple text file. Lines beginning with ; or # are considered as comments.

If you want to change a bitmap, it's defined like this:

resource,bitmap
For example, replacing the background:
1900,mybmp/bg.bmp
If you want to change a bitmap position, it's defined like this:
position:x,y
For example, changing volume bar's location to (10, 10):
25:10,10
Special resources can be toggled on like this:
resource,1

Special resources that control PM123 interface
Resource numberResource explanation
1Bright 3D shade color, in format RRR/GGG/BBB.
2Dark 3D shade color, in format RRR/GGG/BBB.
3(obsolete)
4Color of seek slider border, in format RRR/GGG/BBB.
5Playlist position indicator color, in format RRR/GGG/BBB.
6Disable 3D-shading of the "statistics area".
7Disable 3D-shading of the volume bar.
8(obsolete)
9Disable 3D-shading of the player window.
10Disable the seek slider border.
11Disable the second font.
12(obsolete)
13Measure width of the filename display in pixels.
14Height of the filename display (in pixels) for regular mode. Used if resource 13 is defined.
15Height of the filename display (in pixels) for small mode. Used if resource 13 is defined.
16Foreground color of the filename display, in format RRR/GGG/BBB.
20Width of the filename display (in characters, if resource 13 is not defined) for regular mode.
21Width the seek slider area in pixels.
22Width of the filename display (in characters, if resource 13 is not defined) for small mode.
23Initial font, 0 or 1.
24Space between the main timer digits (in pixels).
25Disable the separator between the main timer groups.
26Make volume bar horizontal.
27Give volume bar a handle you can grab (resource 1620).
28Draw bitrates with digits from resource 1830 to 1839.
29Draw playlist indicator with resources 1660 to 1669.
30The bundle file for this skin (.PAK file) created with PM123 Skin Utility.
31Foreground color of unselected text in format RRR/GGG/BBB.
32Background color of unselected text in format RRR/GGG/BBB.
33Foreground color of selected text in format RRR/GGG/BBB.
34Background color of selected text in format RRR/GGG/BBB.

Bitmap resources
Resource numberResource explanation
1200 to 1209 Digits 0-9 for the main ("big") timer.
1210 Main timer separator ':'
1211 Darkened main timer separator ':'
1400 to 1445 Font 1, charset
"abcdefghijklmnopqrstuvwxyz" "-_&.0123456789 ()äö:"
('a' is 1400, 'b' is 1401, and so on)
1601 Stereo mode
1602 Mono mode
1608 No channels (unknown, no file loaded) mode
1610 Seek slider handle
1611 Background bitmap for small mode (if not defined, default background will be used)
1612 Background bitmap for tiny mode (if not defined, default background will be used)
1620 Volume slider handle bitmap (only if enabled)
1630 Volume bar
1631 Indicator for single file play
1632 Indicator for playlist play
1633 Indicator for no file loaded
1640 to 1649 Digits 0-9 for "time left" and "playlist" left timers
1650 Separator (':') for "time left" and "playlist" left timers
1651 Dark 0 digit for "time left" and "playlist" left timers
1652 Darkened separator (':') for "time left" and "playlist" left timers
1660 to 1669 Digits 0-9 for playlist total/index displays. Only used if resource 29 is enabled.
1800 to 1815 Bitmaps for bitrates 0 (no bitrate), 32, 48, 56, 64, 80, 96, 112, 128, 144, 160, 176, 192, 224, 256, 320. Not used if resource 28 is enabled.
1820 Bright "led" bitmap (displayed when PM123 has focus)
1821 Dark "led" bitmap (displayed when PM123 is not focused)
1830 to 1839 Digits 0-9 for bitrates, if resource 28 is enabled.
1840 Symbol of hundred. If this symbol is defined, bitrates more than 999 are displayed in hundreds.
1900 The background bitmap. Resources 1611 and 1612 override this in small and tiny mode.
1901 "Time left", dark.
1902 "Time left", bright.
1903 "Playlist left", dark.
1904 "Playlist left", bright.
1906 Slider shaft (drawn before drawing slider handle)
Only regular mode
1310, 1300 Play button up/down
1312, 1302 Pause button up/down
1313, 1303 Rewind button up/down
1314, 1304 Fast forward button up/down
1315, 1305 Power button up/down
1316, 1306 Previous button up/down
1317, 1307 Next button up/down
1318, 1308 Shuffle button up/down
1319, 1309 Repeat button up/down
1320, 1321 Playlist button up/down
1323, 1322 Stop button up/down (hidden by default)
1325, 1324 Load file button up/down (hidden by default)
Small/tiny mode
5510, 5500 Play button up/down
5512, 5502 Pause button up/down
5513, 5503 Rewind button up/down
5514, 5504 Fast forward button up/down
5515, 5505 Power button up/down
5516, 5506 Previous button up/down
5517, 5507 Next button up/down
5518, 5508 Shuffle button up/down
5519, 5509 Repeat button up/down
5520, 5521 Playlist button up/down
5522, 5523 Stop button up/down (hidden by default)
5525, 5524 Load file button up/down (hidden by default)

Resource (bitmap) position settings
Position numberPosition explanation
1 Main timer
2 Main window size (sx, sy)
3 Play button, regular
4 Pause button, regular
5 Rewind button, regular
6 Fast forward button, regular
7 Playlist button, regular
8 Repeat button, regular
9 Shuffle button, regular
10 Previous button, regular
11 Next button, regular
12 Power button, regular
13 Text display, regular
14 Text display, small
15 "Time left" dark
16 "Time left" bright
17 "Playlist left" dark
18 "Playlist left" bright
19 "Time left" timer
20 "Playlist left" timer
21 Playmode indicator (no file/single/playlist)
22 Led bright
23 Led dark
24 Seek slider
25 Volume bar
26 No channels indicator
27 Mono indicator
28 Stereo indicator
29 Bitrate indicator
30 Main window size (sx, sy), small mode
31 Main window size (sx, sy), tiny mode
32 (unused)
33 Play button, small
34 Pause button, small
35 Rewind button, small
36 Fast forward button, small
37 Playlist button, small
38 Repeat button, small
39 Shuffle button, small
40 Previous button, small
41 Next button, small
42 Power button, small
43 to 52 (unused)
53 Play button, tiny
54 Pause button, tiny
55 Rewind button, tiny
56 Fast forward button, tiny
57 Playlist button, tiny
58 Repeat button, tiny
59 Shuffle button, tiny
60 Previous button, tiny
61 Next button, tiny
62 Power button, tiny
63 Playlist index indicator
64 Playlist total indicator
65 Stop button, regular (hidden by default)
66 Load file button, regular (hidden by default)
67 Location for the slider shaft (bitmap 1906)