@@ -407,8 +407,10 @@ def boot_server_raspberry_pi
407
407
jackCmd = "jackd -T -ddummy -r48000 -p1024"
408
408
jack_pid = spawn "exec #{ jackCmd } "
409
409
register_process jack_pid
410
+ jackAlreadyStarted = true
410
411
else
411
412
puts "Jackd already running. Not starting another server..."
413
+ jackAlreadyStarted = false
412
414
end
413
415
414
416
block_size = 128
@@ -424,15 +426,21 @@ def boot_server_raspberry_pi
424
426
425
427
boot_and_wait ( scsynth_path , scsynth_opts )
426
428
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
436
444
end
437
445
438
446
def boot_server_linux
@@ -442,12 +450,18 @@ def boot_server_linux
442
450
#Start Jack if not already running
443
451
if `ps cax | grep jackd` . split ( " " ) . first . nil?
444
452
#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
445
456
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"
447
459
jack_pid = spawn "exec #{ jackCmd } "
448
460
register_process jack_pid
461
+ jackAlreadyStarted = true
449
462
else
450
463
puts "Jackd already running. Not starting another server..."
464
+ jackAlreadyStarted = false
451
465
end
452
466
453
467
local_scsynth_opts = { }
@@ -456,10 +470,21 @@ def boot_server_linux
456
470
457
471
boot_and_wait ( scsynth_path , scsynth_opts )
458
472
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
463
488
end
464
489
end
465
490
end
0 commit comments