Sonic Pi: Criando música com a Raspberry Pi Deixe um comentário

O Raspbian contém uma aplicação fabulosa: o Sonic Pi. Desenvolvido com apoio da Raspberry Pi Foundation, o Sonic Pi permite gerar sons e músicas escrevendo código. Você pode inclusive alterar o código enquanto ele está sendo executado, o que facilita experimentações.

Se você tem dúvidas de como instalar o sistema operacional Raspbian na Raspberry Pi, você pode acessar nosso post sobre o assunto.

Ouvindo o Som Gerado pelo Raspberry Pi

A forma mais simples de saída do som (e o padrão do Raspbian) é através do HDMI. Se você ligar a uma TV, o som sairá pelos alto-falantes dela (se ela tiver conectores de saída de áudio, você poderá ligar a um amplificador). Alguns monitores HDMI possuem também alto falantes ou conectores de saída de áudio.

Se o seu monitor não tratar o som recebido via HDMI (e você não estiver usando um Raspberry Pi Zero) podemos usar o conector de áudio e vídeo. Vou assumir aqui que você tem um Raspberry “moderno” (B+, 2 ou 3), com o conector de 3.5mm de áudio e vídeo com quatro polos. Você pode conectar nele sem problemas um cabo ou fone de ouvido com três polos. Você pode também conectar um cabo estéreo com conectores RCA na outra ponta, porém atenção que existem padrões diferentes:

conector Sonic Pi

Os cabos que eu encontrei à venda correspondem ao “Camcoders” da tabela acima. Para usá-lo com o Raspberry, inverta na ligação os conectores RCA de vídeo e audio direito (normalmente amarelo e branco).

O áudio gerado pelo conector tem qualidade inferior ao do HDMI e você precisará mudar a configuração de áudio. No desktop do Raspbian, clique com o botão direito o ícone de alto-falante no topo da tela:

Som Sonic Pi

Executando o Sonic Pi

O Sonic Pi está no menu do desktop do Raspbian:

Acessando Sonic Pi

A tela principal do Sonic Pi tem quatro áreas de interesse inicial:

Interface Sonic Pi

  1. Botões de controle. Play inicia a execução do programa no buffer atual (ou atualiza a execução após uma alteração). Stop para a execução. Load e Save permitem carregar e salvar programas.
  2. Esta é a área de edição do programa.
  3. Você pode ter até 10 programas carregados no Sonic Pi. Os botões de controle utilizam o buzzer que estiver selecionado (na tela acima, o Buffer 3).
  4. Na parte de baixo temos a ajuda, que inclui um tutorial e exemplos

Tocando notas no Sonic Pi

Vamos começar do mais simples (daqui para frente fica mais interessante se você acompanhar no Raspberry Pi). O comando play dispara uma nota e o comando sleep suspende o programa por um tempo (mantendo a execução da nota):

play 60
sleep 0.5
play 62
sleep 0.5
play 64
sleep 0.5
play 65
sleep 1
play 65
sleep 0.5
play 65
sleep 0.5

O número após o play indica a nota a tocar (60 = Dó, 62 = Ré, etc). O tempo para o sleep é em segundos.

O comando play_pattern toca uma série de notas com a velocidade definida por use_bpm (beats per minute, notas por minuto):

use_bpm 120
play_pattern [60, 62, 64, 65]
sleep 0.5
play_pattern [65, 65]

Podemos repetir várias vezes (no caso três) um trecho:

use_bpm 120
3.times do
  play_pattern [60, 62, 64, 65]
  sleep 0.5
  play_pattern [65, 65]
  sleep 2
end

Tocando sons diferentes

Os sons tocados por play são gerados por um sintetizador. Existem vários sintetizadores implementados no Sonic Pi, o comando use_synth seleciona o sintetizador usado para as notas seguinte:

use_synth :piano
use_bpm 120
3.times do
  play_pattern [60, 62, 64, 65]
  sleep 0.5
  play_pattern [65, 65]
  sleep 2
end

Uma outra forma de obter sons diferentes é tocando um sample. O simple é uma gravação, você pode mudar alguns parâmetros da execução mas aqui não existe o conceito de nota.

do
  sample :drum_heavy_kick, pan: 0.5
  sleep sample_duration :drum_heavy_kick
  sample :drum_cymbal_pedal, pan: -0.5
  sleep 0.5
end

Neste exemplo eu usei o modificador pan, que controla onde o som será tocado na saída estéreo. pan varia de -1 (esquerda) a 1 (direita).

O do/end sem nenhuma modificação é um loop “infinito” (até você parar a execução).

Efeitos

Os sons gerados podem ser alterados por efeitos antes de serem enviados para a saída. Por exemplo:

do
  use_synth :fm
  with_fx :flanger do
	play_chord [:C4, :E4]
	sleep 0.3
	play_chord [:D4, :F4]
	sleep 0.3
	play_chord [:E4, :G4]
  end
end

Aqui estamos usando o sintetizador “fm” e o som passa pelo efeito “flanger”. O comando play_chord toca simultaneamente várias notas.  Ao invés de selecionar as notas por números eu usei os seus nomes. :C4 indica o quarto (4) dó (C)  em um piano padrão.

Múltiplas faixas

Vamos encerrar esta descrição rápida mencionando a possibilidade de tocar múltiplas faixas em paralelo. Para isto existem os comandos in_thread e live_loop. No exemplo abaixo temos três faixas (bateria, baixo e melodia):

live_loop :bateria do
  sample :drum_heavy_kick, pan: 0.5
  sleep sample_duration :drum_heavy_kick
  sample :drum_cymbal_pedal, pan: -0.5
  sleep 0.3
  sample :drum_heavy_kick, pan: 0.5
  sleep sample_duration :drum_heavy_kick
  sample :drum_cymbal_pedal, pan: -0.5
  sleep 0.3
end
 
live_loop :baixo do
  sync "/live_loop/bateria"
  sleep 0.05
  use_synth :hollow
  play :C2, amp: 0.8, attack: 0.02, sustain: 0.1, decay: 0.05
  sleep 0.3
  play :D2, amp: 0.8, attack: 0.02, sustain: 0.1, decay: 0.05
  sleep 0.3
  play :E2, amp: 0.8, attack: 0.02, sustain: 0.1, decay: 0.05
end
 
 
live_loop :melodia do
  sync "/live_loop/bateria"
  use_synth :fm
  with_fx :flanger do
	play_chord [:C4, :E4]
	sleep 0.3
	play_chord [:D4, :F4]
	sleep 0.3
	play_chord [:E4, :G4]
  end
end

Um problema ao tocar faixas em paralelo é como sincronizá-las. Os comandos sync no programa acima aguardam que a faixa especificada esteja no início do loop. Este programa usa também uns modificadores no som do “baixo”: amp controla a amplitude e attack/sustain/decay controlam a forma do “envelope” do som (attack define o tempo da subida de volume no início da nota, sustain o tempo que ela permanece no volume máximo e decay o tempo da queda no final da nota).

Para aprender mais

Este artigo menciona de forma rápida apenas alguns recursos do Sonic Pi. A melhor (e mais divertida) forma de aprender mais é brincando com ele. Se você não tiver um Raspberry, não tem problema: existem versões também para PCs. A ajuda dentro do próprio software contém o tutorial / manual.

A referência básica para o Sonic Pi é o site oficial: https://sonic-pi.net/, nele você encontra links para outras referências, como este e-book:

https://www.raspberrypi.org/magpi/issues/essentials-sonic-pi-v1/

Mas você também encontra alguns códigos prontos, como um que faça tocar a música tema do Mario.

Gostou de aprender como fazer música na Raspberry? Ajude-nos a melhorar o blog comentando abaixo sobre este tutorial. Não se esqueça de visitar o fórum da FilipeFlop!

Boas composições!

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *