Index: drivers/alsa/alsa_driver.c =================================================================== --- drivers/alsa/alsa_driver.c (revision 1015) +++ drivers/alsa/alsa_driver.c (working copy) @@ -623,8 +623,8 @@ driver->user_nperiods = user_nperiods; fprintf (stderr, "configuring for %" PRIu32 "Hz, period = %" - PRIu32 " frames, buffer = %" PRIu32 " periods\n", - rate, frames_per_cycle, user_nperiods); + PRIu32 " frames (%.1f ms), buffer = %" PRIu32 " periods\n", + rate, frames_per_cycle, (((float)frames_per_cycle / (float) rate) * 1000.0f), user_nperiods); if (driver->capture_handle) { if (alsa_driver_configure_stream ( @@ -2348,7 +2348,7 @@ /* DRIVER "PLUGIN" INTERFACE */ -const char driver_client_name[] = "alsa_pcm"; +const char driver_client_name[] = "ALSA"; const jack_driver_desc_t * driver_get_descriptor () Index: drivers/alsa/alsa_rawmidi.c =================================================================== --- drivers/alsa/alsa_rawmidi.c (revision 1015) +++ drivers/alsa/alsa_rawmidi.c (working copy) @@ -18,6 +18,8 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#define _GNU_SOURCE + #include "./alsa_midi.h" #include #include @@ -32,6 +34,8 @@ #include "./midi_pack.h" #include "./midi_unpack.h" +//#define DEBUG + enum { NANOSLEEP_RESOLUTION = 7000 }; @@ -430,10 +434,15 @@ port->id = *id; snprintf(port->dev, sizeof(port->dev), "hw:%d,%d,%d", id->id[0], id->id[1], id->id[3]); + error_log("device %s\n", port->dev); name = snd_rawmidi_info_get_subdevice_name(info); - if (!strlen(name)) + if (!strlen(name)) { + //error_log("Using device name because subdevice name is empty.\n"); name = snd_rawmidi_info_get_name(info); - snprintf(port->name, sizeof(port->name), "%s %s %s", id->id[2] ? "out":"in", port->dev, name); + } + //snprintf(port->name, sizeof(port->name), "%s %s %s", id->id[2] ? "out":"in", port->dev, name); + //name = "balbal"; + snprintf(port->name, sizeof(port->name), "%s %s", id->id[2] ? "out":"in", name); if (id->id[2] == 0) { in = &port->rawmidi; @@ -535,10 +544,11 @@ scan.iterator = &midi->scan.ports; snd_rawmidi_info_alloca(&scan.info); - //debug_log("scan: rescan\n"); + debug_log("scan: rescan\n"); while ((err = snd_card_next(&card))>=0 && card>=0) { char name[32]; snprintf(name, sizeof(name), "hw:%d", card); + debug_log("scan: card \"%s\"\n", name); if ((err = snd_ctl_open(&scan.ctl, name, SND_CTL_NONBLOCK))>=0) { scan_card(&scan); snd_ctl_close(scan.ctl); @@ -558,6 +568,7 @@ while ((err = snd_ctl_rawmidi_next_device(scan->ctl, &device))>=0 && device >=0) { snd_rawmidi_info_set_device(scan->info, device); + debug_log("scan_card: inputs\n"); snd_rawmidi_info_set_stream(scan->info, SND_RAWMIDI_STREAM_INPUT); snd_rawmidi_info_set_subdevice(scan->info, 0); if ((err = snd_ctl_rawmidi_info(scan->ctl, scan->info))>=0) @@ -565,6 +576,7 @@ else if (err != -ENOENT) alsa_error("scan: snd_ctl_rawmidi_info on device", err); + debug_log("scan_card: outputs\n"); snd_rawmidi_info_set_stream(scan->info, SND_RAWMIDI_STREAM_OUTPUT); snd_rawmidi_info_set_subdevice(scan->info, 0); if ((err = snd_ctl_rawmidi_info(scan->ctl, scan->info))>=0) @@ -583,12 +595,18 @@ int sub, nsubs = 0; nsubs = snd_rawmidi_info_get_subdevices_count(scan->info); + debug_log("scan_device: %d subdevices\n", nsubs); for (sub=0; subinfo, sub); if ((err = snd_ctl_rawmidi_info(scan->ctl, scan->info)) < 0) { alsa_error("scan: snd_ctl_rawmidi_info on subdevice", err); continue; } + + //printf("flags %u\n", snd_rawmidi_info_get_flags(scan->info)); + if (strcmp(snd_rawmidi_info_get_name(scan->info), "Emu10k1 Synth MIDI") == 0) + continue; /* ignore emu10k1 wavetable devices */ + scan_port_update(scan); } }