Skip to content

Commit dad3ae4

Browse files
authored
Merge develop into master
Merge pull request #480 from Drewol/develop
2 parents cb259d0 + 0265308 commit dad3ae4

File tree

134 files changed

+7877
-3279
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

134 files changed

+7877
-3279
lines changed

.github/workflows/build.yml

+3-1
Original file line numberDiff line numberDiff line change
@@ -86,8 +86,10 @@ jobs:
8686
uses: actions/checkout@v1
8787
- name: Checkout submodules
8888
run: git submodule update --init --recursive
89+
- name: brew update
90+
run: brew update
8991
- name: Install packages
90-
run: brew install cmake freetype libvorbis sdl2 libpng jpeg libarchive
92+
run: brew install freetype libvorbis sdl2 libpng jpeg libarchive
9193
- name: cmake
9294
run: cmake . -DLibArchive_LIBRARY=/usr/local/opt/libarchive/lib/libarchive.dylib -DLibArchive_INCLUDE_DIR=/usr/local/opt/libarchive/include -DCMAKE_BUILD_TYPE=Release
9395
- name: make

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ bin/skins/*
2020
!bin/skins/Default
2121
bin/skins/Default/skin.cfg
2222
bin/replays
23+
bin/profiles
2324

2425
# Intermediate Files
2526
x64

Audio/CMakeLists.txt

+6-3
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,9 @@ target_link_libraries(Audio ${SDL2_LIBRARY})
5959
target_link_libraries(Audio ${OGG_LIBRARIES})
6060
target_link_libraries(Audio ${Vorbis_LIBRARIES})
6161

62-
if(WIN32)
63-
target_compile_options(Graphics PRIVATE /Zi)
64-
endif()
62+
target_link_libraries(Audio cc-common)
63+
64+
# Enable multiprocess compiling
65+
if(MSVC)
66+
target_compile_options(Audio PRIVATE /MP)
67+
endif(MSVC)

Audio/include/Audio/AudioBase.hpp

+22-17
Original file line numberDiff line numberDiff line change
@@ -7,33 +7,33 @@ class DSP
77
{
88
protected:
99
DSP() = default; // Abstract
10-
DSP(const DSP&) = delete;
10+
DSP(const DSP &) = delete;
1111

12-
inline void SetSampleRate(uint32 sampleRate) { m_sampleRate = sampleRate; }
1312
uint32 GetStartSample() const;
1413
uint32 GetCurrentSample() const;
1514

1615
// Smpling rate of m_audio (not m_audioBase)
1716
// Only use this for initializing parameters
1817
uint32 m_sampleRate = 0;
1918

20-
class AudioBase* m_audioBase = nullptr;
21-
class Audio_Impl* m_audio = nullptr;
19+
class AudioBase *m_audioBase = nullptr;
2220

2321
public:
2422
virtual ~DSP();
23+
static bool Sorter(DSP *&a, DSP *&b);
2524

26-
void SetAudio(class Audio_Impl* audio);
27-
void SetAudioBase(class AudioBase* audioBase);
25+
void SetAudioBase(class AudioBase *audioBase);
2826
inline void RemoveAudioBase() { m_audioBase = nullptr; }
27+
inline void SetSampleRate(uint32 sampleRate) { m_sampleRate = sampleRate; }
2928

3029
// Process <numSamples> amount of samples in stereo float format
31-
virtual void Process(float* out, uint32 numSamples) = 0;
32-
virtual const char* GetName() const = 0;
30+
virtual void Process(float *out, uint32 numSamples) = 0;
31+
virtual const char *GetName() const = 0;
3332

3433
float mix = 1.0f;
3534
uint32 priority = 0;
3635
uint32 startTime = 0;
36+
uint32 endTime = 0;
3737
int32 chartOffset = 0;
3838
int32 lastTimingPoint = 0;
3939
};
@@ -46,27 +46,31 @@ class AudioBase
4646
public:
4747
virtual ~AudioBase();
4848
// Process <numSamples> amount of samples in stereo float format
49-
virtual void Process(float* out, uint32 numSamples) = 0;
50-
49+
virtual void Process(float *out, uint32 numSamples) = 0;
50+
5151
// Gets the playback position in millisecond
5252
virtual int32 GetPosition() const = 0;
5353

5454
// Get the sample rate of this audio stream
5555
virtual uint32 GetSampleRate() const = 0;
5656

57+
// Get the exact playback position in samples
58+
virtual uint64 GetSamplePos() const = 0;
59+
5760
// Get the sample rate of the audio connected to this
5861
uint32 GetAudioSampleRate() const;
5962

6063
// Gets pcm data from a decoded stream, nullptr if not available
61-
virtual float* GetPCM() = 0;
64+
virtual float *GetPCM() = 0;
65+
// Gets pcm sample count
6266
virtual uint64 GetPCMCount() const = 0;
67+
virtual void PreRenderDSPs(Vector<DSP *> &DSPs) = 0;
6368

64-
void ProcessDSPs(float* out, uint32 numSamples);
69+
void ProcessDSPs(float *out, uint32 numSamples);
6570
// Adds a signal processor to the audio
66-
void AddDSP(DSP* dsp);
71+
void AddDSP(DSP *dsp);
6772
// Removes a signal processor from the audio
68-
void RemoveDSP(DSP* dsp);
69-
73+
void RemoveDSP(DSP *dsp);
7074

7175
void Deregister();
7276

@@ -80,9 +84,10 @@ class AudioBase
8084
return m_volume;
8185
}
8286

83-
Vector<DSP*> DSPs;
87+
Vector<DSP *> DSPs;
8488
float PlaybackSpeed = 1.0;
85-
class Audio_Impl* audio = nullptr;
89+
class Audio_Impl *audio = nullptr;
90+
8691
private:
8792
float m_volume = 1.0f;
8893
};

Audio/include/Audio/AudioStream.hpp

+2-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@ class Audio;
1010
class AudioStream : public AudioBase
1111
{
1212
public:
13-
static Ref<AudioStream> Create(Audio* audio, const String& path, bool preload);
13+
static Ref<AudioStream> Create(Audio *audio, const String &path, bool preload);
14+
static Ref<AudioStream> Clone(Audio *audio, Ref<AudioStream> source);
1415
virtual ~AudioStream() = default;
1516
// Starts playback of the stream or continues a paused stream
1617
virtual void Play() = 0;

Audio/include/Audio/DSP.hpp

+51-40
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ class PanDSP : public DSP
1010
public:
1111
// -1 to 1 LR pan value
1212
float panning = 0.0f;
13-
virtual void Process(float* out, uint32 numSamples);
14-
virtual const char* GetName() const { return "PanDSP"; }
13+
virtual void Process(float *out, uint32 numSamples);
14+
virtual const char *GetName() const { return "PanDSP"; }
1515
};
1616

1717
// Biquad Filter
@@ -28,8 +28,8 @@ class BQFDSP : public DSP
2828
float a1 = 0.0f;
2929
float a2 = 0.0f;
3030

31-
virtual void Process(float* out, uint32 numSamples);
32-
virtual const char* GetName() const { return "BQFDSP"; }
31+
virtual void Process(float *out, uint32 numSamples);
32+
virtual const char *GetName() const { return "BQFDSP"; }
3333

3434
// Sets the filter parameters
3535
void SetPeaking(float q, float freq, float gain);
@@ -39,13 +39,14 @@ class BQFDSP : public DSP
3939
void SetPeaking(float q, float freq, float gain, float sampleRate);
4040
void SetLowPass(float q, float freq, float sampleRate);
4141
void SetHighPass(float q, float freq, float sampleRate);
42+
4243
private:
4344
// Delayed samples
4445
static const uint32 order = 2;
4546
// FIR Delay buffers
46-
float zb[2][order];
47+
float zb[2][order]{};
4748
// IIR Delay buffers
48-
float za[2][order];
49+
float za[2][order]{};
4950
};
5051

5152
// Combinded Low/High-pass and Peaking filter
@@ -55,9 +56,10 @@ class CombinedFilterDSP : public DSP
5556
CombinedFilterDSP(uint32 sampleRate);
5657
void SetLowPass(float q, float freq, float peakQ, float peakGain);
5758
void SetHighPass(float q, float freq, float peakQ, float peakGain);
58-
virtual const char* GetName() const { return "CombinedFilterDSP"; }
59+
virtual const char *GetName() const { return "CombinedFilterDSP"; }
60+
61+
virtual void Process(float *out, uint32 numSamples);
5962

60-
virtual void Process(float* out, uint32 numSamples);
6163
private:
6264
BQFDSP a;
6365
BQFDSP peak;
@@ -70,8 +72,9 @@ class LimiterDSP : public DSP
7072
LimiterDSP(uint32 sampleRate);
7173

7274
float releaseTime = 0.1f;
73-
virtual void Process(float* out, uint32 numSamples);
74-
virtual const char* GetName() const { return "LimiterDSP"; }
75+
virtual void Process(float *out, uint32 numSamples);
76+
virtual const char *GetName() const { return "LimiterDSP"; }
77+
7578
private:
7679
float m_currentMaxVolume = 1.0f;
7780
float m_currentReleaseTimer = releaseTime;
@@ -84,12 +87,13 @@ class BitCrusherDSP : public DSP
8487

8588
// Duration of samples, <1 = disable
8689
void SetPeriod(float period = 0);
87-
virtual void Process(float* out, uint32 numSamples);
88-
virtual const char* GetName() const { return "BitCrusherDSP"; }
90+
virtual void Process(float *out, uint32 numSamples);
91+
virtual const char *GetName() const { return "BitCrusherDSP"; }
92+
8993
private:
9094
uint32 m_period = 1;
9195
uint32 m_increment = 0;
92-
float m_sampleBuffer[2] = { 0.0f };
96+
float m_sampleBuffer[2] = {0.0f};
9397
uint32 m_currentDuration = 0;
9498
};
9599

@@ -105,14 +109,15 @@ class GateDSP : public DSP
105109
// Low volume
106110
float low = 0.1f;
107111

108-
virtual void Process(float* out, uint32 numSamples);
109-
virtual const char* GetName() const { return "GateDSP"; }
112+
virtual void Process(float *out, uint32 numSamples);
113+
virtual const char *GetName() const { return "GateDSP"; }
114+
110115
private:
111116
float m_gating = 0.5f;
112117
uint32 m_length = 0;
113-
uint32 m_fadeIn = 0; // Fade In mark
118+
uint32 m_fadeIn = 0; // Fade In mark
114119
uint32 m_fadeOut = 0; // Fade Out mark
115-
uint32 m_halfway; // Halfway mark
120+
uint32 m_halfway{}; // Halfway mark
116121
uint32 m_currentSample = 0;
117122
};
118123

@@ -123,8 +128,9 @@ class TapeStopDSP : public DSP
123128

124129
void SetLength(double length);
125130

126-
virtual void Process(float* out, uint32 numSamples);
127-
virtual const char* GetName() const { return "TapeStopDSP"; }
131+
virtual void Process(float *out, uint32 numSamples);
132+
virtual const char *GetName() const { return "TapeStopDSP"; }
133+
128134
private:
129135
uint32 m_length = 0;
130136
Vector<float> m_sampleBuffer;
@@ -142,8 +148,9 @@ class RetriggerDSP : public DSP
142148
void SetGating(float gating);
143149
void SetMaxLength(uint32 length);
144150

145-
virtual void Process(float* out, uint32 numSamples);
146-
virtual const char* GetName() const { return "RetriggerDSP"; }
151+
virtual void Process(float *out, uint32 numSamples);
152+
virtual const char *GetName() const { return "RetriggerDSP"; }
153+
147154
private:
148155
float m_gating = 0.75f;
149156
uint32 m_length = 0;
@@ -166,16 +173,17 @@ class WobbleDSP : public BQFDSP
166173
float fmax = 20000.0f;
167174
float q = 1.414f;
168175

169-
virtual void Process(float* out, uint32 numSamples);
170-
virtual const char* GetName() const { return "WobbleDSP"; }
176+
virtual void Process(float *out, uint32 numSamples);
177+
virtual const char *GetName() const { return "WobbleDSP"; }
178+
171179
private:
172-
uint32 m_length;
180+
uint32 m_length{};
173181
uint32 m_currentSample = 0;
174182
};
175183

176184
// Referenced http://www.musicdsp.org/files/phaser.cpp
177185
class PhaserDSP : public DSP
178-
{
186+
{
179187
public:
180188
PhaserDSP(uint32 sampleRate);
181189

@@ -184,13 +192,13 @@ class PhaserDSP : public DSP
184192
// Frequency range
185193
float dmin = 1000.0f;
186194
float dmax = 4000.0f;
187-
float fb = 0.2f; //feedback
195+
float fb = 0.2f; //feedback
188196
float lmix = 0.33f; //local mix
189197

190198
void SetLength(double length);
191199

192-
virtual void Process(float* out, uint32 numSamples);
193-
virtual const char* GetName() const { return "PhaserDSP"; }
200+
virtual void Process(float *out, uint32 numSamples);
201+
virtual const char *GetName() const { return "PhaserDSP"; }
194202

195203
private:
196204
uint32 m_length = 0;
@@ -204,7 +212,7 @@ class PhaserDSP : public DSP
204212
};
205213

206214
APF filters[2][6];
207-
float za[2] = { 0.0f };
215+
float za[2] = {0.0f};
208216
};
209217

210218
class FlangerDSP : public DSP
@@ -215,8 +223,9 @@ class FlangerDSP : public DSP
215223
void SetLength(double length);
216224
void SetDelayRange(uint32 min, uint32 max);
217225

218-
virtual void Process(float* out, uint32 numSamples);
219-
virtual const char* GetName() const { return "FlangerDSP"; }
226+
virtual void Process(float *out, uint32 numSamples);
227+
virtual const char *GetName() const { return "FlangerDSP"; }
228+
220229
private:
221230
uint32 m_length = 0;
222231

@@ -239,16 +248,16 @@ class EchoDSP : public DSP
239248

240249
float feedback = 0.6f;
241250

242-
virtual void Process(float* out, uint32 numSamples);
243-
virtual const char* GetName() const { return "EchoDSP"; }
251+
virtual void Process(float *out, uint32 numSamples);
252+
virtual const char *GetName() const { return "EchoDSP"; }
253+
244254
private:
245255
uint32 m_bufferLength = 0;
246256
size_t m_bufferOffset = 0;
247257
uint32 m_numLoops = 0;
248258
Vector<float> m_sampleBuffer;
249259
};
250260

251-
252261
class SidechainDSP : public DSP
253262
{
254263
public:
@@ -260,10 +269,11 @@ class SidechainDSP : public DSP
260269
// Volume multiplier for the sidechaing
261270
float amount = 0.25f;
262271

263-
Interpolation::CubicBezier curve;
272+
Interpolation::CubicBezier curve{};
273+
274+
virtual void Process(float *out, uint32 numSamples);
275+
virtual const char *GetName() const { return "SidechainDSP"; }
264276

265-
virtual void Process(float* out, uint32 numSamples);
266-
virtual const char* GetName() const { return "SidechainDSP"; }
267277
private:
268278
uint32 m_length = 0;
269279
size_t m_time = 0;
@@ -279,8 +289,9 @@ class PitchShiftDSP : public DSP
279289

280290
~PitchShiftDSP();
281291

282-
virtual void Process(float* out, uint32 numSamples);
283-
virtual const char* GetName() const { return "PitchShiftDSP"; }
292+
virtual void Process(float *out, uint32 numSamples);
293+
virtual const char *GetName() const { return "PitchShiftDSP"; }
294+
284295
private:
285-
class PitchShiftDSP_Impl* m_impl;
296+
class PitchShiftDSP_Impl *m_impl;
286297
};

0 commit comments

Comments
 (0)