Can anyone explain to me how to create a session allowing for multiple outputs - I ideally need to create a plugin with 2 in and 4 outs?
If this is already a topic somewhere please link me to it.
So far i've changed 'm_uMaxOutputChannels = 4;' in the constructor and use 'outBuffer' to 'outBuffer' in the 'processVSTAudioBuffer', however I think I'missing something. The plugin will compile but is only recognised as a 2 in/2 out and seems to have some issues when loading inside a DAW.
That's tantalizing, but I still feel like I'm fumbling around in the dark, when, e.g. trying to make a surround effect.Â I can add the outputs, but how do I create the different channels in the RackAFX project, and then separate the various outputs in the VST?Â I suppose what you are suggesting is that there are a huge number of speaker array options you would have to support to go farther.
This actually might not be the case.Â I refer you to the ReaJS plugin from the freeÂ ReaPlugs plugin pack.Â This is an audio plugin scripting language that has a surprisingly large following.Â It may not at first be apparent, but ReaJS can be used in configurations for larger numbers of channels.Â There is aÂ reajs_info.txt that's installed with the plugin that explains how to set up the ReaJS.ini to have any reasonable number of channels.Â All you do is set inputs=2 and outputs=6 to make a typical Surround Sound plugin.Â Alas, it does not support AAX, nor does it obfuscate your code e.g. by compiling it.
Various DAW's let you set the meaning of the individual channels, so that although LFE might be different channel numbers on different DAW's, I've just been hard-coding the channel numbers, and changing which channel numbers are which in the DAW.Â A plugin writer might also support e.g. radio buttons to choose which signals are routed to which outputs.Â Perhaps it is better to do something to associate an LFE with the LFE channel, e.g.; but what I had in mind was quicker whether or not it is dirtier - do it like ReaJS.Â Perhaps AAX specifications will not allow this, but I'd expect there would be a way.
The idea would be to have RackAFX support multi-channels by configuring how many channels it supports; and that's it.Â (If set higher, and later, the user attempts to set the project back to stereo, you might e.g. disallow this if higher number channels are in use.)Â The meaning of the channels would have to be set by the DAW and the programmer.Â That way, one could create the signals for the different outputs right in the RackAFX environment, and not have to re-add the C++ code every time the plugin changes, for all supported plugin formats - and yet the complexity of coding it on your end might be reduced.
Thanks for the note.
This has already happened in the new RAFX2 API which supports all common multichannel formats for AU, AAX, and VST, and opens the door for you to add your own, or for you to support formats that are not universal across APIs, such as ambisonics. It is a totally re-build API, developed from the ground up and has nothing to do with the current RackAFX API (now named RAFX1). Because of this new API, I am not adding anything to the current API involving multi-channel operation, which was outside the scope of the project when it was started in 2004. I will of course make updates to the current version (e.g. v6.9 which will be available shortly) to support updated APIs, etc...Â
However, the new API will not be available to the public until sometime around late summer of 2018. Stay tuned for beta testing opportunities starting mid-year.Â
So, all I can tell you for now is to sit tight. The new API has many other advantages and integrates seamlessly with the commercial APIs and will be a welcome update.
Is there any further guides on how to make multichannel plugins?
I've so far got to the point of exporting to VST and editing the VSTprocessor.cpp so that the initialiser has:
addAudioOutput(STR16("Audio Output"), SpeakerArr::kAmbi1stOrderACN);
however I'm not sure what I should be doing in the process() function? I can't quite find where the output buffers are stated and not sure if there's more to do than that?
I'm guessing after the change then in the RackAFX project you'd just use:
where 'n' is the channel number?
Most Users Ever Online: 152
Currently Browsing this Page:
Guest Posters: 1
Moderators: W Pirkle: 689