Back-End

24 nov, 2017

Drops RubyConf – Sonic Pi: Um sintetizador de música em Ruby

Publicidade

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!