diff -urN snes9x-1.54.1-orig/gtk/src/gtk_config.h snes9x-1.54.1/gtk/src/gtk_config.h
--- snes9x-1.54.1-orig/gtk/src/gtk_config.h	2016-10-15 09:20:34 +0900
+++ snes9x-1.54.1/gtk/src/gtk_config.h	2016-11-12 16:02:57 +0900
@@ -118,6 +118,7 @@
 
         /* Operational */
         int           sound_driver;
+        char          sound_device[1000];
         int           mute_sound;
         int           mute_sound_turbo;
         int           sound_buffer_size;
diff -urN snes9x-1.54.1-orig/gtk/src/gtk_preferences.cpp snes9x-1.54.1/gtk/src/gtk_preferences.cpp
--- snes9x-1.54.1-orig/gtk/src/gtk_preferences.cpp	2016-10-15 09:20:34 +0900
+++ snes9x-1.54.1/gtk/src/gtk_preferences.cpp	2016-11-12 16:02:57 +0900
@@ -688,6 +688,7 @@
         config->sound_driver = 0;
 
     set_combo ("sound_driver",              config->sound_driver);
+    set_entry_text ("sound_device",         config->sound_device);
 
     if (config->scale_method == FILTER_NTSC)
     {
@@ -749,6 +750,7 @@
     int gfx_needs_restart = 0;
 
     if ((config->sound_driver       != get_combo ("sound_driver"))          ||
+        strcmp (config->sound_device, get_entry_text ("sound_device")) != 0 ||
         (config->mute_sound         != get_check ("mute_sound_check"))      ||
         (config->sound_buffer_size  != (int) get_spin ("sound_buffer_size"))||
         (Settings.Stereo            != get_check ("stereo_check"))          ||
@@ -812,6 +814,7 @@
     Settings.BlockInvalidVRAMAccessMaster   = get_check ("block_invalid_vram_access");
     Settings.UpAndDown                = get_check ("upanddown");
     config->sound_driver              = get_combo ("sound_driver");
+    strncpy (config->sound_device, get_entry_text ("sound_device"), 1000);
     Settings.Stereo                   = get_check ("stereo_check");
     config->sound_playback_rate       = 7 - (get_combo ("playback_combo"));
     config->sound_buffer_size         = get_spin ("sound_buffer_size");
diff -urN snes9x-1.54.1-orig/gtk/src/gtk_sound_driver_alsa.cpp snes9x-1.54.1/gtk/src/gtk_sound_driver_alsa.cpp
--- snes9x-1.54.1-orig/gtk/src/gtk_sound_driver_alsa.cpp	2016-10-15 09:20:34 +0900
+++ snes9x-1.54.1/gtk/src/gtk_sound_driver_alsa.cpp	2016-11-12 16:03:33 +0900
@@ -64,15 +64,17 @@
 bool8
 S9xAlsaSoundDriver::open_device (void)
 {
+    const char *device =
+        *gui_config->sound_device ? gui_config->sound_device : "default";
     int err;
     snd_pcm_sw_params_t *sw_params;
     snd_pcm_uframes_t alsa_buffer_size, alsa_period_size;
 
     printf ("ALSA sound driver initializing...\n");
-    printf ("    --> (Device: default)...");
+    printf ("    --> (Device: %s)...", device);
 
     err = snd_pcm_open (&pcm,
-                        "default",
+                        device,
                         SND_PCM_STREAM_PLAYBACK,
                         SND_PCM_NONBLOCK);
 
diff -urN snes9x-1.54.1-orig/gtk/src/snes9x.ui snes9x-1.54.1/gtk/src/snes9x.ui
--- snes9x-1.54.1-orig/gtk/src/snes9x.ui	2016-10-15 09:20:34 +0900
+++ snes9x-1.54.1/gtk/src/snes9x.ui	2016-11-12 16:07:30 +0900
@@ -3967,6 +3967,45 @@
                                       </packing>
                                     </child>
                                     <child>
+                                      <object class="GtkHBox" id="hbox_sound_device">
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">False</property>
+                                        <child>
+                                          <object class="GtkLabel" id="label_sound_device">
+                                            <property name="visible">True</property>
+                                            <property name="can_focus">False</property>
+                                            <property name="label" translatable="yes">Sound device: </property>
+                                          </object>
+                                          <packing>
+                                            <property name="expand">False</property>
+                                            <property name="fill">False</property>
+                                            <property name="position">0</property>
+                                          </packing>
+                                        </child>
+                                        <child>
+                                          <object class="GtkEntry" id="sound_device">
+                                            <property name="visible">True</property>
+                                            <property name="can_focus">True</property>
+                                            <property name="invisible_char">●</property>
+                                            <property name="primary_icon_activatable">False</property>
+                                            <property name="secondary_icon_activatable">False</property>
+                                            <property name="primary_icon_sensitive">True</property>
+                                            <property name="secondary_icon_sensitive">True</property>
+                                          </object>
+                                          <packing>
+                                            <property name="expand">True</property>
+                                            <property name="fill">True</property>
+                                            <property name="position">1</property>
+                                          </packing>
+                                        </child>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="position">1</property>
+                                      </packing>
+                                    </child>
+                                    <child>
                                       <object class="GtkCheckButton" id="sync_sound">
                                         <property name="label" translatable="yes">Synchronize with sound</property>
                                         <property name="visible">True</property>
@@ -3978,7 +4017,7 @@
                                       <packing>
                                         <property name="expand">False</property>
                                         <property name="fill">False</property>
-                                        <property name="position">1</property>
+                                        <property name="position">2</property>
                                       </packing>
                                     </child>
                                     <child>
@@ -3994,7 +4033,7 @@
                                       <packing>
                                         <property name="expand">False</property>
                                         <property name="fill">False</property>
-                                        <property name="position">2</property>
+                                        <property name="position">3</property>
                                       </packing>
                                     </child>
                                     <child>
@@ -4010,7 +4049,7 @@
                                       <packing>
                                         <property name="expand">False</property>
                                         <property name="fill">False</property>
-                                        <property name="position">3</property>
+                                        <property name="position">4</property>
                                       </packing>
                                     </child>
                                     <child>
@@ -4026,7 +4065,7 @@
                                       <packing>
                                         <property name="expand">False</property>
                                         <property name="fill">False</property>
-                                        <property name="position">4</property>
+                                        <property name="position">5</property>
                                       </packing>
                                     </child>
                                     <child>
