Go Back   Cockos Incorporated Forums > REAPER Forums > REAPER Bug Reports

Reply
 
Thread Tools Display Modes
Old 08-13-2009, 04:41 AM   #1
DarkStar
Human being with feelings
 
DarkStar's Avatar
 
Join Date: May 2006
Location: Surrey, UK
Posts: 19,681
Default Recording MIDI-Learnt CC messages

This is "for discussion" at the moment.
-------------------------------------------------------

Question: Should MIDI CC messages which are mapped to an Envelope be recorded in a MIDI Clip as well as being Written to the Envelope?

Steps to reproduce:
-- add a VSTi to an empty track,
-- display a VSTi parameter envelope (and TCP control),
-- MIDI Learn a MIDI CC message # for that parameter, by twiddling a keyboard controller knob or slider,
-- Arm the Track for Recording,
-- set the Automation Mode to Write,
-- click Record,
-- play some notes and twiddle the keyboard controller knob or slider.

Result:

[img]http://img12.**************/img12/7148/r306dsenvccs01.png[/img]

-- the MIDI CC messages are used to write the Envelope AND are recorded in the MIDI Clip, along with the notes.

This does not seem quite right to me
-- yes, I could delete the MIDI CC from the clip
-- but if the MIDI CC is intercepted and used for the Automation Envelope, then they should be discarded and not captured in the MIDI Clip,
-- or are there advantages in recoridng the CC messages?
-- in some cases, the Envelope could control one parameter and the CC messages in the Clip could control another parameter, if that functionality is supported by the VSTi. In my example, using CC72, I mapped that CC# to an Amp Attack parameter too - so my single keyboard controller slider controlled two parameters.

Your thoughts and comments, please. (I may raise this in the Issue Tracker, but I don't know what it is yet.)
__________________
DarkStar ... interesting, if true. . . . Inspired by ...
DarkStar is online now   Reply With Quote
Old 08-19-2009, 03:03 PM   #2
Jeffos
Mortal
 
Jeffos's Avatar
 
Join Date: Dec 2008
Location: France
Posts: 1,969
Default

for me, it's fine: since I "record" or "write" something, I expect any data present at the input to be recorded/writen as it comes.
Jeffos is offline   Reply With Quote
Old 08-29-2009, 01:08 AM   #3
DarkStar
Human being with feelings
 
DarkStar's Avatar
 
Join Date: May 2006
Location: Surrey, UK
Posts: 19,681
Default

... but the incoming MIDI CC messages from the keyboard controller are used to create the Automation envelope points AND are recorded as MIDI CC in the MIDI Clip (so they will be sent to the FX Chain on playback.

Related thread:
http://forum.cockos.com/showthread.php?t=41816
__________________
DarkStar ... interesting, if true. . . . Inspired by ...
DarkStar is online now   Reply With Quote
Old 08-29-2009, 01:22 AM   #4
PiaKraft
Human being with feelings
 
Join Date: Jul 2009
Posts: 44
Default

My arguments:

happens also during playback, not only recording

The input wasnt meant for the fx in the first place.

As explained in the orginal thread might cause problems with fx automated via midi cc's (e.g no host automation).

Unusual behaviour, no host I know passes automation cc through.

Does it have any benefits? I can't see any.
PiaKraft is offline   Reply With Quote
Old 12-03-2010, 02:16 AM   #5
DarkStar
Human being with feelings
 
DarkStar's Avatar
 
Join Date: May 2006
Location: Surrey, UK
Posts: 19,681
Default

Vote in the Issue Tracker:
http://forum.cockos.com/project.php?issueid=3106
__________________
DarkStar ... interesting, if true. . . . Inspired by ...
DarkStar is online now   Reply With Quote
Old 11-15-2012, 07:43 AM   #6
Reaktor:[Dave]
Human being with feelings
 
Reaktor:[Dave]'s Avatar
 
Join Date: Jun 2010
Location: Berlin
Posts: 563
Default

Any news on this one?
Reaktor:[Dave] is offline   Reply With Quote
Old 06-19-2013, 10:31 AM   #7
DarkStar
Human being with feelings
 
DarkStar's Avatar
 
Join Date: May 2006
Location: Surrey, UK
Posts: 19,681
Default

'Fraid not.


An Automation Preference would do it.

Quote:
Originally Posted by Jeffos View Post
for me, it's fine: since I "record" or "write" something, I expect any data present at the input to be recorded/written as it comes.
And if you wanted to record your playing while automating, a VSTi parameter or two?
__________________
DarkStar ... interesting, if true. . . . Inspired by ...

Last edited by DarkStar; 09-13-2013 at 07:44 AM.
DarkStar is online now   Reply With Quote
Old 09-13-2013, 10:04 AM   #8
Banned
Human being with feelings
 
Banned's Avatar
 
Join Date: Mar 2008
Location: Unwired (probably in the proximity of Amsterdam)
Posts: 4,868
Default

Quote:
Originally Posted by DarkStar View Post
-- or are there advantages in recoridng the CC messages?
Yes. MIDI CC# can easily be ported between applications and hardware sequencers. Automation can not. Also, be aware that the update frequency of automation of (VST 2.x / AU) plug-in parameters is determined by the audio buffer size. So I think the recorded MIDI data more accurately represents the recorded controller, at least in theory.
__________________
˙lɐd 'ʎɐʍ ƃuoɹʍ ǝɥʇ ǝɔıʌǝp ʇɐɥʇ ƃuıploɥ ǝɹ,noʎ
Banned is offline   Reply With Quote
Old 12-16-2013, 03:00 AM   #9
DarkStar
Human being with feelings
 
DarkStar's Avatar
 
Join Date: May 2006
Location: Surrey, UK
Posts: 19,681
Default

It's not just a problem during Recording. MIDI control is a problem too,:

Try this:
  • Insert a plug-in that implements its own MIDI Learn functionality (or has hard-coded MIDI CC assignments to controls). For example Synapse Audio's Dune or Dune CM.
  • Take one CC message, e.g. CC# 30. It is mapped to OSC 1 Waveform in Dune.
  • Display the Automation envelope for any other VSTi parameter and MIDI Learn it to MIDI CC# 30.
  • Set one of your keyboard controllers to send CC# 30 messages and twiddle the knob.

Results: both the OSC 1 Waveform and the VSTi parameter change.

So, the only way to use my keyboard controller with VSTis is
(a) understand what MIDI CC mapping is implemented in each plug-in,
(b) reprogram my keyboard for each plug-in.

Aaarrgh!

We NEED some more options.

------------------------------------------
Perhaps this should be a Feature Request?

Mechanisms to determine what to do with MIDI CC messages
(a) when they are mapped to an Automation Envelope;
(b) when they are received by a particular plug-in (separate from the existing plug-in 'MIDI input' choices, so that the plug-in can receive the Notes but not specified / all CC messages..
__________________
DarkStar ... interesting, if true. . . . Inspired by ...

Last edited by DarkStar; 12-16-2013 at 03:05 AM.
DarkStar is online now   Reply With Quote
Old 12-16-2013, 07:56 AM   #10
Ollie
Super Moderator (no feelings)
 
Ollie's Avatar
 
Join Date: Dec 2007
Location: On or near a dike
Posts: 9,836
Default

I can't think of a good automatic mechanism to deal with this in a generalized way. This is an intrinsic problem with "generic" MIDI controllers used for everything, as opposed by dedicated controllers for MIDI and HUI/automation, using different protocols or at least independent MIDI ports to avoid this.

First off, automation read/write status, track rec arm and the record button deal with most of it, you can already record automation and CC independently. The problem only really comes up when...

- you record automation and MIDI events simultaneously,

- or (in a less severe form) when the automated MIDI track is only armed for record (so the plug-in receives unwanted CC changes),

- or in particular when the 2 points above happen because you use automation as a substitute for CC lanes (because you can), which is IMHO not recommendable, in particular not with VSTi that have a fixed built-in CC mapping (IOW studying the MIDI implementation chart to keep things apart is particularly mandatory in that case). But I think you still need to have automation set to write mode and the track armed for recording and hit the record button to make this a problem.

Your manual options are simply to avoid these conditions, and generally keep the processes of CC data creation and automation apart.

Quote:
Originally Posted by DarkStar View Post
It's not just a problem during Recording. MIDI control is a problem too,
[...]
So, the only way to use my keyboard controller with VSTis is
(a) understand what MIDI CC mapping is implemented in each plug-
in,
Exactly. It has been this way forever.

Quote:
Originally Posted by DarkStar View Post
(b) reprogram my keyboard for each plug-in.
That's the reason why most controllers come with (factory-provided and user-writable) presets - dealing with the chaos of VSTi/MIDI hardware CC implementations alone is a major chore, no matter which way you're trying to address it. For a few popular VSTi the factory preset may suffice, but still you may want to change them - bang you're back to (a) dealing with manuals and implementation charts.

Again, that's an intrinsic problem of the technology and AFAIK the most advanced way to deal with this is adding an additional "abstraction layer" like Automap, which can merely save you re-programming your keyboard because someone else did that already, or make the process less tedious (because it has a GUI).

Quote:
Originally Posted by DarkStar View Post
We NEED some more options.
[...]
Mechanisms to determine what to do with MIDI CC messages
(a) when they are mapped to an Automation Envelope;
I think you mean something like "if an automation envelope has a CC# mapped to it, don't pass it to the plug-in". What if you need to write that particular CC# to a CC lane? The only thing coming into my mind now is "automatically unarm track when automation is switched to write mode" or "make rec arm and automation write mutually exclusive" for a somewhat automatic way to make this more foolproof.

Quote:
Originally Posted by DarkStar View Post
(b) when they are received by a particular plug-in (separate from the existing plug-in 'MIDI input' choices, so that the plug-in can receive the Notes but not specified / all CC messages..
Not sure I understood this, I don't think there's a way for a host to know/sense what CC# a plug-in is listening to, apart from presets.
Ollie is offline   Reply With Quote
Old 12-16-2013, 08:38 AM   #11
DarkStar
Human being with feelings
 
DarkStar's Avatar
 
Join Date: May 2006
Location: Surrey, UK
Posts: 19,681
Default

Forget recording for the moment.

In my scenario in post #9, MIDI CC #30 messages from my controller change the OSC1 waveform (as that is programmed within Dune) AND the VSTi parameter that I have mapped to CC# 30.

At the moment, to avoid this clash, I have to
(a) remember that Dune is programmed to respond to CC#30 (and 72 others!),
(b) not use any of those for automating any parameters or any plug-in if I have Dune in the project,
(c) do the equivalent for any other plug-in that has its own MIDI CC automation,
(d) repeatedly reprogram my keyboard controller.

IF CC messages that were used for Automation Envelopes were NOT kept in the MIDI data stream these problems would be resolved:
(a) In my scenario, only the Dune VSTi parameter would change, not the OSC1 waveform.
(b) if I removed that mapping of CC# 30 to the Dune VSTi parameter, then the messages would change only the Dune OSC1 waveform.
(c) if I mapped CC# 30 to a VSTi parameter of a completely different VST(i), then the messages would change that VST(i)'s parameter only and not affect Dune at all.

Yes, many keyboard controllers do come with writeable presets, but that is a complex workaround (and the Bulk download does not work here for some reason).

Quote:
I think you mean something like "if an automation envelope has a CC# mapped to it, don't pass it to the plug-in".
Exactly.
Quote:
What if you need to write that particular CC# to a CC lane? The only thing coming into my mind now is "automatically unarm track when automation is switched to write mode" or "make rec arm and automation write mutually exclusive" for a somewhat automatic way to make this more foolproof.
If I need those MIDI CC messages, then presumably I know that the VSTi will do something with them, and so should not assign that CC# to any Automation envelopes. (*1)

But that is why I suggested (unclearly) "(b) when they are received by a particular plug-in (separate from the existing plug-in 'MIDI input' choices, so that the plug-in can receive the Notes but not specified / all CC messages. "
On the plug-in's In/Out drop-down, an additional MIDI Input choice of "Notes", Notes + CCs" or "All MIDI" might do it. Agreed, this cannot be automated, so let me choose what the plug-in should receive.


------------------------
(*1) When a CC# number is "MIDI Learned" to an Automation Envelope, show that message's channel and number in the pop-up when I hover over the envelope's MIDI Learn button and in place of 'Learn ...' in the track's Automation window.

,, images dropped by ImageShack>>
From 2009:
[img]http://img101.**************/img101/9941/r314dslearntooltip.png[/img]
http://forum.cockos.com/project.php?issueid=1524

Originally requested in 2008:
[img]http://img217.**************/img217/3039/dslearnedccnb1.png[/img]
http://forum.cockos.com/showthread.php?t=24294
__________________
DarkStar ... interesting, if true. . . . Inspired by ...

Last edited by DarkStar; 08-23-2014 at 10:34 AM.
DarkStar is online now   Reply With Quote
Old 08-23-2014, 09:21 AM   #12
efflux
Human being with feelings
 
Join Date: Apr 2014
Location: UK
Posts: 86
Default

I'm bringing this thread back.

My scenario is this. I record plugin instruments in real time and use MIDI CC from hardware or an iPad. That all gets recorded as MIDI and CC shows up in lanes under the piano roll as part of the MIDI clip. However, when it comes to editing this, it is much easier if it's in the track automation. As described here, you can set that up to record the CC as automation in the track but it also records into the MIDI clip. Shouldn't we be able to somehow disable events like CC from recording into the MIDI clip but still go to automation? You can certainly redraw that info just in automation then delete it from the MIDI clip but that creates more work. Just as an example point, in Logic there is a command to move this info from MIDI clip to automation track. There could be that function.
efflux is offline   Reply With Quote
Old 01-23-2016, 04:40 AM   #13
aspiringSynthesisingAlch
Human being with feelings
 
Join Date: Feb 2014
Posts: 309
Default updates? FR?

Is there a feature request for this?? cause i'd vote!

suggestions include-

arm for recording (MIDI) vs arm for recording (MIDI & CC)

automation mode 'lane lock' (read-only, preventing overwrite of lane data with incoming cc info that may be mapped and intended for controlling another param)

move midi from clip to automation track (efflux's suggestion)
aspiringSynthesisingAlch is offline   Reply With Quote
Old 01-23-2016, 05:32 AM   #14
J Reverb
Human being with feelings
 
Join Date: Jul 2009
Posts: 1,071
Default

Quote:
move midi from clip to automation track (efflux's suggestion)
There's an action for this in the midi editor.
SWS/BR Convert selected CC events in active item to (shape) envelope points in selected envelope.
You have to have the midi editor open and run the action from there.
J Reverb is offline   Reply With Quote
Old 01-23-2016, 06:01 AM   #15
DarkStar
Human being with feelings
 
DarkStar's Avatar
 
Join Date: May 2006
Location: Surrey, UK
Posts: 19,681
Default

Workaround; see my reply here:
http://forum.cockos.com/showpost.php...&postcount=113

Any "MIDI CC eater" added as an input FX would do:

Code:
desc:midi CC eater

@init
  CC_MSG =11;
@slider

@block
while (
  midirecv(ts, msg1, msg23) ? (
    msg = (msg1 / 16) | 0;
    msg_num = msg23 & 127;
    !(msg == CC_MSG && msg_num < 120) ? midisend(ts, msg1, msg23);
    temp=1;
 ); 
);
__________________
DarkStar ... interesting, if true. . . . Inspired by ...
DarkStar is online now   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 04:58 AM.


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