PMClip - clip support within Renoise?
[left] [/left]
Well, a man from the future came to see me, and he had envisioned that clips could be achieved by means of scripting. (rhowaldt, sorry if you feel that I’ve quoted you outside the proper context, but there’s such a definite aura about the statement)
Of course it’s matter of opinion, but I agree with many of the members around here that “clips” should be allowed as part of a streamlined workflow when composing music. Having to look for a track, and copy-paste to a new location isn’t that hard, but it could be made obsolete by a proper clip implementation. Also, while having native clips in Renoise is cool, I believe that it would be even better to put it out in the open, and let the Renoise users shape the way it’s supposed to work.
The pre-planning of this tool started during the beta cycle, because I knew that such an idea would rock, but I had no idea how it would work, and therefore, no idea what features from the API would be needed. And it didn’t take long to realize that we had a show-stopper in front of us: before Renoise 2.6 RC2 was released, we had no way to detect changes to a pattern!
Ok, this is the moment where every Renoise in the world with a heart should thank Taktik, because he could see the problem too, and responded by introducing the all-powerful line notifiers as late as the Renoise 2.6 release candidate. Maybe it was his way of saying “yeah, let’s have clips and whatnot”…
So there we are. IMHO, I have brought a great idea to the table, but I am yet to disclose anything about the actual content of this idea.
Introduction
PMClip stands for “Poor Mans Clip”, and provides basic clip functionality within Renoise. It’s designed to be working transparently in the background, making sure that everything is up-to-date.
You can exchange clips between songs, build an expandable library of riffs…
Technically, the concept revolves around a simple idea: if we assign a unique color to a track, we can uniquely identify this track in the song. Extend this to multiple tracks, and we’ve got a way of “linking” several tracks together. Combined with some fancy pattern-matching methods, this should enable a clip-based workflow for most types of songs.
The user interface
Although the thing is designed to be working silently in the background, we need access to certain features. This is what the UI could contain:
Clip list
Topmost we have the list of clips, listing if it’s active or not), it’s color, name and whether it’s note, effects or both.
Create
Creates a new, empty clip in the list. Assign a name and custom color to it, define it’s length. Default colors are picked from a custom palette dialog
Delete
Delete the currently selected clip from the list and remove the custom color from matrix slots that are instances of this clip (but leave the pattern data intact)
Import
Import the currently active track as the new definition for the clip (notes and/or effect columns, and the length).
If the track has fewer note/effect columns than our existing definition, a prompt will appear asking if existing clip data should be preserved.
Match
Matches the track slots in the matrix that are identical to the current clip, and applies the clip’s custom color to those tracks.
Matching will take repeated data into consideration: if clip has a length of 8, and the pattern has a length of 64 but with 8 repeats of the clip, it is matched. Alternatively, a track with a length of 64, but only with matching data for the first 8 lines is not matched.
One could also specify a matching ratio, so tracks that are almost identical are brought up after matching has completed. An easy way to spot track variations.
Apply
Apply the current definition to all instances of the clip (definition of instances: the clips that have been marked with the same custom color as the current clip). If no instances are found, a dialog will ask if we want to output the clip to the current track instead, and hence, create the first instance.
When applying/writing contents to patterns, the clip can repeated throughout the length of the pattern (this is optional, see “repeat”). Thus, it’s possible to have clips with varying lengths in the same pattern.
Length
Decides the clip length. When a clip is written to a pattern that is longer than the clip, it is repeated.
Note/Effect columns
The checkboxes determine if note/effect columns are filtered out when matching/writing data. The number of columns can be specified using the numeric entry boxes.
Repeat
Enable this to automatically repeat clips across the duration of a pattern (if the clip is shorter than the pattern)
Clip editor
Not a full-featured pattern editor by any means, but rather a quick and dirty “text editor” with input validation
Palette
A custom palette dialog that list the possible clip colors. Careful not to use the standard Renoise colors, as each one should be unique!