diff options
Diffstat (limited to 'src/factories/SampleFactory.cpp')
| -rw-r--r-- | src/factories/SampleFactory.cpp | 31 |
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 |
