SoundScapeRenderer / ssr

Main source code repository for the SoundScape Renderer
http://spatialaudio.net/ssr/
GNU General Public License v3.0
134 stars 53 forks source link

SSR on Apple M1 #254

Closed differencetones closed 3 years ago

differencetones commented 3 years ago

Hello, not sure if this is related to the new Apple M1 or if there is something else missing, but could someone shed some light on what might be wrong? Am I missing a dependency? Thanks!

Last login: Wed May 5 14:28:16 on ttys001 export ECASOUND="/Applications/SoundScapeRenderer-0.5.0/SoundScapeRenderer.app/Contents/MacOS/ecasound" ; cd "/Applications/SoundScapeRenderer-0.5.0/SoundScapeRenderer.app/Contents/MacOS/../../.." ; "/Applications/SoundScapeRenderer-0.5.0/SoundScapeRenderer.app/Contents/MacOS/ssr" --wfs && (echo SSR quit normally with exit code $?) || (echo SSR encountered an error and had to quit. See above. Exit code: $?) satan@Ulfs-Mac-mini ~ % export ECASOUND="/Applications/SoundScapeRenderer-0.5.0/SoundScapeRenderer.app/Contents/MacOS/ecasound" ; cd "/Applications/SoundScapeRenderer-0.5.0/SoundScapeRenderer.app/Contents/MacOS/../../.." ; "/Applications/SoundScapeRenderer-0.5.0/SoundScapeRenderer.app/Contents/MacOS/ssr" --wfs && (echo SSR quit normally with exit code $?) || (echo SSR encountered an error and had to quit. See above. Exit code: $?) dyld: Library not loaded: /Library/Frameworks/Jackmp.framework/Versions/A/Jackmp Referenced from: /Applications/SoundScapeRenderer-0.5.0/SoundScapeRenderer.app/Contents/MacOS/ssr-wfs Reason: image not found /Applications/SoundScapeRenderer-0.5.0/SoundScapeRenderer.app/Contents/MacOS/ssr: line 48: 16231 Abort trap: 6 $SSR_EXECUTABLE "${OPTIONS[@]}" SSR encountered an error and had to quit. See above. Exit code: 134 satan@Ulfs-Mac-mini SoundScapeRenderer-0.5.0 %

JensAhrens commented 3 years ago

The critical part seems to be Library not loaded: /Library/Frameworks/Jackmp.framework/Versions/A/Jackmp.

It sounds like it's related to your JACK installation. I remember that some users had trouble with the bundle if they didn't install JACK via Homebrew (brew install jack).

How did you install it?

differencetones commented 3 years ago

Ah, yes, I installed it via the Intel 64bit installer on jackaudio.org. I'll check that again when I'm back in the studio. I'll report back tomorrow. Thanks!

differencetones commented 3 years ago

Jack is installed via brew, and running with no errors. When starting up SSR_0.5.0 the terminal still returns:

export ECASOUND="/Applications/SoundScapeRenderer-0.5.0/SoundScapeRenderer.app/Contents/MacOS/ecasound" ; cd "/Applications/SoundScapeRenderer-0.5.0/SoundScapeRenderer.app/Contents/MacOS/../../.." ; "/Applications/SoundScapeRenderer-0.5.0/SoundScapeRenderer.app/Contents/MacOS/ssr" --wfs && (echo SSR quit normally with exit code $?) || (echo SSR encountered an error and had to quit. See above. Exit code: $?) satan@Ulfs-Mac-mini ~ % export ECASOUND="/Applications/SoundScapeRenderer-0.5.0/SoundScapeRenderer.app/Contents/MacOS/ecasound" ; cd "/Applications/SoundScapeRenderer-0.5.0/SoundScapeRenderer.app/Contents/MacOS/../../.." ; "/Applications/SoundScapeRenderer-0.5.0/SoundScapeRenderer.app/Contents/MacOS/ssr" --wfs && (echo SSR quit normally with exit code $?) || (echo SSR encountered an error and had to quit. See above. Exit code: $?) dyld: Library not loaded: /Library/Frameworks/Jackmp.framework/Versions/A/Jackmp Referenced from: /Applications/SoundScapeRenderer-0.5.0/SoundScapeRenderer.app/Contents/MacOS/ssr-wfs Reason: image not found /Applications/SoundScapeRenderer-0.5.0/SoundScapeRenderer.app/Contents/MacOS/ssr: line 48: 21958 Abort trap: 6 $SSR_EXECUTABLE "${OPTIONS[@]}" SSR encountered an error and had to quit. See above. Exit code: 134

When running SSR_0.5.0 on OSX 10.14. and using JackPilot there is no problem. Can't quite seem to understand what might be missing.

differencetones commented 3 years ago

After doing a clean install of jack on OSX 10.14 and 11 (two different machines), letting jack run in the background, and configure via QjackCtl, both machines are throwing up the same error, about Jackmp. However I cannot locate what this is. Any suggestions?

HaHeho commented 3 years ago

After doing a clean install of jack on OSX 10.14 and 11 (two different machines), letting jack run in the background, and configure via QjackCtl, both machines are throwing up the same error, about Jackmp. However I cannot locate what this is. Any suggestions?

What version of Jack did you end up with on either system?

According to https://github.com/jackaudio/jack2/issues/685 Jack should generally work on Apple Silicon.

Maybe try and install a build from https://github.com/jackaudio/jack2-releases/releases instead? In particular you should not use the Intel version when you're running on the M1, I suppose.

differencetones commented 3 years ago

Hi! I have jackdmp 1.9.18 on both, installed freshly from the latest brew cask, along with the latest QJackCtl 0.9.2 (universal installer). Is there something that isn't linked? SSR is installed from the application bundle, perhaps better to build from source.

HaHeho commented 3 years ago

Yeah, building yourself might be worth a try (it works on Intel for sure). I have not tried the app bundle in a while. It was build quite some time ago with the old JackOSX framework. And probably nobody has ever tried it on the M1.

I think the current SSR app bundle and the new Jack binaries are incompatible for that exact reason you encountered. A new SSR release should hopefully be able to address that where compatibility to the old JackOSX installer could be dropped (there is really no reason to still use it).

differencetones commented 3 years ago

After installing and linking all dependencies and running ./configure returns

`checking for sndfile >= 1.0... no configure: error: Package requirements (sndfile >= 1.0) were not met:

No package 'sndfile' found`

libsndfile 1.0.13 is installed and linked. Is some additional configuring of libsndfile needed?

mgeier commented 3 years ago

In such a situation, the file config.log normally gives more information.

If you don't find the relevant error message, please post the file here.

differencetones commented 3 years ago

Here 'tis!

config.log

mgeier commented 3 years ago

This seems to be the relevant part:

configure:16997: checking for sndfile >= 1.0
configure:17004: $PKG_CONFIG --exists --print-errors "sndfile >= 1.0"
Package sndfile was not found in the pkg-config search path.
Perhaps you should add the directory containing `sndfile.pc'
to the PKG_CONFIG_PATH environment variable
No package 'sndfile' found
configure:17007: $? = 1
configure:17021: $PKG_CONFIG --exists --print-errors "sndfile >= 1.0"
Package sndfile was not found in the pkg-config search path.
Perhaps you should add the directory containing `sndfile.pc'
to the PKG_CONFIG_PATH environment variable
No package 'sndfile' found

So I guess you have installed pkg-config with brew?

BTW, here's a list of packages:

https://github.com/SoundScapeRenderer/ssr/blob/b7db1df3587f0e6f7654f6eedf7ea09f2a80281f/.github/workflows/main.yml#L99-L117

If you have pkg-config, you can try to set PKG_CONFIG_PATH, but if you installed it with brew, this should normally not be necessary ...

You could check if it works on the terminal:

pkg-config --libs "sndfile >= 1.0"

If pkg-config doesn't work, you can alternatively try to define SNDFILE_CFLAGS and SNDFILE_LIBS.

differencetones commented 3 years ago

pkg-config was indeed installed with brew. Running pkg-config --libs "sndfile >= 1.0" returns

Package sndfile was not found in the pkg-config search path. Perhaps you should add the directory containingsndfile.pc' to the PKG_CONFIG_PATH environment variable No package 'sndfile' found`

I also see that pkg-config searches in a different directory for packages. Hence the problems, I assume.

mgeier commented 3 years ago

Did you install libsndfile also with brew?

I would expect it to be found by default.

But if it's not, you can use

./configure PKG_CONFIG_PATH=/wherever/your/pc/files/are
differencetones commented 3 years ago

It seems that libsndfile is located at /usr/local/ whilst pkg-config is located in /opt/local/ which is a little confusing.

mgeier commented 3 years ago

That's indeed strange (are you sure you installed everything with brew?), but you can probably use PKG_CONFIG_PATH=/usr/local/lib/pkgconfig.

differencetones commented 3 years ago

Yes! Progress! It turned out that libogg libvorbis and flac were not linked, but now it progresses. However, it now throws up configure: error: gui (graphical user interface (using Qt)) not available! Use --disable-gui to deactivate. Just updated Qt to 6.1.0. Everything is installed with brew.

mgeier commented 3 years ago

Again, the details will be in config.log.

But I can already tell you that it doesn't currently work with Qt6. You'll have to use Qt5 (or show us how to support Qt6).

Here's a setup that works (at least on CI):

https://github.com/SoundScapeRenderer/ssr/blob/b7db1df3587f0e6f7654f6eedf7ea09f2a80281f/.github/workflows/main.yml#L99-L117

differencetones commented 3 years ago

Here it is again. Both qt5 and qt6 are installed and I have also run export QT_SELECT=qt5 as per the manual.

config.log

mgeier commented 3 years ago

Again, pkg-config cannot find it:

configure:18146: checking for Qt5Core >= 5.0.0 Qt5Gui >= 5.0.0 Qt5OpenGL >= 5.0.0

configure:18155: $PKG_CONFIG --exists --print-errors "Qt5Core >= 5.0.0 Qt5Gui >= 5.0.0 Qt5OpenGL >= 5.0.0
    "
Package Qt5Core was not found in the pkg-config search path.
Perhaps you should add the directory containing `Qt5Core.pc'
to the PKG_CONFIG_PATH environment variable
No package 'Qt5Core' found
Package Qt5Gui was not found in the pkg-config search path.
Perhaps you should add the directory containing `Qt5Gui.pc'
to the PKG_CONFIG_PATH environment variable
No package 'Qt5Gui' found
Package Qt5OpenGL was not found in the pkg-config search path.
Perhaps you should add the directory containing `Qt5OpenGL.pc'
to the PKG_CONFIG_PATH environment variable
No package 'Qt5OpenGL' found
configure:18159: $? = 1
configure:18175: $PKG_CONFIG --exists --print-errors "Qt5Core >= 5.0.0 Qt5Gui >= 5.0.0 Qt5OpenGL >= 5.0.0
    "
Package Qt5Core was not found in the pkg-config search path.
Perhaps you should add the directory containing `Qt5Core.pc'
to the PKG_CONFIG_PATH environment variable
No package 'Qt5Core' found
Package Qt5Gui was not found in the pkg-config search path.
Perhaps you should add the directory containing `Qt5Gui.pc'
to the PKG_CONFIG_PATH environment variable
No package 'Qt5Gui' found
Package Qt5OpenGL was not found in the pkg-config search path.
Perhaps you should add the directory containing `Qt5OpenGL.pc'
to the PKG_CONFIG_PATH environment variable
No package 'Qt5OpenGL' found

Did you also try brew link qt@5 --force as per my suggestion above?

differencetones commented 3 years ago

Ah, no, running brew link --overwrite qt@5 worked. It's compiling!

differencetones commented 3 years ago

It compiled into SSR-0.5.0-181-gb7db1df, and on the first test-spin it returns Satan$ export ECASOUND="/Applications/SoundScapeRenderer-0.5.0-181-gb7db1df/SoundScapeRenderer.app/Contents/MacOS/ecasound" ; cd "/Applications/SoundScapeRenderer-0.5.0-181-gb7db1df/SoundScapeRenderer.app/Contents/MacOS/../../.." ; "/Applications/SoundScapeRenderer-0.5.0-181-gb7db1df/SoundScapeRenderer.app/Contents/MacOS/ssr" --wfs && (echo SSR quit normally with exit code $?) || (echo SSR encountered an error and had to quit. See above. Exit code: $?) -bash: /Applications/SoundScapeRenderer-0.5.0-181-gb7db1df/SoundScapeRenderer.app/Contents/MacOS/ssr: No such file or directory SSR encountered an error and had to quit. See above. Exit code: 127

Inspecting Package contents ecasound is found in /Contents/MacOS/.

mgeier commented 3 years ago

Did you build your own App Bundle?

How exactly did you launch it?

If you build from source, you don't actually need that (but you can of course do it if you want).

You can simply do a make install and then start it from the terminal with ssr-wfs (or whatever renderer you want to use).

differencetones commented 3 years ago

The compiler was stored in ~/ssr/MacOSX-App-bundle. Launched Jack first, then SSR. Recompiled with make and make install and it launches from CLI. All is well. I wanted the app as other people would be using this. But not to worry. Thank you so much for your patient help!

JensAhrens commented 3 years ago

A quick comment: We're currently wrapping up the preparation for a new release of SSR. It'll come with a new bundle that will hopefully avoid these complications. We'll keep you updated.

differencetones commented 3 years ago

Good news! The complications were on my end, so thanks to your team for helping me out! I'm conducting some perceptual experiments in the autumn semester, so a new release will be welcome!

HaHeho commented 3 years ago

Good news! The complications were on my end, so thanks to your team for helping me out! I'm conducting some perceptual experiments in the autumn semester, so a new release will be welcome!

Cool. I personally wasn't aware that there is research in spatial audio currently going on in Oslo. Since were not too far, looking forward to maybe come for a visit when the times allow to do so again. :)

differencetones commented 3 years ago

That would be great! I'll keep you posted for when these experiments might happen and see if it could be combined with a visit!