Índice:

Módulo de síntese Raspberry Pi Stompbox: 6 etapas (com imagens)
Módulo de síntese Raspberry Pi Stompbox: 6 etapas (com imagens)

Vídeo: Módulo de síntese Raspberry Pi Stompbox: 6 etapas (com imagens)

Vídeo: Módulo de síntese Raspberry Pi Stompbox: 6 etapas (com imagens)
Vídeo: Como usar o LoRa no Raspberry Pi - Desafio Maker 2024, Julho
Anonim
Módulo Raspberry Pi Stompbox Synth
Módulo Raspberry Pi Stompbox Synth
Módulo Raspberry Pi Stompbox Synth
Módulo Raspberry Pi Stompbox Synth

O objetivo deste projeto é colocar um módulo de som baseado em Fluidsynth em um stompbox. O termo de sonoridade técnica "módulo de som", neste caso, significa um dispositivo que recebe mensagens MIDI (ou seja, valor da nota, volume, curva de afinação, etc.) e sintetiza sons musicais reais. Junte isso a um controlador MIDI - que é legião, barato e muitas vezes muito legal (como teclas!) - e você tem um sintetizador que pode modificar e ajustar indefinidamente, e projetar de uma forma que se adapte ao seu estilo de tocar.

Uma visão geral deste projeto é que pegamos um pequeno computador linux de placa única (um Raspberry Pi 3 neste caso), anexamos um LCD de caracteres, alguns botões e uma placa de som USB (já que o som onboard do Pi não é muito bom), e enfiar tudo em um pedal Hammond 1590bb (como os usados para efeitos de guitarra) com algumas conexões externas para MIDI USB, alimentação e saídas de áudio. Em seguida, configuramos o software interno para executar um programa na inicialização que executa o FluidSynth (um excelente sintetizador de software gratuito multi-plataforma), controla o LCD e nos permite alterar patches e configurações usando os botões de pressão.

Não vou entrar em detalhes passo a passo nesta compilação (há muitos tutoriais ei-i-feito-um-legal-com-pi-framboesa por aí), mas, em vez disso, tentarei me concentrar no motivo pelo qual fiz várias opções na construção e no design à medida que avançava. Desta forma, você pode fazer modificações para se adequar aos seus próprios objetivos, sem ficar preso a fazer coisas que mais tarde acabaram não funcionando.

ATUALIZAÇÃO (maio de 2020): Embora este instrutível ainda seja um ótimo lugar para começar para um projeto como este, fiz muitas melhorias no hardware e no software. O software mais recente é o FluidPatcher, disponível no GitHub - verifique o wiki para obter muitos detalhes sobre como configurar o Raspberry Pi. Confira meu site Geek Funk Labs para notícias e atualizações contínuas sobre o SquishBox!

Suprimentos

Esta é uma pequena lista (e explicação) dos componentes mais cruciais:

  • Computador Raspberry Pi 3 - Qualquer computador Linux de placa única poderia funcionar, mas o Pi 3 tem poder de processamento suficiente para executar o Fluidsynth sem qualquer latência e memória suficiente para carregar grandes fontes de som. A desvantagem é que o som onboard é ruim, então você precisa de uma placa de som USB. O CHIP é uma alternativa que estou explorando (pegada menor, som melhor, mas menos memória / processador)
  • Gabinete Hammond 1590BB - sugiro comprar um que seja pré-revestido se você quiser cor, a menos que você goste de pintar pedaleiras. Eu naveguei em muitos painéis de mensagens, mas acho que não tenho paciência ou o tipo certo de tinta, porque depois de duas tentativas meus resultados são bastante razoáveis.
  • Placa de som USB - você pode encontrar uma placa apropriada por um bom preço. De acordo com este adorável tutorial do Adafruit (um de muitos), você deve ficar com aquele que usa o chipset CM109 para compatibilidade máxima.
  • LCD de caracteres - há muitos lugares diferentes para obtê-los, mas a pinagem parece ser bastante normal. Certifique-se de obter luz de fundo para que você possa ver suas predefinições ao tocar em clubes esfumaçados.
  • Stompswitches momentâneos (2) - Um pouco mais difícil de obter, mas eu usei momentâneos em vez de alternar para que eu pudesse ter mais versatilidade. Posso simular a alternância no software se quiser esse comportamento, mas dessa forma também posso ter diferentes funções para toque curto, toque longo, etc.
  • Adafruit Perma-Proto Hat for Pi - Isso me ajudou a conectar o LCD e outros componentes à porta de expansão do Pi sem ocupar muito espaço extra. Se eu tivesse tentado usar o perfboard regular, ele teria que se projetar para fora das laterais do Pi para que eu pudesse conectar todos os pinos GPIO necessários. O revestimento de dupla face e os orifícios de montagem correspondentes também foram muito úteis. Por tudo isso, era realmente a opção mais barata.
  • Conectores USB - 1 fêmea tipo B para alimentação e dois de cada tipo A macho e fêmea para fazer alguns cabos extensores finos e flexíveis para conexões internas.
  • Conectores de áudio de 1/4 "- usei um estéreo e um mono. Dessa forma, o estéreo pode ser um conector de fone de ouvido / mono ou apenas transportar o sinal esquerdo se o outro conector estiver conectado.

