Skip to content

Instantly share code, notes, and snippets.

@kniknoo
Created March 31, 2019 14:47
Show Gist options
  • Save kniknoo/90e19b571ad61a87cdcf7edcab4d4d83 to your computer and use it in GitHub Desktop.
Save kniknoo/90e19b571ad61a87cdcf7edcab4d4d83 to your computer and use it in GitHub Desktop.
#buffer 6-3 (robo_blues)
clear
reset
skulpt = "skulpt_synth_midi_1"
drumbrute = "arturia_drumbrute_impact_midi_1"
mono_int = "monologue_midi_2"
r3_int = "r3_midi_2"
#N5EX 5/off
midi_pc 4, port: mono_int, channel: 14 #Monologue 5
#MS50 01
midi_pc 109, port: skulpt, channel: 15 #Skulpt 7-14
midi_pc 109, port: r3_int, channel: 5#R3 n-6 poly6
#FM tinlead
#kick bass
use_debug false
use_midi_logging false
use_bpm 72
#use_random_seed 4865
with_midi_defaults port: skulpt, channel: 13 do
midi_cc 40, 16
midi_cc 41, 96
midi_cc 42, 3
midi_cc 43, 125
midi_cc 44, 74
midi_cc 45, 64
midi_cc 46, 32
midi_cc 47, 60
midi_cc 48, 20
end
live_loop :drums do
if tick(:loops) > 63
midi 12, sustain: 2 , port: skulpt, channel: 13
sleep 2
stop
end
2.times do
deg = (range, 1, 5).choose
nlen = [ 0.5, 0.75, 1, 1.5].ring.shuffle
cue :kick, deg: deg
midi (degree deg, 12, :minor_pentatonic), sustain: nlen.tick , port: skulpt, channel: 13
sleep nlen.look - 0.25
midi 55, port: drumbrute, channel: 10 if one_in(5)
sleep 0.25
cue :snare, deg: deg
midi 38, port: drumbrute, channel: 10
sleep nlen.tick - 0.25
midi 55, port: drumbrute, channel: 10 if one_in(2)
sleep 0.25
end
end
with_midi_defaults port: drumbrute, channel: 10 do
live_loop :hats do
sync :drums if one_in(7)
nlen = [0.0625, 0.125, 0.125, 0.25, 0.25, 0.5].choose
[4, 8].choose.times do
midi 54
sleep nlen
end
sleep 0.5 if one_in(7)
end
end
with_midi_defaults port: skulpt, channel: 15 do
live_loop :skulpt, delay: 68 do
deg = sync :kick
stop if tick(:loops) > 47
(range, 3, 8).choose.times do
midi (chord_degree, deg[:deg], 60, :minor_pentatonic, 3).choose + [0, 12].choose, sustain: 0.2
sleep [0.25, 0.5].choose
end
end
end
with_midi_defaults port: skulpt, channel: 9 do
live_loop :fm, delay: 128 do
deg = sync :snare
stop if tick(:loops) > 21
puts look(:loops)
6.times do
nlen = [0.25, 0.5, 1].choose
midi (chord_degree, deg[:deg], 36, :blues_minor).choose + [0, 12].choose, sustain: nlen
sleep nlen
end
end
end
with_midi_defaults port: mono_int, channel: 14 do
live_loop :monologue, delay: 34 do
if tick(:loops) > 47
sleep 1
midi_cc 24, 122
midi_cc 25, 85
16.times do
midi 53, sustain: 0.1
sleep 0.125
end
midi 48, sustain: 5.98
sleep 6
stop
end
sync :drums if one_in(3)
(range, 2, 5).choose.times do
midi_cc 24, rrand_i(109, 121)
midi_cc 25, rrand_i(75, 88)
nlen = [ 0.125, 0.25, 0.5, 0.75, 1].choose
notes = (scale, 36, :blues_minor, num_octaves: 2).choose
decay = 55
decay = 35 if nlen == 0.125
decay = 25 if nlen == 0.0625
midi_cc 17, decay
([0.5, 1.0, 1.5].choose/nlen).times do
midi notes, sustain: nlen * 0.75
sleep nlen
end
end
sleep 1
end
end
with_midi_defaults port: r3_int, channel: 5 do
live_loop :r3 do
stop if tick(:loops) > 95
deg = sync :snare
cho = (chord_invert, (chord_degree, deg[:deg], [60, 72].ring.tick, :minor_pentatonic, 4), [-2, -1, 0, 1].choose)
cho.each do |n|
midi n, sustain: 0.5
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment