Torch
Loading...
Searching...
No Matches
SampleFactory.h
1#pragma once
2
3#include <utility>
4
5#include <factories/BaseFactory.h>
6#include "AudioManager.h"
7
9public:
10 ExportResult Export(std::ostream& write, std::shared_ptr<IParsedData> data, std::string& entryName, YAML::Node& node, std::string* replacement);
11};
12
13class SampleData : public IParsedData {
14public:
15 AudioBankSample mSample;
16
17 explicit SampleData(AudioBankSample sample) : mSample(std::move(sample)) {}
18};
19
21 ExportResult Export(std::ostream& write, std::shared_ptr<IParsedData> data, std::string& entryName, YAML::Node& node, std::string* replacement) override;
22};
23
24class SampleFactory : public BaseFactory {
25public:
26 std::optional<std::shared_ptr<IParsedData>> parse(std::vector<uint8_t>& buffer, YAML::Node& data) override;
27 std::unordered_map<ExportType, std::shared_ptr<BaseExporter>> GetExporters() override {
28 return {
29 // REGISTER(Modding, SampleModdingExporter)
30 REGISTER(Binary, SampleBinaryExporter)
31 };
32 }
33
34 bool SupportModdedAssets() override { return true; }
35};
36
37#ifdef BUILD_UI
38// Decodes a sample to PCM16 through the AIFF converter. The PCM is 1:1 with
39// the vadpcm frames (front-padded so loop points stay aligned); `rate` is the
40// tuning-derived natural rate.
41bool DecodeSampleToPcm(AudioBankSample* sample, std::vector<int16_t>& pcm, int& rate);
42
43// Parses an in-memory AIFF (as produced by write_aiff) into PCM16.
44bool DecodeAiffBytes(const std::vector<char>& bytes, std::vector<int16_t>& pcm, int& rate);
45
46// Plays the sample (decoded through the AIFF converter) with basic controls.
47class SampleFactoryUI : public BaseFactoryUI {
48public:
49 float GetItemHeight(const ParseResultData& data) override;
50 void DrawUI(const ParseResultData& data) override;
51};
52#endif
Definition BaseFactory.h:96
Definition BaseFactory.h:102
Definition BaseFactory.h:88
Definition SampleFactory.h:20
Definition SampleFactory.h:24
Definition SampleFactory.h:8
Definition AudioManager.h:73
Definition Companion.h:123