Sequencer page scrolling

This commit is contained in:
Christian Colglazier 2022-02-22 19:18:35 -05:00
parent c362062855
commit 3d45576bf2
2 changed files with 19 additions and 7 deletions

View File

@ -7,7 +7,7 @@ SequencerDroplet::SequencerDroplet(DaisyPatch* m_patch,
m_state) { m_state) {
SetDimensions(); SetDimensions();
SetControls(); SetControls();
AdjustSelected(-1); SetInMenu();
} }
SequencerDroplet::~SequencerDroplet() {} SequencerDroplet::~SequencerDroplet() {}
@ -45,8 +45,7 @@ void SequencerDroplet::Process(AudioHandle::InputBuffer in,
sequence_length = std::max(1.0f,control[chn].Process() / sequence_length = std::max(1.0f,control[chn].Process() /
4.9f*MAX_SEQUENCE_LENGTH); 4.9f*MAX_SEQUENCE_LENGTH);
SetDimensions(); SetDimensions();
selected = 0; SetInMenu();
AdjustSelected(-1);
} }
} }
} }
@ -71,7 +70,9 @@ void SequencerDroplet::Process(AudioHandle::InputBuffer in,
void SequencerDroplet::Draw() { void SequencerDroplet::Draw() {
int left_padding = 4+GetScreenMin(); int left_padding = 4+GetScreenMin();
int offset = step / (num_columns*NUM_ROWS);
offset *= num_columns*NUM_ROWS;
// Active Input // Active Input
if (!InMenu()) { if (!InMenu()) {
DrawSolidRect(Patch(), DrawSolidRect(Patch(),
@ -82,12 +83,12 @@ void SequencerDroplet::Draw() {
} }
// Notes // Notes
for (int i = 0; i < num_columns*NUM_ROWS && i < sequence_length; i++) { for (int i = 0; i < num_columns*NUM_ROWS && i+offset < sequence_length; i++) {
WriteString(Patch(), WriteString(Patch(),
GetScreenWidth()/num_columns*(i%num_columns)+left_padding, GetScreenWidth()/num_columns*(i%num_columns)+left_padding,
8+(std::floor(i/num_columns)*8), 8+(std::floor(i/num_columns)*8),
FloatToString(sequence[i], 2), FloatToString(sequence[i+offset], 2),
i!=step); i+offset!=step);
} }
// Draw info bar // Draw info bar
@ -107,6 +108,7 @@ void SequencerDroplet::Draw() {
void SequencerDroplet::UpdateStateCallback() { void SequencerDroplet::UpdateStateCallback() {
SetDimensions(); SetDimensions();
SetInMenu();
} }
void SequencerDroplet::SetControls() { void SequencerDroplet::SetControls() {
@ -144,3 +146,8 @@ void SequencerDroplet::AdjustSelected(int adj) {
bool SequencerDroplet::InMenu() { bool SequencerDroplet::InMenu() {
return selected >= num_rows; return selected >= num_rows;
} }
void SequencerDroplet::SetInMenu() {
selected = 0;
AdjustSelected(-1);
}

View File

@ -55,6 +55,11 @@ private:
* @return menu state * @return menu state
*/ */
bool InMenu(); bool InMenu();
/*
* Set sequancer in the menu.
*/
void SetInMenu();
public: public:
/* /*
* Constructor for a droplet. * Constructor for a droplet.