emlyn / sonic-pi-tool

🎻 Controlling Sonic Pi from the command line, in Python.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Windows support

emlyn opened this issue · comments

This almost certainly doesn't work on Windows - fix that.

Turns out it works better than expected :-)
If the full app is started normally, then sending commands (and checking status) worked out of the box.
After adding the Windows install path, start-server finds the installation and runs the server script, but the server does not respond to commands. Needs some more investigation.

Update: it looks like the server was stuck starting up. Pressing Ctrl-C allowed it to continue, albeit with a number of errors:

Found installation at: c:/Program Files/Sonic Pi/app
Running: ruby -E utf-8 c:/Program Files/Sonic Pi/app\server/ruby/bin/sonic-pi-server.rb
Sonic Pi server booting...
This is version 3.2.0 running on Ruby 2.7.0.
The time is 2020-05-18 00:04:54 +0100
Using primary protocol: udp
Detecting port numbers...
Listen port: 4557
  - OK
Scsynth port: 4556
  - OK
Scsynth send port: 4556
  - OK
OSC cues port: 4560
  - OK
Erlang port: 4561
  - OK
OSC MIDI out port: 4563
  - OK
OSC MIDI in port: 4564
  - OK
Websocket port: 4562
  - OK
Opening UDP Server to listen to GUI on port: 4557
Started [1192] [-] "c:\Program Files\Sonic Pi\app\server\native\scsynth.exe" -u 4556 -m 131072 -a 1024 -D 0 -R 0 -l 1 -i 16 -o 16 -U "c:/Program Files/Sonic Pi/app/server/native/plugins/" -b 4096 -B 127.0.0.1 [-] C:/Users/emcorrin/AppData/Local/Temp/sonic-pi-pids/1192
Started [11444] [-] "c:/Program Files/Sonic Pi/app/server/native/erlang/bin/erl.exe" -noshell -pz "c:/Program Files/Sonic Pi/app/server/erlang" -s pi_server start 4561 4560 4557 [-] C:/Users/emcorrin/AppData/Local/Temp/sonic-pi-pids/11444

*** Pressed Ctrl-C here ***

ERROR: Exception when starting osmid m2o
ERROR:
ERROR: ["c:/Program Files/Sonic Pi/app/server/ruby/lib/sonicpi/studio.rb:699:in `spawn'", "c:/Program Files/Sonic Pi/app/server/ruby/lib/sonicpi/studio.rb:699:in `reb_mut_spawn_midi_m2o'", "c:/Program Files/Sonic Pi/app/server/ruby/lib/sonicpi/studio.rb:168:in `block in init_or_reset_midi'", "c:/Program Files/Sonic Pi/app/server/ruby/lib/sonicpi/studio.rb:143:in `synchronize'", "c:/Program Files/Sonic Pi/app/server/ruby/lib/sonicpi/studio.rb:143:in `init_or_reset_midi'", "c:/Program Files/Sonic Pi/app/server/ruby/lib/sonicpi/studio.rb:61:in `initialize'", "c:/Program Files/Sonic Pi/app/server/ruby/lib/sonicpi/lang/sound.rb:89:in `new'", "c:/Program Files/Sonic Pi/app/server/ruby/lib/sonicpi/lang/sound.rb:89:in `block (2 levels) in included'", "c:/Program Files/Sonic Pi/app/server/ruby/lib/sonicpi/lang/ixi.rb:72:in `block (2 levels) in included'", "c:/Program Files/Sonic Pi/app/server/ruby/bin/sonic-pi-server.rb:302:in `new'", "c:/Program Files/Sonic Pi/app/server/ruby/bin/sonic-pi-server.rb:302:in `<main>'"]
ERROR: c:/Program Files/Sonic Pi/app/server/ruby/lib/sonicpi/studio.rb:699:in `spawn'
ERROR: c:/Program Files/Sonic Pi/app/server/ruby/lib/sonicpi/studio.rb:699:in `reb_mut_spawn_midi_m2o'
ERROR: c:/Program Files/Sonic Pi/app/server/ruby/lib/sonicpi/studio.rb:168:in `block in init_or_reset_midi'
ERROR: c:/Program Files/Sonic Pi/app/server/ruby/lib/sonicpi/studio.rb:143:in `synchronize'
Starting Server Runtime
ERROR: c:/Program Files/Sonic Pi/app/server/ruby/lib/sonicpi/studio.rb:143:in `init_or_reset_midi'
Booting server...
ERROR: c:/Program Files/Sonic Pi/app/server/ruby/lib/sonicpi/studio.rb:61:in `initialize'

ERROR: c:/Program Files/Sonic Pi/app/server/ruby/lib/sonicpi/lang/sound.rb:89:in `new'

ERROR: c:/Program Files/Sonic Pi/app/server/ruby/lib/sonicpi/lang/sound.rb:89:in `block (2 levels) in included'
Booting Sonic Pi
ERROR: c:/Program Files/Sonic Pi/app/server/ruby/lib/sonicpi/lang/ixi.rb:72:in `block (2 levels) in included'
----------------
ERROR: c:/Program Files/Sonic Pi/app/server/ruby/bin/sonic-pi-server.rb:302:in `new'

ERROR: c:/Program Files/Sonic Pi/app/server/ruby/bin/sonic-pi-server.rb:302:in `<main>'
Booting on Windows
Boot - Starting the SuperCollider server...
Boot - c:/Program Files/Sonic Pi/app/server/native/scsynth.exe -u 4556 -m 131072 -a 1024 -D 0 -R 0 -l 1 -i 16 -o 16 -U c:/Program Files/Sonic Pi/app/server/native/plugins/ -b 4096 -B 127.0.0.1
Boot - SuperCollider booted successfully.
Boot - Connecting to the SuperCollider server...
Boot - Sending /status to server: 127.0.0.1:4556
Boot - Receiving ack from scsynth
Boot - Server connection established
Studio - Initialised SuperCollider Audio Server v3.11.0
Studio - Resetting server
Studio - Studio - clearing scsynth
Studio - Studio - allocating audio bus
Studio - Studio - Create Base Synth Groups
Studio - Starting mixer
Studio - Starting scope
"c:/Program Files/Sonic Pi/app/server/native/erlang/bin/erl.exe" -noshell -pz "c:/Program Files/Sonic Pi/app/server/erlang" -s pi_server start 4561 4560 4557
Studio - Spawning o2m with:
    'c:/Program Files/Sonic Pi/app/server/native/osmid/o2m.exe' -L -b -i 4563 -O 4564 -m 6
Studio - Spawning m2o with:
    'c:/Program Files/Sonic Pi/app/server/native/osmid/m2o.exe' -t /midi:$n:$i:$c/$m -b -o 4564 -m 6 'Sonic Pi'
Studio - Error initialising MIDI inputs
Studio - Error initialising MIDI input
This is Sonic Pi v3.2.2 running on windows with ruby api 2.7.0.
Sonic Pi Server successfully booted.
ERROR:
ERROR: ===========
ERROR: Critical: UDP Server for port 0 had issues receiving from socket
ERROR: An existing connection was forcibly closed by the remote host. - recvfrom(2)
ERROR: ["c:/Program Files/Sonic Pi/app/server/ruby/lib/sonicpi/osc/udp_server.rb:76:in `recvfrom'", "c:/Program Files/Sonic Pi/app/server/ruby/lib/sonicpi/osc/udp_server.rb:76:in `block in start_listener'", "c:/Program Files/Sonic Pi/app/server/ruby/lib/sonicpi/osc/udp_server.rb:74:in `loop'", "c:/Program Files/Sonic Pi/app/server/ruby/lib/sonicpi/osc/udp_server.rb:74:in `start_listener'", "c:/Program Files/Sonic Pi/app/server/ruby/lib/sonicpi/osc/udp_server.rb:37:in `block in initialize'"]
ERROR: ===========
ERROR:
ERROR: ===========
ERROR: Critical: UDP Server for port 0 had issues receiving from socket
ERROR: An existing connection was forcibly closed by the remote host. - recvfrom(2)
ERROR: ["c:/Program Files/Sonic Pi/app/server/ruby/lib/sonicpi/osc/udp_server.rb:76:in `recvfrom'", "c:/Program Files/Sonic Pi/app/server/ruby/lib/sonicpi/osc/udp_server.rb:76:in `block in start_listener'", "c:/Program Files/Sonic Pi/app/server/ruby/lib/sonicpi/osc/udp_server.rb:74:in `loop'", "c:/Program Files/Sonic Pi/app/server/ruby/lib/sonicpi/osc/udp_server.rb:74:in `start_listener'", "c:/Program Files/Sonic Pi/app/server/ruby/lib/sonicpi/osc/udp_server.rb:37:in `block in initialize'"]
ERROR: ===========
ERROR:
ERROR: ===========
ERROR: Critical: UDP Server for port 0 had issues receiving from socket
ERROR: An existing connection was forcibly closed by the remote host. - recvfrom(2)
ERROR: ["c:/Program Files/Sonic Pi/app/server/ruby/lib/sonicpi/osc/udp_server.rb:76:in `recvfrom'", "c:/Program Files/Sonic Pi/app/server/ruby/lib/sonicpi/osc/udp_server.rb:76:in `block in start_listener'", "c:/Program Files/Sonic Pi/app/server/ruby/lib/sonicpi/osc/udp_server.rb:74:in `loop'", "c:/Program Files/Sonic Pi/app/server/ruby/lib/sonicpi/osc/udp_server.rb:74:in `start_listener'", "c:/Program Files/Sonic Pi/app/server/ruby/lib/sonicpi/osc/udp_server.rb:37:in `block in initialize'"]
ERROR: ===========