Índice:

O Synthfonio - um instrumento musical para todos: 12 etapas (com fotos)
O Synthfonio - um instrumento musical para todos: 12 etapas (com fotos)

Vídeo: O Synthfonio - um instrumento musical para todos: 12 etapas (com fotos)

Vídeo: O Synthfonio - um instrumento musical para todos: 12 etapas (com fotos)
Vídeo: Criando backingtrack com o Reaper - Simplificado 2024, Julho
Anonim
Image
Image
Diagrama de Fiação
Diagrama de Fiação

Eu gosto de sintetizadores e controladores MIDI, mas sou péssimo em tocar teclado. Gosto de escrever música, mas para realmente tocar essa música você precisa ter aprendido a tocar um instrumento. Isso leva tempo. Tempo que muita gente não tem e que costuma desencorajá-las a continuar praticando. Estou tentando mudar isso. Este projeto é uma tentativa de diminuir a distância entre o momento “Eu gostaria de aprender a jogar X” e o momento “Eu gosto de jogar X”. Eu sei que a maioria de nós estava, ou ainda está sonhando com o último, mas ficamos presos no primeiro, e eu também sei que o momento em que fui capaz de executar e desfrutar minhas primeiras músicas básicas de quatro acordes na guitarra, foi o momento em que eu realmente comecei a aprender o instrumento e nunca desisti dele desde

O que é isso

É um instrumento fácil de aprender, simples de operar, orientado para a improvisação e com infinitas possibilidades de sons (como um controlador MIDI). Possui 2 conjuntos de teclas, um para definir acordes e assinaturas de tom, e outro para realmente tocar as notas. Qualquer acorde pressionado nas teclas do braço do instrumento definirá a altura das teclas na alça do instrumento, semelhante a um violão, violino e outros instrumentos de cordas; com o avanço adicional de que este é um dispositivo inteligente que pode interpretar a escala que está sendo tocada a partir de uma única nota ou par de notas.

Como funciona

Simples. Você quer tocar um acorde E? você apenas pressiona a tecla E no pescoço (veja o diagrama na etapa 11) e dispara o que quiser nas teclas de alça. Não se preocupe, vai estar afinado. Você pode usar as teclas de controle para tocar acordes, melodias e arpejos em qualquer tonalidade desejada, apenas pressionando a tecla correspondente no braço. Da mesma forma, pressionar a tecla A no braço em conjunto com a tecla C (terça menor de A) ativará uma tonalidade de A menor para as teclas de controle.

Isso pode permitir que qualquer músico execute uma melodia de 4 acordes (a música mais popular é de 4 acordes), acompanhamento ou até improvisação; com não mais do que alguns dedos na posição.

Este instrumento pode funcionar como controlador MIDI e eu incorporei um sintetizador embutido simples para tocar sem equipamento externo. Dependendo da placa arduino que você escolher para usar, este projeto também pode funcionar como um controlador MIDI USB ou controlador MIDI sobre BLE.

Minhas isenções de responsabilidade usuais: - Não sou um falante nativo de inglês, portanto, erros podem ter sido cometidos. - Além disso, sou autodidata em eletrônica, codificação e música, então, novamente, erros podem ter sido cometidos. - Este é um "instrumento para todos" tocar, não necessariamente para construir. Você precisa de um pouco de conhecimento em eletrônica e codificação para trabalhar neste projeto.

_

Suprimentos

-Um Arduino: qualquer arduino deve funcionar. Eu recomendo uma placa com recursos USB, como as placas baseadas em ATmega32U4 (leonardo, micro, etc.), para que você possa usar este projeto como um controlador MIDI USB. Usei um MKR1010, porque ele também tem recursos bluetooth e uma porta serial de hardware secundária.

-ATmega328 em uma placa de ensaio (opcional): Isso é para o sintetizador integrado. Você poderia usar uma placa UNO adequada, mas optei por um sistema mais simples.

-Módulos Multiplexadores: 2 deles, um para as chaves da maçaneta e outro para as chaves do pescoço.

-Módulo carregador de bateria: Eu recomendo algo parecido com o do link, porque tem proteção contra sobrecarga / descarga.

Bateria -18650

-Módulo elevador elevador de tensão: cuidado com isso! Certifique-se de que o módulo escolhido é capaz de suportar tensões de entrada inferiores a 5v. Os módulos do carregador de bateria geralmente produzem cerca de 4 V e, se você alimentar essa tensão em um módulo de aumento que não seja classificado para essa tensão, poderá ter problemas. Usei um módulo que precisava de pelo menos uma tensão de entrada de 5 V e fritei meu arduino. (algum projeto para reutilizar, reciclar uma placa frita? Por favor, deixe um comentário)

-1/4 conector de áudio feminino

Potenciômetro estéreo -10k

Potenciômetro -10k (x2)

Chaves -x2: Eu recomendo este, mas qualquer chave que segure sua posição servirá.

-x14 Tact switches: para as chaves do pescoço.

-x9 Interruptores de limite: Lidar com as teclas (7) e interruptores de transposição (2)

Resistor -1k ohm

-x2 resistor de 220 ohms (se você estiver fazendo uma saída MIDI de 5v)

-33 ohm e resistores de 10 ohm (se você estiver fazendo uma saída MIDI de 3,3 V)

-Pequenas placas de ensaio: Quantas você quiser! Eu construo tudo em placas de ensaio de 170 pontos.

- Fios de ligação: Você não pode ter o suficiente

Por que dois arduinos separados ?: Sim, deve ser possível escrever um único esboço executando um sintetizador digital, com USB MIDI, MIDI sobre BLE e funções regulares de MIDI, na mesma placa. Deveria, talvez seja, mas não consegui. A coisa é; a maioria das bibliotecas de sintetizadores são feitas para o ATmega328, que não possui recursos USB. Por outro lado, as poucas placas baseadas em ATmega32U4 (com capacidade USB) que executam bibliotecas de sintetizador, o fazem com problemas. Esqueça o MIDI sobre o BLE, você precisa de algo como o MKR1010 para isso (até onde eu li, um módulo hm-10 não faz MIDI), mas a família MKR usa uma arquitetura diferente, e nem mesmo compilar esboços com qualquer uma das bibliotecas de sintetizadores que encontrei online. Portanto, são dois microcontroladores separados para mim. A placa principal fazendo todas as coisas de detecção, interpretação e midi; e um segundo para o sintetizador integrado, que só lê dados midi do principal e produz som. Versão única do Arduino (opcional): Sim, se você realmente não se preocupa com algumas das funcionalidades que eu precisava, você poderia usar apenas uma única placa. Por exemplo, um único ATmega32U4 como um controlador USB MIDI com a biblioteca de sintetizadores menos bugada que você pode executar nele (sem MIDI BLE, embora), ou um único ATmega328 executando qualquer biblioteca de sintetizador de sua preferência (sem USB MIDI).

Etapa 1: Diagrama de fiação

Aqui está o diagrama completo do projeto. Lembre-se, você não precisa usar uma placa MKR, a maioria das placas funcionará, você só precisa estar ciente das possibilidades que cada placa tem (compatível com USB, compatível com BLE, etc.) e ajustar a tensão alimentada para vin pin. Agora vamos ver cada seção com mais detalhes:

Etapa 2: Diagrama de fiação: controlador MIDI e multiplexadores

Diagrama de fiação: controlador MIDI e multiplexadores
Diagrama de fiação: controlador MIDI e multiplexadores
Diagrama de fiação: controlador MIDI e multiplexadores
Diagrama de fiação: controlador MIDI e multiplexadores

-Eu compartilhei quase todos os pinos entre os dois multiplexadores, para reduzir ainda mais o número de pinos do arduino utilizados. Na verdade, apenas os pinos de sinal de cada módulo de multiplexadores precisam ter seu próprio pino Arduino dedicado. Esse arranjo não produz problemas ou interferência entre as teclas, já que o funcionamento do esboço é linear e o arduino verifica apenas uma entrada por vez. O que quer que o outro multiplexador faça, ou o outro pino de entrada receba durante esta verificação, será ignorado.

- Os dois interruptores identificados como Interruptores de transposição são interruptores de limite que são ativados deslizando a alça através do orifício deslizante do corpo principal (consulte as etapas de "alça" e "corpo" para obter mais detalhes) e eles transpõem todas as notas de alça uma oitava acima ou abaixo.

-Para controle de volume usei um potenciômetro estéreo, pois precisamos controlar dois tipos de volumes: analógico (sintetizador integrado) e MIDI.

-O circuito de saída MIDI tem resistores classificados para a saída de 3,3 V da minha placa MKR. Se você estiver usando uma placa de 5v, você precisa mudar seu resistor de acordo com o diagrama MIDI na segunda imagem.

Etapa 3: Diagrama de fiação: o sintetizador

Diagrama de fiação: o sintetizador
Diagrama de fiação: o sintetizador

-A conexão com OSC2 no ATmega328 vai (através de um capacitor) para aterrar no pino digital 5. Fiz isso apenas por conveniência, então tudo se encaixa bem e perto na placa de ensaio. Se você está pensando em fazer o mesmo, certifique-se de sempre declarar o pino 5 como uma entrada e nunca como uma saída.

- A biblioteca de sintetizadores que escolhi emite som do pino 11, conforme mostrado no meu diagrama. Nem todas as bibliotecas usarão esse pino, certifique-se de alterá-lo de acordo. Eu recomendo sempre usar o resistor e as tampas como filtros.

-Adicionei um switch nos 5v fornecidos pela placa principal, para poder desligar o ATmega e economizar bateria enquanto utilizo o instrumento como controlador MIDI.

Etapa 4: Diagrama de fiação: Fonte de alimentação

Diagrama de fiação: Fonte de alimentação
Diagrama de fiação: Fonte de alimentação

-Eu sei, todas as placas MKR têm um circuito de carregamento Li-Po integrado. Acontece que não consegui encontrar nenhuma bateria lipo (acessível) com as especificações necessárias em nenhum lugar do país onde moro (Chile, América do Sul) e também, eu já tinha o módulo de carregamento e um par de 18650 espalhados, então eu pegou-os. Além disso, acho que a maioria das pessoas tentará este projeto usando mais placas disponíveis comercialmente, que geralmente não têm um circuito de carga.

- Mais uma vez, certifique-se de que o módulo escolhido para aumentar a tensão da bateria é capaz de receber tensões de entrada inferiores a 5v. Módulos carregadores de bateria geralmente produzem em torno de 4 V, e se você alimentar essa tensão em um módulo de aumento que não é classificado para essa tensão, você pode fritar sua placa. Eu fiz. Duas vezes, antes de saber disso.):

-Recomendo colocar a chave antes do módulo de aumento de tensão, não depois. Não entendo muito bem como isso funciona, mas medi a corrente em ambas as opções (interruptor antes e depois) e ao colocar o interruptor após o elevador de tensão medi um pouco de vazamento de corrente da bateria, mesmo quando o interruptor estava desligado.

Etapa 5: a ideia do código

O código simplesmente executa uma verificação constante de todas as chaves de identificador até detectar um acerto. Ao fazê-lo, ele verifica as teclas que estão sendo pressionadas no braço e interpreta a postura que está sendo feita e, portanto, a tonalidade da música (se nenhuma tecla for pressionada no braço, o último conjunto de tonalidade permanecerá). Isso definirá qual nota a tecla de controle pressionada irá produzir. Por último, os dois interruptores de transposição são verificados, a fim de transpor a nota uma oitava acima, uma oitava abaixo ou uma oitava padrão; dando ao instrumento uma faixa de 3 oitavas. Com base em todas essas variáveis, o Synthfonio produz o comando midi correspondente.

Quanto ao código de sintetizador, faça como eu fiz, e simplesmente copie e cole o esboço de exemplo “midi in” da biblioteca de sintetizador que melhor atende às suas necessidades. Aqui estão algumas recomendações: -The_synth-Mozzi-poly-synth-Noodle-Synth

Ah, caso você queira integrar as funcionalidades de MIDI e sintetizador na mesma placa, sugiro o tipo de esboço descrito neste link.

Etapa 6: O Código

Em primeiro lugar, você precisará das seguintes bibliotecas: Biblioteca MIDI: https://github.com/FortySevenEffects/arduino_midi_… Biblioteca Multiplexer:

Além disso, se você for usar uma placa compatível com USB ou o MKR 1010, também pode experimentar essas bibliotecas: MIDI USB: https://github.com/tigoe/SoundExamples/blob/master…MIDI sobre BLE:

