Índice:

Arduino MIDI Rhythm Section Sequencer: 8 etapas (com imagens)
Arduino MIDI Rhythm Section Sequencer: 8 etapas (com imagens)
Anonim
Arduino MIDI Rhythm Section Sequencer
Arduino MIDI Rhythm Section Sequencer
Arduino MIDI Rhythm Section Sequencer
Arduino MIDI Rhythm Section Sequencer
Arduino MIDI Rhythm Section Sequencer
Arduino MIDI Rhythm Section Sequencer

Ter um bom software de bateria eletrônica é fácil e barato hoje, mas usar um mouse acaba com a diversão para mim. É por isso que percebi o que inicialmente pretendia ser um puro sequenciador de bateria MIDI com hardware de 64 etapas, capaz de acionar até 12 elementos de bateria diferentes (partes), mas depois evoluí para um sequenciador de seção rítmica …

… aqui vamos nós!

Etapa 1: como funciona

Este hardware não pode gerar sons por conta própria, mas apenas sequenciar hardware externo via MIDI. Isso significa que você precisará de um gerador de som de seus sons de bateria (um sampler ou um sintetizador de bateria ou um PC com seu software de bateria favorito ou o que você preferir) capaz de ser acionado por mensagens de notas MIDI.

É composto principalmente por uma matriz de 4 x 4 botões (com LEDs), um para cada passo de uma barra. Toda a sequência de 64 etapas é composta por 16 etapas multiplicadas por 4 barras. Cada etapa é 1/16 de uma nota.

Existem dois modos de operação: modo ao vivo e modo de edição.

No modo de edição, você pode editar passo a passo sua sequência, definindo qual bateria tocará em cada etapa.

Seu instrumento de hardware externo ("bateria") é acionado pelo envio de uma mensagem MIDI "note on" para diferentes "números de nota MIDI" no canal número "10". Por padrão, esses números de nota são

bateria # 1 (ou seja, bumbo) -> nota MIDI número "60"

bateria # 2 (ou seja, caixa) -> número da nota MIDI "62"

bateria # 3 (ou seja, palmas) -> número da nota MIDI "64"

bateria # 4 (ou seja, Hihat) -> número da nota MIDI "65"

bateria # 5 -> nota MIDI número "67"

bateria # 6 -> nota MIDI número "69"

bateria # 7 -> nota MIDI número "71"

bateria # 8 -> nota MIDI número "72"

bateria # 9 -> número da nota MIDI "74"

bateria # 10 -> nota MIDI número "76"

bateria # 11 -> nota MIDI número "77"

bateria # 12 -> nota MIDI número "79"

Você pode alterar esses valores (e o canal MIDI) no esboço, se preferir.

No modo ao vivo, pressionando os botões de etapa, você pode tocar bateria ao vivo associada a cada etapa, enviando mensagens MIDI via serial. Você pode gravar ao vivo seus pressionamentos de botão e / ou mensagens MIDI recebidas.

Tanto no modo ao vivo quanto no modo de edição, você pode silenciar (ou reativar) um tambor, "tocar rolar" o tambor ativo no momento e "balançar" sua sequência.

Seção de ritmo?

A maioria dos sequenciadores de bateria são puramente acionadores de partes de bateria MIDI, com um número de nota MIDI fixo para cada som de bateria. Neste caso, temos um "sequenciador de seção rítmica" mais do que um "sequenciador de bateria" puro, porque você pode até mesmo sequenciar sintetizadores.

Leia o GUIA DE INÍCIO RÁPIDO para obter mais detalhes e uma lista completa de recursos.

Etapa 2: Hardware

Hardware
Hardware
Hardware
Hardware
Hardware
Hardware

Este projeto é realizado em torno de uma placa Arduino DUE. Tentei manter o hardware o mais simples possível, ou seja, evitando o uso de drivers de LED. Arduino DUE provavelmente não é a placa mais apropriada para lidar com um monte de LEDs sem um driver de LED por causa de seus limites de corrente de saída (de 5 mA a 15 mA, dependendo do pino), mas é o Arduino mais rápido e o tempo é tudo para lidar com sequenciadores. Portanto, lembre-se de que ESTA configuração de hardware provavelmente está levando seu Arduino DEVIDO aos seus limites e pode danificá-lo a longo prazo.

