46 lines
885 B
C++
46 lines
885 B
C++
#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;
|
|
}
|