I've literally just finished setting up and testing my first 3D cube using mostly Auratone 5C cubes and have been using your ATK (and the Periphonic 3D decoder) for testing and listening. I made another post about that and just replied to it with some details about the cube array.

I'm planning on starting some Ambisonic mixes of my own in the next few weeks so your updates are perfect timing, particularly given the azimuth fix. Given I haven't done any B format mixes just yet, I don't have to worry about backwards compatibility.

A quick question about the periphonic decoder... Is the elevation angle the angle between the horizontal listening plane (midway between the upper and lower ring in my current setup) and the top and bottom speaker rings?

I've literally just finished setting up and testing my first 3D cube using mostly Auratone 5C cubes and have been using your ATK (and the Periphonic 3D decoder) for testing and listening. I made another post about that and just replied to it with some details about the cube array.

Cool, I'll check that post out.

Quote:

Originally Posted by ReaDave

A quick question about the periphonic decoder... Is the elevation angle the angle between the horizontal listening plane (midway between the upper and lower ring in my current setup) and the top and bottom speaker rings?

Yes, it's the elevation angle from horizon to the upper ring, and similar to the lower ring. So at 0 deg both rings would be in the horizon (which doesn't make much sense) and at 90 degrees the rings have collapsed to be just above and below you (which doesn't make sense either). So it's very likely that you'll work with an angle somewhere in between.

There is a small visualisation in the GUI of the elevation angle, in between the two circles and a little to the right.

I should mention that the Periphonic 3D decoder does work correctly yet. When porting the code from the SuperCollider version of ATK I failed to realise that the matrixes used are to be "pseudo-inversed". I have tried and used the Periphonic 3D decoder in it's current state myself, and get quite good results, but according to Joseph Anderson it will sound better (and be more correct with respect to Gerzon's ideas about ambisonics) when I have added the pseudo-inverse. This is tracked in relation to #2, #4 and #5 in the issue tracker:

Thanks again Trond. Much appreciated. What you mentioned about the elevation control is pretty much what I figured it was for.

Regarding the pseudo inverse situation, do you have any information about what that does and how not including it will affect my listening tests? I didn't see much of a description about that in the tracker.
I have been directly comparing your cube decoder with Bruce Wiggins one and, from the limited time I've had so far and my less than optimal current speaker configuration, I prefer the sound of yours. It seems to provide better rear localization. I did have to reverse the polarity of the two lower rear speakers though for the sound localization to work well enough. As I mentioned in my other thread though, that could be either an amplifier issue (I'm running those speakers from a different amplifier) or it could be because those two speakers are not Auratones and I've had to EQ them to get them timbrally similar.

Or perhaps this is related to the pseudo inverse thing you're speaking of?

Regarding the pseudo inverse situation, do you have any information about what that does and how not including it will affect my listening tests? I didn't see much of a description about that in the tracker.
I have been directly comparing your cube decoder with Bruce Wiggins one and, from the limited time I've had so far and my less than optimal current speaker configuration, I prefer the sound of yours. It seems to provide better rear localization. I did have to reverse the polarity of the two lower rear speakers though for the sound localization to work well enough. As I mentioned in my other thread though, that could be either an amplifier issue (I'm running those speakers from a different amplifier) or it could be because those two speakers are not Auratones and I've had to EQ them to get them timbrally similar.

Or perhaps this is related to the pseudo inverse thing you're speaking of?

The PseudoInverse thing might not be clear from the tracker, but at least I myself understand what it's about when looking at it... ;-)

The idea with ambisonics decoding is that it is very straight forward when all speakers are positioned at equal angular distance. In 3D this only happens if the speakers are laid out according to one of the platonic solids. My guess is that Brice Wiggins Cube decoder is using one of these shapes, and if so, the vertical distance between upper and lower ring has to be the exact same as the distance between front and back speakers in order for the decoder to work properly. This might be why you are not getting satisfactory results from it.

If you need to decode to irregular speaker layouts, some kind of "best fit" solution need to be applied. The PseudoInverse trick is that it asks what it would sound like if you had sound sources coming from the direction of each of your speaker. It then inverts this so that what started out as an encoder of a number of planewaves instead becomes a decoder. I´m not sure exactly how that will sound and how it will differ fro the current implementation, but I trust Joseph when he says that it will improve the decoder. But that being said, I agree with you that it works fairly well already, I have been surprised by how good it sounds when trying out with two rings of 8 speakers at LABRI in Bordeaux in May. And I'm looking forward to test with proper PseudoInverse implementation as well.

Thanks again for the detailed reply Trond. I'm still not sure exactly what the PseudoInverse stuff is all about but I'll take your word for it!!

I think you might be spot on regarding Bruce's cube decoding. There's no elevation control there and my current setup is about 35 degrees which is from memory, your default setting.
I have all speakers equidistant in each ring but the distance from the bottom to top ring is slightly smaller, hence the less than 45 degree elevation. I do plan to put together a frame to hold each speaker and that frame will be 45 degrees elevation giving me perfect cube dimensions on all sides.

Great stuff. I am going to remix one of my songs in ambisonics to learn more about this.

I am confused about how to doing mastering on it though.

Wouldn't typical mastering techniques affect the differences & relationships between channels that are used to decode?

Yeah. That sounds right to me. For first order Ambisonic mastering, you'd need to use four channel plugins that treated each channel equally (if you are processing the B format files before decoding that is). I'm going to approach my new Ambisonic mixes from the perspective of trying to get everything right in the mix in order to minimize mastering complexity and requirements. That's not much of a jump for me though because I've always tried to work that way anyway.

Yeah. That sounds right to me. For first order Ambisonic mastering, you'd need to use four channel plugins that treated each channel equally (if you are processing the B format files before decoding that is). I'm going to approach my new Ambisonic mixes from the perspective of trying to get everything right in the mix in order to minimize mastering complexity and requirements. That's not much of a jump for me though because I've always tried to work that way anyway.

Yes. I asked Bruce Wiggins. He said that as long as you are careful to use sidechains/control parameters so that all 4 channels are affected equally when you put an effect on something, mastering will work fine.

Yes. I asked Bruce Wiggins. He said that as long as you are careful to use sidechains/control parameters so that all 4 channels are affected equally when you put an effect on something, mastering will work fine.

I believe it's slightly more complicated: If your sound effect is 4-channel and linear, it's fine to apply it in the same way to all four channels of the B-format signal. Some examples of linear processes are gain adjustments, filters and eq (as long as they do not also use compression) and straight-forward delays (as long as they do not start to mix signals between the channels).

If you use a non-linear effect on the B-format signal, the spatial image will get distorted. The trick when using these kinds of plugins is to first decode from B-format to A-format using the BtoA plugin with Decorrelated weight, apply your processing to the resulting A-format signal, and then re-encode back into B-format using the AtoB plugin. This will maintain the spatial image to a much higher degree.

This technique is discussed in the the 2014 paper "ATK Reaper: The Ambisonic Toolkit as JSFX plugins", that can be downloaded here:

The paper was recently translated into Spanish and published in Ideas Sónicas/Sonic Ideas, vol 8, no. 16., by CMMAS, Morelia, Mexico.

I have started developing a series of 4-channel JS plugins for my own use exactly towards this kind of workflow. They are not in any releasable form, and are subject to whimsical changes and alternations depending on my own needs and experiences, but with these caveats, if you want to take a look, they are available here:

Eventually they may get a more fixed and mature shape, but I'd like to keep them open-ended for quite a while yet in order to experiment with and gradually develop sensible designs through practical use. The plugins make use of CookDSP, so that need to be installed as well.

Hmm... I created a new, blank project and am getting the lag when inserting any of the new encode/decode ATK b9 plugins. It isn't a huge lag but it is noticeable and seems to be cumulative the more ATK plugins I have per project. The lag for inserting a single plugin is about five seconds whereas before, it was pretty much instant.

I just reverted back to the b7 ATK and everything loads instantly again.

One thing I forgot to mention too is that there seems to be something odd going on with the pin connections in some of the plugins too. For instance, when I click the pin configuration tab on the 5 channel encoder, the plugin stops passing audio and I have to delete it and reinsert it to get it working again. This also happens with the Binaural decoder and some others too.
If I take it offline and back online it doesn't fix things. I have to remove and reinsert it.

Trond, I'm not sure why but since installing b9, I'm noticing considerable lag when opening previous projects which I created with the b7 versions of the ATK.

I'm going to try creating a new project with the b9 plugins and see if that lags upon loading too.

This is with REAPER 5.23 pre4 64 bit on Windows 10 64 bit.

I can confirm this behaviour as well.

As for the mastering question, I think one of the big differences between ambisonics and straight pan-pot mono mixing is that it creates a mix that can be decoded many ways for delivery. When mastering it's best to consider any changes made to the ambisonic signal (4 channel b-format or what have you) as being generic adjustments that are checked over a couple different decodes for coherence and then any final tweaks be made to the specific decode for delivery (or on site as the case may be).

Trond, I'm not sure why but since installing b9, I'm noticing considerable lag when opening previous projects which I created with the b7 versions of the ATK.

I'm going to try creating a new project with the b9 plugins and see if that lags upon loading too.

This is with REAPER 5.23 pre4 64 bit on Windows 10 64 bit.

Thanks for reporting. Can you please give me very specific details on what you do, so that I can try to reproduce? Something along the line of this:

<start of example>

Steps to reproduce:

1. Install v. 1.0.0.b9
2. Start Reaper (32-bit version)
3. Make a new project
4. Create a new track in project and make it 4 channels
5. Add a 4-channel B-format sound file to the track
6. Add <name of plugin>

Result: Takes ages for the plugin to load

</end of example>

Also it will be useful to know:

- What Windows version do you use?
- What version of Reaper (32-bit or 64-bit)?
- Does behaviour change if you do this in the other version of Reaper?
- Do you boot of an SSD disk or a regular disk?
- Do this happen the first time around only, or will it happen again if you then quit Reaper and repeat all of the steps except for the re-installing of ATK?

(I see that you've provided some of this info already)

The only thing that I can imagine that cause plugins to take longer to load is the introduction of dependency on CookDSP. This of course means that there are more header files, and if Reaper/system takes longer to locate, load and interpret those files, it might lead to lags.

I won't have the time to test out on Windows myself until sometime tomorrow. On OSX I have not noticed any particular lag myself, and certainly not in the many-seconds range. I have a 4-year old laptop with an SSD so if disk read is the issue here, I might have gotten away with it...

I just reverted back to the b7 ATK and everything loads instantly again.

One thing I forgot to mention too is that there seems to be something odd going on with the pin connections in some of the plugins too. For instance, when I click the pin configuration tab on the 5 channel encoder, the plugin stops passing audio and I have to delete it and reinsert it to get it working again. This also happens with the Binaural decoder and some others too.
If I take it offline and back online it doesn't fix things. I have to remove and reinsert it.

This happens with all versions so far on my PC.

Would you be able to make a screencast illustrating this problem, or eventually a step-by-step procedure, with screenshots along the way and red circles or similar highlighting the problems? I have received similar reports from another user with a bunch of screenshots, but I'm not fully able to understand what the problem is or reproduce it so that i can investigate.

I've just made a short video showing the difference between the b7 and b9 versions of the ATK loading times. This issue occurs no matter what I do to load the plugins, whether it be from a blank track with two, four, eight or any other number of channels. It happens every load whether from a new project or an existing project.

In the video, first is beta 7 behaviour, second is beta 9, third is loading an existing project with multiple ATK b9 plugins.

Would you be able to make a screencast illustrating this problem, or eventually a step-by-step procedure, with screenshots along the way and red circles or similar highlighting the problems? I have received similar reports from another user with a bunch of screenshots, but I'm not fully able to understand what the problem is or reproduce it so that i can investigate.

I'm gonna make tickects in the issue tracker for both of these.

I've just been doing some more experimentation with this and have found it only seems to occur when some Waves and some ATK plugins are inserted on the same track. The Waves plugins behave perfectly with any other combination and the same seems to be true with the ATK plugins.

I've noticed it when inserting a Waves UM226 (stereo to 5.1 upmixer) and an ATK 5 channel encoder on the same track. If I click on the ATK encoder pin button, the audio stops. If I then go back in the undo history and then forwards again, I can usually get it the audio to start again.

If I insert the UM226 on one track and the ATK 5 channel encoder on another track and buss the first track to the second one, it works fine.

I can post an example project with this all configured how I have it if you want. You'd need to have the Waves UM226 installed though.

Hi, I'm currently preparing a new beta version, and I have addressed most of the issues raised here, as well as a few additional ones that I discovered myself. I have been able to do some testing on Windows myself finally, and that quickly confirmed the issue with slow loading in b9. However I am not able to reproduce the pin connector issue that you report, ReaDave.

I have gotten myself a 7 day demo of the Waves UM226 plugin, but regardless of how I add, delete, and re-add plugins in Reaper projects, I am unable to reproduce this issue.

Would you be able to provide me with further details on how to reproduce this issue? It would also be useful to know if you use Reaper as 64-bit or 32-bit application, and whether you are loading UM266 as a VST2 or VST3 plugin. And finally: Was this a new issue appearing in beta 9, or have you seen this issue earlier on as well?

If I hear back from you, I'll hold of a new release so that I hopefully can include this fix as well. I have received suggestions for not defining the pins of my plugins, but I find this very useful myself,and I believe that some critical information regarding how many (and what) channels of audio the plugins receive and return will get lost if the pin information is commented out. So if at all possible I'd like to keep pin info in. Thanks!

And on a different note, I get the impression that you are using an effect chain for stereo to B-format encoding that looks like:

stereo sound file => UM266 upmix to 5.1 => 5_0 encoder => B-format

I guess that when doing so you have not been satisfied with the results you get by just using

stereo sound file => stereo encoder => B-format

Did you try the SuperStereo encoder? This encoder in my opinion gives a result that sounds much more natural and realistic, sounding like a scene unfolding in front of you rather than as two sound sources coning from left and right:

stereo sound file => SuperStereo encoder => Bformat

Eventually you van afterwards use the FocusPressPushZoom plugin to shape how wide the reslting scene should be, or the RotateTiltTumble for rotating it toward the left, right or back:

I have been able to do some testing on Windows myself finally, and that quickly confirmed the issue with slow loading in b9. However I am not able to reproduce the pin connector issue that you report, ReaDave.

Please note that some pin connector issues have been addressed by the developers in the latest pre-release builds.

I would say that if they are addressing it then the problem is probably not with your code.

Sorry Trond. I've only just seen your replies now. I haven't been on the forum for a few days.
I have recently started some new mixes in Ambisonic format and have noticed the audio issues with plugins other than Waves when using the ATK doing the same thing. I also sometimes get garbled audio rather than it cutting out completely and when that happens, the only solution is to separate the ATK plugins by bussing them to new tracks.
I'm using 64 bit REAPER on Win 10 64 bit and all plugins are VST2.
From memory, I think I was actually getting this garbled audio issue when I was using the JS multiband splitter with a few instances of ReaComp and the JS multiband combiner. I'm not 100 percent sure of that though because I'm not at my computer right now.

Regarding the 5.1 stuff, your plugin chain is exactly what I am doing. I have used the stereo encode method and I do like that quite a lot but the 5.1 upmixes are mainly for dedicated 5.1 projects where the final mix is for 5.1. I'm using Ambisonics to create a virtual 5.1 monitoring situation. In future though, I plan on doing pretty much everything in Ambisonic format and creating the necessary downmixes (whether 5.1, stereo, mono or anything else) by using decoders from the B format.

I did briefly play around with the super stereo encoder but didn't get convincing results. Looking at your plugin chain though, I now see why. I was placing the super stereo plugin after the B format conversion (oops!! Silly mistake!)
I'll definitely give that another shot now though.

Let's await the next incremental version of Reaper and see if that helps, if not the best we can do is probably to provide a precise bug reaper to the Reaper developers. In the worst care I'll have to comment out the pin information, but I believe that is less than ideal with respect to the user-friendliness of the plugins.

I've just uploaded one more tutorial, for encoding stereo sources. They are both at the "ATK for Reaper - Tutorials" page on the ATK website. I've also made the Reaper projects I used for these screencasts available. They can be downloaded from the same place.

That sounds like a fair suggestion regarding REAPER and pin connections.
On that topic, I do recall one more thing that may be relevant in reproducing the bug I am seeing. When I'm using the other multichannel VSTs, I do change around the pin assignments. I'm using a 3D cube monitoring array but I still have center and LFE, channel assignments in my setup so I repatch everything to skip pins 2 and 3 (which are C and LFE).

One more thing, my speaker array isn't in the order of the standard pin assignments either (at least not at present but I may change that soon). That means that I also change around the pin assignments on the ATK plugins and also on other VSTs.
Also, Waves has a different channel order for its 5.1 assignments than I use so I also change around its output pins and have that saved as a preset.

Thanks, ReaDave. I feel that this is one of the reasons why it is useful to keep the PIN info in if possible, it makes it much more clear what signals are passed to each of the channels. I often do tweek PIN routings myself as well, but on OSX I have not experienced any problems. Crossing fingers for next version!