Dito isto, o hardware é principalmente um sequenciador de 16 botões, 16 LEDs (um para cada passo) com 5 botões adicionais para funções e 3 potenciômetros. Também adicionei um LED vermelho após adicionar uma função de gravação ao vivo.

Aqui está a lista de materiais:

- 1x Arduino DEVIDO

- 16 botões de pressão momentâneos e sem travamento com LEDs integrados (você pode usar LEDs externos se preferir, mas lembre-se de usar LEDs de baixa potência !!)

- 1 LED vermelho (baixa potência!)

- 5 botões momentâneos e sem travamento

- 3x 10K de volta única, linear, potenciômetros

- 3 conector fêmea mono de montagem em painel de 6,5 mm

- 1 caixa de plástico (usei uma caixa de 190x140x70 mm)

- 2 conectores DIN fêmea de 5 pinos para montagem em painel (MIDI)

- 1 placa de perfuração dupla face 70x90 mm

- 2x 40 pinos macho de linha única tira de cabeçalho de pino (2,54 mm), melhor se banhado a ouro

- 1 acoplador óptico H11L1

- 1x diodo 1N4148

- resistores de 23x 1000 ohm

- 3 resistores de 220 ohms

- 2 transistores pnp BC547

… fio de solda, alguns cabos, estação de solda, ferramenta de perfuração … e tempo livre:)

Observe que os botões nas fotos foram substituídos por outro tipo de botão (ainda mais barato …) por causa do salto ultrajante …

Tempo necessário para concluir o projeto: 8 - 10 horas

AVISO: SEMPRE use óculos e luvas de proteção durante a perfuração! Falhas de material quente podem ser projetadas para os olhos ou entrar em contato com a pele e causar queimaduras ou danos ainda mais graves a você ou às pessoas ao seu redor

Etapa 3: Fiações

Fios
Fios
Fios
Fios
Fios
Fios

Os botões de etapa são conectados diretamente aos pinos do Arduino de 22 (etapa 1) a 37 (etapa 16). O aterramento dos botões é encadeado em série e conectado ao aterramento DUE do Arduino. Não há necessidade de resistores pullup ou pulldown sendo que os resistores pullup integrados do Arduino são habilitados por software (veja o esboço).

O mesmo é verdadeiro para os 5 botões adicionais (pinos 2, 3, 4, 5 e 6 do Arduino), usados para funções diferentes das etapas. Também coloquei um conector jack fêmea de 6,5 mm em paralelo com o botão "iniciar" para poder tocar e parar minhas sequências remotamente.

Os LEDs são conectados ao aterramento (em cadeia) e aos pinos do Arduino DUE de 38 (etapa 1) a 53 (etapa 16) em série com um resistor de 1K ohm cada para limitar o dreno de corrente e preservar o microcontrolador.

Os potenciômetros são conectados conforme mostrado na imagem anexa. Observe que a tensão de referência é 3,3 V, não 5 V. As entradas usadas são A0, A1 e A2.

Eu também implementei duas saídas de gatilho para sinais de arpejo, como aqueles necessários para arpejar o sintetizador dos anos 80, como o Korg Polysix e o Roland Juno 6/60. Eles são conectados aos pinos A3 e A4, mas você pode usar pinos digitais se preferir sinais digitais. Caso você vá sequenciar um sintetizador compatível com sinais V-Trig (trigger de tensão), um resistor em série de 1k ohm para reduzir o dreno de corrente será suficiente; no caso de um sintetizador S-Trig (switch trigger), você precisará de um circuito de switch pnp simples (veja o esquema anexo).

Os circuitos MIDI IN e OUT estão esquematizados nas imagens anexas. Observe que, ao contrário da maioria dos arduinos, Rx1 e Tx1 são usados por padrão nas placas DUE em vez de Rx0 e Tx0. Isso é ótimo porque você pode carregar seu esboço sem a necessidade de desconectar o Rx todas as vezes. Observe também que usei um optoacoplador H11L1 porque não consegui rodar como deveria um 6N138 comum dentro do limite DUE 3.3V do Arduino.

Etapa 4: Software

O esboço foi escrito no IDE do Arduino e deve ser carregado na placa DUE do Arduino. Não vou entrar em detalhes sobre como fazer o upload do esboço para o seu arduino DUE. Se esta é sua primeira experiência com o Arduino DUE, leia isto. Se esta é sua primeira experiência com o IDE arduino, leia também.

Você pode baixar o firmware atualizado AQUI (link do github).

O esboço conta com a excelente biblioteca de MIDI FortySevenEffects. Você precisará instalar a biblioteca em seu IDE arduino.

As notas de saída MIDI atribuídas a cada bateria são definidas pela variável drumNote [STEPS_NUM] no esboço. Você pode alterá-los à sua vontade.

O número do canal de saída MIDI para bateria é definido como "10" por padrão.

Não sou um programador na vida real e com certeza existem maneiras melhores de codificar o que precisamos aqui. Se você é um programador com alguma sugestão, seja bem-vindo! Por favor, envie-me qualquer variação que possa aumentar a eficiência / eficácia do código e eu irei incluí-la no esboço principal (citando o Colaborador obviamente!).

Etapa 5: Guia de início rápido

TAMBORES: SEQUÊNCIA PASSO A PASSO

Assim que você ligar seu sequenciador (ou reiniciá-lo), uma sequência vazia será carregada. O sequenciador inicializa no modo de edição, com a primeira barra mantida / travada e o primeiro tambor (ou seja, bumbo) selecionado. Isso significa que, ao pressionar qualquer botão de etapa, você atribuirá imediatamente um "chute" a essas etapas. O volume em que o tambor será acionado é definido pela posição do potenciômetro de "volume" ao atribuir o tambor à etapa. Pressionando novamente um botão de etapa atribuído anteriormente, você desatribuirá o tambor atual nessa etapa.

Se você pressionar o botão "iniciar", verá seus LEDs correndo da esquerda para a direita, de cima para baixo, jogando "chute" sempre que um passo de chute é cruzado.

Ao manter pressionado o botão "shift", você verá o LED da 1ª etapa na 1ª linha aceso (significando que o primeiro tambor está selecionado) e o LED da primeira etapa na quarta linha (significando que você está bloqueado na primeira barra). Agora você pode alterar o tambor que deseja sequenciar pressionando outro botão de etapa enquanto mantém "shift" pressionado. Depois de selecionar o novo tambor, solte "shift". Todos os LEDs se apagarão (porque você não atribuiu o novo tambor a nenhuma etapa) e você pode começar a atribuir o novo tambor às etapas. Repita para todos os tambores necessários (até 12).

Agora que você criou um bom padrão, mantenha pressionado "shift" e desative a etapa destacada na linha inferior (deve ser a 1ª etapa da 4ª linha se você tiver adotado o mesmo layout que usei): você acabou de " desbloqueado "a sequência que agora percorrerá todas as 4 barras. Os LEDs brutos inferiores começarão a "mover-se", indicando qual barra está sendo reproduzida no momento (progressão da barra). Você notará que apenas quando no primeiro compasso uma sequência será reproduzida, com todos os outros 3 compassos não gerando nenhum som. Isso ocorre porque você atribuiu bateria apenas ao primeiro compasso, os outros foram deixados em branco. Você pode preenchê-los manualmente (selecione uma nova barra pressionando um dos últimos 4 botões de etapa enquanto mantém pressionado "shift", selecione uma das baterias, preencha as etapas etc. etc.) ou copie e cole a sequência de compasso que você criou para todas as barras entrando no modo de edição (travar novamente na primeira barra) e pressionando "gravar" (que agora assume a função "colar") enquanto mantém pressionado "shift". Mais fácil de fazer do que dizer.

TAMBORES: MODO DE REPRODUÇÃO AO VIVO

Na inicialização, o sequenciador está no modo de edição. Para sair do modo de edição, você deve manter pressionado "shift" e pressionar o botão da barra atualmente mantido / travado (o botão de etapa na 4ª linha ativado). Isso desligará o LED da barra bloqueada anteriormente e desbloqueará a sequência. Você está agora no modo de reprodução ao vivo.

No modo de reprodução ao vivo, ao pressionar qualquer botão de etapa, o tambor associado a esse botão será acionado.

Se você quiser gravar sua sequência ao vivo, inicie a sequência pressionando "reproduzir" e, em seguida, pressione o botão "gravar" (somente no modo de reprodução ao vivo). Um LED vermelho acenderá. Sua execução na matriz do painel de controle do sequenciador de bateria ou qualquer mensagem MIDI de nota ativada (ou seja, de um teclado MIDI externo) será gravada.

Outras funções

Ao pressionar o botão "rolar", o tambor atualmente ativo será tocado em cada etapa (em um rolo). Isso funciona nos modos "passo a passo" e "reprodução ao vivo".

Ao pressionar qualquer botão de etapa enquanto mantém pressionado o botão "mudo", a bateria associada a essa etapa será silenciada (ou não silenciada). Isso funciona nos modos "passo a passo" e "reprodução ao vivo".

Você pode limpar uma sequência de bateria específica pressionando o botão de passo relativo enquanto mantém pressionado o botão "REC".

Você pode limpar toda a sequência (reinicialização suave) mantendo pressionado o botão "iniciar" por mais de 3 segundos.

Você pode "balançar" sua sequência girando o potenciômetro de "balançar".

Você pode desabilitar / habilitar o eco MIDI pressionando o botão "mute" enquanto mantém pressionado o botão "shift". Quando o eco MIDI está habilitado (padrão), qualquer informação presente no conector MIDI INPUT será enviada para o conector MIDI OUTPUT (apenas notas MIDI ativadas, desativadas, pitch bend, aftertouch e alteração de controle são ecoadas).

Tanto a entrada quanto a saída do relógio MIDI são implementadas e habilitadas por padrão. Caso nenhuma entrada de relógio seja recebida, o tempo é definido com o potenciômetro dedicado. Caso uma entrada de relógio MIDI seja recebida, o tempo é calculado a partir disso e o potenciômetro de tempo não responderá. O relógio MIDI é sempre enviado para a saída MIDI.

Etapa 6: Seção de ritmo

A ideia original era um sequenciador de bateria MIDI "puro" de 64 etapas para sequenciar até 12 partes de bateria independentes. Depois de alguns testes, percebi que também teria sido bom controlar uma linha de baixo e atribuí o recurso de pitch-per-step variável apenas à bateria mais recente. Depois disso, modifiquei o código novamente para que pudesse alterar a afinação em cada bateria e controlar até 12 sintetizadores. Uma revisão posterior adicionei polifonia (polifonia por sintetizador limitada a 3 por padrão).

Resumindo:

- enquanto estiver no modo AO VIVO, se a gravação AO VIVO estiver ativada e a sequência iniciada, você pode gravar mensagens de nota MIDI recebidas, polifonicamente. As informações de tom e volume serão armazenadas. As informações de Pitch Bend e Aftertoutch são perdidas. As mensagens MIDI Control Change serão armazenadas. Lembre-se de que você tem apenas um slot CC por canal, por etapa.

- Se a sequência for interrompida, você pode gravar até 3 valores de afinação (acorde) para uma etapa específica de uma barra específica, mantendo pressionado o botão de etapa de destino e pressionando (ao mesmo tempo ou uma por uma) as teclas desejadas no teclado conectado à porta MIDI IN.

Notar que:

- a nota acionada em uma etapa é "morta" na etapa seguinte. Para aumentar a duração da nota, atue no parâmetro VCA "release" do seu sintetizador.

- ao contrário da bateria, as notas não podem ser tocadas em um rolo pressionando o botão "rolo".

- Ao gravar AO VIVO, os dados do canal MIDI de entrada são armazenados na etapa relativa "bateria" (canal MIDI nº 1 -> "bateria" nº 1 e assim por diante).

Você pode limpar uma sequência de sintetizador específica pressionando o botão de etapa "drum" relativo enquanto mantém pressionado o botão "REC". Pressioná-lo novamente limpará a sequência de bateria também. Se uma sequência CC foi gravada, esta será a primeira a ser apagada, seguindo a ordem CC -> Sintetizador -> Tambor

Etapa 7: acionadores de arpejo

Os sintetizadores pré-MIDI do início dos anos 80 são frequentemente equipados com uma "entrada de disparo de arpejo", às vezes chamada. Enviando um sinal trigonométrico de 2,5 a 5,0 V (V-trig ou "trigger de tensão") ou aterrando a entrada de trigger de arpejo (S-Trig ou "switch trigger"), você pode dizer ao sintetizador para avançar um passo em uma sequência de arpejo. Isso pode ser difícil de gerenciar com um sequenciador sem uma saída de gatilho dedicada (às vezes sons de "rimshot" de uma saída dedicada onde / são usados como um expediente para sintetizadores V-trig), mas com uma placa de microcontrolador você pode facilmente gerenciar esse sinal e controle seu arpejo de sintetizador como era feito pela fábrica.

Este sequenciador de seção rítmica inclui a possibilidade de acionar o arpejador de dois sintetizadores diferentes, independentemente.

O uso é muito fácil: selecione a bateria 11 ou 12 (pressione a etapa 11 ou 12 enquanto pressiona "shift") e ative as etapas que deseja que o arpejador mova em uma etapa. Dessa forma, você pode "programar" arpejos regulares de comprimento de 1 / 16th de nota bem compactos, ativando todos os passos, ou 1/8, ativando todos os passos alternados. Além disso, você pode programar arpejos mais complexos ativando etapas seguindo um caminho não regular.

Dependendo do tipo de sinal de disparo suportado pelo sintetizador que você deseja controlar, você precisará de uma modificação de hardware simples: no caso de V-trig (ou seja, sintetizadores Roland), coloque um resistor de 1 Kohm em série com a saída de disparo arduino. No caso de um S-trig (ou seja, sintetizadores Korg), use o shematic anexado à etapa de "fiação" para um gatilho de switch seguro.

Etapa 8: Se as coisas não funcionarem …

Mesmo um projeto relativamente simples como este provavelmente não funcionará 100% na primeira vez que você o ligar. Aqui, por exemplo, a correspondência entre botões e LEDs é crucial, e uma fiação não maquinada tornará o sequenciador inútil.

Para testar todos os diferentes componentes que compõem o sequenciador de etapas, escrevi um esboço de teste simples (consulte o anexo).

Você pode baixar o firmware de teste mais recente AQUI (link do GitHub).

O esboço de teste funciona da seguinte maneira:

- pressione um botão de passo: o LED correspondente deve acender e uma nota MIDI no canal 10 será enviada para a saída MIDI.

- pressione um botão de função: um dos primeiros 5 LEDs acenderá.

- gire um potenciômetro: LEDS acenderão de acordo (primeiro potenciômetro -> primeira linha de LEDs, segundo potenciômetro -> segunda linha de LEDs, terceiro potenciômetro -> terceira linha de LEDs).

- se uma nota MIDI ativada for recebida, o primeiro LED piscará.

Lembre-se de que o eco MIDI está habilitado por padrão. Isso significa que se você tiver um loop de MIDI entre um sintetizador e MRSS, isso pode causar problemas (eu experimentei uma nota dupla previsível sendo acionada na maioria das vezes, mas também notas muito baixas acionadas e um teclado embutido geralmente sem resposta com sintetizadores com MIDI atuando como MIDI Throu … depende do sintetizador). Se for esse o caso, desative o eco de MIDI pressionando o botão "mute" enquanto mantém pressionado o botão "shift".

Recomendado: