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

Navigating and inserting notes in piano roll using keyboard only #1421

Closed
grzesiek-galezowski opened this issue Dec 7, 2014 · 13 comments
Closed
Milestone

Comments

@grzesiek-galezowski
Copy link

Hi!

Just wanted to ask for a small feature that is in Jeskola Buzz and that I am very used to. It would be very nice to be able to put specific notes on specific positions using only keyboard in piano roll.

In buzz, there is a feature that lets me "navigate" my position on the track using keyboard arrows and when I press a key on my keyboard, like 'z', it would automatically leave corresponsing note on this position. In lmms, when I want to leave a note on a specific position, it seems I either have to use the mouse (and point each place) in draw mode or recording (forces me to get timing right or fix things later).

@tresf tresf added this to the 1.3.0 milestone Dec 7, 2014
@diizy
Copy link
Contributor

diizy commented Dec 8, 2014

On 12/08/2014 12:07 AM, Grzegorz Gałęzowski wrote:

Hi!

Just wanted to ask for a small feature that is in Jeskola Buzz and
that I am very used to. It would be very nice to be able to put
specific notes on specific positions using only keyboard in piano roll.

In buzz, there is a feature that lets me "navigate" my position on the
track using keyboard arrows and when I press a key on my keyboard,
like 'z', it would automatically leave corresponsing note on this
position. In lmms, when I want to leave a note on a specific position,
it seems I either have to use the mouse (and point each place) in draw
mode or recording (forces me to get timing right or fix things later).

Well, the feature you're asking is actually anything but small.

The thing is, this is a question of different UI paradigms. Buzz is a
tracker, kind of like Renoise, IT, FT2, etc... Trackers are much more
keyboard-based in their UI. Sequencers, like LMMS, rely more on a
mouse-based UI.

I'm not really sure if a keyboard-based input method makes sense as such
on a sequencer UI. On a tracker, there's always one note-event per
track, and you have to set the noteoffs explicitly (unless the tracker
uses NNA's, but that's beside the point). On a sequencer, there is no
tracks, there's just notes, with a start and endpoint, and the note
pitch is controlled by position.

So this is actually something I've thought about. It'd be cool to be
able to combine that quickness of input of the tracker model's keyboard
based input methods to the ease of use and visual clarity of the
sequencer model. But it's not quite that simple... there's a lot of
problems to be solved before this can be implemented. Like, how the
navigation and input works - what to do with overlaps and how to handle
erasing notes... how to make it all so that it doesn't interfere with
any existing UI. And this isn't really a priority right now... but maybe
some day.

@tresf
Copy link
Member

tresf commented Dec 8, 2014

Ableton combines this functionality with their sequencer and can be switched back and forth via toggle. IIRC, the arrow keys jump to the prev/next next notes, but playing a key progresses the cursor based on a step value too. I personally have found it a bit clunky to compose that way, but my colleagues have said they prefer it.

@softrabbit
Copy link
Member

IIRC, the arrow keys jump to the prev/next next notes, but playing a key progresses the cursor based on a step value too.

That sounds like step recording, which should be quite a bit easier to implement than a full keyboard-driven cursor editing mode. After all, realtime recording from MIDI or channel piano works already and a lot of the code should be the same.

@tresf
Copy link
Member

tresf commented Dec 8, 2014

which should be quite a bit easier to implement than a full keyboard-driven cursor editing mode

That was my instinct too, and we already have the Q screen shot 2014-12-08 at 7 20 20 am in place for the default step value, it would just be a matter of toggling the keyboard behavior and add some arrow shortcuts.

My memory of Ableton's implementation is a bit foggy in this regard, but I'd be happy to download a demo if/when this feature comes to fruition if we believe studying its behavior could help.

@grzesiek-galezowski
Copy link
Author

Thank you all for response!

I think I agree that what I would like is a step recording. A scenario I imagine is something like this:

  1. default step value is set to 1/16
  2. I am on beginning of the pattern

Then:

  • pressing right moves me by 1/16
  • pressing a key leaves a note corresponsing to a key and advances by 1/16, e.g.
    the following sequence of keys:
    'z', 'x', 'c', right, c, right
    translates to a pattern shaped like this:
    C,D,E,blank,E, blank.

Of course, corresponding sounds are also played on key stroke

The more interesting behavior is deletion - as you said, trackers had one note per track position. lmms supports many, so some kind of answer needs to be found to a question: what if I have a chord at a given position and I press 'delete'...

@grzesiek-galezowski
Copy link
Author

@tresf is this how it works in Ableton? Looks cool:
https://www.youtube.com/watch?v=wpJgcGveUTA

@tresf
Copy link
Member

tresf commented Dec 10, 2014

@Grezegorz,

@tresf is this how it works in Ableton? Looks cool:

Yes, that's the gist of it.

If you jump into the video a bit, you can avoid waiting for his introduction. :)
https://www.youtube.com/watch?v=wpJgcGveUTA#t=192

@Sti2nd
Copy link
Contributor

Sti2nd commented Jan 20, 2015

