Program Listing for File FrameCalc.hpp
↰ Return to documentation for file (include\db\Capnp\Translators\FrameCalc.hpp
)
#pragma once
#include <algorithm>
#include <cmath>
#include "CapnpBinary.hpp"
#include "PDJE_EXPORT_SETTER.hpp"
// #include <hwy/highway.h>
#include <hwy/aligned_allocator.h>
// namespace hn = hwy::HWY_NAMESPACE;
using SIMD_FLOAT = std::vector<float, hwy::AlignedAllocator<float>>;
#define CHANNEL 2
#define SAMPLERATE 48000
#define DSAMPLERATE 48000.0
#define DMINUTE 60.0
#define APPRX(TYPE, BEAT, SUBBEAT, SEP) \
static_cast<TYPE>(BEAT) + \
(static_cast<TYPE>(SUBBEAT) / static_cast<TYPE>(SEP))
namespace FrameCalc {
extern unsigned long
CountFrame(unsigned long Sbeat,
unsigned long SsubBeat,
unsigned long Sseparate,
unsigned long Ebeat,
unsigned long EsubBeat,
unsigned long Eseparate,
double bpm);
}; // namespace FrameCalc
struct PDJE_API BpmFragment {
unsigned long beat;
unsigned long subBeat;
unsigned long separate;
unsigned long long frame_to_here = 0;
double bpm;
};
struct PDJE_API BpmStruct {
std::vector<BpmFragment> fragments;
void
sortFragment();
bool
calcFrame(unsigned long long StartPos = 0);
const BpmFragment &
getAffected(const BpmFragment &searchFrag) const;
const BpmFragment &
getAffected(const unsigned long long searchFrame) const;
const std::vector<const BpmFragment *>
getAffectedList(const unsigned long long searchStartFrame,
const unsigned long long searchEndFrame) const;
};
struct PDJE_API MixStruct {
unsigned long long frame_in;
unsigned long long frame_out;
MBData::Reader RP;
};