-
-
Save fatuk/6781805a739f23b1d7af8f2c178b273f to your computer and use it in GitHub Desktop.
Sonic Pi - Soundscape for relaxing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# floating-moment.rb | |
# ambient soundscape for relaxing and meditation | |
# Created by Sven Wachsmuth | |
# https://gist.github.com/sven-wachsmuth/0cc06cc0d698d8932ceb142dcf5231ba | |
use_bpm 60 | |
laenge_in_takten = 229 # length of the track in beats - 300 means relax 5 minutes :-) | |
# possible notes out of a sounds-well-scale | |
notes = (scale :c3, :minor_pentatonic, num_octaves: 3).shuffle | |
# 12-step-sine-table for panning (0 = middle, 1 = right, -1 = left) | |
sin_tab = (ring 0, 0.5, 0.86, 1, 0.86, 0.5, 0, -0.5, -0.86, -1, -0.86, -0.5) | |
pan_pos = 0 | |
in_thread do | |
with_fx :reverb, room: 0.6 do | |
tweety = synth :dark_ambience, note: :c3, attack: 8, sustain: (laenge_in_takten-16), release: 8, note_slide: 0.05 | |
# while synth "tweety" is running - change pitch and panning 4 times per second | |
(laenge_in_takten*4).times do | |
if one_in(8) # if the dice has an 8 | |
pan_pos = sin_tab.tick # pan gets next value from sin_tab (-1...+1) | |
end | |
control tweety, note: notes.choose, pan: pan_pos # always choose random note from "notes" | |
sleep 0.25 | |
end | |
end | |
end | |
# the beat with little variations | |
live_loop :dull_beat do | |
synth :dull_bell, note: :c3, release: 0.2 | |
sleep 0.125 | |
if one_in(6) | |
synth :dull_bell, note: :g4, release: 0.2 | |
end | |
sleep 0.375 | |
if one_in(12) | |
synth :dull_bell, note: :c4, release: 0.2 | |
end | |
sleep 1.500 | |
tick(:beat_tick, step: 2) | |
if(look(:beat_tick) > laenge_in_takten) | |
stop | |
end | |
end | |
# rain noise / waterfall in background | |
tick_reset(:rain_tick) | |
live_loop :let_it_rain do | |
use_synth :noise | |
tick(:rain_tick) | |
if(look(:rain_tick) == 0) | |
puts "ein" | |
play :c3, attack: 1, sustain: 0, release: 0, amp: 0.04 # fade in | |
else | |
if(look(:rain_tick) == laenge_in_takten) | |
puts "aus" | |
play :c3, attack: 0, sustain: 0, release: 1, amp: 0.04 # fade out | |
else | |
puts "halten" | |
play :c3, attack: 0, sustain: 1, release: 0, amp: 0.04 # hold same amp | |
end | |
end | |
sleep 1 | |
if(look(:rain_tick) == laenge_in_takten) | |
stop | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment