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