void sys_loadpreferences( void) { int naudioindev, audioindev[MAXAUDIOINDEV], chindev[MAXAUDIOINDEV]; int naudiooutdev, audiooutdev[MAXAUDIOOUTDEV], choutdev[MAXAUDIOOUTDEV]; int nmidiindev, midiindev[MAXMIDIINDEV]; int nmidioutdev, midioutdev[MAXMIDIOUTDEV]; int i, rate = 0, advance = 0, callback = 0, api, nolib, maxi; char prefbuf[MAXPDSTRING], keybuf[80]; sys_initloadpreferences(); /* load audio preferences */ if (sys_getpreference("audioapi", prefbuf, MAXPDSTRING) && sscanf(prefbuf, "%d", &api) > 0) sys_set_audio_api(api); /* JMZ/MB: brackets for initializing */ if (sys_getpreference("noaudioin", prefbuf, MAXPDSTRING) && (!strcmp(prefbuf, ".") || !strcmp(prefbuf, "True"))) naudioindev = 0; else { for (i = 0, naudioindev = 0; i < MAXAUDIOINDEV; i++) { sprintf(keybuf, "audioindev%d", i+1); if (!sys_getpreference(keybuf, prefbuf, MAXPDSTRING)) break; if (sscanf(prefbuf, "%d %d", &audioindev[i], &chindev[i]) < 2) break; naudioindev++; } /* if no preferences at all, set -1 for default behavior */ if (naudioindev == 0) naudioindev = -1; } /* JMZ/MB: brackets for initializing */ if (sys_getpreference("noaudioout", prefbuf, MAXPDSTRING) && (!strcmp(prefbuf, ".") || !strcmp(prefbuf, "True"))) naudiooutdev = 0; else { for (i = 0, naudiooutdev = 0; i < MAXAUDIOOUTDEV; i++) { sprintf(keybuf, "audiooutdev%d", i+1); if (!sys_getpreference(keybuf, prefbuf, MAXPDSTRING)) break; if (sscanf(prefbuf, "%d %d", &audiooutdev[i], &choutdev[i]) < 2) break; naudiooutdev++; } if (naudiooutdev == 0) naudiooutdev = -1; } if (sys_getpreference("rate", prefbuf, MAXPDSTRING)) sscanf(prefbuf, "%d", &rate); if (sys_getpreference("audiobuf", prefbuf, MAXPDSTRING)) sscanf(prefbuf, "%d", &advance); if (sys_getpreference("callback", prefbuf, MAXPDSTRING)) sscanf(prefbuf, "%d", &callback); sys_set_audio_settings(naudioindev, audioindev, naudioindev, chindev, naudiooutdev, audiooutdev, naudiooutdev, choutdev, rate, advance, callback); /* load MIDI preferences */ /* JMZ/MB: brackets for initializing */ if (sys_getpreference("nomidiin", prefbuf, MAXPDSTRING) && (!strcmp(prefbuf, ".") || !strcmp(prefbuf, "True"))) nmidiindev = 0; else for (i = 0, nmidiindev = 0; i < MAXMIDIINDEV; i++) { sprintf(keybuf, "midiindev%d", i+1); if (!sys_getpreference(keybuf, prefbuf, MAXPDSTRING)) break; if (sscanf(prefbuf, "%d", &midiindev[i]) < 1) break; nmidiindev++; } /* JMZ/MB: brackets for initializing */ if (sys_getpreference("nomidiout", prefbuf, MAXPDSTRING) && (!strcmp(prefbuf, ".") || !strcmp(prefbuf, "True"))) nmidioutdev = 0; else for (i = 0, nmidioutdev = 0; i < MAXMIDIOUTDEV; i++) { sprintf(keybuf, "midioutdev%d", i+1); if (!sys_getpreference(keybuf, prefbuf, MAXPDSTRING)) break; if (sscanf(prefbuf, "%d", &midioutdev[i]) < 1) break; nmidioutdev++; } sys_open_midi(nmidiindev, midiindev, nmidioutdev, midioutdev, 0); /* search path */ if (sys_getpreference("npath", prefbuf, MAXPDSTRING)) sscanf(prefbuf, "%d", &maxi); else maxi = 0x7fffffff; for (i = 0; i<maxi; i++) { sprintf(keybuf, "path%d", i+1); if (!sys_getpreference(keybuf, prefbuf, MAXPDSTRING)) break; sys_searchpath = namelist_append_files(sys_searchpath, prefbuf); } if (sys_getpreference("standardpath", prefbuf, MAXPDSTRING)) sscanf(prefbuf, "%d", &sys_usestdpath); if (sys_getpreference("verbose", prefbuf, MAXPDSTRING)) sscanf(prefbuf, "%d", &sys_verbose); /* startup settings */ if (sys_getpreference("nloadlib", prefbuf, MAXPDSTRING)) sscanf(prefbuf, "%d", &maxi); else maxi = 0x7fffffff; for (i = 0; i<maxi; i++) { sprintf(keybuf, "loadlib%d", i+1); if (!sys_getpreference(keybuf, prefbuf, MAXPDSTRING)) break; sys_externlist = namelist_append_files(sys_externlist, prefbuf); } if (sys_getpreference("defeatrt", prefbuf, MAXPDSTRING)) sscanf(prefbuf, "%d", &sys_defeatrt); if (sys_getpreference("flags", prefbuf, MAXPDSTRING)) { if (strcmp(prefbuf, ".")) sys_flags = gensym(prefbuf); } sys_doflags(); if (sys_defeatrt) sys_hipriority = 0; else #ifdef UNIX sys_hipriority = !geteuid(); #else #ifdef MSW sys_hipriority = 0; #else sys_hipriority = 1; #endif #endif }
void sys_loadpreferences( void) { int naudioindev, audioindev[MAXAUDIOINDEV], chindev[MAXAUDIOINDEV]; int naudiooutdev, audiooutdev[MAXAUDIOOUTDEV], choutdev[MAXAUDIOOUTDEV]; int nmidiindev, midiindev[MAXMIDIINDEV]; int nmidioutdev, midioutdev[MAXMIDIOUTDEV]; int i, rate = 0, advance = -1, callback = 0, blocksize = 0, api, nolib, maxi; char prefbuf[MAXPDSTRING], keybuf[80]; sys_initloadpreferences(); /* load audio preferences */ if (sys_getpreference("audioapi", prefbuf, MAXPDSTRING) && sscanf(prefbuf, "%d", &api) > 0) sys_set_audio_api(api); /* JMZ/MB: brackets for initializing */ if (sys_getpreference("noaudioin", prefbuf, MAXPDSTRING) && (!strcmp(prefbuf, ".") || !strcmp(prefbuf, "True"))) naudioindev = 0; else { for (i = 0, naudioindev = 0; i < MAXAUDIOINDEV; i++) { /* first try to find a name - if that matches an existing device use it. Otherwise fall back to device number. */ int devn; /* read in device number and channel count */ sprintf(keybuf, "audioindev%d", i+1); if (!sys_getpreference(keybuf, prefbuf, MAXPDSTRING)) break; if (sscanf(prefbuf, "%d %d", &audioindev[i], &chindev[i]) < 2) break; /* possibly override device number if the device name was also saved and if it matches one we have now */ sprintf(keybuf, "audioindevname%d", i+1); if (sys_getpreference(keybuf, prefbuf, MAXPDSTRING) && (devn = sys_audiodevnametonumber(0, prefbuf)) >= 0) audioindev[i] = devn; naudioindev++; } /* if no preferences at all, set -1 for default behavior */ if (naudioindev == 0) naudioindev = -1; } /* JMZ/MB: brackets for initializing */ if (sys_getpreference("noaudioout", prefbuf, MAXPDSTRING) && (!strcmp(prefbuf, ".") || !strcmp(prefbuf, "True"))) naudiooutdev = 0; else { for (i = 0, naudiooutdev = 0; i < MAXAUDIOOUTDEV; i++) { int devn; sprintf(keybuf, "audiooutdev%d", i+1); if (!sys_getpreference(keybuf, prefbuf, MAXPDSTRING)) break; if (sscanf(prefbuf, "%d %d", &audiooutdev[i], &choutdev[i]) < 2) break; sprintf(keybuf, "audiooutdevname%d", i+1); if (sys_getpreference(keybuf, prefbuf, MAXPDSTRING) && (devn = sys_audiodevnametonumber(1, prefbuf)) >= 0) audiooutdev[i] = devn; naudiooutdev++; } if (naudiooutdev == 0) naudiooutdev = -1; } if (sys_getpreference("rate", prefbuf, MAXPDSTRING)) sscanf(prefbuf, "%d", &rate); if (sys_getpreference("audiobuf", prefbuf, MAXPDSTRING)) sscanf(prefbuf, "%d", &advance); if (sys_getpreference("callback", prefbuf, MAXPDSTRING)) sscanf(prefbuf, "%d", &callback); if (sys_getpreference("blocksize", prefbuf, MAXPDSTRING)) sscanf(prefbuf, "%d", &blocksize); sys_set_audio_settings(naudioindev, audioindev, naudioindev, chindev, naudiooutdev, audiooutdev, naudiooutdev, choutdev, rate, advance, callback, blocksize); /* load MIDI preferences */ /* JMZ/MB: brackets for initializing */ if (sys_getpreference("nomidiin", prefbuf, MAXPDSTRING) && (!strcmp(prefbuf, ".") || !strcmp(prefbuf, "True"))) nmidiindev = 0; else for (i = 0, nmidiindev = 0; i < MAXMIDIINDEV; i++) { /* first try to find a name - if that matches an existing device use it. Otherwise fall back to device number. */ int devn; sprintf(keybuf, "midiindevname%d", i+1); if (sys_getpreference(keybuf, prefbuf, MAXPDSTRING) && (devn = sys_mididevnametonumber(0, prefbuf)) >= 0) midiindev[i] = devn; else { sprintf(keybuf, "midiindev%d", i+1); if (!sys_getpreference(keybuf, prefbuf, MAXPDSTRING)) break; if (sscanf(prefbuf, "%d", &midiindev[i]) < 1) break; } nmidiindev++; } /* JMZ/MB: brackets for initializing */ if (sys_getpreference("nomidiout", prefbuf, MAXPDSTRING) && (!strcmp(prefbuf, ".") || !strcmp(prefbuf, "True"))) nmidioutdev = 0; else for (i = 0, nmidioutdev = 0; i < MAXMIDIOUTDEV; i++) { int devn; sprintf(keybuf, "midioutdevname%d", i+1); if (sys_getpreference(keybuf, prefbuf, MAXPDSTRING) && (devn = sys_mididevnametonumber(1, prefbuf)) >= 0) midioutdev[i] = devn; else { sprintf(keybuf, "midioutdev%d", i+1); if (!sys_getpreference(keybuf, prefbuf, MAXPDSTRING)) break; if (sscanf(prefbuf, "%d", &midioutdev[i]) < 1) break; } nmidioutdev++; } sys_open_midi(nmidiindev, midiindev, nmidioutdev, midioutdev, 0); /* search path */ if (sys_getpreference("npath", prefbuf, MAXPDSTRING)) sscanf(prefbuf, "%d", &maxi); else maxi = 0x7fffffff; for (i = 0; i<maxi; i++) { sprintf(keybuf, "path%d", i+1); if (!sys_getpreference(keybuf, prefbuf, MAXPDSTRING)) break; sys_searchpath = namelist_append_files(sys_searchpath, prefbuf); } if (sys_getpreference("standardpath", prefbuf, MAXPDSTRING)) sscanf(prefbuf, "%d", &sys_usestdpath); if (sys_getpreference("verbose", prefbuf, MAXPDSTRING)) sscanf(prefbuf, "%d", &sys_verbose); /* startup settings */ if (sys_getpreference("nloadlib", prefbuf, MAXPDSTRING)) sscanf(prefbuf, "%d", &maxi); else maxi = 0x7fffffff; for (i = 0; i<maxi; i++) { sprintf(keybuf, "loadlib%d", i+1); if (!sys_getpreference(keybuf, prefbuf, MAXPDSTRING)) break; sys_externlist = namelist_append_files(sys_externlist, prefbuf); } if (sys_getpreference("defeatrt", prefbuf, MAXPDSTRING)) sscanf(prefbuf, "%d", &sys_defeatrt); if (sys_getpreference("flags", prefbuf, MAXPDSTRING)) { if (strcmp(prefbuf, ".")) sys_flags = gensym(prefbuf); } sys_doflags(); if (sys_defeatrt) sys_hipriority = 0; else #if defined(__linux__) || defined(__CYGWIN__) sys_hipriority = 1; #else #if defined(_WIN32) || defined(ANDROID) sys_hipriority = 0; #else sys_hipriority = 1; #endif #endif }