diff --git a/pd/src/s_file.c b/pd/src/s_file.c
index c5a7e1a39f3b8030ed2b8da187183ee1535c7a8b..1af0d737956bffbc3f8a4e284f73e95f4a2f0b11 100644
--- a/pd/src/s_file.c
+++ b/pd/src/s_file.c
@@ -418,6 +418,9 @@ void sys_loadpreferences( void)
         callback, blocksize);
         
         /* load MIDI preferences */
+    if (sys_getpreference("midiapi", prefbuf, MAXPDSTRING)
+        && sscanf(prefbuf, "%d", &api) > 0)
+            sys_set_midi_api(api);
         /* JMZ/MB: brackets for initializing */
     if (sys_getpreference("nomidiin", prefbuf, MAXPDSTRING) &&
         (!strcmp(prefbuf, ".") || !strcmp(prefbuf, "True")))
@@ -573,6 +576,9 @@ void glob_savepreferences(t_pd *dummy)
     sys_putpreference("blocksize", buf1);
 
         /* MIDI settings */
+    sprintf(buf1, "%d", sys_midiapi);
+    sys_putpreference("midiapi", buf1);
+
     sys_get_midi_params(&nmidiindev, midiindev, &nmidioutdev, midioutdev);
     sys_putpreference("nomidiin", (nmidiindev <= 0 ? "True" : "False"));
     /* AG: nmidiin */