summaryrefslogtreecommitdiff
path: root/src/factories/AudioHeaderFactory.cpp
blob: 82345527af96e07cf9270ec3f36368da7ab4e865 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include "AudioHeaderFactory.h"

#include <vector>
#include "Companion.h"
#include "audio/AudioManager.h"

void 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();

    int temp = 0;
    for(auto& sample : samples){
        LUS::BinaryWriter writer = LUS::BinaryWriter();
        std::string dpath = Companion::Instance->GetOutputPath() + "/" + (*replacement);
        if(!exists(fs::path(dpath).parent_path())){
            create_directories(fs::path(dpath).parent_path());
        }
        std::ofstream file(dpath + "_bank_" + std::to_string(++temp) + ".aifc", std::ios::binary);
        AudioManager::write_aifc(sample, writer);
        writer.Finish(file);
        file.close();
    }
}

std::optional<std::shared_ptr<IParsedData>> AudioHeaderFactory::parse(std::vector<uint8_t>& buffer, YAML::Node& data) {
    AudioManager::Instance->initialize(buffer, data);
    auto parsed = std::make_shared<IParsedData>();
    return parsed;
}