aboutsummaryrefslogtreecommitdiff
path: root/pd/src/s_midi_alsa.c
diff options
context:
space:
mode:
Diffstat (limited to 'pd/src/s_midi_alsa.c')
-rw-r--r--pd/src/s_midi_alsa.c20
1 files changed, 18 insertions, 2 deletions
diff --git a/pd/src/s_midi_alsa.c b/pd/src/s_midi_alsa.c
index 437ac792..6e9143b3 100644
--- a/pd/src/s_midi_alsa.c
+++ b/pd/src/s_midi_alsa.c
@@ -48,6 +48,16 @@ void sys_alsa_do_open_midi(int nmidiin, int *midiinvec,
int i;
alsa_nmidiin = 0;
alsa_nmidiout = 0;
+ if(nmidiin>MAXMIDIINDEV )
+ {
+ post("midi input ports reduced to maximum %d", MAXMIDIINDEV);
+ nmidiin=MAXMIDIINDEV;
+ }
+ if(nmidiout>MAXMIDIOUTDEV)
+ {
+ post("midi output ports reduced to maximum %d", MAXMIDIOUTDEV);
+ nmidiout=MAXMIDIOUTDEV;
+ }
if (nmidiin>0 && nmidiout>0)
err = snd_seq_open(&midi_handle,"default",SND_SEQ_OPEN_DUPLEX,0);
@@ -200,8 +210,14 @@ void sys_alsa_poll_midi(void)
void sys_alsa_close_midi()
{
alsa_nmidiin = alsa_nmidiout = 0;
- snd_seq_close(midi_handle);
- snd_midi_event_free(midiev);
+ if(midi_handle)
+ {
+ snd_seq_close(midi_handle);
+ if(midiev)
+ {
+ snd_midi_event_free(midiev);
+ }
+ }
}
#define NSEARCH 10