gaoyue000 发表于 2014-3-26 14:43:25

DIY MIDI 脚踏器(guitar rig)

DIY MIDI脚踏控制器 笔记   最近无聊DIY 了一个MIDI控制器,可以用来控制支持MIDI协议的软件效果器,如guitar rig。MIDI控制器和键盘一样可以控制guitar rig,但是键盘无法在后台对guitar rig 进行控制。而midi协议的控制器不受影响 ,不管软件是在前台运行还是后台运行都可以接受到MIDI信号的控制。
      先说调试过程中遇到的问题:guitar rig 软件必须在正确连接asio声卡的情况下才会接受MIDI信号,所以调试过程中必须保证你的声卡正常连接。
      以下是一个简单的测试电路和测试程序以供大家学习和参考。
      硬件:AT89S52单片机,usb转MIDI线,单片机学习开发板,74HC04,300欧电阻2个。
      软件程序:
#include<reg52.h>#define uchar unsigned char
#define uint unsigned int
sbit anj0=P2^0;
void delay1ms(uint i)
{
    uchar j;
   while(i--)
   {
          for(j=0;j<115;j++)
//1ms基准延时程序
          {
          ;
         }
   }

}
void init()
{

TMOD=0x21; //T/C1工作于8位自动装入状态//

TL1=0xff;// T/C1常数,确定波特率//

TH1=0xff;
//波特率为 31.25k

SCON=0x50; //设串口工作于方式1,//

PCON=0x80; //相当于SMOD=1;//

TR1=1;
//T/C1开始计数//


}


void send(uchar cc,uchar kk,uchar vv)
{   

TR1=1;      //开计数器//

SBUF=cc;    //写入寄存器//

while(TI==0); //等待发送结束//

TI=0;      //清发送标志//

SBUF=kk;
      while(TI==0);

TI=0;

SBUF=vv;
      while(TI==0);

TI=0;

TR1=0;
}


void main()
{

init();//初始化

anj0=1;//按键1给高电平

while(1)

{

if(anj0==0)//判断按键1按下

{

delay1ms(15);

if(anj0==0)//再次判断按键1是否按下

{



while(!anj0);//等待按键释放

send(0xb0,0x07,127);//给串口发 cc,kk,vv

}


}


}
}
硬件测试电路图:

硬件电路中只做了一个按键作为调试使用,还可以通过其他IO口和矩阵键盘扩展更多的按键。http://b137.photo.store.qq.com/psb?/5bcc1b6b-33f0-4f4e-b0c2-e2a357e06a16/YoYdHyn9k4WmB26ZNYmopZyRqEE41sKFum5.*TxfHJs!/b/dKiqrlHlJQAA&bo=0ARmAgAAAAABAJc!&t=5&su=0137129969&rf=2-9

成品实况图:
http://b129.photo.store.qq.com/psb?/5bcc1b6b-33f0-4f4e-b0c2-e2a357e06a16/SIdzt3QuiZRskCX3WnLEFg42Lfp.VzUyM1fPpytjc6U!/b/dLYE6kwsJQAA&bo=vwLrAQAAAAABAHA!&t=5&su=0244985601&rf=2-9

以上代码和电路图均通过本人亲测并且做成实物,欢迎新手和大神来交流学习和指导,索取相关学习材料。另;一下代产品将会陆续增加如:增益,噪声门和哇音踏板等功能,敬请期待。联系QQ:271090822






284264258 发表于 2014-4-9 21:30:59

我操,真正的技术宅!!!!
跟您问一句,line6 的Fbv MK踏板能用在guitar rig上吗,我看上边有个USB口,那口干嘛的啊?

gaoyue000 发表于 2014-4-25 16:34:13

回复 2楼 284264258 的帖子

亲 我也不知道 我没用过啊~不过 能发送MIDI协议信号的 效果器 都通用在guitar rig 上
页: [1]
查看完整版本: DIY MIDI 脚踏器(guitar rig)