Formatting step

This commit is contained in:
Paul Fd 2020-03-31 10:46:12 +02:00
parent 7e8cdff407
commit 5088bed9b0
16 changed files with 323 additions and 294 deletions

View file

@ -53,7 +53,8 @@ BENCHMARK_DEFINE_F(EnvelopeFixture, LinearQuantized)(benchmark::State& state) {
{ 0, 0.0f }, { 0, 0.0f },
{ static_cast<int>(state.range(0) - 1), dist(gen) } { 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 }, { 0, 1.0f },
{ static_cast<int>(state.range(0) - 1), dist(gen) } { 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);
} }
} }

View file

@ -17,12 +17,10 @@
#include "MathHelpers.h" #include "MathHelpers.h"
#endif #endif
namespace sfz namespace sfz {
{
template <class T> template <class T>
class SpanHolder class SpanHolder {
{
public: public:
SpanHolder() {} SpanHolder() {}
SpanHolder(const SpanHolder<T>&) = delete; SpanHolder(const SpanHolder<T>&) = delete;
@ -40,7 +38,10 @@ public:
other.available = nullptr; other.available = nullptr;
} }
SpanHolder(T&& value, int* available) 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; }
T* operator->() { return &value; } T* operator->() { return &value; }
explicit operator bool() const { return available != nullptr; } explicit operator bool() const { return available != nullptr; }
@ -49,13 +50,13 @@ public:
if (available) if (available)
*available += 1; *available += 1;
} }
private: private:
T value {}; T value {};
int* available { nullptr }; int* available { nullptr };
}; };
class BufferPool class BufferPool {
{
public: public:
BufferPool() BufferPool()
{ {
@ -148,7 +149,6 @@ public:
} }
#endif #endif
private: private:
void _setBufferSize(unsigned bufferSize) void _setBufferSize(unsigned bufferSize)
{ {

View file

@ -92,7 +92,6 @@ float sfz::MidiState::getNoteVelocity(int noteNumber) const noexcept
return lastNoteVelocities[noteNumber]; return lastNoteVelocities[noteNumber];
} }
void sfz::MidiState::pitchBendEvent(int delay, float pitchBendValue) noexcept void sfz::MidiState::pitchBendEvent(int delay, float pitchBendValue) noexcept
{ {
ASSERT(pitchBendValue >= -1.0f && pitchBendValue <= 1.0f); ASSERT(pitchBendValue >= -1.0f && pitchBendValue <= 1.0f);

View file

@ -125,8 +125,6 @@ public:
const EventVector& getPitchEvents() const noexcept; const EventVector& getPitchEvents() const noexcept;
private: private:
int activeNotes { 0 }; int activeNotes { 0 };
/** /**
@ -134,26 +132,35 @@ private:
* *
*/ */
MidiNoteArray<unsigned> noteOnTimes { {} }; MidiNoteArray<unsigned> noteOnTimes { {} };
/** /**
* @brief Stores the note off times. * @brief Stores the note off times.
* *
*/ */
MidiNoteArray<unsigned> noteOffTimes { {} }; MidiNoteArray<unsigned> noteOffTimes { {} };
/** /**
* @brief Stores the velocity of the note ons for currently * @brief Stores the velocity of the note ons for currently
* depressed notes. * depressed notes.
* *
*/ */
MidiNoteArray<float> lastNoteVelocities; MidiNoteArray<float> lastNoteVelocities;
/** /**
* @brief Current known values for the CCs. * @brief Current known values for the CCs.
* *
*/ */
std::array<EventVector, config::numCCs> cc; 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; EventVector pitchEvents;
float sampleRate { config::defaultSampleRate }; float sampleRate { config::defaultSampleRate };

View file

@ -193,8 +193,7 @@ constexpr float normalizeBend(float bendValue)
return clamp(bendValue, -8191.0f, 8191.0f) / 8191.0f; return clamp(bendValue, -8191.0f, 8191.0f) / 8191.0f;
} }
namespace literals namespace literals {
{
inline float operator""_norm(unsigned long long int value) inline float operator""_norm(unsigned long long int value)
{ {
if (value > 127) 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 * @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); bool findInclude(absl::string_view line, std::string& path);
/** /**
* @brief multiply a value by a factor, in cents. To be used for pitch variations. * @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; return value * modifier;
} }
/** /**
* @brief Compute a crossfade in value with respect to a crossfade range (note, velocity, cc, ...) * @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; return 1.0f;
} }
/** /**
* @brief Compute a crossfade out value with respect to a crossfade range (note, velocity, cc, ...) * @brief Compute a crossfade out value with respect to a crossfade range (note, velocity, cc, ...)
*/ */

View file

@ -545,7 +545,6 @@ void sfz::Voice::fillWithGenerator(AudioSpan<float> buffer) noexcept
const auto leftSpan = buffer.getSpan(0); const auto leftSpan = buffer.getSpan(0);
const auto rightSpan = buffer.getSpan(1); const auto rightSpan = buffer.getSpan(1);
if (region->sample == "*noise") { if (region->sample == "*noise") {
absl::c_generate(leftSpan, [&](){ return noiseDist(Random::randomGenerator); }); absl::c_generate(leftSpan, [&](){ return noiseDist(Random::randomGenerator); });
absl::c_generate(rightSpan, [&](){ return noiseDist(Random::randomGenerator); }); absl::c_generate(rightSpan, [&](){ return noiseDist(Random::randomGenerator); });

View file

@ -76,7 +76,6 @@ TEST_CASE("[LinearEnvelope] 2 events, close")
REQUIRE(output == expected); REQUIRE(output == expected);
} }
TEST_CASE("[LinearEnvelope] 2 events, far") TEST_CASE("[LinearEnvelope] 2 events, far")
{ {
sfz::EventVector events { sfz::EventVector events {

View file

@ -167,13 +167,20 @@ TEST_CASE("[Region] Crossfade in on CC")
region.parseOpcode({ "xfin_locc24", "20" }); region.parseOpcode({ "xfin_locc24", "20" });
region.parseOpcode({ "xfin_hicc24", "24" }); region.parseOpcode({ "xfin_hicc24", "24" });
region.parseOpcode({ "amp_veltrack", "0" }); region.parseOpcode({ "amp_veltrack", "0" });
midiState.ccEvent(0, 24, 19_norm); REQUIRE( region.getCrossfadeGain() == 0.0_a ); midiState.ccEvent(0, 24, 19_norm);
midiState.ccEvent(0, 24, 20_norm); REQUIRE( region.getCrossfadeGain() == 0.0_a ); REQUIRE(region.getCrossfadeGain() == 0.0_a);
midiState.ccEvent(0, 24, 21_norm); REQUIRE( region.getCrossfadeGain() == 0.5_a ); midiState.ccEvent(0, 24, 20_norm);
midiState.ccEvent(0, 24, 22_norm); REQUIRE( region.getCrossfadeGain() == 0.70711_a ); REQUIRE(region.getCrossfadeGain() == 0.0_a);
midiState.ccEvent(0, 24, 23_norm); REQUIRE( region.getCrossfadeGain() == 0.86603_a ); midiState.ccEvent(0, 24, 21_norm);
midiState.ccEvent(0, 24, 24_norm); REQUIRE( region.getCrossfadeGain() == 1.0_a ); REQUIRE(region.getCrossfadeGain() == 0.5_a);
midiState.ccEvent(0, 24, 25_norm); REQUIRE( region.getCrossfadeGain() == 1.0_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") 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({ "xfin_hicc24", "24" });
region.parseOpcode({ "amp_veltrack", "0" }); region.parseOpcode({ "amp_veltrack", "0" });
region.parseOpcode({ "xf_cccurve", "gain" }); region.parseOpcode({ "xf_cccurve", "gain" });
midiState.ccEvent(0, 24, 19_norm); REQUIRE( region.getCrossfadeGain() == 0.0_a ); midiState.ccEvent(0, 24, 19_norm);
midiState.ccEvent(0, 24, 20_norm); REQUIRE( region.getCrossfadeGain() == 0.0_a ); REQUIRE(region.getCrossfadeGain() == 0.0_a);
midiState.ccEvent(0, 24, 21_norm); REQUIRE( region.getCrossfadeGain() == 0.25_a ); midiState.ccEvent(0, 24, 20_norm);
midiState.ccEvent(0, 24, 22_norm); REQUIRE( region.getCrossfadeGain() == 0.5_a ); REQUIRE(region.getCrossfadeGain() == 0.0_a);
midiState.ccEvent(0, 24, 23_norm); REQUIRE( region.getCrossfadeGain() == 0.75_a ); midiState.ccEvent(0, 24, 21_norm);
midiState.ccEvent(0, 24, 24_norm); REQUIRE( region.getCrossfadeGain() == 1.0_a ); REQUIRE(region.getCrossfadeGain() == 0.25_a);
midiState.ccEvent(0, 24, 25_norm); REQUIRE( region.getCrossfadeGain() == 1.0_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") 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_locc24", "20" });
region.parseOpcode({ "xfout_hicc24", "24" }); region.parseOpcode({ "xfout_hicc24", "24" });
region.parseOpcode({ "amp_veltrack", "0" }); region.parseOpcode({ "amp_veltrack", "0" });
midiState.ccEvent(0, 24, 19_norm); REQUIRE( region.getCrossfadeGain() == 1.0_a ); midiState.ccEvent(0, 24, 19_norm);
midiState.ccEvent(0, 24, 20_norm); REQUIRE( region.getCrossfadeGain() == 1.0_a ); REQUIRE(region.getCrossfadeGain() == 1.0_a);
midiState.ccEvent(0, 24, 21_norm); REQUIRE( region.getCrossfadeGain() == 0.86603_a ); midiState.ccEvent(0, 24, 20_norm);
midiState.ccEvent(0, 24, 22_norm); REQUIRE( region.getCrossfadeGain() == 0.70711_a ); REQUIRE(region.getCrossfadeGain() == 1.0_a);
midiState.ccEvent(0, 24, 23_norm); REQUIRE( region.getCrossfadeGain() == 0.5_a ); midiState.ccEvent(0, 24, 21_norm);
midiState.ccEvent(0, 24, 24_norm); REQUIRE( region.getCrossfadeGain() == 0.0_a ); REQUIRE(region.getCrossfadeGain() == 0.86603_a);
midiState.ccEvent(0, 24, 25_norm); REQUIRE( region.getCrossfadeGain() == 0.0_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") 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({ "xfout_hicc24", "24" });
region.parseOpcode({ "amp_veltrack", "0" }); region.parseOpcode({ "amp_veltrack", "0" });
region.parseOpcode({ "xf_cccurve", "gain" }); region.parseOpcode({ "xf_cccurve", "gain" });
midiState.ccEvent(0, 24, 19_norm); REQUIRE( region.getCrossfadeGain() == 1.0_a ); midiState.ccEvent(0, 24, 19_norm);
midiState.ccEvent(0, 24, 20_norm); REQUIRE( region.getCrossfadeGain() == 1.0_a ); REQUIRE(region.getCrossfadeGain() == 1.0_a);
midiState.ccEvent(0, 24, 21_norm); REQUIRE( region.getCrossfadeGain() == 0.75_a ); midiState.ccEvent(0, 24, 20_norm);
midiState.ccEvent(0, 24, 22_norm); REQUIRE( region.getCrossfadeGain() == 0.5_a ); REQUIRE(region.getCrossfadeGain() == 1.0_a);
midiState.ccEvent(0, 24, 23_norm); REQUIRE( region.getCrossfadeGain() == 0.25_a ); midiState.ccEvent(0, 24, 21_norm);
midiState.ccEvent(0, 24, 24_norm); REQUIRE( region.getCrossfadeGain() == 0.0_a ); REQUIRE(region.getCrossfadeGain() == 0.75_a);
midiState.ccEvent(0, 24, 25_norm); REQUIRE( region.getCrossfadeGain() == 0.0_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") TEST_CASE("[Region] Velocity bug for extreme values - veltrack at 0")