Exemplo n.º 1
0
        public override void SetLfoAtKeyOn(partPage page, MML mml)
        {
            base.SetLfoAtKeyOn(page, mml);

            for (int lfo = 0; lfo < 4; lfo++)
            {
                clsLfo pl = page.lfo[lfo];
                if (!pl.sw)
                {
                    continue;
                }
                if (pl.type == eLfoType.Hardware)
                {
                    continue;
                }
                if (pl.type == eLfoType.Wah)
                {
                    continue;
                }

                if (pl.param[5] != 1)
                {
                    continue;
                }

                pl.isEnd            = false;
                pl.value            = (pl.param[0] == 0) ? pl.param[6] : 0;//ディレイ中は振幅補正は適用されない
                pl.waitCounter      = pl.param[0];
                pl.direction        = pl.param[2] < 0 ? -1 : 1;
                pl.depthWaitCounter = pl.param[7];
                pl.depth            = pl.param[3];
                pl.depthV2          = pl.param[2];

                if (pl.type == eLfoType.Vibrato)
                {
                    if (page.Type == enmChannelType.ADPCMB)
                    {
                        SetAdpcmBFNum(mml, page);
                    }
                }

                if (pl.type == eLfoType.Tremolo)
                {
                    page.beforeVolume = -1;

                    //if (pw.ppg[pw.cpgNum].Type == enmChannelType.ADPCMA)
                    //SetAdpcmAVolume(pw);
                    if (page.Type == enmChannelType.ADPCMB)
                    {
                        SetAdpcmBVolume(mml, page);
                    }
                }
            }
        }
Exemplo n.º 2
0
        public override void SetLfoAtKeyOn(partPage page, MML mml)
        {
            for (int lfo = 0; lfo < 4; lfo++)
            {
                clsLfo pl = page.lfo[lfo];
                if (!pl.sw)
                {
                    continue;
                }
                if (pl.type == eLfoType.Hardware)
                {
                    continue;
                }
                int w = 0;
                if (pl.type == eLfoType.Wah)
                {
                    w = 1;
                }
                if (pl.param[w + 5] != 1)
                {
                    continue;
                }

                pl.isEnd            = false;
                pl.value            = (pl.param[w + 0] == 0) ? pl.param[w + 6] : 0;//ディレイ中は振幅補正は適用されない
                pl.waitCounter      = pl.param[w + 0];
                pl.direction        = pl.param[w + 2] < 0 ? -1 : 1;
                pl.depthWaitCounter = pl.param[w + 7];
                pl.depth            = pl.param[w + 3];
                pl.depthV2          = pl.param[w + 2];

                if (pl.type == eLfoType.Vibrato)
                {
                    SetFmFNum(page, mml);
                }

                if (pl.type == eLfoType.Tremolo)
                {
                    page.beforeVolume = -1;
                    SetFmVolume(page, mml);
                }

                if (pl.type == eLfoType.Wah)
                {
                    page.beforeVolume = -1;
                    SetFmTL(page, mml);
                }
            }
        }
Exemplo n.º 3
0
        public override void SetLfoAtKeyOn(partWork pw, MML mml)
        {
            base.SetLfoAtKeyOn(pw, mml);

            for (int lfo = 0; lfo < 4; lfo++)
            {
                clsLfo pl = pw.lfo[lfo];
                if (!pl.sw)
                {
                    continue;
                }

                if (pl.param[5] != 1)
                {
                    continue;
                }

                pl.isEnd            = false;
                pl.value            = (pl.param[0] == 0) ? pl.param[6] : 0;//ディレイ中は振幅補正は適用されない
                pl.waitCounter      = pl.param[0];
                pl.direction        = pl.param[2] < 0 ? -1 : 1;
                pl.depthWaitCounter = pl.param[7];
                pl.depth            = pl.param[3];
                pl.depthV2          = pl.param[2];

                if (pl.type == eLfoType.Vibrato)
                {
                    if (pw.Type == enmChannelType.ADPCM)
                    {
                        SetAdpcmFNum(mml, pw);
                    }
                }

                if (pl.type == eLfoType.Tremolo)
                {
                    pw.beforeVolume = -1;

                    //if (pw.Type == enmChannelType.RHYTHM)
                    //SetRhythmVolume(pw);
                    if (pw.Type == enmChannelType.ADPCM)
                    {
                        SetAdpcmVolume(mml, pw);
                    }
                }
            }
        }
Exemplo n.º 4
0
        public override void SetLfoAtKeyOn(partWork pw)
        {
            for (int lfo = 0; lfo < 1; lfo++)
            {
                clsLfo pl = pw.lfo[lfo];

                if (!pl.sw)
                {
                    continue;
                }
                if (pl.type == enmLfoType.Hardware)
                {
                    continue;
                }
                //if (pl.param[5] != 1)
                //    continue;

                pl.isEnd = false;
                //pl.value = (pl.param[0] == 0) ? pl.param[6] : 0;//ディレイ中は振幅補正は適用されない
                pl.waitCounter = parent.GetWaitCounter(pl.param[0]);
                pl.direction   = Math.Sign(pl.param[2]);
                if (pl.direction == 0)
                {
                    pl.direction = 1;
                }
                pl.value            = 0;
                pl.PeakLevelCounter = pl.param[3] >> 1;

                if (pl.type == enmLfoType.Vibrato)
                {
                    SetFNum(pw);
                }

                //if (pl.type == eLfoType.Tremolo)
                //{
                //    pw.beforeVolume = -1;
                //    SetFmVolume(pw);

                //}
            }
        }
Exemplo n.º 5
0
        public override void SetLfoAtKeyOn(partWork pw, MML mml)
        {
            for (int lfo = 0; lfo < 4; lfo++)
            {
                clsLfo pl = pw.lfo[lfo];
                if (!pl.sw)
                {
                    continue;
                }
                if (pl.type == eLfoType.Hardware)
                {
                    continue;
                }
                if (pl.param[5] != 1)
                {
                    continue;
                }

                pl.isEnd            = false;
                pl.value            = (pl.param[0] == 0) ? pl.param[6] : 0;//ディレイ中は振幅補正は適用されない
                pl.waitCounter      = pl.param[0];
                pl.direction        = pl.param[2] < 0 ? -1 : 1;
                pl.depthWaitCounter = pl.param[7];
                pl.depth            = pl.param[3];
                pl.depthV2          = pl.param[2];

                if (pl.type == eLfoType.Vibrato)
                {
                    SetFmFNum(pw, mml);
                }

                if (pl.type == eLfoType.Tremolo)
                {
                    pw.beforeVolume = -1;
                    SetFmVolume(pw, mml);
                }
            }
        }
Exemplo n.º 6
0
        public override void SetLfoAtKeyOn(partPage page, MML mml)
        {
            for (int lfo = 0; lfo < 4; lfo++)
            {
                clsLfo pl = page.lfo[lfo];
                if (!pl.sw)
                {
                    continue;
                }
                if (pl.type == eLfoType.Wah)
                {
                    continue;
                }
                if (pl.param[5] != 1)
                {
                    continue;
                }

                pl.isEnd            = false;
                pl.value            = (pl.param[0] == 0) ? pl.param[6] : 0;//ディレイ中は振幅補正は適用されない
                pl.waitCounter      = pl.param[0];
                pl.direction        = pl.param[2] < 0 ? -1 : 1;
                pl.depthWaitCounter = pl.param[7];
                pl.depth            = pl.param[3];
                pl.depthV2          = pl.param[2];

                if (pl.type == eLfoType.Vibrato)
                {
                    SetSsgFNum(page, mml);
                }

                if (pl.type == eLfoType.Tremolo)
                {
                    SetSsgVolume(mml, page);
                }
            }
        }
Exemplo n.º 7
0
        public override void SetLfoAtKeyOn(partWork pw, MML mml)
        {
            for (int lfo = 0; lfo < 4; lfo++)
            {
                clsLfo pl = pw.lfo[lfo];
                if (!pl.sw)
                {
                    continue;
                }

                if (pl.param[5] != 1)
                {
                    continue;
                }

                pl.isEnd            = false;
                pl.value            = (pl.param[0] == 0) ? pl.param[6] : 0;//ディレイ中は振幅補正は適用されない
                pl.waitCounter      = pl.param[0];
                pl.direction        = pl.param[2] < 0 ? -1 : 1;
                pl.depthWaitCounter = pl.param[7];
                pl.depth            = pl.param[3];
                pl.depthV2          = pl.param[2];
            }
        }