diff --git a/ext/alsa/gstalsamixertrack.c b/ext/alsa/gstalsamixertrack.c
index 12831b5..29ef024 100644
--- a/ext/alsa/gstalsamixertrack.c
+++ b/ext/alsa/gstalsamixertrack.c
@@ -118,7 +118,8 @@ gst_alsa_mixer_track_new (snd_mixer_elem_t * element,
 {
   GstAlsaMixerTrack *alsa_track;
   GstMixerTrack *track;
-  const gchar *name;
+  const gchar *alsa_name;
+  const gchar *ulabel;
   const gchar *label;
   gint i;
   long min = 0, max = 0;
@@ -141,17 +142,24 @@ gst_alsa_mixer_track_new (snd_mixer_elem_t * element,
     "Capture", N_("Capture")}
   };
 
-  name = snd_mixer_selem_get_name (element);
+  alsa_name = snd_mixer_selem_get_name (element);
+  if (num == 0) {
+    ulabel = g_strdup_printf ("%s%s%s", alsa_name,
+      append_capture ? " " : "", append_capture ? _("Capture") : "");
+  } else {
+    ulabel = g_strdup_printf ("%s%s%s %d", alsa_name,
+      append_capture ? " " : "", append_capture ? _("Capture") : "", num);
+  }
 
   GST_LOG ("[%s] num=%d,track_num=%d,flags=0x%08x,sw=%s,shared_mute_track=%p",
-      name, num, track_num, flags, (sw) ? "true" : "false", shared_mute_track);
+      ulabel, num, track_num, flags, (sw) ? "true" : "false", shared_mute_track);
 
   track = (GstMixerTrack *) g_object_new (GST_ALSA_MIXER_TRACK_TYPE,
-      "untranslated-label", name, NULL);
+      "untranslated-label", ulabel, NULL);
 
   alsa_track = (GstAlsaMixerTrack *) track;
 
-  GST_LOG ("[%s] created new mixer track %p", name, track);
+  GST_LOG ("[%s] created new mixer track %p", ulabel, track);
 
   /* This reflects the assumptions used for GstAlsaMixerTrack */
   if (!(!!(flags & GST_MIXER_TRACK_OUTPUT) ^ !!(flags & GST_MIXER_TRACK_INPUT))) {
@@ -173,25 +181,27 @@ gst_alsa_mixer_track_new (snd_mixer_elem_t * element,
             alsa_track->alsa_channels)) {
       alsa_track->alsa_channels++;
     }
-    GST_LOG ("[%s] %d output channels", name, alsa_track->alsa_channels);
+    GST_LOG ("[%s] %d output channels", ulabel, alsa_track->alsa_channels);
   } else if (flags & GST_MIXER_TRACK_INPUT) {
     while (alsa_track->alsa_channels < GST_ALSA_MAX_CHANNELS &&
         snd_mixer_selem_has_capture_channel (element,
             alsa_track->alsa_channels)) {
       alsa_track->alsa_channels++;
     }
-    GST_LOG ("[%s] %d input channels", name, alsa_track->alsa_channels);
+    GST_LOG ("[%s] %d input channels", ulabel, alsa_track->alsa_channels);
   } else {
     g_assert_not_reached ();
   }
 
+  g_free (ulabel);
+
   if (sw)
     track->num_channels = 0;
   else
     track->num_channels = alsa_track->alsa_channels;
 
   /* translate the name if we can */
-  label = name;
+  label = alsa_name;
   for (i = 0; i < G_N_ELEMENTS (alsa_track_labels); ++i) {
     if (g_utf8_collate (label, alsa_track_labels[i].orig) == 0) {
       label = _(alsa_track_labels[i].trans);
