Author Topic: Built on debian wheezy amd64 no audio port  (Read 3938 times)

lorenzosu

  • Newbie
  • *
  • Posts: 6
    • View Profile
Built on debian wheezy amd64 no audio port
« on: March 24, 2011, 21:07:59 »
Hi,

I'm on debian wheezy amd64. As there was no amd64 build and I couldn't get the 1.7.1cc-1_amd64 deb to work, I downloaded the source and compiled after figuring out the dependencies.
Build goes well without any evident error and I can successfully load sonic-visualiser and load a file, but when I open a file or a session I get a message: "No audio available - Could not open an audio device for playback. - Automatic audio device detection failed. Audio playback will not be available during this session. to play" and thus can't playback.
The message on the stdout is simply WARNING: AudioTargetFactory::createCallbackTarget: No suitable targets available.

I did spot these in the build process which are probably causing the trouble:
AudioCoreAudioTarget.h:0: Warning: No relevant classes found. No output generated.
AudioJACKTarget.h:0: Warning: No relevant classes found. No output generated.
AudioPortAudioTarget.h:0: Warning: No relevant classes found. No output generated.
AudioPulseAudioTarget.h:0: Warning: No relevant classes found. No output generated.

Otherwise I'm pretty clueless on what else to try,.. Any help would be appreciated.
Thanks,
Lorenzo.

cannam

  • Administrator
  • Full Member
  • *****
  • Posts: 229
    • View Profile
Re: Built on debian wheezy amd64 no audio port
« Reply #1 on: April 14, 2011, 14:53:58 »
Hi -- apologies to you and to everyone for my inattention to this forum in recent weeks.

I did spot these in the build process which are probably causing the trouble:
AudioCoreAudioTarget.h:0: Warning: No relevant classes found. No output generated.
AudioJACKTarget.h:0: Warning: No relevant classes found. No output generated.
AudioPortAudioTarget.h:0: Warning: No relevant classes found. No output generated.
AudioPulseAudioTarget.h:0: Warning: No relevant classes found. No output generated.

Yes, you need to have at least one playback target!  JACK and Pulse are the most likely candidates on Linux.  With the 1.7 release, this is probably a question of adjusting the defines in the prf/sv.prf file (it does use pkg-config to pick up what libraries are available, but presumably this has failed).

The recently-released 1.8 has a different build system, using autoconf for these things, which may be worth a try.  So far there is only a 32-bit Linux binary available for that, but hopefully I should be able to make a 64-bit one as well shortly.


Chris

lorenzosu

  • Newbie
  • *
  • Posts: 6
    • View Profile
Re: Built on debian wheezy amd64 no audio port
« Reply #2 on: April 15, 2011, 08:10:02 »
Hi Chris,
Thanks for taking time to look into this.

Yes, you need to have at least one playback target!  JACK and Pulse are the most likely candidates on Linux.  With the 1.7 release, this is probably a question of adjusting the defines in the prf/sv.prf file (it does use pkg-config to pick up what libraries are available, but presumably this has failed).
Ok I'm not very familiar with that, but as a workaround to get at least JACK output working I dug into it a bit and thought the problem might be jack 2, so I managed to compile by:
- installing jack 1 and libs
- compile SV
- re-install jack 2

The caveat is that in this way removing jack 1 pulls all packages (e.g. ardour and many other applications) which are marked to depend on it. So it is a good idea to take a note of the removed packages.
Interestingly sonic visualiser continues to work perfectly with jack 2.

The recently-released 1.8 has a different build system, using autoconf for these things, which may be worth a try.  So far there is only a 32-bit Linux binary available for that, but hopefully I should be able to make a 64-bit one as well shortly.

Autoconf seems interesting and should make it easier to dig into the dependencies. As soon as I have the time I'll try to compile it and maybe give my feedback.

Lorenzo

« Last Edit: April 15, 2011, 16:27:02 by lorenzosu »

lorenzosu

  • Newbie
  • *
  • Posts: 6
    • View Profile
Re: Built on debian wheezy amd64 no audio port
« Reply #3 on: April 15, 2011, 16:39:09 »
Hi again,

