Go Down

Topic: ajuda com controlador midi (Read 653 times) previous topic - next topic

davebrito

duvida de iniciante! Qual a diferença entre control change e program change numa controladora midi?

Eu montei um projeto com 12 botões para controlar minha pedaleira de guitarra! Tudo que fiz foi apenas assistir um video e seguir os passos e deu certo!... depois pensei - se funciona pra pedaleira pode funcionar no meu PC com amplitube ou BIAS AMP... então na hora de programar o BIAS nada funcionou... ja no amplitube a unica coisa que consigo fazer é mudar os bancos.... mas não consigo fazer o AMPLITUBE reconhecer os controles como 1 on/off de um pedal dentro do banco por exemplo! daí reparei que o que muda são os programs change e não tenho nehum botão configurado pra control change... gostaria de saber como modificar algum dos botões para virar CC! ou de repente colocar mais botões em outros pinos com essa fução!

LinoSilva

Sou novo nisto, anda à procura de informação para construir uma pedaleira Midi USB que permita controlar um DAW no caso o ableton fazes alguma ideia de como fazer uma coisa simples apenas 10 botões tipo push para ativar e desativar.

Quanto ao teu problema não sei se isto ajuda!!
https://forum.arduino.cc/index.php?topic=494078.0

davebrito

eu consegui descobri onde estava a questão!!

Os programas no computador usam Códigos ControlChange, enquanto o que eu havia criado estava totalmente feito em ProgramChange

então agora eu quero entender como faço pra ligar leds em cada botão... por exemplo .. quando aperto botão 1 acende o led acima dele... e se eu apertar denovo o mesmo botão o led apaga!!! .. eu estou usando botões sem trava como de fliperamas.

Preciso descobrir onde usar "plugar os leds" no Arduino UNO.... e também se é possivel colocar um potenciometro pra usar como "volume master" e onde ligaria isso no ARDUINO Também

o codigo que estou usando com 12 botões esta assim

#include <MIDI.h>

MIDI_CREATE_DEFAULT_INSTANCE ();

byte patchNum = 0;
byte bankNum = 0;
byte controle = 0;

void setup() {
 pinMode(2,INPUT_PULLUP);
 pinMode(3,INPUT_PULLUP);
 pinMode(4,INPUT_PULLUP);
 pinMode(5,INPUT_PULLUP);
 pinMode(6,INPUT_PULLUP);
 pinMode(7,INPUT_PULLUP);
 pinMode(8,INPUT_PULLUP);
 pinMode(9,INPUT_PULLUP);
 pinMode(10,INPUT_PULLUP);
 pinMode(11,INPUT_PULLUP);
 pinMode(12,INPUT_PULLUP);
 pinMode(13,INPUT_PULLUP);
 MIDI.begin(MIDI_CHANNEL_OMNI);
}

void loop() {
 if (digitalRead(13) == LOW && patchNum < 127){
 patchNum++;
 MIDI.sendProgramChange(patchNum,1);
 delay(200);
}

if (digitalRead(12) == LOW && patchNum >= 1){
 patchNum--;
 MIDI.sendProgramChange(patchNum,1);
 delay(200);
}


 if (digitalRead(2) ==  LOW ){
 if (controle == 0) {
controle = 127;
}else{
controle = 0;
}
if (controle == 0){
 MIDI.sendControlChange(1,0,1);
 delay(200);
 }else{
MIDI.sendControlChange(1,127,1);
delay(200);
}
}
 
 if (digitalRead(3) ==  LOW ){
 if (controle == 0) {
controle = 127;
}else{
controle = 0;
}
if (controle == 0){
 MIDI.sendControlChange(2,0,1);
 delay(200);
 }else{
MIDI.sendControlChange(2,127,1);
delay(200);
}
 }

 if (digitalRead(4) ==  LOW ){
 if (controle == 0) {
controle = 127;
}else{
controle = 0;
}
if (controle == 0){
 MIDI.sendControlChange(3,0,1);
 delay(200);
 }else{
MIDI.sendControlChange(3,127,1);
delay(200);
}
 }
 
 if (digitalRead(5) ==  LOW ){
 if (controle == 0) {
controle = 127;
}else{
controle = 0;
}
if (controle == 0){
 MIDI.sendControlChange(4,0,1);
 delay(200);
 }else{
MIDI.sendControlChange(4,127,1);
delay(200);
}
 }

 if (digitalRead(6) ==  LOW ){
 if (controle == 0) {
controle = 127;
}else{
controle = 0;
}
if (controle == 0){
 MIDI.sendControlChange(5,0,1);
 delay(200);
 }else{
MIDI.sendControlChange(5,127,1);
delay(200);
}
 }
 
 if (digitalRead(7) ==  LOW ){
 if (controle == 0) {
controle = 127;
}else{
controle = 0;
}
if (controle == 0){
 MIDI.sendControlChange(6,0,1);
 delay(200);
 }else{
MIDI.sendControlChange(6,127,1);
delay(200);
}
}
 
 if (digitalRead(8) ==  LOW ){
 if (controle == 0) {
controle = 127;
}else{
controle = 0;
}
if (controle == 0){
 MIDI.sendControlChange(7,0,1);
 delay(200);
 }else{
MIDI.sendControlChange(7,127,1);
delay(200);
}
 }

 if (digitalRead(9) ==  LOW ){
 if (controle == 0) {
controle = 127;
}else{
controle = 0;
}
if (controle == 0){
 MIDI.sendControlChange(8,0,1);
 delay(200);
 }else{
MIDI.sendControlChange(8,127,1);
delay(200);
}
 }
 
 if (digitalRead(10) ==  LOW ){
 if (controle == 0) {
controle = 127;
}else{
controle = 0;
}
if (controle == 0){
 MIDI.sendControlChange(9,0,1);
 delay(200);
 }else{
MIDI.sendControlChange(9,127,1);
delay(200);
}
 }

if (digitalRead(11) ==  LOW ){
 if (controle == 0) {
controle = 127;
}else{
controle = 0;
}
if (controle == 0){
 MIDI.sendControlChange(10,0,1);
 delay(200);
 }else{
MIDI.sendControlChange(10,127,1);
delay(200);
 }
 }
}

davebrito

Consegui colocar 6 botões e 6 leds usando os pinos digitais...
ainda não entendi como funciona o codigo dos pinos analogicos pra enviar MIDI MENSAGEM CC ou PC

meu problema agora é que as vezes aperto o botão e o led não muda... exemplo estava aceso e deveria apagar porém envia o comando CC pois o programa modula!!! so depois que piso denovo ele apaga mas era pra nesse momento acender...acaba confundindo tudo na hora de saber se os efeitos estão ligados ou desligados no programa que uso como pedaleira de guitarra!!!

Será que isso pode ser problema pelo botão ser de pouca qualidade?
outra coisa, eu não coloquei resistor de 220 ohm nos leds pois ele suporta até 9v pelos teste que fiz.. é preciso mesmo esses resistores?

codigo abaixo que estou usando no momento

#include <MIDI.h>

MIDI_CREATE_DEFAULT_INSTANCE ();

byte patchNum = 0;
byte bankNum = 0;
byte controle = 0;

void setup() {
 pinMode(2,INPUT_PULLUP);
 pinMode(3,INPUT_PULLUP);
 pinMode(4,INPUT_PULLUP);
 pinMode(5,INPUT_PULLUP);
 pinMode(6,INPUT_PULLUP);
 pinMode(7,INPUT_PULLUP);
 pinMode(8,OUTPUT);
 pinMode(9,OUTPUT);
 pinMode(10,OUTPUT);
 pinMode(11,OUTPUT);
 pinMode(12,OUTPUT);
 pinMode(13,OUTPUT);
 MIDI.begin(MIDI_CHANNEL_OMNI);
}

void loop() {
 
//if (digitalRead(12) == LOW && patchNum >= 1){
 patchNum--;
 //MIDI.sendProgramChange(patchNum,1);
 //delay(200);
//}


 if (digitalRead(2) ==  LOW ){
 if (controle == 0) {
controle = 127;
}else{
controle = 0;
}
if (controle == 0){
 MIDI.sendControlChange(1,0,1);
 digitalWrite(8, LOW);
 delay(200);
 }else{
MIDI.sendControlChange(1,127,1);
digitalWrite(8, HIGH);
delay(200);
}
}
 
 if (digitalRead(3) ==  LOW ){
 if (controle == 0) {
controle = 127;
}else{
controle = 0;
}
if (controle == 0){
 MIDI.sendControlChange(2,0,1);
 digitalWrite(9, LOW;
 delay(200);
 }else{
MIDI.sendControlChange(2,127,1);
digitalWrite(9, HIGH);
delay(200);
}
 }

 if (digitalRead(4) ==  LOW ){
 if (controle == 0) {
controle = 127;
}else{
controle = 0;
}
if (controle == 0){
 MIDI.sendControlChange(3,0,1);
 digitalWrite(10, LOW);
 delay(200);
 }else{
MIDI.sendControlChange(3,127,1);
digitalWrite(10, HIGH);
delay(200);
}
 }
 
 if (digitalRead(5) ==  LOW ){
 if (controle == 0) {
controle = 127;
}else{
controle = 0;
}
if (controle == 0){
 MIDI.sendControlChange(4,0,1);
 digitalWrite(11, LOW);
 delay(200);
 }else{
MIDI.sendControlChange(4,127,1);
digitalWrite(11, HIGH);
delay(200);
}
 }

 if (digitalRead(6) ==  LOW ){
 if (controle == 0) {
controle = 127;
}else{
controle = 0;
}
if (controle == 0){
 MIDI.sendControlChange(5,0,1);
 digitalWrite(12, LOW);
 delay(200);
 }else{
MIDI.sendControlChange(5,127,1);
digitalWrite(12, HIGH);
delay(200);
}
 }
 
 if (digitalRead(7) ==  LOW ){
 if (controle == 0) {
controle = 127;
}else{
controle = 0;
}
if (controle == 0){
 MIDI.sendControlChange(6,0,1);
 digitalWrite(13, LOW);
 delay(200);
 }else{
MIDI.sendControlChange(6,127,1);
digitalWrite(13, HIGH);
delay(200);
}
}
}

Go Up