Etterna 0.74.4
Loading...
Searching...
No Matches
Public Member Functions | Public Attributes | List of all members
Finger_Sequencing Struct Referenceabstract

Individual anchors, 2 objects per hand on 4k. More...

#include <GenericSequencing.h>

Inheritance diagram for Finger_Sequencing:
Inheritance graph
[legend]

Public Member Functions

virtual void full_reset ()
 
virtual void check_status ()
 based on the anchoring status, do an action
 
virtual void set_status ()=0
 
virtual void operator() (const col_type ct, const float &now)=0
 sequence updating given the column type and time of current row
 
virtual float get_ms ()=0
 returns an adjusted MS average value, not converted to nps
 

Public Attributes

col_type _ct = col_init
 
anch_status _status = anch_init
 
int _len = 1
 
float _sc_ms = ms_init
 same-column ms: time between now and previous tap
 
float _max_ms = ms_init
 
float _len_cap_ms = ms_init
 
float _last = s_init
 row_time of last note on this col
 
float _start = s_init
 

Detailed Description

Individual anchors, 2 objects per hand on 4k.

Member Function Documentation

◆ get_ms()

virtual float Finger_Sequencing::get_ms ( )
inlinepure virtual

returns an adjusted MS average value, not converted to nps

Implemented in Jack_Sequencing, and Anchor_Sequencing.

◆ operator()()

virtual void Finger_Sequencing::operator() ( const col_type  ct,
const float &  now 
)
inlinepure virtual

sequence updating given the column type and time of current row

Implemented in Jack_Sequencing, and Anchor_Sequencing.

◆ set_status()

virtual void Finger_Sequencing::set_status ( )
inlinepure virtual

Set the status of this anchor. Break the anchor if the next note is too much slower than the lowest one in the sequence. Remember, if we reset, the start of the new anchor was the last row_time, and the new max_ms should be the current ms value.

Implemented in Jack_Sequencing, and Anchor_Sequencing.

Member Data Documentation

◆ _len

int Finger_Sequencing::_len = 1

note: aside from the first note, _len is always at least 2. outside of note 1 we are always in a 2 note anchor of some description. given 50, 500, 50, (4 notes), we have 2 notes, 1 and 2, 50 ms apart, and we are in an anchor. the 500 ms then breaks it due to being too much slower and starts a new anchor with notes 2 and 3, a 500 ms anchor. then the same thing happens again on reaching note 4, where the 50 breaks the 500 anchor due to being too fast, and again starts a new sequence with 3-4, this may seem like needless quibbling but if we are using anchor sequencing as the base for jack difficulty we want to ensure that cutoff points are reasonable, and that any point may be queried for a jack difficulty regardless of whether or not a human would consider it to be a jack

◆ _len_cap_ms

float Finger_Sequencing::_len_cap_ms = ms_init

rather than a buffer cap maybe a len cap will be more scalable, track the difficulty at the cap and when queried beyond it, just return this value

◆ _max_ms

float Finger_Sequencing::_max_ms = ms_init

highest ms value found in the anchor. if we exceed this + buffer, break the anchor sequence


The documentation for this struct was generated from the following file: