Audacity 3.1.3 for Slackware (don’t forget to install all the new dependencies!)

Two years ago I added version 2.4.1 of the Audacity multi-track audio recorder to my ‘Digital Audio Workstation’ (DAW) software collection in celebration of its 20th birthday. A lot happened in between then and now.

Not just new releases of Audacity,  but also a couple of forks of the code happened. Which gave us projects like Audacium, as well as  Tenacity, which was superseded again by Saucedacity.
The reason for these forks was the addition of telemetry (i.e. background-sending of application performance data to the developers) to the Audacity source code after the project was acquired by the Muse Group who are responsible for developing MuseScore among others. The same telemetry functionality was already present in MuseScore.
Note that in both Audacity and MuseScore you have to manually and explicitly enable telemetry! It is disabled by default.

In the past years I have provided a couple of 2.x and 3.x releases of Audacity as packages for Slackware, but stopped with updates last year when the developers switched to a ‘software manager’ to build their internal dependencies: conan. On SlackBuilds.org you can find an ancient 0.x release of it based on Python2, but the program has evolved since, uses Python3 now and it requires a truckload of other Python packages to work. Killing a fly with an elephant, and what was wrong with cmake?

But then my friend ppr:kut of the Slackware team asked me if I could rebuild my Audacity package because its wxWidgets-based user interface was using GTK+2 and that does not work well with HiDPI displays. The wxWidgets graphical toolkit can use GTK+3 as well, and could I please switch from GTK+2 to GTK+3 in Audacity.
I decided to look into his request and recompile my audacity-3.0.2 package, found out that it was not trivial to switch the GUI to GTK+3 widgets, kept looking and before you know it, down the rabbit-hole I went.

When I emerged from the rabbit-hole it was with a series of new and updated packages. I had decided not to use conan, which meant I had to provide all of Audacity’s dependencies myself (which conan would have added to the audacity binaries, just like autotools and cmake did for the older releases).
I noticed that I had to build a newer wxGTK3 for Audacity, and that led to a cascade of package updates and additions before eventually everything compiled and ran again. Apart from Audacity, some of the other graphical audio programs that needed a rebuild or upgrade are: Cecilia, Mixxx, and MuseScore.

This is today’s ChangeLog entry for my repository. A lot less new packages now than in the case where I would have caved in and gone with conan:

+--------------------------+
Wed Sep 21 20:17:50 UTC 2022
audacity: updated to 3.1.3 (Slackware 15.0 and -current).
  Note the hugely changed dependency list! Most of the previously internal
  dependencies are now provided as external packages, some are new in my repo.
  Depends on: jack2, ladspa_sdk, libsbsms, lilv, lv2, portaudio, portmidi,
  portsmf, serd, sord, soundtouch, soxr, sratom, suil, twolame, vamp-plugin-sdk
  and wxGTK3.
cecilia5: rebuilt against wxpython 4.2.0 (Slackware 15.0 and -current).
  Depends on python-numpy, python-pyo, wxpython.
daw_base: added boca, freac, libsbsms, portsmf, python-attrdict, smooth,
  soundfont-unison, speex, twolame and uriparser to the DAW template.
erlang-otp: rebuilt against newer wxGTK3 (Slackware 15.0 and -current).
  Depends on wxGTK3.
libsbsms: added v2.3.0 - a library for high quality time and pitch scale
  modification. Package for Slackware 15.0 and -current.
lv2: updated to 1.18.10 (Slackware 15.0 and -current).
  New dependency: sord.
mixxx: update to 2.3.3 was needed to compile against PortMidi 2.x.
  Depends on chromaprint, faad2, hidapi, libmodplug, libmp4v2, lilv, lv2,
  portmidi, portaudio, protobuf, rubberband, vamp-plugin-sdk.
  Package for Slackware 15.0 and -current.
musescore: rebuilt against PortMidi 2.0.3 (Slackware 15.0 and -current).
  Depends on jack2, portaudio, portmidi.
portaudio: updated to 190700_20210406 (Slackware 15.0 and -current).
  Depends on jack2.
portmidi: updated to 2.0.3, now that the maintainer is active again.
  All programs that depend on portmidi need to be recompiled against this
  new release. The pmdefaults program is not packaged anymore, as per advice
  from the maintainer.
  Package for Slackware 15.0 and -current.
portsmf: added v234 - a library for reading and writing Standard MIDI Files.
  Package for Slackware 15.0 and -current.
python-attrdict: added v2.0.1 - a dict with attribute-style access.
  Package for Slackware 15.0 and -current.
python-pygame: updated to  2.1.2 (Slackware 15.0 and -current).
  Depends on portmidi.
python-pyo: rebuilt against PortMidi 2.0.3 (Slackware 15.0 and -current).
  Depends on portaudio, portmidi, liblo, and jack2.
serd: updated to 0.30.16 (Slackware 15.0 and -current).
sord: updated to 0.16.14 (Slackware 15.0 and -current).
  Depends on serd.
sratom: updated to 0.6.14 (Slackware 15.0 and -current).
  Depends on lv2, sord.
suil: updated to 0.10.18 (Slackware 15.0 and -current).
  Depends on lv2.
twolame: added v0.4.0 - an optimized MP2 encoder.
  Package for Slackware 15.0 and -current.
wxGTK3: updated to 3.2.1 (Slackware 15.0 and -current).
  Note that I switched the package from containing static to dynamic libraries.
  This was needed to compile audacity.
wxpython: updated to 4.2.0 (Slackware 15.0 and -current).
  Removed dependencies: wxGTK3, python-pathlib2. New dep: python-attrdict.

The Audacity interface looks a bit different indeed. Tell me how it works for you! It’s not just a version bump; I switched from all-internal libraries to a mass of external libraries (dependencies) and I have not done extensive checking of all its functionality. I just hope it is not painfully broken.

When you install this package, please take good note (see above) of all the new dependencies that you will also need to install from my repository, for instance using my main URL  http://www.slackware.com/~alien/slackbuilds/ (also available via rsync protocol: rsync://slackware.nl/mirrors/people/alien/slackbuilds/).

A “pro tip” for easy upgrade/installation:
If you use slackpkg together with the slackpkg+ extension, you can download an updated DAW template here: http://www.slackware.com/~alien/tools/templates/daw.template containing a full list of all my DAW packages. Copy this template file into “/etc/slackpkg/templates/” and use the command “slackpkg update; slackpkg install-template daw; slackpkg upgrade-all” to get all those new packages installed effortlessly, and obtain all the upgrades as well.

Have fun! Eric

10 thoughts on “Audacity 3.1.3 for Slackware (don’t forget to install all the new dependencies!)

  1. Thanks for this Eric!

    To install it on my not-yet(-released Slint64-5.0 I included your repository in /etc/slapt-ge/slapt-getrc (slackware.uk was not yet updated) then ran:
    slapt-get –add-keys
    slapt-get -u
    slapt-get –upgrade

    This installed the missing dependencies libsbsms and portsmf and upgraded audacity.

    At first it didn’t start as my installed wxGTK3 was to old so upgraded to yours et voila! audacity works here 🙂

    Keep up the good work.
    Cheers,
    Diideer



      1. I just checked: it broke /usr/bin/osviewerWX shipped in OpenSceneGraph-3.6.5 (I don’t even remember why I have packaged that, probably an optional dependency of something…) and poedit-3-0.1 (wgGTK3 allows it to communicate with the Slint translation files on the Crowdin platform, so I need this feature). No harm done, I just restored the version that was installed, but now I know what to rebuild to upgrade wxGTK3 (which is not the right time for me to do).

        As I have found more discrepancies between the Slint 15.0 repository and the extra-15.0 repository fed by George for Salix but which is also usable by Slint. I have written some stuff to take care of that: https://slackware.uk/slint/x86_64/slint-15.0/source/dummy/ If I find more discrepancies I can just edit convert-naming table to handle them.





  2. i noticed you refered to jack2 as a dependency. last year in SBO jack2 became jack and the old jack became jack1. hope this doesn’t cause confusion 🙂


    1. @tim: I had a similar issue sourcing in slapt-getrc the repository https://slackware.uk/salix/x86_64/extra-15.0/ as it contains packages built from stuff @ slackbuilds.org still mentioning jack2 in the dependencies listed in PACKAGES.TXT. The workaround was to install a dummy jack2 package including just a symlink from jack2 to jack, in addition to the “real” jack package. More generally this kind of trick can be used if there are naming discrepancies between a repository and your installed packages.


    2. I can not influence the decisions made by SBo maintainers unfortunately.
      I chose ‘jack2’ as the package name specifically because SBo used it already and I did not want to cause confusion for people. Then the maintainer at SBo made the dumb decision to rename their SBo entry. I won’t subject to the whims of others, and kept my package as-is.
      Yes it irritated me to no end.



Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.