# Title: 希望を失ったとき (Kibō o ushinatta toki) - When I Lost Hopes
# Artist: Mattia Giovanetti
# Date: 16/06/2019
#
# Sonic Pi v3.1
use_bpm 40
nota = [0,2,4,5,7,9,11,12]
define :voce_uno do
use_synth :sine
x = rand_i(8)
y = nota[x] + 60
play y, release: 0.75, pan: 0.333, amp: [0,0.25,0,0.5,0.75,0,1].choose
sleep 0.25
end
define :voce_due do
use_synth :sine
x = rand_i(8)
y = nota[x] + 48
play y, release: 0.75, pan: 0, amp: [0,0.25,0,0.5,0.75,0,1].choose
sleep 0.5
end
define :voce_tre do
use_synth :sine
x = rand_i(8)
y = nota[x] + 36
play y, release: 0.75, pan: -0.333, amp: [0,0.25,0,0.5,0.75,0,1].choose
sleep 1
end
define :campane_casuali do
sample :perc_bell, rpitch: [0.25,0.5,0.75,1,1.25,1.5,1.75,2,2.25,2.5,2.75,3].choose, amp: [0,0.25,0.5].choose
sleep [0.125,0.25,0.333,0.5,0.666,0.75,1].choose
end
define :tempo_che_passa do
sample :drum_snare_soft, rpitch: 27, amp: 0.75
sleep 0.333
sample :drum_snare_soft, rpitch: 28, amp: 0.7
sleep 0.333
end
#forma
with_fx :level, amp: 0.25 do
with_fx :reverb,mix: 0.5, damp: 0.5, room: 0.25 do
with_fx :level, amp: 0, amp_slide: 75 do |lv|
in_thread do
186.times do
tempo_che_passa
control lv, amp: 1
end
end
end
end
with_fx :reverb,mix: 0.5, damp: 0.5, room: 1 do
in_thread do
4.times do
x = rand_i(8)
3.times do
campane_casuali
end
sleep 8
x.times do
campane_casuali
end
sleep 8
x.times do
campane_casuali
end
sleep 8
3.times do
campane_casuali
end
end
end
with_fx :echo, mix: 0.25, decay: 4 do
in_thread do
sleep 1
x = 0.75
6.times do
sample :ambi_lunar_land, amp: x.abs
sleep 16
x = x - 0.25
end
end
in_thread do
sleep 2
440.times do
voce_uno
end
end
in_thread do
sleep 2
220.times do
voce_due
end
end
in_thread do
sleep 2
110.times do
voce_tre
end
end
end
end
end
Now that is just plain GORGEOUS.
Thank you.
Eli…
Glad you enjoy it, it means a lot to me.
I really like your choice and usage of sounds here. It’s all very subtle but the sounds all work together so well. I really enjoyed this piece.
ちなみに、日本語が話せますか?
Thank you PiEaterAndPlayer, your words are really precious to me.
私はそれが欲しいのですが、私は単にグーグル翻訳者を使います
It’s nice and relaxing, thanks for sharing
You’re welcome @binarysweets, glad you enjoy it!
I hope you don’t mind, but I was playing with your original version last night and came up with another one:
# Title: 希望を失ったとき (Kibō o ushinatta toki) - When I Lost Hopes (Binarysweets Version)
# Artist: Mattia Giovanetti
# Date: 16/06/2019
#
# Sonic Pi v3.1
use_bpm 40
use_random_seed 2019
barLength = 16
define :bar do
sleep barLength
end
define :voce_uno do
use_synth :sine
(barLength * 4).times do
play [:C4, :D4, :E4, :F4, :G4, :A4, :B4, :C5].choose, release: 0.25, pan: 0.333, amp: [0.25,0,0.5,0.75,0,1].choose
sleep 0.25
end
end
define :voce_due do
use_synth :sine
(barLength / 2).times do
play [:C3, :D3, :E3, :F3, :G3, :A3, :B3, :C4].choose, release: 0.5, pan: 0, amp: [0.25,0,0.5,0.75,0,1].choose
sleep 0.5
end
end
define :voce_tre do
use_synth :tri
(barLength).times do
play [:C2, :D2, :E2, :F2, :G2, :A2, :B2, :C3].choose, release: 1, pan: -0.333, amp: [0.25,0,0.5,0.75,0,1].choose
sleep 1
end
end
define :voce_blade do
use_synth :blade
(barLength / 2).times do
play [:C4, :D4, :E4, :F4, :G4, :A5, :B5, :C5].choose, sustain: 1, release: 2, pan: 0.333, amp: [0.5,0.75,0,1].choose
sleep 2
end
end
define :drums do
s = :loop_breakbeat
pattern = (ring 1,0,0,0, 2,0,0,1, 1,0,1,0, 3,0,0,0)
(barLength * 4).times do ; tick
with_swing (line 0.01, 0.05, steps: 8).look, pulse: 4 do
sample s, slice: 0, num_slices: 32, amp: rrand(4, 4.2) if pattern.look == 1
sample s, slice: 8, num_slices: 32, amp: rrand(3, 3.2) if pattern.look == 2
sample s, slice: 8, num_slices: 32, amp: rrand(3, 3.2), rate: 0.95 if pattern.look == 3
end
sleep 0.25
end
end
#forma
with_fx :level, amp: 0.25 do
with_fx :reverb,mix: 0.5, damp: 0.5, room: 1 do
with_fx :echo, mix: 0.25, decay: 4 do
in_thread do ; voce_uno ; end
in_thread do ; voce_due ; end
bar
in_thread do ; voce_uno ; end
in_thread do ; voce_due ; end
in_thread do ; voce_tre ; end
bar
in_thread do ; voce_uno ; end
in_thread do ; voce_due ; end
in_thread do ; voce_tre ; end
in_thread do ; voce_blade ; end
in_thread do ; drums ; end
bar
in_thread do ; voce_uno ; end
in_thread do ; voce_due ; end
in_thread do ; voce_tre ; end
in_thread do ; voce_blade ; end
in_thread do ; drums ; end
bar
in_thread do ; voce_blade ; end
in_thread do ; drums ; end
bar
end
end
end
@binarysweets That’s great! I’m really happy and a bit proud. It’s also interesting the use of use_random_seed and barLenght, so thank for that, add more knowledge to all (me included!). I’m really corious to listen at your version, in this exct moment I can’t have a listen.
Oh! I spelt length wrong, I’m kicking myself…
It appears I did not - Ignore me.
@binarysweets LOL
# Title: Ethereal.
# Artist: Just Eli...
# Date: Jul-2019
#
# SonicPi v3.1 (Win 10)
# Settings
use_bpm 40
use_random_seed 79
barLength = 32
scaleName = :dorian
notes = [0,2,4,5,7,9,11,12]
# Loops
define :bar do
sleep barLength
end
define :beats do
(barLength).times do
sample :bd_fat, amp: rrand(0.9, 1)
sleep 0.5
sample :elec_hollow_kick if spread(16, 27).tick
sleep 0.25
sample :bd_ada, amp: rrand(0.9, 1) if one_in(4)
sleep 0.25
end
end
define :hats do
at [ 0, 0.5, 1, 1.5, 2, 2.5, 3, 3.5 ] do
with_fx :reverb, room: 0.95 do
sample :drum_cymbal_closed, amp: rrand( 0.3, 0.7 )
if one_in( 3 )
sleep 0.25
sample :drum_cymbal_closed, amp: rrand( 0.2, 0.4 )
end
end
end
end
with_fx :level, amp: 0.5 do
with_fx :reverb,mix: 0.5, damp: 0.5, room: 1 do
with_fx :echo, mix: 0.25, decay: 4 do
live_loop :one do
use_synth :sine
x = rand_i(8)
y = notes[x] + 60
s = play note: y, release: 0.75, pan: 0.333, amp: [0,0.25,0,0.5,0.75,0,1].choose
sleep 0.25
# control s, note: y+12
sleep 0.25
end
live_loop :two do
use_synth :sine
x = rand_i(8)
y = notes[x] + 48
s = play note: y, release: 0.75, pan: 0, amp: [0,0.25,0,0.5,0.75,0,1].choose
sleep 0.5
control s, note: y+[0,12,24].choose
sleep 0.5
end
live_loop :three do
use_synth :sine
x = rand_i(8)
y = notes[x] + 36
s = play note: y, release: 0.75, pan: -0.333, amp: [0,0.25,0,0.5,0.75,0,1].choose
sleep 1
use_synth :piano
control s, note: y+24
sleep 1
end
live_loop :four do
sync :one
sleep 2
use_synth :pluck
x = rand_i(8)
y = notes[x] + 48
s = play note: y, attack: 0, sustain: 1, release: 1, pan: -0.333, amp: 0.5+[0,0.25,0,0.5,0.75,0,1].choose
sleep 0.5
control s, note: y+[0,12,24].choose
sleep 0.5
control s, note: y+[0,12,-12].choose
sleep 0.75
control s, note: y+[0,12,24].choose
sleep 0.25
end
live_loop :five do
v= [:blade ,:dark_ambience, :hollow].choose
y = [:C4, :D4, :E4, :F4, :G4, :A5, :B5, :C5].choose
use_synth v
(barLength / 16).times do
s = play y, sustain: 1, release: 2, pan: 0.333, amp: [0.5,0.75,0.25,1].choose * 1
sleep 0.5
control s, note: y+[0,12,24].choose
sleep 0.5
control s, note: y+[0,12,-12].choose
sleep 0.75
control s, note: y+[0,12,24].choose
sleep 0.25
end
end
end
end
end
live_loop :notes_change do
sync :bar
cue :change
end
live_loop :switch_notes do
sync :change
switch = [0,1].ring.tick
if switch == 1 then
notes = [0,2,4,9,7,5,12,11]
else
notes = [12,11,5,7,9,4,2,0]
end
end
live_loop :do_beats do
beats
end
live_loop :do_hats do
hats
sleep 8
end
Eli…
It’s a really good variation, a new piece indeed, I love it, thanks for sharing @Eli, it’s quietness reminds me a calm and sunny afternoon passing by in a quite empty flat, looking the sky line and the clouds while getting more and more yellow and red, but not fall into the night, a perpetual afternoon, a dream of calm, like these perfects moment we all experience in a date period of each our life. Thanks again.
I know this thread is kinda complete but I was going through some archived code and
came across a composition called ‘Clouds’ that was posted some time back.
I’d previously isolated just the background, as it was so very special, and I’d like
to thank whoever the original poster was, and share this with like-minded people…
I haven’t as yet found the original post, will keep looking.
use_bpm 100
# CHORD CONTROL
# This part provides two rings called "chord_high" and "chord_low".
# They always contain the "permitted" notes in order that everything will be in tune.
# You can use them in other live loops to select notes.
chord_1 = chord :c5, :maj9, num_octaves: 2
chord_2 = chord :es4, :maj9, num_octaves: 2
chord_3 = chord :b5, :maj9, num_octaves: 2
chord_4 = chord :d4, :maj9, num_octaves: 2
chord_low_1 = chord :c3, :maj9
chord_low_2 = chord :es2, :maj9
chord_low_3 = chord :b2, :maj9
chord_low_4 = chord :d2, :maj9
chord_high = chord_1
chord_low = chord_low_1
live_loop :chord_selector, delay: -0.5 do
chord_high = (knit(chord_1, 2, chord_2, 2, chord_3, 4,chord_4, 4)).tick
chord_low = (knit(chord_low_1, 2, chord_low_2, 2, chord_low_3, 4, chord_low_4, 4)).look
sleep 8
end
# SPHERES
define :chord_player do |the_chord|
use_synth [ :blade, :prophet].choose
the_chord.each do |note|
play note, attack: rand(4), release: rand(6..8), cutoff: rand(50..85), vibrato_rate: rand(0.01..2), amp: 0.55
end
end
with_fx :reverb, room: 0.99, mix: 0.7 do
live_loop :chord_loop do
chord_player chord_high.pick(6)
chord_player chord_low.take(3)
sleep 8
end
end
Eli…
Wow! This it’s impressive, I really love it, thnks for sharing it. The timbres are dreamlike, and it’s inteesting the idea to use randomly also the instruments. It’s based on live-loop, a thing that I don’t love very much, because for define a piece, according to the classical form configuration of a composition, a form it’s needed. The live-oop it’s like “making jazz”, but also this definition it’s incorrect. A neverending/undefined/unformed opera it’s hard to get (carry within) in mind. It’s for this reason that the live-loop function it’s a logic that I see more in a performance rather then in a composition.
Any way, these are only problems of mine, the patch it’s really cool.
Nice one @Eli!
Hi Mattia,
Possibly the reason you dont like/use live_loop is because you feel it cannot be controlled ?
With a very simple framework and a couple of defines, you can start and stop the audio output of
any live loop, allowing you to use it anywhere within a composition.
I posted a simple framework and example a long time ago… I’ll try find the post for you.
Eli…
EDIT: I cant find the post I want but see my comments in these 2 posts, they pretty
much explain how to use a tracking variable to turn the sound output of a live_loop
on and off as you require