Fala pessoal! Essa semana estou trazendo para vocês uma das palestras que achei mais interessante durante a RubyConf 2017, evento anual de Ruby realizado pela Locaweb com a correalização do iMasters. Essa palestra foi a Ruan Brandão sobre o Sonic Pi, “Sonic Pi: Making Music with Ruby”. O Sonic Pi é um sintetizador de música em que conseguimos programar em Ruby músicas.
O bom do Sonic Pi é que ele pode ser utilizado em Windows, Mac, Linux ou Raspberry Pi. Para instalar, basta ir no site oficial http://sonic-pi.net e escolher a plataforma de preferência.
Ao abrir o editor, é exibida uma mensagem de boas vindas. E alguns botões de ação. Para aprender a programar música no Sonic Pi, você poderá utilizar um tutorial próprio do programa que fica no canto inferior esquerdo.
No caso da palestra, o Ruan foi mostrando passo a passo como construir uma música no Sonic Pi. Começou explicando sobre o comando “play”, que toca uma nota musical. Falando de como funcionam as letras correspondentes as notas. E sobre o comando “sleep”, que pausa a execução em uma determinada unidade de tempo (no caso da música esse tempo é medido em batidas). Mostrou que o comando “loop” é utilizado para repetir um conjunto de comandos e que o “live_loop” é utilizado para realizar loops sem “travar” a execução. Ele começou mostrando algo bem simples, do tipo:
use_bpm 80 # definindo o tempo da musica para 80 use_synth :blade # definindo o tipo de sintetizador para blade live_loop :riff do #live_loop play :Fs4 #tocar nota fá sustenido 4 sleep 0.25 #parar por 1/4 de batida play :Fs4 #tocar nota fá sustenido 4 sleep 0.25 #parar por 1/4 de batida end #fim do live_loop
E pouco a pouco foi mostrando como mudar o tempo da música, o tipo de sintetizador, adicionar batidas de bateria, acordes de violão ou guitarra. E no fim da palestra tivemos uma playlist que ele criou no gist, incluindo músicas conhecidas.
Como, por exemplo, Billy Jean:
# Billie Jean on Sonic Pi use_bpm 120 live_loop :drums do sample :drum_heavy_kick sleep 0.5 sample :drum_cymbal_closed sleep 0.5 sample :drum_snare_hard sleep 0.5 sample :drum_cymbal_closed sleep 0.5 end with_fx :level, amp: 1.5 do use_synth :fm live_loop :bass do play :Fs3 sleep 0.5 play :Cs3 sleep 0.5 play :E3 sleep 0.5 play :Fs3 sleep 0.5 play :E3 sleep 0.5 play :Cs3 sleep 0.5 play :B2 sleep 0.5 play :Cs3 sleep 0.5 end end sleep 8 live_loop :guitar do play_chord [:Cs4, :Fs4, :A5, :Cs5] sleep 1.5 play_chord [:Ds4, :Gs4, :B5, :Ds5] sleep 2.5 play_chord [:E4, :A4, :C6, :E5] sleep 1.5 play_chord [:Ds4, :Gs4, :B5, :Ds5] sleep 2.5 end
É realmente muito divertido só pensar que dá para programar músicas com comandos de programação. Para mais músicas, visite o gist que o Ruan fez: https://gist.github.com/ruan-brandao/c27f17f8a354f2a18eb35d0066130c2e
Que tal você também experimentar o Sonic Pi e deixar nos comentários um código com uma música que você desenvolveu?
Por hoje é só pessoal. Um grande abraço, até a próxima!