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
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
I hope nothing else broke as a result of that wxGTK3 upgrade…
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.
Sorry for the typos and I meant slapt-get -i audacity instead of slapt-get –upgrade.
Many many thanks Eric! Great job one more time!
Amazing work, much appreciated!
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 🙂
@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.
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.
Cool, thanks! Audacity is kind of a pain in the ass to build. I haven’t found a great replacement for it, either.
Haven’t used Audacity-3.1.3 often after installing, including dependencies, (just a few hardware checks with headset) till yesterday, when I encountered an odd issue.
After making a recording from an old vinyl record, the menu buttons was unresponsive (no drop-down menus appeared). I saved the project as aup, restarted audacity and opened the project – drop-down menus worked fine.
Another recording, and again the menu buttons were unresponsive.
I temporarily switched to the latest appimage version (3.2.1) and everything worked just fine.
Anyone else experienced something similar? Any possible explanation?
[Continued:]
Seems as if everything works fine if I make a short recording, but if it’s just a bit longer (>2 minutes), the menu buttons become unresponsive.
I’ve compiled audacity-3.2.1 using Ponce’s buildscript for -current. After installing and starting I got a message that the eg-samples plugin had been disabled, but otherwise it runs fine and – fingers crossed – the menu buttons seem to be responsive after a longer recording.
I wonder, it seems that Ponce only offers a 3.0.2 SlackBuild plus package. Since then, Audacity switched to conan as a build manager so your compilation of 3.2.1 using ponce’s script should not have succeeded. Are you in fact running 3.0.2 and not 3.2.1?
He has actually updated his script for version 3.2.0:
https://github.com/Ponce/slackbuilds/blob/current/audio/audacity/audacity.SlackBuild
It worked fine with version 3.2.1 as well.
Ah, I see. Ponce thanks me in the script header for doing the heavy lifting of figuring our how to work around with the new frikking build system 😉
Anyway, I just built and uploaded audacity-3.2.1.
Hi Eric,
root[~]# LANG=nl_NL.utf8 slapt-get -s -i audacity
Lezen pakketlijst…Klaar
De volgende NIEUWE pakketten zullen geïnstalleerd worden:
libsbsms portsmf audacity
0 upgraded, 0 reinstalled, 3 newly installed, 0 to remove, 0 not upgraded.
Moet 7,5MB aan archieven ophalen.
Na uitpakken zal 35,5MB aan extra ruimte gebruikt worden.
libsbsms-2.3.0-x86_64-1alien zal worden geïnstalleerd
portsmf-234-x86_64-1alien zal worden geïnstalleerd
audacity-3.2.1-x86_64-1alien zal worden geïnstalleerd
Klaar
root[~]#
removing the -s option all three packages are installed without a hitch.
Only caveat: I got this warning when starting audacity: https://slint.fr/pics/warning_audacity.png
Thanks!
Hi Didier,
I do not know or use slapt-get so I do not understand whether you are describing a bug or a feature to me?
The warning as displayed in the attached image, was also observed by KG Hammarlund (see higher up) and by me. It seems harmless.
Hi Eric,
I consider it a feature. I just gave this repository:
https://slackware.uk/people/alien/sbrepos/15.0/x86_64/
a higher priority than this one:
https://slackware.uk/salix/x86_64/extra-15.0/
(which George Vlahavas aka gapan fed with packages built using SlackBuilds from https:://slackbuikds.org) et voilà: slapt- get detected that all dependencies you listed were already installed (as shipped in Slint 15.0) but libsbsms and portsmf, so just installed those then your audacity package), otherwise it would have installed audacity from the other repository as illustrated by this command:
root[/home/didier]# slapt-get –search audacity|grep audacity
audacity-3.0.2-x86_64-1salix15.0 [inst=non]: audacity (sound editor)
audacity-3.2.1-x86_64-1alien [inst=oui]: audacity (sound editor)
So thanks also for the PACKAGES REQUIRED: list in PACKAGES.TXT as this is what makes that work.
A very small nitpick: running this command (roughly equivalent to “salckpkg upgrade-all)”:
slapt-get -s –upgrade
output:
cmake-3.21.4-x86_64-1 is to be upgraded to version 3.24.1-x86_64-1alien
This was expected but I did not see cmake-3.24.1-x86_64-1alien mentioned in this ChangeLog:
https://slackware.uk/people/alien/sbrepos/ChangeLog.txt
OK, thanks! Will try your version tomorrow. And Ponce’s thanks to you for finding a solution to the audacity devs’ absurd choice of conan was indeed well deserved.
Fingers crossed, but so far the menu buttons have been responsive through a few test recordings.
Another oddity (in your package as well as with the one compiled with Ponce’s script and the Appimage):
There’s no scrollbar visible from start. I can get it to appear by hitting Menu > Preferences > OK
Google reveals that I’m not the only one experiencing this.
On the whole I get the impression that Audacity >3.1.x is much buggier than earlier versions.
There’s still something odd with the menu… after closing a file/project, the menu buttons remain unresponsive for several minutes, although they eventually come back to life.
This on all three versions I’ve tried.
Either something on my system interacts badly with audacity, or it’s just a buggy crap of software – although at the same time very capable, so I don’t want to ditch it.
I’ve taken a look at ocenaudio (free, multiplatforn, closed source) having created a package from the opensuse rpm. Seems to be handy enough for basic stuff although it misses a lot of audacity’s functions.
How do I copy the template you supply into Slackpkg/template? Please.
The instructions are at the end of the article. What did you not understand about them?
If you want to have a really literal answer: use the “cp” command. As in:
cp daw.template /etc/slackpkg/templates/
But if this is the level of help you need then I think you have chosen the wrong Linux distribution.
Ouch! Been using Slackware for about 10 years and I may not be a whizz at all the hacking ways but I just enjoy the challenge.
Btw that worked, just got to find libflac.so.12 now. Such fun.
I did not mean to offend you, my apologies. Your question was just so basic and broadly painted.
All done thank you.