Índice:

Keytar Hero (usando um controlador de guitarra Wii como sintetizador): 7 etapas (com imagens)
Keytar Hero (usando um controlador de guitarra Wii como sintetizador): 7 etapas (com imagens)

Vídeo: Keytar Hero (usando um controlador de guitarra Wii como sintetizador): 7 etapas (com imagens)

Vídeo: Keytar Hero (usando um controlador de guitarra Wii como sintetizador): 7 etapas (com imagens)
Vídeo: Michael Jackson - Beat it [Keytar Solo] 2024, Julho
Anonim
Image
Image
Etapa 1: Raspberry Pi (configuração inicial)
Etapa 1: Raspberry Pi (configuração inicial)

Os jogos Guitar Hero estavam na moda há 12 anos, então deve haver muitos controladores de guitarra antigos acumulando poeira. Eles têm muitos botões, knobs e alavancas, então por que não colocá-los em uso novamente? O controlador de guitarra normalmente não emite nenhum som sozinho, mas neste tutorial vou mostrar como converter um Wii Guitar Hero Controller para que possa ser tocado como um sintetizador.

Suprimentos

  • Comando Wii Guitar Hero
  • Nunchucky breakout board (disponível em Adafruit aqui)
  • 4 fios de jumper (fêmea para fêmea)
  • 2 conectores de crimpagem (opcional)
  • Raspberry Pi (3 B + ou 4 preferidos)
  • Cartão microSD de 16GB

Etapa 1: Etapa 1: Raspberry Pi (configuração inicial)

Um Raspberry Pi é o cérebro e os músculos deste projeto, então a primeira coisa que precisaremos fazer é configurar um para o nosso projeto. Eu tentei este projeto em um Raspberry Pi 3 B + e um 4, e ambos parecem funcionar bem.

Raspberry Pi são microcomputadores que armazenam tudo em um cartão microSD em vez de um disco rígido … incluindo o sistema operacional. A maneira típica de usá-los é fazer o download do sistema operacional mais recente e gravar uma imagem dele em um cartão microSD da seguinte maneira:

  • Em um PC ou laptop separado, vá para
  • Baixe o Raspbian OS mais recente. (Buster no momento em que este livro foi escrito). Existem várias versões disponíveis na página que fornecem mais ou menos software incluído, dependendo de sua preferência. Eles devem funcionar bem, mas eu gosto de usar a opção "Raspbian Buster com desktop e software recomendado" porque inclui alguns IDEs de programação e outros aplicativos úteis. A maneira mais fácil é baixar a versão zip.
  • Grave a imagem Raspbian no cartão microSD. Existem muitos aplicativos que você pode usar para gravar a imagem Raspbian em seu cartão microSD, mas usei o programa balenaEtcher, que você pode obter aqui. Insira o cartão microSD em seu computador e execute balenaEtcher. Para a imagem do disco, selecione o arquivo zip que você baixou, depois selecione o cartão SD e aperte o flash. A ferramenta irá descompactar os arquivos de imagem de disco e gravá-los no cartão SD. IMPORTANTE: Certifique-se de que a unidade que você está selecionando é o cartão microSD … a ferramenta substituirá qualquer unidade que você especificar, portanto, certifique-se de escolher a unidade correta.
  • Abra seu Raspberry Pi. Insira o cartão microSD em seu Raspberry Pi. Conecte sua alimentação, mouse, teclado e alto-falantes. Se você seguir as instruções, é bastante autoexplicativo … defina sua localização / hora, defina uma senha e conecte o WiFi.

Esta é toda a configuração padrão para um Raspberry Pi, portanto, se precisar de mais detalhes, você pode encontrá-los aqui. Estaremos fazendo o resto de nossas etapas no Raspberry Pi.

Etapa 2: Etapa 2: Habilitar I2c

Etapa 2: Habilite I2c
Etapa 2: Habilite I2c

O Guitar Hero Controller usa i2c para se comunicar (i2c é um protocolo bastante comum usado por dispositivos eletrônicos para se comunicarem), então precisamos habilitar esse recurso no Raspberry Pi:

  • Instale bibliotecas para i2c. As bibliotecas i2c agora parecem fazer parte da construção padrão do Buster, mas apenas no caso, executaremos o instalador para elas. Abra um shell (há um ícone para ele na barra de tarefas na parte superior) e digite o seguinte:

    • sudo apt-get install -y python-smbus
    • sudo apt-get install -y i2c-tools
  • Ative o i2c no Raspberry Pi. Em seu shell digite: sudo raspi-config. Isso abrirá sua janela de configuração. Use a seta para baixo até InterfacingOptions-> I2C para habilitar o i2c para o dispositivo. Para sair da janela, use a seta para a direita para Voltar e depois para Concluir para salvar as configurações.
  • Reinício. Em seu shell, digite: sudo reboot
  • Defina parâmetros i2c personalizados. A taxa de transmissão i2c padrão (100k) parece confundir a guitarra ocasionalmente, então vamos diminuí-la para 50k da seguinte maneira:

    • Em um tipo de shell: sudo nano /boot/config.txt
    • Isso abrirá seu arquivo de configuração em um editor de texto. Use a seta para baixo e encontre a linha que diz dtparam = i2c_arm = on. Se estiver comentado, descomente. Se você não tem essa linha, adicione-a. Abaixo dessa linha, também adicione o seguinte:

      • dtparam = i2c1 = on
      • dtparam = i2c1_baudrate = 50000
    • Pressione Ctrl + O para salvar o arquivo de configuração e pressione Ctrl + X para sair.
  • Reinício. Em seu shell, digite: sudo reboot

Etapa 3: Etapa 3: Instalar Pure Data

Etapa 3: instalar o Pure Data
Etapa 3: instalar o Pure Data
Etapa 3: instalar o Pure Data
Etapa 3: instalar o Pure Data

Para os sons do sintetizador, usaremos um programa chamado Pure Data. Este é um som generativo e ferramenta de exibição interativa que já existe há um bom tempo. Ele tem alguns recursos que o tornam ideal para este projeto … ele tem uma IU baseada em nó que é bastante fácil de usar e pode receber sinais de fontes externas, como scripts python.

  • Instale Pure Data. Em um tipo de shell: sudo apt-get install puredata
    • Isso deve instalar o software em seu Raspberry Pi, mas se ele reclamar no shell de não ser capaz de localizar todos os arquivos de que precisa, tente o seguinte:

      • sudo apt-get update
      • Em seguida, execute o comando de instalação novamente: sudo apt-get install puredata
    • Durante a instalação, ele perguntará se você deseja criar diretórios para extensões. Você pode dizer Sim.
  • Inicie o Pure Data. Se instalado corretamente, você verá o programa listado no menu Iniciar da área de trabalho em Som e Vídeo. Execute-o para garantir que ele seja iniciado.
  • Configure o áudio Pure Data. O áudio no Pure Data geralmente não está ativado por padrão, então você precisará ativá-lo.

    • Defina a saída de áudio para ALSA. Quando o Pure Data for iniciado, você deverá ver a janela do console. Vá para o menu Media e selecione ALSA como sua saída. Você pode ver mensagens de aviso no shell do console que dizem que não é possível localizar certos arquivos, mas você pode ignorar isso.
    • Ligue o áudio DSP. Na janela do console, marque a caixa de seleção que diz DSP.
  • Teste a saída de áudio. Na janela do console Pure Data, vá para Media-> Test Audio & MIDI. Isso abrirá um arquivo de teste que podemos usar para garantir que o Pure Data esteja funcionando e que possamos ouvir o áudio. Ligue os alto-falantes, mas primeiro mantenha-os em um volume baixo (às vezes o áudio pode estar muito alto por padrão). No arquivo de teste, no lado esquerdo você deve ver uma seção chamada Test Tones. Clique na caixa que diz 60 primeiro e veja se você ouve algum som nos alto-falantes. Caso contrário, tente clicar na caixa 80 e aumente o volume dos alto-falantes até ouvir um som. Se você ouvir som, tente arrastar na caixa que diz Pitch à direita dos Test Tones, onde você pode alterar a frequência dos tons e ver o que acontece.

Se você conseguir iniciar o Pure Data e ouvir o som do patch de teste, estará pronto para ir para a próxima etapa. Mas o Pure Data pode ficar um pouco meticuloso quanto à saída de áudio da primeira vez, então, se você ainda não estiver obtendo áudio, tente o seguinte:

  • É possível que o áudio esteja passando pelo cabo HDMI, então, para forçá-lo a usar o conector de fones de ouvido:

    • Em um tipo de shell: sudo raspi-config
    • Vá para Opções Avançadas-> Áudio-> Forçar entrada de 3,5 mm ('fone de ouvido')
  • Tente reiniciar. Às vezes, isso resolve.
  • Verifique os alto-falantes e a conexão com o Raspberry Pi.

Etapa 4: Etapa 4: Conectando a guitarra

Etapa 4: conectando a guitarra
Etapa 4: conectando a guitarra
Etapa 4: conectando a guitarra
Etapa 4: conectando a guitarra
Etapa 4: conectando a guitarra
Etapa 4: conectando a guitarra

A maneira mais fácil de conectar o controlador de guitarra ao Raspberry Pi é com uma placa breakout de baixo custo, como o Nunchucky *. Esta placa permite que você acesse o sinal vindo da guitarra sem cortar o plugue ou quebrar a guitarra. Em um lado da placa há traços planos projetados para se encaixar perfeitamente no plugue que sai da guitarra. Existem também dois pequenos entalhes que permitem que o plugue se encaixe no lugar, evitando que ele se solte. Os traços levam a quatro pinos de cabeçalho no lado oposto da placa.

Observação: o Nunchucky vem com pinos de encaixe, mas eles não são soldados, então você precisa fazer isso sozinho. Para o meu, usei pinos de cabeçalho de 90 graus, o que permite que fique plano no projeto final.

Você precisará de quatro fios para conectar o Nunchucky ao Raspberry Pi. Conecte os fios dos pinos do cabeçalho Nunchucky aos pinos GPIO do Raspberry Pi da seguinte maneira:

  • 3,3v -> Pino 1
  • Dados -> Pino 3
  • Clk -> Pino 5
  • Gnd -> Pin 9

Em meu projeto, usei conectores crimpados para os fios, de forma que eles não se soltassem com tanta facilidade. Mas se você não tiver conectores crimpados, quatro fios jumper individuais de fêmea para fêmea funcionarão bem. Se você usar os conectores crimpados, certifique-se de prestar atenção à ordem dos fios nos pinos do conector e nos pinos GPIO. Observe também que, nos pinos GPIO, pulamos o pino 7. Para compensar, usei um conector de crimpagem de cinco fios em uma extremidade e pulei um slot.

Para verificar se o Raspberry Pi pode detectar o controlador de guitarra, abra um shell e digite: sudo i2cdetect -y 1

Ele deve imprimir uma grade no shell com a maioria dos traços duplos neles. Se o computador puder detectar a guitarra, você deve ver o ID # 52 da guitarra em um dos slots … na minha máquina, ele apareceu na coluna 2, linha 5 … mas não importa qual, contanto que você veja o número 52 em algum lugar lá.

Se o computador não conseguir detectá-lo, aqui estão algumas coisas que você pode tentar:

  • Certifique-se de que os fios estejam bem conectados.
  • Certifique-se de que tudo está conectado aos pinos corretos.
  • Vire o plugue da guitarra. O Nunchucky não impede que você conecte o plugue de cabeça para baixo, então ele pode apenas estar invertido.
  • Certifique-se de que o i2c esteja ativado no Raspberry Pi (conforme mostrado na etapa 2)

* Se o plugue do controlador da guitarra parecer familiar, é porque ele é o mesmo que o controlador padrão do Wii Nunchuck … daí o nome Nunchucky! Isso também significa que você pode usar essa mesma placa de breakout para se conectar a controladores nunchuck.

Etapa 5: Etapa 5: Juntando tudo

Etapa 5: juntando tudo
Etapa 5: juntando tudo
Etapa 5: juntando tudo
Etapa 5: juntando tudo

Agora que tudo está configurado no Raspberry Pi, só precisamos de um pouco de código para que funcione. Você pode baixar o código e outros arquivos necessários da seguinte maneira:

  • Para baixar o código e outros arquivos no Raspberry Pi, abra um novo shell e digite o seguinte comando (pode ser necessário colocar 'sudo' antes dele): git clone
  • Isso criará um diretório em seu diretório inicial chamado keytarHero (ou seja, / home / pi / keytarHero) e fará o download dos arquivos nele.

Existem três arquivos principais neste pacote:

  • WiiGHController.py: Este é um script python que abre uma conexão i2c com a guitarra e retorna os valores dos vários controles. Por padrão, ele também imprime os valores que está lendo no shell para que você possa ver o que está fazendo.
  • keytarHero.pd: Este é o arquivo de patch Pure Data que criei para criar a música que você ouvirá. Ele é configurado para ler os valores vindos da guitarra e encaminhá-los para vários nós para gerar os sons. Discutirei os detalhes do patch na próxima etapa, mas, no final das contas, você pode modificá-lo para fazer o que quiser a partir daqui.
  • keytarHero.py: Este é o script que inicia todo o processo e cola tudo junto. Ele inicia o Pure Data e abre o patch keytarHero.pd. Ele abre uma conexão com o patch e passa os valores da guitarra para o patch.

O momento da verdade! Certifique-se de que a guitarra esteja conectada ao Raspberry Pi e, em seguida, você está pronto para usar. Para iniciá-lo, você só precisa executar o script keytarHero.py. Para fazer isso:

  • Abra um novo shell e digite: cd keytarHero
  • Em seguida, execute o comando: python keytarHero.py

É isso! Se tudo estiver funcionando corretamente, o Pure Data deve iniciar e começar a tocar o patch. Você deve ouvir uma sequência de notas sendo tocadas e, quando você pressiona os botões da guitarra, ela deve responder a ela.

Solução de problemas

Se não estiver funcionando, veja algumas coisas a serem verificadas:

  • O patch do Pure Data não está iniciando ou está obtendo um erro sobre não encontrar arquivos? O script keytarHero.py tem o caminho para o arquivo de patch Pure Data codificado para '/home/pi/keytarHero/keytarHero.pd'. Se você moveu sua pasta keytarHero ou aquele arquivo de patch para outro lugar, será necessário atualizar o script para usar seu caminho. Para fazer isso, abra o arquivo keytarHero.py e procure a variável chamada PD_PATCH_PATH e altere-a para apontar para o diretório onde está o arquivo keytarHero.pd. Salve o script e execute-o novamente e você estará pronto para prosseguir.
  • A guitarra está emitindo um sinal? O script deve imprimir o sinal que está recebendo da guitarra para o shell continuamente como uma sequência de números, cada um representando o valor de um controle na guitarra. Quando você usa um controle na guitarra, ele deve fazer com que esses números mudem. Caso contrário, verifique se você fez a configuração do i2c e as conexões da guitarra corretamente nas etapas acima.
  • O áudio Pure Data está ligado? O patch Pure Data fornecido neste pacote deve ligar automaticamente o áudio, mas verifique se a caixa de seleção DSP no console Pure Data está marcada. Verifique também as configurações de áudio conforme mostrado na Etapa 3.
  • A Pure Data está recebendo o sinal da guitarra? No canto superior direito do patch está um grupo de nós responsáveis por ler o sinal da guitarra e transmiti-lo para o resto do patch. Conforme você pressiona os botões da guitarra, os números nesta seção também devem ser atualizados, informando que ela está recebendo o sinal corretamente.
  • Inicializando variáveis no patch. Pure Data pode ser um pouco meticuloso quanto a valores no patch que não são inicializados. Eu adicionei mecanismos para acionar variáveis quando ele for aberto, mas pode valer a pena apenas clicar em algumas das caixas de mensagem (aquelas que parecem ter sido mordidas). Isso faz com que eles sejam inicializados e podem acordá-los.

Etapa 6: um tour pelo patch de dados puros

Um tour pelo patch de dados puros
Um tour pelo patch de dados puros
Um tour pelo patch de dados puros
Um tour pelo patch de dados puros
Um tour pelo patch de dados puros
Um tour pelo patch de dados puros
Um tour pelo patch de dados puros
Um tour pelo patch de dados puros

A configuração descrita até agora neste tutorial fará as coisas funcionarem para você, mas uma das coisas boas sobre o uso de Pure Data para este projeto, é que ele pode ser personalizado para fazer o que você quiser. Quando o patch é aberto, se você pressionar Ctrl + E, ele coloca o patch no modo de edição e você pode alterá-lo. Os detalhes do uso de Pure Data estão além do escopo deste tutorial (há muitos tutoriais online para isso), mas pode ser divertido mexer nele, então aqui está um tour geral do que está acontecendo no patch keytarHero.pd, caso você deseja personalizá-lo:

  • Comunicação da guitarra: No canto superior direito do patch está uma árvore de nós responsáveis por lidar com o sinal da guitarra. Os valores do violão são uma longa corda, portanto, esses nós dividem a corda em valores individuais para cada controle, convertem-nos em números e, em seguida, os passam para os nós de 'envio' (aqueles que começam com um s). Os nós de envio recebem um nome e emitem o sinal para 'receber' nós com o mesmo nome. Por exemplo, o nodo 's whammy' emite os valores vindos da barra whammy da guitarra e o nodo 'r whammy' no meio do patch recebe esse sinal e usa esse sinal para parar o sequenciador. Os nós de envio / recebimento ajudam a reduzir a confusão de linhas de conexão no patch. Eu não recomendo mexer com esta seção, pois é meio complicado para acertar, mas você pode definitivamente adicionar nós de recepção adicionais ao longo do patch conforme necessário para receber sinais dele conforme necessário.
  • Seção do sequenciador: A seção intermediária do patch controla o sequenciador. No lado esquerdo está uma barra com um quadrado preto em movimento que mostra qual nota de uma sequência de 16 notas ela está tocando. A tecla strum controla se a sequência está sendo reproduzida para frente ou para trás. Os botões mais / menos aumentam / diminuem a velocidade. No lado direito, há cinco conjuntos de números que controlam quais notas são reproduzidas durante cada etapa. Cada sequência é designada para tocar quando um dos cinco botões do traste é pressionado. Esses números são valores MIDI e você pode alterá-los para tocar as notas que quiser … basta dar-lhes valores entre 0 e 127.
  • Seção Oscillator / FX: No canto inferior esquerdo estão o oscilador e os nós FX que realmente fazem o som. O oscilador primário está à esquerda. Os valores midi da seção do sequenciador são convertidos em frequências e alimentados para o oscilador. É misturado com um segundo oscilador vindo do lado direito. Sua frequência também é controlada pelos valores midi, mas com um deslocamento de frequência adicional acionado pelo eixo X do joystick. Isso causa um efeito desafinado ou assobio quando você move o joystick para a esquerda ou direita. No canto inferior direito, há também um nó de filtro passa-baixa cuja frequência de corte está ligada ao eixo Y do joystick. Um filtro passa-baixo determina quanto som de alta frequência é removido do som. Quando o joystick é movido para a posição para baixo, ele corta muitas das frequências altas, o que resulta em um som abafado. Quando movido para a posição superior, ele passa todas as frequências, resultando em um som mais brilhante.
  • Inicialização: No canto superior esquerdo do patch, há uma série de nós que inicializam o patch quando ele é iniciado, como ligar o áudio e 'tocar' vários nós para ativá-los. Novamente, você provavelmente não precisa mexer com esta seção, mas se houver coisas que você deseja que aconteçam quando o patch iniciar, conecte-as ao nó chamado 'loadbang'.
  • Eu tentei documentar o patch com comentários no próprio patch, então espero que isso lhe dê informações suficientes para explorar diferentes opções daqui.

Aproveitar!

Etapa 7: Coisas adicionais para tentar

Executando a guitarra 'sem cabeça'

Deve ser possível executar este projeto sem estar conectado a um monitor / teclado / mouse se você executou o Raspberry Pi de uma fonte de alimentação portátil adequada. O Raspberry Pi não se encaixa bem na abertura na parte de trás do violão, mas se você estiver se sentindo corajoso, pode fazer modificações no violão para consertar isso … ou apenas montar o Pi na parte de trás com parafusos e fixá-lo um pouco. Existem muitos tutoriais online sobre como executar scripts no Raspberry Pi headless, mas basicamente você deseja executar o comando 'python /home/pi/keytarHero/keytarHero.py&' quando ele for inicializado. Teoricamente, então, você teria uma guitarra com apenas um cabo saindo dela para o alto-falante … exatamente como uma guitarra elétrica de verdade!

Modificações adicionais de Pure Data

Eu tinha algumas outras ideias de como a guitarra poderia controlar o patch Pure Data, mas não tentei. Essas seriam mudanças no patch que podem ser divertidas de experimentar:

  • Barra Whammy: No patch atual, a barra whammy simplesmente interrompe a reprodução da sequência, mas acho que seria melhor se a barra whammy também aumentasse a frequência ao mesmo tempo, como uma barra real faria. Tentei fazer funcionar por um tempo, mas era mais complicado do que eu pensava. Eu acho que pode ser apenas uma questão de adicionar uma expressão na seção do oscilador que adiciona uma frequência um pouco mais alta ao oscilador com base no valor vindo da barra whammy.
  • Barra de toque: atualmente, a barra de toque reproduz a sequência para frente quando pressionada e para trás quando pressionada para cima, mas pode ser melhor alternar entre diferentes opções de sequência, como passo aleatório, etc.
  • Botões mais / menos: os botões mais / menos mudam as batidas por minuto, mas é um pouco desanimador, a menos que você os pressione várias vezes. Pode ser bom ter um aumento maior a cada vez. Ou talvez faça com que ele alterne o sequenciador entre reprodução de trigêmeos de 16 batidas, 8 batidas, 4 batidas.

Recomendado: