/[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 2216 by iliev, Mon Jul 25 17:21:16 2011 UTC revision 2218 by iliev, Thu Jul 28 08:05:57 2011 UTC
# Line 36  Line 36 
36    
37  namespace sfz  namespace sfz
38  {  {
39        template <typename T> T check(std::string name, T min, T max, T val) {
40            if (val < min) {
41                std::cerr << "sfz: The value of opcode '" << name;
42                std::cerr << "' is below the minimum allowed value (min=" << min << "): " << val << std::endl;
43                val = min;
44            }
45            if (val > max) {
46                std::cerr << "sfz: The value of opcode '" << name;
47                std::cerr << "' is above the maximum allowed value (max=" << max << "): " << val << std::endl;
48                val = max;
49            }
50            
51            return val;
52        }
53    
54      Sample* SampleManager::FindSample(std::string samplePath, int offset) {      Sample* SampleManager::FindSample(std::string samplePath, int offset) {
55          std::map<Sample*, std::set<Region*> >::iterator it = sampleMap.begin();          std::map<Sample*, std::set<Region*> >::iterator it = sampleMap.begin();
# Line 432  namespace sfz Line 446  namespace sfz
446          ampeg_attack   = 0;          ampeg_attack   = 0;
447          ampeg_hold     = 0;          ampeg_hold     = 0;
448          ampeg_decay    = 0;          ampeg_decay    = 0;
449          ampeg_sustain  = 100; // in percentage          ampeg_sustain  = -1; // in percentage
450          ampeg_release  = 0;          ampeg_release  = 0;
451    
452          ampeg_vel2delay   = 0;          ampeg_vel2delay   = 0;
# Line 1285  namespace sfz Line 1299  namespace sfz
1299          else if ("pitchlfo_fade" == key) pCurDef->pitchlfo_fade = ToFloat(value);          else if ("pitchlfo_fade" == key) pCurDef->pitchlfo_fade = ToFloat(value);
1300          else if ("pitchlfo_freq" == key) pCurDef->pitchlfo_freq = ToFloat(value);          else if ("pitchlfo_freq" == key) pCurDef->pitchlfo_freq = ToFloat(value);
1301          else if ("pitchlfo_depth" == key) pCurDef->pitchlfo_depth = ToInt(value);          else if ("pitchlfo_depth" == key) pCurDef->pitchlfo_depth = ToInt(value);
1302            
1303            // v2 LFO
1304            else if (sscanf(key.c_str(), "lfo%d%n", &x, &y)) {
1305                const char* s = key.c_str() + y;
1306                if (strcmp(s, "_freq") == 0) lfo(x).freq = check(key, 0.0f, 20.0f, ToFloat(value));
1307                else if (strcmp(s, "_wave") == 0) lfo(x).wave = ToInt(value);
1308                else if (strcmp(s, "_delay") == 0) lfo(x).delay = check(key, 0.0f, 100.0f, ToFloat(value));
1309                else if (strcmp(s, "_pitch") == 0) lfo(x).pitch = check(key, -9600, 9600, ToInt(value));
1310                else if (strcmp(s, "_cutoff") == 0) lfo(x).cutoff = check(key, -9600, 9600, ToInt(value));
1311                else if (strcmp(s, "_resonance") == 0) lfo(x).resonance = check(key, 0.0f, 40.0f, ToFloat(value));
1312                else if (strcmp(s, "_pan") == 0) lfo(x).pan = check(key, -100.0f, 100.0f, ToFloat(value));
1313                else std::cerr << "The opcode '" << key << "' is unsupported by libsfz!" << std::endl;
1314            }
1315    
1316          else {          else {
1317              std::cerr << "The opcode '" << key << "' is unsupported by libsfz!" << std::endl;              std::cerr << "The opcode '" << key << "' is unsupported by libsfz!" << std::endl;
# Line 1349  namespace sfz Line 1376  namespace sfz
1376          }          }
1377          return e.node[y];          return e.node[y];
1378      }      }
1379        
1380        LFO::LFO(): freq (-1),/* -1 is used to determine whether the LFO was initialized */
1381                    wave(0), delay(0), pitch(0), cutoff(0), resonance(0), pan(0) {
1382            
1383        }
1384    
1385        LFO& File::lfo(int x) {
1386            while (pCurDef->lfos.size() <= x) {
1387                pCurDef->lfos.add(LFO());
1388            }
1389            return pCurDef->lfos[x];
1390        }
1391    
1392  } // !namespace sfz  } // !namespace sfz

Legend:
Removed from v.2216  
changed lines
  Added in v.2218

  ViewVC Help
Powered by ViewVC