#incluir

MIDI_CREATE_DEFAULT_INSTANCE (); #include CD74HC4067 my_mux (4, 3, 2, 1); // cria um novo objeto CD74HC4067 com seus quatro pinos de controle #define mux_handle_pin 5 // define um pino para compartilhar com os canais do multiplexador de alça #define mux_neck_pin 0 // define um pino para compartilhar com os canais do multiplexador de braço // definir opções de transposição #define transposeUp 7 #define transposeDown 6 bytes neckKeysNumbers = {12, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}; byte fingerAmount = 0; byte neckKeyHolded = {0, 0, 0}; raiz de byte = 48; byte minorThird; byte handleKeyNote = {0, 48, 50, 52, 53, 55, 57, 59}; byte handleKeyNoteSent = {0, 0, 0, 0, 0, 0, 0, 0}; oitava int = 0; void setup () {pinMode (LED_BUILTIN, OUTPUT); MIDI.begin (1); // Inicie o MIDI e ouça o canal 1 pinMode (mux_handle_pin, INPUT_PULLUP); pinMode (mux_neck_pin, INPUT_PULLUP); pinMode (transposeUp, INPUT_PULLUP); pinMode (transposeDown, INPUT_PULLUP); } void loop () {// For-Loop para verificar todas as teclas (1-7) no HANDLE. para (byte i = 1; i <8; i ++) {my_mux.channel (i); // verificar todas as teclas através do multiplexador // se um switch (tecla) for pressionado & se o estado da tecla for "não pressionado" if ((digitalRead (mux_handle_pin) == LOW) && (handleKeyNoteSent == 0)) {atrasoMicrosegundos (2400); // For-Loop para verificar as 12 chaves (0-11) no NECK. para (byte k = 0; k 0)) {MIDI.sendNoteOff (handleKeyNoteSent , 0, 1); // Interrompe a nota handleKeyNoteSent = 0; // define como "não enviado" delay (18); }}} // Esta função pega a chave do pescoço detectada e com base nisso // define o número da nota raiz (em MIDI), // amd também define o número da nota que seria sua terceira menor void rootSetting () {switch (neckKeyHolded [0]) {case 12: root = 47; minorThird = 3; pausa; caso 1: raiz = 48; minorThird = 4; pausa; caso 2: raiz = 49; minorThird = 5; pausa; caso 3: root = 50; minorThird = 6; pausa; caso 4: root = 51; minorThird = 7; pausa; caso 5: root = 52; minorThird = 8; pausa; caso 6: root = 53; minorThird = 9; pausa; caso 7: root = 54; minorThird = 10; pausa; caso 8: root = 55; minorThird = 11; pausa; caso 9: root = 56; minorThird = 12; pausa; caso 10: raiz = 57; minorThird = 1; pausa; caso 11: raiz = 58; minorThird = 2; pausa; padrão: root = 48; minorThird = 4; pausa; }} // Esta função define a nota real que a tecla hande irá tocar. // primeiro verifica se a transposição muda e transpõe uma oitava para cima ou para baixo, se necessário, // então verifica se a quantidade de dedos na posição corresponde a um acorde maior ou menor (1 ou 2 dedos). // Finalmente, se 2 dedos forem detectados na posição, ele verifica se os segundos dedos estão localizados // na terceira nota menor correspondente. Caso contrário, o 2º dedo será ignorado e o acorde será // interpretado como um acorde maior. Se o segundo dedo estiver realmente tocando uma terça menor, a função definirá // as notas que as teclas de controle executarão. void keyConstructor () {if (digitalRead (transposeUp) == LOW) {oitava = 12; } else if (digitalRead (transposeDown) == LOW) {oitava = -12; } else {oitava = 0; } // escala maior if (neckKeyHolded [1] == 0) {handleKeyNote [1] = root + oitava; handleKeyNote [2] = raiz + oitava + 2; handleKeyNote [3] = raiz + oitava + 4; handleKeyNote [4] = raiz + oitava + 5; handleKeyNote [5] = raiz + oitava + 7; handleKeyNote [6] = raiz + oitava + 9; handleKeyNote [7] = raiz + oitava + 11; } // escala menor if (neckKeyHolded [1] == minorThird) {handleKeyNote [1] = root + oitava; handleKeyNote [2] = raiz + oitava + 2; handleKeyNote [3] = raiz + oitava + 3; handleKeyNote [4] = raiz + oitava + 5; handleKeyNote [5] = raiz + oitava + 7; handleKeyNote [6] = raiz + oitava + 8; handleKeyNote [7] = raiz + oitava + 11; }}

Etapa 7: O instrumento (gabinete)

O instrumento (caixa)
O instrumento (caixa)
O instrumento (caixa)
O instrumento (caixa)

Como sempre, eu realmente não tenho planos de design completos e detalhados e medidas do projeto. Fiz alterações, modificações e projetei a coisa ao longo de todo o processo de realmente construí-la. E a maioria dessas mudanças foi baseada nos materiais e componentes que eu tinha em mãos na época.

Dito isso, nesta ocasião, tenho muito mais conteúdo e informações sobre o processo de design do que em projetos anteriores, porque usei serviços de impressão 3D e corte a laser para criar muitas das peças. Eu simplesmente não faria todas as medições e cortes de MDF que fiz na minha última máquina. Anexei o arquivo que projetei para cortar a laser a maioria das peças e o modelo 3D do instrumento. Por favor, esteja ciente de que todos esses arquivos são basicamente iguais ao que eu construí, mas há discrepâncias, pois fiz muitas alterações após o corte a laser original e a modelagem 3D. Use esses arquivos como um ponto de partida para o seu projeto, não como o modelo definitivo.

Por favor, preste atenção também às anotações que fiz nas fotos nas etapas a seguir

Etapa 8: O instrumento: pescoço

Image
Image
O instrumento: pescoço
O instrumento: pescoço
O instrumento: pescoço
O instrumento: pescoço
O instrumento: pescoço
O instrumento: pescoço

Este é essencialmente um par de pedaços longos de MDF cortados a laser empilhados uns sobre os outros, a fim de criar um pescoço grosso o suficiente, com espaço suficiente para as chaves de tato (chaves de pescoço) e o módulo multiplexador. E também, 14 peças de placa de MDF cortada a laser em forma de teclas de piano para cobrir os interruptores. Os interruptores são montados na perfboard e conectados ao multiplexador.

Etapa 9: O Instrumento: Pega

Image
Image
O instrumento: punho
O instrumento: punho
O instrumento: punho
O instrumento: punho

Essa foi a parte mais difícil para mim. Não sei se resolvo totalmente essa parte, mas funciona muito bem para a mão, pelo menos. Possui 7 interruptores através de um multiplexador, podendo deslizar pelo orifício no corpo do instrumento. Não vou tentar descrever, então aqui estão as fotos …

Etapa 10: O Instrumento: Corpo

Image
Image
O Instrumento: Corpo
O Instrumento: Corpo
O Instrumento: Corpo
O Instrumento: Corpo

Esta é a mais simples de todas as partes, apenas uma caixa cortada a laser em um formato que lembra um instrumento musical. Eu até pensei em usar um tipo de caixa de charuto, mas se eu fosse cortar a laser, eu poderia cortar algo legal a laser. As principais características que o corpo deve ter são, primeiro, todos os orifícios para os conectores, tomadas, etc. necessários (mais um para alimentar os fios do circuito do pescoço); um orifício maior na parte superior no qual a alça pode deslizar (como mostrado no primeiro vídeo e imagens) e, finalmente, as duas chaves de transposição colocadas em cada extremidade do orifício deslizante para detectar o movimento da alça (veja o segundo vídeo e todas as anotações nas fotos).

Etapa 11: como jogar

Como jogar
Como jogar
Como jogar
Como jogar

Tocando acordes

Vamos tentar tocar alguns acordes menores e principais, conforme explicado no início da seção “Como funciona”. Basicamente, qualquer tecla que você pressionar no braço, fornecerá a escala maior dessa nota nas teclas de controle. Além disso, se você contar 3 teclas para cima (movendo em direção à alça) e pressionar essa tecla, enquanto mantém a original pressionada, você ainda terá uma escala da nota original nas teclas da alça, mas desta vez será uma escala menor. Leitores treinados musicalmente entenderão (muito melhor do que eu, na verdade) que pressionar a terceira tecla exata para cima a partir de qualquer nota é o mesmo que tocar sua terça menor.

Além disso, se achar que 7 notas não são suficientes para você, pode simplesmente deslizar para cima ou para baixo a alça inteira através do orifício de deslizamento do corpo principal e você terá as mesmas 7 notas uma oitava acima ou abaixo.

Tocando acordes (explicação para iniciantes)

Os acordes são duas ou mais notas tocadas juntas. Pense em um pianista ou guitarrista tocando um monte de notas (teclas do piano ou cordas do violão) uma vez ao mesmo tempo e deixando-os soar, eles cantam uma pequena frase sobre ela e então tocam outro conjunto de notas e cantam outra frase. Eles estão tocando acordes e cantando uma melodia. Esta é a essência de qualquer música básica. Então, como fazemos isso no Synthfonio? simples. Você quer tocar um acorde E? você apenas pressiona a tecla E no pescoço e dispara tudo o que quiser nas teclas de alça. Não se preocupe, ele estará afinado. E os acordes menores? (acordes cujo nome termina com a letra "m" como Am, Em, G # m, C # m, etc.) Vamos tocar um acorde de Lá menor (Am). Pressionamos a tecla A (veja o diagrama anexo), mas também contamos três teclas para cima (movendo em direção à alça) e pressionamos essa tecla também (neste caso, um C). Isso efetivamente transforma o acorde A em um acorde Am (Lá menor).

Tocando uma musica

Agora, como alguns já devem saber, há um monte de músicas de 4 acordes, geralmente construídas sobre acordes maiores e menores simples. Perfeito. Procuramos no Google “acordes do título da música”, encontramos o que queremos (aqui estão alguns exemplos fáceis e simples). Se um acorde for maior, apenas pressionamos aquela única tecla no pescoço do Synthfonio e tocamos o que você quiser a maçaneta. Se um acorde menor aparecer na música, basta pressionar a tecla correspondente e a terceira tecla para cima e pronto. É isso. Você pode usar as teclas de controle para tocar acordes e cantar sobre eles ou para tocar melodias, arpejos, etc.

Atualmente estou no processo de incorporar acordes aumentados e diminuídos, colocando um terceiro dedo na posição, ou mesmo apenas os dois dedos com o segundo definindo a quinta aumentada ou diminuída.

Este é um projeto de trabalho em andamento. Enquanto isso, continue jogando, experimentando e se divertindo. Aceito sugestões (:

Escalas Diferentes

Atualmente as teclas de manipulação geram da 1ª à 7ª notas da escala declarada. Usei esta configuração neste instrutível para tornar mais fácil de entender. Mas isso pode ser facilmente alterado para gerar uma escala diferente, modificando a função keyConstructor (). Na verdade, estou usando uma configuração pentatônica para a alça, porque me permite colocar a nota fundamental uma oitava acima na mesma posição de slide da alça. Na configuração atual, você precisa deslizar a alça para cima ou para baixo para ter qualquer nota em outra oitava.

Etapa 12: possíveis modificações

Como mencionei no início, tentei manter este tutorial o mais simples possível, reduzindo o projeto à sua forma mais básica. Por causa disso, omiti alguns recursos que adicionei (ou pretendo adicionar) em meu próprio Synthfonio, aqui estão alguns deles:

-MIDI sobre BLE: se você tiver uma placa MKR WIFI 1010, é bastante fácil de incorporar. Esta biblioteca tem um exemplo de midi muito simples. Você pode adicionar os comandos midi dessa biblioteca aos comandos MIDI regulares chamados pelo esboço do Synthfonio. Ou, para economizar bateria, adicione um switch para ativar as funcionalidades do bluetooth apenas quando necessário (usar as interrupções do arduinos e um sistema de reinicialização automática como este seria uma boa ideia).

-PitchBend: Embora nenhuma das bibliotecas de sintetizador possa gerenciar comandos MIDI pitch bend, a biblioteca MIDI permite que você os envie. A questão é decidir como controlá-lo. Qualquer potenciômetro deve funcionar bem, mas estou pensando em alternativas mais interessantes, como sensores! proximidade, luz, etc.

Concurso de instrumentos
Concurso de instrumentos
Concurso de instrumentos
Concurso de instrumentos

Segundo prêmio no concurso de instrumentos

Recomendado: