Sonic Dub "Yaxche Interstellar"

Hi guys,

I´m working on my second sonic pi tune called “Yaxche Interstellar” inspired my the legend around the Mayan World Tree. I´m interested in hearing your spontaneous impressions.

I mostly runs through my own samples, so it´s not that interesting coding-wise I think - but I´m working on that aspect. For now I just wanna create a soundscape I like to dive into. I would very much like to beform live using Sonic Pi and then play some live instruments on top such as spanish guitar, trumpet and vocals, to give it a more natural and organic feel, but we see about that:-)

I can post the code if you´re interested.

Greetings
Peta

6 Likes

I really dig this and would love to see the code since I also use Sonic Pi in a similar way using my own sample libraries.

I like the middle section when everything slows down and then picks back up for the second time. It seems like you put a lot of effort into selecting your effects so that everything blends together nicely.

I’d say the main drum beat feels a bit repetitive. To fix this I think you should export the drumbeat on its own and then pull it back in as a loop which you can chop up and manipulate using the “onset” feature…

1 Like

Thanks a lot bagofdragonite for your positive comment. I have the code and even the samples for you here. As you can see I already use the onset :pick feature on some of the drum - and it´s a really nice thing to make the drums more interesting. I´m not very good with beats - and I can see what you mean. Maybe you like to do a remix with alternate drums?:slight_smile:

https://drive.google.com/open?id=16nQ9eJaSPokzwwWew_amtpF4wuWg-26L

#Yaxche Interstellar // 2019 by PETAYAN

yaxIn = “C:/Users/…” #your own path to sample folder here
use_bpm 103
set_volume! 5

########Volumen-control################
vPeach = 1
vDrumsBits = 1
vDrums = 2
vBass = 2
vBassSlice = 0
vBongos = 1
vGuiero = 0.5
vShaker = 0.5
vDubDelay = 0.25
vDubDelay2 = 1
########################

live_loop :Peach do
with_fx :reverb, mix: 0.25 do
with_fx :flanger, mix: 0.25 do
sample yaxIn, “chiptune101”, beat_stretch: 32, amp: vPeach, pan: -0.5
sleep 32
end
end
end

live_loop :BeatBits, sync: :Peach do
sample yaxIn, “drums”, onset: pick, beat_stretch: rrand(1, 32), cutoff: rrand(70, 120), amp: vDrumsBits, pan: -0.2
sleep 1
end

live_loop :Beat, sync: :Peach do
sample yaxIn, “drums”, beat_stretch: 32, amp: vDrums
sleep 32
end

live_loop :Bass, sync: :Peach do
sample yaxIn, “Bass”, beat_stretch: 32, amp: vBass, cutoff: 90
sleep 32
end

live_loop :BassSlice, sync: :Peach do
sample yaxIn, “Bass”, onset: pick, beat_stretch: 32, amp: vBassSlice, cutoff: 100
sleep 1
end

live_loop :Bongos, sync: :Peach do
sample yaxIn, “Bongos”, beat_stretch: 32, amp: vBongos, pan: 0.5
sleep 32
end

live_loop :Guiero, sync: :Peach do
sample yaxIn, “Guiero”, beat_stretch: 32, amp: vGuiero, pan: 0.35
sleep 32
end

live_loop :Shaker, sync: :Peach do
sample yaxIn, “Shaker”, beat_stretch: 32, amp: vShaker, pan: -0.35
sleep 32
end

live_loop :DubDelay, sync: :Peach do
with_fx :echo, mix: 0.75, phase: 0.3, decay: 16 do
with_fx :bitcrusher, mix: 0.45, bits: 10, cutoff: rrand(70, 110) do
sample yaxIn, “DubDelay”, onset: pick, beat_stretch: 32, amp: vDubDelay, pan: -0.2
sleep 4
end
end
end

live_loop :DubDelay2, sync: :Peach do
#with_fx :echo, mix: 1, phase: 0.75, decay: 16 do
sample yaxIn, “DubDelay”, beat_stretch: 32, amp: vDubDelay2, pan: 0.2
sleep 32
#end
end

There are so many nice little touches in this song/code, that I’m almost tempted
to pull out my old Dub Generator and add them to it … @Kniknoo (?) might remember
it, as it was really just a ‘front end’ on what was mostly his code :slight_smile:

Very very nice work.

Eli…

1 Like

Hi Eli, thanks for your comment too!

just checked out your Dub Generator and I just wanna say - it´s awesome!! I remember looking at it back in May 2018 thinking, oh man, I will never be able to code something as awesome like this! You took my currage away for making codemusic quite some time - thanks again;-)

If you wanna use some of the samples then you might wait a little ´cos I´m still working on recording new loops for the song and you don´t wanna miss out on what:D

Not very good with beats? Haha you’re being hard on yourself. This is great. I’ll try downloading and making my own remix. A really cool project.

Okay here’s something quick I threw together to show you some different techniques you could use to vary up the song structure. Sorry if the code became a bit convoluted. There’s probably some mistakes and redundant pieces of code in here but it should give you an idea of some things you might try out.

Here’s the audio so you can get a quick idea of what I did. It glitches out a bit on account of my computer being too slow to handle Sonic Pi. The slow down effect at the end of the song was just an after effect I did, not part of the code.

I added a “conductor” loop to tell the song how to progress. Used “spread” in some loops to offset the beat a bit. Added a “ring” to one of the sleep commands to help bring in some variation. Put in a few LFO controlled effects. I also tried a few other things I don’t normally do. Wasn’t quite sure if they worked as intended but didn’t want to get in to troubleshooting them until I do a legitimate remix of the song.

#Yaxche Interstellar // 2019 by PETAYAN

yaxIn =  “C:/Users/…” #your own path to sample folder hereInterstellar/"
#find the name of the folder where you keep the samples
use_bpm 103
set_volume! 1

######## Volumen-control ##############
vPeach = 1
vDrumsBits = 2
vDrums = 2
vBass = 2
vBassSlice = 1
vBongos = 1
vGuiero = 0.5
vShaker = 1
vDubDelay = 0.25
vDubDelay2 = 0.8
#######################################
######## Speed-control ################
speed0 = 1
speed1 = 1
speed2 = 1
#######################################
######## Modifiers ####################
mod0 = 0
#######################################
######## L F O-control ################
lfo0 = (line 131, 100, inclusive: true, steps: 32*speed1).mirror
lfo1 = (line 0.6+mod0, 0.88, inclusive: true, steps: 8*speed2).mirror
lfo2 = (line 85, 68, inclusive: true, steps: 32*speed1).mirror
lfo3 = (line 80, 122, inclusive: true, steps: 8).mirror

#######################################

live_loop :Conductor do
  sleep 7
  cue :A
  sleep 9
  cue :B
  speed0 = 4
  sleep 2
  speed0 = 1
  cue :C
  sleep 6+24
  speed1 = 0.25
  speed2 = 0.5
  mod0 = 0.1
  cue :M
  vBongos = 0
  sleep 2
  vBongos = 1
  sleep 1
  vDrumsBits = 0
  vBongos = 0
  sleep 1
  vDrumsBits = 2
  sleep 1
  vBongos = 1
  sleep 3
  speed1 = 4
  speed2 = 1
  cue :E
  sleep 8
  mod0 = 0
  speed1 = 2
  vBass = 0
  sleep 4
  speed1 = 0.125
  vDrumsBits = 0
  vBass = 2
  sleep 1
  vDrumsBits = 2
  sleep 3
  vPeach = 0
  sleep 2
  vPeach = 1
  sleep 1
  sleep 32
  vBass = 0
  vPeach = 1
  vDrumsBits = 0
  vGuiero = 0
  sleep 4
  vShaker = 0
  sleep 1
  vBongos = 0
  sleep 3
  vDrums = 0
  vBassSlice = 0
  sleep 2
  vDubDelay = 0.25
  vDubDelay2 = 0.8
  sleep 4
  vDubDelay = 0
  vDubDelay2 = 0
  vPeach = 0
  vDrumsBits = 0
  vDrums = 0
  vBass = 0
  vBassSlice = 0
  vBongos = 0
  vGuiero = 0
  vShaker = 0
  vDubDelay = 0
  vDubDelay2 = 0
  
  sleep 1000
end

live_loop :Peach do
  puts tick
  with_fx :reverb, mix: 0.25 do
    with_fx :flanger, mix: 0.25 do
      with_fx :rhpf, centre: lfo0.look, res: lfo1.look do
        peachS = sample yaxIn, "chiptune101", beat_stretch: 32, amp: vPeach, pan: -0.5
        sleep 32
        kill peachS
      end
    end
  end
end

live_loop :BeatBits, sync: ([:A, :Peach]) do
  puts tick
  bbS = sample yaxIn, "drums", onset: choose([3,7,9]), beat_stretch: rrand(16, 32), cutoff: rrand(70, 120), release: 0.25, amp: choose([0, vDrumsBits]), pan: -0.2  if (spread 7, 8).look
  sleep 0.25*speed0
  kill bbS
end

live_loop :Beat, sync: ([:Peach]) do
  with_fx :bpf, centre: lfo0.look, res: lfo1.look do
    beatS = sample yaxIn, "drums", beat_stretch: 32, amp: vDrums
    sleep 32
    kill beatS
  end
end

live_loop :Bass, sync: :Peach do
  bassS = sample yaxIn, "Bass", beat_stretch: 32, amp: vBass, cutoff: 90
  sleep 32
  kill bassS
end

live_loop :BassSlice, sync: ([:B, :Peach]) do
  puts tick
  with_fx :echo, mix: 0.25, phase: 0.77, decay: 6 do
    bassSliceS = sample yaxIn, "Bass", onset: pick, beat_stretch: 4, amp: vBassSlice, cutoff: 70 if (spread 7, 8).look
    sleep (ring 0.5, 0.5, 0.25, 0.5).look
    kill bassSliceS
  end
end

live_loop :Bongos, sync: ([:Peach]) do
  with_fx :ixi_techno do
    bongoS = sample yaxIn, "Bongos", beat_stretch: 32, amp: vBongos, pan: 0.5
    sleep 32
    kill bongoS
  end
end

live_loop :Guiero, sync: ([:C, :Peach]) do
  with_fx :wobble, mix: 0.3 do
    guiS = sample yaxIn, "Guiero", onset: pick, amp: choose([0, vGuiero]), pan: 0.35 if (spread 5, 8).look
    sleep 0.25
    kill guiS
  end
end

live_loop :Shaker, sync: :E do
  puts tick
  with_fx :rhpf, centre: lfo3.look, res: lfo1.look do
    sample yaxIn, "Shaker", beat_stretch: 32, amp: vShaker, pan: -0.35
    sleep 32
  end
end

live_loop :DubDelay, sync: :Peach do
  with_fx :echo, mix: 0.75, phase: 0.3, decay: 16 do
    with_fx :bitcrusher, mix: 0.45, bits: 10, cutoff: rrand(70, 110) do
      sample yaxIn, "DubDelay", onset: pick, beat_stretch: 32, amp: vDubDelay, pan: -0.2
      sleep 4
    end
  end
end

live_loop :DubDelay2, sync: :M do
  with_fx :echo, mix: 1, phase: 0.75*speed2, decay: 16 do
    sample yaxIn, "DubDelay",  beat_stretch: 32, amp: vDubDelay2, pan: 0.2
    sleep 64 #Original was 32
  end
end

This is really great! Thanks for post this (and the code)!

Bryan