コード例 #1
0
        public void RequestStart(SendMode mode, bool useEmu, bool useReal)
        {
            SetInterrupt();
            fadeOut     = false;
            loopCounter = 0;

            Mode = mode;//orではない

            dataSender.Init();

            if ((mode & SendMode.MML) == SendMode.MML)
            {
                if (dataMaker.unmount)
                {
                    dataMaker.Mount();
                }
                while (!dataMaker.IsRunning())
                {
                    dataMaker.RequestStart();
                    Application.DoEvents();
                }
            }

            int timeout = 2000;

            while (!dataSender.IsRunning() && timeout > 0)
            {
                dataSender.RequestStart();
                Application.DoEvents();
                System.Threading.Thread.Sleep(1);
                timeout--;
            }
            if (timeout < 1)
            {
                throw new Exception("dataSender freeze");
            }

            if (useEmu)
            {
                emuChipSender.RequestStart();
            }
            if (useReal)
            {
                realChipSender.RequestStart();
            }

            ResetInterrupt();

            isVirtualOnlySend = false;
            if (setting.other.PlayDeviceCB)
            {
                if (useEmu && !useReal)
                {
                    isVirtualOnlySend = true;
                    //Audio.stopDataVirtulaOnlySend = dataSender.stopData;
                }
            }
        }
コード例 #2
0
        public void RequestStart(SendMode mode, bool useEmu, bool useReal)
        {
            SetInterrupt();
            fadeOut     = false;
            loopCounter = 0;

            Mode = mode;//orではない

            dataSender.Init();

            if ((mode & SendMode.MML) == SendMode.MML)
            {
                if (dataMaker.unmount)
                {
                    dataMaker.Mount();
                }
                dataMaker.RequestStart();
                while (!dataMaker.IsRunning())
                {
                    //Application.DoEvents();
                }
            }

            dataSender.RequestStart();
            while (!dataSender.IsRunning())
            {
                Application.DoEvents();
            }

            if (useEmu)
            {
                emuChipSender.RequestStart();
            }
            if (useReal)
            {
                realChipSender.RequestStart();
            }

            ResetInterrupt();

            isVirtualOnlySend = false;
            if (setting.other.PlayDeviceCB)
            {
                if (useEmu && !useReal)
                {
                    isVirtualOnlySend = true;
                    //Audio.stopDataVirtulaOnlySend = dataSender.stopData;
                }
            }
        }
コード例 #3
0
ファイル: SoundManager.cs プロジェクト: kuma4649/MDSound
        /// <summary>
        /// セットアップ
        /// </summary>
        /// <param name="DriverAction">ミュージックドライバーの1フレームあたりの処理を指定してください</param>
        /// <param name="RealChipAction">実チップ向けデータ送信処理を指定してください</param>
        /// <param name="startData">DataSenderが初期化を行うときに出力するデータを指定してください</param>
        /// <param name="stopData">DataSenderが演奏停止を行うときに出力するデータを指定してください</param>
        public void Setup(DriverAction DriverAction, Snd RealChipAction, Pack[] startData, Pack[] stopData)
        {
            dataMaker      = new DataMaker(DriverAction);
            emuChipSender  = new EmuChipSender(DATA_SEQUENCE_FREQUENCE);
            realChipSender = new RealChipSender(RealChipAction, DATA_SEQUENCE_FREQUENCE);
            dataSender     = new DataSender(emuChipSender.Enq, realChipSender.Enq, startData, stopData);

            dataMaker.parent      = this;
            emuChipSender.parent  = this;
            realChipSender.parent = this;
            dataSender.parent     = this;

            dataMaker.Mount();
            dataSender.Mount();
            emuChipSender.Mount();
            realChipSender.Mount();
        }
コード例 #4
0
        /// <summary>
        /// セットアップ
        /// </summary>
        /// <param name="DriverAction">ミュージックドライバーの1フレームあたりの処理を指定してください</param>
        /// <param name="RealChipAction">実チップ向けデータ送信処理を指定してください</param>
        /// <param name="startData">DataSenderが初期化を行うときに出力するデータを指定してください</param>
        public void Setup(
            DriverAction DriverAction
            , Snd RealChipAction
            , Deq ProcessingData
            , Deq SetMMLParameter
            , DataSeqFrqEventHandler DataSeqFrqCallBack
            , Action WaitSync
            , PackData[] startData
            , long EmuDelay
            , long RealDelay
            )
        {
            dataMaker      = new DataMaker(DriverAction);
            emuChipSender  = new EmuChipSender(DATA_SEQUENCE_FREQUENCE);
            realChipSender = new RealChipSender(RealChipAction, DATA_SEQUENCE_FREQUENCE);
            dataSender     = new DataSender(
                emuChipSender.Enq
                , realChipSender.Enq
                , ProcessingData
                , SetMMLParameter
                , startData
                , null
                , DataSeqFrqCallBack
                , WaitSync
                , EmuDelay
                , RealDelay
                //, mml2vgmIDE.Common.SampleRate
                //, mml2vgmIDE.Common.SampleRate
                );

            dataMaker.parent      = this;
            emuChipSender.parent  = this;
            realChipSender.parent = this;
            dataSender.parent     = this;

            dataMaker.Mount();
            dataSender.Mount();
            emuChipSender.Mount();
            realChipSender.Mount();
        }
コード例 #5
0
        /// <summary>
        /// セットアップ
        /// </summary>
        /// <param name="DriverAction">ミュージックドライバーの1フレームあたりの処理を指定してください</param>
        /// <param name="RealChipAction">実チップ向けデータ送信処理を指定してください</param>
        /// <param name="startData">DataSenderが初期化を行うときに出力するデータを指定してください</param>
        public void Setup(
            DriverAction DriverAction
            , Snd RealChipAction
            , Deq ProcessingData
            , Action <long> DataSeqFrqCallBack
            , Action WaitSync
            , PackData[] startData
            , long EmuDelay
            , long RealDelay
            )
        {
            dataMaker      = new DataMaker(DriverAction);
            emuChipSender  = new EmuChipSender(DATA_SEQUENCE_FREQUENCE);
            realChipSender = new RealChipSender(RealChipAction, DATA_SEQUENCE_FREQUENCE);
            dataSender     = new DataSender(
                emuChipSender.Enq
                , realChipSender.Enq
                , ProcessingData
                , startData
                , null
                , DataSeqFrqCallBack
                , WaitSync
                , EmuDelay
                , RealDelay
                );

            dataMaker.parent      = this;
            emuChipSender.parent  = this;
            realChipSender.parent = this;
            dataSender.parent     = this;

            dataMaker.Mount();
            dataSender.Mount();
            emuChipSender.Mount();
            realChipSender.Mount();
        }