Midi to Ableton Solitude by Ryuichi Sakamoto (only first part)
Code is a bit messy.
I split up bass and melody + octave into two channels to be able to adjust different settings of the grand piano in Ableton.
I learned:
- to use “midi_note_off” to cancel out playing notes.
- to use “midi_all_notes_off” to cancel out all playing notes.
This is done to avoid sustaining midi notes playing in Ableton
Forgot how to record Ableton ASIO with OBS, so handheld it is.
# 240106 2228 Midi to Ableton of Solitude by Ryuichi Sakamoto
# Saved 240106 2228
# Original www.youtube.com/watch?v=_AVpYO-lx9Y
# My performance in Sonic pi https://youtu.be/MVSHlc2dHBg
# https://in-thread.sonic-pi.net/t/midi-to-abelton-of-solitude-by-ryuichi-sakamoto/8513
# Using loopmidi to send midinotes to Ableton
use_bpm 66 # Original 60
live_loop :a1 do
tick
no = :f2
/ bass 1-8/
b1 = [0,3,7,3,0,3,7,3]
b2 = [-5,2,3,2,-5,2,3,2]
b3 = [-4,3,7,3,-4,3,7,3]
b4 = [-2,5,8,5,-1,5,8,5]
b8 = [-2,2,7,2,-2,2,7,2]
/ mel 1-8/
m1 = [3,0,0,0,2,0,0,0]
m2 = [-2,0,0,0,2,0,0,0]
m3 = [3,0,0,0,5,0,0,0]
m4 = [3,0,0,0,2,0,0,0]
m8 = [7,0,0,0,5,0,0,0]
/ Songform /
k = 8
b = knit(b1,k,b2,k,b3,k,b4,k, b1,k,b2,k,b3,k,b8,k, ).look
m = knit(m1,k,m2,k,m3,k,m4,k, m1,k,m2,k,m3,k,m8,k, ).look
/ Midi to Ableton by loopmidi /
/ ----------------------------------------------- /
/ channel 1: bass /
/ channel 2: melody + octav + more reverb /
s = 8*8
songform = knit(1,s,2,s,3,s,2,s,1,s,0,8).look
#songform = 3
case songform
when 0
sleep 0.5
midi_all_notes_off
when 1 #only bass
use_midi_defaults channel: 1, port: "loopmidi_port_2"
midi no+b.look
sleep 0.5
midi_note_off no+b.look
#end
when 2 # bass + mel
use_midi_defaults channel: 1, port: "loopmidi_port_2"
midi no+b.look
#use_midi_defaults channel: 2, port: "loopmidi_port_2"
#midi no+m.look+12 if spread(1,4).look
sleep 0.5
midi_note_off no+b.look
#midi_note_off no+b.look+12 if spread(1,4).look
when 3 # Bass + mel + mel octav
use_midi_defaults channel: 1, port: "loopmidi_port_2"
midi no+b.look
#use_midi_defaults channel: 2, port: "loopmidi_port_2"
#midi no+m.look+12 if spread(1,4).look
#midi no+m.look+24 if spread(1,4).look
sleep 0.5
midi_note_off no+b.look
#midi_note_off no+b.look+12 if spread(1,4).look
#midi_note_off no+m.look+24 if spread(1,4).look
end
end
live_loop :a2 do
#stop
tick
no = :f2
/ bass 1-8/
b1 = [0,3,7,3,0,3,7,3]
b2 = [-5,2,3,2,-5,2,3,2]
b3 = [-4,3,7,3,-4,3,7,3]
b4 = [-2,5,8,5,-1,5,8,5]
b8 = [-2,2,7,2,-2,2,7,2]
/ mel 1-8/
m1 = [3,0,0,0,2,0,0,0]
m2 = [-2,0,0,0,2,0,0,0]
m3 = [3,0,0,0,5,0,0,0]
m4 = [3,0,0,0,2,0,0,0]
m8 = [7,0,0,0,5,0,0,0]
m1 = [3,2]
m2 = [-2,2]
m3 = [3,5]
m4 = [3,2]
m8 = [7,5]
/ Songform /
k = 8/4
b = knit(b1,k,b2,k,b3,k,b4,k, b1,k,b2,k,b3,k,b8,k, ).look
m = knit(m1,k,m2,k,m3,k,m4,k, m1,k,m2,k,m3,k,m8,k, ).look
/ Midi to Ableton by loopmidi /
/ ----------------------------------------------- /
/ channel 1: bass /
/ channel 2: melody + octav + more reverb /
s = 8*8/4/2
songform = knit(1,s,2,s,3,s,2,s,1,s,0,8).look
#songform = 3
case songform
when 0
sleep 0.5*4
midi_all_notes_off
when 1 #only bass
#use_midi_defaults channel: 1, port: "loopmidi_port_2"
#midi no+b.look
sleep 0.5*4
# midi_note_off no+b.look
#end
when 2 # bass + mel
#use_midi_defaults channel: 1, port: "loopmidi_port_2"
#midi no+b.look
use_midi_defaults channel: 2, port: "loopmidi_port_2"
midi no+m.look+12 #if spread(1,4).look
sleep 0.5*4
#midi_note_off no+b.look
midi_note_off no+b.look+12 #if spread(1,4).look
when 3 # Bass + mel + mel octav
#use_midi_defaults channel: 1, port: "loopmidi_port_2"
#midi no+b.look
use_midi_defaults channel: 2, port: "loopmidi_port_2"
midi no+m.look+12 #if spread(1,4).look
midi no+m.look+24 #if spread(1,4).look
sleep 0.5*4
#midi_note_off no+b.look
midi_note_off no+b.look+12 #if spread(1,4).look
midi_note_off no+m.look+24 #if spread(1,4).look
end
end