These days I experimented with the tiptoi pen from Ravensburger on OSX.
play command to test the generated content interactively that wants to play sounds.
In the Docker setup, the sound is played inside a Docker container without real sound hardware access.
Looking at StackOverflow PulseAudio seems to be an option.
Install PulseAudio on the Mac host
$ brew install pulseaudio … To have launchd start pulseaudio now and restart at login: brew services start pulseaudio
Either you follow the instructions from brew:
$ brew services start pulseaudio ==> Tapping homebrew/services … Tapped 1 command (44 files, 58.7KB). ==> Successfully started `pulseaudio` (label: homebrew.mxcl.pulseaudio)
Or you run the daemon on your own:
$ pulseaudio --load=module-native-protocol-tcp --exit-idle-time=-1 --daemon
Either way, you should check that the daemon is running on the host:
pulseaudio --check -v W:  caps.c: Normally all extra capabilities would be dropped now, but that's impossible because PulseAudio was built without capabilities support. I:  main.c: Daemon running as PID 11506
Play sounds inside a Docker container
An easy way to debug issues was to use the prepared
$ docker run -it -e PULSE_SERVER=docker.for.mac.localhost -v ~/.config/pulse:/home/pulseaudio/.config/pulse --entrypoint speaker-test --rm jess/pulseaudio -c 2 -l 1 -t wav
Our use case was to enhance another container - our
Since our base image supports
apt-get it was an easy task to adopt the necessary steps from the image mentioned above:
FROM haskell:8.4.3 … RUN apt-get update && apt-get install -y \ espeak \ vorbis-tools \ sox \ alsa-utils \ libasound2 \ libasound2-plugins \ pulseaudio \ pulseaudio-utils \ --no-install-recommends \ && rm -rf /var/lib/apt/lists/* ENV HOME /home/tttool RUN useradd --create-home --home-dir $HOME tttool \ && usermod -aG audio,pulse,pulse-access tttool \ && chown -R tttool:tttool $HOME …
This way we were able to
play the tiptoi product in simulation mode and use the Mac to render the sounds instead of the real tiptoi pen.
Play it safe or play it cool, it’s up to you!