#include "TimePos.h" #include "Singleton/PortAudioAPI.h" #include "Singleton/MidiSequencer.h" AudioFrame::AudioFrame(const MidiTick& InMidiTicks): Pos(InMidiTicks.Frames()) { } void AudioFrame::SetTick(MidiTick InMidiTicks) { Pos = InMidiTicks * FMidiSequencer::FramesPerTick(); } MidiTick AudioFrame::Ticks() const { MidiTick Out; Out.Ticks = Pos / FMidiSequencer::FramesPerTick(); return Out; } double AudioFrame::Milliseconds() const { return FrameToMilliseconds(Pos); } AudioFrame AudioFrame::FromFrames(double InFrames, float InFramesPerTick) { AudioFrame Out; Out.Pos = InFrames / InFramesPerTick; return Out; } double AudioFrame::FrameToMilliseconds(double InSample) { return InSample / FPortAudioAPI::Get().SampleRate * 1000.0; } AudioFrame MidiTick::Frames() const { AudioFrame Out; Out.Pos = Ticks * FMidiSequencer::FramesPerTick(); return Out; }