void SimulationConfig::populate(INIReader &reader) { accelerationScheme_ = reader.Get("simulation", "accel_scheme", "trap"); if (accelerationScheme_ != "exponential" && accelerationScheme_ != "trap" && accelerationScheme_ != "instantaneous") { try { throw "Invalid value for acceleration scheme!"; } catch (const char* e) { std::cout << e << std::endl; std::terminate(); } } trapShakeTime_ = (float) reader.GetReal("simulation", "trap_shake_time", 1e-6); duration_ = (float) reader.GetReal("simulation", "duration", 6e-4); inglisTeller_ = reader.GetBoolean("simulation", "inglis_teller", false); maxVoltage_ = (float) reader.GetReal("simulation", "max_voltage", 100); targetVel_ = (float) reader.GetReal("simulation", "target_vel", 500); timeStep_ = (float) reader.GetReal("simulation", "time_step", 1e-6); }
void StorageConfig::populate(INIReader &reader) { storeCollisions_ = reader.GetBoolean("storage", "store_collisions", true); storeTrajectories_ = reader.GetBoolean("storage", "store_trajectories", true); compression_ = reader.GetInteger("storage", "compression", 0); }
int main(int argc, char *argv[]) { int InputId = 0; int OutputId = 0; int Opt = 0; OutputInstruments = false; ExCommands = false; DMFConverter * dmf; ESFOutput * esf; INIReader * ini; fprintf(stdout, "\nDMF2ESF ver %d.%d (built %s %s)\n", MAJORVER, MINORVER, __DATE__, __TIME__); fprintf(stdout, "Copyright 2013-2014 ctr.\n"); fprintf(stdout, "Licensed under GPLv2, see LICENSE.txt.\n\n"); fprintf(stdout, "Includes source from Secret Rabbit Code, Licensed under GPLv1, see libsamplerate\COPYING.\n\n"); // fprintf(stdout, "Not licensed under any license;\nyou may not do anything at all with this program.\n\n"); int instrumentIdxOffset = 0; if(argc > 1) { for(int i = 0; i < argc; ++i) { //printf( "argument %d = %s\n", i, argv[i] ); /* Check for options */ Opt = strcmp(argv[i], "-i"); if(!Opt) { OutputInstruments = true; continue; } Opt = strcmp(argv[i], "-a"); if(!Opt) { ASMOut = true; continue; } Opt = strcmp(argv[i], "-e"); if(!Opt) { ExCommands = true; continue; } Opt = strcmp(argv[i], "-instroffset"); if(!Opt) { i++; if(i < argc) { instrumentIdxOffset = atoi(argv[i]); } continue; } if(OutputId == 0) { if(InputId > 0) OutputId = i; if(InputId == 0) InputId = i; } } } if(InputId == 0) // no input file? { //print usage and exit fprintf(stderr, "Usage: dmf2esf <options> input <output>\n"); fprintf(stderr, "Options:\n"); fprintf(stderr, "\t-i : Output FM instrument data\n"); fprintf(stderr, "\t-a : Output ESF as an assembly file\n"); fprintf(stderr, "\t-e : Use EchoEx extended commands\n"); fprintf(stderr, "Please read \"readme.md\" for further usage instructions.\n"); for(int a=0; a<12*7; a++) { fprintf(stderr, "%d\n", fmfreq(a)); } } else { const char *dot = strrchr(argv[InputId], '.'); if(strcmp(dot,".ini") == 0) { fprintf(stdout, "Loading ini: %s\n",argv[InputId]); ini = new INIReader(argv[InputId]); if (ini->ParseError() < 0) { fprintf(stderr, "Failed to load ini: %s\n",argv[InputId]); return EXIT_FAILURE; } bool SearchFlag=true; int TrackIndex=0; char IniSection[64]; string input; while(SearchFlag) { sprintf(IniSection,"%d",TrackIndex); fprintf(stdout, "======== Reading [%s] ========\n",IniSection); string input = ini->Get(IniSection,"input",""); if(input.length() > 0) { if(input.rfind(".") < 0) { fprintf(stderr, "Silly input\n"); return EXIT_FAILURE; } string output = ini->Get(IniSection,"output",""); bool TrackSFX = ini->GetBoolean(IniSection,"sfx",false); if(output.length() == 0) output = input.substr(0,input.rfind(".")); if(output.rfind(".") < 0) { fprintf(stderr, "Silly output\n"); return EXIT_FAILURE; } fprintf(stderr, "Converting %s to %s\n",input.c_str(), output.c_str()); esf = new ESFOutput(output); dmf = new DMFConverter(&esf); FindInstruments(IniSection,ini,dmf); if(dmf->Initialize(input.c_str())) { fprintf(stderr, "Failed to initialize, aborting\n"); break; } if(dmf->Parse()) { fprintf(stderr, "Conversion failed, aborting\n"); break; } fprintf(stdout, "Successfully converted, continuing.\n"); delete esf; delete dmf; } else { //fprintf(stderr, "invalid input '%s' (%d)\n",input.c_str(), input.length()); break; } TrackIndex++; } delete ini; } else { esf = new ESFOutput(string(argv[OutputId])); dmf = new DMFConverter(&esf); esf->InstrumentOffset = instrumentIdxOffset; dmf->InstrumentOffset = instrumentIdxOffset; if(dmf->Initialize(argv[InputId])) { fprintf(stderr, "Aborting\n"); return EXIT_FAILURE; } if(dmf->Parse()) { fprintf(stderr, "Conversion aborted.\n"); return EXIT_FAILURE; } delete dmf; delete esf; } } return EXIT_SUCCESS; }