Go Back   Cockos Incorporated Forums > REAPER Forums > ReaScript, JSFX, REAPER Plug-in Extensions, Developer Forum

Reply
 
Thread Tools Display Modes
Old 02-09-2016, 03:43 PM   #1
Talagan
Human being with feelings
 
Join Date: Feb 2016
Location: Paris / France
Posts: 293
Default [JSFX] MIDI CC Mapper X [Advanced MIDI filter/router/response curve tweaker and more]

This is the official thread for the Midi CC Mapper X JSFX .

The current version is 5.3.1 (2024, January the 29th) and it looks like this :



MIDI CC Mapper X is a fully-featured MIDI middleware (a midilware ?) that stands as an intermediary in your FX chain, and appears as a control panel where you can organize and modify the real time feel and behaviour of your MIDI controls ; routing, filtering, response curve tweaking, keyboard splitting, transposing and more.

Originally, it is an extended version of the original plugin called "MIDI CC Mapper". But it has grown in features with time.

A more exhaustive list of features :
  • Tweak CC (or Channel Pressure) / Pitch Bend / Keyboard Velocity / Poly After Touch response curves :
    • By using predefined curves, some of them being parametric
    • By pen-drawing/prototyping custom curves
    • By smoothing the current curve
    • By restricting the range of values of your curve
    • By extending the predefined curves with your own sets of functions (through lib files)
    • The current curve can be exported and reused in your own sets
  • Morph the response curves between a starting curve and an ending curve, with a morphing parameter
    • The morphing parameter can be automated
    • An auto-emit option is available to continuously fill the gaps with MIDI events when the morphing parameter changes
  • Split/drop/channel re-route keyboard keys
  • Transpose keyboard keys
  • Re-route CCs / CP
  • Re-route CC channels
  • Channel re-route/drop CCs / CP / Pitch Bend / Velocity / Poly After Touch conditionally based on input/output values
  • Pass through initial unmodified events (and act as a splitter)
  • Handle High-Res input and Output for the CCs (CC/CC+32) and Keyboard velocity (CC#88 format).
  • Channel pressure (aka global AfterTouch) is treated as any other CC so that the conversion between Global AT <> CC is done seamlessly.

It has now basic support for REAPER Midi Buses (it can be used on all buses at a time, or layered on one MIDI Bus, and it can be rerouted).

                            

Installation / Update instructions

Current version is available through ReaPack, from the official ReaTeam/JSFX repo.
It is now the only advised way of installing MIDI CC Mapper X since it comes with a lot of data files.
Be sure to update without having any project open to avoid problems.



Obsolete version (v2) : https://stash.reaper.fm/28845/MIDI CC Mapper X
Obsolete version (v1) : https://stash.reaper.fm/26552/MIDI CC Mapper X


                            

Donation

If you like MIDI CC Mapper X and want to donate to support the development, you can donate here :



Thanks a lot for your support !

                            

Documentation

Here's an attempt of User Guide :

MIDI CC Mapper X 5.3 User Guide
MIDI CC Mapper X 5.2 User Guide
MIDI CC Mapper X 5.1 User Guide
MIDI CC Mapper X 5.0 User Guide
MIDI CC Mapper X 4.3 User Guide
MIDI CC Mapper X 4.3 User Guide
MIDI CC Mapper X 4.2 User Guide
MIDI CC Mapper X 4.1 User Guide


Customizing the curve library

The curve library is customizable. You can add/remove sets and curves and rearrange curve tabs. You can also export a curve from the UI to a file that you can reintegrate in the library.

To perform those advanced operations, an independent manual is located in the Data folder after installation, here :
<RESOURCE>/Data/talagan_MIDI CC Mapper X/README.md
                            

Screenshots



Curve morphing in action during CC activity.



Value-based conditional filtering/routing

                            

Changelog (from newer to older) :

V 5.3.1
  • Bug Fix : Note OFF events with non-zero velocities should make keypress feedback indicator disappear
V 5.3
  • Bug Fix : Note OFF velocities are not forced to zero anymore, but left intact
  • Feature : Made the circ family parametric, with varying radius
  • Feature : Added channel info on the keyboard indicator when playing MIDI notes
  • Feature : Added x,y position display when free hand drawing
  • Feature : Added xmirror, ymirror curve buttons
  • Cosmetics : Reworked drawing toolbar buttons with xpm icons (pen, smooth, copy, paste)
  • Cosmetics : Added tooltips on drawing toolbar buttons
  • Cosmetics : Added pen mouse cursor when free hand drawing
V 5.2
  • Feature : Added conditional filtering/routing for velocity.
  • Feature : Added "follow Note ON" option for Poly AT conditional filtering/routing.
V 5.1
  • Feature : Added conditional channel dropping/routing for CCs, CP, Pitch Bend and Poly AT.
  • Hot fix : Pitch Bend : Display limits between 0..8191 instead of 0..127
  • Bug fix : Poly AT widget disabled but with passthrough on would produce unnecessary events
  • Hot fix : the drawing of the result curve when morphing would glitch on the first point (one frame late)
V 5.0
  • Added curve morphing with automation for each control
  • Added auto-emit MIDI events for automated morphed curves
  • Relaxed transposition constraints on octavas (allow +/- 8 instead of +/- 2)
  • Added call to freembuf to reduce memory footprint
V 4.3.1
  • Added info notice in AfterTouch widgets to warn about the existence of the Channel Pressure virtual CC#128
V 4.3
  • Moved HighRes MIDI input option from global settings to per-control setting
  • Reworked HighRes MIDI CC input with one-event-forward lookup for LSB, and output with MSB/LSB order
  • Reworked pitch bend MSB/LSB calculations to fix corner cases
  • Added pitch bend reverse button
V 4.2
  • Default value for keyboard ranges transposition is now ON instead of OFF (it feels more logical in the main flow)
  • Added pass through option per control to keep original events and allow event duplication
V 4.1
  • Reworked Channel Pressure (breaking change) : treat Channel Pressure as Virtual CC#128 in the UI to allow painless CC<>CP conversion.
V 4.0
  • Reworked keyboard splitting : up to five ranges may be defined, each with its own routing, transpose parameters, velocity curve, after touch curve
  • Added color blind highlighting
  • Added support for Pitch Bend (symmetrical)
  • Added support for After Touch
  • Added support for Channel Pressure
  • Added "firewall" params accordingly
  • Added copy/paste curve
  • Minor bug fixes
V 3.6
  • Added MIDI Bus routing support as global setting.
V 3.5
  • Function library system : functions are stored in a function lib with sets that are extensible
  • Parametric sets : some sets are parametric, they can be used to generate an infinite number of curves
  • User sets : the user can now import her/his own curves in the library
  • Function export : MIDI CC Mapper X is now shipped with a script that exports the current curve
  • Added support for all notes within the MIDI range (0-127).
  • Bug fix for notes that could be transposed outside of midi range.
V 3.4
  • Skipped / Unreleased.
V 3.3
  • Fix : HighRes midi velocity was not properly handled for MSB 1, LSB 0.
  • Fix : HighRes midi velocity LSB was not sent on the proper CC (#88).
  • Added a "pen" button to trigger pen mode, to avoid accidental clicks on the curve
  • Added channel routing options for notes and ccs.
  • Added firewall option for unrouted notes.
  • Since red keys may now be kept due to channel re-routing, added an option to select what keys are transposed (All/Green/Red)
  • Since red keys may now be kept due to channel re-routing, added an option to select what keys are affected by the velocity control (All/Green/Red)
  • Added curve min/max behaviours : the user can now set some min/max limits on the curve, so that the curve is clamped between those bounds. Predefined curves will be adapted to that range and pen drawing will be restricted to that range too.
  • And a bit of source code cleaning.
V3.2
  • Added theme system, with two themes, Dark and Light.
  • Reworked contrasts on Dark Theme.
  • Bug fix : red curve feedback circle was a bit shifted if the CC was set to High Res.
V3.1c
  • Fixed bug introduced with transposition, notes were shifted by default.
  • First release through ReaPack.
V3.1b
  • Fixed bug introduced in 3.1a, notes would have velocity at zero if the velocity curve was not enabled.
V3.1a
  • Added global settings pannel
  • Added special control for adjusting the keyboard velocity curve
  • Added global param to enable High-Res midi input (for input CC#0-31/32-63 and velocity with CC#88 norm) (default: off).
  • Added per-control param to enable High-Res midi output (for output CC#0-31/32-63 and velocity with CC#88 norm) (default: off).
  • Reworked UI to indicate High-Res midi behaviors.
  • Added keyboard transpose options (enable/disable, 8vi, semi tones)
  • Added "Drop unrouted CC messages" option (default: off).
V3
  • Added Keyboard Filtering by key
  • Added "Copy Src" button
  • Bug Fix : faders realtime feedback was not working
  • Simplified the bottom of the interface
  • Clarified enable/disable buttons
  • Enhanced mouse events management to avoid accidental clicks

                            

Original post, for archiving purposes

Hello everyone!

Here's a small contribution for Reaper that I've developed a few days ago. I've just discovered that exceptional DAW and spent hours in a row toying with all its features and that was pure pleasure!

But at one stage there was something that I was missing which was the ability to fine tweak the response curves of my MIDI keyboard controls (especially the knobs), and despite my search on forums I could not find what I was looking for ; so maybe it's just me being clumsy doing my research, but anyway it was a good opportunity to test the JS SDK!

So here's a screenshot of the plugin :

As you can see, it's a modification of the Midi CC Mapper plugin that comes with Reaper. I removed the clamp feature because you can do it with my version.

The idea is simple, it's all about editing the response curve, either by choosing one in the "template library" on the right, or by drawing your own curve directly with the mouse (and smoothe afterwards it if you're bad at drawing). Or you can choose a curve in the library and draw some modifications. At start I wanted to put some bezier curve editing but it was more work so sorry for that. And at second glance, I'm happy with the draw / smoothe approach which is fun.

The plugin gives some real time feedback on the curve (the small red circle) to check if you what you hear is really what you want.

I've left the ability to remap the control to another one, I think that one's really cool when you don't want do modify the preset that you use in your VSTi for example.

Tell me if you find it useful / cool or whatever (or completely unuseful on the contrary), and if you see some bugs / things to improve. I've put quite a large bunch of templates in the "curve template library" but it can be augmented.

Thanks for reading!

Ben

Last edited by Talagan; 01-29-2024 at 02:38 PM. Reason: Updated documentation.
Talagan is offline   Reply With Quote
Old 02-09-2016, 03:53 PM   #2
DarkStar
Human being with feelings
 
DarkStar's Avatar
 
Join Date: May 2006
Location: Surrey, UK
Posts: 19,674
Default

Hello Talagan and welcome to these forums. You'll find many helpful people here and a lot of useful information. Make sure that you get the excellent User Guide too:
http://www.cockos.com/reaper/userguide.php

For a first post on the forum, that is exceptionally good. Well done. Of course, you'll get hooked on JSFX then EEL and LUA and be locked in for ever. .
__________________
DarkStar ... interesting, if true. . . . Inspired by ...

Last edited by DarkStar; 02-10-2016 at 03:29 AM.
DarkStar is offline   Reply With Quote
Old 02-09-2016, 06:08 PM   #3
X-Raym
Human being with feelings
 
X-Raym's Avatar
 
Join Date: Apr 2013
Location: France
Posts: 9,866
Default

That's why I called a first contributions.
Well done sir, thanks for sharing !
X-Raym is offline   Reply With Quote
Old 02-09-2016, 06:31 PM   #4
heda
Human being with feelings
 
heda's Avatar
 
Join Date: Jun 2012
Location: Spain
Posts: 7,215
Default

I wonder what can you do next if this is your first just discovered REAPER thing
Very good!
Thank you and welcome to this place
heda is offline   Reply With Quote
Old 02-10-2016, 04:15 AM   #5
Talagan
Human being with feelings
 
Join Date: Feb 2016
Location: Paris / France
Posts: 293
Default

Many thanks to you three for your warm welcoming! I'm glad that I could share my enjoyment on this plug-in. I'll definitely have a closer look at the hidden corners of the user guide, there seems to have plenty of treasures in there!

I hope I'll have plenty of other good ideas in a next future, but for the moment I've got to take care of my growing addiction
Talagan is offline   Reply With Quote
Old 02-10-2016, 08:22 AM   #6
Hubi
Human being with feelings
 
Join Date: Oct 2010
Posts: 83
Default

Hey there,

great work and welcome to the reaper community ^^

Have a look on my plug in: http://forum.cockos.com/showthread.php?t=121787
I´m currently working on a new version, that will support 14bit midi and a lot more...(huge steps are already done)
If you want we can combine some of our ideas to make it even better?

Oh and BTW, if you install reaper you`ll stick with it.... and if it does not do what you want, you modify it so welcome to this trap ^^

regards,
Hubi
Hubi is offline   Reply With Quote
Old 02-10-2016, 08:37 AM   #7
Ozman
Human being with feelings
 
Join Date: Feb 2015
Posts: 752
Default

This would be awesome with mpl's Mapping Panel (http://forum.cockos.com/showthread.php?t=170044), when it comes to the curves of Parameter modulation.
Ozman is offline   Reply With Quote
Old 02-10-2016, 11:46 AM   #8
J Reverb
Human being with feelings
 
Join Date: Jul 2009
Posts: 1,071
Default

lovely work !
J Reverb is offline   Reply With Quote
Old 02-10-2016, 12:31 PM   #9
Sju
Human being with feelings
 
Join Date: Jun 2015
Posts: 685
Default

Seeing this kind of stuff developed by the community really underlines that Justin & co. made the right decision with the open-ended philosophy of Reaper. So much talent out there; just give them the right tools and everyone will benefit.

Thanks for sharing and welcome!
Sju is offline   Reply With Quote
Old 02-10-2016, 03:52 PM   #10
casrya
Human being with feelings
 
Join Date: Dec 2013
Location: Melbourne, Australia
Posts: 96
Default

Nice one .. thanks
casrya is offline   Reply With Quote
Old 11-14-2016, 02:20 PM   #11
GalbE
Human being with feelings
 
GalbE's Avatar
 
Join Date: Jun 2015
Location: Netherlands
Posts: 23
Default Great work!

That was just what i was looking for. I use a wind controller and want to control the volume and filter of my VST's within a limited range with CC2.
__________________
Ga^l^bE
GalbE is offline   Reply With Quote
Old 11-14-2016, 03:53 PM   #12
ijijn
Human being with feelings
 
ijijn's Avatar
 
Join Date: Apr 2012
Location: Christchurch, New Zealand
Posts: 482
Default

Haha, wow, I love this!
ijijn is offline   Reply With Quote
Old 11-15-2016, 02:55 AM   #13
Talagan
Human being with feelings
 
Join Date: Feb 2016
Location: Paris / France
Posts: 293
Default

Hi all and thank you for your kind comments!

Receiving an email notice for your posts in this thread has reminded me that I had a new version cooking before being interrupted brutally by a big project earlier in the year. Sorry for not having published it!

Here it is :


The new features are :

- Multiple control mangagement (enable up to 35 controls among : 1 wheel, 4 pedals, 10 sliders, 10 knobs, 10 pads). The difference between controls is mainly graphical to help keyboardists find quickly what matches what physically.
- Control 'tagging' with labels and descriptions : same purpose.
- CC Learn to target easily the phisical control you want to tweak.

You can download it here : https://stash.reaper.fm/28845/MIDI%20CC%20Mapper%20X

I'd like to add 'keyboard filtering by key' to make it complete, so that we can enable/disable some pannel of midi notes for a midi instrument. By using two different active tracks in Reaper controlled at the same time, it would allow to easily configure dual/split instruments and more. Hope I'll find time for this!

Cheers,
Ben

Last edited by Talagan; 11-15-2016 at 03:19 AM.
Talagan is offline   Reply With Quote
Old 11-15-2016, 03:45 AM   #14
X-Raym
Human being with feelings
 
X-Raym's Avatar
 
Join Date: Apr 2013
Location: France
Posts: 9,866
Default

it looks very good, congrats ! and thx for sharing :P
X-Raym is offline   Reply With Quote
Old 12-04-2016, 10:24 AM   #15
Teo Oliver
Human being with feelings
 
Join Date: Sep 2015
Posts: 40
Default Real Time Play with CC mapping?

I'm trying to map my Hold Pedal to ModWheel. (It is CC capable).

The problem is i can't use it in real time, i mean, I'm trying to play my keyboard, and use the pedal as it was a Modwheel, but the plugin only seems to recognize de mapping after the CC lane is recorded.

Is there any way to make it work before it's recorded (monitor input)? So i can play and listen to what I'm playing.

Thank you very much.

Teo
Teo Oliver is offline   Reply With Quote
Old 12-05-2016, 04:14 AM   #16
Talagan
Human being with feelings
 
Join Date: Feb 2016
Location: Paris / France
Posts: 293
Default

Quote:
Originally Posted by TonE

Are you sure you toyed with ALL its features?
I'm sure I haven't! That was just a manner of speaking... or maybe my english which is not flawless! Reaper abilities are of course, merely infinite. Reapack is a great project and a great idea, I already had a glance at it but haven't had the time to explore it more in depth.

Quote:
Originally Posted by Teo Olivier

I'm trying to map my Hold Pedal to ModWheel. (It is CC capable).

The problem is i can't use it in real time, i mean, I'm trying to play my keyboard, and use the pedal as it was a Modwheel, but the plugin only seems to recognize de mapping after the CC lane is recorded.

Is there any way to make it work before it's recorded (monitor input)? So i can play and listen to what I'm playing.
Hi Teo, could you describe more precisely what you're trying to achieve and how you've configured your track / plugins ?

Ben
Talagan is offline   Reply With Quote
Old 12-05-2016, 07:28 AM   #17
Teo Oliver
Human being with feelings
 
Join Date: Sep 2015
Posts: 40
Default

Hello, Talagan, thanks for the reply.

I have a digital piano without the wheels for Mod and Pitch, or any other button / fader, just the keys, but I'm doing a lot of orchestral stuff. My pedal has the ability to send CC, so I think for instruments like Strings and Brass, I do not need the Hold Pedal, so I could map it to CC01, or CC11, or whatever else I might need.

The problem is that when I do this, I can not play and listen in RealTime, but after I recorded Midi, the plugin understand the mapping and reconize the new mapping CC.

My goal is to use the pedal and the keyboard, as it was a controller with the wheels.

I've attached some photos of what I'm doing. (I tried with Midi CC Mapper X and the regular one.)

Thank you very much for the attention,

Best regards.
Attached Images
File Type: jpg Screen Shot 2016-12-05 at 2_Fotor_2.jpg (48.3 KB, 827 views)
File Type: jpg Screen Shot 2016-12-05 at 2_Fotor.jpg (23.7 KB, 1145 views)
Teo Oliver is offline   Reply With Quote
Old 12-05-2016, 08:02 AM   #18
Talagan
Human being with feelings
 
Join Date: Feb 2016
Location: Paris / France
Posts: 293
Default

Hello Teo,

If everything goes well, you should have real time feedback so something is probably missing somewhere. I have a few questions so that I can help you :

- I see you have have tried to use the simple plugin shipped with reaper (Midi CC Mapper). Can you achieve what you want to do with that simple version?

- Is your pedal plugged into your keyboard, or is it an independent device (plugged directly to your computer - by USB etc)? (This question aims to identify if you are using only one - or two midi sources).

- On your screenshot, the CC learn button is 'on'. It should turn back to grey 'off' as soon as you move a control from your controller (knob, slider, etc) and the 'Midi CC Src' number should change accordingly to that control you have moved. The 'Midi CC Dst' is the output midi mapping which goes to your Kontakt VST. I don't know well Kontakt but I think it should itself be configured to map that 'Midi CC Dst' control number as input for one parameter (but, probably, no configuration should be needed for the mod wheel).

- When moving the 'Midi CC Src' control (knob, pedal, slider), you should have real time feedback on the curve. The small red circle should move, indicating the current value of the control. Is it the case for you ? (Just FYI, I have myself a sustain pedal on my midi keyboard ; it is detected as control 64. It sends only two midi values - 0 or max - so the red circle si either at the bottom left of the curve or at the top right and I do not get intermediary values).

Hope we'll solve your problem!
Talagan is offline   Reply With Quote
Old 12-06-2016, 12:39 PM   #19
Teo Oliver
Human being with feelings
 
Join Date: Sep 2015
Posts: 40
Default

Here's a linh with a Gif so you can see how i am doing this, it works just fine, but only after a recorded de midi CC. Still no real time feedback. (Maybe something regarding the inputs? Plugin Order? Midi channels?)

I tried the regular JS Midi Mapper that comes with Reaper as well, but still nothing. I'm probably doing something wrong.

https://drive.google.com/file/d/0BxT...ew?usp=sharing

The pedal is plugged in the digital Piano, it's a Roland FP-30, and the pedal a DP-10 (https://www.roland.com/global/products/dp-10/), it has a switch to abylitate Continuous data.

TonE: Thanks for the advise, i didn't know about that one, will try it.
Teo Oliver is offline   Reply With Quote
Old 12-07-2016, 03:00 AM   #20
Talagan
Human being with feelings
 
Join Date: Feb 2016
Location: Paris / France
Posts: 293
Default

Hello Teo,

It's probably not linked to the plugin, but I honestly don't have any idea yet. It should be as simple as :

1 - Track > Insert virtual instrument on new track (will prevent from forgetting some config steps)
2 - Chose your VST/AU instrument
3 - In the filter window, add CC Mapper X and drag it above the VST/AU.
4 - In CC Mapper X, click on the mod wheel, click on CC learn, press the pedal - this will map the pedal to the mod wheel.

By doing these steps the track should be in the good state to record, have real time feedback & so on. Maybe Kontakt needs additional steps? You can try these same steps with another simpler VST to check your installation (e.g. Synth1 : Synth1). The default instrument handles the mod wheel so you can map your pedal to the mod wheel and see what happens, your pedal should trigger the modulation.

PS : Are you sure you have the 'record monitoring' button enabled for the track ?

Last edited by Talagan; 12-07-2016 at 06:50 AM.
Talagan is offline   Reply With Quote
Old 12-07-2016, 08:24 AM   #21
LugNut
Human being with feelings
 
Join Date: Jun 2013
Location: So Florida
Posts: 1,424
Default

Hi,
Thanks for this!

In regard to teo, could it be he's trying to control a continuous control...mod...with a momementary switch? Hold?
Unless he wants just on/off.
LugNut is offline   Reply With Quote
Old 12-07-2016, 09:42 AM   #22
ashcat_lt
Human being with feelings
 
Join Date: Dec 2012
Posts: 7,264
Default

Two - None of your pictures show us what's going on with the track itself. It will need to be armed to record and with monitoring enabled. If you play notes on the piano, do you hear it playing back?
ashcat_lt is offline   Reply With Quote
Old 12-08-2016, 07:09 AM   #23
Teo Oliver
Human being with feelings
 
Join Date: Sep 2015
Posts: 40
Default

Hi!

I don't know why, but today everything just worked!!!! Thank you very much for all your help, I probably was doing something wrong, but today, i tried again, and all worked perfectly fine!

Again, thank you all very much to all the help!
Teo Oliver is offline   Reply With Quote
Old 12-08-2016, 09:44 AM   #24
Talagan
Human being with feelings
 
Join Date: Feb 2016
Location: Paris / France
Posts: 293
Default

Hi Teo,

Good to know your problem's solved! Don't hesitate to come back if you make use of the plugin and feel like there're some bugs or things that are missing, or for any other feedback. Happy composing!

Thank you TonE, ashcat_lt and LugNut for your time and help!

Ben
Talagan is offline   Reply With Quote
Old 01-04-2017, 06:05 AM   #25
Proximac
Human being with feelings
 
Join Date: Jan 2017
Posts: 3
Default Nice but how do you scale your MIDI CC with VST parameters?

Hi Talagan,

I love it but how can you scale your MIDI CC with VST parameters if you cannot enter a low value? Let's say I don't want to start with a MIDI CC=0 but a MIDI CC=16 instead. How do I do that?

Last edited by Proximac; 01-04-2017 at 06:12 AM.
Proximac is offline   Reply With Quote
Old 01-04-2017, 07:39 AM   #26
Talagan
Human being with feelings
 
Join Date: Feb 2016
Location: Paris / France
Posts: 293
Default

Hi Proximac,

Thanks for your comment! The curve may not start at CC=0 and finish at CC=127, but can use all intermediary values and have any shape as long as it is a function from [0..127] to [0..127], just draw any curve with your mouse as if it was a pen, not starting at 0, but higher and it should be ok (see attachement).

However, since my first purpose was to have an analogous, continuous behavior with a quick draw method, there is no 'fine-grain' control of the values of the curve with a precise CC value input, and there's no precise CC value feedback. So if you try to aim, say CC=16 precisely, not 17, not 15, it may be a bit hard.

Does this answer your question, do you have any concrete example where that kind of fine tuning (almost programmatical) would be useful? If so, I'd be happy to add some tools to achieve that to my todo list!

Ben
Attached Images
File Type: png Curve Not Starting at CC0.png (8.0 KB, 726 views)

Last edited by Talagan; 01-04-2017 at 07:49 AM.
Talagan is offline   Reply With Quote
Old 01-11-2017, 09:31 AM   #27
G-Sun
Human being with feelings
 
G-Sun's Avatar
 
Join Date: May 2010
Location: Norway
Posts: 7,318
Default

Thanks a lot!

I can't get the updated version to work,
and the old one shows up with missing graphics.

v2: How do I sett pass through to "No"?
__________________
Reaper x64, win 11
Composer, text-writer, producer
Bandcamp
G-Sun is offline   Reply With Quote
Old 06-13-2019, 11:11 AM   #28
Talagan
Human being with feelings
 
Join Date: Feb 2016
Location: Paris / France
Posts: 293
Default

Hey everyone,

These last days I've been dusted this plugin, and here's the V3.



A long time wish was to add the ability to filter out some keys from the MIDI controller. The aim is to be able to achieve keyboard split/dual/etc between multiple tracks. To enable the filter, simply enable the top part of the plugin with the button and colorize in red or green the keys you want to silence or pass to the rest of the chain.

As well, there are a few other things that have changed, here's a changelog for V3 :

- Added Keyboard Filtering by key
- Added "Copy Src" button
- Bug Fix : faders realtime feedback was not working
- Simplified the bottom of the interface
- Clarified enable/disable buttons
- Enhanced mouse events management to avoid accidental clicks

You can download the plugin from the stash here : https://stash.reaper.fm/36552/MIDI%20CC%20Mapper%20X

@G-Sun : I'm completely sorry I've missed your answer! It's been a long while, I'm not even sure I understand your questions now - might it be possible you've messed up between my plugin and the original one?

Ben

Last edited by Talagan; 06-13-2019 at 11:22 AM.
Talagan is offline   Reply With Quote
Old 06-14-2019, 02:44 PM   #29
Broojacker
Human being with feelings
 
Join Date: Apr 2016
Location: Ukraine
Posts: 49
Default

Very usfull plugin and nice GUI!

It would be really cool if you added velocity and transpose. One MIDI JS for all needs, this is what I dream.

Thanks!
Broojacker is offline   Reply With Quote
Old 06-15-2019, 01:26 AM   #30
Ivannn Bennnettt
Human being with feelings
 
Join Date: Feb 2017
Posts: 305
Default

Thank you!
Ivannn Bennnettt is offline   Reply With Quote
Old 06-15-2019, 07:20 PM   #31
hopi
Human being with feelings
 
hopi's Avatar
 
Join Date: Oct 2008
Location: Right Hear
Posts: 15,618
Default

very nice... thanks much!

a little question please... is there a relationship between active keyboard keys and the cc controls?

or do the cc controls work regardless of any keys being not active or active????
__________________
...should be fixed for the next build... http://tinyurl.com/cr7o7yl
https://soundcloud.com/hopikiva
hopi is offline   Reply With Quote
Old 06-16-2019, 12:06 AM   #32
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,634
Default

Is the CC-message output of Mapper (settable to) high h resolution Midi ?
This makes a lot of sense when curves / functions are applied to Midi CC values and hence the steepness easily is far below 1, resulting in multiple different input values producing the same output, producing information loss.
Unfortunately many plugins don't adhere to high resolution CC, but some do, and any CC aware functionality in Reaper does, as well.
-Micjhael
mschnell is offline   Reply With Quote
Old 06-16-2019, 06:13 AM   #33
Talagan
Human being with feelings
 
Join Date: Feb 2016
Location: Paris / France
Posts: 293
Default

Thanks to all of you for your answers and comments!

Quote:
Originally Posted by Broojacker
It would be really cool if you added velocity and transpose. One MIDI JS for all needs, this is what I dream.
I'll look into this next week, I don't see any problem in adding these cool features (except a bit of thinking on the UI to make this compact and natural to use).

Quote:
Originally Posted by hopi
a little question please... is there a relationship between active keyboard keys and the cc controls?
They are unrelated. The top part of the UI is used to keep or filter out some keys, the bottom part of the UI is used to declare custom routings for MIDI CCs and modify their response curve. The UI (wheel, pads, knobs, faders, etc) do not basically correspond to real CCs, you just route what you want to what you want, and it's up to you to chose what the CC will look like in the UI (a knob, a fader, a pad), although I believe that everyone will try to make the UI geography look like their real controller :-) Maybe as the plugin is getting more complex, I should start to write a small doc.

Quote:
Originally Posted by mschnell
Is the CC-message output of Mapper (settable to) high h resolution Midi ?
I'll look into this next week. My MIDI controller (a humble yamaha MM6) is not high res, so it's difficult for me to test, and I'll have to dig in some doc to make sure I don't make mistakes in implementing this. I don't think it's useful for the plugin to have a higher resolution than it already has : it maps a space of 128 values to 128 other values and it's probably highly sufficient for a user defined response curve, but to make this work with high res midi, I'll have to either perform linear interpolation on the response curve (simplest solution), or spline interpolation. Edit: I think I had read your question too quickly when answering, it indeed makes a lot of sense to be able to have a high res CC **output**, independently of the resolution of the controller, for the precise steepness reasons you've evoked!

Ben

Last edited by Talagan; 06-16-2019 at 07:12 AM.
Talagan is offline   Reply With Quote
Old 06-16-2019, 02:22 PM   #34
Broojacker
Human being with feelings
 
Join Date: Apr 2016
Location: Ukraine
Posts: 49
Default

Quote:
Originally Posted by Talagan View Post
I don't see any problem in adding these cool features (except a bit of thinking on the UI to make this compact and natural to use).
Great! Transpose - one mouse wheel scroll for one semitone and double click for keyboard input.

Maybe it's help:
Attached Images
File Type: jpg Midi x.jpg (55.0 KB, 761 views)
Broojacker is offline   Reply With Quote
Old 06-16-2019, 02:35 PM   #35
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,634
Default

Quote:
Originally Posted by Talagan View Post
My MIDI controller (a humble yamaha MM6) is not high res, so it's difficult for me to test,
I meant high res for output of the JSFX. Of course high res for input would be nice as well, but less "urgent".

Thanks,
-Michael
mschnell is offline   Reply With Quote
Old 06-17-2019, 11:57 AM   #36
Talagan
Human being with feelings
 
Join Date: Feb 2016
Location: Paris / France
Posts: 293
Default

Quote:
Originally Posted by Broojacker
Great! Transpose - one mouse wheel scroll for one semitone and double click for keyboard input.
Thanks! This is how I've finally done it.



I felt it was more natural to put the transpose stuff right next to the keyboard, and I also like the 8va option (useful for smaller controllers). As well, for velocity, I've created a new virtual control so that it's compliant with the rest of the UI. Like the rest, it can be enabled/disabled, and has the same curve edit features. I'll release this after having implemented the high res midi.

Quote:
Originally Posted by mschnell
I meant high res for output of the JSFX. Of course high res for input would be nice as well, but less "urgent".
Yes, very sorry, I had read you too quickly.

It should not be a problem to make the calculations for high res midi : the plugin stores (under the hood) 128 user values for each curve. These values are *floating* values, calculated from the selected curves OR from the smoothing algorithm. The only values that could be pure integers are those resulting of a pen draw (without a call to smoothe) : the drawing zone has a double resolution so the possible values are limited to [0,0.5,1,1.5,...,126.5,127]. So given these key values for a curve, it's easy to make a precise interpolation for high res midi.

However, I've found it's not that easy to get a grasp on a good documentation on high res midi! From what I've read, the note velocity LSB needs to be sent on CC88, CCs from 0 to 31 have their LSB complements between 32 and 63 BUT I don't really understand how it should be done and if it's possible with other controls like 70 to 74 for example (attack / release / cutoff and so on). Anyone reading this could point me to a complete doc on these corner cases? Also, I'm wondering if I shouldn't restrict the src and dst CC numbers to a predefined set - it probably does not make sense to be able to reroute and edit the curves of all CC from 0 to 127, does it?

Ben

Last edited by Talagan; 06-17-2019 at 12:05 PM.
Talagan is offline   Reply With Quote
Old 06-17-2019, 12:27 PM   #37
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,634
Default

Sending high resolution CC:

CC #+0 is the high 7 bits, CC #+32 is the low 7 bits.

You need to remember each CC # and CC #+32 you sent

You calculate a 14 bit value to be output.

If the high 7 Bits differ from the previously sent CC # message, you send it.
If the low 7 Bits differ from the previously sent CC #+32 message, you send it.

Happily this is compatible with a receiver only receiving CC # and ignoring CC #+32; and it sends only the necessary (i.e. changed) bits.

And you can use ReaControl Midi to check the result, as it's fades adhere to High Resolution CC.

-Michael

Last edited by mschnell; 06-17-2019 at 09:52 PM.
mschnell is offline   Reply With Quote
Old 06-17-2019, 12:40 PM   #38
Talagan
Human being with feelings
 
Join Date: Feb 2016
Location: Paris / France
Posts: 293
Default

Thanks for these detailed pieces of info! This was more or less what I had understood. However, I'm not sure it works for CCs outside of the 0-31 range. My question was especially pointing to CCs around 70,71,72, etc... it does not look like these controls can be used in high res, right?
Talagan is offline   Reply With Quote
Old 06-17-2019, 09:55 PM   #39
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,634
Default

Supposedly this is true (see the List ReaControlMidi provides when enabling a slider in non-Raw mode).

There also is a new midi specification for sending very high resolution with a huge count of different "CC"s, but AFAIK, this is not very commonly in us.

-Michael

Last edited by mschnell; 06-18-2019 at 05:47 AM.
mschnell is offline   Reply With Quote
Old 06-18-2019, 01:50 AM   #40
Broojacker
Human being with feelings
 
Join Date: Apr 2016
Location: Ukraine
Posts: 49
Default

Excellent! Looking forward to v3.1
Thanks for your work!
Broojacker 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 11:47 PM.


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