@@ -412,8 +412,10 @@ def boot_server_raspberry_pi
412
412
jackCmd = "jackd -T -ddummy -r48000 -p1024"
413
413
jack_pid = spawn "exec #{ jackCmd } "
414
414
register_process jack_pid
415
+ jackAlreadyStarted = true
415
416
else
416
417
puts "Jackd already running. Not starting another server..."
418
+ jackAlreadyStarted = false
417
419
end
418
420
419
421
block_size = 128
@@ -429,15 +431,21 @@ def boot_server_raspberry_pi
429
431
430
432
boot_and_wait ( scsynth_path , scsynth_opts )
431
433
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
441
449
end
442
450
443
451
def boot_server_linux
@@ -447,12 +455,18 @@ def boot_server_linux
447
455
#Start Jack if not already running
448
456
if `ps cax | grep jackd` . split ( " " ) . first . nil?
449
457
#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
450
461
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"
452
464
jack_pid = spawn "exec #{ jackCmd } "
453
465
register_process jack_pid
466
+ jackAlreadyStarted = true
454
467
else
455
468
puts "Jackd already running. Not starting another server..."
469
+ jackAlreadyStarted = false
456
470
end
457
471
458
472
local_scsynth_opts = { }
@@ -461,10 +475,21 @@ def boot_server_linux
461
475
462
476
boot_and_wait ( scsynth_path , scsynth_opts )
463
477
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
468
493
end
469
494
end
470
495
end
0 commit comments