137 |
|
|
138 |
Sample* Region::GetSample(bool create) |
Sample* Region::GetSample(bool create) |
139 |
{ |
{ |
140 |
if (pSample == NULL && create) { |
if (pSample == NULL && create && sample != "*silence") { |
141 |
uint i = offset ? *offset : 0; |
uint i = offset ? *offset : 0; |
142 |
Sample* sf = GetInstrument()->GetSampleManager()->FindSample(sample, i, end); |
Sample* sf = GetInstrument()->GetSampleManager()->FindSample(sample, i, end); |
143 |
if (sf != NULL) pSample = sf; // Reuse already created sample |
if (sf != NULL) pSample = sf; // Reuse already created sample |
1480 |
// sample definition |
// sample definition |
1481 |
if ("sample" == key) |
if ("sample" == key) |
1482 |
{ |
{ |
1483 |
|
// handle built-in sample types ... |
1484 |
|
if (value == "*silence") { |
1485 |
|
pCurDef->sample = value; |
1486 |
|
return; |
1487 |
|
} else if (value.length() >= 1 && value[0] == '*') { |
1488 |
|
std::cerr << "Unknown or unsupported built-in sample type '" << value << "'!" << std::endl; |
1489 |
|
return; |
1490 |
|
} |
1491 |
|
|
1492 |
|
// handle external samples ... |
1493 |
std::string path = default_path + value; |
std::string path = default_path + value; |
1494 |
#ifndef WIN32 |
#ifndef WIN32 |
1495 |
for (int i = 0; i < path.length(); i++) if (path[i] == '\\') path[i] = '/'; |
for (int i = 0; i < path.length(); i++) if (path[i] == '\\') path[i] = '/'; |