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
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
