Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Keyboard display in GUI #76

Closed
AlexMitchellMus opened this issue Sep 5, 2020 · 20 comments
Closed

Keyboard display in GUI #76

AlexMitchellMus opened this issue Sep 5, 2020 · 20 comments

Comments

@AlexMitchellMus
Copy link

AlexMitchellMus commented Sep 5, 2020

There needs to be a keyboard display in sfizz GUI.

This is important to be able to:

  • Clearly see current range of regions
  • Keys set to keyswitch
  • Currently played MIDI notes
  • Rudimentary Virtual Keyboard (mouse over key, and press key to trigger output)

Here is a mock-up of what the keyboard could look like, I have placed the keyswitch indicators above the keys, as a keyswitch can be inside a region. I have used colour to indicate current region, but we may want to think about greying out notes outside of regions?
keyboard_with_keyswitch
Middle C4 has a dot positioned under. This keyboard is designed to aid users in understanding what the SFZ Script is capable of- not for playability with the mouse. In which case a Virtual Keyboard that allows Musical Typing would be better equiped to handle.
Having the keyboard full range 0-127 allows consistency between SFZ Scripts, and simplifies the GUI display - as there is no need to include up/down octave UI elements.

@AlexMitchellMus
Copy link
Author

AlexMitchellMus commented Sep 6, 2020

A simpler design, not using colour (as it will be almost impossible to show multiple regions at same time, as regions can overlap)

NOTES:

  • Top dots denote keyswitches, with current active switch taller
  • Dots inside key represents notes that are played, either via MIDI or mouse
  • Bottom line indicates current keyswitch range
  • Mouse interaction would lock to key area on LMB, velocity of note set to 64, moving mouse on Y axis changes velocity of new notes. (Movement exceeds the vertical size of the key area)

A

keyboard_mockup_3

B

Alternative gradient to highlight middle range, and to be easier on the eyes.
keyboard_sfizz_4

C

Keyboard with octave numbers:
keyboard_mockup_5

@paulfd
Copy link
Member

paulfd commented Sep 6, 2020

I like II C :D I think color-coding only the keyswitches could make sense?

@AlexMitchellMus
Copy link
Author

SFZ can have 128 keyswitches, so its quite a bit to colour code.

@jpcima
Copy link
Contributor

jpcima commented Sep 6, 2020

Is it bad that colors would repeat?

@AlexMitchellMus
Copy link
Author

AlexMitchellMus commented Sep 6, 2020

@jpcima no, not at all. But we may want to allow a few settings:

  • Mono (single colour- black or custom)
  • Custom palette

Mainly for users with colour vision deficiency, as the colours will be important to differentiate.

My feeling is that either multicolour, or mono should be as functional.

@AlexMitchellMus
Copy link
Author

AlexMitchellMus commented Sep 6, 2020

Mixing B + C with colour, and changed the keyswitches to sticks.

D

keyboard_sfizz_6
I don't think using colour in this way is clear enough? Or possibly wrong colour palette?

@paulfd
Copy link
Member

paulfd commented Sep 6, 2020

The rainbow is a bit distracting while not really carrying relevant information I think. Coloring the key switches directly on the keyboard also has an advantage in terms of compactness.

@AlexMitchellMus
Copy link
Author

AlexMitchellMus commented Sep 7, 2020

E

keyboard_sfizz_7

F

keyboard_5 1

G

Here is a concept that uses a 'range' band on top and bottom. I think solves the issue of the range bar looking like a scroll bar.
keyboard_sfizz_8

G (with keyswitch outside of range)

keyboard_sfizz_8_1

@AlexMitchellMus
Copy link
Author

G inverted

This design inverts the use of range->keyswitch display. Hence dark notes (previous keyswitch) can be used to display key range.
keyboard_concept_9

@AlexMitchellMus
Copy link
Author

G inverted keyswitch examples:

Keyswitch inside range (active switch is playable inside range- other switch is grey, as it changes the region played)
keyboard_sfizz_9_mixed_keyswitch
White notes of octave showing keyswitches:
keyboard_sfizz_9_white_note_keyswitch

@AlexMitchellMus
Copy link
Author

AlexMitchellMus commented Sep 9, 2020

H Traditional Keyboard, with keyswitch bar on top.

traditional_keyboard_hybrid

@kinwie
Copy link

kinwie commented Sep 9, 2020

If using bar, the keyswitch displayed like a range. While keyswith can only on white keys or only on black keys or adjacten keys. It's a litte bit im-flexible imo

@AlexMitchellMus
Copy link
Author

AlexMitchellMus commented Sep 9, 2020

J V1

traditional_keyboard_hybrid_3

J V2

traditional_keyboard_hybrid_4

@paulfd
Copy link
Member

paulfd commented Sep 9, 2020

If using bar, the keyswitch displayed like a range. While keyswith can only on white keys or only on black keys or adjacten keys. It's a litte bit im-flexible imo

This depends if we're only considering the individual sw_last, sw_up, ... or the actual keyswitch range sw_lokey and sw_hikey

@AlexMitchellMus
Copy link
Author

AlexMitchellMus commented Sep 9, 2020

K

Top of keybed with 'felt', helps see the keyswitch keys
traditional_keyboard_hybrid_6

@AlexMitchellMus
Copy link
Author

AlexMitchellMus commented Sep 10, 2020

L

Multi_KS_Tri_Keyboard_v2

Multi-Keyswitch keyboard, Down triangle signifies active keyswitch. (multiple active keyswitches to illustrate readability)

Notes:

In order to allow multi-region highlighting there would need to be two new SFZ opcodes:
sw_group=N Assign a sw to a group number
sw_label_groupN=<name> Assign a name to a group number (global?)

  • sfizz would then use the group number assigned to the keyswitch to assign that group a colour.
  • Colours should be set in UI section in Settings.
  • There needs to be multiple palettes for people with colour blindness etc.

@AlexMitchellMus
Copy link
Author

M Keyswitch bar all black (to help with colour readability) and outline.

Keyboard_KS_outline

@AlexMitchellMus
Copy link
Author

AlexMitchellMus commented Sep 11, 2020

N

  • Unused keys are grey
  • sw_last has top paddle, which also shows active switch state
  • sw_last keys are also coloured with switch colour
  • sw_down keys are coloured- but have no top paddle (they are momentary)
    keyswitch_colour_in_key_light_kslast ksdown_v4

@AlexMitchellMus
Copy link
Author

Current GUI design iteration:
UI_Keyboard_gradient_default_v9

@AlexMitchellMus
Copy link
Author

Continued in #1

@redtide redtide transferred this issue from sfztools/sfizz May 28, 2023
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

No branches or pull requests

4 participants