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; } } }
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; } } }
/// <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(); }
/// <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(); }
/// <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(); }