Jump to content

Environment "Fader" values


m. Anodyne

Recommended Posts

Does anyone have any extensive references to plugin "Fader" usage? For example, Blue Cat mentions using it here:

 

https://www.bluecataudio.com/Tutorials/Tutorial_SideChain_LogicPro/

 

(the URL is a lie... this doesn't have anything to do with side chains as we normally know them)

 

Specifically, you can tell their plugin to output certain values as "Automation Output" which, apparently, Logic treats sorta like, but not exactly like, MIDI controller values. You can also tell their plugin to spit out actual MIDI controller values as a separate option.

 

Now, for something like a volume level, 127 values is probably plenty of resolution. But for frequency values? Not so much. 14 bits would probably be fine-ish. A 32-bit float would definitely do the trick with room to spare.

 

Anyways, for the sake of example, if I were to take the "Center Frequency" output from their "FreqAnalyst Pro" plugin and connect that to the input for Logic Pro's Channel EQ "Peak 2 Frequency" I would think that I could have a simple setup that would (basically) isolate the root frequency of a simple source signal. Burning the output of the plugin into an automation channel's values would also be a possibility.

 

I'm comfortably mucking about with the Enviroment, writing script, whatever. Getting an Audio Unit compiling is a bit of a pain in the ass, but also do-able. But the documentation for this part of Logic (the Filter values) feels pretty thin on the user side. I'll go spelunking in the AU dev docs now, but I figured I'd ask if this is familiar ground for anyone.

 

Why I would want to do this, or anything similar, is a different subject, entirely. Basically, I want to be able to connect existing and highly functional tools together in Logic to achieve results that aren't standard fare. Yes, I have a *nix background, lol.

 

FWIW, I'm currently using the demo version of that plugin to see if it fits my needs. It definitely does spit data out.

Link to comment
Share on other sites

Some interesting follow-up: If you open up Automation for a track with a BC analysis tool, it shows "OUT: xxx" for a bunch of the automation channel values. So, I picked "FreqAnalyst: OUT:Center Freq(1)", set it to Latch, and hit Record... I have the Classic Electric Piano instrument on that track, so that's what the signal source was. Logic recorded the changing values (not weirdly quantized or anything, either) that FA was spitting out.

 

Then I found this:

 

 

If you hold down Command when you pick a different automation value (like "Channel EQ: Peak 2 Frequency"), Logic will let you copy the automation values over to that.

 

Obviously, this would be a clunky AF workflow to actually use, but I thought it was progress, and I hadn't ever seen the automation value copy/paste stuff mentioned before.

Link to comment
Share on other sites

when you cable up a channel strip to a monitor in the environment you will be able to see what fader events are sent out from the channel strip.

 

Generally you will see that as you tweak knobs on plugins, you will see various fader events appear in the monitor. That's because every automatable plugin parameter, basically works like that and as you interact with it, it will send out the fader events over the cable to wherever you want to send it in the environment and of course if you want to use that to drive another plugin on another channel strip, you can definitely do that, but you'll probably have to use a transformer to convert the fader events to drive whatever you expect to respond to it on the other channel.

 

However, this is really taking what you as a user are manually changing on the source channel strip. If you have, for example, a frequency analysis plugin..you don't know whether that plugin actually outputs any "automation output". Apparently some of the BlueCatAudio ones do, that is good to know! But my experience has been generally that most plugins do not really output any automation stuff other then whatever you as a user are changing with your fingers in the UI. For example, an analysis plugin that is moving a meter around in some way, its most likely not outputting that data as automation data. Maybe BlueCatStuff might, which is handy for sure if you can get that to work then cool, show us I'd like to know.

 

And this makes sense what I am saying. Generally nobody would want to automate the level meter, if you know what I mean. A plugin maker would need to make something like a frequency detection meter as an available output automation, just for this unique scenario of cabling it up in the environment, but most DAW's don't provide that, they just provide a way to record that as automation..which wouldn't even make sense to record the results on a meter, see what I mean? Generally you record changes to parameters, knobs, sliders, etc..so that can be played back as automation. But the meter result...is not intended normally by the plugin to be actually "automated"....so generally most plugins don't even provide that option, unlike the example provided by BlueCatAudio, which I must say is pretty darn cool....I'd like to see more of that.

 

I am willing to bet BCA Patchworks will allow you to specify output automation, so I wonder if you can put other plugins inside that somehow and get this working...

Link to comment
Share on other sites

As a side note, I have long had an idea for an AUinst plugin, which basically would be a wrapper plugin that can host other AU instrument plugins and convert the midi output into automation output. Theoretically it would be possible to then cable the output from an instrument channel strip convert the fader data back to normal midi data and cable it off to other channels...something LogicPro users have wanted for years.
Link to comment
Share on other sites

Yep, as I was following the BC tutorial I did stick in multiple monitors to watch what was going on. I also stumbled upon the "Automation Events List" window (control-Command-E). It would appear that Automation Fader events are synthetic - that is, if you move automation keyframes, the list of automation events changes. Manual edits of the automation events are temporary until you change automation keyframes and the whole list is regenerated.

 

I agree that BC's usage of treating output data as fake inputs so as to make them automatable is... novel, and a clever abuse of how things are "supposed" to work. As I mentioned about the copy/paste from one automation value to another, you can manually "move" this output data to a different automation value (like moving the frequency output from BC to an EQ frequency control) - unfortunately, there's a wierd scaling issue between the two. Something that shows up as 443 (pretty close to 440 for that A...) in frequency output shows up as 24Hz when it gets moved to the EQ automation value.

 

This scaling, and the quantization to 7 bits (0-127) in terms of the Fader events, makes them less useful, at least with the knowledge I currently have. I don't know how to apply a scalar to all automation keys for a particular value in a track, for example. I can use the UI to "Trim" the values (which seems to scale, rather than offset, the values) by hand, but that's obviously more error prone than providing a numeric value.

 

Basically, I want better access to the raw automation values, and it seems that (outside of plugins) I can't currently even get them in a 14-bit form - just the synthetic 7-bit form. I didn't get to reading the AU docs yesterday, so I'm still ignorant about what's available in there. I suppose for the relatively hardcore users, you could provide an AU that offers an input automation value, a transform matrix UI, and an output automation value to alleviate any precision issues by dealing with the values "natively." Just thinking out loud, and still on my first cup of joe...

 

I'm missing what's preventing anyone from translation back and forth between MIDI and Fader data? The Transformer node in Environment lets you translate Fader events to (Status=Fader) to MIDI (eg, Control, Thru, Fix=7, Range=4,110), or the other way around, and cable it off wherever you want?

 

Wasn't familiar with BC PatchWork... interesting that it would let you host VSTs inside Logic, or so it would appear.

Link to comment
Share on other sites

This kind of stuff isn't well documented, alas. It was more common for people to play with this stuff when the environment was used more, and certainly there have been many interesting threads on people's discoveries and general environment hackery, but these things are rather niche these days!

 

You should be able to find threads here, and on other forums (eg the Apple Discussions) about such matters, but even so, these days a lot of the more nerdy types that would do this stuff either aren't here any more, or have more modern, better solutions than requiring envionment hackery (eg, things like the MIDI plugins, Scripter, and other modern Logic features and so on...). But yes, people were indeed using fader events and MIDI events to do interesting environmenty things in recent times...

 

Yes, BC Patchwork lets you use VST plugins from within Logic.

Link to comment
Share on other sites

Well, if Environment hackery is considered 'advanced', then yes, I've tried the advanced advanced and I do acknowledge it being fairly niche.

 

Fader events can have numbers and values beyond 127 which would make them interesting for high resolution tasks. However, the Environment itself is not able or willing to process these numbers and values. I've tried a few times to overcome that limitation but have found no way to do so.

 

Also, as has been mentioned, the Environment only gets hold of the manual GUI operations of a plugin and, in few cases, the automation data that a plugin creates and is willing to share. But these also are quantized down to 127 values, sou you're likely to get a stream like this

 

F 3 6 45

F 3 6 45

F 3 6 45

F 3 6 45

F 3 6 45

F 3 6 44

F 3 6 44

F 3 6 44

F 3 6 44

F 3 6 44

 

for a smooth movement which will play back jerky if used as is.

Link to comment
Share on other sites

The Environment is definitely Morlock territory. I described it to my girlfriend as being like going from a shiny and new looking office building down to the basement where all the leaky steam pipes and sharp corners are. I mean, especially compared with some other basements, it's pretty nice, but still.

 

Anyways, I'm not at all wedded to using Environment as a solution for this - I just saw it in the BC docs and gave it a go. If Environment machinery/cabling does quantize down to 7 bit (and it's not just a display/interpretation issue) then bleh. I'm just trying to avoid reinventing the wheel - if I can use the high resolution outputs of one plugin to drive the inputs of another, that's all I really care about. I have some ideas sonically I'd like to try that would require a LOT of work if I'm not able to do something like this - basically I'd have to put together a plugin that had capabilities similar to ALL of the plugins I'm interested in, and pass parameters in between those chunks of code. Re-wiring, say, a frequency analysis output to one type of EQ, and then switching to another EQ type would be orders of magnitude simpler than finding a working C++ implementation of EQ type A and then finding an implementation of type B, etc.

 

