Índice:

Outro MIDI para CV Box: 7 etapas (com fotos)
Outro MIDI para CV Box: 7 etapas (com fotos)
Anonim
Outro MIDI para CV Box
Outro MIDI para CV Box

Outra caixa de MIDI para CV é um projeto que desenvolvi quando um Korg MS10 bateu na minha porta e foi colocado no meu estúdio. Sendo que meu setup está fortemente relacionado ao MIDI para automatizar e sincronizar todos os instrumentos, quando comprei o MS10 o primeiro problema que tive que enfrentar foi como implementar esse controle.

Korg MS20 / 10 não são os sintetizadores mais fáceis de implementar MIDI para: em primeiro lugar, eles contam com o controle Hz / V (correlação linear entre a tensão de controle e a frequência da nota), ao invés de oit / V (1V por oitava); segundo, para disparar uma nota, você deve enviar um sinal de porta negativo e curto-circuitar a entrada para o terra (S-Trig), não um sinal de +5 V (V-trig).

Existem várias soluções comerciais para controlar esses instrumentos hoje em dia (ou seja, Arturia Beatstep Pro, Korg SQ-1, Kenton Solo), mas sou um bastardo barato e até 100 euros são demais para um dispositivo "sem som":).

Aqui estamos nós: deixe-me mostrar a você como construir uma caixa de MIDI para CV de baixo orçamento para controlar / automatizar a afinação, o gate, a velocidade e a frequência de corte de um sintetizador pré-MIDI com um controlador MIDI externo (teclado, DAW, sequenciador ou qualquer outro).

"E quanto ao novo MS20 mini?"

Como quase todos sabem, o novo MS20 está pronto para MIDI: IN com um conector MIDI de 5 pólos e IN / OUT com conector USB.

"Então, se eu tiver um mini MS20, essa coisa é inútil!"

Bem não. O MS20 mini reconhece apenas mensagens de ativação / desativação de notas e o teclado não é sensível à velocidade. Não há como superar isso com o MS10 / 20 vintage ou mini teclado, mas com midi box e um teclado sensível à velocidade você é ouro. Além disso, com a caixa MIDI você pode automatizar o corte do filtro (ou qualquer outro parâmetro controlável por voltagem) ou modulá-lo pela nota MIDI de entrada sobre a velocidade. Novamente, o único canal MIDI ao qual o MS20 mini responde é o canal 1. Com esta caixa, você também pode superar esse limite.

"E se eu tiver um sintetizador Oct / V?"

Sem problemas! O código que escrevi é compatível com sintetizadores Oct / V (não testado, mas tenho certeza de que funcionará imediatamente;)).

Passo 1: !! Nota de Cuidado - Isenção de Responsabilidade

Seu equipamento é muito valioso e não deve ser usado para realizar testes.

Brincar com eletricidade pode danificar gravemente o seu equipamento ou ferir-se.

Não posso ser responsabilizado por danos ao seu equipamento / hardware ou mesmo a si mesmo provenientes de qualquer um dos softwares ou esquemas ou informações ou links que relatei neste instrutível.

Você foi avisado!

Etapa 2: projetar o hardware

O Arduino é útil ao lidar com projetos como este. A existência de uma grande comunidade e bibliotecas muito boas que abrangem quase todas as tarefas comuns tornam a escolha certa. Aqui, a placa será programada de modo a ler os dados MIDI de entrada e, em seguida, enviar as tensões apropriadas para o inversor:

- Pitch, convertendo uma saída pwm em uma tensão analógica para conduzir o VCO por meio de um conversor digital para analógico (DAC)

- Velocidade, ao filtrar uma saída pwm para conduzir o VCA com um filtro RC simples

- Filtro de frequência de corte, filtrando uma saída pwm para conduzir o VCF com um filtro RC simples

- Gate, diretamente de uma saída digital no caso de V-trig (coloque 1Kohm em série com a saída para reduzir o dreno de corrente) ou por um simples interruptor de transistor pnp fora da saída digital (veja o esquema anexado à etapa do esquema).

O Arduino não é capaz de gerar tensões estáveis diretamente, mas pulsos de 0 / + 5 V com vários períodos (PWM). Precisamos de conversores digital para analógico (DAC) para o pourpouse. Os filtros RC são os DAC mais fáceis que consigo imaginar. Um filtro RC é bom o suficiente para o amplificador e filtro controlado por tensão (VCA e VCF). Os filtros RC são ajustados para resultar em uma frequência de corte <20 Hz (frequência audível mais baixa).

