DATA é o acrónimo de
Dezás Amigos das Tecnoloxías Abertas.
Unha asociación para a difusión do coñecemento de tecnoloxías baseadas no software libre, hardware libre, cultura libre, ...
“Sonic Pi é unha contorna de programación de código aberto, deseñada para explorar e aprender conceptos de programación a través do proceso de creación de novos sons. É un sintetizador libre para todo o mundo creado por Sam Aaron.”
Raspberry Pi é un computador baixo custo desenvolvido co obxectivo de estimular a ensinanza de ciencias da computación nas escolas.
Distintos sistemas operativos son soportados por Raspberry Pi, o máis habitual é "raspbian", unha versión de Debian (GNU/Linux).
| Alt + R | Executar (Run) |
| Alt + S | Parar (Stop) |
| Alt + / | (Des)comentar código |
| Ctrl + i | Información da palabra seleccionada |
# Escribimos o seguinte código no editor
# a linguaxe de programación é Ruby
play 60 # Tamén podemos poñer :C , 'C' ou :C4
play 60 # Do equivale a :C ou :C4
sleep 1
play 62 # Re, :D
sleep 1
play 64 # 'Mi', :E
sleep 1
play 65 # 'Fa', :F
sleep 1
# ... 67 'Sol', 69 'La', 71 'Si'
play 72 # 'Do'
sleep 1
# As notas como números nunha lista entre corchetes
# e separados por unha coma
escala=[60, 62, 64, 65, 67, 69, 71, 72]
# As notas como notación anglosaxona, OLLO ao :C5
#escala=[:C, :D, :E, :F, :G, :A, :B, :C5]
play_pattern escala
# Alterando duración
duracion=[0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5]
# Outra forma de escribir a liña anterior
#duracion=Array.new(8, 0.5)
play_pattern_timed notas, duracion
play_pattern scale(:C, :diatonic)
A letra :R (rest) equivale a un silencio
play_pattern [:c, :d, :e, :f, :r, :g, :a, :b]
Un acorde é unha lista de notas que se executan á vez
# As dúas liñas son equivalentes
#play [:d, :f, :a, :c5]
play chord(:d, :minor7)
use_synth :beep # Por defecto
play 60
# Outros synth
# :prophet
# :dsaw
# :fm
# :tb303
# :pulse
Os "samples" son pequenas mostras de són que podemos empregar. Sonic pi vén cun conxunto de mostras pero podemos empregar as nosas.
live_loop :drums do
sample :drum_heavy_kick
sleep 1
end
live_loop :drums do
sample :drum_heavy_kick
sleep 1
sample :drum_snare_hard
sleep 1
sample :drum_heavy_kick
sleep 1
sample :drum_snare_hard
sleep 1
end
live_loop :hihat do
sample :drum_cymbal_closed
sleep 0.25
sample :drum_cymbal_pedal
sleep 1
end
live_loop :bass do
use_synth :fm
play :c2, attack: 0, release: 0.25
sleep 0.25
play :c2, attack: 0, release: 0.3
sleep 2
play :e2
sleep 0.75
play :f2
sleep 1
end
live_loop :melody do
play_pattern_timed
[:c4, :e4, :f4, :g4, :f4, :e4, :f4, :g4, :f4, :e4, :f4],
[0.25, 0.25, 0.25, 1.5, 0.25, 0.25,0.25, 0.25, 0.25, 0.25]
end
live_loop :melody do
if one_in(6)
use_transpose 2
else
use_transpose 0
end
play_pattern_timed
[:c4, :e4, :f4, :g4, :f4, :e4, :f4, :g4, :f4, :e4, :f4],
[0.25, 0.25, 0.25, 1.5, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25],
attack: 0,
release: 0.2
end
live_loop :bass do
use_synth :tb303
play (chord :C2, :major).choose,
release: 0.125, cutoff: rrand(60, 110)
sleep 0.25
end
# Control do volume (amp) e control estereo (pan: 0, 1 ou -1)
play 60, amp: 0.8, pan: -1
sleep 1
# Eliminar frecuencia -130
use_synth :tb303
play 60, cutoff: 100
sleep 1
# Misturado con ADSR
use_synth :prophet
play 60, attack: 1, sustain: 1, pan: -1, cutoff: 90, amp: 0.8
use_bpm 180
use_synth :beep
# Variar os valores de room entre 0 e 1
with_fx :reverb, room: 0.9 do
play :c, sustain: 4, pan: -1, amp: 0.6, cutoff: 120
sleep 1
play :e, sustain: 3, pan: 1, amp: 0.7, cutoff: 110
sleep 1
play :g, sustain: 2, pan: 0, amp: 0.8, cutoff: 100
sleep 1
play :c5, release: 1
end
Unha escala é unha lista de notas que se executa unha detrás da outra de xeito ascendente
live_loop :escala do
play (scale :c, :diatonic).tick
sleep 1
play (scale :c, :diatonic).choose
sleep 1
end
# Lista de acordes
prg=[chord(:d,:m7), chord(:e,:m7), chord(:d,:m7), chord(:G,:M7)]
prg=prg.shuffle
anel=prog.ring
live_loop :acordes do
play anel.tick, attack: 0.25, release: 0.25, sustain: 1
sleep 1.5
end
# Lista de notas
notas= scale :a, :minor_pentatonic, num_octaves: 2
notas=notas.shuffle
anel=notas.ring
live_loop :acordes do
play anel.tick, attack: 0.25, release: 0.25, sustain: 1
sleep 1.5
end
trompeta='/ruta/ao/ficheiro/trumpet_cs5.wav'
tonos=[0,2,4,5,7,9,11,12]
8.times do
sample trompeta, sustain: 0.5, release: 0.5, pitch: tonos.tick
sleep 1
end