Índice:

Raspberry Pi Drum Machine: 5 etapas
Raspberry Pi Drum Machine: 5 etapas

Vídeo: Raspberry Pi Drum Machine: 5 etapas

Vídeo: Raspberry Pi Drum Machine: 5 etapas
Vídeo: CircuitPython School - Use Capacitive Touch to Build a Raspberry Pi based Drum Machine 2024, Novembro
Anonim
Raspberry Pi Drum Machine
Raspberry Pi Drum Machine

Sequenciador de amostra, por meio de um Raspberry Pi + Python.

O sequenciador tem 4 polifonias e permite ao usuário armazenar e sugerir 6 sequências diferentes que podem ser alternadas em tempo real, e suporta a capacidade de alterar entre diferentes amostras.

Eu escrevi o script de uma forma que é totalmente operável com qualquer controlador MIDI e sons. Eu uso 18 bancos de sons diferentes, 16 samples cada, porém adicionar ou subtrair bancos e samples é fácil e não requer muitas modificações. Se você tiver algum problema me mande um e-mail: [email protected]

Encontre o código no GitHub em:

Por favor, deixe-me saber se você usar, e especialmente se você fizer um vídeo com ele!

Etapa 1: Dependências

Este programa requer os seguintes módulos Python (não integrados):

mido

pygame

entorpecido

No entanto, Mido apresenta algumas complicações, pois o próprio Mido requer algumas dependências. Para garantir que todos sejam instalados, basta digitar os seguintes comandos no terminal do seu Raspberry Pi (omitindo o '$') e tudo ficará bem. Os outros módulos podem ser instalados normalmente.

$ sudo apt-get update

$ sudo apt-get install build-essential

$ sudo apt-get install libasound-dev ou libasound2-dev

$ sudo apt-get install libjack0

$ sudo apt-get install libjack-dev

$ sudo apt-get install python-pip

$ sudo apt-get install python-dev

$ sudo pip install python-rtmidi

$ sudo pip install mido

Etapa 2: Configurar os valores de entrada Midi

Configurar valores de entrada Midi
Configurar valores de entrada Midi

Dentro do Python Script principal existe um array chamado noteList que é composto de 16 inteiros (linha 165.) Estes são os valores de nota MIDI que nosso controlador envia para o Pi para acionar os sons. Cada controlador de midi é diferente, então, a menos que você também tenha um Akai LPD8, você provavelmente precisará alterar esses valores para corresponder ao seu dispositivo.

O repositório Github também inclui outro script chamado "midihelp.py", feito especificamente para esse propósito! Tudo o que ele faz é imprimir os valores de entrada do primeiro controlador MIDI que o computador reconhece no console. Tudo que você precisa fazer é substituir esses valores no array se eles forem diferentes dos incluídos em noteList.

A ordem das notas também se correlaciona com o efeito de som reproduzido por pasta, portanto, lembre-se disso também.

Etapa 3: adicionar pastas adicionais com amostras

Os kits de amostra dentro do script são armazenados por meio de pastas no mesmo diretório, configurando exatamente como o kit 808 está dentro do arquivo GitHub. Dessa forma, posso ter todos os tipos de conjuntos de amostras diferentes armazenados em pastas que são facilmente organizadas e substituídas.

A única coisa a mudar no próprio script é a variável foldNum, que apenas informa ao script quantas pastas de amostras existem. Atualmente, o script tem foldNum definido como um porque há apenas uma subpasta no mesmo diretório (o kit 808). O máximo de pastas que o script pode manipular no momento é 18, que é quantas eu estou usando, no entanto, é bastante trivial para alterar isso, deixe-me saber se precisar de ajuda.

Os nomes das pastas realmente não importam (contanto que sejam todas diferentes), pois o Script apenas lê a quantidade de pastas no mesmo diretório e pega os caminhos dessa forma. Os nomes dos arquivos em si são importantes, porém, mais sobre isso na próxima etapa.

Etapa 4: adicionar e configurar amostras adicionais em novas pastas

Adicionar e configurar amostras adicionais em novas pastas
Adicionar e configurar amostras adicionais em novas pastas

Os sons são carregados no amostrador por meio de pastas no mesmo diretório contendo arquivos.wav com nomes numerados entre 0-15. Consulte a pasta 808 incluída para obter um exemplo disso. CADA subpasta com amostras deve ser idêntica uma à outra.

O índice de entradas MIDI no array noteList corresponde exatamente ao nome do arquivo.wav.

Por exemplo:

  • quando você aciona a nota MIDI armazenada em noteList [0], o arquivo wav 0.wav é reproduzido.
  • quando você aciona a nota MIDI armazenada em noteList [8], o arquivo wav 8.wav é reproduzido.

Fiz isso em parte para que cada controlador MIDI pudesse ser configurado facilmente para funcionar com o script e também para estender ou limitar o número de amostra e entrada, bem como organizar os arquivos e o script para que o bumbo sons, por exemplo, sempre seriam salvos como 0.wav e seriam disparados pela primeira nota MIDI.

Escolhi 16 valores um tanto arbitrariamente para corresponder às 16 entradas no meu controlador, então se você preferir fazer um sequenciador com apenas 1 amostra, ou com muitos mais, tudo que você precisa fazer é numerar os arquivos de áudio de acordo e subtraia ou adicione os números armazenados na matriz noteList para corresponder.

Se o kit 808 incluído funcionar corretamente, mas você tiver problemas com suas próprias amostras, a solução provavelmente seria alterar a taxa de amostragem dos arquivos para corresponder à taxa de amostragem de 22.050 khz do PyGame e profundidade de bits de 16. Você pode fazer isso no Audacity ou qualquer outro software de edição de áudio. Eles devem funcionar perfeitamente a partir daí!

Etapa 5: Referência do teclado numérico

Ok, há um monte de coisas acontecendo dentro do sequenciador, mais do que eu tinha em mente inicialmente, então eu empurrei um pouco em um teclado numérico para combinar com a funcionalidade aumentada. Isso em mente, o Asterisco * e o Período. ambos funcionam como teclas de função.

REFERÊNCIA

FUNÇÕES PRINCIPAIS

[8] - Liga e desliga o metrônomo

[9] - Ativar e desativar o modo de gravação

[Entrar] - Reproduzir / pausar a sequência

[0] - Excluir nota atual na sequência

[Num Lock e *] - Desligar

[Nota MIDI e.] - Não quantize para números pares

FUNÇÕES DE TEMPO

[+] - BPM de aceleração do curso

[-] - Redução do curso BPM

[+ e *] - Acelere rapidamente o BPM

[- e *] - Desacelere rapidamente o BPM

[+ e.] - Aceleração fina do BPM

[- e.] - Reduzir bem o BPM

FUNÇÕES DE SEQUÊNCIA

[1-6] Sequência de chamada 1-6

[1-6 e.] Sequência de armazenamento 1-6

[0 e.] Sequência de corrente clara

ALTERANDO PASTAS DE AMOSTRA

[1-9 e *] - Alterar para Pacote de Amostras nas Pastas 1-9

[1-9 e * e.] - Mude para Pacote de Amostras nas Pastas 10-18

DICAS DE SEQUÊNCIA:

-Limpe a sequência atual [0 e.] E armazene-a em todas as sequências que deseja limpar da memória.

-Recha uma sequência e armazene-a em um número diferente para copiá-la.

Recomendado: