/[svn]/linuxsampler/trunk/src/engines/sfz/sfz.cpp
ViewVC logotype

Diff of /linuxsampler/trunk/src/engines/sfz/sfz.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 2228 by iliev, Wed Aug 3 17:11:40 2011 UTC revision 2229 by iliev, Thu Aug 4 19:02:36 2011 UTC
# Line 492  namespace sfz Line 492  namespace sfz
492    
493          amplfo_delay     = 0;          amplfo_delay     = 0;
494          amplfo_fade      = 0;          amplfo_fade      = 0;
495          amplfo_freq      = 0;          amplfo_freq      = -1; /* -1 is used to determine whether the LFO was initialized */
496          amplfo_depth     = 0;          amplfo_depth     = 0;
497    
498          fillfo_delay     = 0;          fillfo_delay     = 0;
499          fillfo_fade      = 0;          fillfo_fade      = 0;
500          fillfo_freq      = 0;          fillfo_freq      = -1; /* -1 is used to determine whether the LFO was initialized */
501          fillfo_depth     = 0;          fillfo_depth     = 0;
502    
503          pitchlfo_delay   = 0;          pitchlfo_delay   = 0;
504          pitchlfo_fade    = 0;          pitchlfo_fade    = 0;
505          pitchlfo_freq    = 0;          pitchlfo_freq    = -1; /* -1 is used to determine whether the LFO was initialized */
506          pitchlfo_depth   = 0;          pitchlfo_depth   = 0;
507      }      }
508    
# Line 702  namespace sfz Line 702  namespace sfz
702          region->ampeg_vel2decay   = ampeg_vel2decay;          region->ampeg_vel2decay   = ampeg_vel2decay;
703          region->ampeg_vel2sustain = ampeg_vel2sustain;          region->ampeg_vel2sustain = ampeg_vel2sustain;
704          region->ampeg_vel2release = ampeg_vel2release;          region->ampeg_vel2release = ampeg_vel2release;
705            
706            region->ampeg_delaycc   = ampeg_delaycc;
707            region->ampeg_startcc   = ampeg_startcc;
708            region->ampeg_attackcc  = ampeg_attackcc;
709            region->ampeg_holdcc    = ampeg_holdcc;
710            region->ampeg_decaycc   = ampeg_decaycc;
711            region->ampeg_sustaincc = ampeg_sustaincc;
712            region->ampeg_releasecc = ampeg_releasecc;
713    
714          region->fileg_delay    = fileg_delay;          region->fileg_delay    = fileg_delay;
715          region->fileg_start    = fileg_start;          region->fileg_start    = fileg_start;
# Line 756  namespace sfz Line 764  namespace sfz
764                    
765          region->pitchlfo_depthcc = pitchlfo_depthcc;          region->pitchlfo_depthcc = pitchlfo_depthcc;
766          region->pitchlfo_freqcc  = pitchlfo_freqcc;          region->pitchlfo_freqcc  = pitchlfo_freqcc;
767            
768            region->eg = eg;
769            region->lfos = lfos;
770    
771          return region;          return region;
772      }      }
# Line 982  namespace sfz Line 993  namespace sfz
993          std::string::size_type delimiter_index = token.find('=');          std::string::size_type delimiter_index = token.find('=');
994          std::string key = token.substr(0, delimiter_index);          std::string key = token.substr(0, delimiter_index);
995          std::string value = token.substr(delimiter_index + 1);          std::string value = token.substr(delimiter_index + 1);
996          int x, y;          int x, y, z;
997    
998          // sample definition          // sample definition
999          if ("sample" == key)          if ("sample" == key)
# Line 1113  namespace sfz Line 1124  namespace sfz
1124          else if ("amp_keycenter" == key) pCurDef->amp_keycenter = parseKey(value);          else if ("amp_keycenter" == key) pCurDef->amp_keycenter = parseKey(value);
1125          else if ("amp_veltrack"  == key) pCurDef->amp_veltrack = ToFloat(value);          else if ("amp_veltrack"  == key) pCurDef->amp_veltrack = ToFloat(value);
1126          else if ("amp_random"  == key) pCurDef->amp_random = ToFloat(value);          else if ("amp_random"  == key) pCurDef->amp_random = ToFloat(value);
1127          else if ("rt_decay"    == key) pCurDef->rt_decay = ToFloat(value);          else if ("rt_decay" == key || "rtdecay" == key) pCurDef->rt_decay = ToFloat(value);
1128          else if ("xfin_lokey"  == key) pCurDef->xfin_lokey = parseKey(value);          else if ("xfin_lokey"  == key) pCurDef->xfin_lokey = parseKey(value);
1129          else if ("xfin_hikey"  == key) pCurDef->xfin_hikey = parseKey(value);          else if ("xfin_hikey"  == key) pCurDef->xfin_hikey = parseKey(value);
1130          else if ("xfout_lokey" == key) pCurDef->xfout_lokey = parseKey(value);          else if ("xfout_lokey" == key) pCurDef->xfout_lokey = parseKey(value);
# Line 1147  namespace sfz Line 1158  namespace sfz
1158          else if ("pitch_random" == key) pCurDef->pitch_random = ToInt(value);          else if ("pitch_random" == key) pCurDef->pitch_random = ToInt(value);
1159          else if ("bend_up" == key || "bendup" == key) pCurDef->bend_up = ToInt(value);          else if ("bend_up" == key || "bendup" == key) pCurDef->bend_up = ToInt(value);
1160          else if ("bend_down" == key || "benddown" == key) pCurDef->bend_down = ToInt(value);          else if ("bend_down" == key || "benddown" == key) pCurDef->bend_down = ToInt(value);
1161          else if ("bend_step" == key) pCurDef->bend_step = ToInt(value);          else if ("bend_step" == key || "bendstep" == key) pCurDef->bend_step = ToInt(value);
1162    
1163          // filter          // filter
1164          else if ("fil_type" == key || "filtype" == key)          else if ("fil_type" == key || "filtype" == key)
# Line 1225  namespace sfz Line 1236  namespace sfz
1236          // v2 envelope generators          // v2 envelope generators
1237          else if (sscanf(key.c_str(), "eg%d%n", &x, &y)) {          else if (sscanf(key.c_str(), "eg%d%n", &x, &y)) {
1238              const char* s = key.c_str() + y;              const char* s = key.c_str() + y;
1239              if (sscanf(s, "_time%d", &y)) egnode(x, y).time = ToFloat(value);              if (sscanf(s, "_time%d%n", &y, &z)) {
1240              else if (sscanf(s, "_level%d", &y)) egnode(x, y).level = ToFloat(value);                  const char* s2 = s + z;
1241                    if (strcmp(s2, "") == 0) egnode(x, y).time = check(key, 0.0f, 100.0f, ToFloat(value));
1242                    else if (sscanf(s2, "_oncc%d", &z)) egnode(x, y).time_oncc.add( CC(z, check(key, 0.0f, 100.0f, ToFloat(value))) );
1243                } else if (sscanf(s, "_level%d%n", &y, &z)) {
1244                    const char* s2 = s + z;
1245                    if (strcmp(s2, "") == 0) egnode(x, y).level = check(key, 0.0f, 1.0f, ToFloat(value));
1246                    else if (sscanf(s2, "_oncc%d", &z)) egnode(x, y).level_oncc.add( CC(z, check(key, 0.0f, 1.0f, ToFloat(value))) );
1247                }
1248              else if (sscanf(s, "_shape%d", &y)) egnode(x, y).shape = ToFloat(value);              else if (sscanf(s, "_shape%d", &y)) egnode(x, y).shape = ToFloat(value);
1249              else if (sscanf(s, "_curve%d", &y)) egnode(x, y).curve = ToFloat(value);              else if (sscanf(s, "_curve%d", &y)) egnode(x, y).curve = ToFloat(value);
1250              else if (strcmp(s, "_sustain") == 0) eg(x).sustain = ToInt(value);              else if (strcmp(s, "_sustain") == 0) eg(x).sustain = ToInt(value);
# Line 1374  namespace sfz Line 1392  namespace sfz
1392              else if ("eq1_gain_on" == key_cc || "eq1_gain" == key_cc) pCurDef->eq1_gain_oncc.set(num_cc, ToInt(value));              else if ("eq1_gain_on" == key_cc || "eq1_gain" == key_cc) pCurDef->eq1_gain_oncc.set(num_cc, ToInt(value));
1393              else if ("eq2_gain_on" == key_cc || "eq2_gain" == key_cc) pCurDef->eq2_gain_oncc.set(num_cc, ToInt(value));              else if ("eq2_gain_on" == key_cc || "eq2_gain" == key_cc) pCurDef->eq2_gain_oncc.set(num_cc, ToInt(value));
1394              else if ("eq3_gain_on" == key_cc || "eq3_gain" == key_cc) pCurDef->eq3_gain_oncc.set(num_cc, ToInt(value));              else if ("eq3_gain_on" == key_cc || "eq3_gain" == key_cc) pCurDef->eq3_gain_oncc.set(num_cc, ToInt(value));
1395                
1396                else if ("ampeg_delay"   == key_cc) pCurDef->ampeg_delaycc.add( CC(num_cc, check(key, -100.0f, 100.0f, ToFloat(value))) );
1397                else if ("ampeg_start"   == key_cc) pCurDef->ampeg_startcc.add( CC(num_cc, check(key, -100.0f, 100.0f, ToFloat(value))) );
1398                else if ("ampeg_attack"  == key_cc) pCurDef->ampeg_attackcc.add( CC(num_cc, check(key, -100.0f, 100.0f, ToFloat(value))) );
1399                else if ("ampeg_hold"    == key_cc) pCurDef->ampeg_holdcc.add( CC(num_cc, check(key, -100.0f, 100.0f, ToFloat(value))) );
1400                else if ("ampeg_decay"   == key_cc) pCurDef->ampeg_decaycc.add( CC(num_cc, check(key, -100.0f, 100.0f, ToFloat(value))) );
1401                else if ("ampeg_sustain" == key_cc) pCurDef->ampeg_sustaincc.add( CC(num_cc, check(key, -100.0f, 100.0f, ToFloat(value))) );
1402                else if ("ampeg_release" == key_cc) pCurDef->ampeg_releasecc.add( CC(num_cc, check(key, -100.0f, 100.0f, ToFloat(value))) );
1403                
1404              else if ("pitchlfo_depth" == key_cc) pCurDef->pitchlfo_depthcc.set(num_cc, ToInt(value));              else if ("pitchlfo_depth" == key_cc) pCurDef->pitchlfo_depthcc.set(num_cc, ToInt(value));
1405              else if ("pitchlfo_freq" == key_cc) pCurDef->pitchlfo_freqcc.add( CC(num_cc, check(key, -200.0f, 200.0f, ToFloat(value))) );              else if ("pitchlfo_freq" == key_cc) pCurDef->pitchlfo_freqcc.add( CC(num_cc, check(key, -200.0f, 200.0f, ToFloat(value))) );
1406              else if ("fillfo_freq" == key_cc) pCurDef->fillfo_freqcc.add( CC(num_cc, check(key, -200.0f, 200.0f, ToFloat(value))) );              else if ("fillfo_freq" == key_cc) pCurDef->fillfo_freqcc.add( CC(num_cc, check(key, -200.0f, 200.0f, ToFloat(value))) );
# Line 1424  namespace sfz Line 1451  namespace sfz
1451    
1452      EGNode::EGNode() : time(0), level(0), shape(0), curve(0) {      EGNode::EGNode() : time(0), level(0), shape(0), curve(0) {
1453      }      }
1454        
1455        void EGNode::Copy(const EGNode& egNode) {
1456            time  = egNode.time;
1457            level = egNode.level;
1458            shape = egNode.shape;
1459            curve = egNode.curve;
1460            
1461            time_oncc = egNode.time_oncc;
1462            level_oncc = egNode.level_oncc;
1463        }
1464    
1465      EG::EG() :      EG::EG() :
1466          sustain(0), loop(0), loop_count(0),          sustain(0), loop(0), loop_count(0),
1467          amplitude(0), cutoff(0) {          amplitude(0), cutoff(0) {
1468      }      }
1469        
1470        void EG::Copy(const EG& eg) {
1471            sustain    = eg.sustain;
1472            loop       = eg.loop;
1473            loop_count = eg.loop_count;
1474            amplitude  = eg.amplitude;
1475            cutoff     = eg.cutoff;
1476            node       = eg.node;
1477        }
1478    
1479      EG& File::eg(int x) {      EG& File::eg(int x) {
1480          while (pCurDef->eg.size() <= x) {          while (pCurDef->eg.size() <= x) {
# Line 1449  namespace sfz Line 1495  namespace sfz
1495                  fade(0), phase(0), wave(0), delay(0), pitch(0), cutoff(0), resonance(0), pan(0) {                  fade(0), phase(0), wave(0), delay(0), pitch(0), cutoff(0), resonance(0), pan(0) {
1496                    
1497      }      }
1498        
1499        void LFO::Copy(const LFO& lfo) {
1500            delay      = lfo.delay;
1501            freq       = lfo.freq;
1502            fade       = lfo.fade;
1503            phase      = lfo.phase;
1504            wave       = lfo.wave;
1505            volume     = lfo.volume;
1506            pitch      = lfo.pitch;
1507            cutoff     = lfo.cutoff;
1508            resonance  = lfo.resonance;
1509            pan        = lfo.pan;
1510            freq_oncc  = lfo.freq_oncc;
1511            fade_oncc  = lfo.fade_oncc;
1512            phase_oncc = lfo.phase_oncc;
1513            pitch_oncc = lfo.pitch_oncc;
1514        }
1515    
1516      LFO& File::lfo(int x) {      LFO& File::lfo(int x) {
1517          while (pCurDef->lfos.size() <= x) {          while (pCurDef->lfos.size() <= x) {

Legend:
Removed from v.2228  
changed lines
  Added in v.2229

  ViewVC Help
Powered by ViewVC