Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Supercolliderjs in Docker #109

Open
VictorKolb opened this issue Aug 18, 2021 · 7 comments
Open

Supercolliderjs in Docker #109

VictorKolb opened this issue Aug 18, 2021 · 7 comments

Comments

@VictorKolb
Copy link

Hello!
I'm trying run Supercolliderjs in Docker but got some error:

supercollider_1  | npm run start
supercollider_1  | 
supercollider_1  | > supercollider-docker@1.0.0 start /
supercollider_1  | > node src/index.js
supercollider_1  | 
supercollider_1  | stderr : *** ERROR: open directory failed '/root/.local/share/SuperCollider/synthdefs'
supercollider_1  | stderr : {
supercollider_1  |           "type": "Buffer",
supercollider_1  |           "data": [
supercollider_1  |             67,
supercollider_1  |             97,
supercollider_1  |             110,
supercollider_1  |             110,
supercollider_1  |             111,
supercollider_1  |             116,
supercollider_1  |             32,
supercollider_1  |             99,
supercollider_1  |             111,
supercollider_1  |             110,
supercollider_1  |             110,
supercollider_1  |             101,
supercollider_1  |             99,
supercollider_1  |             116,
supercollider_1  |             32,
supercollider_1  |             116,
supercollider_1  |             111,
supercollider_1  |             32,
supercollider_1  |             115,
supercollider_1  |             101,
supercollider_1  |             114,
supercollider_1  |             118,
supercollider_1  |             101,
supercollider_1  |             114,
supercollider_1  |             32,
supercollider_1  |             115,
supercollider_1  |             111,
supercollider_1  |             99,
supercollider_1  |             107,
supercollider_1  |             101,
supercollider_1  |             116,
supercollider_1  |             32,
supercollider_1  |             101,
supercollider_1  |             114,
supercollider_1  |             114,
supercollider_1  |             32,
supercollider_1  |             61,
supercollider_1  |             32,
supercollider_1  |             78,
supercollider_1  |             111,
supercollider_1  |             32,
supercollider_1  |             115,
supercollider_1  |             117,
supercollider_1  |             99,
supercollider_1  |             104,
supercollider_1  |             32,
supercollider_1  |             102,
supercollider_1  |             105,
supercollider_1  |             108,
supercollider_1  |             101,
supercollider_1  |             32,
supercollider_1  |             111,
supercollider_1  |             114,
supercollider_1  |             32,
supercollider_1  |             100,
supercollider_1  |             105,
supercollider_1  |             114,
supercollider_1  |             101,
supercollider_1  |             99,
supercollider_1  |             116,
supercollider_1  |             111,
supercollider_1  |             114,
supercollider_1  |             121,
supercollider_1  |             10,
supercollider_1  |             67,
supercollider_1  |             97,
supercollider_1  |             110,
supercollider_1  |             110,
supercollider_1  |             111,
supercollider_1  |             116,
supercollider_1  |             32,
supercollider_1  |             99,
supercollider_1  |             111,
supercollider_1  |             110,
supercollider_1  |             110,
supercollider_1  |             101,
supercollider_1  |             99,
supercollider_1  |             116,
supercollider_1  |             32,
supercollider_1  |             116,
supercollider_1  |             111,
supercollider_1  |             32,
supercollider_1  |             115,
supercollider_1  |             101,
supercollider_1  |             114,
supercollider_1  |             118,
supercollider_1  |             101,
supercollider_1  |             114,
supercollider_1  |             32,
supercollider_1  |             114,
supercollider_1  |             101,
supercollider_1  |             113,
supercollider_1  |             117,
supercollider_1  |             101,
supercollider_1  |             115,
supercollider_1  |             116,
supercollider_1  |             32,
supercollider_1  |             99,
supercollider_1  |             104,
supercollider_1  |             97,
supercollider_1  |             110,
supercollider_1  |             110,
supercollider_1  |             101,
supercollider_1  |             108,
supercollider_1  |             10
supercollider_1  |           ]
supercollider_1  |         }
supercollider_1  | Error: Server failed to start in 3000ms
supercollider_1  |     at Timeout._onTimeout (/node_modules/@supercollider/server/lib/server.js:274:28)
supercollider_1  |     at listOnTimeout (internal/timers.js:557:17)
supercollider_1  |     at processTimers (internal/timers.js:500:7)
supercollider_1  | error  : Server exited. Exit code: null signal: SIGABRT

There is repo with reproduction: https://github.com/VictorKolb/supercollider-docker

@crucialfelix
Copy link
Owner

I'm not sure from looking at the docker file, but I'm guessing it has to do with user permissions.

Try USER ?

@VictorKolb
Copy link
Author

Thanks Chris!
I tried to use USER root.
Now my dockerfile looks like:

FROM ubuntu:18.04

USER root

RUN apt-get update && \
	apt-get install -y software-properties-common gnupg curl && \
    curl -sL https://deb.nodesource.com/setup_14.x | bash && \
	apt-key adv --keyserver keyserver.ubuntu.com --recv-keys FABAEF95 && \
	add-apt-repository -y ppa:supercollider/ppa && \
	add-apt-repository -y multiverse && \
	apt-get update && \
    apt-get install -y nodejs supercollider make && \
    apt-get clean


COPY ./package.json package.json
COPY ./package-lock.json package-lock.json

RUN npm i

COPY ./src src

COPY ./Makefile Makefile

CMD ["make", "start"]

Error isn't resolved. Maybe I misunderstood something?

@VictorKolb
Copy link
Author

Ok, I have moved a little forward. Now I get the error about display when sclang is starting:

Loading config: /.supercollider.yaml
debug  : Start process: /usr/bin/scsynth -u 57110
debug  : {
          "execPath": "/usr/bin/scsynth",
          "args": [
            "-u",
            "57110"
          ],
          "options": {
            "cwd": "/usr/bin",
            "detached": false
          }
        }
debug  : pid: 31
stderr : *** ERROR: open directory failed '/root/.local/share/SuperCollider/synthdefs'
stderr : {
          "type": "Buffer",
          "data": [
            67,
            97,
            110,
            110,
            111,
            116,
            32,
            108,
            111,
            99,
            107,
            32,
            100,
            111,
            119,
            110,
            32,
            56,
            50,
            50,
            56,
            55,
            49,
            51,
            54,
            32,
            98,
            121,
            116,
            101,
            32,
            109,
            101,
            109,
            111,
            114,
            121,
            32,
            97,
            114,
            101,
            97,
            32,
            40,
            67,
            97,
            110,
            110,
            111,
            116,
            32,
            97,
            108,
            108,
            111,
            99,
            97,
            116,
            101,
            32,
            109,
            101,
            109,
            111,
            114,
            121,
            41,
            10
          ]
        }
sendosc: {
          "oscType": "message",
          "address": "/notify",
          "args": [
            1,
            0
          ]
        }
debug  : udp is listening
rcvosc : [
          "/done",
          "/notify",
          0,
          64
        ]
Loading config: /.supercollider.yaml
debug  : {
          "sclang": "/usr/bin/sclang",
          "scsynth": "/usr/bin/scsynth",
          "debug": true,
          "echo": true,
          "stdin": true,
          "failIfSclangConfIsMissing": false,
          "conf": {
            "includePaths": [],
            "excludePaths": [],
            "postInlineWarnings": false
          },
          "sclang_conf": "/usr/local/share/SuperCollider/sclang_conf.yaml"
        }
debug  : {
          "errno": -2,
          "syscall": "open",
          "code": "ENOENT",
          "path": "/usr/local/share/SuperCollider/sclang_conf.yaml"
        }
debug  : compiling class library...
stderr : QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root'
stderr : qt.qpa.screen: QXcbConnection: Could not connect to display 
        Could not connect to any X display.
        terminate called without an active exception
debug  : exit nullSIGABRT
debug  : close nullSIGABRT
error  : Timeout waiting for sclang to boot pid:44
(node:24) UnhandledPromiseRejectionWarning: CompileError

@VictorKolb
Copy link
Author

Ok, my journey is continuing.

Now supercolliderjs isn't connecting to Jack.
I notice, when I start supercollider directly like export QT_QPA_PLATFORM=offscreen &&sclang /etc/radio.sc, I can see something like:

JackDriver: connected  system:capture_1 to SuperCollider:in_1
JackDriver: connected  system:capture_2 to SuperCollider:in_2
JackDriver: connected  SuperCollider:out_1 to darkice:left
JackDriver: connected  SuperCollider:out_2 to darkice:right

But when I try export QT_QPA_PLATFORM=offscreen && node index.js this is info didn't appear

@VictorKolb
Copy link
Author

Update:
If I add s.boot to file /root/.config/SuperCollider/startup.scd supercollider trying booting server

booting server 'localhost' on address: 127.0.0.1:57110

And JackDriver start to connect. But port already used by previous server, started with supercoliderjs, and connect is interrupted.

debug  : JackDriver: client name is 'SuperCollider-01' <--- As you can see, name is SuperCollider-01 instead SuperCollider
debug  : SC_AudioDriver: sample rate = 44100.000000, driver's block size = 1024
debug  : JackDriver: connected  system:capture_1 to SuperCollider-01:in_1
debug  : JackDriver: connected  system:capture_2 to SuperCollider-01:in_2
debug  : JackDriver: connected  SuperCollider-01:out_1 to darkice:left
        JackDriver: connected  SuperCollider-01:out_2 to darkice:right
debug  : Exception in World_OpenUDP: bind: Address already in use

@crucialfelix do you know a way to give a signal to JackDriver about started scsynth?

@VictorKolb
Copy link
Author

Ok, all done.
If add this to my .supercollider.yaml all works!

env:
  SC_JACK_DEFAULT_OUTPUTS: "darkice:left,darkice:right"

I'll create PR to add docker example.

@crucialfelix
Copy link
Owner

Hi. You've got a working Dockerfile with ... icecast? How is it communicating with the world?

We should get this on hub.docker.com

I haven't had anytime to work with supercollider.js unfortunately (full time job)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants