hydrogen icon indicating copy to clipboard operation
hydrogen copied to clipboard

[feat. Req] Substitute an instrument in a song

Open oddtime opened this issue 4 years ago • 5 comments

Sometimes user may want to substitute an instrument with another, keeping the notes. The way I would do it is adding the new instrument, select and moving all the notes to it and deleting the old one. Is there another way?

oddtime avatar Jan 05 '21 22:01 oddtime

I don't believe there currently is, no. It's something I've occasionally been annoyed by, as I think it's a reasonable expected behaviour to be able to drag instruments to rearrange independently of the notes assigned to them.

(One particular situation being in dragging an instrument from the sound library; sometimes I want to just replace an instrument with another rather than add a new instrument)

I see two potential interaction models that would support this. First

  • show the gaps between instruments differently from the instruments
  • highlight the gap or instrument that the mouse cursor is currently over
  • dropping the dragged instrument onto a gap behaves as presently
  • dropping the new instrument on top of another instrument "replaces" that instrument, keeping the assigned notes of the original instrument.

This very naturally supports the "drop new intsrument from sound library on top" model, but it's not intuitively obvious what should happen to any notes associated with the dragged instrument. Discarded? Merged? etc.

The other potential model would be to introduce a "mode" (or possibly a separate dialog) where dragging instruments in the instrument list would be independent of the notes. This would support reassigning instruments between drumkits fairly well.

In any case, I think the PatternEditorInstrumentList should be made to highlight the gap where a dropped instrument will be moved to.

cme avatar Jan 06 '21 09:01 cme

I originally tried pressing some key (ctrl, alt...) while dropping a new instrument, or seeing if there was a "change instrument" option in right click menu, but the first model you describe seems faster to use to me

show the gaps between instruments differently from the instruments highlight the gap or instrument that the mouse cursor is currently over

maybe just highlight the gap (as a thick line) or the instrument when mouse is over is sufficient?

but it's not intuitively obvious what should happen to any notes associated with the dragged instrument. Discarded? Merged?

Why discarded? I would keep the notes or I don't understand

oddtime avatar Jan 06 '21 10:01 oddtime

Yes! Especially if have a full song at hand and want to test e.g. a different hihat or a whole different drumkit the lack of this feature is very annoying. I solve it using a elisp function.

Regarding the second approach: With the mapping in #1070 one could reload the drumkit in order to swap/replace instruments.

But in general I would also favor the first approach and keep/assign the notes to the new instrument. The only problem I do see here is that from a user perspective I would expect to be able to drag instruments from any drumkit into the pattern editor and not just by the one loaded.

theGreatWhiteShark avatar Jan 06 '21 14:01 theGreatWhiteShark

Thanks for the elisp function

The only problem I do see here is that from a user perspective I would expect to be able to drag instruments from any drumkit into the pattern editor and not just by the one loaded.

Yes, instruments should be dragged from the drumkit library panel on the right (replacing or not depending on the cursor position) Instead dragging an instrument from the pattern window should just change the order, like now.

oddtime avatar Jan 06 '21 18:01 oddtime

I am linking another issue #168 that asks the same feature so we can close both together

oddtime avatar Feb 05 '21 09:02 oddtime