Etapa 1: Eletrônica Interna

Eletrônica Interna
Eletrônica Interna
Eletrônica Interna
Eletrônica Interna
Eletrônica Interna
Eletrônica Interna

Conectaremos o LCD e seus componentes associados e os botões ao Chapéu Pi. Além disso, adicionaremos um conector USB-B e USB-A para conectar a alimentação e um dispositivo MIDI, respectivamente. Nós trouxemos a porta USB-A porque precisamos usar uma das portas USB do Pi para conectar a placa de som, que queremos ter dentro do gabinete, então não podemos deixar as portas USB niveladas com a lateral da caixa. Usei uma porta USB-B para alimentação porque achei que seria mais difícil do que o conector de alimentação micro-USB do Pi, além disso, não consegui encontrar uma boa orientação onde o conector poderia estar próximo à borda da caixa de qualquer maneira.

Você precisará usar uma faca para cortar os traços entre os orifícios onde irá soldar os pinos dos conectores USB. Apenas tome cuidado para não cortar nenhum dos traços internos na placa conectando os outros pinos - ou se você acidentalmente (como eu) reconectá-los usando um fio de jumper. Os pinos Vcc e GND do conector USB-B vão para 5V e GND na porta de expansão do Pi, respectivamente. Desta forma, você pode alimentar seu pedal com um carregador de telefone (presumindo que tenha amperagem suficiente - 700mA parece funcionar para mim, mas você pode querer mais para ter certeza de que a porta USB tem energia suficiente para alimentar seu controlador) e um cabo USB A-B.

Acho que comprimentos de cabo plano funcionam muito bem para conectar coisas com muitos pinos sem ter muito espaguete de arame. Fiz isso em vez de soldar cabeçotes masculinos no LCD e depois soldá-los no chapéu, porque senti que precisava de um pouco de liberdade para posicionar o LCD para que pudesse centralizá-lo bem. O LCD deve vir com um potenciômetro que você usa para ajustar o contraste - certifique-se de colocá-lo em um local onde não seja coberto pelo LCD, para que você possa fazer um orifício na caixa para alcançá-lo e ajustar o contraste uma vez tudo está montado.

Consulte o esquema para obter detalhes sobre o que é conectado e onde. Observe que os botões de pressão estão conectados a 3,3 V - não 5 V! Os pinos GPIO são classificados apenas para 3,3 V - 5 V e danificarão sua CPU. O conector USB-A é conectado a outra tira de cabo de fita, que você pode soldar a um plugue USB que você conectará a uma das portas USB do Pi para o seu controlador MIDI. Corte qualquer metal extra do plugue para que ele não grude menos e use cola quente para aliviar a tensão - não precisa ser bonito, pois ficará escondido dentro da caixa.

Etapa 2: Fiação de saída de áudio

Fiação de saída de áudio
Fiação de saída de áudio
Fiação de saída de áudio
Fiação de saída de áudio
Fiação de saída de áudio
Fiação de saída de áudio

Não importa o quão pequena seja a placa de som USB que você encontrar, ela ou seu plugue provavelmente ficarão muito longe das portas USB do Pi para que tudo caiba na caixa. Portanto, solde outro conector USB curto de um cabo de fita, plugues USB e cola quente, como mostrado na imagem acima. Minha placa de som ainda estava um pouco pesada para caber no gabinete com todo o resto, então tirei o plástico e envolvi-o com fita adesiva para evitar que causasse curto-circuito nas coisas.

Para obter o áudio da placa de som para seus conectores de 1/4 ", corte a extremidade de um fone de ouvido de 3,5 mm ou cabo AUX. Certifique-se de ter 3 conectores - ponta, anel e luva (TRS), ao invés de 2 ou 4. A luva deve ser aterrada, a ponta geralmente é o canal direito, e o anel (o conector do meio) geralmente fica à esquerda. Você pode apenas conectar a ponta e o anel a dois conectores mono (TS - ponta, luva) 1/4 "e pronto com ele, mas você pode obter um pouco mais de versatilidade com um pouco de fiação extra. Encontre um conector TS que tenha um terceiro contato momentâneo, conforme mostrado esquematicamente no diagrama acima. A inserção de um plugue interrompe esse contato, de modo que você pode ver no diagrama que o sinal esquerdo irá para o conector TS se um plugue for inserido e para o anel do conector TRS se nenhum plugue for inserido. Desta forma, você pode conectar fones de ouvido no conector estéreo, um único cabo mono no conector estéreo para um sinal combinado direito / esquerdo (mono) ou um cabo em cada conector para saídas direita e esquerda (estéreo) separadas.

Liguei os pinos de aterramento dos conectores aos do cabo que sai da placa de som, para que tudo na caixa compartilhe o mesmo aterramento e evite o zumbido desagradável de loops de aterramento. Dependendo do que você está conectado, no entanto, isso pode ter o efeito oposto - então você pode querer incluir uma chave para permitir que você conecte ou "levante" o aterramento nos conectores de 1/4 ".

Etapa 3: Preparando o Gabinete

Preparando o Gabinete
Preparando o Gabinete
Preparando o Gabinete
Preparando o Gabinete
Preparando o Gabinete
Preparando o Gabinete

Esta etapa cobre o corte de orifícios na caixa para a tela, botões, conectores, etc. e espaçadores de epóxi no gabinete para montar o chapéu Pi.

Comece colocando todos os componentes no gabinete para ter certeza de que tudo se encaixa e está orientado da maneira certa. Em seguida, meça e marque cuidadosamente onde você fará os orifícios. Ao fazer furos redondos, recomendo começar com uma broca pequena e trabalhar até o tamanho que você precisa - é mais fácil centralizar o furo e menos provável que a broca emperre. Os furos retangulares podem ser cortados fazendo um furo nos cantos opostos da abertura pretendida e, em seguida, cortando com uma serra de vaivém os outros dois cantos. Essa espessura de alumínio na verdade corta muito bem com um quebra-cabeças, desde que você vá com cuidado. Uma lima quadrada é muito útil para ajustar os cantos das aberturas. Deixe as aberturas para os plugues USB um pouco generosas, caso você tenha cabos grossos.

Um epóxi de dois estágios (como a cola Gorilla na foto) funciona bem para fixar os espaçadores do chapéu na caixa de metal. Raspe um pouco a superfície do gabinete e a parte inferior dos espaçadores com lã de aço ou uma chave de fenda para que o epóxi possa pegar melhor. Eu recomendo prender seus espaçadores ao chapéu Pi antes de colá-los para que você saiba que estão posicionados corretamente - não há muito espaço de manobra aqui. Usei apenas três impasses porque meu LCD estava no caminho do quarto. Misture os dois componentes do epóxi, cole um pouco nos espaçadores e prenda-os no lugar. Evite mexer ou reposicionar as peças após mais de 10-15 segundos, ou a ligação ficará quebradiça. Aguarde 24 horas para configurar e continuar trabalhando. Demora alguns dias para curar totalmente, então não force o vínculo desnecessariamente.

A menos que você queira fazer outro hobby de pintar pedaleiras, sugiro deixar o alumínio exposto (não é uma aparência ruim, na verdade) ou comprar uma caixa pré-pintada. A tinta não quer aderir ao metal. Se você quiser experimentá-lo, lixe em todos os lugares que você quiser que a tinta grude, use primeiro uma boa tinta de primer para carroçaria, aplique várias camadas da cor desejada e depois deixe secar o máximo possível. Sério - os maníacos nos fóruns sugerem coisas como deixá-lo sob o sol direto por três meses ou em uma torradeira no mínimo por uma semana. Depois de lixar os restos enrugados e descascados de meu primeiro trabalho de pintura, minha segunda tentativa ainda obtém lascas e arranhões de coisas como canetas em minha bolsa de trabalho, e o acabamento pode ser amassado com uma unha. Decidi desistir e fui para o estilo punk, usando um marcador branco para as letras.

Etapa 4: configuração do software

Configuração de software
Configuração de software
Configuração de software
Configuração de software

Antes de colocar tudo no pedal e estragar tudo, você precisa configurar o software no Raspberry Pi. Eu sugiro começar com uma nova instalação do sistema operacional Raspbian, então pegue uma cópia recente do site da Raspberry Pi Foundation e siga as instruções para criar a imagem em um cartão SD. Pegue um teclado e uma tela ou use um cabo de console para fazer login em seu Pi pela primeira vez e acessar uma linha de comando. Para certificar-se de que possui as atualizações de software e firmware mais recentes, digite

sudo apt-get update && sudo apt-get upgrade

sudo rpi-update

Em seguida, você quer ter certeza de que pode usar wi-fi para ssh para o Pi e fazer modificações uma vez que ele esteja abotoado dentro do gabinete. Primeiro, ligue o servidor ssh digitando

sudo raspi-config

e indo para "Opções de interface" e habilitando o servidor ssh. Agora, adicione uma rede sem fio ao pi editando o arquivo wpa_supplicant.conf:

sudo vi /etc/wpa_supplicant/wpa_supplicant.conf

e adicionando as seguintes linhas no final:

rede = {

ssid = "sua-rede" psk = "sua-senha"}

Substitua sua-rede e sua-senha acima pelos valores de qualquer rede à qual você deseja que o Pi se conecte por padrão - provavelmente o seu roteador wi-fi em casa, ou talvez o ponto de acesso no seu telefone ou um laptop em execução no modo de ponto de acesso. Outra alternativa para se conectar ao seu Pi é configurá-lo como um ponto de acesso wi-fi, de forma que você possa se conectar a ele não importa onde estiver. A interface que escrevi abaixo também permite emparelhar outro dispositivo bluetooth com o Pi, após o qual você pode se conectar a ele usando serial por bluetooth.

Para instalar o FluidSynth, digite

sudo apt-get install fluidsynth

Os arquivos anexados a esta etapa fornecem uma interface entre os controles do stompbox e o FluidSynth, e devem ser copiados para o diretório / home / pi. Aqui está uma breve explicação do que cada arquivo faz:

  • squishbox.py - Um script python que inicia e se comunica com uma instância do FluidSynth, lê a entrada dos botões do stompbox e grava informações no LCD
  • config_squishbox.yaml - Um arquivo de configuração no formato YAML (principalmente) legível por humanos que armazena configurações e informações de patch para o programa squishbox
  • fluidsynth.py - Um wrapper python que fornece ligações para as funções C na biblioteca FluidSynth, com muitas ligações adicionais adicionadas por mim para acessar mais funcionalidades do FluidSynth
  • ModWaves.sf2 - Um soundfont muito pequeno que forneci para demonstrar o uso e o poder dos moduladores no formato Soundfont

Ter um script Python configurando o processo FluidSynth e manipulando todas as coisas de botão / LCD funciona muito bem - as mensagens MIDI vão diretamente para o FluidSynth e o script só interage com ele quando necessário.

O script python precisa de algumas bibliotecas Python que não são instaladas por padrão. Você pode instalá-los diretamente do índice de pacotes Python usando a ferramenta pip útil:

sudo pip install RPLCD pyyaml

Finalmente, você deseja que o Pi execute o script python na inicialização. Para que isso aconteça, edite o arquivo rc.local:

sudo vi /etc/rc.local

Insira a seguinte linha antes da linha final de 'saída 0' no arquivo:

python /home/pi/squishbox.py &

Etapa 5: Montagem final

Assembléia final
Assembléia final
Assembléia final
Assembléia final
Assembléia final
Assembléia final

Antes de colocar todas as peças na caixa, é uma boa ideia conectar tudo e verificar se o software funciona, conforme demonstrado nas imagens acima. As imagens 3-6 mostram todas as peças individuais e, progressivamente, como elas se encaixam na minha caixa. O LCD é, na verdade, mantido no lugar pelos fios pressionando contra ele, mas você pode usar um pouco de cola quente ou adicionar mais alguns parafusos de montagem, se não gostar. A fita adesiva laranja na tampa da caixa é para evitar que o Pi entre em curto contra o metal.

Você pode ter que experimentar e reconfigurar para fazer as coisas se encaixarem. Cômodo é bom - quanto menos peças balançarem na caixa, melhor. O calor não parece ser um problema e não tive problemas com o bloqueio do sinal wi-fi pelo gabinete. Não retratados estão alguns pés de borracha adesivos (você pode encontrá-los em uma loja de ferragens) na parte inferior da caixa para evitar que ela deslize durante uma sessão de pisoteamento.

Fique atento a choques / esmagamentos / dobras imprevistos quando as coisas são aparafusadas. Uma coisa a verificar é se há espaço suficiente para os conectores de 1/4 quando os cabos são inseridos - as pontas se projetam um pouco mais longe do que os contatos do conector. Além disso, na minha construção eu montei o Pi um pouco perto da borda da caixa e a aba da tampa pressionou a extremidade do cartão SD e o quebrou - eu tive que lixar um entalhe na aba para que isso não acontecesse.

Etapa 6: Uso

Image
Image
Uso
Uso
Uso
Uso

O módulo de som que descrevi nessas etapas e executando o software fornecido acima é bastante utilizável e extensível fora da caixa, mas muitas modificações / variações são possíveis. Descreverei brevemente a interface aqui - pretendo atualizá-la continuamente em um repositório github, onde espero manter um wiki atualizado também. Por último, discutirei como você pode ajustar as configurações, adicionar novos sons e fazer suas próprias modificações.

Para começar, conecte um controlador USB MIDI no conector USB-A da caixa, uma fonte de alimentação de 5 V no conector USB-B e conecte fones de ouvido ou um amplificador. Depois de um tempo, o LCD mostrará a mensagem "squishbox v xx.x". Quando o número e o nome do patch aparecerem, você poderá tocar as notas. Toques curtos em qualquer um dos botões mudam o patch, segurar qualquer um dos botões por alguns segundos leva você ao menu de configurações, e segurar qualquer um dos botões por cerca de cinco segundos dá a você a opção de reiniciar o programa, reiniciar o Pi ou desligar o Pi (NB, o Pi não corta a energia de seus pinos GPIO quando para, então o LCD nunca desliga. Apenas espere cerca de 30 segundos antes de desconectá-lo).

As opções do menu de configurações são:

  • Atualizar patch - salva todas as alterações feitas no patch atual em um arquivo
  • Save New Patch - salva o patch atual e quaisquer alterações como um novo patch
  • Escolha o banco - o arquivo de configuração pode ter vários conjuntos de patches, isso permite que você alterne entre eles
  • Definir ganho - definir o volume de saída geral (opção de 'ganho' do fluidsynth), muito alto dá saída distorcida
  • Chorus / Reverb - modifica as configurações de reverb e chorus do conjunto atual
  • MIDI Connect - tente conectar um novo dispositivo MIDI se trocá-lo durante a execução do programa
  • Par de Bluetooth - coloque o Pi no modo de descoberta para que você possa parear outro dispositivo bluetooth com ele
  • Status Wifi - relatar o endereço IP atual do Pi para que você possa ssh nele

O arquivo config_squishbox.yaml contém informações que descrevem cada patch, bem como coisas como roteamento de MIDI, parâmetros de efeitos, etc. Ele é escrito no formato YAML, que é uma maneira entre linguagens de representar dados que os computadores podem analisar, mas também são humanos -legível. Pode ficar bem complexo, mas aqui eu apenas o uso como uma forma de representar uma estrutura de dicionários Python aninhados (matrizes / hashes associativos em outras linguagens) e sequências (listas / matrizes). Eu coloquei muitos comentários no arquivo de configuração de amostra e tentei estruturá-lo para que se possa ver progressivamente o que cada recurso faz. Dê uma olhada e experimente se você estiver curioso e sinta-se à vontade para fazer perguntas nos comentários. Você pode fazer muito para alterar os sons e a funcionalidade do módulo apenas editando este arquivo. Você pode fazer login e editar remotamente ou enviar por FTP um arquivo de configuração modificado para o Pi e, em seguida, reiniciar usando a interface ou digitando

sudo python /home/pi/squishbox.py &

na linha de comando. O script é escrito para matar outras instâncias em execução de si mesmo ao iniciar, para que não haja nenhum conflito. O script emitirá alguns avisos na linha de comando quando for executado enquanto procura dispositivos MIDI para se conectar e procura em vários locais por suas fontes de som. Não está quebrado, é apenas programação preguiçosa da minha parte - eu poderia pegá-los, mas afirmo que são diagnósticos.

Quando você instala o FluidSynth, você também obtém a boa fonte de som gratuita FluidR3_GM.sf2. GM significa MIDI geral, o que significa que contém "todos" os instrumentos, atribuídos a números predefinidos e bancários comumente acordados para que os tocadores de MIDI que reproduzem arquivos usando esta fonte de som sejam capazes de encontrar aproximadamente o som certo para piano, trompete, gaita de foles, etc. Se quiser mais / sons diferentes, pode encontrar muitas fontes de som gratuitas na Internet. Mais importante ainda, a especificação de fontes de som está amplamente disponível, é na verdade bastante poderosa e há um editor de código aberto maravilhoso para fontes de som chamado Polyphone. Com isso, você pode construir suas próprias fontes de som a partir de arquivos WAV brutos, além de adicionar moduladores às suas fontes. Os moduladores permitem que você controle muitos dos elementos de síntese (por exemplo, envelope ADSR, envelope de modulação, LFO, etc.) em tempo real. O arquivo ModWaves.sf2 que incluí acima fornece um exemplo de uso de moduladores para permitir que você mapeie a ressonância do filtro e a frequência de corte para uma mensagem MIDI de alteração de controle (que pode ser enviada por um botão / controle deslizante em seu controlador). Há muito potencial aqui - vá jogar!

É minha esperança que este tutorial desperte muitas ideias e forneça a outros uma boa estrutura para construir suas próprias criações de sintetizador exclusivas, bem como apoiar a disponibilidade e o desenvolvimento contínuos de boas fontes de som, as especificações de fontes de som e ótimos softwares livres como FluidSynth e Polyphone. A construção que descrevi aqui não é a melhor nem a única maneira de colocar algo assim. No lado do hardware, as modificações possíveis podem ser uma caixa maior com mais botões, entrada / saída MIDI legada (5 pinos) e / ou entradas de áudio. O script python pode ser modificado (desculpas por meus comentários esparsos) para fornecer outros comportamentos que podem se adequar melhor a você - estou pensando em adicionar um modo de "efeitos" a cada patch onde atuará como um stompbox de efeitos reais, alternando as configurações em e desligar. Pode-se também adicionar algum software adicional para fornecer efeitos de áudio digital. Eu também acho que funcionaria melhor ter o Pi rodando no modo AP wi-fi conforme descrito acima, e então ele poderia até mesmo fornecer uma interface web amigável para editar o arquivo de configuração. Sinta-se à vontade para postar suas próprias idéias / perguntas / discussões no feed de comentários.

Quero oferecer mega adereços aos fabricantes do FluidSynth e da Polyphone por fornecerem software de código aberto gratuito que todos podemos usar para fazer boa música. Adoro usar isso e você tornou isso possível!

Recomendado: