Índice:

HX1-DM - a Drum Machine Upcycled Arduino DUE Powered DIY (feita com um Dead Maschine MK2): 4 etapas
HX1-DM - a Drum Machine Upcycled Arduino DUE Powered DIY (feita com um Dead Maschine MK2): 4 etapas

Vídeo: HX1-DM - a Drum Machine Upcycled Arduino DUE Powered DIY (feita com um Dead Maschine MK2): 4 etapas

Vídeo: HX1-DM - a Drum Machine Upcycled Arduino DUE Powered DIY (feita com um Dead Maschine MK2): 4 etapas
Vídeo: Just another Arduino DUE powered DIY Drum Machine (made with a dead Maschine MK2) 2024, Novembro
Anonim
Image
Image
O reparo
O reparo

As especificações

  • Controlador / drum machine híbrido Midi: Arduino DUE alimentado!
  • 16 almofadas de detecção de velocidade com latência muito baixa 1> ms
  • 8 botões do usuário atribuíveis a qualquer comando Midi #CC
  • Sequenciador integrado de 16 canais (não é necessário computador !!)
  • Funcionalidade MIDI in / out / thru (pode ser usada como uma interface USB midi!)
  • Suporte parcial de relógio MIDI e MTC (trabalhando no controle MMC e DAW)

Este é definitivamente um dos projetos mais complicados em que trabalhei, falando de 17 registradores de mudança de saída, 6 registradores de mudança de entrada, 2x multiplexadores de 16 canais trabalhando em uma placa de circuito. Não tenho ideia do que é o quê e onde, além disso, nunca baguncei com registradores de deslocamento / multiplexadores antes de …

Tudo começou como uma compra por impulso do eBay, eu realmente queria um Native Instruments Maschine porque sempre gostei dos drum pads deles em comparação com os do estúdio MPC que eu possuía, então quando vi um com defeito no eBay por £ 40 libras, pensei Eu tentaria consertá-lo com o pior cenário possível, sendo 'se eu não posso consertar, tenho um Arduino DUE e alguns UNO por aí, sempre posso fazer algum hack'

Eu realmente gosto dessas almofadas de bateria de qualquer maneira !!!!

Suprimentos

1 x Native Instruments Maschine MK2 com defeito

1 x Arduino devido.

17 x SN74HC595’s - registradores de deslocamento de saída de 8 bits

6 x SN74HC165’s - registradores de deslocamento de entrada de 8 bits

2 x 74HC4067 - multiplexadores de 16 canais.

2 visores OLED de 256x64 de 3,2”.

um pouco de fio achatado (um cabo flexível antigo serve)

Etapa 1: o reparo

O vendedor do eBay teve a gentileza de dar uma ideia do que esperar na descrição e removeu a porta USB. A placa sofreu uma sobretensão e não ligou. Faça o sinal do multímetro…. A placa parecia ter um curto.. 'Eu já consertei inúmeras placas-mãe com curtos antes Então, quão difícil pode ser!?!' componente na placa incluindo a CPU principal. Esta prancha estava de um jeito muito ruim!

Eu continuei a cutucar e cutucar com meu multímetro, fiz um pouco de pesquisa sobre os componentes e descobri o que cada um faz além da NI fez um ótimo trabalho em tornar as coisas bastante óbvias com os vários pontos de teste ao redor da placa-mãe ??.

Etapa 2: o hack

O hack
O hack
O hack
O hack
O hack
O hack

Sabendo que vou precisar substituir tudo, exceto a CPU principal (que não será necessária), procurei o eBay. Felizmente, tudo que precisava era barato, então pedir um monte deles foi divertido. ?

17 x SN74HC595’s - registradores de deslocamento de saída de 8 bits

Os 17 registradores de deslocamento de saída são usados para controlar os LEDs multicoloridos do pad de bateria e todos os LEDs de botão (136 para ser mais exato!). Eles são realmente fáceis de usar e rapidamente encontrei uma biblioteca usando o IDE do Arduino para me salvar de fazer uma.. eles estão acorrentados.

6 x SN74HC165’s - registrador de deslocamento de entrada de 8 bits

Esses registradores de deslocamento de entrada são ótimos para várias entradas em 1 canal. Existem 48 botões no total.

2 x 74HC4067 - multiplexadores de 16 canais

Temos 16 pads e 8 botões restantes, esses também são analógicos. Achei mais fácil usá-los, pois os da placa eram de 8 canais e tive problemas para encontrar onde conectar os pinos de dados.. cue spaghetti junction….

2 visores OLED de 256x64 de 3,2”

Tem que ter algumas telas !!! Não consegui encontrar nenhuma informação nas telas de LCD originais que vinham no NI Maschine e não me incomodava mais em perder tempo tentando, então decidi pedir algumas da China … Usei a biblioteca UG8x8 para fazê-las funcionar. As novas telas eram um pouco menores do que a original, então eu apenas apaguei as 'partes ruins'.

1 x Arduino devido

Eu tive isso por aí esperando por um tempo esperando por um projeto digno o suficiente por todo aquele poder !! Ocorreu um problema que encontrei. Parece que algumas revisões dessas placas apresentam um problema de redefinição que significava que às vezes eu precisava apertar o botão de redefinir para que funcionasse depois de enviar um esboço. Isso foi facilmente corrigido com um resistor de 10K (há uma postagem no fórum do Arduino sobre isso).

Etapa 3: o código

Fiquei realmente impressionado com a quantidade de suporte que existe na comunidade Arduino, encontrar exemplos de código e bibliotecas para os vários componentes foi muito simples e direto.

Colocar o midi USB em funcionamento foi fácil e demorou alguns minutos. Os LEDs demoraram um pouco e tive que criar um esboço que incrementasse cada pino HIGH em intervalos de 1 segundo e fiz uma anotação. Fiz uma matriz que continha os números do PIN para facilitar quando se tratava de codificar tudo.

Fiz 2 bibliotecas para falar com os multiplexadores, uma lida com os pads analógicos e a outra com os botões. Novamente, isso foi muito simples. Anexei-os, sinta-se à vontade para usar edição etc.

Eu queria ter um sequenciador e a capacidade de gravar sem a necessidade de um computador, encontrei algumas informações sobre como converter BPM para ms e encontrei uma ótima biblioteca de cronômetros DUE do Arduino.

Usando a biblioteca de cronômetros, consegui definir entradas de leitura e coisas em intervalos:

Pads @ 1ms - descobri que isso dá o melhor equilíbrio entre artefatos de resposta / de-bounce.

Botões a 40ms - usei uma biblioteca de filas para que não houvesse perda de pressionamentos.

O processamento é feito no loop principal, você não pode fazer muito quando estiver em uma interrupção, pois isso bloqueará o Arduino.

Midi stuff @BPM (em ms) - para o sequenciamento, no BPM desejado, uma função é chamada que atualiza quais notas ETC devem ser tocadas e aumenta o contador de batidas.

Etapa 4: Conclusão

Conclusão
Conclusão

Não tenho certeza do que fiz aqui, mas estou muito orgulhoso, os pads respondem excelente, eu tive que mexer com o tempo para obter o equilíbrio certo com a capacidade de resposta e problemas de debounce. O sequenciamento funciona muito bem e, depois de descobrir o suporte DAW, posso integrar totalmente isso ao meu fluxo de trabalho e adicionar coisas em um controlador que sempre quis!. Este foi um projeto muito divertido de se trabalhar e um ótimo exercício em se familiarizar com C, compreender a engenharia reversa e como multiplexadores, registradores de deslocamento e sequenciamento de MIDI funcionam. Estou continuando a melhorar o código principal e posso lançá-lo um dia como um designer de ritmo de código aberto.

PONTAS:

Descobri como alterar o nome USB do DUE editando um dos arquivos de cabeçalho na pasta Arduino / SAM.

MIDI-OX é uma ótima ferramenta para testar a funcionalidade Midi

LINKS:

www.usb.org/sites/default/files/midi10.pdf - USB MIDI Spechttps://midi.teragonaudio.com/tech/miditech.htm https://guitargearfinder.com/guides/convert-ms -mi… Algumas informações sobre como converter BPM para ms

travis-ci.com/SMFSW/Queue - Para entradas de botão para não perder nenhum pressionamento!

github.com/olikraus/u8g2/wiki/u8x8referenc… - UG8 lib para telas de LED / LCD

github.com/ivanseidel/DueTimer/releases - Arduino DUE Timing lib

www.pjrc.com/teensy/td_libs_Encoder.html - Biblioteca do codificador para o botão grande

shiftregister.simsso.de/ - ShiftIn Register lib - Criado por Henrik Heine, 24 de julho de 2016

forum.arduino.cc/index.php?topic=57636.0 - material MIDI Time Code

Recomendado: