Hi All,
> I would like everyone interested to step back from the nuts and bolts a bit,
> and try to come to terms about what the user interface for this feature
> would look like.
My initial thoughts were that the linked segment functionality might appear
much like - for example - Muse's "clone" functionality:
* When copy-pasting a segment there could be two options for the paste -
"paste as copy" or "paste as link" so an extra edit menu item, maybe a choice
dialog when doing a paste, or an extra key combo when doing a paste or a
segment control-drag (alt-drag or ctrl-shift-drag for creating a linked segment
perhaps, ctrl-shift-V for doing a linked paste perhaps, whatever doesn't
trample on existing key combinations I guess)
* The linked segments would behave and display identically. Any edit to any
one of them automagically happens to all of the others.
* An unlink edit menu item would be necessary for deep copying the data to the
segment, analogous to the "turn repeats into copies" function which already
exists.
That's how I imagined a "simple" implementation to appear to the user. This
would cover the "Frère Jacques" and possibly "Pachelbel's Canon" use cases, and
quite a lot of loop based sequencing cases for electronic music. It excludes
linked segment stretch/squashes or transpositions.
However...
Now being aware of triggered segments, and encouraged by Chris' post the other
day, I'm severely tempted by the possibilities of being able to do more cool
stuff with linked segments - transposing them, stretch/squashing them,
inverting them even!
Let's imagine for a moment that we've done a great job refactoring the
triggered segment code for reuse in both the linked and triggered segment
cases, all the object ownership and lifecycle issues properly sorted out etc...
I imagine we'd still need the interface additions I described above in my
"simple" case. I *think* you could get the transpose function interface for
free by dint of the "Transpose" edit box in the Segment Parameters pane. Same
with stretch/squash, you already have graphical resizing of segments, so for a
linked segment the stretch/squash could be applied there. Problem being I
suppose how do you choose whether the transformation was applied to the link or
the underlying segment? Maybe you don't, maybe you make a rule that
transformations are applied to links only. If you want to apply a transposition
to the underlying segment, you have to open it up in an editor and move the
notes. If you want to stretch/squash the underlying segment, you have to open
up the editor and rewrite the segment with notes of different lengths. I think
this is defensible.
What about note edits when a segment is linked? Say you have a linked segment
which has been transposed and stretched. You open it up in the notation editor,
I think you should see the notes after the transformations have been applied.
Can you edit the notes directly in the transformed view and expect the
underlying segment to be adjusted appropriately? Possible, but perhaps fiddly.
How about for linked segments which have transformations applied you split the
edit view to show the transformed and untransformed views simultaneously? Or
make an action in the linked segment edit view to open up the underlying
segment in a separate view? Either way, edits to be made to the underlying
segment view would be immediately reflected in the transformed view - the
transformed view's notes being uneditable directly.
To be honest, being so fresh to the code I feel like I'm giving Mario Andretti
driving advice here! I hope some of those suggestions make some sense though.
Cheers,
Ian.
------------------------------------------------------------------------------
_______________________________________________
Rosegarden-devel mailing list
[email protected] - use the link below to unsubscribe
https://lists.sourceforge.net/lists/listinfo/rosegarden-devel