Fiz alguns testes com capacitores não polarizados de baixa capacidade e terminei com um valor de capacidade de 0,1uF para ser o melhor ajuste. Testado bem em um MS20 MKII.

Infelizmente, não podemos contar com um filtro RC para acionar o oscilador controlado por tensão (VCO), uma vez que não seria preciso o suficiente (na escala Hz / V, na extremidade inferior dois semitons adiacend diferem para menos de 0,02 V; em V / outubro dois semitons adiacentes diferem para 0,083 V); vamos usar um IC DAC (MPC4725) para isso.

Limites Conhecidos

Limitando a tensão da unidade a 5 V (a tensão de saída do Arduino), toda a faixa de 0 a 5 V é coberta para a velocidade; o corte está coberto pela metade (-5V a + 5V); a faixa de VCO é parcialmente coberta sendo que em Hz / V uma tensão de 8 V seria necessária para atingir 440 Hz A4. Com um limite de saída de 5 V, podemos ajustar o oscilador até a frequência D4 em Hz / V.

Etapa 3: lista de componentes

Lista de Componentes
Lista de Componentes
Lista de Componentes
Lista de Componentes
Lista de Componentes
Lista de Componentes

Você precisa de:

1X Arduino UNO (ou nano)

Placa DAC 1X MPC4725

4 conectores mono 1/8 "ou 1/4"

1X conector MIDI

1X 6N138 optoacoplador

1X diodo 1N4148

1X 220 ohm 1/4 W resistor

1X resistor de 1/4 W de 470 ohms

1X resistor de 1/4 W de 10K ohm

4X 1K ohm 1/4 W resistor

2X capacitor 0,1 uF

1X transistor pnp BC547 (no caso de S-trig)

1X caixa ABS (pelo menos 55 x 70 x 100 mm)

… E obviamente breadboard ou perfboard, ferro de solda, fio de solda e cabos (2 metros de 28 AWG devem ser suficientes).

Observe que nas fotos acima meu protótipo monta 100 capacitores eletrolíticos uF, mas eles são muito lentos por causa do tempo de carga da capacidade. Uma capacitância de 0,1 uF é a escolha certa.

Usei um conector adicional para fornecer energia ao meu arduino; não é necessário que seja possível ativar o microcontrolador diretamente através do conector mini USB integrado.

Etapa 4: conexões / esquemas

Conexões / esquemas
Conexões / esquemas
Conexões / esquemas
Conexões / esquemas
Conexões / esquemas
Conexões / esquemas

MIDI IN

O circuito MIDI IN é simples e bem descrito na rede. Pegue ESTE excelente instrutível em MIDI e Arduino por Amanda Gassaei, por exemplo. De qualquer maneira, fiz o enésimo esquema sobre o assunto.

Observe que adicionei um switch no esquema MIDI IN (switch 1): isso é necessário ao enviar um novo esboço para o Arduino porque o opto interfere na linha RX mesmo sem mensagens midi de entrada. Você deve abrir a chave antes de carregar seu esboço ou o IDE falhará ao carregar o novo esboço.

Você pode eventualmente modificar o esboço para usar uma comunicação serial de software.

DAC, Filtro RC, Sintetizador

A conexão para filtros DAC, RC e Synth (pitch, gate e velocidade) são mostrados no diagrama na parte superior. Tomei como referência um patch panel Korg MS20, mas testei tudo em um MS10 também. A conexão direta do CV de velocidade ao ponto de patch de "ganho inicial" do VCA não tem efeito (devo cavar mais fundo), mas se você conectá-lo ao ponto de patch "Total" e aumentar o total de potes externos (MG / T. EXT), você ouvirá belas variações de tom em função da velocidade da nota.

Meus esquemas (e meu protótipo também) não usam um resistor limitador de corrente na saída do DAC, mas é sempre uma boa ideia colocar um para garantir vida longa aos seus circuitos. Um resistor de 220 ohms será suficiente.

Observe que nos esquemas acima de 100 uF limites eletrolíticos são relatados, mas eles são muito lentos por causa do tempo de carga da capacidade. As tampas não polarizadas de 0,1uF são a escolha certa.

Gate Out

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 (gatilho de switch), você pode usar um circuito de switch PNP simples (consulte o esquema anexo).

Etapa 5: o software

O software
O software

Tentei manter o esboço o mais claro e "legível" possível.

Eu trabalhei em uma planilha de cálculo simples que encontrei AQUI para derivar uma curva de Tensão Vs Nota # e usar diretamente a equação no microcontrolador. A equação é mostrada no gráfico no topo. Usei C2 como nota de referência para obter uma relação de nota de tensão Vs compatível com Arp / Korg (C0 - 0,25 V, C1 - 0,5 V, C2 - 1 V, C3 - 2 V, C4 - 4 V, C5 - 8 V e assim por diante).

Tive que definir alguma variável com a qual brincar a fim de obter um bom ajuste … tome o seu tempo para encontrar os valores corretos. É necessário um sintonizador.

Vamos aumentar a frequência pwm de um Timer / Contador para reduzir a ondulação das tensões de saída (tão fácil quanto uma linha de código).

Para manter o código responsivo aos bytes de entrada, ele depende muito de retornos de chamada de funções.

Você precisa das bibliotecas "Adafruit_MCP4725.h" do Sparkfun e do Forty Seven Effects / Francois Best "MIDI.h" para compilar! (Muito obrigado a essas pessoas: sem seus esforços este projeto nunca seria realizado!).

Presumo que você tenha o IDE do Arduino pronto em seu PC e saiba como carregar um esboço na placa do Arduino.

Não sou um programador na vida real, então é bem provável que o esboço pudesse ser escrito de uma maneira melhor. Estou aberto a sugestões (sempre aprendo algo olhando o código do codificador;))

Notas adicionais são escritas no código abaixo. Instale as duas bibliotecas, abra o código anexado em seu IDE, conecte sua placa, selecione o tipo de placa e carregue.

Etapa 6: solução de problemas

Mesmo que o projeto seja de baixo nível, há muitas coisas que podem dar errado. Se você estiver enfrentando problemas ao tentar criar sua própria caixa de MIDI para CV, siga estas etapas:

1. Certifique-se de que o Arduino esteja recebendo mensagens MIDI corretamente

Verifique o canal de saída para o qual seu teclado, DAW ou Sequencer está enviando mensagens MIDI. O Arduino está ouvindo o canal 1 por padrão. Carregue "TEST_MIDI_IN.ino" para ler uma mensagem noteON recebida.

2. Verifique novamente suas fiações

… Ou melhor ainda: verifique três vezes! Reserve seu tempo para isso.

3. Verifique o endereço DAC e a saída

O DAC pode ser configurado para receber dados em um endereço diferente daquele que configurei no esboço. Verifique o endereço executando "I2C_scanner.ino". Se ocorrer um erro "nenhum dispositivo encontrado", verifique a fiação do DAC (as entradas SDA e SCL são diferentes em placas Arduino diferentes!). Se você tiver um oscilocópio (mesmo aqueles osciloscópios digitais de 15 euros são bons o suficiente … e divertidos de brincar!), Você pode verificar a saída do seu DAC carregando o exemplo do gerador de ondas triangulares incluído com a instalação da biblioteca DAC.

Lembre-se que quando um optoacoplador é conectado à entrada RX de sua placa arduino, você não poderá carregar um novo esboço !! Coloque uma chave (pode ser um simples jumper) antes do pino RX.

A maioria desses esboços de teste não são meus ou, pelo menos, baseados em material online existente.

Essa coisa soa desafinada para mim !?

Este não é um problema real: a equação derivada para o controle Hz / V é "ideal". Algum desvio do comportamento ideal pode aumentar de + 5V que você está fornecendo sendo diferente de 5.000V, do DAC e do próprio instrumento. Para resolver, você deve usar seu potenciômetro de sintetizador / sintonia fina e "voilà" um controle MIDI perfeitamente sintonizado;)

Etapa 7: Links úteis

en.wikipedia.org/wiki/CV/gate

www.instructables.com/id/Send-and-Receive-…

www.songstuff.com/recording/article/midi_me…

pages.mtu.edu/~suits/NoteFreqCalcs.html

espace-lab.org/activites/projets/en-arduin…

learn.sparkfun.com/tutorials/midi-shield-h…

provideyourown.com/2011/analogwrite-conver…

www.midi.org/specifications/item/table-3-c…

arduino-info.wikispaces.com/Arduino-PWM-Fr…

sim.okawa-denshi.jp/en/PWMtool.php

Recomendado: