A nice piece from about 1725 which I hope you enjoy

The piece is by an anonymous Czech compozer dates from around 1725.
This version for harp is converted from a midi file by Lory Werths. I had to split it into 6 parts to accommodate overlapping tied notes, an d I added some pan separation which made it more interesting.

#CzechAnonGigue1Circa1725.rb
##arranged for Sonic Pi by Robin Newman, May 2023
#from a midi file by Lory Werth
use_synth :pluck
use_bpm 175
with_fx :reverb,room: 0.8,mix: 0.5 do
  
  a1=[:r,:r,:A4,:r,:A4,:r,:E4,:r,:A4,:B4,:r,:Gs4,:r,:Cs5,:D5,:r,:B4,:r,:r,:A4,:r,:A4,:r,:A4,:r,:A4,:r,:E4,:r,:A5,:r,:r,:Fs5,:r,:r,:E5,:r,:r,:D5,:r,:r,:Cs5,:r,:r,:B4,:r,:r,:A4,:B4,:r,[:A4,:Ds5],[:Gs4,:B4,:E5],:r,:r,:r,:r,:Cs5,:r,:r,:B4,:r,:r,:A4,:r,:A4,:r,:A4,:r,:A4,:r,:E4,:r,:A5,:r,:r,:Fs5,:r,:r,:E5,:r,:r,:D5,:r,:r,:Cs5,:r,:r,:B4,:r,:r,:A4,:B4,:r,[:A4,:Ds5],[:Gs4,:B4,:E5],:r,:r,:r,:B4,:r,:r,:r,:r,:r,[:Cs5,:Es5],:r,:r,:Es5,:r,:A5,:r,:r,:r,:A4,:B4,:r,:Cs5,:Ds5,:r,:E5,:B4,:E4,:Cs6,:r,:A5,:r,:Fs5,:r,:D5,:r,:B4,:r,:B4,:E5,:Gs4,:A4,:Gs4,:Gs4,:A4,:A4,:r,:Gs4,:r,:Gs4,:Gs4,:r,:r,:r,:r,[:Cs5,:Es5],:r,:r,:Es5,:r,:A5,:r,:r,:r,:A4,:B4,:r,:Cs5,:Ds5,:r,:E5,:B4,:E4,:Cs6,:r,:A5,:r,:Fs5,:r,:D5,:r,:B4,:r,:B4,:E5,:Gs4,:A4,:Gs4,:Gs4,:A4,:A4,:r,:r]
  b1=[3.0,0.5,1.0,0.5,1.0,1.0,0.5,0.5,0.5,0.5,1.0,0.5,0.5,0.5,0.5,0.5,1.0,1.5,0.5,1.0,0.5,1.0,0.5,1.0,0.5,1.0,1.5,1.5,0.5,1.0,1.5,0.5,1.0,1.5,0.5,1.0,1.5,0.5,1.0,1.5,0.5,1.0,1.5,0.5,1.0,1.5,0.5,0.5,0.5,1.0,0.5,1.5,1.5,6.0,3.0,0.5,1.0,1.5,0.5,1.0,1.5,0.5,1.0,0.5,1.0,0.5,1.0,0.5,1.0,1.5,1.5,0.5,1.0,1.5,0.5,1.0,1.5,0.5,1.0,1.5,0.5,1.0,1.5,0.5,1.0,1.5,0.5,1.0,1.5,0.5,0.5,0.5,1.0,0.5,1.5,1.5,3.0,0.5,1.0,1.5,6.0,3.0,1.5,1.0,0.5,3.0,0.5,1.0,1.0,2.0,1.5,3.0,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,1.0,1.0,0.5,1.0,0.5,1.0,0.5,1.0,0.5,1.0,0.5,1.0,0.5,0.16666667,0.16666667,0.16666667,1.0,0.5,1.5,0.5,1.0,1.5,1.5,1.5,6.0,3.0,1.5,1.0,0.5,3.0,0.5,1.0,1.0,2.0,1.5,3.0,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,1.0,1.0,0.5,1.0,0.5,1.0,0.5,1.0,0.5,1.0,0.5,1.0,0.5,0.16666667,0.16666667,0.16666667,1.0,0.5,3.0,1.5,3.0]
  in_thread do
    for i in 0..a1.length-1
      play a1[i],pan: 0.3
      sleep b1[i]
    end
  end
  
  a2=[:r,:A4,:r,:A4,:Fs4,:Fs4,:D4,:r,:r,:Cs5,:r,:r,:Fs4,:r,:B4,:Cs5,:r,:E4,:r,:Cs4,:r,:E4,:r,:B3,:r,:B4,:Gs4,:r,:D4,:r,:B3,:r,:A5,:E5,:r,:Cs4,:r,:Fs5,:G5,:r,:B3,:r,:E5,:Fs5,:r,:A3,:r,:D5,:E5,:r,:Gs3,:r,:Cs5,:D5,:r,:Fs3,:r,:B4,:Cs5,:Fs3,:r,:r,:r,:r,:r,:B4,:r,:Gs4,:r,:Cs5,:D5,:r,:Fs4,:r,:B4,:Cs5,:r,:E4,:r,:Cs4,:r,:E4,:r,:B3,:r,:B4,:Gs4,:r,:D4,:r,:B3,:r,:A5,:E5,:r,:Cs4,:r,:Fs5,:G5,:r,:B3,:r,:E5,:Fs5,:r,:A3,:r,:D5,:E5,:r,:Gs3,:r,:Cs5,:D5,:r,:Fs3,:r,:B4,:Cs5,:Fs3,:r,:r,:r,:r,:A4,:r,:E4,:r,:B4,:Cs5,:r,:r,:r,:Fs5,[:D5,:Gs5],:r,:Es5,:r,:Fs5,:Gs5,:r,:Gs5,:Fs5,:r,:D5,:r,:B4,:r,:Gs4,:Cs4,:A3,:E3,:r,:r,:r,:r,:B3,:r,:Gs4,:A4,:r,:E4,:r,:B4,:Cs5,:r,:r,:r,:Fs5,[:D5,:Gs5],:r,:Es5,:r,:Fs5,:Gs5,:r,:Gs5,:Fs5,:r,:D5,:r,:B4,:r,:Gs4,:Cs4,:A3,:E3,:r,:r,:r,:r]
  b2=[0.5,1.0,0.5,1.0,1.5,1.5,1.5,1.5,0.5,1.0,1.5,1.0,0.5,0.5,0.5,0.5,1.0,0.5,1.0,0.5,1.0,0.5,1.0,0.5,0.5,0.5,0.5,1.0,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,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,0.5,0.5,1.5,1.5,3.0,6.0,1.5,1.0,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,1.0,0.5,1.0,0.5,1.0,0.5,0.5,0.5,0.5,1.0,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,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,0.5,0.5,1.5,1.5,3.0,1.5,1.0,0.5,1.0,0.5,0.5,0.5,0.5,6.0,6.0,0.5,0.5,0.5,1.0,0.5,1.5,0.5,1.0,0.5,0.5,1.0,0.5,1.0,0.5,1.0,0.5,0.5,1.5,1.5,1.5,1.5,6.0,6.0,1.0,0.5,0.5,0.5,0.5,1.0,0.5,0.5,0.5,0.5,6.0,6.0,0.5,0.5,0.5,1.0,0.5,1.5,0.5,1.0,0.5,0.5,1.0,0.5,1.0,0.5,1.0,0.5,0.5,1.5,1.5,1.5,1.5,6.0,6.0,6.0]
  in_thread do
    for i in 0..a2.length-1
      play a2[i],pan: 0.2
      sleep b2[i]
    end
  end
  
  a3=[:A4,:Gs4,:A4,:E4,:r,:E4,:r,:Cs4,:r,:A4,:Fs4,:A4,:A4,:Gs4,:Gs4,:Fs4,:Fs4,:Fs4,:Ds4,:E3,:r,:E5,:Cs4,:Cs4,:D4,:D4,:Cs4,:Cs4,:B3,:B3,:A3,:A3,:Gs3,:Gs3,:r,:r,:r,:A4,:A4,:Gs4,:Gs4,:Fs4,:Fs4,:Fs4,:Ds4,:E3,:r,:E5,:Cs4,:Cs4,:D4,:D4,:Cs4,:Cs4,:B3,:B3,:A3,:A3,:Gs3,:Gs3,:r,:r,:Gs4,:Gs4,:r,:r,:r,:A4,:Fs3,:B4,:r,:r,:r,:r,:r,:E4,:E4,:r,:B4,:r,:r,:r,:r,:A4,:Fs3,:B4,:r,:r,:r,:r,:r,:r]
  b3=[1.0,0.5,1.0,0.5,1.0,0.5,1.0,0.5,0.5,1.0,1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5,0.5,1.0,1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5,6.0,6.0,3.0,1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5,0.5,1.0,1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5,6.0,3.0,1.5,1.5,6.0,6.0,3.0,1.0,2.0,1.5,1.5,3.0,6.0,6.0,6.0,1.5,1.5,0.5,1.0,1.5,6.0,6.0,3.0,1.0,2.0,1.5,1.5,3.0,6.0,6.0,6.0,6.0]
  in_thread do
    for i in 0..a3.length-1
      play a3[i],amp: 0.8,pan: 0.3
      sleep b3[i]
    end
  end
  
  a4=[:r,:r,:r,:Gs4,:r,:r,:Fs4,:r,:r,:E4,:r,:r,:r,:r,:A3,:r,:r,:B3,:r,:r,:A3,:r,:r,:Gs3,:r,:r,:Fs3,:r,:r,:E3,:r,:Gs3,:r,:Cs5,:Fs3,:E3,:E4,:r,:r,:A4,:r,:A4,:r,:A4,:Fs4,:r,:r,:r,:E4,:r,:r,:r,:r,:A3,:r,:r,:B3,:r,:r,:A3,:r,:r,:Gs3,:r,:r,:Fs3,:r,:r,:E3,:r,:Gs3,:r,:Cs5,:Fs3,:E3,:E4,:r,:Gs4,:r,:r,:r,:D5,:r,:D5,:r,:Cs5,:r,:r,:Gs5,:r,:r,:Es5,:r,:r,:Cs5,:B3,:r,:Fs5,:B4,:r,:r,:A4,:r,:E5,:Fs4,:r,:Cs5,:D4,:r,:A4,:B3,:r,:Gs3,:r,:Fs3,:r,:r,:E5,:r,:B5,:Cs5,:r,:Gs5,:A4,:r,:E5,:Fs4,:r,:Cs5,:D4,:r,:A4,:D4,:E3,:r,:E4,:r,:r,:r,:Fs4,:r,:r,:A4,:r,:D5,:r,:D5,:r,:Cs5,:r,:r,:Gs5,:r,:r,:Es5,:r,:r,:Cs5,:B3,:r,:Fs5,:B4,:r,:r,:A4,:r,:E5,:Fs4,:r,:Cs5,:D4,:r,:A4,:B3,:r,:Gs3,:r,:Fs3,:r,:r,:E5,:r,:B5,:Cs5,:r,:Gs5,:A4,:r,:E5,:Fs4,:r,:Cs5,:D4,:r,:A4,:D4,:E3,:r,:E4,:r,:r]
  b4=[6.0,1.5,1.0,0.5,1.5,1.0,0.5,1.5,1.0,0.5,3.0,6.0,1.5,1.0,0.5,1.5,1.0,0.5,1.5,1.0,0.5,1.5,1.0,0.5,1.5,1.0,0.5,1.5,1.0,0.5,1.0,0.5,0.5,0.5,0.5,1.5,1.5,3.0,0.5,1.0,0.5,1.0,0.5,1.0,1.5,3.0,1.5,1.0,0.5,3.0,6.0,1.5,1.0,0.5,1.5,1.0,0.5,1.5,1.0,0.5,1.5,1.0,0.5,1.5,1.0,0.5,1.5,1.0,0.5,1.0,0.5,0.5,0.5,0.5,1.5,1.5,0.5,1.0,1.5,3.0,0.5,1.0,0.5,1.0,0.5,1.0,1.5,0.5,1.0,1.5,0.5,1.0,1.5,0.5,0.5,0.5,0.5,0.5,0.5,3.0,1.0,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,1.0,0.5,1.0,0.5,1.5,1.0,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,1.5,1.0,0.5,1.5,1.5,1.0,0.5,1.5,1.0,0.5,0.5,1.0,0.5,1.0,0.5,1.0,1.5,0.5,1.0,1.5,0.5,1.0,1.5,0.5,0.5,0.5,0.5,0.5,0.5,3.0,1.0,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,1.0,0.5,1.0,0.5,1.5,1.0,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,1.5,1.0,0.5,1.5,6.0]
  in_thread do
    for i in 0..a4.length-1
      play a4[i],amp: 0.8,pan: -0.3
      sleep b4[i]
    end
  end
  
  a5=[:r,:r,:r,:r,:r,:r,:r,:r,:A3,:r,:r,:A4,:r,:A4,:Fs4,:Fs4,:r,:E4,:r,:A4,:Gs4,:r,:r,:Fs4,:r,:r,:r,:r,:r,:r,:A3,:r,:r,:B3,:r,:Gs4,:Fs4,:r,:r,:A4,:r,:A4,:r,:E4,:r,:E3,:r,:Cs5,:A5,:r,:Gs3,:r,:Gs5,:Fs5,:r,:Gs3,:r,:Es5,:B3,:A3,:Cs3,:r,:r,:Gs4,:E4,:Cs4,:r,:D5,:B4,:Gs4,:E4,:Cs4,:r,:A3,:r,:r,:A4,:r,:E4,:r,:E3,:r,:Cs5,:A5,:r,:Gs3,:r,:Gs5,:Fs5,:r,:Gs3,:r,:Es5,:B3,:A3,:Cs3,:r,:r,:Gs4,:E4,:Cs4,:r,:D5,:B4,:Gs4,:E4,:Cs4,:r,:A3,:r]
  b5=[6.0,6.0,6.0,6.0,6.0,6.0,6.0,1.5,1.5,3.0,0.5,1.0,0.5,1.0,1.5,1.5,1.0,0.5,0.5,0.5,0.5,1.5,1.0,0.5,6.0,6.0,6.0,6.0,6.0,1.5,1.5,3.0,1.0,0.5,0.5,0.5,0.5,1.5,1.0,0.5,1.0,0.5,1.0,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,0.5,0.5,1.5,1.5,3.0,1.5,1.5,1.5,1.5,6.0,1.5,1.5,1.5,1.5,1.5,1.5,3.0,6.0,1.0,0.5,1.0,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,0.5,0.5,1.5,1.5,3.0,1.5,1.5,1.5,1.5,6.0,1.5,1.5,1.5,1.5,1.5,1.5,3.0,6.0]
  in_thread do
    for i in 0..a5.length-1
      play a5[i],amp: 0.8,pan: -0.2
      sleep b5[i]
    end
  end
  
  a6=[:r,:r,:r,:r,:r,:r,:r,:r,:A4,:Gs4,:A4,:E4,:r,:E4,:r,:Cs4,:D4,:r,:r,:r,:r,:r,:r,:r,:r,:E4,:E4,:r,:B4,:Gs4,:A3,:A3,:B3,:B3,:Cs4,:Cs4,:r,:r,:r,:r,:r,:r,:B4,:Gs4,:A3,:A3,:B3,:B3,:Cs4,:Cs4,:r,:r,:r,:r,:r,:r]
  b6=[6.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0,1.0,0.5,1.0,0.5,1.0,0.5,1.0,0.5,1.5,1.5,3.0,6.0,6.0,6.0,6.0,6.0,6.0,1.5,1.5,3.0,1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5,6.0,6.0,6.0,6.0,6.0,6.0,1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5,6.0,6.0,6.0,6.0,6.0,6.0]
  in_thread do
    for i in 0..a6.length-1
      play a6[i],amp: 0.8,pan: -0.3
      sleep b6[i]
    end
  end
  
end#reverb
2 Likes

I liked the music. But it does sound like a midi file :wink:

Maybe if I have some time to fool around I’ll see what some randomization and effects can do with this.

Yes it will sound like that becuase once I have separated the partts they are converted by a script form midi to musixxml and from there to sonic-pi notation. All I have done so far is to add suitable pan settings to each part, and a bit of reverb. It is possible to go further but quite time consuming. The main thing I go for is just to get these ancient pieces playable so that you can hear what they sound like. For some such pieces I have added rits at the end, but it is quite difficult to do when sonic_pi commits a note to sounding for a given duration when it starts, so if you want to reduce the tempo while it is playing you have to have some means of calculating what the overall duration will be in advance. You can get some reasonable results by slowly channging the link tempo and working with that. Also you can use wrapped fx :level to adjust the volume of a part as it plays, but all these things take a lot of time compared to getting the original notes playable. I have done it for some of the pieces I have converted but not all.