Avatar

Please consider registering
Guest

sp_LogInOut Log In sp_Registration Register

Register | Lost password?
Advanced Search

— Forum Scope —




— Match —





— Forum Options —





Minimum search word length is 3 characters - maximum search word length is 84 characters

sp_Feed sp_TopicIcon
Setting up a plugin with multiple outputs? (for use with an ambisonic/bformat plugin)
No permission to create posts
November 4, 2016
10:09 pm
Avatar
haydonc
Member
Members
Forum Posts: 4
Member Since:
January 5, 2016
sp_UserOfflineSmall Offline

Hi,

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[0]' to 'outBuffer[3]' 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.

Thanks,

Haydon Cardew Cool

November 5, 2016
1:40 am
Avatar
W Pirkle
Admin
Forum Posts: 209
Member Since:
January 29, 2017
sp_UserOfflineSmall Offline

Currently, RackAFX only supports

1->1
1->2
2->2

channel plugins. Multichannel audio (>2 ch) is on the TODO list along with many other feature requests from users.

The only option you have for this would be to code natively in VST3 (or AU).

- Will

November 5, 2016
4:13 am
Avatar
haydonc
Member
Members
Forum Posts: 4
Member Since:
January 5, 2016
sp_UserOfflineSmall Offline

Thanks for the speedy reply! But damn..!

Guess I'll get learning VST3 ūüôā

January 29, 2017
5:25 am
Avatar
W Pirkle
Admin
Forum Posts: 209
Member Since:
January 29, 2017
sp_UserOfflineSmall Offline

See my recent YouTube video involving Make VST -- I discuss modifying the project for multi-channel audio.

- Will

January 6, 2018
10:03 am
Avatar
CodeLurker
New Member
Members
Forum Posts: 2
Member Since:
September 29, 2015
sp_UserOfflineSmall Offline

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.

January 7, 2018
2:01 pm
Avatar
W Pirkle
Admin
Forum Posts: 209
Member Since:
January 29, 2017
sp_UserOfflineSmall Offline

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.

- Will

May 16, 2018
5:17 pm
Avatar
haydonc
Member
Members
Forum Posts: 4
Member Since:
January 5, 2016
sp_UserOfflineSmall Offline

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:

pOutputBuffer[n];

where 'n' is the channel number?

Thanks!

Haydon

May 21, 2018
5:36 pm
Avatar
haydonc
Member
Members
Forum Posts: 4
Member Since:
January 5, 2016
sp_UserOfflineSmall Offline

Okay, further work has got me to lines 1071 and 1125 of the VSTProcessor.cpp. I'm thinking this is all that needs changing...

Forum Timezone: America/New_York

Most Users Ever Online: 36

Currently Online:
4 Guest(s)

Currently Browsing this Page:
1 Guest(s)

Top Posters:

Skyler: 48

Derek: 44

Peter: 41

Frodson: 40

clau_ste: 39

Gwen: 32

JimmyM: 29

EZB: 24

lppier: 23

Msalda√Īa: 18

Member Stats:

Guest Posters: 1

Members: 510

Moderators: 1

Admins: 4

Forum Stats:

Groups: 11

Forums: 31

Topics: 526

Posts: 2037

Newest Members:

Matt, dspstudent, strings4v, TheSmile, semihyavuzz, alfredLue, danioc, midnightskate3, Alia5, Shamal Sundar

Moderators: W Pirkle: 209

Administrators: Tom: 67, JD Young: 80, Will Pirkle: 0, W Pirkle: 209