Windows v3 BETA

Hey there lovely patrons,

who’s tried the new v3 BETA for Windows? What do you think? I’d love to hear your thoughts…

1 Like

Not yet. Been thinking about doing so, been a bit busier than expected and haven’t used my Lenovo in a while (my partner mostly uses that one).
From prior experience, it does sound like proper testing is needed on the Windows, especially with MIDI. In fact, haven’t found a proper way to get MIDI to work between apps, yet.

I’m hoping that MIDI in/out now works well on Windows - I’ve made quite a bit of progress with each beta release.

The issue you mention with MIDI not working between apps is (I think) an operating system limitation with Windows. I don’t believe that there’s a virtual MIDI driver on Windows like there is for macOS and Linux.

I’ve used SP beta 3 driving VMPK using loopmidi (free) to create the virtual midi ports.

1 Like

Super - great to hear that there’s a solution :slight_smile:

Indeed!
Did install LoopMIDI but have yet to make it work with my setup.

I did get the dreaded thread death message this morning with some code that I snagged from someone on Dropbox. I only had about 2 minutes before class so wasn’t able to investigate further. I’ll check it out later.

Does the Pi come with MIDI capability?

What kind of thread death did you encounter? Was it an out of time issue?

I’m still yet to see any of these on my varied windows vms and laptops so would be very grateful for a simple reliable way of replicating one :slight_smile:

OK, just ran the code again. No errors and it played fine.

?

1 Like

Sounds like it was an out of time thread death then - which can happen when the computer can’t keep up with what the code is asking to do. This could be due a number of reasons, including:

  • lots of instructions/FX with not much sleep
  • loading new samples (once a sample has been triggered once, it is cached and is ‘free’ to load)
  • OS-level energy preservation settings trying to be clever and switching the CPU off to reduce power consumption (typically fine for apps that aren’t timing sensitive)
  • Lots of activity from other processes/apps running on the system

Of course, all these are exacerbated when running on a low-powered machine too.

I’ve been running it since a few hours and it works fine. With four simultaneous live_loop it has a constant memory use of 300 MB, and everything sounds in sync so far. I’ve heard occasional glitches though, especially when running a reverb on hoover/blade synths.

I haven’t tried the MIDI features yet – not really sure how to. For example I’d like to send something to my DAW (FL Studio) and see what could happen when paired with Mixtikl, but I still have to think about how to set up the whole thing.

Here’s what happened. Just switched the synth to dsaw and bam:

What happens around line 194?

@lectronice the glitches you mention are likely to be SuperCollider struggling to keep up with the number of synths you’ve triggered. Reverb is a very expensive synth and if you’ve got it in a live_loop which is constantly creating new ones:

live_loop :foo do
  with_fx :reverb, room: 1 do
    play 70, release: 0.1
  end

  sleep 0.125
end

The above code will actually trigger 8 reverb synths a second, with each reverb lasting ~10 seconds - so after ~10 seconds of play, there will actually be ~80 reverb synths all trying to get a slice of CPU!

In the future, I’d love to find a nice visual way of communicating load like this to the user so it’s all a bit more transparent and understandable :slight_smile:

It starts to run the bass line.

#bass line
#1
play :c2
sleep 1
play :g2
sleep 0.5
play :c3
sleep 2
play :d2
sleep 0.5

line 194 is the first sleep 1

Is the whole file just play and sleep, no threads, loops, fx or iteration? What’s the shortest sleep time?

Here’s the code. Sorry for the length…

use_bpm 80
use_synth :pretty_bell

