Skip to content

Commit 52da94f

Browse files
authored
Updates for linux and RPi boot_server
Sets pulseaudio connectors as default operation mode. Can be overridden using QjackCtl to launch jack prior to booting Sonic Pi
1 parent a396163 commit 52da94f

File tree

1 file changed

+39
-14
lines changed

1 file changed

+39
-14
lines changed

app/server/ruby/lib/sonicpi/scsynthexternal.rb

Lines changed: 39 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -412,8 +412,10 @@ def boot_server_raspberry_pi
412412
jackCmd="jackd -T -ddummy -r48000 -p1024"
413413
jack_pid = spawn "exec #{jackCmd}"
414414
register_process jack_pid
415+
jackAlreadyStarted=true
415416
else
416417
puts "Jackd already running. Not starting another server..."
418+
jackAlreadyStarted=false
417419
end
418420

419421
block_size = 128
@@ -429,15 +431,21 @@ def boot_server_raspberry_pi
429431

430432
boot_and_wait(scsynth_path, scsynth_opts)
431433

432-
`pactl load-module module-jack-source connect=0 client_name=JACK_to_PulseAudio`
433-
`pactl load-module module-loopback source=jack_in`
434-
`pactl load-module module-jack-sink channels=2 connect=0 client_name=PulseAudio_to_JACK`
435-
`jack_connect PulseAudio_to_JACK:front-left SuperCollider:in_1`
436-
`jack_connect PulseAudio_to_JACK:front-right SuperCollider:in_2`
437-
`jack_connect SuperCollider:out_1 JACK_to_PulseAudio:front-left`
438-
`jack_connect SuperCollider:out_2 JACK_to_PulseAudio:front-right`
439-
440-
sleep 3
434+
if jackAlreadyStarted
435+
`pactl load-module module-jack-source channels=2 connect=0 client_name=JACK_to_PulseAudio`
436+
`pactl load-module module-loopback source=jack_in`
437+
`pactl load-module module-jack-sink channels=2 connect=0 client_name=PulseAudio_to_JACK`
438+
`jack_connect PulseAudio_to_JACK:front-left SuperCollider:in_1`
439+
`jack_connect PulseAudio_to_JACK:front-right SuperCollider:in_2`
440+
`jack_connect SuperCollider:out_1 JACK_to_PulseAudio:front-left`
441+
`jack_connect SuperCollider:out_2 JACK_to_PulseAudio:front-right`
442+
else
443+
`jack_connect SuperCollider:out_1 system:playback_1`
444+
`jack_connect SuperCollider:out_2 system:playback_2`
445+
`jack_connect SuperCollider:in_1 system:capture_1`
446+
`jack_connect SuperCollider:in_2 system:capture_2`
447+
end
448+
sleep 2
441449
end
442450

443451
def boot_server_linux
@@ -447,12 +455,18 @@ def boot_server_linux
447455
#Start Jack if not already running
448456
if `ps cax | grep jackd`.split(" ").first.nil?
449457
#Jack not running - start a new instance
458+
#First clear up any pulseaudio remains of module-loopback source=jack_in
459+
`pactl list short modules |grep source=jack_in| cut -f1 | xargs -L1 pactl unload-module`
460+
sleep 0.5
450461
puts "Jackd not running on system. Starting..."
451-
jackCmd = "jackd -R -T -p 32 -d alsa -n 3 -p 2048 -r 44100"
462+
jackCmd="jackd -T -ddummy -r48000 -p1024"
463+
#jackCmd = "jackd -R -T -p 32 -d alsa -n 3 -p 2048 -r 44100"
452464
jack_pid = spawn "exec #{jackCmd}"
453465
register_process jack_pid
466+
jackAlreadyStarted=true
454467
else
455468
puts "Jackd already running. Not starting another server..."
469+
jackAlreadyStarted=false
456470
end
457471

458472
local_scsynth_opts = {}
@@ -461,10 +475,21 @@ def boot_server_linux
461475

462476
boot_and_wait(scsynth_path, scsynth_opts)
463477

464-
`jack_connect SuperCollider:out_1 system:playback_1`
465-
`jack_connect SuperCollider:out_2 system:playback_2`
466-
`jack_connect SuperCollider:in_1 system:capture_1`
467-
`jack_connect SuperCollider:in_2 system:capture_2`
478+
if jackAlreadyStarted
479+
`pactl load-module module-jack-source channels=2 connect=0 client_name=JACK_to_PulseAudio`
480+
`pactl load-module module-loopback source=jack_in`
481+
`pactl load-module module-jack-sink channels=2 connect=0 client_name=PulseAudio_to_JACK`
482+
`jack_connect PulseAudio_to_JACK:front-left SuperCollider:in_1`
483+
`jack_connect PulseAudio_to_JACK:front-right SuperCollider:in_2`
484+
`jack_connect SuperCollider:out_1 JACK_to_PulseAudio:front-left`
485+
`jack_connect SuperCollider:out_2 JACK_to_PulseAudio:front-right`
486+
else
487+
`jack_connect SuperCollider:out_1 system:playback_1`
488+
`jack_connect SuperCollider:out_2 system:playback_2`
489+
`jack_connect SuperCollider:in_1 system:capture_1`
490+
`jack_connect SuperCollider:in_2 system:capture_2`
491+
end
492+
sleep 1
468493
end
469494
end
470495
end

0 commit comments

Comments
 (0)