So I tried with 1.8

I installed the same packages recommended for ubuntu in 1.7.2 (again jack2 was removed).

configure picked up jack but not portaudio. It seems portaudio19-dev is required (not libportaudio-dev)

make starts but I got an error:

/usr/bin/ld: ../svcore/libsvcore.a(Init.o): undefined reference to symbol 'XGetErrorText'
/usr/bin/ld: note: 'XGetErrorText' is defined in DSO //usr/lib64/libX11.so.6 so try adding it to the linker command line
//usr/lib64/libX11.so.6: could not read symbols: Invalid operation


This seemed to be solved by adding manually -lX11 to the Makefile in the ./sonic-visualiser dir.

But then I get an error:

../svapp/libsvapp.a(AudioTargetFactory.o): In function `AudioTargetFactory::createCallbackTarget(AudioCallbackPlaySource*)':
AudioTargetFactory.cpp:(.text+0x76f): undefined reference to `AudioJACKTarget::AudioJACKTarget(AudioCallbackPlaySource*)'
AudioTargetFactory.cpp:(.text+0xb54): undefined reference to `AudioJACKTarget::AudioJACKTarget(AudioCallbackPlaySource*)'


At this point I'm pretty much stuck. Any hint would be appreciated.

Lorenzo

cannam

  • Administrator
  • Full Member
  • *****
  • Posts: 229
    • View Profile
Re: Built on debian wheezy amd64 no audio port
« Reply #4 on: April 26, 2011, 16:20:40 »

/usr/bin/ld: ../svcore/libsvcore.a(Init.o): undefined reference to symbol 'XGetErrorText'
/usr/bin/ld: note: 'XGetErrorText' is defined in DSO //usr/lib64/libX11.so.6 so try adding it to the linker command line
//usr/lib64/libX11.so.6: could not read symbols: Invalid operation


This one is an error on my part -- svcore should not be referring to this symbol.  I'm not quite sure why it should actually fail to link for you, since it works here, but if you've got a workaround that should be enough for the moment.  I'll correct it in the code in the mean time.

But then I get an error:

../svapp/libsvapp.a(AudioTargetFactory.o): In function `AudioTargetFactory::createCallbackTarget(AudioCallbackPlaySource*)':
AudioTargetFactory.cpp:(.text+0x76f): undefined reference to `AudioJACKTarget::AudioJACKTarget(AudioCallbackPlaySource*)'
AudioTargetFactory.cpp:(.text+0xb54): undefined reference to `AudioJACKTarget::AudioJACKTarget(AudioCallbackPlaySource*)'


At this point I'm pretty much stuck. Any hint would be appreciated.

Can you delete svapp/o/AudioJACKTarget.o and re-run make in the svapp directory, and paste the g++ command that make runs?


Chris

lorenzosu

  • Newbie
  • *
  • Posts: 6
    • View Profile
Re: Built on debian wheezy amd64 no audio port
« Reply #5 on: June 16, 2011, 20:46:23 »
Hi there,

Sorry for taking so long, but meanwhile I went through general business and a full reinstall. :)

Anyway good news is: I managed to compile 1.8 with jack2 (libjack-jackd2-dev - version 1.9.7~dfsg-1 from the debian mulltimedia repository)

I still had to manually add -lX11 to the Makefile in the ./sonic-visualiser directory

In case someone else is interested (or googles) this, these are the (non exhaustive, tentative) dependencies I installed to successfully build (this is on wheezy with the debian multimedia repository added) I guess some of these are actually optional:

libfftw3-dev qt4-qmake libbz2-dev libsndfile1-dev libsamplerate0-dev vamp-plugin-sdk \
librubberband-dev libraptor1-dev  librasqal3-dev librdf0-dev libqt4-dev libasound2-dev portaudio19-dev \
liblo-dev liboggz2-dev librdf0-dev libfishsound1-dev libmad0-dev liblrdf0-dev libid3tag0-dev


Lorenzo.
« Last Edit: June 16, 2011, 20:48:34 by lorenzosu »