久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1850|回復: 0
打印 上一主題 下一主題
收起左側

Tremolo效果

[復制鏈接]
跳轉到指定樓層
樓主
ID:230485 發表于 2017-9-1 22:51 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
long Tremolo(long TremIn, long RateTp, long ShapeTp,long DepthTp,int ModeValue)   //in 32bit, out 24bit
{
        //-------------------------parameter--------------------------------
        RateTp=RateTp*10>>4;
        if(Rate>RateTp)
                Rate--;
        if(Rate<RateTp)
                Rate++;
        if(Shape>ShapeTp)
                Shape--;
        if(Shape<ShapeTp)
                Shape++;
        if(Depth>DepthTp)
                Depth--;
        if(Depth<DepthTp)
                Depth++;
        //-------------------------fade in and out--------------------------
        DryIn=TremIn;
        if(ModeValue!=ModeValue_1)
        {
                 FlgFade=1;
        }
        ModeValue_1=ModeValue;
       
        if(FlgFade==1)
        {
                FdGn-=2;
                if(FdGn<=0)
                {
                        ModeValueFd=ModeValue;
                        FlgFade=2;
                }       
        }

        if(FlgFade==2)
        {
                FdGn+=2;
                if(FdGn>=16384)
                {
                        FlgFade=0;
                        FdGn=16384;
                }       
        }       
       
       
        //-----------------Mod signal----------------
        //ModeValue=2;
        if(ModeValueFd==0)
        {
                TremI+=(Rate>>6)+1;
        }
        if(ModeValueFd==1)
        {
                TremI+=(Rate>>6)+1;
        }
        if(ModeValueFd==2)
        {
                TrmCnt++;
                if(TrmCnt>12)
                        TrmCnt=12;

                switch (CntGhge)
                {
                        case 0:
                                VarStep=0;break;
                        case 1:
                                VarStep=(Rate>>6);break;
                        case 2:
                                VarStep=(Rate>>6);break;
                }
                if(TremGn1>31101 && TremGn1_1<=31101)
                {
                        CntGhge++;       
                }       
                TremGn1_1=TremGn1;               
                if(CntGhge>2)
                        CntGhge=0;
       
                TremI+=((Rate>>7)+(VarStep))+1;
        }
       
        if(TremI>131071)
                TremI-=131071;
        TremI1=TremI-32767;
        if(TremI1<0)
                TremI1+=131071;
        TremGn1=TriCurve((TremI1>>1));
        if(TremI>16384 && TremI<49152)
                TremGn2Tp=0;
        else
                TremGn2Tp=32767;

       
        if(TremGn2<TremGn2Tp)
        {
                TremGn2+=100;
                if(TremGn2>TremGn2Tp)
                        TremGn2=TremGn2Tp;
        }
        if(TremGn2>TremGn2Tp)
        {
                TremGn2-=100;
                if(TremGn2<0)
                        TremGn2=0;
        }
        TremGn=(TremGn2*Shape+TremGn1*(4095-Shape))>>12;
               
        //---------------------high pass-------------------------
        //{16743445,-33486891,16743445,33486823,-16709743,},
        fout2=((long long)TremIn*16743445-in2_1*33486891+in2_2*16743445+fout2_1*33486823-fout2_2*16709743)>>24;
        in2_2=in2_1;
        in2_1=TremIn;
        fout2_2=fout2_1;
        fout2_1=fout2;
        TremIn=fout2;
       
        if(ModeValueFd!=1)
        { //{14293233,-25310113,11143280,31637641,-15018425,}
                fout=((long long)TremIn*14293233-in_1*25310113\
                                        +in_2*11143280+fout_1*31637641-fout_2*15018425)>>24;
                in_2=in_1;
                in_1=TremIn;
                fout_2=fout_1;
                fout_1=fout;       
                //TremIn=fout;
        }               
        if(ModeValueFd==1)
        {
                fout=((long long)TremIn*FilterParm[(TremGn1>>9)][0]+in_1*FilterParm[(TremGn1>>9)][1]\
                                        +in_2*FilterParm[(TremGn1>>9)][2]+fout_1*FilterParm[(TremGn1>>9)][3]\
                                        +fout_2*FilterParm[(TremGn1>>9)][4])>>24;
                in_2=in_1;
                in_1=TremIn;
                fout_2=fout_1;
                fout_1=fout;       
                //TremIn=fout;
        }               
       
        //--------------------tremolo------------------------
        TremOut=fout*8192>>14;
        TremOut=(long long)TremOut*TremGn>>14;
        //TremIn=((long long)TremIn*14000>>13);
        TremOut=((long long)TremOut*Depth+(long long)DryIn*(4096-Depth))>>12;
        TremOut=TremOut*FdGn>>14;
        if(TremOut>8388607)       
                TremOut=8388607;
        if(TremOut<-8388607)
                TremOut=-8388607;
       
        return (TremOut);

}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 一区二区三区国产视频 | 成人高清在线 | 91精品国产乱码麻豆白嫩 | 久久久资源 | 91精品国产91久久综合桃花 | 亚洲精品中文字幕 | 亚洲精品日本 | 欧美极品在线观看 | 天天爽天天干 | 欧美视频网 | 成人a免费| 免费观看毛片 | 国产96在线 | 国产精品精品视频一区二区三区 | 欧美精品成人 | 日本久草 | 国产精品免费av | 免费在线观看av | 激情av | 亚洲精品91| 久久综合久 | 国产精品中文字幕在线 | 欧美日日日日bbbbb视频 | 国产精品99久久久久久动医院 | 欧美亚洲另类在线 | 精品视频久久久 | 色视频欧美 | 国产精品久久久久久久久久久免费看 | 久久网一区二区 | 亚洲国产精品美女 | 国产一二三区在线 | 亚洲午夜视频 | 免费精品 | 成人免费视频网站在线看 | 精品欧美乱码久久久久久1区2区 | 国产一区2区 | 五月激情综合 | 国产成人福利在线观看 | 亚洲品质自拍视频 | 一呦二呦三呦国产精品 | 色播久久久 |