in_thread do #melody line
  #1st bar
  play :c4
  sleep 0.5
  play :e4
  sleep 0.5
  play :g4
  sleep 0.5
  play [:a3, :d4, :fs4], amp: 3, release: 1.5
  sleep 1.5
  play [:c4, :e4, :g4], amp: 3
  sleep 1
  
  #2
  play :c4
  sleep 0.5
  play :e4
  sleep 0.5
  play :g4
  sleep 0.5
  play [:a3, :d4, :fs4], amp: 3, release: 2.5
  sleep 2.5
  
  #3
  in_thread do
    play :a4
    sleep 1
    play :d5
    sleep 0.5
    play :b4, release: 2.5
    sleep 2.5
  end
  play :c4
  sleep 0.5
  play :e4
  sleep 0.5
  play :g4
  sleep 0.5
  play [:d4, :fs4], amp: 2, release: 1.5
  sleep 1.5
  play [:c4, :e4, :g4], amp: 3
  sleep 1
  
  #4
  in_thread do
    play :a4
    sleep 0.5
    play :e4, amp: 0.5
    sleep 0.5
    play :a4
    sleep 0.5
    play :fs4, release: 2.5
    sleep 2.5
  end
  play :c4
  sleep 0.5
  play :e4, amp: 0.5
  sleep 0.5
  play :g4
  sleep 0.5
  play [:d4, :a3], amp: 2, release: 1.5
  sleep 1.5
  play :d4
  sleep 0.5
  play :c4
  sleep 0.5
  
  2.times do
    2.times do
      #5+6
      play [:g4, :b4], amp: 2
      sleep 0.5
      play [:g4, :b4], amp: 2
      sleep 0.5
      play [:b4, :d5], amp: 2
      sleep 0.5
      play [:b4, :d5], amp: 2
      sleep 0.5
      play [:e5, :a5], amp: 2
      sleep 1
      play [:d5, :fs5], amp: 2
      sleep 0.5
      play [:e5, :g5], amp: 2, release: 4.5
      sleep 4.5
      
      #7+8
      play [:c5, :e5], amp: 2
      sleep 0.5
      play [:c5, :e5], amp: 2
      sleep 0.5
      play [:e5, :g5], amp: 2
      sleep 0.5
      play [:e5, :g5], amp: 2
      sleep 0.5
      play [:g5, :b5], amp: 2
      sleep 1
      play [:e5, :g5], amp: 2
      sleep 0.5
      play :d5, release: 1.5
      sleep 1.5
      play :c5
      sleep 0.5
      play [:a4, :c5], amp: 2, release: 2.5
      sleep 2.5
    end
    
    #9
    play [:b4, :g4], amp: 2
    sleep 0.5
    play [:a4, :fs4], amp: 2
    sleep 0.5
    play [:g4, :e4], amp: 2
    sleep 0.5
    play [:a4, :fs4], amp: 2
    sleep 0.5
    play [:b4, :g4], amp: 2
    sleep 1
    play [:e5, :b4], amp: 2
    sleep 1
    
    #10
    play [:g5, :d5], amp: 2
    sleep 1
    play [:b5, :g5], amp: 2
    sleep 1
    play :e6, release: 1.5
    sleep 1.5
    play [:b5, :g5], amp: 2
    sleep 0.5
    
    #11
    play [:g5, :e5], amp: 2
    sleep 0.5
    play [:fs5, :d5], amp: 2
    sleep 0.5
    play [:e5, :c5], amp: 2
    sleep 0.5
    play [:fs5, :d5], amp: 2
    sleep 0.5
    play [:g5, :e5], amp: 2
    sleep 0.5
    play [:fs5, :d5], amp: 2
    sleep 0.5
    play [:e5, :c5], amp: 2
    sleep 0.5
    play [:fs5, :d5], amp: 2
    sleep 0.5
    
    #12
    in_thread do
      play [:g5, :b4], amp: 2, release: 4
      sleep 4
    end
    play :g4
    sleep 0.5
    play :fs4
    sleep 0.5
    play :d4
    sleep 0.5
    play :a3
    sleep 0.5
    play :g3
    sleep 0.5
    play :fs3, release: 1.5
    sleep 1.5
    
    #13+14+15+16
    4.times do
      play [:g4, :d4, :b3], amp: 3
      sleep 1
      play [:g4, :d4, :b3], amp: 3
      sleep 0.5
      play [:g4, :fs4, :d4], amp: 3, release: 1.5
      sleep 1.5
      play [:g4, :e4, :c4], amp: 3
      sleep 1
    end
  end
  
  #17  play :g4
  play [:d4, :b3], amp: 2, release: 4
  sleep 4
end


#bass line
#1
play :c2
sleep 1
play :g2
sleep 0.5
play :c3
sleep 2
play :d2
sleep 0.5

#2
play :c2
sleep 1
play :g2
sleep 0.5
play :c3
sleep 2.5

#3
play :c2
sleep 1
play :g2
sleep 0.5
play :c3
sleep 2
play :d2
sleep 0.5

