I don’t know if this is a plugin format issue, a DAW issue or an iPlug issue but I have discovered that a multichannel plugin running in Pro Tools (AAX) shows different channel assignments to plugin pin numbers than the same plugin running in DaVinci Resolve (VST3).
For example, when loaded on a 5.1 track in Pro Tools the “LFE” (0.1) channel appears on the last plugin pin number - in this case plugin pin/channel #6.
When that same plugin is loaded on a 5.1 track in DaVinci Resolve the LFE channel shows up on plugin pin/channel #4 .
I don’t not how to address this apparent inconsistency. I want to label the meters on my plugin UI with the applicable label (L, R, Ls, LFE, etc.) but it seems it is not standard. How can this be? Shouldn’t all 5.1 files have the same channel assignments?
Any insight appreciated! Thank you.
There are multiple standards for 5.1 channel ordering (e.g. ITU - that’s an ordering with LFE on 4 and what Logic calls WG-4 which has LFE on 6, and elsewhere I’ve seen this referred to as DTS).
The bottom line is that you cannot (unfortunately) expect your channels in a set order in terms of the audio, but you can use VST3 labelling of channels to figure out which is which. I’m not sure if there’s something we could do better here, as I’ve not done anything with surround sound formats myself (multichannel yes, but named formats no).
@AlexHarker - Thank you for the reply. Yes, multichannel is indeed complicated and confusing and we now have Apple pushing Atmos which has added greatly to the fray.
I checked FabFilter’s Pro Q3 plugin on both Pro Tools and Davinci Resolve and somehow it always shows channels with the proper labels, e.g., LFE audio channel (whether on channel 4 or 6) always shows up as “LFE”, etc. - so there must be some way of detecting which multichannel standard is being used. Either that or FF has done a lot of homework and incorporated conditional code “if this DAW do this, if that DAW do that”, etc.
I’m also curious how playback devices know which speaker to send which audio channel to? If I create a “5.1” mix on Pro Tools, for example, it should play the same as a 5.1 mix from Resolve - but the plugin channels within the DAWs do not show that same consistency. So how is this done?
You need to do more than know which DAW as some support multiple orders (like logic) - you need to look at how each format reports multichannel formats - we may not be exposing all of this to the plugin in iplug2 I’d have to check.
Once you render to a file then you should include metadata about channel order that a playback device can follow. This is to do with channel labelling and or bus labelling to give info about the format.
@AlexHarker - I have now learned that Pro Tools does indeed use a different internal channel mapping than many other DAWs. It uses the “Film” format whereas most other DAWs use the “SMPTE/ITU” internal routing format. (Exported wave files, however, are always in SMPTE format.)
Here is link explaining it: https://avid.secure.force.com/pkb/articles/en_US/faq/SMPTE-file-FAQ#:~:text=What%20is%20the%20difference%20between,Rs%20LFE%20%3D%205.1%20Film%20Order
And, like you said, Logic also uses it’s own unique internal mapping and so does Cubase/Nuendo. More info here: https://embody.zendesk.com/hc/en-us/articles/4409894680857-What-layouts-are-in-the-Channel-Configuration-menu-and-which-one-is-right-for-my-DAW-
Since these are internal DAW routings I am not sure if there is any means to detect which channel is used for what since we are only given channel streams for processing in our plugins. This is a different situation than deliverable wave files that have embedded channel format meta data.
A reasonable solution for labeling multi-channel plugin meters, etc., might be to use SMPTE/ITU format as the default with conditional exceptions for Logic, Steinberg and Pro Tools. I expect, however, that this approach would fail to display properly in some other DAWs. And, as you said, some DAWs, like Logic, may have multiple configurations for the same number of channels and/or can be changed with “custom” settings by the user.
So, the safest approach, IMO, is to simply label plugin channels on the UI as “Channel1, Channel2, etc.” and not try to display as “LFE, R, L, C, etc.”. In other words, leave the actual routing information to be displayed by the DAW itself.