Índice:

Controlador MIDI Arduino básico: 5 etapas
Controlador MIDI Arduino básico: 5 etapas

Vídeo: Controlador MIDI Arduino básico: 5 etapas

Vídeo: Controlador MIDI Arduino básico: 5 etapas
Vídeo: ARDUINO CONTROLADOR MIDI USB para EFECTOS | PLUG & PLAY Sin interfaces ni programas extra | TUTORIAL 2024, Novembro
Anonim
Controlador MIDI Arduino básico
Controlador MIDI Arduino básico

Introdução:

Eu sou novo no trabalho com o Arduino, mas espero expandir meu conhecimento ensinando outras pessoas e recebendo feedback. Este é um controlador MIDI muito básico com 4 botões e um potenciômetro. O esboço deste projeto é assim:

1. Construir a placa de ensaio

2. Faça upload do Sketch para o Arduino

3. Compreenda o MIDI sem pêlos e o loop interno de MIDI (loopbe1)

4. encaminhe seu MIDI para um DAW (Ableton)

Suprimentos

1 x Arduino Mega 2560

1 x tábua de pão

1 x cabo USB

1 x potenciômetro

4 x botões de tato

4 resistores de 120 ohm

14 cabos de jumper para placa de ensaio

Etapa 1: Construindo o breadboard

Construindo fora da tábua de pão
Construindo fora da tábua de pão
Construindo fora da tábua de pão
Construindo fora da tábua de pão

Conecte sua placa de ensaio para que todos os componentes correspondam à imagem 1 acima. Cada botão deve ser semelhante à imagem 2. As entradas dos botões são 2, 3, 4 e 5 no Arduino e o pino do meio do potenciômetro é conectado à entrada ANALÓGICA A0.

Etapa 2: enviando o esboço

Carregando o Sketch
Carregando o Sketch

Copie e cole o código abaixo no IDE do Arduino. Selecione a placa correta em "ferramentas" e carregue o esboço para o Arduino.

byte noteON = 144; // nota no commandbyte note; // armazenamento para a nota em reprodução int buttonPin1 = 2; botãoPin2 int2 = 3; botãoPin3 = 4; botãoPin4 = 5; int potPin = A0; boolean currentState = LOW; // stroage para o estado atual do botão boolean lastState = LOW; // armazenamento para o último estado do botão void setup () {pinMode (buttonPin1, INPUT); pinMode (buttonPin2, INPUT); pinMode (buttonPin3, INPUT); pinMode (buttonPin4, INPUT); // desta vez, definiremos o pino como INPUT Serial.begin (9600); // inicializar a conexão serial} void loop () {int PotVal = analogRead (potPin); velocidade de byte = mapa (PotVal, 0, 1023, 0, 127); currentState = digitalRead (buttonPin1); if (currentState == HIGH && lastState == LOW) {MIDImessage (noteON, 60, velocity); // liga a nota 60 com 127 velocity delay (200); // forma bruta do botão debouncing} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // desativa a nota 60 delay (2); // forma bruta do botão debouncing} lastState = currentState; currentState = digitalRead (buttonPin2); if (currentState == HIGH && lastState == LOW) {// se o botão acabou de ser pressionado MIDImessage (noteON, 61, velocity); // liga a nota 60 com 127 velocity delay (200); // forma bruta do botão debouncing} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // desligar a nota 60 delay (2); // forma bruta de botão debouncing} lastState = currentState; currentState = digitalRead (buttonPin3); if (currentState == HIGH && lastState == LOW) {// se o botão acabou de ser pressionado MIDImessage (noteON, 62, velocity); // liga a nota 60 com 127 velocity delay (200); // forma bruta do botão debouncing} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // desligar a nota 60 delay (2); // forma bruta de botão debouncing} lastState = currentState; currentState = digitalRead (buttonPin4); if (currentState == HIGH && lastState == LOW) {// se o botão acabou de ser pressionado MIDImessage (noteON, 63, velocity); // liga a nota 60 com 127 velocity delay (200); // forma crua do botão debouncing} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // desligar a nota 60 delay (2); // forma bruta de botão debouncing} lastState = currentState; } // enviar mensagem MIDI void MIDImessage (byte command, byte data1, byte data2) {Serial.write (command); Serial.write (data1); Serial.write (dados2); }

Ainda sou muito novo na escrita de código em geral … aqueles com um pouco mais de experiência provavelmente poderiam limpar isso …

Etapa 3: Compreendendo o MIDI sem pêlo e os loops internos de MIDI

Compreendendo o MIDI sem pêlo e os loops internos de MIDI
Compreendendo o MIDI sem pêlo e os loops internos de MIDI
Compreendendo o MIDI sem pêlo e os loops internos de MIDI
Compreendendo o MIDI sem pêlo e os loops internos de MIDI
Compreendendo o MIDI sem pêlo e os loops internos de MIDI
Compreendendo o MIDI sem pêlo e os loops internos de MIDI

O Arduino precisa passar por uma ponte serial como Hairless MIDI e, em seguida, por um loop MIDI interno, como loopbe1 (ou barramento IAC para Mac).

Nota: você não pode fazer upload de um esboço para o Arduino enquanto ele estiver conectado à ponte serial MIDI sem fio.

Selecione seu Arduino na porta serial Hairless MIDI e loopbe1 ou IAC Bus na saída MIDI.

Nota: certifique-se de que o mudo não esteja ativado ao usar o loopbe1.

Etapa 4: conectando-se à sua DAW

Conectando-se ao seu DAW
Conectando-se ao seu DAW

Se você estiver recebendo um sinal do aplicativo Hairless MIDI ao pressionar um botão no breadboard (as luzes piscarão), você poderá enviar dados MIDI para uma DAW. Eu usei o Ableton, mas qualquer DAW deve funcionar. Certifique-se de que seu loop MIDI interno (loopbe1) está habilitado em suas preferências DAW (no Ableton você deseja que a "trilha" seja habilitada). Em seguida, selecione uma das entradas de trilha MIDI para o loop MIDI (loopbe1), conforme mostrado na imagem acima.

Etapa 5: Jogue

Image
Image

Os botões agora funcionarão como qualquer outro controlador MIDI! O potenciômetro mudará a velocidade das notas enviadas para a DAW. O vídeo (muito escuro…) acima mostra o som de um piano de cauda em ação!

Recomendado: