834 |
// sample loop shall never be longer than the actual sample size |
// sample loop shall never be longer than the actual sample size |
835 |
eSampleLoopStart.set_upper( |
eSampleLoopStart.set_upper( |
836 |
(dimregion->pSample) |
(dimregion->pSample) |
837 |
? dimregion->pSample->GetSize() - |
? dimregion->pSample->SamplesTotal - |
838 |
dimregion->pSampleLoops[0].LoopLength |
dimregion->pSampleLoops[0].LoopLength |
839 |
: 0 |
: 0 |
840 |
); |
); |
841 |
eSampleLoopLength.set_upper( |
eSampleLoopLength.set_upper( |
842 |
(dimregion->pSample) |
(dimregion->pSample) |
843 |
? dimregion->pSample->GetSize() - |
? dimregion->pSample->SamplesTotal - |
844 |
dimregion->pSampleLoops[0].LoopStart |
dimregion->pSampleLoops[0].LoopStart |
845 |
: 0 |
: 0 |
846 |
); |
); |
861 |
else if (!eSampleLoopPlayCount.get_value()) |
else if (!eSampleLoopPlayCount.get_value()) |
862 |
eSampleLoopPlayCount.set_value(1); |
eSampleLoopPlayCount.set_value(1); |
863 |
} |
} |
864 |
|
|
865 |
|
bool DimRegionEdit::set_sample(gig::Sample* sample) |
866 |
|
{ |
867 |
|
if (dimregion) { |
868 |
|
dimregion->pSample = sample; |
869 |
|
|
870 |
|
// copy sample information from Sample to DimensionRegion |
871 |
|
|
872 |
|
dimregion->UnityNote = sample->MIDIUnityNote; |
873 |
|
dimregion->FineTune = sample->FineTune; |
874 |
|
|
875 |
|
int loops = sample->Loops ? 1 : 0; |
876 |
|
while (dimregion->SampleLoops > loops) { |
877 |
|
dimregion->DeleteSampleLoop(&dimregion->pSampleLoops[0]); |
878 |
|
} |
879 |
|
while (dimregion->SampleLoops < sample->Loops) { |
880 |
|
DLS::sample_loop_t loop; |
881 |
|
dimregion->AddSampleLoop(&loop); |
882 |
|
} |
883 |
|
if (loops) { |
884 |
|
dimregion->pSampleLoops[0].Size = sizeof(DLS::sample_loop_t); |
885 |
|
dimregion->pSampleLoops[0].LoopType = sample->LoopType; |
886 |
|
dimregion->pSampleLoops[0].LoopStart = sample->LoopStart; |
887 |
|
dimregion->pSampleLoops[0].LoopLength = sample->LoopEnd - sample->LoopStart + 1; |
888 |
|
} |
889 |
|
|
890 |
|
// update ui |
891 |
|
wSample->set_text(dimregion->pSample->pInfo->Name); |
892 |
|
eUnityNote.set_ptr(&dimregion->UnityNote); |
893 |
|
eFineTune.set_ptr(&dimregion->FineTune); |
894 |
|
eSampleLoopEnabled.set_active(dimregion->SampleLoops); |
895 |
|
updateLoopElements(); |
896 |
|
|
897 |
|
dimreg_changed_signal(); |
898 |
|
return true; |
899 |
|
} |
900 |
|
return false; |
901 |
|
} |