sample banks part 3

This commit is contained in:
freq-mod 2024-08-12 19:23:52 +02:00
parent 235a254458
commit aa225175a8
3 changed files with 10 additions and 12 deletions

View file

@ -24,6 +24,8 @@
#include "sfWrapper.h"
#endif
#define _LE(string) (string)
std::vector<DivSample*> DivEngine::sampleFromFile(const char* path) {
std::vector<DivSample*> ret;
@ -413,7 +415,7 @@ std::vector<DivSample*> DivEngine::sampleFromFile(const char* path) {
DivSample* DivEngine::sampleFromFileRaw(const char* path, DivSampleDepth depth, int channels, bool bigEndian, bool unsign, bool swapNibbles, int rate) {
if (song.sample.size()>=256) {
lastError="too many samples!";
return ret;
return NULL;
}
if (channels<1) {
channels=1;
@ -470,7 +472,7 @@ DivSample* DivEngine::sampleFromFileRaw(const char* path, DivSampleDepth depth,
BUSY_END;
lastError="file is empty!";
delete sample;
return ret;
return NULL;
}
if (len==(SIZE_MAX>>1)) {
@ -478,7 +480,7 @@ DivSample* DivEngine::sampleFromFileRaw(const char* path, DivSampleDepth depth,
BUSY_END;
lastError="file is invalid!";
delete sample;
return ret;
return NULL;
}
if (fseek(f,0,SEEK_SET)<0) {
@ -486,7 +488,7 @@ DivSample* DivEngine::sampleFromFileRaw(const char* path, DivSampleDepth depth,
BUSY_END;
lastError=fmt::sprintf("could not seek to beginning of file! (%s)",strerror(errno));
delete sample;
return ret;
return NULL;
}
lenDivided=len/channels;
@ -528,7 +530,7 @@ DivSample* DivEngine::sampleFromFileRaw(const char* path, DivSampleDepth depth,
BUSY_END;
lastError="this sample is too big! max sample size is 16777215.";
delete sample;
return ret;
return NULL;
}
sample->rate=rate;
@ -543,7 +545,7 @@ DivSample* DivEngine::sampleFromFileRaw(const char* path, DivSampleDepth depth,
lastError=fmt::sprintf("could not read file! (%s)",strerror(errno));
delete[] buf;
delete sample;
return ret;
return NULL;
}
fclose(f);

View file

@ -5274,8 +5274,6 @@ bool FurnaceGUI::loop() {
String errs=_("there were some errors while loading samples:\n");
bool warn=false;
for (String i: fileDialog->getFileName()) {
DivSample*=e->sampleFromFile(i.c_str());
if () {
std::vector<DivSample*> samples=e->sampleFromFile(i.c_str());
if (samples.empty()) {
if (fileDialog->getFileName().size()>1) {
@ -6503,8 +6501,6 @@ centerNextWindow(_("Select Sample"),canvasW,canvasH);
}
bool reissueSearch=false;
if (ImGui::InputTextWithHint("##SysSearch",settings.language == 0 ? "Search..." : _("Search..."),&sampleBankSearchQuery)) reissueSearch=true;
bool anySelected=false;
float sizeY=ImGui::GetFrameHeightWithSpacing()*pendingSamples.size();
if (sizeY>(canvasH-180.0*dpiScale))

View file

@ -1605,7 +1605,7 @@ class FurnaceGUI {
String folderString;
std::vector<DivSystem> sysSearchResults;
std::vector<std::pair><DivSample*,bool>> sampleBankSearchResults;
std::vector<std::pair<DivSample*,bool>> sampleBankSearchResults;
std::vector<FurnaceGUISysDef> newSongSearchResults;
std::vector<int> paletteSearchResults;
FixedQueue<String,32> recentFile;
@ -2375,7 +2375,7 @@ class FurnaceGUI {
std::vector<DivCommand> cmdStream;
std::vector<Particle> particles;
std::vector<std::pair<DivInstrument*,bool>> pendingIns;
std::vector <std::pair<DivSample*,bool>> pendingSamples;
std::vector<std::pair<DivSample*,bool>> pendingSamples;
std::vector<FurnaceGUISysCategory> sysCategories;