private void OnDataSeqFrq(long SeqCounter) { //throw new NotImplementedException(); if (mv == null) { return; } if (mv.desVGM == null) { return; } if (mv.desVGM.dat == null) { return; } if ((Audio.sm.Mode & SendMode.MML) != SendMode.MML) { if (rtMML != null) { rtMML.OneFrameSeq(); } } if (mv.desVGM.dat.Count == 0) { return; } eChip = Audio.GetChip(EnmChip.YM2612); if (eChip == null) { return; } Enq enq = SoundManager.GetDriverDataEnqueue(); List <outDatum> dat = mv.desVGM.dat; lock (lockObject) { int badr = 0; while (badr < dat.Count) { outDatum od = dat[badr]; if (od == null) { badr++; continue; } byte val = od.val; switch (val) { case 0x52: byte adr = dat[badr + 1].val; byte prm = dat[badr + 2].val; enq(dat[badr], SeqCounter, eChip, EnmDataType.Normal, adr, prm, null); //enq(dat[badr], 0, eChip, EnmDataType.Normal, adr, prm, null); if (adr == 0x28 && dat[badr].type == enmMMLType.Note && dat[badr].args != null && dat[badr].args.Count > 1) { log.Write(string.Format("noteLog: note:{0} counter:{1}", (int)dat[badr].args[1], SeqCounter)); if (recMode != 0) { if ((int)dat[badr].args[1] >= 0) { NoteON(SeqCounter, (int)dat[badr].args[1]); } else { NoteOFF(SeqCounter, (int)dat[badr].args[1]); } } } badr += 2; break; } badr++; } dat.Clear(); } }
private void OnDataSeqFrq(long SeqCounter) { //throw new NotImplementedException(); if (mv == null) { return; } if (mv.desVGM == null) { return; } if (mv.desVGM.dat == null) { return; } if ((Audio.sm.Mode & SendMode.MML) != SendMode.MML) { if (rtMML != null) { rtMML.OneFrameSeq(); } } if (mv.desVGM.dat.Count == 0) { return; } eChip = Audio.GetChip(EnmChip.YM2608); if (eChip == null) { return; } Enq enq = SoundManager.GetDriverDataEnqueue(); List <outDatum> dat = mv.desVGM.ym2608[0].lstPartWork[0].pg[0].sendData;// mv.desVGM.dat; lock (lockObject) { while (0 < dat.Count) { outDatum od = dat[0]; if (od == null) { dat.RemoveAt(0); continue; } byte val = od.val; byte adr; byte prm; switch (val) { case 0x52: adr = dat[1].val; prm = dat[2].val; enq(dat[0], SeqCounter, eChip, EnmDataType.Normal, adr, prm, null); dat.RemoveAt(0); dat.RemoveAt(0); dat.RemoveAt(0); break; case 0x56: if (2 >= dat.Count) { return; } adr = dat[1].val; prm = dat[2].val; enq(dat[0], 0, eChip, EnmDataType.Force, adr, prm, null); dat.RemoveAt(0); dat.RemoveAt(0); dat.RemoveAt(0); break; default: dat.RemoveAt(0); break; } } } }