void World_LoadGraphDefs(World* world) { GraphDef *list = 0; if(getenv("SC_SYNTHDEF_PATH")){ if(world->mVerbosity > 0) printf("Loading synthdefs from path: %s\n", getenv("SC_SYNTHDEF_PATH")); SC_StringParser sp(getenv("SC_SYNTHDEF_PATH"), SC_STRPARSE_PATHDELIMITER); while (!sp.AtEnd()) { GraphDef *list = 0; char *path = const_cast<char *>(sp.NextToken()); list = GraphDef_LoadDir(world, path, list); GraphDef_Define(world, list); } }else{ char resourceDir[MAXPATHLEN]; if(sc_IsStandAlone()) sc_GetResourceDirectory(resourceDir, MAXPATHLEN); else sc_GetUserAppSupportDirectory(resourceDir, MAXPATHLEN); sc_AppendToPath(resourceDir, "synthdefs"); if(world->mVerbosity > 0) printf("Loading synthdefs from default path: %s\n", resourceDir); list = GraphDef_LoadDir(world, resourceDir, list); GraphDef_Define(world, list); } }
bool passOne() { initPassOne(); if (sc_IsStandAlone()) { /// FIXME: this should be moved to the LibraryConfig file if (!passOne_ProcessDir(gCompileDir, 0)) return false; } else if (!gLanguageConfig->forEachIncludedDirectory(passOne_ProcessDir)) return false; finiPassOne(); return true; }
void initialize_library(const char *uGensPluginPath) { gCmdLib = new HashTable<SC_LibCmd, Malloc>(&gMalloc, 64, true); gUnitDefLib = new HashTable<UnitDef, Malloc>(&gMalloc, 512, true); gBufGenLib = new HashTable<BufGen, Malloc>(&gMalloc, 512, true); gPlugInCmds = new HashTable<PlugInCmd, Malloc>(&gMalloc, 64, true); initMiscCommands(); #ifdef STATIC_PLUGINS IO_Load(&gInterfaceTable); Osc_Load(&gInterfaceTable); Delay_Load(&gInterfaceTable); BinaryOp_Load(&gInterfaceTable); Filter_Load(&gInterfaceTable); Gendyn_Load(&gInterfaceTable); LF_Load(&gInterfaceTable); Noise_Load(&gInterfaceTable); MulAdd_Load(&gInterfaceTable); Grain_Load(&gInterfaceTable); Pan_Load(&gInterfaceTable); Reverb_Load(&gInterfaceTable); Trigger_Load(&gInterfaceTable); UnaryOp_Load(&gInterfaceTable); DiskIO_Load(&gInterfaceTable); PhysicalModeling_Load(&gInterfaceTable); Test_Load(&gInterfaceTable); Demand_Load(&gInterfaceTable); DynNoise_Load(&gInterfaceTable); #if defined(SC_IPHONE) && !TARGET_IPHONE_SIMULATOR iPhone_Load(&gInterfaceTable); #endif return; #endif // If uGensPluginPath is supplied, it is exclusive. bool loadUGensExtDirs = true; if(uGensPluginPath){ loadUGensExtDirs = false; SC_StringParser sp(uGensPluginPath, SC_STRPARSE_PATHDELIMITER); while (!sp.AtEnd()) { PlugIn_LoadDir(const_cast<char *>(sp.NextToken()), true); } } if(loadUGensExtDirs) { #ifdef SC_PLUGIN_DIR // load globally installed plugins if (sc_DirectoryExists(SC_PLUGIN_DIR)) { PlugIn_LoadDir(SC_PLUGIN_DIR, true); } #endif // load default plugin directory char pluginDir[MAXPATHLEN]; sc_GetResourceDirectory(pluginDir, MAXPATHLEN); sc_AppendToPath(pluginDir, SC_PLUGIN_DIR_NAME); if (sc_DirectoryExists(pluginDir)) { PlugIn_LoadDir(pluginDir, true); } } // get extension directories char extensionDir[MAXPATHLEN]; if (!sc_IsStandAlone() && loadUGensExtDirs) { // load system extension plugins sc_GetSystemExtensionDirectory(extensionDir, MAXPATHLEN); PlugIn_LoadDir(extensionDir, false); // load user extension plugins sc_GetUserExtensionDirectory(extensionDir, MAXPATHLEN); PlugIn_LoadDir(extensionDir, false); // load user plugin directories SC_StringParser sp(getenv("SC_PLUGIN_PATH"), SC_STRPARSE_PATHDELIMITER); while (!sp.AtEnd()) { PlugIn_LoadDir(const_cast<char *>(sp.NextToken()), true); } } #ifdef SC_DARWIN /* on darwin plugins are lazily loaded (dlopen uses mmap internally), which can produce audible glitches when UGens have to be paged-in. to work around this we preload all the plugins by iterating through their memory space. */ unsigned long images = _dyld_image_count(); for(unsigned long i = 0; i < images; i++) { const mach_header *hdr = _dyld_get_image_header(i); unsigned long slide = _dyld_get_image_vmaddr_slide(i); const char *name = _dyld_get_image_name(i); uint32_t size; char *sect; if(!strcmp(name + (strlen(name) - 4), ".scx")) { read_section(hdr, slide, "__TEXT", "__text"); read_section(hdr, slide, "__TEXT", "__const"); read_section(hdr, slide, "__TEXT", "__cstring"); read_section(hdr, slide, "__TEXT", "__picsymbol_stub"); read_section(hdr, slide, "__TEXT", "__symbol_stub"); read_section(hdr, slide, "__TEXT", "__const"); read_section(hdr, slide, "__TEXT", "__literal4"); read_section(hdr, slide, "__TEXT", "__literal8"); read_section(hdr, slide, "__DATA", "__data"); read_section(hdr, slide, "__DATA", "__la_symbol_ptr"); read_section(hdr, slide, "__DATA", "__nl_symbol_ptr"); read_section(hdr, slide, "__DATA", "__dyld"); read_section(hdr, slide, "__DATA", "__const"); read_section(hdr, slide, "__DATA", "__mod_init_func"); read_section(hdr, slide, "__DATA", "__bss"); read_section(hdr, slide, "__DATA", "__common"); read_section(hdr, slide, "__IMPORT", "__jump_table"); read_section(hdr, slide, "__IMPORT", "__pointers"); } } #endif }