Índice:
- Suprimentos
- Etapa 1: conceito
- Etapa 2: preparar o acelerômetro
- Etapa 3: construir a luva
- Etapa 4: Compor no Ableton
- Etapa 5: Comece a usar o Firmata
- Etapa 6: Teste a Firmata
- Etapa 7: Influencie a música com os movimentos das mãos
- Etapa 8: A classe da trilha (bônus!)
- Etapa 9: duração da faixa, batidas e muito mais (bônus!)
Vídeo: Luva de dança: 9 passos
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:36
Neste tutorial, explicarei como projetar uma luva que permite que você interaja com a música por meio da dança. Você construirá uma luva com acelerômetro, criará uma composição em Ableton e, em seguida, conectará os dois da maneira mais complexa ou simples que desejar!
Suprimentos
- Ableton (ou teste gratuito)
- Um Arduino
- Cabos jumper
- Ferro de solda
- Cartão
- Pistola de cola quente
- Muita imaginação
Etapa 1: conceito
Este projeto foi pensado para ser divertido. Se a maneira como o projeto de exemplo neste tutorial funciona não é divertido para você, redesenhe-o!
Eu recomendo tocar algumas de suas músicas favoritas, mover suas mãos até elas e ver o que acontece. Você move suas mãos para cima e para baixo? Lado a lado? Devagar ou rapidamente? Que aspectos da música fazem você querer mexer as mãos? Se você tiver uma lista anotada, provavelmente será capaz de descobrir algumas maneiras de incorporar os movimentos de que gosta em seus algoritmos eventuais.
Aqui estão os movimentos que usei:
- Um movimento rápido para cima e para baixo aciona o início da música, bateria ou baixo. (Isso acontece em pontos diferentes da música, não necessariamente simultaneamente!)
- Um movimento lento e inclinado de um lado para o outro aciona um som mais ecoante e agudo.
- Em uma seção específica da música, inclinar minha mão para cima faz a música se acalmar - então eu a "peguei" em meu punho fechado.
Use-os ou faça o seu próprio!
(Observação: este tutorial não cobre como gerar música ou melodias ao vivo no Ableton! Se você seguir essas instruções, só poderá aumentar / diminuir o volume das faixas ou a aplicação de efeitos de áudio.)
Etapa 2: preparar o acelerômetro
Primeiro, descubra que tipo de acelerômetro você possui. Eu usei este; qualquer acelerômetro de três eixos serve. (Ou experimente outro tipo de sensor se quiser ir à loucura.) Certifique-se de saber como ler os dados do acelerômetro do Arduino. Você pode precisar baixar uma biblioteca para o seu acelerômetro se ele usar algo mais complexo do que a entrada analógica.
Depois de testá-lo com uma placa de ensaio, solde fios curtos com códigos de cores nos pinos do acelerômetro. Coloque um fio vermelho no pino de alimentação, um fio preto no pino de aterramento e quaisquer outros fios necessários para a comunicação do acelerômetro. (Se você tiver um acelerômetro I2C, serão os pinos SCL e SDA. Se você tiver um acelerômetro analógico, provavelmente haverá um pino para cada uma das saídas x, y e z.) Certifique-se de que sua solda esteja sólida e que as contas não se sobreponham entre os pinos adjacentes.
Etapa 3: construir a luva
Corte um pedaço de papelão fino ou papel grosso em um retângulo um pouco maior que o acelerômetro. Cole o acelerômetro no papelão, certificando-se de colocar cola no fundo. Em seguida, cole o acelerômetro com fundo de papelão na parte de trás da luva. Costure cada fio frouxamente no pulso da luva para aliviar a tensão no acelerômetro e, em seguida, sua luva está pronta. Conecte-o a fios mais longos para ter espaço suficiente para mover sua mão quando estiver conectado.
Etapa 4: Compor no Ableton
Agora é hora de compor a música que você eventualmente usará com a luva para controlar. Eu recomendo loops Ableton que soam bem juntos, mas podem ser usados para construir gradualmente: tente melodia, acordes, baixo e percussão. Você poderá usar sua luva para controlar quando cada loop é reproduzido ou não.
Se você conseguir pensar em algum tipo de som interessante para ocasionalmente incorporar em uma música, como um efeito sonoro estranho ou um instrumento não convencional, tente adicionar um ou dois deles também! Você pode vinculá-los a movimentos de mão menos comuns para trazer algo interessante de vez em quando.
Aqui está um link para minha composição compatível com o Arduino, caso você não queira escrever uma sua:
(Infelizmente, ensinar Ableton a você não está dentro do escopo do tutorial. No entanto, existem muitos vídeos bons de como fazer por aí, e o Ableton tem um período de teste gratuito de 90 dias! Eu recomendo este vídeo.)
Etapa 5: Comece a usar o Firmata
Para permitir que seu Arduino se comunique com o Ableton, você precisará usar uma biblioteca chamada Firmata. Você também precisará baixar o Connection Kit for Ableton.
No Ableton, clique em Packs> Connection Kit> Devices no menu no canto superior esquerdo e clique duas vezes no primeiro dispositivo (Arduino) para adicioná-lo. Certifique-se de lembrar em qual faixa do Ableton você adicionou o dispositivo!
Etapa 6: Teste a Firmata
Primeiro, testaremos e verificaremos se o seu Arduino está se comunicando com o Ableton. Faça upload deste snippet de código para o seu Arduino e execute-o:
#include void analogWriteCallback (byte pin, int value) {if (IS_PIN_PWM (pin)) {pinMode (PIN_TO_DIGITAL (pin), OUTPUT); analogWrite (PIN_TO_PWM (pino), valor); }} void setup () {Firmata.setFirmwareVersion (FIRMATA_FIRMWARE_MAJOR_VERSION, FIRMATA_FIRMWARE_MINOR_VERSION); Firmata.attach (ANALOG_MESSAGE, analogWriteCallback); Firmata.begin (57600);} void loop () {Firmata.sendAnalog (0, 800);}
Este é o mínimo necessário para se comunicar com Firmata. Ele envia continuamente uma saída de 800 (de 1024) para a porta 0 do dispositivo Firmata no Ableton. Se você carregar este código para o seu Arduino enquanto tiver um dispositivo Firmata aberto no Ableton, ele deve ser semelhante à imagem acima. (Mapeie a porta 0 para qualquer coisa no Ableton para poder ver os valores.)
Você pode clicar no botão Map e, em seguida, em qualquer dispositivo compatível com Firmata no Ableton para adicionar um mapeamento entre a entrada recebida para aquela porta e o valor desse dispositivo Ableton. Exemplos fáceis incluem o volume de qualquer trilha ou dial em um efeito de áudio. Explore e veja o que você pode encontrar para mapear!
Etapa 7: Influencie a música com os movimentos das mãos
A esta altura, você deve ter um pouco de música no Ableton, um script Firmata em seu Arduino e uma luva de acelerômetro anexada. Vamos fazer música!
Mapeie as portas do dispositivo Arduino no Ableton para coisas diferentes (sugiro o volume da trilha) e, em seguida, adicione linhas de código para enviar dados para cada porta do Arduino.
Firmata.sendAnalog (porta, volumeLevel);
Use um código como este para cada porta Firmata.
Se você quiser fazer algo simples, pode enviar os valores do acelerômetro não processados para as portas do Ableton e mapeá-los a partir daí. Para uma experiência mais sofisticada, você pode decidir: quais valores do acelerômetro devem acionar os sons, como e quando?
Em seguida, reproduza todos os seus loops Ableton, execute o código do Arduino e dance!
(Aviso de isenção de responsabilidade: se você está planejando criar qualquer tipo de algoritmo complexo para sua música, pode levar muito tempo para afinar. "Dance away" pode ser menos preciso do que o previsto.)
Etapa 8: A classe da trilha (bônus!)
Se você não se importa em aumentar o volume ou tem outra maneira de atenuá-lo, pule esta etapa. Caso contrário, continue lendo!
Percebi que mudar o volume de mudo para máximo de uma vez cria alguns sons de estouro desagradáveis e é bom poder aumentar o volume gradualmente. No entanto, é difícil fazer isso no ambiente de programação síncrona do Arduino. Então, aqui está um código para fazer o popping desaparecer:
classe Track {public: int volume; int volumeGoal; int updateSpeed; Faixa () {volume = 0; volumeGoal = 0; updateSpeed = 0; } void setVolumeGoal (int goal) {volumeGoal = goal; } int getVolumeGoal () {return volumeGoal; } void setUpdateSpeed (int fastness) {updateSpeed = fastness; } int getVolume () {volume de retorno; } void updateVolume () {if ((volume> volumeGoal) && ((volume - volumeGoal)> = updateSpeed)) {volume - = updateSpeed; } else if ((volume = updateSpeed)) {volume + = updateSpeed; }} void mute (int fastness) {volumeGoal = 50; updateSpeed = rapidez; } void full (int fastness) {volumeGoal = 950; updateSpeed = rapidez; }};
Cada faixa tem um volume atual, um volume objetivo e uma velocidade na qual se move em direção a esse volume objetivo. Quando você quiser alterar o volume de uma faixa, chame setVolumeGoal (). Toda vez que você executar a função loop () em seu Arduino, chame updateVolume () em cada trilha e envie essa informação para Firmata com getVolume (). Altere a velocidade de atualização para fadeouts mais rápidos ou graduais! Além disso, evite definir o volume para 0, se puder; em vez disso, defina-o com um valor muito baixo (o padrão em mute () é 100).
Etapa 9: duração da faixa, batidas e muito mais (bônus!)
Você pode fazer muitas coisas para tornar o som resultante do seu projeto mais fácil de ouvir. Aqui estão algumas opções:
Você pode controlar há quanto tempo a música está em execução. Para fazer isso, você terá que descobrir quando a música começou; Eu recomendo um loop while na função setup () que retarda a execução do seu código até que ele tenha detectado um movimento da mão. Armazene a hora de início da música em uma variável usando millis () e verifique quanto tempo ela dura cada vez que você faz um loop (). Você pode usar isso para habilitar ou desabilitar certos recursos em determinados momentos da música.
Se você sabe quanto tempo seus loops são em milissegundos, também pode rastrear quantos loops você já fez para uma compreensão mais detalhada da estrutura da música!
Outro problema potencial que você pode encontrar é quando iniciar e interromper a reprodução de uma faixa. Resolvi isso mantendo o controle de em qual batida de compasso a música estava no momento. Então, eu poderia reproduzir as faixas por qualquer número de batidas após um gesto, em vez de interrompê-la imediatamente. Isso faz com que as coisas fluam muito mais suavemente. Aqui está um exemplo:
if (millis () - lastLoop> = 4000) {loops + = 1; lastLoop = millis (); para (int j = 0; j <8; j ++) {beatNow [j] = false; }} batida = (milis () - lastLoop) / 250; if (batida! = última batida) {última batida = batida; beatsLeft - = 1; }
Certifique-se de atualizar os volumes de acordo com os valores de beatNow [beat] e / ou beatsLeft. O código de exemplo que incorpora quase tudo neste tutorial, mais alguns, está anexado, caso você queira vê-lo na prática.
Recomendado:
Pausa para dança em sala de aula: 8 etapas
Pausa para dança em sala de aula: sua classe precisa de uma pausa para o cérebro e abrir o GoNoodle é demorado? Você quer cumprimentar seus alunos na porta, mas devido ao aperto de mão, abraços e cumprimentos do COVID-19 estão fora de questão? Então aqui está a sua solução! Alunos escolhem
Controlador de estilo de pista de dança de jogos retro enormes: 4 etapas
Controlador de estilo de pista de dança de jogos retro enormes: para o nosso casamento em março deste ano, queríamos uma festa de recepção com o tema de jogos Retro, já que no fundo somos apenas crianças grandes e tenho certeza que muitas outras pessoas também! Então, depois de um pouco de pesquisa sobre MakeyMakey's Achei que seria uma ideia incrível dar um abraço
Luva de assistente: uma luva de controlador controlado por Arduino: 4 etapas (com imagens)
Luva de assistente: uma luva de controlador controlado por Arduino: A luva de assistente. Em meu projeto, eu fiz uma luva que você pode usar para jogar seus jogos favoritos relacionados à magia de uma forma legal e envolvente usando apenas alguns recursos básicos do arduino e do arduino. você pode jogar jogos de coisas como os pergaminhos antigos, ou você
LUZES DE DANÇA: 4 etapas
LUZES DE DANÇA: Este é um passo a passo instrutivo mostrando como acender doze LEDs em padrões diferentes usando apenas dois potenciômetros (potes). É um projeto muito simples e econômico que não requer nenhuma habilidade especial (exceto um pouco de solda), mas apenas
Mais um Tapete de Dança Estúpido: 7 Passos
Yet Another Stupid Dance Pad: nada de especial, apenas um pad de dança usb de madeira de 25 libras (11,3 quilos) baseado em um teclado microsoft YASDP Yet Another Stupid Dance Pad