Пример #1
0
        public static BASS_ASIO_INFO BASS_ASIO_GetInfo()
        {
            BASS_ASIO_INFO bass_ASIO_INFO = new BASS_ASIO_INFO();

            if (BassAsio.BASS_ASIO_GetInfo(bass_ASIO_INFO))
            {
                return(bass_ASIO_INFO);
            }
            return(null);
        }
Пример #2
0
        public bool SetFullDuplex(int asioDevice, int asioChannel)
        {
            if (!this._input)
            {
                return(false);
            }
            bool flag = true;
            int  num  = BassAsio.BASS_ASIO_GetDevice();

            if (num != this._device)
            {
                flag &= BassAsio.BASS_ASIO_SetDevice(this._device);
            }
            if (flag)
            {
                if (this._outputChannel != 0)
                {
                    Bass.Bass.BASS_StreamFree(this._outputChannel);
                }
                BASSFlag bassflag = BASSFlag.BASS_STREAM_DECODE;
                if (this._format == BASSASIOFormat.BASS_ASIO_FORMAT_FLOAT)
                {
                    bassflag |= BASSFlag.BASS_SAMPLE_FLOAT;
                }
                this._outputChannel = Bass.Bass.BASS_StreamCreateDummy((int)BassAsio.BASS_ASIO_GetRate(), this._numchans, bassflag, IntPtr.Zero);
                BASS_ASIO_INFO bass_ASIO_INFO = BassAsio.BASS_ASIO_GetInfo();
                this._fullDuplexBuffer = new byte[bass_ASIO_INFO.bufmax * this._numchans * 4];
                this._internalAsioProc = new ASIOPROC(this.AsioToAsioFullDuplexCallback);
                flag &= this.EnableAndJoin(this._input, this._channel, this._numchans, this._internalAsioProc, this._format);
                if (flag)
                {
                    if (this._device != asioDevice)
                    {
                        flag &= BassAsio.BASS_ASIO_SetDevice(asioDevice);
                    }
                    if (flag)
                    {
                        BassAsio.BASS_ASIO_SetRate(this._samplerate);
                        bool           flag2          = BassAsio.BASS_ASIO_IsStarted();
                        BASSASIOActive bassasioactive = BassAsio.BASS_ASIO_ChannelIsActive(false, asioChannel);
                        if (flag2 && bassasioactive == BASSASIOActive.BASS_ASIO_ACTIVE_DISABLED)
                        {
                            BassAsio.BASS_ASIO_Stop();
                        }
                        flag &= this.EnableAndJoin(false, asioChannel, this._numchans, this._internalAsioProc, this._format);
                        if (flag)
                        {
                            this._fullDuplexDevice  = asioDevice;
                            this._fullDuplexChannel = asioChannel;
                            this._fullDuplex        = true;
                        }
                        if (flag2)
                        {
                            BassAsio.BASS_ASIO_Start(0, 0);
                        }
                    }
                }
            }
            BassAsio.BASS_ASIO_SetDevice(num);
            return(flag);
        }
Пример #3
0
 public static extern bool BASS_ASIO_GetInfo([In][Out] BASS_ASIO_INFO info);