예제 #1
0
 void asioOut_AudioAvailable(object sender, AsioAudioAvailableEventArgs e)
 {
     var samples = e.GetAsInterleavedSamples();
     writer.WriteSamples(samples, 0, samples.Length);
 }
예제 #2
0
        private void AsioOut_AudioAvailable(object sender, AsioAudioAvailableEventArgs e)
        {
            float[] sourceAudio = new float[e.SamplesPerBuffer*e.InputBuffers.Length];
            e.GetAsInterleavedSamples(sourceAudio);
            float[] proccesedAudio = new float[settings.BufferSize];
            byte[] result = new byte[settings.BufferSize*4];
            byte[] sendingAudio = new byte[e.SamplesPerBuffer*4];
            for (int j = 1, q = 0; j < sourceAudio.Length; j += 2, q++)
            {
                proccesedAudio[q] = sourceAudio[j];
            }
            proccesedAudio = VSTHost.GetInstance().Procces(proccesedAudio);
            for (int i = 0, n = 0; i < proccesedAudio.Length; i ++)
            {
                    result[n] = BitConverter.GetBytes(proccesedAudio[i])[0];
                    n++;
                    result[n] = BitConverter.GetBytes(proccesedAudio[i])[1];
                    n++;
                    result[n] = BitConverter.GetBytes(proccesedAudio[i])[2];
                    n++;
                    result[n] = BitConverter.GetBytes(proccesedAudio[i])[3];
                    n++;
            }
            result.CopyTo(sendingAudio,0);
            if (connection.IsConnected)
            {

                connection.Send(sendingAudio);
            }
        }
예제 #3
0
        void OnAsioOutAudioAvailable(object sender, AsioAudioAvailableEventArgs e)
        {
#pragma warning disable 618
            var samples = e.GetAsInterleavedSamples();
#pragma warning restore 618
            writer.WriteSamples(samples, 0, samples.Length);
        }
예제 #4
0
        private void AsioOut_AudioAvailable(object sender, AsioAudioAvailableEventArgs e)
        {
            float[] sourceAudio = new float[e.SamplesPerBuffer * e.InputBuffers.Length];
            float[] proccesedAudio = new float[settings.BufferSize];
            byte[] result = new byte[settings.BufferSize * 4];
            byte[] sendingAudio = new byte[e.SamplesPerBuffer * 4];

            if (!IsInputMute)
            {
                //LRLRLRLRLRLR....
                e.GetAsInterleavedSamples(sourceAudio);

                for (int j = 1, q = 0; j < sourceAudio.Length; j += 2, q++)
                {
                    proccesedAudio[q] = sourceAudio[j];
                }

                proccesedAudio = VSTHost.GetInstance().Procces(proccesedAudio);

                for (int i = 0, n = 0; i < proccesedAudio.Length; i++)
                {
                    result[n] = BitConverter.GetBytes(proccesedAudio[i])[0];
                    n++;
                    result[n] = BitConverter.GetBytes(proccesedAudio[i])[1];
                    n++;
                    result[n] = BitConverter.GetBytes(proccesedAudio[i])[2];
                    n++;
                    result[n] = BitConverter.GetBytes(proccesedAudio[i])[3];
                    n++;
                }

                result.CopyTo(sendingAudio, 0);
            }
            if (connection.IsConnected)
            {
                connection.Send(sendingAudio);
            }
            if (isAudioReceiving)
            {
                lock (receiveLocker)
                    if (isNewAudioAvailable)
                    {
                        incomingAudioBufferedWaveProvider.AddSamples(incomingBytes, 0, incomingBytes.Length);
                        isNewAudioAvailable = false;
                    }
            }
            if (!IsOutputMute)
                inputAudioBufferedWaveProvider.AddSamples(result, 0, result.Length);
        }