# Sonic Pi Monthly Challenge #3

**URL:** <https://in-thread.sonic-pi.net/t/sonic-pi-monthly-challenge-3/4715>\
**Category:** Creations & Ideas\
**Created:** [December 1, 2020, 12:56pm UTC](https://in-thread.sonic-pi.net/t/sonic-pi-monthly-challenge-3/4715 "2020-12-01T12:56:45Z")\
**Posts on this page:** 19\
**Page:** 1

<div class="post-metadata">

**Author:** ![binarysweets](https://dub1.discourse-cdn.com/flex017/user_avatar/in-thread.sonic-pi.net/binarysweets/32/2683_2.png) [@binarysweets](https://in-thread.sonic-pi.net/u/binarysweets)\
**Post date:** [December 1, 2020, 12:56pm UTC](https://in-thread.sonic-pi.net/t/sonic-pi-monthly-challenge-3/4715/1 "2020-12-01T12:56:45Z")

</div>

Dear Sonic Pi’ers,

It is time for challenge number 3 😃

This challenge is dedicated to vinyl record speeds.

Instructions:

1. Choose a vinyl record speed - 33, 45 or 78 rpm. Your song BPM must be a multiplication of your chosen rpm speed. So, for example, if you choose 45, your song BPM must be either 45, 90, 135 and so on.  
You may use the built-in synths and samples or use external samples; it is up to you.  
The length and genre is also up to you.

2. Post the code and audio links (Youtube/Soundcloud/Bandcamp, etc) in this topic.  
Tell us about your process and/or what inspired your music, if you want.

**The deadline for this challenge is 31st December.**

Code and audio links will get added to the [challenge repo](https://github.com/binarysweets/sonic-pi-monthly-challenge/)

https://w.soundcloud.com/player/?visual=false&url=https%3A%2F%2Fapi.soundcloud.com%2Fplaylists%2F1182643831&show_artwork=true

Happy coding 💻

---

<div class="post-metadata">

**Author:** ![hitsware](https://avatars.discourse-cdn.com/v4/letter/h/a9adbd/32.png) [@hitsware](https://in-thread.sonic-pi.net/u/hitsware)\
**Post date:** [December 6, 2020, 4:50pm UTC](https://in-thread.sonic-pi.net/t/sonic-pi-monthly-challenge-3/4715/2 "2020-12-06T16:50:54Z")

</div>

```ruby
# Demonstrates the interaction of

# 'use_bpm', 'sleep', and implicit

# release

for time in 1..10
  
  use_bpm(33*time)
  
  for octave in 0..3
    
    play hz_to_midi 100*(2**octave)
    
    sleep (33*time)/60.0

  end

end
```

---

<div class="post-metadata">

**Author:** ![binarysweets](https://dub1.discourse-cdn.com/flex017/user_avatar/in-thread.sonic-pi.net/binarysweets/32/2683_2.png) [@binarysweets](https://in-thread.sonic-pi.net/u/binarysweets)\
**Post date:** [December 8, 2020, 4:41pm UTC](https://in-thread.sonic-pi.net/t/sonic-pi-monthly-challenge-3/4715/3 "2020-12-08T16:41:44Z")

</div>

```ruby
# A Sonic Pi tribute to the turntable - by Binarysweets
# Settings can be adjusted while playing
# Change :deck1_on or :deck2_on to true to start playing the decks
# Use the :deck1_speed_adj / :deck1_speed_adj to fine tune the tempo

# Choose the record speed, 33, 45 or 78
rpm = 45

# Select a scale
set :scl, scale(:bb1, :diatonic, num_octaves: 3)

# It's DJ time!
######################################################################
# ______ #
# __________________/ /__________________ / /#
#| _ _______/ / | ________ / / #
#|(_) .d########b.//)| _____________________ |(_) .d########b.//)| #
#| .d############// || _____ || .d############// | #
#| .d######""####//b. ||() || [D JAY] || ()|| .d######""####//b. | #
#| 9######( )#_//##P ||()| __| | = | |__ |()|| 9######( )#_//##P | #
#| 'b######++#/_/##d' ||() || | = | || ()|| 'b######++#/_/##d' | #
; set :deck1_on, true ; set :deck2_on, true
#| _"9a#######aP" || _ _____..__ _ || _"9a#######aP" | #
#| |_| `""""'' || (_) | _____||__ | (_) || |_| `""""'' | #
#| ___..___________ || _____________________||___.. ___________ | #
;set :deck1_speed_adj,3 ; set :deck2_speed_adj,3
#| ____________________| |____________________ | #
# #
######################################################################

set :bpm, rpm * 3
use_bpm get :bpm

live_loop :deck1 do ; tick
  use_bpm get[:bpm] + get[:deck1_speed_adj]
  
  if get[:deck1_on] == true
    sample :loop_compus, slice: look,
      amp: rrand(3, 3.2),
      beat_stretch: [16, 32].choose if bools(1,0,1,1).look
  end
  
  sleep 0.25
end

live_loop :deck2 do ; tick
  use_bpm get[:bpm] + get[:deck2_speed_adj]
  
  if get[:deck2_on] == true
    scl = get :scl
    notes = (ring 0,1,1,2, 0,2,2,3).mirror
    
    with_fx :bitcrusher, sample_rate: 2000, bits: [6,4].choose do
      with_synth :square do
        play scl[notes.look], amp: rrand(1.0, 1.2),
          release: 0.5 if bools(0,1,1,0).look
      end
    end
  end
  
  sleep 1
end

# The ascii art isn't mine - https://ascii.co.uk/art/turntables
```

---

<div class="post-metadata">

**Author:** ![soxsa](https://dub1.discourse-cdn.com/flex017/user_avatar/in-thread.sonic-pi.net/soxsa/32/1669_2.png) [@soxsa](https://in-thread.sonic-pi.net/u/soxsa)\
**Post date:** [December 9, 2020, 1:22pm UTC](https://in-thread.sonic-pi.net/t/sonic-pi-monthly-challenge-3/4715/4 "2020-12-09T13:22:47Z")

</div>

That is very cool. Now I start to see what this challenge is about.

---

<div class="post-metadata">

**Author:** ![ethancrawford](https://avatars.discourse-cdn.com/v4/letter/e/a88e4f/32.png) [@ethancrawford](https://in-thread.sonic-pi.net/u/ethancrawford)\
**Post date:** [December 9, 2020, 1:32pm UTC](https://in-thread.sonic-pi.net/t/sonic-pi-monthly-challenge-3/4715/5 "2020-12-09T13:32:59Z")

</div>

Yes, very nice idea! my poor CPU can’t handle it for very long though… 😂 😅

---

<div class="post-metadata">

**Author:** ![binarysweets](https://dub1.discourse-cdn.com/flex017/user_avatar/in-thread.sonic-pi.net/binarysweets/32/2683_2.png) [@binarysweets](https://in-thread.sonic-pi.net/u/binarysweets)\
**Post date:** [December 9, 2020, 5:07pm UTC](https://in-thread.sonic-pi.net/t/sonic-pi-monthly-challenge-3/4715/6 "2020-12-09T17:07:39Z")

</div>

That’s weird. Apart from the deck switches, it’s just two standard live loops.  
Could it be the bitcrusher fx inside the deck2 loop maybe?

---

<div class="post-metadata">

**Author:** ![soxsa](https://dub1.discourse-cdn.com/flex017/user_avatar/in-thread.sonic-pi.net/soxsa/32/1669_2.png) [@soxsa](https://in-thread.sonic-pi.net/u/soxsa)\
**Post date:** [December 9, 2020, 6:19pm UTC](https://in-thread.sonic-pi.net/t/sonic-pi-monthly-challenge-3/4715/7 "2020-12-09T18:19:07Z")

</div>

Here is my contribution. OK, not vinyl but shellac 😄 The volume is a bit low, they didn’t have electric amps back then, you’ll have to turn up after listening to @binarysweets DJ thing. That doesn’t seem to use too much CPU on mine btw

```ruby
#Sonic Pi Challenge Dec 2020
#SOXSA
#Shellac Interlude

set_volume! 5
use_bpm 78
sleep 3

use_synth :noise
with_fx :bpf, centre: 80, amp: 0.5 do
  play :e4, sustain: 0.05, release: 0.0
end

live_loop :surfacenoise do
  if tick < 140 then
    use_synth :noise
    with_fx :bpf, centre: 80 do
      play :e4, amp: 0.1, sustain: 1.0
    end
    sleep 0.6
    with_fx :bpf, centre: 30 do
      play :e4, amp: 0.6, sustain: 1.0
    end
    sleep 0.4
  else
    sleep 1
  end
end

x=0.43
y=0.1
z=0.9
live_loop :scratches do
  if tick>5 and look<110 then
    x = rrand(0.0,1.0) if one_in(13)
    y = rrand(0.0,1.0) if one_in(17)
    z = rrand(0.0,1.0) if one_in(19)
    with_fx :bpf, centre: 80, amp: 8.0 do
      at x do
        sample :ambi_swoosh, beat_stretch: 0.01, amp: 0.5
      end
      at y do
        sample :ambi_swoosh, beat_stretch: 0.02, amp: 0.1
      end
      at z do
        sample :ambi_swoosh, beat_stretch: 0.04, amp: 0.1
      end
    end
  end
  sleep 1
end

live_loop :randomnoises do
  if tick<110 and one_in(7) then
    sleep rrand(0.1,1.0)
    use_synth :noise
    with_fx :bpf, centre: 80, amp: rrand(0.3,0.5) do
      play :e4, sustain: 0.05, release: 0.0
    end
  end
  sleep 1
end

live_loop :choir do
  if tick>8 and look<100 then
    with_fx :reverb, mix: 0.8, damp: 0.1 do
      with_fx :nbpf, centre: 80, amp: 0.1 do
        a=[3,4,3,2,6,6,2,8,4].ring.look + rrand(0.0,0.1)
        sample :ambi_choir, amp: 0.1, beat_stretch: a
      end
    end
  end
  sleep 1
end

```

---

<div class="post-metadata">

**Author:** ![ethancrawford](https://avatars.discourse-cdn.com/v4/letter/e/a88e4f/32.png) [@ethancrawford](https://in-thread.sonic-pi.net/u/ethancrawford)\
**Post date:** [December 10, 2020, 12:01am UTC](https://in-thread.sonic-pi.net/t/sonic-pi-monthly-challenge-3/4715/8 "2020-12-10T00:01:12Z")

</div>

Apparently a tight loop that repeats every 0.25 beats at 78 rpm/234 BPM is what does it for me… (45 rpm works, but there are constant ‘Timing warning: running slightly behind’ messages). This is on a Windows desktop, it may work differently on my macbook, haven’t tested it there 🤷‍♂️  
 ![image](https://europe1.discourse-cdn.com/flex017/uploads/sonic_pi/original/2X/1/10bd0a67944cf3eed30e759c03c9b7773a28946b.png)

---

<div class="post-metadata">

**Author:** ![binarysweets](https://dub1.discourse-cdn.com/flex017/user_avatar/in-thread.sonic-pi.net/binarysweets/32/2683_2.png) [@binarysweets](https://in-thread.sonic-pi.net/u/binarysweets)\
**Post date:** [December 17, 2020, 9:38am UTC](https://in-thread.sonic-pi.net/t/sonic-pi-monthly-challenge-3/4715/9 "2020-12-17T09:38:53Z")

</div>

Just two weeks left to get your submissions in for this one!  
Thank you for the submissions so far 👍

---

<div class="post-metadata">

**Author:** ![ethancrawford](https://avatars.discourse-cdn.com/v4/letter/e/a88e4f/32.png) [@ethancrawford](https://in-thread.sonic-pi.net/u/ethancrawford)\
**Post date:** [December 22, 2020, 8:54am UTC](https://in-thread.sonic-pi.net/t/sonic-pi-monthly-challenge-3/4715/10 "2020-12-22T08:54:24Z")

</div>

I have finally managed to have a bit of time to do something for one of these 🙂 Here’s mine:  
(With apologies to any native Irish speakers out there 😅)

> <https://github.com/ethancrawford/live-coding/blob/master/sonic-pi/sonic-pi-monthly-challenge/December-2020/Teach-Yourself-Irish-Breakbeats.rb>

https://w.soundcloud.com/player/?visual=false&url=https%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F952161874&show_artwork=true&maxheight=166  
PS. If you _do_ know Irish, I’m actually kind of curious about the words and phrases they are saying on the recording - feel free to translate for me!

---

<div class="post-metadata">

**Author:** ![robin.newman](https://avatars.discourse-cdn.com/v4/letter/r/76d3ee/32.png) [@robin.newman](https://in-thread.sonic-pi.net/u/robin.newman)\
**Post date:** [December 22, 2020, 2:51pm UTC](https://in-thread.sonic-pi.net/t/sonic-pi-monthly-challenge-3/4715/11 "2020-12-22T14:51:18Z")

</div>

Here is an entry from me. I picked a bpm of 2 \* 78 to meet the challenge requirement and thought a festive offering would be appropriate, so here are two verses of the Carol of the Bells arranged for Sonic Pi. I decided to spend quite a lot of time adjusting the volume level of the individual parts as they play, using the “at” command to trigger the changes, and fx :level wrappers to do the adjustment. I also added two further fx :level wrappers to balance the first part against the remaining three which used a different synth. The code is below and you can hear it on soundcloud

```ruby
#Carol_of_the_Bells.rb
#coded for Sonic Pi by Robin Newman, Dec 22 2020

use_bpm 2*78 #twice 78rpm!! criterion for Monthly Challenge #3
s=0.95;r=0.1 #set sustain release fractions
pp=0.3;p=0.4;mf=0.6;f=0.8;ff=1 #defeine vol levels

with_fx :reverb,room: 0.8,mix: 0.8 do
  use_synth :beep #synth for top part
  with_fx :level ,amp: 1.3 do #most toop part relative to the others
    with_fx :level,amp: pp do |v1| #set initial volume
      set :v1,v1 #pointer to fx_level
      #control volume at times specified by "at" this part also has variable slide times
      at [12*3,16*3, 24*3,25*3,26*3,27*3,44*3,48*3,56*3,57*3,58*3,59*3],
      [[mf,0],[f,0],[ff,3],[mf,3],[f,3],[p,3],[mf,0],[f,0],[ff,3],[mf,3],[f,3],[p,3]] do |vol1|
        control get(:v1),amp: vol1[0],amp_slide: vol1[1]
      end
      
      a1=[:Bf4,:A4,:Bf4,:G4,:Bf4,:A4,:Bf4,:G4,:Bf4,:A4,:Bf4,:G4,:Bf4,:A4,:Bf4,:G4,:Bf4,:A4,:Bf4,:G4,:Bf4,:A4,:Bf4,:G4,:Bf4,:A4,:Bf4,:G4,:Bf4,:A4,:Bf4,:G4,:Bf4,:A4,:Bf4,:G4,:Bf4,:A4,:Bf4,:G4,:Bf4,:A4,:Bf4,:G4,:Bf4,:A4,:Bf4,:G4,:Bf4,:A4,:Bf4,:G4,:Bf4,:A4,:Bf4,:G4,:Bf4,:A4,:Bf4,:G4,:Bf4,:A4,:Bf4,:G4,:D5,:C5,:D5,:Bf4,:D5,:C5,:D5,:Bf4,:D5,:C5,:D5,:Bf4,:D5,:C5,:D5,:Bf4,:G5,:G5,:G5,:F5,:Ef5,:D5,:D5,:D5,:C5,:Bf4,:C5,:C5,:C5,:D5,:C5,:G4,:G4,:G4,:G4,:D4,:E4,:Fs4,:G4,:A4,:Bf4,:C5,:D5,:C5,:Bf4,:D4,:E4,:Fs4,:G4,:A4,:Bf4,:C5,:D5,:C5,:Bf4,:Bf4,:A4,:Bf4,:G4,:Bf4,:A4,:Bf4,:G4,:Bf4,:A4,:Bf4,:G4,:Bf4,:A4,:Bf4,:G4,:Bf4,:A4,:Bf4,:G4,:Bf4,:A4,:Bf4,:G4,:Bf4,:A4,:Bf4,:G4,:Bf4,:A4,:Bf4,:G4,:Bf4,:A4,:Bf4,:G4,:Bf4,:A4,:Bf4,:G4,:Bf4,:A4,:Bf4,:G4,:Bf4,:A4,:Bf4,:G4,:Bf4,:A4,:Bf4,:G4,:Bf4,:A4,:Bf4,:G4,:Bf4,:A4,:Bf4,:G4,:Bf4,:A4,:Bf4,:G4,:Bf4,:A4,:Bf4,:G4,:Bf4,:A4,:Bf4,:G4,:Bf4,:A4,:Bf4,:G4,:Bf4,:A4,:Bf4,:G4,:D5,:C5,:D5,:Bf4,:D5,:C5,:D5,:Bf4,:D5,:C5,:D5,:Bf4,:D5,:C5,:D5,:Bf4,:G5,:G5,:G5,:F5,:Ef5,:D5,:D5,:D5,:C5,:Bf4,:C5,:C5,:C5,:D5,:C5,:G4,:G4,:G4,:G4,:D4,:E4,:Fs4,:G4,:A4,:Bf4,:C5,:D5,:C5,:Bf4,:D4,:E4,:Fs4,:G4,:A4,:Bf4,:C5,:D5,:C5,:Bf4,:Bf4,:A4,:Bf4,:G4,:Bf4,:A4,:Bf4,:G4,:Bf4,:A4,:Bf4,:G4,:Bf4,:A4,:Bf4,:G4,:G4]
      b1=[1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,0.5,0.5,1.0,0.5,0.5,0.5,0.5,1.0,0.5,0.5,0.5,0.5,1.0,0.5,0.5,1.0,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,1.0,1.0,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,1.0,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,0.5,0.5,1.0,0.5,0.5,0.5,0.5,1.0,0.5,0.5,0.5,0.5,1.0,0.5,0.5,1.0,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,1.0,1.0,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,1.0,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,12.0]
      in_thread do
        for i in 0..a1.length-1
          play a1[i],sustain: b1[i]*s,release: b1[i]*r,pan: -0.6
          sleep b1[i]
        end
      end
    end #level1
  end #level part boost
  use_synth :blade#for remaining parts
  with_fx :level,amp: 0.8 do# balance parts 2-4 reduced
    with_fx :level,amp: pp do |v2| #set initial volume
      set :v2,v2
      at [12*3,16*3,28*3,36*3,44*3,48*3,60*3],[mf,f,p,pp,mf,f,p] do |vol2|
        control get(:v2),amp: vol2,amp_slide: 0.5 #fixed slide times
      end
      
      a2=[:r,:r,:r,:r,:G4,:F4,:Ef4,:D4,:G4,:F4,:Ef4,:D4,:G4,:G4,:G4,:G4,:G4,:G4,:G4,:G4,:G4,:G4,:G4,:G4,:G4,:G4,:G4,:G4,:Bf4,:A4,:Bf4,:G4,:Bf4,:A4,:Bf4,:G4,:Bf4,:A4,:Bf4,:G4,:Bf4,:A4,:Bf4,:G4,:G4,:A4,:A4,:G4,:G4,:A4,:Bf4,:G4,:G4,:A4,:Bf4,:D5,:G4,:G4,:G4,:G4,:D4,:E4,:Fs4,:G4,:D4,:E4,:Fs4,:G4,:D4,:C4,:F4,:Ef4,:D4,:r,:G4,:F4,:Ef4,:D4,:G4,:F4,:Ef4,:D4,:G4,:G4,:G4,:G4,:G4,:G4,:G4,:G4,:G4,:G4,:G4,:G4,:G4,:G4,:G4,:G4,:Bf4,:A4,:Bf4,:G4,:Bf4,:A4,:Bf4,:G4,:Bf4,:A4,:Bf4,:G4,:Bf4,:A4,:Bf4,:G4,:G4,:A4,:A4,:G4,:G4,:A4,:Bf4,:G4,:G4,:A4,:Bf4,:D5,:G4,:G4,:G4,:G4,:D4,:E4,:Fs4,:G4,:D4,:E4,:Fs4,:G4,:D4,:C4,:F4,:Ef4,:D4]
      b2=[3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,3.0,1.0,1.0,1.0,3.0,1.0,1.0,1.0,3.0,3.0,3.0,3.0,9.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,3.0,1.0,1.0,1.0,3.0,1.0,1.0,1.0,3.0,3.0,3.0,3.0,12.0]
      in_thread do
        for i in 0..a2.length-1
          play a2[i],sustain: b2[i]*s,release: b2[i]*r,pan: -0.2
          sleep b2[i]
        end
      end
    end#level2
    
    with_fx :level,amp: pp do |v3| #set initial volume
      set :v3,v3
      at [12*3,16*3,24*3,28*3,40*3,44*3,48*3,56*3,60*3],[mf,f,ff,p,pp,mf,f,ff,p] do |vol3|
        control get(:v3),amp: vol3,amp_slide: 0.5 #fixed slide times
      end
      
      a3=[:r,:r,:r,:r,:r,:r,:r,:r,:Ef4,:D4,:C4,:G3,:C4,:C4,:C4,:C4,:D4,:D4,:D4,:D4,:Ef4,:Ef4,:Ef4,:Ef4,:D4,:D4,:D4,:D4,:D4,:E4,:F4,:Ef4,:D4,:G4,:F4,:Ef4,:D4,:D4,:Ef4,:Ef4,:D4,:C4,:D4,:D4,:D4,:D4,:Ef4,:Ef4,:Ef4,:F4,:Ef4,:D4,:D4,:D4,:D4,:Bf3,:A3,:Bf3,:G3,:Bf3,:A3,:Bf3,:G3,:Bf3,:A3,:Bf3,:G3,:Bf3,:A3,:Bf3,:G3,:G3,:G3,:G3,:G3,:G3,:r,:r,:r,:r,:r,:Ef4,:D4,:C4,:G3,:C4,:C4,:C4,:C4,:D4,:D4,:D4,:D4,:Ef4,:Ef4,:Ef4,:Ef4,:D4,:D4,:D4,:D4,:D4,:E4,:F4,:Ef4,:D4,:G4,:F4,:Ef4,:D4,:D4,:Ef4,:Ef4,:D4,:C4,:D4,:D4,:D4,:D4,:Ef4,:Ef4,:Ef4,:F4,:Ef4,:D4,:D4,:D4,:D4,:Bf3,:A3,:Bf3,:G3,:Bf3,:A3,:Bf3,:G3,:Bf3,:A3,:Bf3,:G3,:Bf3,:A3,:Bf3,:G3,:G3,:G3,:G3,:G3,:Bf3,:A3,:Bf3,:G3,:Bf3,:A3,:Bf3,:G3,:Bf3,:A3,:Bf3,:G3,:Bf3,:A3,:Bf3,:G3]
      b3=[3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,3.0,3.0,1.0,1.0,1.0,0.5,0.5,1.0,1.0,1.0,0.5,0.5,0.5,0.5,1.0,0.5,0.5,1.0,1.0,0.5,0.5,0.5,0.5,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,3.0,3.0,3.0,3.0,9.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,3.0,3.0,1.0,1.0,1.0,0.5,0.5,1.0,1.0,1.0,0.5,0.5,0.5,0.5,1.0,0.5,0.5,1.0,1.0,0.5,0.5,0.5,0.5,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,3.0,3.0,3.0,3.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0]
      in_thread do
        for i in 0..a3.length-1
          play a3[i],sustain: b3[i]*s,release: b3[i]*r,pan: 0.2
          sleep b3[i]
        end
      end
    end#level3
    
    
    with_fx :level,amp: mf do |v4| #set initial volume
      set :v4,v4
      at [16*3,24*3,28*3,44*3,48*3,56*3,60*3],[f,ff,p,mf,f,ff,p] do |vol4|
        control get(:v4),amp: vol4,amp_slide: 0.5 #fixed slide times
      end
      
      a4=[:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:Ef3,:Ef3,:Ef3,:Ef3,:G3,:G3,:G3,:G3,:C4,:C4,:C4,:C4,:G3,:G3,:G3,:G3,:G3,:G3,:G3,:G3,:G3,:G3,:G3,:G3,:G3,:G3,:G3,:G3,:G3,:G3,:G3,:G3,:Bf3,:A3,:Bf3,:G3,:Bf3,:A3,:Bf3,:G3,:Bf3,:A3,:Bf3,:G3,:Bf3,:A3,:Bf3,:G3,:D3,:D3,:D3,:D3,:E3,:F3,:Ef3,:D3,:C3,:G2,:r,:r,:r,:r,:r,:r,:r,:r,:r,:Ef3,:Ef3,:Ef3,:Ef3,:G3,:G3,:G3,:G3,:C4,:C4,:C4,:C4,:G3,:G3,:G3,:G3,:G3,:G3,:G3,:G3,:G3,:G3,:G3,:G3,:G3,:G3,:G3,:G3,:G3,:G3,:G3,:G3,:Bf3,:A3,:Bf3,:G3,:Bf3,:A3,:Bf3,:G3,:Bf3,:A3,:Bf3,:G3,:Bf3,:A3,:Bf3,:G3,:D3,:D3,:D3,:D3,:E3,:F3,:Ef3,:D3,:C3,:G2]
      b4=[3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,3.0,3.0,3.0,2.0,1.0,3.0,3.0,3.0,3.0,9.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,1.0,3.0,3.0,3.0,2.0,1.0,3.0,3.0,3.0,3.0,12.0]
      in_thread do
        for i in 0..a4.length-1
          play a4[i],sustain: b4[i]*s,release: b4[i]*r,pan: 0.6
          sleep b4[i]
        end
      end
    end#level4
  end#level balance parts 2-4
  
end#fx

```

https://w.soundcloud.com/player/?visual=false&url=https%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F952293064&show_artwork=true&maxheight=166

---

<div class="post-metadata">

**Author:** ![soxsa](https://dub1.discourse-cdn.com/flex017/user_avatar/in-thread.sonic-pi.net/soxsa/32/1669_2.png) [@soxsa](https://in-thread.sonic-pi.net/u/soxsa)\
**Post date:** [December 22, 2020, 3:28pm UTC](https://in-thread.sonic-pi.net/t/sonic-pi-monthly-challenge-3/4715/12 "2020-12-22T15:28:41Z")

</div>

Brilliant both of these.

---

<div class="post-metadata">

**Author:** ![binarysweets](https://dub1.discourse-cdn.com/flex017/user_avatar/in-thread.sonic-pi.net/binarysweets/32/2683_2.png) [@binarysweets](https://in-thread.sonic-pi.net/u/binarysweets)\
**Post date:** [December 22, 2020, 4:32pm UTC](https://in-thread.sonic-pi.net/t/sonic-pi-monthly-challenge-3/4715/13 "2020-12-22T16:32:50Z")

</div>

I’m pleased we got a seasonal one in 😀

---

<div class="post-metadata">

**Author:** ![din](https://avatars.discourse-cdn.com/v4/letter/d/ccd318/32.png) [@din](https://in-thread.sonic-pi.net/u/din)\
**Post date:** [July 27, 2021, 8:33pm UTC](https://in-thread.sonic-pi.net/t/sonic-pi-monthly-challenge-3/4715/15 "2021-07-27T20:33:33Z")

</div>

no more monthly challenges?

---

<div class="post-metadata">

**Author:** ![binarysweets](https://dub1.discourse-cdn.com/flex017/user_avatar/in-thread.sonic-pi.net/binarysweets/32/2683_2.png) [@binarysweets](https://in-thread.sonic-pi.net/u/binarysweets)\
**Post date:** [August 1, 2021, 12:34pm UTC](https://in-thread.sonic-pi.net/t/sonic-pi-monthly-challenge-3/4715/16 "2021-08-01T12:34:03Z")

</div>

Hi,

Maybe 🙂

The last challenge didn’t receive any submissions so I stopped, but I’ve been busy with other stuff as well.

Do you have an idea for one?

---

<div class="post-metadata">

**Author:** ![din](https://avatars.discourse-cdn.com/v4/letter/d/ccd318/32.png) [@din](https://in-thread.sonic-pi.net/u/din)\
**Post date:** [August 1, 2021, 6:38pm UTC](https://in-thread.sonic-pi.net/t/sonic-pi-monthly-challenge-3/4715/17 "2021-08-01T18:38:45Z")

</div>

Hum?

Something that just came to mind:

One sound.

Imagine having to use only one sound and stretch, slice, pitch to make something?

Could be neat.

---

<div class="post-metadata">

**Author:** ![Hussein](https://dub1.discourse-cdn.com/flex017/user_avatar/in-thread.sonic-pi.net/hussein/32/1972_2.png) [@Hussein](https://in-thread.sonic-pi.net/u/Hussein)\
**Post date:** [August 1, 2021, 7:10pm UTC](https://in-thread.sonic-pi.net/t/sonic-pi-monthly-challenge-3/4715/18 "2021-08-01T19:10:50Z")

</div>

I’ve got one which is from Allen Strange’s book ’ Electronic Music: Systems, Techniques and Control’. It’s a sequencing score written by [Daniel Goode](http://www.composers21.com/compdocs/gooded.htm) for his 1975 piece ‘Faust Crosses the Raritan somewhere in West Africa and finds himself back home, somewhere south of the Reich’. The image contains the score based instructions.

 ![Ableton UG Instruction 1](https://europe1.discourse-cdn.com/flex017/uploads/sonic_pi/original/2X/5/5cbebc88a3021efc0054574b9331ead3b0ca18fc.jpeg)

I use this sometimes in the Ableton user group to approach sequencing from a different perspective.  
Looking forward to hearing and seeing different implementations.

I’d recommend Strange’s book as being a really good source of ideas whether using modular, DAW or live coding, or any combination thereof.

---

<div class="post-metadata">

**Author:** ![binarysweets](https://dub1.discourse-cdn.com/flex017/user_avatar/in-thread.sonic-pi.net/binarysweets/32/2683_2.png) [@binarysweets](https://in-thread.sonic-pi.net/u/binarysweets)\
**Post date:** [August 3, 2021, 12:50pm UTC](https://in-thread.sonic-pi.net/t/sonic-pi-monthly-challenge-3/4715/19 "2021-08-03T12:50:01Z")

</div>

@din, it’s a great idea, we did this for challenge #1 already though

---

<div class="post-metadata">

**Author:** ![binarysweets](https://dub1.discourse-cdn.com/flex017/user_avatar/in-thread.sonic-pi.net/binarysweets/32/2683_2.png) [@binarysweets](https://in-thread.sonic-pi.net/u/binarysweets)\
**Post date:** [August 3, 2021, 12:51pm UTC](https://in-thread.sonic-pi.net/t/sonic-pi-monthly-challenge-3/4715/20 "2021-08-03T12:51:04Z")

</div>

Yes, I do like this idea, perhaps I’ll open this one as challenge #6 for September 👍
