summaryrefslogtreecommitdiff
path: root/src/factories/SampleFactory.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/factories/SampleFactory.cpp')
-rw-r--r--src/factories/SampleFactory.cpp31
1 files changed, 19 insertions, 12 deletions
diff --git a/src/factories/SampleFactory.cpp b/src/factories/SampleFactory.cpp
index 9b7c48f..100c7da 100644
--- a/src/factories/SampleFactory.cpp
+++ b/src/factories/SampleFactory.cpp
@@ -6,31 +6,38 @@ void SampleBinaryExporter::Export(std::ostream &write, std::shared_ptr<IParsedDa
auto sample = std::static_pointer_cast<SampleData>(raw)->mSample;
WriteHeader(writer, LUS::ResourceType::Sample, 0);
- writer.Write((uint32_t) sample.loop.start);
- writer.Write((uint32_t) sample.loop.end);
- writer.Write((uint32_t) sample.loop.count);
- writer.Write((uint32_t) sample.loop.pad);
+ writer.Write(sample.loop.start);
+ writer.Write(sample.loop.end);
+ writer.Write(sample.loop.count);
+ writer.Write(sample.loop.pad);
if(sample.loop.state.has_value()){
auto state = sample.loop.state.value();
- writer.Write((uint32_t) state.size());
- writer.Write((char*) state.data(), state.size() * sizeof(int16_t));
+ writer.Write(static_cast<uint32_t>(state.size()));
+ writer.Write(reinterpret_cast<char*>(state.data()), state.size() * sizeof(int16_t));
} else {
- writer.Write((uint32_t) 0);
+ writer.Write(static_cast<uint32_t>(0));
}
- writer.Write((uint32_t) sample.book.order);
- writer.Write((uint32_t) sample.book.npredictors);
+ writer.Write(sample.book.order);
+ writer.Write(sample.book.npredictors);
+
+ writer.Write(static_cast<uint32_t>(sample.book.table.size()));
+ writer.Write(reinterpret_cast<char*>(sample.book.table.data()), sample.book.table.size() * sizeof(int16_t));
+
+ writer.Write(static_cast<int32_t>(sample.data.size()));
+ writer.Write(reinterpret_cast<char*>(sample.data.data()), sample.data.size());
- writer.Write((uint32_t) sample.book.table.size());
- writer.Write((char*) sample.book.table.data(), sample.book.table.size() * sizeof(int16_t));
writer.Write(sample.name);
writer.Finish(write);
}
std::optional<std::shared_ptr<IParsedData>> SampleFactory::parse(std::vector<uint8_t>& buffer, YAML::Node& data) {
- auto id = data["id"].as<int32_t>();
+ const auto id = data["id"].as<int32_t>();
+ if(AudioManager::Instance == nullptr){
+ throw std::runtime_error("AudioManager not initialized");
+ }
AudioBankSample entry = AudioManager::Instance->get_aifc(id);
return std::make_shared<SampleData>(entry);
} \ No newline at end of file