Information: There are no shortcuts reserved for this feature, as it probably will use a lot of them, and thus should be a mode.

@ghost
Copy link

ghost commented Jan 26, 2015

I've been working with tracking starting with fast tracker 2 then mad tracker, then currently using psycle tracker and sunvox for music composition. I just wish the LMMS would turn more into a fully functional and usable DAW for everyone. Not just FL Studio or other DAWs interfaces PROs out there.

@tresf
Copy link
Member

tresf commented Jan 27, 2015

I've been working with tracking starting with fast tracker 2 then mad tracker, then currently using psycle tracker and sunvox for music composition. I just wish the LMMS would turn more into a fully functional and usable DAW for everyone.

We all do, which is why we're learning the code and fixing it. This stuff is a lot of work and we need help! 🍺

@Redsandro
Copy link

I've been looking into thinking about this a couple of times ever since in 2010 someone on #lmms told me how to recompile parts of the software. I wanted to break the LMMS piano roll dialog and turn it into a tracker. Maybe have it as a separate mode. Convert piano roll to tracker mode by quantizing the notes. For personal use, and because it would attract the entire population that was born in the 80s to LMMS.

Some obvious problems make this difficult, like a single piano roll is virtually a multi-channel single instrument and notes don't remember in which 'track' they are supposed to be.

This keyboard-based step recording sounds like the next best thing. Having to use the mouse what made me step away from 'modern' music apps. So because this might just be kind of awesome, I'm gonna subscribe to notifications. :)

On an unrelated note; I do think that mouse events make it easier to port to Android though. On a touch screen, click (touch) events become fun again! FL Studio for Android managed to make me create some tunes again. 😄

@Sti2nd
Copy link
Contributor

Sti2nd commented Feb 12, 2015

I'm gonna subscribe to notifications

Hey, no need to subscribe to notifcations if you code it :-D !! hint, hint

@Umcaruje Umcaruje added the ux label Jul 3, 2015
zonkmachine pushed a commit that referenced this issue Feb 9, 2019
(Addresses #1421)

**Behaviour description:**

* Toggle step-recording mode using the dedicated icon.
* This mode is mutually exclusive with other recoding modes (record/record
  accompany).
* Step-Recording while song is playing is allowed (and fun! :) ).
* When start recording, the start recording-position will be set where the
  timeline curser points (quantized backwards using PianoRoll's current
  quantization). If step-recording is started while the pattern is playing the
  start recording-position is set to the beginning of the pattern.
* Step length is determined by the Piano Roll's current note-length (can be
  changed dynamically during step-recording).
* The record-position can be moved forward/backward using the right/left keys.
* When notes are pressed on keyboard/midi-device, they will be added
  temporarily ("recorded") with a length of a step. while still pressed, user
  can adjust the length by steps resolution using the arrow keys (e.g. moving
  right once will make the note's length 2-steps, another right press will make
  the length 3-steps etc.).
* When all pressed-keys are released, the actual recording happen and the
  notes are added.
* If the user press multiple notes, and release some of them for some time
  which indicates it is intentional i.e. he didn't want to do a full release
  to record the step but rather just change what will be recorded (I set the
  "intentional release threshold" to 70 milliseconds) - these note will be
  removed from current step-recording. e.g.
* Added notes are not quantized, making the addition simpler and WYSIWYG
* Similiarly to adding notes using mouse clicks, an undo-checkpoint is added
  per added step and not for the whole recording as in other record modes.
@zonkmachine
Copy link
Member

Implemented in #4544. Closing.

sdasda7777 pushed a commit to sdasda7777/lmms that referenced this issue Jun 28, 2022
(Addresses LMMS#1421)

**Behaviour description:**

* Toggle step-recording mode using the dedicated icon.
* This mode is mutually exclusive with other recoding modes (record/record
  accompany).
* Step-Recording while song is playing is allowed (and fun! :) ).
* When start recording, the start recording-position will be set where the
  timeline curser points (quantized backwards using PianoRoll's current
  quantization). If step-recording is started while the pattern is playing the
  start recording-position is set to the beginning of the pattern.
* Step length is determined by the Piano Roll's current note-length (can be
  changed dynamically during step-recording).
* The record-position can be moved forward/backward using the right/left keys.
* When notes are pressed on keyboard/midi-device, they will be added
  temporarily ("recorded") with a length of a step. while still pressed, user
  can adjust the length by steps resolution using the arrow keys (e.g. moving
  right once will make the note's length 2-steps, another right press will make
  the length 3-steps etc.).
* When all pressed-keys are released, the actual recording happen and the
  notes are added.
* If the user press multiple notes, and release some of them for some time
  which indicates it is intentional i.e. he didn't want to do a full release
  to record the step but rather just change what will be recorded (I set the
  "intentional release threshold" to 70 milliseconds) - these note will be
  removed from current step-recording. e.g.
* Added notes are not quantized, making the addition simpler and WYSIWYG
* Similiarly to adding notes using mouse clicks, an undo-checkpoint is added
  per added step and not for the whole recording as in other record modes.
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

8 participants