#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()); }