:organ_tonewheel explorer

use_debug false
use_bpm 45

live_loop :lvlset do
  clvl = range(45,100,15).tick
  clvl2= range(110,55,20).look
  n= scale(:a1,:aeolian,num_octaves: 3) #not used
  note= n.look #not used
  set :c, clvl
  set :c2, clvl2
  set :n, note #more like nope
  
  sleep 12
end

with_fx :rlpf do |lpf|
  with_fx :echo, mix: 0.5 do |e|
    with_fx :distortion do |dst|
      with_fx :compressor, threshold: 0.6, slope_above: 0.12 do
        with_fx :level do |amp|
          sleep 2
          live_loop :ch do
            control amp: 0.7
            d8 = dice(8)
            d8i = 8-d8
            d81 = 1+d8
            wv=(line 0,1, steps: 8).mirror.rotate(knit(4,12,-4,12).look)
            wv2=wv.mirror+wv.rotate(4).look/3
            
            use_transpose 0
            
            use_synth :organ_tonewheel
            
            use_synth_defaults attack: [0.001,0.1*wv2.rotate(7).look,1].look,
              release: [2,3].look-wv.look, decay: [2,1].look+rrand(0,1.3),
              bass: 3+3*wv.rotate(5).look, bass_slide: 0.125*wv.mirror.look, # -1oct
              quint: [7*wv.rotate(2).look,8-wv.look].look, quint_slide: rrand(1,3), # 3/2 base
              fundamental: [5+wv2.look,7-wv2.look].look, fundamental_slide: rrand(2,4), #base
              oct: [4+2*wv.mirror.look,5,4].look, oct_slide: rrand(1,5),
              nazard: [wv2.look*[0.2,0,0.1,0,0].look,0].look, nazard_slide: rrand(0,7), # 3x
              blockflute: [0,2/d81,0].look, blockflute_slide: rrand(0,4), # +2oct
              tierce: [0,0,d8i/6].look, tierce_slide: rrand(0,5),
              rs_freq: line(1,9,steps:12).mirror.look, rs_freq_slide: 0.5,
              rs_freq_var: 0.125, rs_pitch_depth: 0.012 #, # 5x
              # larigot: [d8i/1.5,0].look, larigot_slide: rrand(0,5), # 6x
              # sifflute: [0,d8/12].look, sifflute_slide: rrand(0,3) # +3oct
              
            n=get[:n]
            
            control lpf, cutoff: get[:c2], cutoff_slide: 5,
              res: rrand(0.2,0.99), mix: wv.look*0.8
            control dst, distort: wv.choose, distort_slide: 1*wv2.look,
              mix: wv.choose/3
            control e, phase: halves(4,6).mirror.look*wv2.look
            
            
            notes = (ring :E4, :Fs4, :B4, :Cs5, :D5, :Fs4, :E4, :Cs5, :B4, :Fs4, :D5, :Cs5)
            
            spark halves(4,6).mirror.rotate(-look)
            spark wv
            spark wv2
            with_cent_tuning 0.05*halves(4,6).mirror.look*wv2.look do
              density 2 do
                play notes.tick, pan: line(-1,1,steps: 25).look
              sleep [0.3,0.295].look end
            end
        end end
      end
      
      live_loop :ch2 do
        control amp: 0.7
        d8 = dice(8)
        d8i = 8-d8
        d81 = 1+d8
        wv=(line 0,1, steps: 8).mirror.rotate(knit(4,12,-4,12).look)
        wv2=wv.mirror+wv.rotate(4).look/3
        
        use_transpose 0
        
        use_synth :organ_tonewheel
        
        use_synth_defaults attack: [0.001,0.1*wv2.rotate(7).look,1].look,
          release: [2,3].look-wv.look, decay: [2,1].look+rrand(0,1.3),
          bass: 3+3*wv.rotate(5).look, bass_slide: 0.125*wv.mirror.look, # -1oct
          quint: [7*wv.rotate(2).look,8-wv.look].look, quint_slide: rrand(1,3), # 3/2 base
          fundamental: [5+wv2.look,7-wv2.look].look, fundamental_slide: rrand(2,4), #base
          oct: [4+2*wv.mirror.look,5,4].look, oct_slide: rrand(1,5),
          nazard: [wv2.look*[0.2,0,0.1,0,0].look,0].look, nazard_slide: rrand(0,7), # 3x
          blockflute: [0,2/d81,0].look, blockflute_slide: rrand(0,4), # +2oct
          tierce: [0,0,d8i/6].look, tierce_slide: rrand(0,5),
          rs_freq: line(1,9,steps:12).mirror.look, rs_freq_slide: 0.5,
          rs_freq_var: 0.125, rs_pitch_depth: 0.012 #, # 5x
          # larigot: [d8i/1.5,0].look, larigot_slide: rrand(0,5), # 6x
          # sifflute: [0,d8/12].look, sifflute_slide: rrand(0,3) # +3oct
          
        n=get[:n]
        
        control lpf, cutoff: get[:c2], cutoff_slide: 5,
          res: rrand(0.2,0.99), mix: wv.look*0.8
        control dst, distort: wv.choose, distort_slide: 1*wv2.look,
          mix: wv.choose/3
        control e, phase: halves(4,6).mirror.look*wv2.look
        
        
        notes = (ring :E4, :Fs4, :B4, :Cs5, :D5, :Fs4, :E4, :Cs5, :B4, :Fs4, :D5, :Cs5)
        
        spark halves(4,6).mirror.rotate(-look)
        spark wv
        spark wv2
        with_cent_tuning 0.05*halves(6,8).mirror.look*wv2.look do
          
          density 2 do
            play notes.tick, amp: dice*0.12, pan: line(1,-1,steps: 15).look
          sleep [0.295,3].look end
        end
        
    end end
    
end end
4 Likes

This sounds very cool. A great synth to play with: so many possibilities to try out.

1 Like

Hey, thanks! I’m about 4 months into learning all of this music/coding/mixing stuff and I feel like I’ve gotten a much better hang of things in the last couple of weeks. Would love to see what someone with your dev/musical chops would do with this!

this is my birthday week so I am hoping to drop something neat onto the forum each day - I have something else brewing with :fm synth as well.

Happy Tuesday

Spacy Trip - nice done … but I had to choose another Synths, because the " :organ_tonewheel " Synth you use, was not available in my Sonic Pi Version 3.2.2 (Linux) — what version do you use?

Tonewheel was only introduced in version 4.0

Yea, thought so :neutral_face: Do you know, if there is a 4.xx .deb for Linux/Ubuntu available?

I did this one some time ago Sonic Pi 4.3 installer for Ubuntu 22.04 Please look at the video first as it suggests.

1 Like

Woah, I was not expecting all of this to come out of the tonewheel.

1 Like

Yeah I was kinda blown away. This script in particular is really fun to slowly modify. I kinda just chose an arbitrary point in my jam to post it. I wish I had a nicer computer because I can’t really screen record while running any sort of music software. :confused: