Formatting step
This commit is contained in:
parent
7e8cdff407
commit
5088bed9b0
16 changed files with 323 additions and 294 deletions
|
|
@ -53,7 +53,8 @@ BENCHMARK_DEFINE_F(EnvelopeFixture, LinearQuantized)(benchmark::State& state) {
|
|||
{ 0, 0.0f },
|
||||
{ static_cast<int>(state.range(0) - 1), dist(gen) }
|
||||
};
|
||||
linearEnvelope(events, absl::MakeSpan(output), [](float x) { return x; }, 0.5);
|
||||
linearEnvelope(
|
||||
events, absl::MakeSpan(output), [](float x) { return x; }, 0.5);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -75,7 +76,8 @@ BENCHMARK_DEFINE_F(EnvelopeFixture, MultiplicativeQuantized)(benchmark::State& s
|
|||
{ 0, 1.0f },
|
||||
{ static_cast<int>(state.range(0) - 1), dist(gen) }
|
||||
};
|
||||
multiplicativeEnvelope(events, absl::MakeSpan(output), [](float x) { return x; }, 2.0f);
|
||||
multiplicativeEnvelope(
|
||||
events, absl::MakeSpan(output), [](float x) { return x; }, 2.0f);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -17,12 +17,10 @@
|
|||
#include "MathHelpers.h"
|
||||
#endif
|
||||
|
||||
namespace sfz
|
||||
{
|
||||
namespace sfz {
|
||||
|
||||
template <class T>
|
||||
class SpanHolder
|
||||
{
|
||||
class SpanHolder {
|
||||
public:
|
||||
SpanHolder() {}
|
||||
SpanHolder(const SpanHolder<T>&) = delete;
|
||||
|
|
@ -40,7 +38,10 @@ public:
|
|||
other.available = nullptr;
|
||||
}
|
||||
SpanHolder(T&& value, int* available)
|
||||
: value(std::forward<T>(value)), available(available) {}
|
||||
: value(std::forward<T>(value))
|
||||
, available(available)
|
||||
{
|
||||
}
|
||||
T& operator*() { return value; }
|
||||
T* operator->() { return &value; }
|
||||
explicit operator bool() const { return available != nullptr; }
|
||||
|
|
@ -49,13 +50,13 @@ public:
|
|||
if (available)
|
||||
*available += 1;
|
||||
}
|
||||
|
||||
private:
|
||||
T value {};
|
||||
int* available { nullptr };
|
||||
};
|
||||
|
||||
class BufferPool
|
||||
{
|
||||
class BufferPool {
|
||||
public:
|
||||
BufferPool()
|
||||
{
|
||||
|
|
@ -148,7 +149,6 @@ public:
|
|||
}
|
||||
#endif
|
||||
|
||||
|
||||
private:
|
||||
void _setBufferSize(unsigned bufferSize)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -92,7 +92,6 @@ float sfz::MidiState::getNoteVelocity(int noteNumber) const noexcept
|
|||
return lastNoteVelocities[noteNumber];
|
||||
}
|
||||
|
||||
|
||||
void sfz::MidiState::pitchBendEvent(int delay, float pitchBendValue) noexcept
|
||||
{
|
||||
ASSERT(pitchBendValue >= -1.0f && pitchBendValue <= 1.0f);
|
||||
|
|
|
|||
|
|
@ -125,8 +125,6 @@ public:
|
|||
const EventVector& getPitchEvents() const noexcept;
|
||||
|
||||
private:
|
||||
|
||||
|
||||
int activeNotes { 0 };
|
||||
|
||||
/**
|
||||
|
|
@ -134,26 +132,35 @@ private:
|
|||
*
|
||||
*/
|
||||
MidiNoteArray<unsigned> noteOnTimes { {} };
|
||||
|
||||
/**
|
||||
* @brief Stores the note off times.
|
||||
*
|
||||
*/
|
||||
|
||||
MidiNoteArray<unsigned> noteOffTimes { {} };
|
||||
|
||||
/**
|
||||
* @brief Stores the velocity of the note ons for currently
|
||||
* depressed notes.
|
||||
*
|
||||
*/
|
||||
MidiNoteArray<float> lastNoteVelocities;
|
||||
|
||||
/**
|
||||
* @brief Current known values for the CCs.
|
||||
*
|
||||
*/
|
||||
std::array<EventVector, config::numCCs> cc;
|
||||
|
||||
const EventVector nullEvent {{0, 0.0f}};
|
||||
/**
|
||||
* Pitch bend status
|
||||
* @brief Null event
|
||||
*
|
||||
*/
|
||||
const EventVector nullEvent { { 0, 0.0f } };
|
||||
|
||||
/**
|
||||
* @brief Pitch bend status
|
||||
*/
|
||||
EventVector pitchEvents;
|
||||
float sampleRate { config::defaultSampleRate };
|
||||
|
|
|
|||
|
|
@ -193,8 +193,7 @@ constexpr float normalizeBend(float bendValue)
|
|||
return clamp(bendValue, -8191.0f, 8191.0f) / 8191.0f;
|
||||
}
|
||||
|
||||
namespace literals
|
||||
{
|
||||
namespace literals {
|
||||
inline float operator""_norm(unsigned long long int value)
|
||||
{
|
||||
if (value > 127)
|
||||
|
|
@ -204,7 +203,6 @@ inline float operator ""_norm(unsigned long long int value)
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief Convert a note in string to its equivalent midi note number
|
||||
*
|
||||
|
|
@ -275,7 +273,6 @@ bool findDefine(absl::string_view line, absl::string_view& variable, absl::strin
|
|||
*/
|
||||
bool findInclude(absl::string_view line, std::string& path);
|
||||
|
||||
|
||||
/**
|
||||
* @brief multiply a value by a factor, in cents. To be used for pitch variations.
|
||||
*
|
||||
|
|
@ -293,7 +290,6 @@ inline CXX14_CONSTEXPR float gainModifier(T modifier, float value)
|
|||
return value * modifier;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief Compute a crossfade in value with respect to a crossfade range (note, velocity, cc, ...)
|
||||
*/
|
||||
|
|
@ -318,7 +314,6 @@ float crossfadeIn(const sfz::Range<T>& crossfadeRange, U value, SfzCrossfadeCurv
|
|||
return 1.0f;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief Compute a crossfade out value with respect to a crossfade range (note, velocity, cc, ...)
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -545,7 +545,6 @@ void sfz::Voice::fillWithGenerator(AudioSpan<float> buffer) noexcept
|
|||
const auto leftSpan = buffer.getSpan(0);
|
||||
const auto rightSpan = buffer.getSpan(1);
|
||||
|
||||
|
||||
if (region->sample == "*noise") {
|
||||
absl::c_generate(leftSpan, [&](){ return noiseDist(Random::randomGenerator); });
|
||||
absl::c_generate(rightSpan, [&](){ return noiseDist(Random::randomGenerator); });
|
||||
|
|
|
|||
|
|
@ -76,7 +76,6 @@ TEST_CASE("[LinearEnvelope] 2 events, close")
|
|||
REQUIRE(output == expected);
|
||||
}
|
||||
|
||||
|
||||
TEST_CASE("[LinearEnvelope] 2 events, far")
|
||||
{
|
||||
sfz::EventVector events {
|
||||
|
|
|
|||
|
|
@ -167,13 +167,20 @@ TEST_CASE("[Region] Crossfade in on CC")
|
|||
region.parseOpcode({ "xfin_locc24", "20" });
|
||||
region.parseOpcode({ "xfin_hicc24", "24" });
|
||||
region.parseOpcode({ "amp_veltrack", "0" });
|
||||
midiState.ccEvent(0, 24, 19_norm); REQUIRE( region.getCrossfadeGain() == 0.0_a );
|
||||
midiState.ccEvent(0, 24, 20_norm); REQUIRE( region.getCrossfadeGain() == 0.0_a );
|
||||
midiState.ccEvent(0, 24, 21_norm); REQUIRE( region.getCrossfadeGain() == 0.5_a );
|
||||
midiState.ccEvent(0, 24, 22_norm); REQUIRE( region.getCrossfadeGain() == 0.70711_a );
|
||||
midiState.ccEvent(0, 24, 23_norm); REQUIRE( region.getCrossfadeGain() == 0.86603_a );
|
||||
midiState.ccEvent(0, 24, 24_norm); REQUIRE( region.getCrossfadeGain() == 1.0_a );
|
||||
midiState.ccEvent(0, 24, 25_norm); REQUIRE( region.getCrossfadeGain() == 1.0_a );
|
||||
midiState.ccEvent(0, 24, 19_norm);
|
||||
REQUIRE(region.getCrossfadeGain() == 0.0_a);
|
||||
midiState.ccEvent(0, 24, 20_norm);
|
||||
REQUIRE(region.getCrossfadeGain() == 0.0_a);
|
||||
midiState.ccEvent(0, 24, 21_norm);
|
||||
REQUIRE(region.getCrossfadeGain() == 0.5_a);
|
||||
midiState.ccEvent(0, 24, 22_norm);
|
||||
REQUIRE(region.getCrossfadeGain() == 0.70711_a);
|
||||
midiState.ccEvent(0, 24, 23_norm);
|
||||
REQUIRE(region.getCrossfadeGain() == 0.86603_a);
|
||||
midiState.ccEvent(0, 24, 24_norm);
|
||||
REQUIRE(region.getCrossfadeGain() == 1.0_a);
|
||||
midiState.ccEvent(0, 24, 25_norm);
|
||||
REQUIRE(region.getCrossfadeGain() == 1.0_a);
|
||||
}
|
||||
|
||||
TEST_CASE("[Region] Crossfade in on CC - gain")
|
||||
|
|
@ -185,13 +192,20 @@ TEST_CASE("[Region] Crossfade in on CC - gain")
|
|||
region.parseOpcode({ "xfin_hicc24", "24" });
|
||||
region.parseOpcode({ "amp_veltrack", "0" });
|
||||
region.parseOpcode({ "xf_cccurve", "gain" });
|
||||
midiState.ccEvent(0, 24, 19_norm); REQUIRE( region.getCrossfadeGain() == 0.0_a );
|
||||
midiState.ccEvent(0, 24, 20_norm); REQUIRE( region.getCrossfadeGain() == 0.0_a );
|
||||
midiState.ccEvent(0, 24, 21_norm); REQUIRE( region.getCrossfadeGain() == 0.25_a );
|
||||
midiState.ccEvent(0, 24, 22_norm); REQUIRE( region.getCrossfadeGain() == 0.5_a );
|
||||
midiState.ccEvent(0, 24, 23_norm); REQUIRE( region.getCrossfadeGain() == 0.75_a );
|
||||
midiState.ccEvent(0, 24, 24_norm); REQUIRE( region.getCrossfadeGain() == 1.0_a );
|
||||
midiState.ccEvent(0, 24, 25_norm); REQUIRE( region.getCrossfadeGain() == 1.0_a );
|
||||
midiState.ccEvent(0, 24, 19_norm);
|
||||
REQUIRE(region.getCrossfadeGain() == 0.0_a);
|
||||
midiState.ccEvent(0, 24, 20_norm);
|
||||
REQUIRE(region.getCrossfadeGain() == 0.0_a);
|
||||
midiState.ccEvent(0, 24, 21_norm);
|
||||
REQUIRE(region.getCrossfadeGain() == 0.25_a);
|
||||
midiState.ccEvent(0, 24, 22_norm);
|
||||
REQUIRE(region.getCrossfadeGain() == 0.5_a);
|
||||
midiState.ccEvent(0, 24, 23_norm);
|
||||
REQUIRE(region.getCrossfadeGain() == 0.75_a);
|
||||
midiState.ccEvent(0, 24, 24_norm);
|
||||
REQUIRE(region.getCrossfadeGain() == 1.0_a);
|
||||
midiState.ccEvent(0, 24, 25_norm);
|
||||
REQUIRE(region.getCrossfadeGain() == 1.0_a);
|
||||
}
|
||||
TEST_CASE("[Region] Crossfade out on CC")
|
||||
{
|
||||
|
|
@ -201,13 +215,20 @@ TEST_CASE("[Region] Crossfade out on CC")
|
|||
region.parseOpcode({ "xfout_locc24", "20" });
|
||||
region.parseOpcode({ "xfout_hicc24", "24" });
|
||||
region.parseOpcode({ "amp_veltrack", "0" });
|
||||
midiState.ccEvent(0, 24, 19_norm); REQUIRE( region.getCrossfadeGain() == 1.0_a );
|
||||
midiState.ccEvent(0, 24, 20_norm); REQUIRE( region.getCrossfadeGain() == 1.0_a );
|
||||
midiState.ccEvent(0, 24, 21_norm); REQUIRE( region.getCrossfadeGain() == 0.86603_a );
|
||||
midiState.ccEvent(0, 24, 22_norm); REQUIRE( region.getCrossfadeGain() == 0.70711_a );
|
||||
midiState.ccEvent(0, 24, 23_norm); REQUIRE( region.getCrossfadeGain() == 0.5_a );
|
||||
midiState.ccEvent(0, 24, 24_norm); REQUIRE( region.getCrossfadeGain() == 0.0_a );
|
||||
midiState.ccEvent(0, 24, 25_norm); REQUIRE( region.getCrossfadeGain() == 0.0_a );
|
||||
midiState.ccEvent(0, 24, 19_norm);
|
||||
REQUIRE(region.getCrossfadeGain() == 1.0_a);
|
||||
midiState.ccEvent(0, 24, 20_norm);
|
||||
REQUIRE(region.getCrossfadeGain() == 1.0_a);
|
||||
midiState.ccEvent(0, 24, 21_norm);
|
||||
REQUIRE(region.getCrossfadeGain() == 0.86603_a);
|
||||
midiState.ccEvent(0, 24, 22_norm);
|
||||
REQUIRE(region.getCrossfadeGain() == 0.70711_a);
|
||||
midiState.ccEvent(0, 24, 23_norm);
|
||||
REQUIRE(region.getCrossfadeGain() == 0.5_a);
|
||||
midiState.ccEvent(0, 24, 24_norm);
|
||||
REQUIRE(region.getCrossfadeGain() == 0.0_a);
|
||||
midiState.ccEvent(0, 24, 25_norm);
|
||||
REQUIRE(region.getCrossfadeGain() == 0.0_a);
|
||||
}
|
||||
|
||||
TEST_CASE("[Region] Crossfade out on CC - gain")
|
||||
|
|
@ -219,13 +240,20 @@ TEST_CASE("[Region] Crossfade out on CC - gain")
|
|||
region.parseOpcode({ "xfout_hicc24", "24" });
|
||||
region.parseOpcode({ "amp_veltrack", "0" });
|
||||
region.parseOpcode({ "xf_cccurve", "gain" });
|
||||
midiState.ccEvent(0, 24, 19_norm); REQUIRE( region.getCrossfadeGain() == 1.0_a );
|
||||
midiState.ccEvent(0, 24, 20_norm); REQUIRE( region.getCrossfadeGain() == 1.0_a );
|
||||
midiState.ccEvent(0, 24, 21_norm); REQUIRE( region.getCrossfadeGain() == 0.75_a );
|
||||
midiState.ccEvent(0, 24, 22_norm); REQUIRE( region.getCrossfadeGain() == 0.5_a );
|
||||
midiState.ccEvent(0, 24, 23_norm); REQUIRE( region.getCrossfadeGain() == 0.25_a );
|
||||
midiState.ccEvent(0, 24, 24_norm); REQUIRE( region.getCrossfadeGain() == 0.0_a );
|
||||
midiState.ccEvent(0, 24, 25_norm); REQUIRE( region.getCrossfadeGain() == 0.0_a );
|
||||
midiState.ccEvent(0, 24, 19_norm);
|
||||
REQUIRE(region.getCrossfadeGain() == 1.0_a);
|
||||
midiState.ccEvent(0, 24, 20_norm);
|
||||
REQUIRE(region.getCrossfadeGain() == 1.0_a);
|
||||
midiState.ccEvent(0, 24, 21_norm);
|
||||
REQUIRE(region.getCrossfadeGain() == 0.75_a);
|
||||
midiState.ccEvent(0, 24, 22_norm);
|
||||
REQUIRE(region.getCrossfadeGain() == 0.5_a);
|
||||
midiState.ccEvent(0, 24, 23_norm);
|
||||
REQUIRE(region.getCrossfadeGain() == 0.25_a);
|
||||
midiState.ccEvent(0, 24, 24_norm);
|
||||
REQUIRE(region.getCrossfadeGain() == 0.0_a);
|
||||
midiState.ccEvent(0, 24, 25_norm);
|
||||
REQUIRE(region.getCrossfadeGain() == 0.0_a);
|
||||
}
|
||||
|
||||
TEST_CASE("[Region] Velocity bug for extreme values - veltrack at 0")
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue