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 },
{ 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);
}
}

View file

@ -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)
{

View file

@ -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);

View file

@ -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 };

View file

@ -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, ...)
*/

View file

@ -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); });

View file

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

View file

@ -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")