Polyphase Game Engine
Loading...
Searching...
No Matches
SoundWave.h
Go to the documentation of this file.
1#pragma once
2
3#include "Asset.h"
4
6{
7public:
8
10
11 SoundWave();
12 ~SoundWave();
13
14 virtual void LoadStream(Stream& stream, Platform platform) override;
15 virtual void SaveStream(Stream& stream, Platform platform) override;
16 virtual void Create() override;
17 virtual void Destroy() override;
18 virtual bool Import(const std::string& path, ImportOptions* options) override;
19 virtual void GatherProperties(std::vector<Property>& outProps) override;
20 virtual glm::vec4 GetTypeColor() override;
21 virtual const char* GetTypeName() override;
22 virtual const char* GetTypeImportExt() override;
23
24 void SetPcmData(uint8_t* data, uint32_t size, uint32_t numSamples, uint32_t bitsPerSample, uint32_t numChannels, uint32_t sampleRate);
25
26 // Decode an in-memory WAV (or OGG, when AUD_DecodeVorbis is available)
27 // buffer into `out` and Create() it. Format detected via magic bytes:
28 // RIFF/WAVE for WAV, "OggS" for OGG. Pass formatHint = "wav"/"ogg" to
29 // skip detection. Runtime-safe.
30 static bool LoadFromMemory(const uint8_t* data, size_t size, const char* formatHint, SoundWave& out);
31
32 void SetVolumeMultiplier(float volume);
33 float GetVolumeMultiplier() const;
34
35 void SetPitchMultiplier(float pitch);
36 float GetPitchMultiplier() const;
37
38 void SetAudioClass(int8_t audioClass);
39 int8_t GetAudioClass() const;
40
41 uint8_t* GetWaveData() const;
42 uint32_t GetWaveDataSize() const;
43 uint32_t GetNumChannels() const;
44 uint32_t GetBitsPerSample() const;
45 uint32_t GetSampleRate() const;
46 uint32_t GetNumSamples() const;
47 uint32_t GetBlockAlign() const;
48 uint32_t GetByteRate() const;
49
50 float GetDuration() const;
51
52protected:
53
54 static bool HandlePropChange(Datum* datum, uint32_t index, const void* newValue);
55
56 uint8_t* mWaveData = nullptr;
57 uint32_t mWaveDataSize = 0;
58
59 uint8_t* mCompressedData = nullptr;
60 uint32_t mCompressedSize = 0;
61
62 // Properties
63 float mVolumeMultiplier = 1.0f;
64 float mPitchMultiplier = 1.0f;
65 int8_t mAudioClass = 0;
66 bool mCompress = false;
67 bool mCompressInternal = false;
68
69 // Soundwave Format
70 uint32_t mNumChannels = 1;
71 uint32_t mBitsPerSample = 8;
72 uint32_t mSampleRate = 22050;
73 uint32_t mNumSamples = 0;
74 uint32_t mBlockAlign = 0;
75 uint32_t mByteRate = 0;
76};
Platform
Definition EngineTypes.h:31
#define POLYPHASE_API
Definition PolyphaseAPI.h:31
Definition Asset.h:113
virtual bool Import(const std::string &path, ImportOptions *options=nullptr)
Definition Asset.cpp:244
virtual void Create()
Definition Asset.cpp:77
virtual void SaveStream(Stream &stream, Platform platform)
Definition Asset.cpp:236
virtual glm::vec4 GetTypeColor()
Definition Asset.cpp:254
virtual const char * GetTypeImportExt()
Definition Asset.cpp:264
virtual const char * GetTypeName()
Definition Asset.cpp:259
virtual void GatherProperties(std::vector< Property > &outProps) override
Definition Asset.cpp:249
virtual void LoadStream(Stream &stream, Platform platform)
Definition Asset.cpp:222
virtual void Destroy()
Definition Asset.cpp:87
Definition Datum.h:164
Definition Asset.h:102
Definition SoundWave.h:6
DECLARE_ASSET(SoundWave, Asset)
Definition Stream.h:21