Skip to content

FX keyboard#202

Merged
asiekierka merged 5 commits intoNitrousTracker:newfrom
prayerie:fxkb
Feb 8, 2026
Merged

FX keyboard#202
asiekierka merged 5 commits intoNitrousTracker:newfrom
prayerie:fxkb

Conversation

@prayerie
Copy link

@prayerie prayerie commented Jan 25, 2026

leaving it as a draft until i finish adding comments/description (sorry it took ages i had to do other stuff lol)

Adds an FX input keyboard according to a design made by exelotl, with a new class for the buttons, keyboard, and a variation of NumberBox I arbitrarily named DigitBox which has a pair of arrows on each side, to make it better-suited for fine grained param edits

also replaces the ins/clr/del/-- buttons beside the piano with lerp/clr/get, which will linearly interpolate between a pair of effect parameters, clear the entire fx command/param, and copy the fx param under the cursor to the parameter box respectively

adds new glyphs to font3x5 for volume column fx. Most of them aren't used yet however, as there's a slight issue with volume fx that should probably just be sorted separately

Also, when the fx keyboard is shown, patternview selections are preserved on screen swap, to allow adjusting a group of note params/commands more easily (cleared if fx hidden or param is set, etc)

edit: font3x5 is also moved to tobkit so it can be used by the fx keyboard

@prayerie prayerie marked this pull request as ready for review January 26, 2026 20:52
@prayerie prayerie marked this pull request as draft January 30, 2026 16:28
@prayerie
Copy link
Author

prayerie commented Jan 30, 2026

i thought about it and realised it would probably indeed be better if it were all self contained in one class similar to piano.cpp so i'll reorganise how it works and reopen afterwards

u8 fxkb_state[NUM_FXKEYS] = { 0 };
u8 fxkb_vals[NUM_FXKEYS] = { 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xc, 0xd, 0xf };

u16 labels_cat0 = 0x04f1; // whether to show "XX" or "XY" on an fx key
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

for the first category, whether to write "XX" or "XY" on a key depends on the bits in this number. dunno if it would be better to write it as 0b10011110001 for clarity

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Correct.

virtual void hide(void);
bool is_visible(void) { return visible; }
bool set_visible(bool value);
void set_overdraw(bool value);
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

widgets on the piano area (specifically the effect param box, button, and label) need to have overdraw disabled otherwise a bunch of background-coloured rectangles appear over the piano, plus the fxkb/piano overdraw over each other

@prayerie
Copy link
Author

prayerie commented Feb 1, 2026

there are a couple of tweaks that i still need to do that i will probably get to tomorrow but i thought i would push what i have for now since it's basically done and is a lot cleaner without the weird button/keyboard interplay

@prayerie
Copy link
Author

prayerie commented Feb 2, 2026

force pushed because the fx description caption was slightly too far to the left

@prayerie prayerie force-pushed the fxkb branch 3 times, most recently from 2f510ae to bf055a1 Compare February 2, 2026 20:16
@prayerie prayerie marked this pull request as ready for review February 2, 2026 21:33
@asiekierka asiekierka merged commit 21d3fb4 into NitrousTracker:new Feb 8, 2026
1 check passed
@asiekierka
Copy link
Collaborator

Thank you very much! Congratulations on getting it done!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants