Skip to content

Commit a76a922

Browse files
authored
Merge pull request #2701 from rbnpi/dev
Updates for linux and RPi boot_server
2 parents 992abba + 52da94f commit a76a922

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
@@ -407,8 +407,10 @@ def boot_server_raspberry_pi
407407
jackCmd="jackd -T -ddummy -r48000 -p1024"
408408
jack_pid = spawn "exec #{jackCmd}"
409409
register_process jack_pid
410+
jackAlreadyStarted=true
410411
else
411412
puts "Jackd already running. Not starting another server..."
413+
jackAlreadyStarted=false
412414
end
413415

414416
block_size = 128
@@ -424,15 +426,21 @@ def boot_server_raspberry_pi
424426

425427
boot_and_wait(scsynth_path, scsynth_opts)
426428

427-
`pactl load-module module-jack-source connect=0 client_name=JACK_to_PulseAudio`
428-
`pactl load-module module-loopback source=jack_in`
429-
`pactl load-module module-jack-sink channels=2 connect=0 client_name=PulseAudio_to_JACK`
430-
`jack_connect PulseAudio_to_JACK:front-left SuperCollider:in_1`
431-
`jack_connect PulseAudio_to_JACK:front-right SuperCollider:in_2`
432-
`jack_connect SuperCollider:out_1 JACK_to_PulseAudio:front-left`
433-
`jack_connect SuperCollider:out_2 JACK_to_PulseAudio:front-right`
434-
435-
sleep 3
429+
if jackAlreadyStarted
430+
`pactl load-module module-jack-source channels=2 connect=0 client_name=JACK_to_PulseAudio`
431+
`pactl load-module module-loopback source=jack_in`
432+
`pactl load-module module-jack-sink channels=2 connect=0 client_name=PulseAudio_to_JACK`
433+
`jack_connect PulseAudio_to_JACK:front-left SuperCollider:in_1`
434+
`jack_connect PulseAudio_to_JACK:front-right SuperCollider:in_2`
435+
`jack_connect SuperCollider:out_1 JACK_to_PulseAudio:front-left`
436+
`jack_connect SuperCollider:out_2 JACK_to_PulseAudio:front-right`
437+
else
438+
`jack_connect SuperCollider:out_1 system:playback_1`
439+
`jack_connect SuperCollider:out_2 system:playback_2`
440+
`jack_connect SuperCollider:in_1 system:capture_1`
441+
`jack_connect SuperCollider:in_2 system:capture_2`
442+
end
443+
sleep 2
436444
end
437445

438446
def boot_server_linux
@@ -442,12 +450,18 @@ def boot_server_linux
442450
#Start Jack if not already running
443451
if `ps cax | grep jackd`.split(" ").first.nil?
444452
#Jack not running - start a new instance
453+
#First clear up any pulseaudio remains of module-loopback source=jack_in
454+
`pactl list short modules |grep source=jack_in| cut -f1 | xargs -L1 pactl unload-module`
455+
sleep 0.5
445456
puts "Jackd not running on system. Starting..."
446-
jackCmd = "jackd -R -T -p 32 -d alsa -n 3 -p 2048 -r 44100"
457+
jackCmd="jackd -T -ddummy -r48000 -p1024"
458+
#jackCmd = "jackd -R -T -p 32 -d alsa -n 3 -p 2048 -r 44100"
447459
jack_pid = spawn "exec #{jackCmd}"
448460
register_process jack_pid
461+
jackAlreadyStarted=true
449462
else
450463
puts "Jackd already running. Not starting another server..."
464+
jackAlreadyStarted=false
451465
end
452466

453467
local_scsynth_opts = {}
@@ -456,10 +470,21 @@ def boot_server_linux
456470

457471
boot_and_wait(scsynth_path, scsynth_opts)
458472

459-
`jack_connect SuperCollider:out_1 system:playback_1`
460-
`jack_connect SuperCollider:out_2 system:playback_2`
461-
`jack_connect SuperCollider:in_1 system:capture_1`
462-
`jack_connect SuperCollider:in_2 system:capture_2`
473+
if jackAlreadyStarted
474+
`pactl load-module module-jack-source channels=2 connect=0 client_name=JACK_to_PulseAudio`
475+
`pactl load-module module-loopback source=jack_in`
476+
`pactl load-module module-jack-sink channels=2 connect=0 client_name=PulseAudio_to_JACK`
477+
`jack_connect PulseAudio_to_JACK:front-left SuperCollider:in_1`
478+
`jack_connect PulseAudio_to_JACK:front-right SuperCollider:in_2`
479+
`jack_connect SuperCollider:out_1 JACK_to_PulseAudio:front-left`
480+
`jack_connect SuperCollider:out_2 JACK_to_PulseAudio:front-right`
481+
else
482+
`jack_connect SuperCollider:out_1 system:playback_1`
483+
`jack_connect SuperCollider:out_2 system:playback_2`
484+
`jack_connect SuperCollider:in_1 system:capture_1`
485+
`jack_connect SuperCollider:in_2 system:capture_2`
486+
end
487+
sleep 1
463488
end
464489
end
465490
end

0 commit comments

Comments
 (0)