46 lines
1.1 KiB
C++
46 lines
1.1 KiB
C++
#include "SamplePattern.h"
|
|
|
|
#include "SamplePatternInstance.h"
|
|
#include "Singleton/MidiSequencer.h"
|
|
#include "PluginHost/Sampler.h"
|
|
|
|
|
|
FSamplePattern::FSamplePattern(FSampler* InSampler)
|
|
{
|
|
Type = EPatternType::Sample;
|
|
Sampler = InSampler;
|
|
}
|
|
|
|
FSamplePattern::~FSamplePattern()
|
|
{
|
|
for (FPatternInstance* Instance : Instances)
|
|
{
|
|
delete Instance;
|
|
}
|
|
Instances.Empty();
|
|
}
|
|
|
|
void FSamplePattern::Process(AudioFrame PatternPos, uint32 InLength)
|
|
{
|
|
// const FMidiMessage& NoteOn = FMidiMessage::noteOn(1, 60, 1.f);
|
|
// const FMidiMessage& NoteOff = FMidiMessage::noteOff(1, 60, 1.f);
|
|
// Sampler->IncomingMidi.addEvent(NoteOn, PatternPos);
|
|
// Sampler->IncomingMidi.addEvent(NoteOff, PatternPos + GetLength());
|
|
// Sampler->IncomingMidi.updateMatchedPairs();
|
|
|
|
Sampler->IncomingRange.SetLowerBound(PatternPos);
|
|
Sampler->IncomingRange.SetUpperBound(PatternPos + AudioFrame(InLength));
|
|
Sampler->IncomingOffset = 0;
|
|
}
|
|
|
|
void FSamplePattern::Reset()
|
|
{
|
|
Sampler->IncomingMidi.clear();
|
|
Sampler->IncomingMidi.addEvent(FMidiMessage::allNotesOff(1));
|
|
}
|
|
|
|
AudioFrame FSamplePattern::GetLength()
|
|
{
|
|
return AudioFrame(Sampler->GetFrameCount());
|
|
}
|