Spending the $90 on PatchWork would definitely be worth it if their "parameters mapping capabilities" let me do this. I just watched a bunch of the videos, though, and it looks like there are major chunks of what I would need, but not exactly a "wire these two knobs together" facility that would let me connect an OUT value from an analysis plugin to an input control on another. I'm guessing that I should write to them directly after I sift through the docs for Plug'n Script.

Link to comment
Share on other sites

Does anyone have any extensive references to plugin "Fader" usage? For example, Blue Cat mentions using it here:

 

https://www.bluecataudio.com/Tutorials/Tutorial_SideChain_LogicPro/

 

(the URL is a lie... this doesn't have anything to do with side chains as we normally know them)

 

No it's not, it is Side-Chaining but using MIDI not AUDIO.

 

Anyways, for the sake of example, if I were to take the "Center Frequency" output from their "FreqAnalyst Pro" plugin and connect that to the input for Logic Pro's or any 3rd party effect for that matter...

Did you follow the URL instructions that you posted, but using the values specific to your setup, not the same values that are in the pictures.

 

I did and it's working.

 

In fact, there's two solutions posted in that link, did you try both of them?

 

Can you post the same exact pictures but with your setup values using both solutions.

Link to comment
Share on other sites

Does anyone have any extensive references to plugin "Fader" usage? For example, Blue Cat mentions using it here:

 

https://www.bluecataudio.com/Tutorials/Tutorial_SideChain_LogicPro/

 

(the URL is a lie... this doesn't have anything to do with side chains as we normally know them)

 

No it's not, it is Side-Chaining but using MIDI not AUDIO.

 

Sorry, I guess that was too tongue-in-cheek for the internet.

 

Anyways, for the sake of example, if I were to take the "Center Frequency" output from their "FreqAnalyst Pro" plugin and connect that to the input for Logic Pro's or any 3rd party effect for that matter...

Did you follow the URL instructions that you posted, but using the values specific to your setup, not the same values that are in the pictures.

 

I did and it's working.

 

In fact, there's two solutions posted in that link, did you try both of them?

 

Can you post the same exact pictures but with your setup values using both solutions.

 

I was unable to find a way to get any values with a precision greater than 7 bits (0-127) to be passed along or manipulated via Logic between two plugins via this mechanism.

 

Obviously using a MIDI CC value event (the second solution proposed in the linked article) limits things to 7 bits (I didn't see a MSB/LSB solution like the 14 bit MIDI pitch bend controller), and as we've discussed here, it appears that the non-MIDI Logic Fader events (the first solution) as exposed only have 7 bits of resolution available.

 

It'd be awesome if I'm just missing something! But, as it stands, using the built in routed messages (Fader or MIDI CC) does not appear to provide sufficient resolution for frequency values, in particular. This is an essential part of what I want to experiment with.

 

The value parameters themselves appear to be double-precision floating point parameters (which is, what, 56 bits of mantissa? something like that...), at least to the Audio Units and code dealing directly with them, so the issue isn't in the bit resolution of the parameters, just how they're packaged and routed through this part of Logic's visible machinery.

Link to comment
Share on other sites

I was unable to find a way to get any values with a precision greater than 7 bits (0-127) to be passed along or manipulated via Logic between two plugins via this mechanism.

 

Obviously using a MIDI CC value event (the second solution proposed in the linked article) limits things to 7 bits (I didn't see a MSB/LSB solution like the 14 bit MIDI pitch bend controller), and as we've discussed here, it appears that the non-MIDI Logic Fader events (the first solution) as exposed only have 7 bits of resolution available.

 

It'd be awesome if I'm just missing something! But, as it stands, using the built in routed messages (Fader or MIDI CC) does not appear to provide sufficient resolution for frequency values, in particular. This is an essential part of what I want to experiment with.

 

The value parameters themselves appear to be double-precision floating point parameters (which is, what, 56 bits of mantissa? something like that...), at least to the Audio Units and code dealing directly with them, so the issue isn't in the bit resolution of the parameters, just how they're packaged and routed through this part of Logic's visible machinery.

 

The FreqAnalyst Pro doesn't support the values your looking for, it only supports 0-127.

 

With that in mind, you can't use any other software since the source doesn't support what you're looking for.

Why would you think using other software with FreqAnalyst Pro is going to work if the source doesn't support it.

 

Use what's available to accomplish what you want.

 

If that doesn't suit your ears, then you need to go advanced and work with the audio output, not MIDI output from a AU, which will get you the precision values you need,

 

in that case you need to write your own Audio Unit in C, C++ or Objective-C to work with the audio output which you can extract the precision data you're looking for to apply it to the audio for modification.

Link to comment
Share on other sites

 

The FreqAnalyst Pro doesn't support the values your looking for, it only supports 0-127.

 

 

It's quite easy to demonstrate that this statement is false.

 

Automate Center Freq with FAP on a channel with a synth on it, enable Latch, hit Play, start playing a few low notes... wait a sec, play some high notes. Hit Stop. Logic will show automation values like 511, 518, ..., 2995, 2999, etc.

 

Automation values for this AU and others clearly are recorded in Logic as something besides 7 bit integers - presumably they match the floating point values that the AU SDK presents to AU hosting apps.

 

With that in mind, you can't use any other software since the source doesn't support what you're looking for.

Why would you think using other software with FreqAnalyst Pro is going to work if the source doesn't support it.

 

These statements are incorrect - see above.

 

 

Use what's available to accomplish what you want.

 

If that doesn't suit your ears, then you need to go advanced and work with the audio output, not MIDI output from a AU, which will get you the precision values you need,

 

in that case you need to write your own Audio Unit in C, C++ or Objective-C to work with the audio output which you can extract the precision data you're looking for to apply it to the audio for modification.

 

As previously stated, my goal was to use data that was neither MIDI nor audio stream, but other derived data (like the derived center frequency) that could be communicated with sufficient precision from one plugin to another so as to be useful for my needs. In exploring this, it became apparent that Logic's event communication mechanism was the limiting factor. This is why the discussions of other AU hosting mechanisms that might offer a higher precision event pipe was relevant. Writing a meta-AU whose only purpose is to supply that event pipe is a possibility.

 

Writing an AU that does all the processing itself is, indeed, a possibility, but would mark this whole approach as a dead end. I'm used to being able to string together existing pieces of functionality to accomplish my goals, rather than reinventing the wheel several times over.

Link to comment
Share on other sites

plugin parameters can definitely can have more precision then 7bits. Even the mixer faders have more than 7bit precision, but unfortunately fader events in the environment are 7bit, so there is some truncation of data of some kind when sending fader events from plugins or from mixer faders into the environment. That is a limitation of the environment. Very unlikely to ever change.

 

Scripter can handle higher precision then 7bits and its possible you might be able to get FreqAnalizerPro to work in conjunction with Scripter to read the output automation value and then assign it to another plugin....with full precision, but they would have to be on the same mixer channel (both plugins). Maybe.

 

Using something like PlogueBidule it has a lot of options to access plugin parameters and translate values from one thing to another using all kinds of built it operators...so you can almost certainly wire up the parameter output from one plugin to drive the parameter of another plugin, with possibly some translation in between. But again...both plugins are essentially within PlogueBidule, which is within one single mixer channel strip. So if you're wanting to to communicate across to another channel, it gets even more complicated. You may have to use IAC midi or OSC to communicate to another mixer channel, etc.. lots of things possible, but it just starts to get kind of complicated. At some point Id want to understand what you're trying to accomplish and probably consider if there is a product that can already do it for you.

Link to comment
Share on other sites

Well, after much experimentation, it would seem that AN answer would be to use Reaper, which natively supports doing this sort of thing. See section 19.9 "Parameter Modulation Under Parameter Control" in their user guide. There are also some simple examples of what you might use this sort of thing for. Reaper isn't initially appealing to me - I'm pretty fond of Logic, but I'm not at all interested in getting into DAW comparison discussions.

 

OSC looked interesting, generally, but most of the recent comments related to it seem to say "it seems broken in Logic now", and point people to the proprietary control surface SDK that's available from Apple (under NDA, I'm assuming).

 

I wasn't able to find a way to wire plugin parameters together the way I would want to in any of the other solutions that function inside Logic, and have timed out on my investigation phase.

 

Thanks y'all for helping on my exploration...

Link to comment
Share on other sites

OSC isn't broken. Where did you read that? I'm not sure why you think you need a special SDK from Apple. I doubt the control surface SDK you mention would provide what you're looking for. If you want to play with OSC more, look into something called OSCulator which will help you explore some of what is possible with OSC.

 

Reaper does have numerous powerful features. I personally can't get along with its GUI. To each their own. The advantage of using something like Plogue Bidule is that you can keep working with your music projects in LogicPro and expand its capabilities. Also PlogueBidule can input/output OSC.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...