Moodswings


Here’s a composition I made recently. I was hoping to make a following melody for it as wll but that will have to be a project for later, since I’ll be going on a trip tomorrow and won’t be around for a whole week. I’m still quite satisfied with what I made, this is oneof the longer things I’ve made and I hope you enjoy listening to it as much as I enjoy creatingit. As usual, here’s the sonic pi source, it by default uses my midi synth and rockathon sound fot but you can use one of sonic pi’s synths by uncommenting a certain block.

use_synth :piano
use_midi_defaults port: "virtualmidisynth__1_0", channel: 0
use_bpm 45

define :p do |n, l, *args|
if n.is_a? Array or n.is_a? SonicPi::Core::RingVector
n.each do |note|
midi note, *args, sustain: l
end
else
midi n, *args, sustain: l
end
sleep l
end

define :ppt do |ns, ts, *args|
if ts.is_a? Array
ts = ts.ring
else
ts = ring ts
end

ns.each_with_index do |n, i|
p n, ts[i], *args
end
end

# Uncomment these if you want to use one of sonic pi’s synths
##| define :p do |n, l, *args|
##| play n, *args, sustain: l
##| sleep l
##| end

##| define :ppt do |*args|
##| play_pattern_timed *args
##| end

define :m3 do |n|
[n, n+3]
end

define :M3 do |n|
[n, n+4]
end

s = []
define :sc do |*is|
is.map { |i| s[i] }
end

define :melody11 do
[0, -1, -2].each do |offset|
2.times do
ppt [s[0], s[2], s[4], s[6]+offset, s[7], s[6]+offset, s[4], s[2]], 0.25
end
end
end

define :melody12_decide do |t, n|
case t
when 0
n
when 1
if n % 12 == 4 || n % 12 == 9
M3 n-4
else
m3 n-3
end
end
end

define :melody12_common do |t|
ppt sc(0, 1), 0.3
p melody12_decide(t, s[2]), 0.9
ppt sc(3, 4), 0.3
p melody12_decide(t, s[5]), 0.9
end

define :melody12 do |t|
melody12_common t
ppt sc(4, 5, 3, 4).map { |n| melody12_decide t, n }, [0.25, 0.3, 0.4, 1.05]
melody12_common t
ppt sc(6, 3, 5, 4).map { |n| melody12_decide t, n }, [0.3, 0.3, 0.3, 1.1]
melody12_common t
ppt sc(4, 5, 3, 7).map { |n| melody12_decide t, n }, [0.25, 0.3, 0.4, 1.05]
melody12_common t
ppt sc(4, 5, 3).map { |n| melody12_decide t, n }, [0.3, 0.3, 0.7]
p case t
when 0
s[2]
when 1
chord s[0], :minor, invert: -1
end, 0.7
end

define :melody1 do |t|
s = scale :a, :minor
melody11
melody12 t
end

define :melody2_3chorus do |basechord|
2.times do
p basechord, 0.5
p basechord, 0.25
end
p basechord.map { |n| n+2 }, 0.5
end

define :melody2_chordchorus do |basechord|
basethird = basechord[0..2]
puts basethird
[0.6, 0.3, 1.1].each do |l|
p basethird, l
end

p basechord, 0.6
p basethird, 0.3
p basechord, 1.1
end

define :melody2 do |t|
s = chord :d5, :m9

case t
when 0
ppt sc(0, 1, 2, 1, 2, 3, 2, 3, 4, 3, 4, 3, 2, 3, 2, 1, 2, 1, 0, 1, 0, 1, 2, 1), 0.25
p M3(:af5), 1
when 1
ppt sc(0, 1, 2, 1, 2, 3, 2, 3, 4), [0.25, 0.25, 0.5]
ppt sc(4, 3, 2, 3, 2, 1, 2, 1, 0), [0.25, 0.25, 0.5]
p s[1], 0.25
p M3(:af5), 0.75
end

melody2_3chorus M3 :af5
melody2_3chorus M3 :ef5
melody2_chordchorus chord(:d5, :minor)

melody2_3chorus m3 :gf5
melody2_3chorus m3 :ef5
melody2_chordchorus chord(:d5, :major)
end

define :melody31 do
ppt sc(0, 4, 0, 4), 1
ppt sc(7, 6, 5), 0.4
p s[4], 1.8
ppt sc(0, 4, 0, 4), 1
ppt sc(1, 2, 3), 0.4
p s[4], 1.8
p s[4], 1
end

define :melody32 do
ppt sc(7, 6, 5, 6, 5, 4), [0.25, 0.25, 0.5]
ppt sc(3, 4, 5, 4, 3, 4, 5, 6), 0.25
ppt sc(7, 6, 5), [0.25, 0.25, 0.5]
ppt sc(6, 5, 4, 5, 3, 3, 4, 4), 0.25
ppt sc(5, 6, 7), [0.25, 0.25, 0.5]
end

define :melody33 do |t|
ppt sc(5, 6, 7, 5, 4, 5, 6, 4), 0.25
case t
when 0, 2
ppt sc(3, 4, 5, 4, 3, 4, 6, 4), 0.25
when 1
ppt sc(3, 4, 5, 4, 5, 6), [0.25, 0.25, 0.5]
when 3
ppt sc(3, 4), 0.25
p m3(s[3]), 0.5
ppt sc(4, 5), 0.25
p m3(s[4]), 0.5
end
ppt sc(5, 6, 7, 5, 4, 5, 6, 4, 5, 4, 3, 2), 0.25
ppt sc(4, 3), 0.5
ppt sc(2, 2, 3, 1), 0.25
case t
when 0
ppt sc(2, 3, 4), [0.25, 0.25, 0.5]
when 1
p s[0], 1
when 2
ppt sc(2, 4, 6), [0.25, 0.25, 0.5]
when 3
ppt [:d5, :b4, :gs4, :a4], [0.3, 0.4, 0.7, 1.6]
end
end

define :melody3 do |t|
s = scale :d5, :minor

if t == 0
melody31
end

sleep 1
melody32
melody33 t*2 + 0
melody33 t*2 + 1
end

define :melody do
2.times do |i|
melody1 i
sleep 1
melody2 i
melody3 i
if i == 0
ppt [:e5, :c5, :d5, :b4], 0.3
p :a4, 1.8
end

sleep 1
end
end

melody


6 responses to “Moodswings”

  1. As usual, elten clips whatever I make at the beginning. I will hopefully manage to post all of my things on my website once I come home, or maybe even before.

Leave a Reply

Your email address will not be published. Required fields are marked *

EltenLink