#4
play :c2
sleep 1
play :g2
sleep 0.5
play :c3
sleep 1.5
play :b2
sleep 0.5
play :a2
sleep 0.5

2.times do
  2.times do
    #5
    in_thread do
      sleep 0.5
      play :b3
      sleep 0.5
      play :d4
      sleep 0.5
      play :g4, release: 0.5
      sleep 1
      play :a3
      sleep 0.5
      play :d4
      sleep 0.5
      play :fs4
      sleep 0.5
    end
    play :g2, release: 2
    sleep 2
    play :fs2, release: 2
    sleep 2
    
    #6
    in_thread do
      sleep 0.5
      play :g3
      sleep 0.5
      play :b3
      sleep 0.5
      play :e4, release: 0.5
      sleep 1
      play :g3
      sleep 0.5
      play :b3
      sleep 0.5
      play :d4
      sleep 0.5
    end
    play :e2, release: 2
    sleep 2
    play :d2, release: 2
    sleep 2
    
    #7
    in_thread do
      sleep 0.5
      play :c4
      sleep 0.5
      play :e4
      sleep 0.5
      play :g4, release: 0.5
      sleep 1
      play :b3
      sleep 0.5
      play :d4
      sleep 0.5
      play :g4
      sleep 0.5
    end
    play :c2, release: 2
    sleep 2
    play :b1, release: 2
    sleep 2
    
    #8
    in_thread do
      sleep 0.5
      play :bf3
      sleep 0.5
      play :d4
      sleep 0.5
      play :f4, release: 0.5
      sleep 2.5
    end
    play :bf1, release: 2
    sleep 2
    play :a1
    sleep 1
    play :d2
    sleep 1
  end
  
  #9
  in_thread do
    sleep 1
    play [:b3, :g3], amp: 2
    sleep 2
    play [:b3, :g3], amp: 2
    sleep 1
  end
  play :e2, release: 2
  sleep 2
  play :ef2, release: 2
  sleep 2
  
  #10
  in_thread do
    sleep 1
    play [:b3, :g3], amp: 2
    sleep 2
    play [:b3, :g3], amp: 2
    sleep 1
  end
  play :d2, release: 2
  sleep 2
  play :df2, release: 2
  sleep 2
  
  #11
  in_thread do
    sleep 1
    play [:c4, :g3], amp: 2
    sleep 2
    play [:e4, :c4], amp: 2
    sleep 1
  end
  play :c2, release: 2
  sleep 2
  play :d2, release: 2
  sleep 2
  
  #12
  play :g2, release: 4
  sleep 4
  
  #13
  play :g1, release: 1.5
  sleep 1.5
  play :c2, release: 1.5
  sleep 1.5
  play :b2
  sleep 0.5
  play :c3
  sleep 0.5
  
  #14
  play :g1, release: 1.5
  sleep 1.5
  play :c2, release: 1.5
  sleep 1.5
  play :b2
  sleep 0.5
  play :d3
  sleep 0.5
  
  #15
  play :g1, release: 1.5
  sleep 1.5
  play :c2, release: 1.5
  sleep 1.5
  play :b2
  sleep 0.5
  play :c3
  sleep 0.5
  
  #16
  play :g1, release: 1.5
  sleep 1.5
  play :c2, release: 1.5
  sleep 1.5
  play :b2
  sleep 0.5
  play :d3
  sleep 0.5
  
end

#17
play :g1, release: 4

Looks like simple enough code - I’m very surprised it’s triggering a late error.

I tried it on my Win 7 VM a couple of times and unfortunately wasn’t able to reproduce the error (btw, it sounds lovely :slight_smile: )

Which OS are you running this on and how old is your machine?

I’m running it on Win10 with 16G of RAM. Lenovo laptop less than a year old.

Amount of RAM isn’t an issue here - Sonic Pi uses very little memory (unless you load in a lot of samples). The issue is CPU-related. Either you have a low-powered CPU (which seems very unlikely indeed) , Windows is doing funky things with the CPU (typically for power efficiency) or you have a lot of demanding processes running at the same time. My bet is on the second option.

Taking a look at this site: http://www.techrepublic.com/article/balance-efficiency-and-performance-with-windows-10-power-options/ there seems to be a few settings to play with. For example, do you have “Power saver” mode enabled?