Index: apps/gui/skin_engine/skin_tokens.c
===================================================================
--- apps/gui/skin_engine/skin_tokens.c	(revision 31446)
+++ apps/gui/skin_engine/skin_tokens.c	(working copy)
@@ -305,6 +305,15 @@
                 else
                     return "?";
                 return buf;
+            case SKIN_TOKEN_FILE_CHANNELS:
+                if (intval && limit == TOKEN_VALUE_ONLY)
+                    *intval = id3->channels;
+                if(id3->channels)
+                    snprintf(buf, buf_size, "%d", id3->channels);
+                else
+                    return "?";
+                return buf;
+
             case SKIN_TOKEN_TRACK_TIME_ELAPSED:
                 if (intval && limit == TOKEN_VALUE_ONLY)
                     *intval = elapsed/1000;
Index: lib/skin_parser/tag_table.c
===================================================================
--- lib/skin_parser/tag_table.c	(revision 31446)
+++ lib/skin_parser/tag_table.c	(working copy)
@@ -74,6 +74,7 @@
     { SKIN_TOKEN_FILE_SIZE,             "fs", "", SKIN_REFRESH_STATIC },
     { SKIN_TOKEN_FILE_VBR,              "fv", "", SKIN_REFRESH_STATIC },
     { SKIN_TOKEN_FILE_DIRECTORY,        "d"  , "I", SKIN_REFRESH_STATIC },
+    { SKIN_TOKEN_FILE_CHANNELS,         "ch", "", SKIN_REFRESH_STATIC },
     
     { SKIN_TOKEN_FILE_BITRATE,          "Fb", "", SKIN_REFRESH_STATIC },
     { SKIN_TOKEN_FILE_CODEC,            "Fc", "", SKIN_REFRESH_STATIC },
Index: lib/skin_parser/tag_table.h
===================================================================
--- lib/skin_parser/tag_table.h	(revision 31446)
+++ lib/skin_parser/tag_table.h	(working copy)
@@ -151,6 +151,7 @@
     SKIN_TOKEN_FILE_SIZE,
     SKIN_TOKEN_FILE_VBR,
     SKIN_TOKEN_FILE_DIRECTORY,
+    SKIN_TOKEN_FILE_CHANNELS,
 
     /* Image */
     SKIN_TOKEN_IMAGE_BACKDROP,
