public DataSender( Enq EmuEnq , Enq RealEnq , Deq ProcessingData , Deq SetMMLParameter , PackData[] startData , PackData[] stopData , DataSeqFrqEventHandler DataSeqFrqCallBack , Action WaitSync , long EmuDelay , long RealDelay , int BufferSize = DATA_SEQUENCE_FREQUENCE , int Frq = DATA_SEQUENCE_FREQUENCE ) { action = Main; this.Frq = Frq; ringBuffer = new RingBuffer(BufferSize); ringBuffer.AutoExtend = false; this.ringBufferSize = BufferSize; SeqCounter = Def_SeqCounter; this.EmuEnq = EmuEnq; this.RealEnq = RealEnq; this.startData = startData; this.stopData = stopData; this.ProcessingData = ProcessingData; this.SetMMLParameter = SetMMLParameter; OnDataSeqFrq += DataSeqFrqCallBack; this.WaitSync = WaitSync; this.EmuDelay = EmuDelay; this.RealDelay = RealDelay; }
/// <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(); }