summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorKiritoDv <kiritodev01@gmail.com>2024-11-29 22:11:39 -0600
committerKiritoDv <kiritodev01@gmail.com>2024-11-29 22:11:39 -0600
commite466f58b2cff026c37201154cc74096b1f7ac0ce (patch)
treebd5f9e1021a15551a4a73f35340516e84337f08d /src
parent1d485d7695699dbfe28407a62c312b6c3732d4a2 (diff)
Fixed aiff sample extraction and sample name
Diffstat (limited to 'src')
-rw-r--r--src/Companion.cpp5
-rw-r--r--src/factories/naudio/v0/AudioHeaderFactory.cpp8
-rw-r--r--src/factories/naudio/v0/AudioHeaderFactory.h6
-rw-r--r--src/factories/naudio/v0/AudioManager.cpp4
-rw-r--r--src/factories/naudio/v0/AudioManager.h1
-rw-r--r--src/factories/naudio/v0/SampleFactory.cpp20
-rw-r--r--src/factories/naudio/v0/SampleFactory.h8
7 files changed, 46 insertions, 6 deletions
diff --git a/src/Companion.cpp b/src/Companion.cpp
index a86e64a..0589c84 100644
--- a/src/Companion.cpp
+++ b/src/Companion.cpp
@@ -573,7 +573,7 @@ void Companion::ProcessFile(YAML::Node root) {
if(assetNode["type"]){
const auto type = GetSafeNode<std::string>(assetNode, "type");
- if(type == "SAMPLE"){
+ if(type == "NAUDIO:V0:SAMPLE"){
AudioManager::Instance->bind_sample(assetNode, output);
}
}
@@ -597,10 +597,9 @@ void Companion::ProcessFile(YAML::Node root) {
auto output = (this->gCurrentDirectory / entryName).string();
std::replace(output.begin(), output.end(), '\\', '/');
-
if(node["type"]){
const auto type = GetSafeNode<std::string>(node, "type");
- if(type == "SAMPLE"){
+ if(type == "NAUDIO:V0:SAMPLE"){
AudioManager::Instance->bind_sample(node, output);
}
}
diff --git a/src/factories/naudio/v0/AudioHeaderFactory.cpp b/src/factories/naudio/v0/AudioHeaderFactory.cpp
index 1cd3d7c..e4ef99f 100644
--- a/src/factories/naudio/v0/AudioHeaderFactory.cpp
+++ b/src/factories/naudio/v0/AudioHeaderFactory.cpp
@@ -6,6 +6,7 @@
#include "spdlog/spdlog.h"
#include <factories/naudio/v1/AudioConverter.h>
+/*
ExportResult AudioAIFCExporter::Export(std::ostream& write, std::shared_ptr<IParsedData> data, std::string& entryName, YAML::Node& node, std::string* replacement) {
auto samples = AudioManager::Instance->get_samples();
@@ -26,11 +27,16 @@ ExportResult AudioAIFCExporter::Export(std::ostream& write, std::shared_ptr<IPar
aifc.Close();
aiff.Finish(file);
file.close();
- SPDLOG_INFO("Exported {}", dpath + "_bank_" + std::to_string(temp) + ".aiff");
+ // SPDLOG_INFO("Exported {}", dpath + "_bank_" + std::to_string(temp) + ".aiff");
+
+ SPDLOG_INFO("sample_{}:", temp);
+ SPDLOG_INFO(" type: NAUDIO:V0:SAMPLE");
+ SPDLOG_INFO(" id: {}\n", temp);
}
return std::nullopt;
}
+*/
std::optional<std::shared_ptr<IParsedData>> AudioHeaderFactory::parse(std::vector<uint8_t>& buffer, YAML::Node& data) {
AudioManager::Instance->initialize(buffer, data);
diff --git a/src/factories/naudio/v0/AudioHeaderFactory.h b/src/factories/naudio/v0/AudioHeaderFactory.h
index 0d09d73..7e4ef5d 100644
--- a/src/factories/naudio/v0/AudioHeaderFactory.h
+++ b/src/factories/naudio/v0/AudioHeaderFactory.h
@@ -2,10 +2,12 @@
#include <factories/BaseFactory.h>
+/*
class AudioAIFCExporter : public BaseExporter {
public:
ExportResult Export(std::ostream& write, std::shared_ptr<IParsedData> data, std::string& entryName, YAML::Node& node, std::string* replacement);
};
+*/
class AudioDummyExporter : public BaseExporter {
public:
@@ -22,11 +24,11 @@ public:
}
std::unordered_map<ExportType, std::shared_ptr<BaseExporter>> GetExporters() override {
return {
- REGISTER(Modding, AudioAIFCExporter)
+ // REGISTER(Modding, AudioGenericAIFCExporter)
REGISTER(Header, AudioDummyExporter)
REGISTER(Binary, AudioDummyExporter)
REGISTER(Code, AudioDummyExporter)
};
}
- bool SupportModdedAssets() override { return true; }
+ bool HasModdedDependencies() override { return true; }
}; \ No newline at end of file
diff --git a/src/factories/naudio/v0/AudioManager.cpp b/src/factories/naudio/v0/AudioManager.cpp
index 2752308..4c836a9 100644
--- a/src/factories/naudio/v0/AudioManager.cpp
+++ b/src/factories/naudio/v0/AudioManager.cpp
@@ -545,6 +545,10 @@ std::map<uint32_t, Bank> AudioManager::get_banks() {
return this->banks;
}
+std::vector<SampleBank*> AudioManager::get_loaded_banks() {
+ return this->loaded_tbl.banks;
+}
+
std::vector<AudioBankSample*> AudioManager::get_samples() {
std::vector<AudioBankSample*> samples;
for(auto &bank : this->loaded_tbl.banks){
diff --git a/src/factories/naudio/v0/AudioManager.h b/src/factories/naudio/v0/AudioManager.h
index 0d072bc..644ce15 100644
--- a/src/factories/naudio/v0/AudioManager.h
+++ b/src/factories/naudio/v0/AudioManager.h
@@ -129,6 +129,7 @@ public:
std::string& get_sample(uint32_t id);
AudioBankSample get_aifc(int32_t index);
std::map<uint32_t, Bank> get_banks();
+ std::vector<SampleBank*> get_loaded_banks();
std::vector<AudioBankSample*> get_samples();
uint32_t get_index(AudioBankSample* bank);
private:
diff --git a/src/factories/naudio/v0/SampleFactory.cpp b/src/factories/naudio/v0/SampleFactory.cpp
index b8bc7fa..8d25096 100644
--- a/src/factories/naudio/v0/SampleFactory.cpp
+++ b/src/factories/naudio/v0/SampleFactory.cpp
@@ -1,5 +1,25 @@
#include "SampleFactory.h"
+#include <vector>
+#include "Companion.h"
+#include "AIFCDecode.h"
+#include "spdlog/spdlog.h"
+#include <factories/naudio/v1/AudioConverter.h>
+
+ExportResult SampleModdingExporter::Export(std::ostream& writer, std::shared_ptr<IParsedData> raw, std::string& entryName, YAML::Node& node, std::string* replacement) {
+ auto sample = std::static_pointer_cast<SampleData>(raw);
+ *replacement += ".aiff";
+
+ LUS::BinaryWriter aifc = LUS::BinaryWriter();
+ AudioConverter::SampleV0ToAIFC(&sample->mSample, aifc);
+
+ LUS::BinaryWriter aiff = LUS::BinaryWriter();
+ write_aiff(aifc.ToVector(), aiff);
+ aifc.Close();
+ aiff.Finish(writer);
+ return std::nullopt;
+}
+
ExportResult SampleBinaryExporter::Export(std::ostream &write, std::shared_ptr<IParsedData> raw, std::string& entryName, YAML::Node &node, std::string* replacement ) {
auto writer = LUS::BinaryWriter();
auto sample = std::static_pointer_cast<SampleData>(raw)->mSample;
diff --git a/src/factories/naudio/v0/SampleFactory.h b/src/factories/naudio/v0/SampleFactory.h
index ae940e2..ed292fe 100644
--- a/src/factories/naudio/v0/SampleFactory.h
+++ b/src/factories/naudio/v0/SampleFactory.h
@@ -5,6 +5,11 @@
#include <factories/BaseFactory.h>
#include "AudioManager.h"
+class SampleModdingExporter : public BaseExporter {
+public:
+ ExportResult Export(std::ostream& write, std::shared_ptr<IParsedData> data, std::string& entryName, YAML::Node& node, std::string* replacement);
+};
+
class SampleData : public IParsedData {
public:
AudioBankSample mSample;
@@ -21,7 +26,10 @@ public:
std::optional<std::shared_ptr<IParsedData>> parse(std::vector<uint8_t>& buffer, YAML::Node& data) override;
std::unordered_map<ExportType, std::shared_ptr<BaseExporter>> GetExporters() override {
return {
+ REGISTER(Modding, SampleModdingExporter)
REGISTER(Binary, SampleBinaryExporter)
};
}
+
+ bool SupportModdedAssets() override { return true; }
}; \ No newline at end of file