Go Down

Topic: é possível substituir MIDI? (Read 495 times) previous topic - next topic

Pliavi

Olá  :)  , sou novato no Arduino, ainda não tenho o hardware, tudo que vi funcionar foi pelo VBB(Virtual BreadBoard).
Aí me deparei com o seguinte problema pois não conseguia testar pelo simulador:
Estou fazendo boa parte dos meus projetos bases que se encontra pela internet, e encontrei aqui para fazer uma bateria, escrevi o código com base nesses, mas não consigo testar, não se se está correto, principalmente pela questão de que não quero usar uma saída MIDI e sim direto pra uma caixa de som, vi um projeto em que um cara fazia desta forma, mas era leitura de arquivos de um cartão de memória  para a caixa de som. Então me pergunto:
- É possível substituir o uso da saída MIDI, direto para a caixa de som? Fazer com que os sons midi saiam diretamente para a caixa?Seja ligado diretamente ao Arduino, ou via USB para o PC?

O código que escrevi(usando MIDI):
Code: [Select]

const int LEDpin1 = 13;     //  Indicator LED
const int LEDpin2 = 12;     //  Indicator LED
const int LEDpin3 = 11;     //  Indicator LED
const int LEDpin4 = 10;     //  Indicator LED
const int LEDpin5 = 9;     //  Indicator LED
const int LEDpin6 = 8;     //  Indicator LED

// Variables:
int piezo1 = 0;                 // Guarda o Valor da vibração do Piezo
int piezo2 = 0;                // Guarda o Valor da vibração do Piezo
int piezo3 = 0;               // Guarda o Valor da vibração do Piezo
int piezo4 = 0;              // Guarda o Valor da vibração do Piezo
int piezo5 = 0;             // Guarda o Valor da vibração do Piezo

void setup() {
  pinMode(LEDpin1, OUTPUT);
  pinMode(LEDpin2, OUTPUT);
  pinMode(LEDpin3, OUTPUT);
  pinMode(LEDpin4, OUTPUT);
  pinMode(LEDpin5, OUTPUT);
  pinMode(LEDpin6, OUTPUT);
  Serial.begin(31250);
  blink(3);
}

void loop() {
 
  // Bumbo - Piezo 1

  piezo1 = analogRead(0); // 0 é o pino analógico do piezo1
  if (piezo1 > 599){ // mínimo de força para funcionar
    noteOn(0x90, 35, 0x40);
    digitalWrite(LEDpin1, HIGH);
    // Para a nota:
    noteOn(0x90, 35, 0x00);
    digitalWrite(LEDpin1, LOW);
  }
 
  // Caixa - Piezo 2

  piezo2 = analogRead(1); // 1 é o pino analógico do piezo2
  if (piezo2 > 599){ // mínimo de força para funcionar
    // Toca a nota:
    noteOn(0x90, 38, 0x40);
    digitalWrite(LEDpin2, HIGH);
    // Para a nota:
    noteOn(0x90, 38, 0x00);
    digitalWrite(LEDpin2, LOW);
  }
 
  // Chimbal - Piezo 3

  piezo3 = analogRead(2); // 2 é o pino analógico do piezo3
  if (piezo3 > 599){ // mínimo de força para funcionar:
    // Toca a nota:
    noteOn(0x90, 42, 0x40);
    digitalWrite(LEDpin3, HIGH);
    // Para a nota:
    noteOn(0x90, 42, 0x00);
    digitalWrite(LEDpin3, LOW);
  }
 
  // Prato - Piezo 4
 
  piezo4 = analogRead(3); // 3 é o pino analógico do piezo4
  if (piezo4 > 599){ // mínimo de força para funcionar
    // Toca a nota:
    noteOn(0x90, 41, 0x40);
    digitalWrite(LEDpin4, HIGH);
    // Para a nota:
    noteOn(0x90, 41, 0x00);
    digitalWrite(LEDpin4, LOW);
  }
 
  // Surdo ou Tom - Piezo 5
 
  piezo5 = analogRead(4); // 4 é o pino analógico do piezo5
  if (piezo5 > 599){ // mínimo de força para funcionar
    // Toca a nota
    noteOn(0x90, 51, 0x40);
    digitalWrite(LEDpin5, HIGH);
    // Para a nota:
    noteOn(0x90, 51, 0x00);
    digitalWrite(LEDpin5, LOW);
  }
}

void noteOn(byte cmd, byte data1, byte  data2) {
  Serial.write(cmd); // ou senão funfar use Serial.write(byte(cmd));
  Serial.write(data1);
  Serial.write(data2);
}

// Pisca o led (x) vezes quando ligar:
void blink(int qtv) {
  int i;
  for (i=0; i< qtv; i++) {
    digitalWrite(LEDpin6, HIGH);
    delay(100);
    digitalWrite(LEDpin6, LOW);
    delay(100);
  }
}


Espero ter explicado minha dúvida corretamente.
Obrigado.
XD

Go Up