53 lines
1.8 KiB
C++
53 lines
1.8 KiB
C++
|
|
namespace cw
|
|
{
|
|
namespace score_follow_2
|
|
{
|
|
typedef handle< struct sf_str > handle_t;
|
|
|
|
typedef struct args_str
|
|
{
|
|
double pre_affinity_sec; // 1.0 look back affinity duration
|
|
double post_affinity_sec; // 3.0 look forward affinity duration
|
|
double pre_wnd_sec; // 2.0 look back search window
|
|
double post_wnd_sec; // 5.0 look forward search window
|
|
|
|
double decay_coeff; // 0.995 affinity decay coeff
|
|
|
|
double d_sec_err_thresh_lo; // 0.4 reject if d_loc > d_loc_thresh_lod and d_time > d_time_thresh_lo
|
|
int d_loc_thresh_lo; // 3
|
|
|
|
double d_sec_err_thresh_hi; // 1.5 reject if d_loc != 0 and d_time > d_time_thresh_hi
|
|
int d_loc_thresh_hi; // 4 reject if d_loc > d_loc_thresh_hi
|
|
int d_loc_stats_thresh; // 3 reject for time stats updates if d_loc > d_loc_stats_thresh
|
|
|
|
bool rpt_fl; // set to turn on debug reporting
|
|
|
|
} args_t;
|
|
|
|
rc_t parse_args( const object_t* cfg, args_t& args );
|
|
|
|
rc_t create( handle_t& hRef, const args_t& args, perf_score::handle_t scoreH );
|
|
|
|
rc_t destroy( handle_t& hRef );
|
|
|
|
rc_t reset( handle_t h, unsigned beg_loc_id, unsigned end_loc_id );
|
|
|
|
rc_t on_new_note( handle_t h, unsigned uid, double sec, uint8_t pitch, uint8_t vel, unsigned& loc_id_ref, unsigned& score_vel_ref );
|
|
|
|
// Decay the affinity window and if necessary trigger a cycle of async background processing
|
|
rc_t do_exec( handle_t h );
|
|
|
|
typedef struct rpt_str
|
|
{
|
|
unsigned matchN; // count of matched notes
|
|
unsigned missN; // count of missed notes
|
|
unsigned spuriousN; // count of spurious notes
|
|
unsigned perfNoteN; // count of performed notes (count of calls to on_new_note())
|
|
} rpt_t;
|
|
|
|
void report_summary( handle_t h, rpt_t& rpt_ref );
|
|
|
|
}
|
|
}
|