Example #1
0
 public static int GetCoeffCount(AmbisonicOrder order)
 {
     if (order == AmbisonicOrder.First)
     {
         return(4);
     }
     else if (order == AmbisonicOrder.Second)
     {
         return(9);
     }
     else if (order == AmbisonicOrder.Third)
     {
         return(16);
     }
     return(0);
 }
        internal void Setup(AmbisonicOrder order, AmbisonicChannelOrder channelOrder, AmbisonicNormalisation normalisation, int bufferCount)
        {
            Debug.Assert(bufferCount > 1 && bufferCount < 100);
            lock (this)
            {
                _order         = order;
                _channelOrder  = channelOrder;
                _normalisation = normalisation;
                int sampleCount = Ambisonic.GetCoeffCount(order) * AudioSettings.outputSampleRate / 10;                 // 1/10 second buffer

                _activeSampleIndex = 0;
                _activeSamples     = null;
                _fullBuffers.Clear();
                _emptyBuffers.Clear();
                for (int i = 0; i < bufferCount; i++)
                {
                    float[] buffer = new float[sampleCount];
                    _emptyBuffers.Enqueue(buffer);
                }

                UpdateCoefficients();
            }
        }
Example #3
0
 public static extern void EncodeMonoToAmbisonic(IntPtr instance, float[] inSamples, int inSamplesOffset, int inFrameCount, int inChannelCount, float[] outSamples, int outSamplesOffset, int outSamplesLength, AmbisonicOrder order);
Example #4
0
 public static extern void UpdateAmbisonicWeights(IntPtr instance, float azimuth, float elevation, AmbisonicOrder order, AmbisonicChannelOrder channelOrder, float[] normalisationWeights);