Remove the indirection
This commit is contained in:
parent
da621bf5ec
commit
5777e65578
6 changed files with 64 additions and 64 deletions
|
|
@ -12,28 +12,24 @@
|
|||
|
||||
namespace sfz {
|
||||
|
||||
Layer::Layer(std::unique_ptr<Region> region, const MidiState& midiState)
|
||||
: Layer(region.get(), midiState)
|
||||
Layer::Layer(int regionNumber, absl::string_view defaultPath, const MidiState& midiState)
|
||||
: Layer(Region(regionNumber, defaultPath), midiState)
|
||||
{
|
||||
regionOwned_ = true;
|
||||
region.release();
|
||||
}
|
||||
|
||||
Layer::Layer(Region* region, const MidiState& midiState)
|
||||
: region_(region), regionOwned_(false), midiState_(midiState)
|
||||
Layer::Layer(const Region& region, const MidiState& midiState)
|
||||
: midiState_(midiState), region_(region)
|
||||
{
|
||||
initializeActivations();
|
||||
}
|
||||
|
||||
Layer::~Layer()
|
||||
{
|
||||
if (regionOwned_)
|
||||
delete region_;
|
||||
}
|
||||
|
||||
void Layer::initializeActivations()
|
||||
{
|
||||
const Region& region = *region_;
|
||||
const Region& region = region_;
|
||||
|
||||
keySwitched_ = !region.usesKeySwitches;
|
||||
previousKeySwitched_ = !region.usesPreviousKeySwitches;
|
||||
|
|
@ -53,7 +49,7 @@ bool Layer::registerNoteOn(int noteNumber, float velocity, float randValue) noex
|
|||
{
|
||||
ASSERT(velocity >= 0.0f && velocity <= 1.0f);
|
||||
|
||||
const Region& region = *region_;
|
||||
const Region& region = region_;
|
||||
|
||||
const bool keyOk = region.keyRange.containsWithEnd(noteNumber);
|
||||
if (keyOk) {
|
||||
|
|
@ -84,7 +80,7 @@ bool Layer::registerNoteOff(int noteNumber, float velocity, float randValue) noe
|
|||
{
|
||||
ASSERT(velocity >= 0.0f && velocity <= 1.0f);
|
||||
|
||||
const Region& region = *region_;
|
||||
const Region& region = region_;
|
||||
|
||||
if (!isSwitchedOn())
|
||||
return false;
|
||||
|
|
@ -130,7 +126,7 @@ bool Layer::registerCC(int ccNumber, float ccValue) noexcept
|
|||
{
|
||||
ASSERT(ccValue >= 0.0f && ccValue <= 1.0f);
|
||||
|
||||
const Region& region = *region_;
|
||||
const Region& region = region_;
|
||||
|
||||
if (ccNumber == region.sustainCC)
|
||||
sustainPressed_ = region.checkSustain && ccValue >= region.sustainThreshold;
|
||||
|
|
@ -167,7 +163,7 @@ bool Layer::registerCC(int ccNumber, float ccValue) noexcept
|
|||
|
||||
void Layer::registerPitchWheel(float pitch) noexcept
|
||||
{
|
||||
const Region& region = *region_;
|
||||
const Region& region = region_;
|
||||
if (region.bendRange.containsWithEnd(pitch))
|
||||
pitchSwitched_ = true;
|
||||
else
|
||||
|
|
@ -176,7 +172,7 @@ void Layer::registerPitchWheel(float pitch) noexcept
|
|||
|
||||
void Layer::registerAftertouch(float aftertouch) noexcept
|
||||
{
|
||||
const Region& region = *region_;
|
||||
const Region& region = region_;
|
||||
if (region.aftertouchRange.containsWithEnd(aftertouch))
|
||||
aftertouchSwitched_ = true;
|
||||
else
|
||||
|
|
@ -185,7 +181,7 @@ void Layer::registerAftertouch(float aftertouch) noexcept
|
|||
|
||||
void Layer::registerTempo(float secondsPerQuarter) noexcept
|
||||
{
|
||||
const Region& region = *region_;
|
||||
const Region& region = region_;
|
||||
const float bpm = 60.0f / secondsPerQuarter;
|
||||
if (region.bpmRange.containsWithEnd(bpm))
|
||||
bpmSwitched_ = true;
|
||||
|
|
@ -219,7 +215,7 @@ void Layer::removeFromSostenutoReleases(int noteNumber) noexcept
|
|||
void Layer::storeSostenutoNotes() noexcept
|
||||
{
|
||||
ASSERT(delayedSostenutoReleases_.empty());
|
||||
const Region& region = *region_;
|
||||
const Region& region = region_;
|
||||
for (int note = region.keyRange.getStart(); note <= region.keyRange.getEnd(); ++note) {
|
||||
if (midiState_.isNotePressed(note))
|
||||
delaySostenutoRelease(note, midiState_.getNoteVelocity(note));
|
||||
|
|
|
|||
|
|
@ -5,9 +5,11 @@
|
|||
// If not, contact the sfizz maintainers at https://github.com/sfztools/sfizz
|
||||
|
||||
#pragma once
|
||||
#include "Region.h"
|
||||
#include "Config.h"
|
||||
#include "utility/NumericId.h"
|
||||
#include "utility/LeakDetector.h"
|
||||
#include <absl/strings/string_view.h>
|
||||
#include <utility>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
|
@ -20,23 +22,26 @@ class MidiState;
|
|||
|
||||
struct Layer {
|
||||
public:
|
||||
Layer(std::unique_ptr<Region> region, const MidiState& midiState);
|
||||
Layer(Region* region, const MidiState& midiState);
|
||||
/**
|
||||
* @brief Initialize a layer based on a new default region.
|
||||
*/
|
||||
Layer(int regionNumber, absl::string_view defaultPath, const MidiState& midiState);
|
||||
|
||||
/**
|
||||
* @brief Initialize a layer based on a copy of the contents of a region.
|
||||
*/
|
||||
Layer(const Region& region, const MidiState& midiState);
|
||||
|
||||
~Layer();
|
||||
|
||||
Layer(const Layer&) = delete;
|
||||
Layer(Layer&&) = delete;
|
||||
Layer& operator=(const Layer&) = delete;
|
||||
Layer& operator=(Layer&&) = delete;
|
||||
|
||||
/**
|
||||
* @brief Get the region that this layer operates on.
|
||||
*/
|
||||
const Region& getRegion() const noexcept { return *region_; }
|
||||
const Region& getRegion() const noexcept { return region_; }
|
||||
/**
|
||||
* @brief Get the region that this layer operates on.
|
||||
*/
|
||||
Region& getRegion() noexcept { return *region_; }
|
||||
Region& getRegion() noexcept { return region_; }
|
||||
|
||||
/**
|
||||
* @brief Reset the activations to their initial states.
|
||||
|
|
@ -103,9 +108,6 @@ public:
|
|||
*/
|
||||
void registerTempo(float secondsPerQuarter) noexcept;
|
||||
|
||||
Region* const region_ {};
|
||||
bool regionOwned_ = false;
|
||||
|
||||
// Started notes
|
||||
bool sustainPressed_ { false };
|
||||
bool sostenutoPressed_ { false };
|
||||
|
|
@ -129,6 +131,8 @@ public:
|
|||
|
||||
int sequenceCounter_ { 0 };
|
||||
|
||||
Region region_;
|
||||
|
||||
LEAK_DETECTOR(Layer);
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -137,9 +137,9 @@ void Synth::Impl::onParseWarning(const SourceRange& range, const std::string& me
|
|||
void Synth::Impl::buildRegion(const std::vector<Opcode>& regionOpcodes)
|
||||
{
|
||||
int regionNumber = static_cast<int>(layers_.size());
|
||||
Region* lastRegion = new Region(regionNumber, defaultPath_);
|
||||
Layer* lastLayer = new Layer(std::unique_ptr<Region>(lastRegion), resources_.midiState);
|
||||
Layer* lastLayer = new Layer(regionNumber, defaultPath_, resources_.midiState);
|
||||
layers_.emplace_back(lastLayer);
|
||||
Region* lastRegion = &lastLayer->getRegion();
|
||||
|
||||
//
|
||||
auto parseOpcodes = [&](const std::vector<Opcode>& opcodes) {
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ TEST_CASE("[Direct Region Tests] Release and release key")
|
|||
SECTION("Release key without sustain")
|
||||
{
|
||||
region.parseOpcode({ "trigger", "release_key" });
|
||||
Layer layer { ®ion, midiState };
|
||||
Layer layer { region, midiState };
|
||||
layer.delayedSustainReleases_.reserve(config::delayedReleaseVoices);
|
||||
midiState.ccEvent(0, 64, 0.0f);
|
||||
layer.registerCC(64, 0.0f);
|
||||
|
|
@ -50,7 +50,7 @@ TEST_CASE("[Direct Region Tests] Release and release key")
|
|||
SECTION("Release key with sustain")
|
||||
{
|
||||
region.parseOpcode({ "trigger", "release_key" });
|
||||
Layer layer { ®ion, midiState };
|
||||
Layer layer { region, midiState };
|
||||
layer.delayedSustainReleases_.reserve(config::delayedReleaseVoices);
|
||||
midiState.ccEvent(0, 64, 1.0f);
|
||||
layer.registerCC(64, 1.0f);
|
||||
|
|
@ -62,7 +62,7 @@ TEST_CASE("[Direct Region Tests] Release and release key")
|
|||
SECTION("Release without sustain")
|
||||
{
|
||||
region.parseOpcode({ "trigger", "release" });
|
||||
Layer layer { ®ion, midiState };
|
||||
Layer layer { region, midiState };
|
||||
layer.delayedSustainReleases_.reserve(config::delayedReleaseVoices);
|
||||
midiState.ccEvent(0, 64, 0.0f);
|
||||
layer.registerCC(64, 0.0f);
|
||||
|
|
@ -73,7 +73,7 @@ TEST_CASE("[Direct Region Tests] Release and release key")
|
|||
SECTION("Release with sustain")
|
||||
{
|
||||
region.parseOpcode({ "trigger", "release" });
|
||||
Layer layer { ®ion, midiState };
|
||||
Layer layer { region, midiState };
|
||||
layer.delayedSustainReleases_.reserve(config::delayedReleaseVoices);
|
||||
midiState.ccEvent(0, 64, 1.0f);
|
||||
layer.registerCC(64, 1.0f);
|
||||
|
|
@ -90,7 +90,7 @@ TEST_CASE("[Direct Region Tests] Release and release key")
|
|||
SECTION("Release with sustain and 2 notes")
|
||||
{
|
||||
region.parseOpcode({ "trigger", "release" });
|
||||
Layer layer { ®ion, midiState };
|
||||
Layer layer { region, midiState };
|
||||
layer.delayedSustainReleases_.reserve(config::delayedReleaseVoices);
|
||||
midiState.ccEvent(0, 64, 1.0f);
|
||||
layer.registerCC(64, 1.0f);
|
||||
|
|
@ -111,7 +111,7 @@ TEST_CASE("[Direct Region Tests] Release and release key")
|
|||
SECTION("Release with sustain and 2 notes but 1 outside")
|
||||
{
|
||||
region.parseOpcode({ "trigger", "release" });
|
||||
Layer layer { ®ion, midiState };
|
||||
Layer layer { region, midiState };
|
||||
layer.delayedSustainReleases_.reserve(config::delayedReleaseVoices);
|
||||
midiState.ccEvent(0, 64, 1.0f);
|
||||
layer.registerCC(64, 1.0f);
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ TEST_CASE("Region activation", "Region tests")
|
|||
region.parseOpcode({ "sample", "*sine" });
|
||||
SECTION("Basic state")
|
||||
{
|
||||
sfz::Layer layer { ®ion, midiState };
|
||||
sfz::Layer layer { region, midiState };
|
||||
layer.registerCC(4, 0_norm);
|
||||
REQUIRE(layer.isSwitchedOn());
|
||||
}
|
||||
|
|
@ -29,7 +29,7 @@ TEST_CASE("Region activation", "Region tests")
|
|||
{
|
||||
region.parseOpcode({ "locc4", "56" });
|
||||
region.parseOpcode({ "hicc4", "59" });
|
||||
sfz::Layer layer { ®ion, midiState };
|
||||
sfz::Layer layer { region, midiState };
|
||||
layer.registerCC(4, 0_norm);
|
||||
REQUIRE(!layer.isSwitchedOn());
|
||||
layer.registerCC(4, 57_norm);
|
||||
|
|
@ -52,7 +52,7 @@ TEST_CASE("Region activation", "Region tests")
|
|||
region.parseOpcode({ "hicc4", "59" });
|
||||
region.parseOpcode({ "locc54", "18" });
|
||||
region.parseOpcode({ "hicc54", "27" });
|
||||
sfz::Layer layer { ®ion, midiState };
|
||||
sfz::Layer layer { region, midiState };
|
||||
layer.registerCC(4, 0_norm);
|
||||
layer.registerCC(54, 0_norm);
|
||||
REQUIRE(!layer.isSwitchedOn());
|
||||
|
|
@ -80,7 +80,7 @@ TEST_CASE("Region activation", "Region tests")
|
|||
{
|
||||
region.parseOpcode({ "lobend", "56" });
|
||||
region.parseOpcode({ "hibend", "243" });
|
||||
sfz::Layer layer { ®ion, midiState };
|
||||
sfz::Layer layer { region, midiState };
|
||||
layer.registerPitchWheel(0);
|
||||
REQUIRE(!layer.isSwitchedOn());
|
||||
layer.registerPitchWheel(sfz::normalizeBend(56));
|
||||
|
|
@ -95,7 +95,7 @@ TEST_CASE("Region activation", "Region tests")
|
|||
{
|
||||
region.parseOpcode({ "lochanaft", "56" });
|
||||
region.parseOpcode({ "hichanaft", "68" });
|
||||
sfz::Layer layer { ®ion, midiState };
|
||||
sfz::Layer layer { region, midiState };
|
||||
layer.registerAftertouch(sfz::normalize7Bits(0));
|
||||
REQUIRE(!layer.isSwitchedOn());
|
||||
layer.registerAftertouch(sfz::normalize7Bits(56));
|
||||
|
|
@ -110,7 +110,7 @@ TEST_CASE("Region activation", "Region tests")
|
|||
{
|
||||
region.parseOpcode({ "lobpm", "56" });
|
||||
region.parseOpcode({ "hibpm", "68" });
|
||||
sfz::Layer layer { ®ion, midiState };
|
||||
sfz::Layer layer { region, midiState };
|
||||
layer.registerTempo(2.0f);
|
||||
REQUIRE(!layer.isSwitchedOn());
|
||||
layer.registerTempo(0.90f);
|
||||
|
|
@ -126,7 +126,7 @@ TEST_CASE("Region activation", "Region tests")
|
|||
region.parseOpcode({ "seq_length", "2" });
|
||||
region.parseOpcode({ "seq_position", "1" });
|
||||
region.parseOpcode({ "key", "40" });
|
||||
sfz::Layer layer { ®ion, midiState };
|
||||
sfz::Layer layer { region, midiState };
|
||||
REQUIRE(!layer.isSwitchedOn());
|
||||
layer.registerNoteOn(40, 64_norm, 0.5f);
|
||||
REQUIRE(layer.isSwitchedOn());
|
||||
|
|
@ -146,7 +146,7 @@ TEST_CASE("Region activation", "Region tests")
|
|||
region.parseOpcode({ "seq_length", "2" });
|
||||
region.parseOpcode({ "seq_position", "2" });
|
||||
region.parseOpcode({ "key", "40" });
|
||||
sfz::Layer layer { ®ion, midiState };
|
||||
sfz::Layer layer { region, midiState };
|
||||
REQUIRE(!layer.isSwitchedOn());
|
||||
layer.registerNoteOn(40, 64_norm, 0.5f);
|
||||
REQUIRE(!layer.isSwitchedOn());
|
||||
|
|
@ -166,7 +166,7 @@ TEST_CASE("Region activation", "Region tests")
|
|||
region.parseOpcode({ "seq_length", "3" });
|
||||
region.parseOpcode({ "seq_position", "2" });
|
||||
region.parseOpcode({ "key", "40" });
|
||||
sfz::Layer layer { ®ion, midiState };
|
||||
sfz::Layer layer { region, midiState };
|
||||
REQUIRE(!layer.isSwitchedOn());
|
||||
layer.registerNoteOn(40, 64_norm, 0.5f);
|
||||
REQUIRE(!layer.isSwitchedOn());
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ TEST_CASE("Basic triggers", "Region triggers")
|
|||
SECTION("key")
|
||||
{
|
||||
region.parseOpcode({ "key", "40" });
|
||||
Layer layer { ®ion, midiState };
|
||||
Layer layer { region, midiState };
|
||||
REQUIRE(layer.registerNoteOn(40, 64_norm, 0.5f));
|
||||
REQUIRE(!layer.registerNoteOff(40, 64_norm, 0.5f));
|
||||
REQUIRE(!layer.registerNoteOn(41, 64_norm, 0.5f));
|
||||
|
|
@ -33,7 +33,7 @@ TEST_CASE("Basic triggers", "Region triggers")
|
|||
{
|
||||
region.parseOpcode({ "lokey", "40" });
|
||||
region.parseOpcode({ "hikey", "42" });
|
||||
Layer layer { ®ion, midiState };
|
||||
Layer layer { region, midiState };
|
||||
REQUIRE(!layer.registerNoteOn(39, 64_norm, 0.5f));
|
||||
REQUIRE(layer.registerNoteOn(40, 64_norm, 0.5f));
|
||||
REQUIRE(!layer.registerNoteOff(40, 64_norm, 0.5f));
|
||||
|
|
@ -48,7 +48,7 @@ TEST_CASE("Basic triggers", "Region triggers")
|
|||
{
|
||||
region.parseOpcode({ "key", "40" });
|
||||
region.parseOpcode({ "trigger", "release" });
|
||||
Layer layer { ®ion, midiState };
|
||||
Layer layer { region, midiState };
|
||||
REQUIRE(!layer.registerNoteOn(40, 64_norm, 0.5f));
|
||||
REQUIRE(layer.registerNoteOff(40, 64_norm, 0.5f));
|
||||
REQUIRE(!layer.registerNoteOn(41, 64_norm, 0.5f));
|
||||
|
|
@ -59,7 +59,7 @@ TEST_CASE("Basic triggers", "Region triggers")
|
|||
{
|
||||
region.parseOpcode({ "key", "40" });
|
||||
region.parseOpcode({ "trigger", "release_key" });
|
||||
Layer layer { ®ion, midiState };
|
||||
Layer layer { region, midiState };
|
||||
REQUIRE(!layer.registerNoteOn(40, 64_norm, 0.5f));
|
||||
REQUIRE(layer.registerNoteOff(40, 64_norm, 0.5f));
|
||||
REQUIRE(!layer.registerNoteOn(41, 64_norm, 0.5f));
|
||||
|
|
@ -72,7 +72,7 @@ TEST_CASE("Basic triggers", "Region triggers")
|
|||
region.parseOpcode({ "key", "40" });
|
||||
region.parseOpcode({ "lovel", "60" });
|
||||
region.parseOpcode({ "hivel", "70" });
|
||||
Layer layer { ®ion, midiState };
|
||||
Layer layer { region, midiState };
|
||||
REQUIRE(layer.registerNoteOn(40, 64_norm, 0.5f));
|
||||
REQUIRE(layer.registerNoteOn(40, 60_norm, 0.5f));
|
||||
REQUIRE(layer.registerNoteOn(40, 70_norm, 0.5f));
|
||||
|
|
@ -85,7 +85,7 @@ TEST_CASE("Basic triggers", "Region triggers")
|
|||
region.parseOpcode({ "key", "40" });
|
||||
region.parseOpcode({ "lorand", "0.35" });
|
||||
region.parseOpcode({ "hirand", "0.40" });
|
||||
Layer layer { ®ion, midiState };
|
||||
Layer layer { region, midiState };
|
||||
REQUIRE(!layer.registerNoteOn(40, 64_norm, 0.34f));
|
||||
REQUIRE(layer.registerNoteOn(40, 64_norm, 0.35f));
|
||||
REQUIRE(layer.registerNoteOn(40, 64_norm, 0.36f));
|
||||
|
|
@ -100,7 +100,7 @@ TEST_CASE("Basic triggers", "Region triggers")
|
|||
{
|
||||
region.parseOpcode({ "key", "40" });
|
||||
region.parseOpcode({ "lorand", "0.35" });
|
||||
Layer layer { ®ion, midiState };
|
||||
Layer layer { region, midiState };
|
||||
REQUIRE(!layer.registerNoteOn(40, 64_norm, 0.34f));
|
||||
REQUIRE(layer.registerNoteOn(40, 64_norm, 0.35f));
|
||||
REQUIRE(layer.registerNoteOn(40, 64_norm, 1.0f));
|
||||
|
|
@ -109,19 +109,19 @@ TEST_CASE("Basic triggers", "Region triggers")
|
|||
SECTION("Disable key trigger")
|
||||
{
|
||||
region.parseOpcode({ "key", "40" });
|
||||
Layer layer1 { ®ion, midiState };
|
||||
Layer layer1 { region, midiState };
|
||||
REQUIRE(layer1.registerNoteOn(40, 64_norm, 1.0f));
|
||||
region.parseOpcode({ "hikey", "-1" });
|
||||
Layer layer2 { ®ion, midiState };
|
||||
Layer layer2 { region, midiState };
|
||||
REQUIRE(!layer2.registerNoteOn(40, 64_norm, 1.0f));
|
||||
region.parseOpcode({ "hikey", "40" });
|
||||
Layer layer3 { ®ion, midiState };
|
||||
Layer layer3 { region, midiState };
|
||||
REQUIRE(layer3.registerNoteOn(40, 64_norm, 1.0f));
|
||||
Layer layer4 { ®ion, midiState };
|
||||
region.parseOpcode({ "key", "-1" });
|
||||
Layer layer4 { region, midiState };
|
||||
REQUIRE(!layer4.registerNoteOn(40, 64_norm, 1.0f));
|
||||
Layer layer5 { ®ion, midiState };
|
||||
region.parseOpcode({ "key", "40" });
|
||||
Layer layer5 { region, midiState };
|
||||
REQUIRE(layer5.registerNoteOn(40, 64_norm, 1.0f));
|
||||
}
|
||||
|
||||
|
|
@ -129,12 +129,12 @@ TEST_CASE("Basic triggers", "Region triggers")
|
|||
{
|
||||
region.parseOpcode({ "on_locc47", "64" });
|
||||
region.parseOpcode({ "on_hicc47", "68" });
|
||||
Layer layer1 { ®ion, midiState };
|
||||
Layer layer1 { region, midiState };
|
||||
REQUIRE(!layer1.registerCC(47, 63_norm));
|
||||
REQUIRE(layer1.registerCC(47, 64_norm));
|
||||
REQUIRE(layer1.registerCC(47, 65_norm));
|
||||
region.parseOpcode({ "hikey", "-1" });
|
||||
Layer layer2 { ®ion, midiState };
|
||||
Layer layer2 { region, midiState };
|
||||
REQUIRE(layer2.registerCC(47, 64_norm));
|
||||
REQUIRE(layer2.registerCC(47, 65_norm));
|
||||
REQUIRE(layer2.registerCC(47, 66_norm));
|
||||
|
|
@ -149,7 +149,7 @@ TEST_CASE("Basic triggers", "Region triggers")
|
|||
region.parseOpcode({ "sample", "*sine" });
|
||||
region.parseOpcode({ "on_locc1", "127" });
|
||||
region.parseOpcode({ "on_hicc1", "127" });
|
||||
Layer layer { ®ion, midiState };
|
||||
Layer layer { region, midiState };
|
||||
REQUIRE(!layer.registerCC(1, 126_norm));
|
||||
REQUIRE(!layer.registerCC(2, 127_norm));
|
||||
REQUIRE(layer.registerCC(1, 127_norm));
|
||||
|
|
@ -162,7 +162,7 @@ TEST_CASE("Basic triggers", "Region triggers")
|
|||
region.parseOpcode({ "on_locc1", "127" });
|
||||
region.parseOpcode({ "on_hicc1", "127" });
|
||||
region.parseOpcode({ "key", "-1" });
|
||||
Layer layer { ®ion, midiState };
|
||||
Layer layer { region, midiState };
|
||||
REQUIRE(!layer.registerCC(1, 126_norm));
|
||||
REQUIRE(layer.registerCC(1, 127_norm));
|
||||
REQUIRE(!layer.registerNoteOn(64, 127_norm, 0.5f));
|
||||
|
|
@ -174,7 +174,7 @@ TEST_CASE("Basic triggers", "Region triggers")
|
|||
region.parseOpcode({ "on_locc1", "127" });
|
||||
region.parseOpcode({ "on_hicc1", "127" });
|
||||
region.parseOpcode({ "hikey", "-1" });
|
||||
Layer layer { ®ion, midiState };
|
||||
Layer layer { region, midiState };
|
||||
REQUIRE(!layer.registerCC(1, 126_norm));
|
||||
REQUIRE(!layer.registerCC(2, 127_norm));
|
||||
REQUIRE(layer.registerCC(1, 127_norm));
|
||||
|
|
@ -192,7 +192,7 @@ TEST_CASE("Legato triggers", "Region triggers")
|
|||
region.parseOpcode({ "lokey", "40" });
|
||||
region.parseOpcode({ "hikey", "50" });
|
||||
region.parseOpcode({ "trigger", "first" });
|
||||
Layer layer { ®ion, midiState };
|
||||
Layer layer { region, midiState };
|
||||
midiState.noteOnEvent(0, 40, 64_norm);
|
||||
REQUIRE(layer.registerNoteOn(40, 64_norm, 0.5f));
|
||||
midiState.noteOnEvent(0, 41, 64_norm);
|
||||
|
|
@ -210,7 +210,7 @@ TEST_CASE("Legato triggers", "Region triggers")
|
|||
region.parseOpcode({ "lokey", "40" });
|
||||
region.parseOpcode({ "hikey", "50" });
|
||||
region.parseOpcode({ "trigger", "legato" });
|
||||
Layer layer { ®ion, midiState };
|
||||
Layer layer { region, midiState };
|
||||
midiState.noteOnEvent(0, 40, 64_norm);
|
||||
REQUIRE(!layer.registerNoteOn(40, 64_norm, 0.5f));
|
||||
midiState.noteOnEvent(0, 41, 64_norm);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue