Go Back   Cockos Incorporated Forums > REAPER Forums > REAPER Feature Requests

Reply
 
Thread Tools Display Modes
Old 10-19-2010, 08:15 AM   #1
Mr. Data
Human being with feelings
 
Mr. Data's Avatar
 
Join Date: Sep 2008
Location: Location
Posts: 5,563
Default MIDI filtering – don’t beat me for that!

Some time ago I started an FR about enhancing MIDI filtering in the MIDI editor, but there seemed to be not that much interest in this. Filtering in itself doesn’t even make sence in many cases if you can’t modify the filtered data in an easy way anyway. But as there now seems to be an increasing interest in groove quantizing and other MIDI stuff, I thought, I throw in some new reflections about this whole issue. Some of the following may not be well thought out, ‘cos it’s likely to make logical errors or to forget things when dealing with such a complex thing like manipulating MIDI, but it may point in the right direction (at least I hope so) and maybe some of this will even find its way into the next releases .

The enhancements that could be made to the MIDI-filter don’t cover just filtering. In fact it could be used to manipulate MIDI-events at the same time. It could be used for simple tasks as well as extremely complex manipulations with a few simple settings. Many of the functions may go way beyond of every day use, but if you’d need them, they would be there, if you don’t need them, just leave them alone.

Before you read on I must say that I feel I have to apologize, because you have to scroll left and right all the time, to make the graphics visible completely. Dunno about Internet Explorer or other browsers, but if you use Firefox and press ctrl-- you can zoom out the page. You could also use ctrl-mousewheel to zoom. To get to its normal state, press ctrl-0.

Last edited by Mr. Data; 11-28-2010 at 03:14 PM.
Mr. Data is offline   Reply With Quote
Old 10-19-2010, 08:16 AM   #2
Mr. Data
Human being with feelings
 
Mr. Data's Avatar
 
Join Date: Sep 2008
Location: Location
Posts: 5,563
Default

Let’s go into some details.

The MIDI-filter (or whatever you’d like to call it) could be integrated in the top bar of the MIDI-editor (as shown below) and would be visible only if it is activated with the Filter button. I tried to let it have as less impact as possible on the UI, but that’s not possible in every case. The Filter button could be a round-robin-switch, which on first click enables the filter and shows the elements to set things up. On second click, the filter remains switched on, but the original bar you’ve set up yourself comes up back again. On third click the filter is switched off.

As you will learn if you read on, there are also options to modify data. These could be applied to the item and change it or you leave the filter switched on, to leave the filter pages and do something else in between, to come back to the filter to alter the changes and/or make them permanent.

If the filter is switched on by clicking the filter button once, it presents itself in different looks on different pages, depending on the elements, that are needed to set the conditions.

This is, what a typical filter page could look like…

…if “Enable” is unticked and nothing has been entered yet…



… if “Modify” is unticked and nothing has been entered there…



… if all functions on that page are in use, because you entered something already, no matter whether “Enable” or “Modify” are ticked.




It shows a filter that would let you select and modify note lengths. The elements are described later.

Last edited by Mr. Data; 10-19-2010 at 08:36 AM.
Mr. Data is offline   Reply With Quote
Old 10-19-2010, 08:17 AM   #3
Mr. Data
Human being with feelings
 
Mr. Data's Avatar
 
Join Date: Sep 2008
Location: Location
Posts: 5,563
Default

Here’s another example of apage, that could be used to determine positions or ranges:




Maybe the placement of the elements looks inconsistent, as there are checkboxes right of a rolldown and then left of a rolldown (see e.g. “Length” page above). But the elements are placed in a way, you can change them (or leave them) one after another from left to right (if possible). The concept of filter setting is the same as you would read something. In the above picture it would give a sentence like: “Select position/range (maybe clear the filter (see below)) in item and enable range from 2.3.000 to 138.1.000, giving a selected length of 135.3.000 and show it in ruler.” But anyway, a sentence could be formed in different ways.

As you see, on the left side we see the already mentioned Filter button. Next to this we could have a dropdown menu with the following items:
Load *
This would make it possible to load filter and modification settings. Quite handy if settings are more complex and used more often.
Filter
This would bring up the MIDI-filter itself and the pages where you can set up filtering and modifying of data.
Fill
Fills the item or selected range(s) with events in conjunction with the other settings of the filter.
Groove
Shows the groove quantize page.
Save *
Yeah! (Maybe .ReaFilter files? )
* Load and Save are on different pages in this proposal, because you’d first load settings (if there are any), then set things up and at last save them (if necessary). The Load and Save pages could look like the media explorer instead of showing the piano roll, named notes, or the event list.
On the right side of this rolldown menu there is a second one, where you could select the MIDI-event type, ranges and the note lengths you wish to filter or modify. It could have the following items:

Position/Range
Channel
Type
Length (only if “Note” on the “Type” page is set, or the “Type” page is not in use).
Parameter/Value
All Filters on their pages are disabled by default, to avoid the necessity of messing with things, you don’t need for your particular task. Thus you don’t have to visit all pages to set something up, but just the ones you need.
All pages (except “Load” and “Save”) could have a “Clear” button on the right side of the main or the “Select” rolldown to reset and clear the filter. This button should only clear the values that are seen on the actual filter page and only the ones that would mask or change MIDI-data.
All pages with the “Enable” checkbox ticked could have also these buttons on the right side:
”Select masked”. This would select masked events when filtered, as if you’d select them with marquee or some other method

”Show only masked”. This would show only notes or events, that meet the conditions of filter settings. This would look like only those events were in the item.

”Preview (audit) mask”. This would allow to listen to only masked notes or changes due to control changing or whatever without listening to other stuff in the item that doesn’t comply with filter settings.
All pages with a ticked “Modify” checkbox also could provide an
”Apply” button. It could be used to put your changes to the item just when you’re done and not prior to that, so you could change anything back and forth without ruining your work.

Last edited by Mr. Data; 10-19-2010 at 11:00 AM.
Mr. Data is offline   Reply With Quote
Old 10-19-2010, 08:17 AM   #4
Mr. Data
Human being with feelings
 
Mr. Data's Avatar
 
Join Date: Sep 2008
Location: Location
Posts: 5,563
Default

Position/Range

This filter can be used to set ranges or determine positions in an item, at which MIDI data should be filtered or modified independently from time- or marquee selection.
It could have the following modes that can be changed in another rolldown:

In item
In bar
In bar (advanced)
Quantized

Last edited by Mr. Data; 07-11-2011 at 02:40 PM.
Mr. Data is offline   Reply With Quote
Old 10-19-2010, 08:18 AM   #5
Mr. Data
Human being with feelings
 
Mr. Data's Avatar
 
Join Date: Sep 2008
Location: Location
Posts: 5,563
Default

Position/Range -> In item:




Here you could set the range or a position in the item that you wish MIDI-data to be masked.

The “Enable”-checkbox gives the opportunity to disable this and other pages on which you find it, without having to use the “Clear”-button, hence no losing of entered data.

If only in “from:” or “to:” is entered something or both have the same values, only a position is masked, otherwise a range. It also should be possible to set either “from:” or “to:” and the “Length” of the range. If only “from:” and “Length:” is filled in, the range could be considered from “from:” ahead and if only “to:” and “Length:” is filled in, the range could be considered from “to:” backwards. However, if only “Length:” is filled in, the current cursor position should be considered as starting point (“from”). Thus entering data would be reduced to a minimum.

The “Exclude”-checkbox inverts the selection. This would give two selections, if the selection doesn’t start at the start of the item or ends at the end of it.

The checkboxes “Use time selection” and “Use marquee” could simplify the input of the range. By checking one of these, the values should be automatically inserted in the “from:”, “to:” and “Length:” fields. For an easy workflow it shouldn’t matter, whether there is already a selection if the “Use time selection”-box is ticked or not. If there is a selection, the values should be entered automatically if you tick this box, if there is none, the values should be shown while dragging and entered when the mouse button is released. If you use “Use marquee”, of course only the left and right edges of the marquee are used to set start and end of selection. Also, when ticking “Use marquee”, the values of the last marquee should be entered.

“Show in ruler” could make the masking visible.

Last edited by Mr. Data; 07-11-2011 at 02:43 PM.
Mr. Data is offline   Reply With Quote
Old 10-19-2010, 08:18 AM   #6
Mr. Data
Human being with feelings
 
Mr. Data's Avatar
 
Join Date: Sep 2008
Location: Location
Posts: 5,563
Default

Position/Range -> In bar:




This page has the same input fields but they determine the selected range in a bar, not the whole item. In the above example pic the “In item” filter is switched off, so the selected range masking affects the whole item. But this mode should be combinable with the other modes as well. It could look like this then if “In item” and “In bar” are set at the same time:



The masking in this example would affect the ranges .2.500 – 3.250 of each bar but only from position 2.3.000 to 138.1.000 since this is already selected on the “In item” page.

Last edited by Mr. Data; 10-19-2010 at 08:52 AM.
Mr. Data is offline   Reply With Quote
Old 10-19-2010, 08:19 AM   #7
Mr. Data
Human being with feelings
 
Mr. Data's Avatar
 
Join Date: Sep 2008
Location: Location
Posts: 5,563
Default

Position/Range -> In bar (advanced):



Here you could set a mask that masks every nth half, quarter, eighth or whatever. Shifting can be used to shift the range if you want to include events that are slightly off quantisation.

“Rotate left” and “Rotate right” could be used to rotate the masking. This is useful if you e.g. set “mask every 4th 16th…”. Without rotating you would select 16th 1, 5, 9, 13; if you now click on “Rotate right” twice, you’d mask 16th 3, 7, 11 and 15.

The above picture shows a combination of masking “In item”, “In bar” and “In bar (advanced)”. If you look at the ruler, it isn’t quite clear at a glance what is masked and what’s not, but if you would tick “Show in ruler” only on the “In bar (advanced)”-page and leave it unticked on the others, you’d only see what’s actually masked like in the pic below.



This filter could be used to easily change e.g. velocity-values of a drum-beat by selecting just on-beats or so.

Last edited by Mr. Data; 10-19-2010 at 08:55 AM.
Mr. Data is offline   Reply With Quote
Old 10-19-2010, 08:20 AM   #8
Mr. Data
Human being with feelings
 
Mr. Data's Avatar
 
Join Date: Sep 2008
Location: Location
Posts: 5,563
Default

Position/Range -> Quantized:



This filter page has only two elements. If activated, it only masks already quantized events i.e. events, that are on the grid. Exclude inverts the mask.

Last edited by Mr. Data; 10-19-2010 at 09:00 AM.
Mr. Data is offline   Reply With Quote
Old 10-19-2010, 08:21 AM   #9
Mr. Data
Human being with feelings
 
Mr. Data's Avatar
 
Join Date: Sep 2008
Location: Location
Posts: 5,563
Default

Channel:

On this page you could make a channel selection of one or more channels.


But if “Modify” is ticked, you could also move and/or copy events to one or more other channels.



On the right side there are two buttons that come up in this description the first time:
Delete double events
Call and switch the matrix on and off (see below). This button should be lit if routings have been assigned, that can’t be represented clearly otherwise.
If you tick one channel in the upper row and another in the lower, all events would go to the channel ticked in the lower. If there is more than one channel selected in the upper row, but only one in the lower, all of the channels events, ticked in the upper, would go to the one that’s ticked in the lower row. (This can easily lead to doubled events, hence the “Delete double events” button). In the opposite case, where one is ticked in the upper and more than one in the lower, additional events would be created. If in both rows more than one channel is ticked, all events on the channels ticked in the upper row are put together as if they were on one channel and then placed on the channels that are ticked in the lower row.

Examples:
  • In the upper row channel 1 and 5 is ticked and in the lower row channel 2. all events of channel 1 and 5 would go to channel 2 (and removed from channels 1 and 5).
  • In the upper row channel 2 is ticked and in the lower channel 1 and 5, all events on channel 2 will be put to channel 1 and 5 (and removed from channel 2)
  • In the upper row channel 4 and 6 are ticked and in the lower 1 and 5, all events on channels 4 and 6 are linked together, as if they were on one channel and then moved to channel 1 and 5.
  • If you want to copy events on channel 6 to channel 2, without removing them from channel 6, you tick 6 in the upper row and 6 and 2 in the lower.
  • A special case: If in the upper row nothing is selected, No filter action should be taken, no matter, whether in the lower row is something ticked or not. This is to avoid confusion, since it’s very unlikely, that you want to move all events of all MIDI channels to one.

Last edited by Mr. Data; 10-19-2010 at 11:11 AM.
Mr. Data is offline   Reply With Quote
Old 10-19-2010, 08:22 AM   #10
Mr. Data
Human being with feelings
 
Mr. Data's Avatar
 
Join Date: Sep 2008
Location: Location
Posts: 5,563
Default

The Channel Matrix:

For more complex channel routings we could have the matrix, where MIDI channels could be freely assigned and copied. This Matrix should override the settings in “simple” mode, but reflect them if there some settings have been made.



The three buttons at the right bottom corner are:

“Use and close”
“Reset”
“Cancel and close”

Last edited by Mr. Data; 10-19-2010 at 09:07 AM.
Mr. Data is offline   Reply With Quote
Old 10-19-2010, 08:22 AM   #11
Mr. Data
Human being with feelings
 
Mr. Data's Avatar
 
Join Date: Sep 2008
Location: Location
Posts: 5,563
Default

Type:

The Type filter page should enable you not just to select MIDI-event-types, but also transfer one type to another. If you just want to filter event types, you could use this page:



As there are:
Note
Note off
Poly Aftertouch
Control change
Program Change
Channel Aftertouch
Pitch
SysEx/Meta
But if you want to change an event type to another, you could tick “Modify” to make the page look like this:



Not all combinations make sense though. For instance SysEx-data cannot be transferred to or from any other MDI event type.

Converting MIDI event types is one of the trickiest things to do, because some event types can’t be easily tranferred to some others, since their size is different. Note, Pitch, Control Change and Poly Aftertouch need two data bytes, whereas Program Change and Channel Aftertouch just use one and SysEx events can have any number of them. Another aspect is, that even some event types that share the same size (bytecount) can’t be transferred that easily.

How could it work then?

There are two ways to handle this issue:
  1. forbid transferring event types that don’t have the same byte count or format (which isn’t something, we’d really expect from Reaper ).
  2. Use a matrix to route any data byte to any other type’s data byte and determine on the Parameter/Value page, which values or ranges should be considered. This, however, can only be of use to someone, who really knows what (s)he’s doing.

Last edited by Mr. Data; 07-11-2011 at 02:54 PM.
Mr. Data is offline   Reply With Quote
Old 10-19-2010, 08:23 AM   #12
Mr. Data
Human being with feelings
 
Mr. Data's Avatar
 
Join Date: Sep 2008
Location: Location
Posts: 5,563
Default

“Easy mode”: (...or whatever you'd like to call it)




This is shown in the above pic. You could transfer one event type to another if “Modify” is ticked, but in the right roll-down you can only select types that would fit into the data structure of the left one. If “Keep originals” is checked, the original events remain and events of the type set in the right roll-down are inserted.

You might wonder “What’s the use of the above setting?” Well, in this example the velocity of the note(s) will be discarded and you could perform program changes using notes.

Another Example:
The modification mode can be useful if you e.g. use a piano plugin, that uses samples for the pedal noise, so the controller events of the damper pedal could be used to transfer it to a note, that plays back the pedal samples, while at the same time doing its normal job. It could also work the other way round: You could e.g. assign the highest key on your keyboard to a controller to switch something. Sometimes it’s also useful to be able to translate controller-events to Program Change events or (as pointed already) to use the pitch-wheel as a controller.

Last edited by Mr. Data; 10-19-2010 at 09:13 AM.
Mr. Data is offline   Reply With Quote
Old 10-19-2010, 08:24 AM   #13
Mr. Data
Human being with feelings
 
Mr. Data's Avatar
 
Join Date: Sep 2008
Location: Location
Posts: 5,563
Default

But what about something more sophisticated?

Example:
Assume, you don’t need the pitch-wheel for pitch bending, but want to use it to pan your instrument or something. The Pitch bend event sends its code (saying “I’m a pitchbend event”) then the least significant byte (LSB) and at last the most significant byte (MSB) in that order. Controllers, on the other hand, that have the same resolution as the Pitch bender, need to have two controller events to cover the same value range and resolution, where the controller with the lower controller number holds the MSB and the controller with the higher controller number holds the LSB and these controllers are paired in this way: 0(MSB)/32(LSB), 1/33, 2/34 … (to make it most complicated ). So, to use the bender as pan it has to be transferred to the two Controller events 0xBn,0x08,MSB and 0xBn,0x28,LSB, which means Pitch Bend-LSB-MSB goes to Controller 8-MSB and Controller 40-LSB (The “n” determines the MIDI channel).

To accomplish this we’d need …

The EventType Matrix - “Matrix Mode”:




In columns there can be selected more than one box, to put an incoming event type to more than one outgoing type (and to leave the original type untouched). In rows there can only be selected one box, except in the “Control Change”s’ “Val” boxes in conjuction with the “Pitch” “LSB” and “MSB” boxes of the input – there can be two selections in one row. However: to make this work as expected, the controllers have to be assigned properly on the “Parameter/Value” page.

To transfer event types from one type to another can get rather complex and might be error prone, because e.g. note and pitchbend events have two data bytes whereas program change messages use just one, as already mentioned. Many of the combinations seem to be useless, looking at it first and I must admit, I can’t totally overview the possibilities and situations that could arise from converting event-types and I also think it’s nothing for everyday use for most of us, but I also see many situations in which such a feature could be immensly helpful.

Last edited by Mr. Data; 10-19-2010 at 09:16 AM.
Mr. Data is offline   Reply With Quote
Old 10-19-2010, 08:24 AM   #14
Mr. Data
Human being with feelings
 
Mr. Data's Avatar
 
Join Date: Sep 2008
Location: Location
Posts: 5,563
Default

Length:



The length filter page only makes sense and therefore should only be visible, if “Type” is unset or set to “Note” in either of its dropdowns. In the above example all notes of lengths between 1/32 and 1/8 will be masked.



If you tick “Modify” you’d have the following options to modify the lengths in “min:” and “max:” with the dropdown menu and the “from:” and “to:” input fields:
Set
Sets the lengths of all notes that meet the conditions set in “min:” and “max:” to the given values set in “from:” and “to:”.
Add
Adds the lengths of all notes that meet the conditions set in “min:” and “max:” to the given values set in “from:” and “to:”; decimals should be added arithmetically, fractions should be added musically (as note lengths)
Subtract
Subtracts the lengths of all notes that meet the conditions set in “min:” and “max:” from the given values set in “from:” and “to:”; decimals should be subtracted arithmetically, fractions should be subtracted musically (as note lengths) if possible.
Multiply
Multiplies the lengths of all notes that meet the conditions set in “min:” and “max:” by the given values set in “from:” and “to:”; decimals should be multiplied arithmetically, fractions should be multiplied musically (as note lengths) if possible.
Divide
Divides the lengths of all notes that meet the conditions set in “min:” and “max:” by the given values set in “from:” and “to:”; decimals should be divided arithmetically, fractions should be divided musically (as note lengths) if possible.
Random
Sets the lengths of all notes that meet the conditions set in “min:” and “max:” to random values. Lower and upper boundaries are set in “from:” and “to:”
In “from:” you could enter a value, that should be used for value setting or -calculation at the beginning of the time-selection that’s set on one (or more) of the “Position/Range”-pages and in “to:” you’d enter the value at the end position. So it would be possible to change lengths of notes over a period of time. If you just fill in “from:” or “to:” or the same value in both, a constant value should be used for calculation or setting (which is the case if you fill in both with the same value anyway). You could even leave both blank, but that would be the same as leaving “Modify” unticked.

It should be possible to enter values as fraction (i.e. note lenghts) or as decimals (arithmetics). In “Set”- and “Random”-mode, there should be no difference in dealing with decimals or fractions, because there is no direct relationship between the lengths given in “min:” and “max:” whereas in “Add”- and “Subtract”-mode there should be a determination between them, because it makes entering data easier.

Example:
If you enter 0.5 in “from:” and “to:”, you’d refer to the lengths you’ve got (e.g. 1/8 in “max:”) in conjunction with an arithmetical value (0.5). And if you set your mode to “Add” and got 1/8 and add 0.5 to it, you’d add 1/16 and get 3/16. But if you’d enter 1/2 in “from:” and “to:”, you’d refer to musical note lengths only; In this case 1/8 + 1/2 would give 5/8. However, this could lead to confusion, but as dealing with MIDI in the MIDI-editor is dealing with music mainly, it is quite logical that entering fractions means entering note lengths, wheras entering decimals should mean entering decimals, because noone would for instance enter 0.0625 as sixteenth note. On the other hand, in “Multiply”- and “Divide”-mode entering note lengths is somewhat useles, I think.

Last edited by Mr. Data; 10-19-2010 at 11:20 AM.
Mr. Data is offline   Reply With Quote
Old 10-19-2010, 08:25 AM   #15
Mr. Data
Human being with feelings
 
Mr. Data's Avatar
 
Join Date: Sep 2008
Location: Location
Posts: 5,563
Default

The “Multiple ranges” and “Keep value in gaps” checkboxes could change the interpretation of ranges if multiple ranges exist due to excluded selections (see above) and should only be changeable if more than one range exists.

The “Multiple ranges” checkbox gives the option to treat each range as a new range

Example:
If you have an item from bar 1.1.0 to 32.1.0 and you select on the “Position/Range –> In item”-page bar 4.1.0 to 12.1.0 and check “Exclude”, two selected ranges would be created, the first from 1.1.0 to 4.1.0 and the second from 12.1.0 to 32.1.0, because all except the excluded range would be selected. If you now enter here on the “Length”-page two different values in “from:” and “to:”, you’d get the “from:”-value at position 1.1.0 and the “to:”-value at position 32.1.0. But if you now tick “Multiple ranges” every selected range gets the same “from:”-value at its start position and “to:”-value at its end position.
Maybe some pics make it clearer.

“Multiple ranges” unticked:




“Multiple ranges” ticked:





The “Keep value in gaps” checkbox is only useful and should only be selectable, if “Multiple ranges” is unticked. If you have multiple selected ranges, normally the value changes continously from “from:” to “to:”, no matter whether there are gaps (excluded ranges) in the selection or not. If “Keep value in gaps” is ticked, there should be no value change in gaps of the selection, hence the end value of one selected range is the start value of the next.

“Keep value in gaps” unticked:




“Keep value in gaps” ticked:


Last edited by Mr. Data; 10-19-2010 at 09:23 AM.
Mr. Data is offline   Reply With Quote
Old 10-19-2010, 08:25 AM   #16
Mr. Data
Human being with feelings
 
Mr. Data's Avatar
 
Join Date: Sep 2008
Location: Location
Posts: 5,563
Default

Parameter/Value:

Since “Parameter” and “Value” are are connected, making the data of a MIDI event, they are both represented on one page, opposed to having them both on separate pages. This makes it easier to edit them without stepping back and forth between pages but with the drawback that it takes a little more room.



On the right side of the “Enable” checkbox, we see the word “Note” in this example. This shows that on the “Type” page nothing is selected or note events have been chosen to be filtered or are the result of a type conversion is “Note”. But you could also see the following in this position, depending on what is set on the “Type” page:
“Note off” (Note-off event)
“Poly AT” (Poly Aftertouch)
“CC” (Control Change)
“PC” (Program Change)
“Chan AT” (Channel Aftertouch)
“LSB” (Pitch LSB)
“SysEx” (SysEx/Metadata)
On the right hand side of this, we see the “low:” and “high:” input masks, where you could select or enter the values for the lower and upper bounderies. If the type is “Note”, “Note off” or “Poly AT”, Note names should be shown as well. If the type is “CC”, controller names should be shown as tooltips if the mouse moves over it (maybe).

The button on the right hand side of that brings up the Note Matrix if event type fits.

If “Use marquee” is ticked, the upper and lower edge of the marquee determine the values in “low:” and “high:” and should be entered automatically (e.g. if you release the mouse button). Also, when ticking “Use marquee” the values of the last marquee should be entered.

There is a special case, where “low:” and “high:” don’t determine range boundaries, but a low and a high value: If you e.g. do a type conversion from Pitch Bender events to Controller events, in “low:” you enter the controller number ,where the MSB should go and per default in “high:” there could be entered the controller number of “low:” plus 32 automatically, because high resolution controllers use in fact two controllers that are 32 controller numbers apart from each other (as already mentioned in the description of the Type page). This, of course, should be changeable, if needed. To use not a range, but two values, you can tick “No range”

Last edited by Mr. Data; 11-28-2010 at 12:05 PM.
Mr. Data is offline   Reply With Quote
Old 10-19-2010, 08:26 AM   #17
Mr. Data
Human being with feelings
 
Mr. Data's Avatar
 
Join Date: Sep 2008
Location: Location
Posts: 5,563
Default

A brief look at the lower lane reveals, that it’s quite the same as the upper one with a few differences.




Right of “Enable” you’d see

“Velocity” (If in the upper lane “Note”, “Note off” is shown).
“Pressure” (If in the upper lane “Poly AT” or “Chan AT” is shown).
“Value” (If in the upper lane “Control Change” is shown)
“MSB” (if in the upper lane “LSB” is shown).
What you input in “min:” and “max:” you surely can imagine by now.

And: There is no “Matrix” button.

Last edited by Mr. Data; 10-19-2010 at 09:30 AM.
Mr. Data is offline   Reply With Quote
Old 10-19-2010, 08:27 AM   #18
Mr. Data
Human being with feelings
 
Mr. Data's Avatar
 
Join Date: Sep 2008
Location: Location
Posts: 5,563
Default

If you tick the upper “Modify” checkbox, the bar changes to this:



In this example you’d subtract two octaves of all selected notes between (and including) C#3 and D#8 that have a velocity range of 20 - 90.

The rolldown that now has appeared, lets you select what to do with the values within the boundaries you entered in “low:” and “high:”. Behaveour when entering a value just in “from:” or “to:” (instead of both) should be the same as already described at “Position/Range -> In item” It’s more or less the same as the menu on the “Length” page, but there could be some special features.
Set *
Sets the values, you enter in “from: and “to:”, beginning with the “from” value at the start of selection (you’ve set on the “Position/Range” pages) and ends with the value you entered in “to:” at the end of the selection.
Add
Adds the values to the ones entered in “from: and “to:” to the ones in “low:” and “high:”, taking the selected ranges start and end positions into account, giving a continuous rise, fall or static offset.
Subtract
Subtracts the values to the ones entered in “from: and “to:” from, taking the selection(s) start and end positions into account, giving a continuous rise, fall or static offset.
Comp/Exp
This is to compress or expand value ranges
Random
Sets the values entered in “low:” and “high:” to random values within their boundaries, given in “from: and “to:”.
Make Key
Would be only available with Note events. It should change notes inside the boundaries of “low:” and “high:” to make them fit to a set key.
Delete
Would obviously delete events that meet the selection conditions and disable “Modify” in the lower lane.

* If “No range” is ticked, the “Set” menuitem should be renamed to “Set range” and a “Set values” item should be added after that. This would make it possible, that, although for source events “No range” is ticked, destination (manipulated) events could follow a range, that’s set on the “Position/Range” pages. Whereas with “Set values” entered values should not be considered as start- or end-values that change continously in selected ranges, but as destination values of their related ones on the left.



In this example the controller 48 will be set to controller 38 and the controller 52 to controller 48.

Last edited by Mr. Data; 10-19-2010 at 11:30 AM.
Mr. Data is offline   Reply With Quote
Old 10-19-2010, 08:27 AM   #19
Mr. Data
Human being with feelings
 
Mr. Data's Avatar
 
Join Date: Sep 2008
Location: Location
Posts: 5,563
Default

The “Make Key” entry in the “Modify” rolldown could be a special function, which could be available if you work with notes and that allows to transpose them in a way, making them fit not only to a key, but also to a scale of that key. When this menuitem is chosen, the input mask changes from “from:” and “to:” to “Key:” and “Scale”. In “Key:” you could select the key (e.g. C, C#, D, D#…) and in “Scale:” you could select:
Maj
Min
Chrom
Whole
Dorian
Phryg
Lyd
Mixolyd
Aeol
Ion
Penta
PentMin
and others, that could be added, using a text file, like the note name file for the drum editor.



As you can see in the above example, these settings would change notes of the whole note range and the whole velocity range (since there is nothing entered) to make them fit to a mixolydian scale in E#.

Last edited by Mr. Data; 10-30-2010 at 09:22 AM.
Mr. Data is offline   Reply With Quote
Old 10-19-2010, 08:28 AM   #20
Mr. Data
Human being with feelings
 
Mr. Data's Avatar
 
Join Date: Sep 2008
Location: Location
Posts: 5,563
Default

You could also modify values i.e. the velocity of selected notes without modifying the notes themselves, of course.



This settings in this example would just use controllers 7 and 39 (Volume MSB and LSB), since “No range” is ticked, with a range from 70 to 120, that are compressed to half the range at the start of selection and expanded by 10% at the end of the selection. As there is a selected value range of 50 (70-120), the reference value would be 95. So at start of selection the result values could be between 82 and 107 (i.e. 83 and 108) and at the end of selection between 67 and 122 (i.e. 68 and 123).

Last edited by Mr. Data; 10-19-2010 at 09:41 AM.
Mr. Data is offline   Reply With Quote
Old 10-19-2010, 08:29 AM   #21
Mr. Data
Human being with feelings
 
Mr. Data's Avatar
 
Join Date: Sep 2008
Location: Location
Posts: 5,563
Default

To do modifications of e.g. notes and their velocity at the same time, you could tick “Modify” in both lanes and have something like this.



You can easily get by now, what this setting would do, I think.

The main differences between the upper and lower lane are these:
  • The “Use marquee” in the lower lane isn’t used in the piano roll itself, but in its controller lane.
  • The “Modify” dropdown obviously can’t have a “Make key” and “Delete” item.

Last edited by Mr. Data; 10-19-2010 at 09:44 AM.
Mr. Data is offline   Reply With Quote
Old 10-19-2010, 08:29 AM   #22
Mr. Data
Human being with feelings
 
Mr. Data's Avatar
 
Join Date: Sep 2008
Location: Location
Posts: 5,563
Default

The Note Matrix:

This matrix would allow to select multiple ranges, single notes and complete octaves, that all don’t even need to be adjacent. Or you could select e.g. just all F#s and Bs with two clicks.

It could look like this:


Last edited by Mr. Data; 10-19-2010 at 09:45 AM.
Mr. Data is offline   Reply With Quote
Old 10-19-2010, 08:30 AM   #23
Mr. Data
Human being with feelings
 
Mr. Data's Avatar
 
Join Date: Sep 2008
Location: Location
Posts: 5,563
Default

Fill:

Opposed to the Filter pages, where existing data can get altered, on the Fill pages you can insert events while at the same time using the modification settings of the Filter pages.

Fill could be used to fill an item with events in a rather fast way. Imagine, you want to fill an item quickly with events for a hihat or you want to use a sequence, you don’t want to do with an item loop, because you want to have variations here and there. Using a loop would force you to split the item, make your changes there and maybe glue them together afterwards again. But with the “Fill” function you could do it in a single item without switching back and forth in the MIDI editor.

There could be several modes:

Event
Selection

Last edited by Mr. Data; 10-19-2010 at 11:34 AM.
Mr. Data is offline   Reply With Quote
Old 10-19-2010, 08:31 AM   #24
Mr. Data
Human being with feelings
 
Mr. Data's Avatar
 
Join Date: Sep 2008
Location: Location
Posts: 5,563
Default

Event:



On this page you’d have several choices:
  1. The simplest one is probably this: You click the “MIDI” button, play a note on your keyboard, set a rest (if needed), click “Apply” – done.
  2. You select a note at the inupt mask, set up velocity and length and – if you like – a rest to next note, click “Apply” – done.
  3. You click on a note, already entered in the item and its attributes will be entered into empty items of the input mask, set a rest time if you like, click “Apply” – done.
  4. You leave one or more input mask item(s) blank, set up the filter like you would do, to filter something, but as you enabled the Fill page, the settings would insert events instead of filtering them. Thus, you couldn’t fill the item just with single notes, but also with chords (set up in the Note Matrix) or any other event type (except SysEx). Even range settings would be possible.

The checkbox “Start at cursor position” would fill the item from the cursor position, opposed to filling the whole item.

The “Delete all but selected” switch could be useful if you want to get rid of all other notes that were previously in the item if you click “Apply”.

Last edited by Mr. Data; 10-30-2010 at 09:27 AM.
Mr. Data is offline   Reply With Quote
Old 10-19-2010, 08:31 AM   #25
Mr. Data
Human being with feelings
 
Mr. Data's Avatar
 
Join Date: Sep 2008
Location: Location
Posts: 5,563
Default

Selection

The “Selection” mode is to fill an item with more than one note (i.e. a sequence). You could choose between
Offset
Repeat
Offset



What is repeated refers to the selection (hence the name) you did in the item (not the masking on the “Position/Range” pages).

In “Offset” mode you set the offset of the first repetition to the beginning of the original and the subsequent repetitions in bar(s), quarters and ticks. In the above example, the notes you selected would begin to repeat at the fourth quarter after your selection’s start, no matter whether it’s longer than three quarters or not. It should also be possible to set negative offsets.

The checkbox “Cut at start of next” determines, whether the original i.e. its following repetitions get cut if the next one starts or whether they should play on.

The “Stretch/Squeeze” checkbox lets you deside whether your selection should fit into the offset range or not, even if it’s longer or shorter in its original state. If not ticked, your selection would play normal and the repetition would begin at the set offset, If ticked your selection will be stretched or squeezed into the range of start of selection to offset setting, no matter, whether it’s longer or shorter than the original. This, of course, could result in notes or events, that follow no quantization. You could also set a rest time to wait for, until the next repetitions start, because there is no other way to set a pause between the end of the last note to the beginning of the next repetition of your selection if you use the “Stretch/Squeeze” function.

“Delete all but selected” and “Start at cursor position” do the same as on the other page.

Of course it should be possible to combine this with the filter settings. So you could transpose repetitions, use Fill to fill items with controller events, that you want to draw afterwards in their controller lanes or whatever…

Last edited by Mr. Data; 10-19-2010 at 02:03 PM.
Mr. Data is offline   Reply With Quote
Old 10-19-2010, 08:32 AM   #26
Mr. Data
Human being with feelings
 
Mr. Data's Avatar
 
Join Date: Sep 2008
Location: Location
Posts: 5,563
Default

Repeat



Here you can set the number of repetitions you want to have inserted into the item. If you have selected one bar of notes (or less and the according rest time) in an item of 16 bars and set it to 11 repetitions, as in this example, the last four bars will stay empty, as the second to 12th bar will be filled.

However, if you tick “Stretch/Squeeze”, the whole item will be filled with twelve equally long sequences. They will be stretched. If you’d set the repetition number e.g. to 30 or so, they (and the original) will be played faster i.e. squeezed.

Assuming you haven’t ticked “Stretch/Squeeze” and you’d set a higher number than that what would fit into the item, the rest would be truncated, hence you could set a high number to fill the whole item in a secure way fast.

“Delete all but selected” and “Start at cursor position” do the same as described already.

Last edited by Mr. Data; 10-19-2010 at 09:58 AM.
Mr. Data is offline   Reply With Quote
Old 10-19-2010, 08:33 AM   #27
Mr. Data
Human being with feelings
 
Mr. Data's Avatar
 
Join Date: Sep 2008
Location: Location
Posts: 5,563
Default

Groove:

The Groove editor could enable you, to create groove quantization patterns of up to 32 bars. (well, maybe 8 or 16 would be enough though).



At “Length” you could determine the length of the groove pattern.

“Resolution” sets the number of fractions within a bar. The rolldown lets you select standard values, but it could also be possible to enter other values (like e.g. 14 or).

“Move every” sets the distance of beats that can be moved in one go.

In the above pic you see that it’s every fourth (1, 5, 9, 13…). The “Rotate left” and “Rotate right” buttons move this selection. Clicking once on the “Rotate left” Button, would make 4, 8, 12, 16… moveable in one go. Exclude, of course, would invert this setting, so 1,2,3,5,6,7,9… would be set.

“Shift” could shift the marked diamonds left or right, which makes it easy to move multiple beats in one go.

The “Magnify” button stretches the bar to the width of the ruler and you can set the bar you want to see on the right side of this.

The small embedded matrix shows all bars of the groove and could let you decide, to which bars your manipulations will be copied, while you edit one of them.



In this example everything you’d do on bar 1 would find its reflection in bar 3, 5 and 7 and you could do finetuning later on these bars to give them slight variations from bar 1. Everything you’d do on bar 2, 4, 6 or 8 though would only change this bar your're currently editing and none of the others with these settings. It should also be possible to copy bars. If you for instance want to make changes to bar 1-3, 5 and 7 but forgot select 2, you could copy by (e.g.) shift clicking first on 1 then on 2.

Finally we could have a “Load” and “Save” button, to load and save the edited groove as MIDI files.

The above described elements are meant to make working easier. Of cource it should be possible to move every single beat independently. To work more precisely, magnification would help. The editor could look like this when clicking “Magnify.




If you e.g. click once on the “Rotate left” button and set “Shift” to 10%, you’d see this:



Diamonds, that are shiftet left (either automatically or manually) could be displayed in another color as soon as they leave their default position for more clearness.



If you’d now click twice “Rotate left” or “Rotate right” only diamonds (and hence beats) that are not shifted manually should be marked for automatic shifting. So in the example only the beats at 1.1.250 and 1.4.250 would be marked. (no pic)

It could get really interesting, if you combine this with the settings in the filter.

Example:
Imagine, you’d like to edit a groove, but want to leave out ghost beats of the snare. You could now set the filter on the “Parameter/Value” Page and only allow groove modification above a certain Velocity, but only for the snare.

Another choice could be to use ranges, where unmasked parts of the item would prevent beats from being moved accidentally.

Last edited by Mr. Data; 10-19-2010 at 02:12 PM.
Mr. Data is offline   Reply With Quote
Old 10-19-2010, 08:33 AM   #28
Mr. Data
Human being with feelings
 
Mr. Data's Avatar
 
Join Date: Sep 2008
Location: Location
Posts: 5,563
Default

Save

The load and save pages look quite the same:



Here you could set what exactly to load or save from a filter setting. So you could (to a certain extend) combine settings out of different settings. Say you need to load a Parameter/Value setting, but need the current range selection unchanged. Choose what you need - Voila!

Last edited by Mr. Data; 10-19-2010 at 10:05 AM.
Mr. Data is offline   Reply With Quote
Old 10-19-2010, 08:34 AM   #29
Mr. Data
Human being with feelings
 
Mr. Data's Avatar
 
Join Date: Sep 2008
Location: Location
Posts: 5,563
Default

A few concluding words:

Another idea would be to have a few tabs to chain more than one filter setting if needed. Also it might be great to have a plugin (without Fill and Groove quantize) to be able to manipulate incoming MIDI in realtime.

As already mentioned, some of you might consider this as more than one FR, because of the Fill and Groove Quantize things. I wasn’t quite sure myself to put that in here as well, but as this could all work together like cogs in cogs it seems to me quite logical that this all belongs together. And putting it in three FRs, I’d had to refer to the filter all the time anyway. It might also seem to be somewhat over the top in some aspects, but I hadn’t in mind what I need, but more what could be needed by anyone of us. And: if there is versatility in areas that are used frequently, it’d be quite illogical to neglect it in the ones that are rarely used

Let me repeat some of my opening statements again:

All of this is surely far from being perfect. In fact, I see some flaws myself, looking over my written babble already. But to deal with this here wouldn’t probably let me come to an end ever. So… After all, these are just proposals – nothing more. On the other hand I think this is what a Reaper-like filter could look like. Because of its versatility it would fit perfectly IMHO. Hopefully some of those proposals find their way into V5 . Once again: It’s likely, that I overlooked some obvious things and/or that I didn’t explain well enough, how this or that could work. Maybe you try to play through your own cenarios to check, whether it makes sense.



-Data

Last edited by Mr. Data; 10-19-2010 at 11:38 AM.
Mr. Data is offline   Reply With Quote
Old 10-20-2010, 07:12 AM   #30
Mr. Data
Human being with feelings
 
Mr. Data's Avatar
 
Join Date: Sep 2008
Location: Location
Posts: 5,563
Default

Here's the link to the FR again:

http://forum.cockos.com/project.php?issueid=3043


-Data

Last edited by Mr. Data; 06-28-2012 at 03:59 PM.
Mr. Data is offline   Reply With Quote
Old 10-20-2010, 07:13 AM   #31
Mr. Data
Human being with feelings
 
Mr. Data's Avatar
 
Join Date: Sep 2008
Location: Location
Posts: 5,563
Default

(reserved)!
Mr. Data is offline   Reply With Quote
Old 10-20-2010, 10:47 AM   #32
gofer
-blänk-
 
gofer's Avatar
 
Join Date: Jun 2008
Posts: 11,359
Default

bzzttt! crackle! *information overload* beep!




This is massive! I've got the feeling that some things could be made simpler or more obvious, but it has to roll back and fourth a bit until I get that concept so I can't really comment yet.



I do love that Note Matrix thing, that's for sure. Wanna.
gofer is offline   Reply With Quote
Old 10-20-2010, 11:37 AM   #33
Mr. Data
Human being with feelings
 
Mr. Data's Avatar
 
Join Date: Sep 2008
Location: Location
Posts: 5,563
Default

Quote:
Originally Posted by gofer View Post
bzzttt! crackle! *information overload* beep!
Yeah, I knew this would happen.

But I think if you get the principle, it's more than easy. Maybe it's hard to understand because of my cumbersome explanations.

Try to think of a cenario, no matter how simple or difficult and check, whether you could do it with that.



-Data
Mr. Data is offline   Reply With Quote
Old 10-28-2010, 10:02 AM   #34
beingmf
Human being with feelings
 
beingmf's Avatar
 
Join Date: Jul 2007
Location: Jazz City
Posts: 5,073
Default

I haven't read the whole kladderadatsch (you know me ), BUT AFAI could see: this would be killer!!!!! Better than Logic – just today I missed this "in bar" modification thingy.
The only downside for me is the visual – or let's call it "graphical" – way it is implemented. TBH, I don't have another idea right now, but I guess one of the skinning maestros (WT? Rado?) could chime in here. It looks too "Reaper 3" for me )
beingmf is offline   Reply With Quote
Old 10-28-2010, 11:58 AM   #35
Mr. Data
Human being with feelings
 
Mr. Data's Avatar
 
Join Date: Sep 2008
Location: Location
Posts: 5,563
Default

Quote:
Originally Posted by beingmf View Post
It looks too "Reaper 3" for me )
To me too. What I also had in mind, that doesn't come across right here is, that you could click into an input field (or whatever it's called), hold the mouse button and change values while moving the mouse up or down. so no typing values if you don't want to. But that was requested many times before already.



-Data
Mr. Data is offline   Reply With Quote
Old 10-29-2010, 11:46 PM   #36
arkima
Human being with feelings
 
Join Date: Sep 2009
Location: NZ
Posts: 375
Default

Mr. Data all this is simply Amazing!

I'll be reading over your ideas for a while as there is just too much for me to take in. But this FR from what I have taken in covers plus more - the things that I would really like to have to use when using the ME.

Blown away!....

So when can we vote?

-a

add: As mentioned elsewhere in this forum (I think) perhaps as dockable/undocckable to either the right (or left side?) of the ME window. Tabs somewhat similar to tabs in the Rea-plugs for main category type switching for quick navigation. Just a thought....

Last edited by arkima; 10-29-2010 at 11:52 PM. Reason: comment added.
arkima is offline   Reply With Quote
Old 10-30-2010, 02:28 AM   #37
mikeroephonics
Human being with feelings
 
mikeroephonics's Avatar
 
Join Date: Nov 2006
Posts: 2,533
Default

+1
I use MIDI a lot. This stuff can speed things along!
__________________
Please check out these MIDI requests: http://forum.cockos.com/showthread.php?t=103192
Thanks.
mikeroephonics is offline   Reply With Quote
Old 10-30-2010, 08:49 AM   #38
Mr. Data
Human being with feelings
 
Mr. Data's Avatar
 
Join Date: Sep 2008
Location: Location
Posts: 5,563
Default

Thanks Arkima and Mikeroephonics.

Quote:
Originally Posted by arkima View Post
add: As mentioned elsewhere in this forum (I think) perhaps as dockable/undocckable to either the right (or left side?) of the ME window. Tabs somewhat similar to tabs in the Rea-plugs for main category type switching for quick navigation. Just a thought....
Good idea. Maybe clicking different tabs is an easier way to change pages than choosing them from a rolldown menu.
If it's possible I would like the ability to have more of these filters chainable as I wrote in post 29.

BTW: I didn't put it to the tracker yet, because there is too little response 'till now. Maybe I should rethink...



-Data

Last edited by Mr. Data; 10-30-2010 at 08:58 AM.
Mr. Data is offline   Reply With Quote
Old 10-30-2010, 11:07 AM   #39
hopi
Human being with feelings
 
hopi's Avatar
 
Join Date: Oct 2008
Location: Right Hear
Posts: 15,618
Default

Mr. DATA... indeed!!! you have certainly lived up to your name...hahahaha

But really... great ideas and great work on the presentation....

I think it should go into the FR, at the least to keep attention for it alive in the Cockos Minds...
__________________
...should be fixed for the next build... http://tinyurl.com/cr7o7yl
https://soundcloud.com/hopikiva
hopi is offline   Reply With Quote
Old 10-30-2010, 03:47 PM   #40
Mr. Data
Human being with feelings
 
Mr. Data's Avatar
 
Join Date: Sep 2008
Location: Location
Posts: 5,563
Default

Thanks Hopi!

To keep the attention for this alive is really a good point to put it in the FR tracker even with that few replies. And there it is: http://forum.cockos.com/project.php?issueid=3043




-Data
Mr. Data is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -7. The time now is 12:47 PM.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.