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

Drum Editor view for the Piano Roll #7648

Open
1 task done
messmerd opened this issue Jan 14, 2025 · 2 comments
Open
1 task done

Drum Editor view for the Piano Roll #7648

messmerd opened this issue Jan 14, 2025 · 2 comments

Comments

@messmerd
Copy link
Member

messmerd commented Jan 14, 2025

Enhancement Summary

Bitwig Studio has the option to switch between "piano-roll editor" and "drum editor" views when editing midi clips.

The Drum Editor view is the same as the piano roll except it hides all unused keys and it displays note names (including any custom names like "bass drum", "closed hi-hat", "snare", etc.) rather than displaying piano keys.

This would be beneficial for percussion in SoundFonts or drum machine plugins since users can opt into a view that hides keys they don't use. And custom note names can eliminate guesswork when finding the desired percussion sound.

Implementation Details / Mockup

Reference design

Here are screenshots of Bitwig's "piano-roll editor" and "drum editor" views:
bitwig_piano_roll
bitwig_drum_editor

Notice how the unused keys are hidden in drum editor mode.

The widget in the upper left corner controls which mode is active. I imagine a similar button could be added inside the LMMS piano roll.

Custom note names

Plugin support

  • Vestige: I do not know whether the VST API supports note names (probably?). If so, our AEffect interface would need to add support for it before Vestige could provide custom note names.
  • LV2: LV2 does not seem to officially provide this information, though Ardour provides a semi-popular MIDI naming extension which we may be able to use ourselves. Plugins that implement this extension include AVL Drumkits, liquidsfz, setBfree, and probably others.
  • CLAP: The CLAP API provides a note name extension.
  • Carla: I haven't looked into it yet.
  • Sf2 Player: The SF2 format does not seem to directly support note names, but there are two ways around this:
    • The General MIDI standard defines drum kit note names, and drum kits are typically in bank 128, so note names for each key could be obtained from a lookup table when a drum kit is being used
    • Each SF2 preset uses samples, and each SF2 sample can have a name and key ranges which can be queried through the fluidsynth API. So if a user is using a preset under bank 128, it can be assumed to be a drum kit, and note names can be obtained from its samples. This is probably the best approach.
  • GIG Player: GIG files might have note name support similar to SF2

Implementation details

  • A generic LMMS note names interface could be created and plugins that support it can implement it
  • If a plugin does not support custom note names, we can just fall back on the default note names ("C", "C#", etc).
  • It may be beneficial to also allow users to provide their own custom note names. If we do this, it would override both the default name and any custom name given by the plugin API.
  • Maybe users would still want to know the default note name even if they've overridden it manually or if a plugin provided a custom name. In that case, maybe it could be shown in a tooltip.
  • A clip from the Pattern Editor opened in the Piano Roll could be displayed in drum editor mode by default.
  • If a midi clip uses the drum editor mode, it could affect how it is drawn in the Song Editor or Pattern Editor too. This could make the clips look nicer.

Please search the issue tracker for existing feature requests before submitting your own.

  • I have searched all existing issues and confirmed that this is not a duplicate.
@musikBear
Copy link

I know we have a collapse-piano-roll ticket, but this is even more advanced. Imo a lot of change for drums in sf2 and some percussion-plugins.
A more versatile way could be that any sound-clip could be allocated to any key, (and taking that even further: any key could be layered on another key, allowing chords to be played on one key)

@RainbowShatter
Copy link

Wait, but, what about the option to see the keys as C4, C#5...

There is an option in lmms for that so i think you should consider this

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

No branches or pull requests

4 participants
@musikBear @messmerd @RainbowShatter and others