# Bach


# Bach Minuet in G
#
# Coded by Robin Newman

use_bpm 60
use_synth_defaults release: 0.5, amp: 0.7, cutoff: 90
use_synth :beep

## Each section of the minuet is repeated
2.times do

  ## First start a thread for the first 8 bars of the bass left hand part
  in_thread do
    play_chord [55,59]#b1
    sleep 1
    play_pattern_timed [57],[0.5]
    play_pattern_timed [59],[1.5] #b2
    play_pattern_timed [60],[1.5] #b3
    play_pattern_timed [59],[1.5] #b4
    play_pattern_timed [57],[1.5] #b5
    play_pattern_timed [55],[1.5] #b6
    play_pattern_timed [62,59,55],[0.5] #b7
    play_pattern_timed [62],[0.5] #b8
    play_pattern_timed [50,60,59,57],[0.25]
  end

  ## Play concurrently the first 8 bars of the right hand part
  play_pattern_timed [74],[0.5]#b1
  play_pattern_timed [67,69,71,72],[0.25]
  play_pattern_timed [74,67,67],[0.5]#b2
  play_pattern_timed [76],[0.5]#b3
  play_pattern_timed [72,74,76,78],[0.25]
  play_pattern_timed [79,67,67],[0.5]#b4
  play_pattern_timed [72],[0.5] #b5
  play_pattern_timed [74,72,71,69],[0.25]
  play_pattern_timed [71],[0.5] #b6
  play_pattern_timed [72,71,69,67],[0.25]
  play_pattern_timed [66],[0.5] #b7
  play_pattern_timed [67,69,71,67],[0.25]
  play_pattern_timed [71,69],[0.5,1] #b8

  ## Start a new thread for bars 9-16 of the left hand part
  in_thread do
    play_chord [55,59]#b9=b1
    sleep 1
    play 57
    sleep 0.5
    play_pattern_timed [55,59,55],[0.5] #b10
    play_pattern_timed [60],[1.5] #b11=b3
    play_pattern_timed [59,60,59,57,5],[0.5,0.25,0.25,0.25,0.25] #b12=b4]
    play_pattern_timed [57,54],[1,0.5] #b13
    play_pattern_timed [55,59],[1,0.5] #b14
    play_pattern_timed [60,62,50],[0.5] #b15
    play_pattern_timed [55,43],[1,0.5] #b16
  end

  ## Play concurrently bars 9-16 of the right hand part the first six
  ## bars repeat bars 1-6
  play_pattern_timed [74],[0.5]#b9 = b1
  play_pattern_timed [67,69,71,72],[0.25]
  play_pattern_timed [74,67,67],[0.5]#b10=b2
  play_pattern_timed [76],[0.5]#b11=b3
  play_pattern_timed [72,74,76,78],[0.25]
  play_pattern_timed [79,67,67],[0.5]#b12=b4
  play_pattern_timed [72],[0.5] #b13=b5
  play_pattern_timed [74,72,71,69],[0.25]
  play_pattern_timed [71],[0.5] #b14=b6
  play_pattern_timed [72,71,69,67],[0.25]
  play_pattern_timed [69],[0.5] #b15
  play_pattern_timed [71,69,67,66],[0.25]
  play_pattern_timed [67],[1.5] #b16
end


## ==========second section starts here======
## The second section is also repeated
2.times do

  ## Start a thread for bars 17-24 of the left hand part
  in_thread do
    play_pattern_timed [55],[1.5] #b17
    play_pattern_timed [54],[1.5] #b18
    play_pattern_timed [52,54,52],[0.5] #b19
    play_pattern_timed [57,45],[1,0.5] #b20
    play_pattern_timed [57],[1.5] #b21
    play_pattern_timed [59,62,61],[0.5] #b22
    play_pattern_timed [62,54,57],[0.5] #b23
    play_pattern_timed [62,50,60],[0.5] #b24
  end

  ## Play bars 17 to 24 of the right hand concurrently with the left
  ## hand thread
  play_pattern_timed [83],[0.5] #b17
  play_pattern_timed [79,81,83,79],[0.25]
  play_pattern_timed [81],[0.5] #b18
  play_pattern_timed [74,76,78,74],[0.25]
  play_pattern_timed [79],[0.5] #b19
  play_pattern_timed [76,78,79,74],[0.25]
  play_pattern_timed [73,71,73,69],[0.5,0.25,0.25,0.5] #b20
  play_pattern_timed [69,71,73,74,76,78],[0.25] #b21
  play_pattern_timed [79,78,76],[0.5] #b22
  play_pattern_timed [78,69,73],[0.5] #b23
  play 74 #b24
  sleep 1.5

  ## Start a new thread for bars 25-32 of the left hand part
  in_thread do
    play_pattern_timed [59,62,59],[0.5] #b25
    play_pattern_timed [60,64,60],[0.5] #b26
    play_pattern_timed [59,57,55],[0.5] #b27
    play 62 #b28
    sleep 1.5 #includes a rest
    play_pattern_timed [50,54],[1,0.5] #b29
    play_pattern_timed [52,55,54],[0.5] #b30
    play_pattern_timed [55,47,50],[0.5] #b31
    play_pattern_timed [55,50,43],[0.5] #b32
  end

  ## Play bars 25-32 of the right hand part concurrently with the left
  ## hand thread
  play_pattern_timed [74,67,66,67],[0.5,0.25,0.25,0.5] #b25
  play_pattern_timed [76,67,66,67],[0.5,0.25,0.25,0.5] #b26
  play_pattern_timed [74,72,71],[0.5] #b27
  play_pattern_timed [69,67,66,67,69],[0.25,0.25,0.25,0.25,0.5] #b28
  play_pattern_timed [62,64,66,67,69,71],[0.25] #b29
  play_pattern_timed [72,71,69],[0.5] #b30
  play_pattern_timed [71,74,67,66],[0.25,0.25,0.5,0.5] #b31
  play_chord [67,59] #b32
  sleep 1.5
end