Go Down

Topic: é possível substituir MIDI? (Read 514 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
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy