Hi

i want to propose a new feature (again ;) ): templated (midi/drum-)parts.

i'm afraid this will be a pretty long mail, but please read it through
completely and tell me your opinion about it.


from the user's perspective, it would look as follows:



he creates a new template by some menu entry or "right click on part" >
"convert into template".

example: he creates two one-measure-drum templates: one basic beat and
one variation of it, let's call them "A" and "B".



he can add "template parts", in which he can specify the order (and
optional parameters, see later) of certain templates.

example: he adds a template part with the sequence "AABA"



when changing the length of the part, MusE automatically repeats the
specified sequence

example: he makes this part 7 bars long. when playing, muse will play
"AABAAAB" (that is, of course not A/B but the notes inside these templates.)



now comes the actual new feature about it:
these templates are parametrized, with user-definable parameters.
this allows the user to change the notes inside a template

example 1: he has this drum templates, but now wants some C similar to
A, just that the hi-hats from A get replaced by the cow-bell. he doesn't
need to create that C template and copy-n-paste, but instead he
parametrizes the "hi-hat"-beat (by naming it appropriately, let's call
it 'beat', and possible specifiying an allowed value range). in the
"template parameters" window he now can select whether 'beat' shall be
a) disabled, b) hi-hat or c) cow-bell (or d) something else).

example 2: he wants to create harmonics for his piece, and wants a
complicated piano arpeggio. he creates this arpeggio (e.g. in C-major),
but then templates it, and parametrizes it by defining: "C1 is 'param1',
E1 is 'param2', G1 is 'param3' and C2 is 'param4' (CEG makes a C-major
chord, for the musically illiterates ;) )
now he can use this template for his complete song! different chords can
be represented like follows:
C-major: param1/2/3/4 = C1, E1, G1, C2
F-major: param1/2/3/4 = C1, F1, A1, C2
C-major sept-accord (C7): param1/2/3/4 = C1, E1, G1, Bb1

all this without having to copy and change this complicated arpeggio all
the time.




he can easily alter the arpeggio by changing it in a single place. the
whole song will automagically get that change.
that's not possible with clone parts, btw! not if you use the
parametrizing-feature; in order to translate this into clone parts,
you'd have to (in the example) create different parts, and do three
changes. (in real songs, this "three" will be much larger!)



he can even specify note-lengths: with that, he can make this arpeggio
staccato or legato



furthermore, he can parametrize velocities.



when he opens such a template-part in a
pianoroll/drumeditor/scoreeditor, he will see each group of notes
belonging to a particular template colored the same. when altering
non-parametrized notes, this works just like it works for clone parts:
the change will become visible in multiple places.
if he alters a parametrized note (in the arpeggio example), he will
actually change the parameter.

example: if he has opened the template-part with the arpeggios, and the
parameters are "C-major, G-major, C-major, G-major" (actually they'd be
"CEGC, DGBD, ..."), and he changes the high-pitched C in the first
template-block and makes it a B, then he will have a template part with
the parameters: "C-sept, G-major, C-major, G-major" because he altered
the parameter. this might move lots of notes in case of the arpeggio
(all notes belonging to the changed parameter, obviously)



if changes a non-parametrized property of a parametrized note (e.g. when
the note's pitch is parameterized, but the user changes the note
position, not altering the pitch), then this will alter the template (as
it would with clone parts)



he could even replace templates with different templates, keeping the
parameters (given that they're compatible of course)

example: he has this arpeggio template, and has set up the parameters
for accompanying his whole song. but now he decides that he rather wants
"that arpeggio" and "a variation of that arpeggio" turn by turn.
he would just create that variation of the arpeggio, then instruct the
template-part to use "arp." and "var. of arp.", and there he goes. he
does not need to set up the harmonics again.



with that, one actually won't need clone-parts for MIDI any more (but
still for waves).





some words about the implementation:
frankly, i didn't think about that too much yet.

i assume that "templates" will be just event lists, and "template parts"
will be a list of pairs<EventList, ParameterSet>. We could pretty easily
play the notes then, we just need to look up "parametrized values" in
the parameterSet

alternatively, we could internally just translate each template-part to
a traditional part, and redo this translation each time a
template-related action occurs.


what do you think about it?
suggestions about the user interface? or the implementation?

greetings
flo

Attachment: signature.asc
Description: OpenPGP digital signature

------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Lmuse-developer mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/lmuse-developer

Reply via email to