Sam Aaron worked long and hard towards a new major release of his Sonic Pi software, and kept us informed about his coding journey on Twitter. Eventually a 4.0.0 version saw the light of day, 17 months after the final 3.x version (3.3.1) came out. Sam writes really informative release notes, I encourage you to check them out on his release page. Lots of enhancements and fixes to be enjoyed.
You don’t know what I am talking about?
You’ve probably missed my last year’s blog post then.
Sam Aaron is a musician and a programmer, holding a PhD in Computer Science. He develops a really cool program called Sonic Pi, meant to educate people in making music and learning how to code at the same time.
Sonic Pi uses the engine of Supercollider, which is another live coding platform. But Sonic Pi makes the art of live coding – performing on stage or just having a blast creating music on your computer – very low-threshold. Out of the box, when you start the program, its GUI will show complete and working coding examples, a tutorial, and an intuitive interface to start producing music straight away:
I have created packages for sonic-pi 4.1.0, the latest release, and I guess I am the first to create 32bit packages for a Linux platform, since I had to teach the “vcpkg” program that 32bit Linux is actually a thing. You could have guessed it… vcpkg is a cross-platform library manager created by Microsoft (!!!) which Sonic Pi uses to compile the libraries it needs.
I’ll see if I can create a patch for 32bit Linux support and send it to them.
Anyway, a month ago Sam Aaron gave a lecture at Lambda Days 2022 in Poland, about Sonic Pi, and here is a link to a recording of that lecture. You’ll learn more by watching that video, than by reading my blog posts about it.
The new packages (for Slackware 15.0 and -current) can be downloaded from all the usual places, for instance my slackware.com primary site, or the fast NL, UK or US mirrors.
I hope you are going to give Sonic Pi a try and that I’ll hear from you in the comments section below if you came up with a cool piece of audio.
And because Sonic Pi is contained in my Slackware Live DAW edition, I have also generated a new ISO for the Digital Audio Workstation. Get the “slackware64-live-daw-current.iso” ISO file, and copy it to a Ventoy USB stick or use the “iso2usb.sh” script to create a persistent USB stick.
This live environment should allow you to run Sonic Pi out of the box even if you have no idea how to configure the JACK audio server.
This week, the Linux 5.13 kernel finally landed in the core distro of Slackware-current after having lived in ‘./testing‘ for a while. Actually it’s the 5.13.2 kernel which had some 800 patches applied compared to 5.13.1.
And with that new 5.13.x kernel series, it looks like a Slackware 15 release is again closer on the horizon.
To celebrate the occasion, I have generated a new batch of ISOs for the Slackware Live Edition. At download.liveslak.org you will find ISO images for the variants based on the latest release of the liveslak scripts (in this case, version 126.96.36.199 of liveslak).
These Live ISOs boot Slackware -current “Thu Jul 15 22:37:59 UTC 2021” with the new 5.13.2 mainline kernel: SLACKWARE (32bit & 64bit), XFCE (32bit & 64bit), CINNAMON, MATE, DAW and LEAN.
The ‘bonus‘ section contains a batch of squashfs modules you can use with your liveslak (copy them into the ‘addons’ directory of your persistent USB drive) if you want to expand the functionality of the Live OS.
Among these you’ll find the binary nvidia driver (already contained in the CINNAMON, DAW and MATE ISOs by the way); the Broadcom STA wireless driver, Wine 6.12, multilib, the DAW package collection, and a set from my own repository (chromium, libreoffice, veracrypt, vlc etc).
I know I have not been posting a lot the past few months. Sorry for that, really.
The last quarter is always a busy time at work and especially so during Corona; my mother fell ill; I sort of crashed when I ran out of energy; and it was a lot of work to clean up shop after my Plasma5 ‘ktown’ first got adopted as Slackware ‘vtown’ in testing and a bit later replaced the old KDE4 in the core distro. Lots of package recompilations and upgrades to work with the newer stuff in Slackware.
I also worked on (finally) migrating the old ‘bear’ server which was hosted in France, to a newer and more powerful server running in an Amsterdam Data Center. The new server ‘martin’ was mostly ready when I thought, let’s reboot ‘bear’ after applying the latest Slackware security fixes. And then it did not come back up… that was not a comfortable moment, since ‘bear’ not only hosts my own package and git repositories, but also The Slack Docs Wiki, the Slack Docs mailing lists, my own personal Wiki and some private family sites. I opened a support ticket and it turned out that the hard drive had crashed and all data on it were irrecoverable.
Luckily I had just finished making a set of backups and right before that fateful reboot, had discovered that my backup scripts omitted part of the server data… which I had also fixed just in time before that crash.
It took some additional energy to get the services up and running on ‘martin’ again as soon as possible. I had made some new designs for the new server OS configuration and the new configs were un-tested… I hope not too many people noticed the partial down during the second half of November.
The new server runs fine now, has more disk space especially, so I can finally host the full history of Slackware releases and also the DAW and CINNAMON Live ISO images for which there was no room on ‘bear’.
Thanks again to those people who send me money un a regular basis so that I can pay the monthly rent of ‘martin’!
Despite that stress I have been enjoying myself still, just not in the spotlights. The semi-sudden switch in Slackware from KDE4 to Plasma5 and refreshing its XFCE Desktop had some consequences for my liveslak project. It took some time to work out a new optimal package set for the small XFCE image, and in particular the DAW Live image which is based on a bare Plasma5 Desktop needed attention to make it tick again.
So what’s new in Slackware DAW Live?
Remember: DAW = Digital Audio Workstation.
Read my original article documenting the research into a comprehensive collection of musician/producer oriented free and open source software, and a follow-up article on how to transform a Slackware system into a powerful Digital Audio Workstation.
I asked you in a previous post to come up with ideas for artwork to use in my Slackware Digital Audio Workstation. Thanks for those who contributed graphics and ideas – all of that creativity has been preserved here on the blog.
I decided to use the image to the left of this paragraph – a Slackware ‘S’ with headphones – as the icon to use for the “Slackware Live DAW” submenu. Contributed by Daedra and slightly colored by me.
I needed a second icon as well, to represent the ‘face’ of the Live user account, and for that I picked one of the contributions from Bob Funk: a Slackware ‘S’ with a TRS jack. You’ll see this one when you boot up the ISO and are asked to login at the SDDM graphical session chooser.
More art work was contributed by Sceptical-C, a friend of mine who doubles as a DJ, musician and producer. His black and white photography are the basis for several Plasma5 wallpapers and one of his photographs is also used as the background in the login and lock screens.
I decided to move the configuration of the DAW Live OS’ realtime capabilities out of the liveslak scripts and into a new Slackware package. This package called “daw_base” can be installed on any Slackware computer (preferably Slackware-current with PAM). It configures the OS in such a way that a user who is a member of the Slackware “audio” group is allowed to start applications with real-time scheduling priority. You’ll need that if you want to prevent sound drop-outs (also called XRUNs) during performing, recording and mixing. Some more tweaks are being made, they are documented in the package’s README.1st file. This package also contains the Plasma5 wallpapers which are created from the original Sceptical-C black-and-white artwork.
The package creates a new sub-menu in “Applications > Multimedia” called “Slackware DAW” and collects all my DAW related software in there. The submenus in “Multimedia” for the X42 and LSP plugins are moved into the “Slackware DAW” menu to keep it all closely together. This is very similar to what DAW Live also contains. Just the word “Live” is not present in the name of that menu installed by ‘daw_base‘.
The daw_base package also installs a template file for Slackware’s package manager ‘slackpkg‘. The template called “daw” contains a list of all DAW related software in my package repository and it allows for an easy installation and maintenance of that software collection.
New additions to the musician’s toolkit
Several packages needed a recompilation after the recent Slackware upgrades that are related to the new requirements for XFCE and Plasma5. I used that opportunity to upgrade software to their latest versions instead of recompiling – like Ardour, Mixxx, Jamulus, Guitarix for instance. But I also looked into some new stuff, mostly because people asked me about it. Here they are:
An intuitive digital audio workstation all in itself. It’s under heavy development and nearing a 1.0.0 release. It supports LV2 plugins, offers a high level of automation, and looks really good. Perhaps an alternative for those who feel Ardour’s learning curve is too steep.
VCV Rack by the VCV project is a software emulation of the Eurorack Modular Synthesizer.
The project’s mission statement contains this line which resonated with me: “… the principle behind modular synthesizers is identical to the UNIX philosophy, where stable, minimal modules working together are preferred to a monolithic platform controlled by a single vendor (like portable synthesizer keyboards)“.
A short intermezzo first. My first experience with modular synths was as part of the audience when attending a concert by Pere Ubu, 1981 in De Effenaar in EIndhoven. Alan Ravenstine handled a huge contraption full of patch wires that produced all sorts of weird and interesting sounds. It’s what gave Pere Ubu their uniquely distinctive sound. I read later that he worked with EML modular synthesizers a lot but at the time I didn’t know. Damn impressive, but I decided that industrial sounds were more to my liking. This was during the early rise of Electronic Body Music, and that got me hooked for a while. If you can find the documentary “I dream of WIres” I recommend you watch it. The web site http://idreamofwires.org/ is dedicated to documenting the history of electronic music. An excerpt of a little more than 20 minutes is freely available, it contains an interview with Pere Ubu synth players Alan Ravenstine and Robert Wheeler.
Anyway – back in May 2019, a blog comment by ‘Hank’ already referenced VCV Rack with a question whether I would perhaps consider it for inclusion to my DAW software collection. At the time, my focus was on other things and a modular synthesizer is not the easiest instrument to work with, so I let that pass. But some recent youtube footage sparked my interest and here is the result – a Christmas present of sorts for you: packages for VCV Rack, and three free and open source plugins that expand the collection of available modules in Rack: vcvrack, vcvrack-audible-instruments, vcvrack-befaco and vcvrack-bogaudio.
Note that my VCV Rack package ‘vcvrack‘ contains the Fundamental plugin already. The software is quite useless without it so I decided to bundle it, just like the dev’s binary distribution. It is the only plugin which is automatically loaded by VCV Rack. If you install any other plugin, you need to execute one manual command to add the plugin to your user-directory: this will create a symbolic link to the ZIP file containing the modules and Rack will then automatically find and unzip this plugin and make it available to you.
New Plasma5 packages for Slackware-current are ready for download & installation. I skipped July (holiday season) and so here is KDE-5_20.08 aka my August 2020 release. Be sure to read the upgrade instructions very carefully to prevent breakage, because starting with my June batch the goal is to remove Slackware’s ConsoleKit2 and replace it with elogind!.
It would not harm if you (re-)read my previous blog article about Plasma5, “Replacing ConsoleKit2 with elogind – first steps“. It has a lot more detail about the reasons for this move as well as guidance on using the Wayland Window Manager (as a test) instead of regular X.Org. Note that Wayland sessions still need a lot of maturing and X.Org will remain Slackware’s default choice.
A repeat from that article: with elogind as the session/seat manager instead of ConsoleKit2, you’ll see some new behaviour. A quite obvious change: if you run ‘startx’ or ‘startkwayland’ at the console, you won’t see a VT (virtual terminal) switch. In the past, your console TTY would usually be tty1 but your graphical session would start on tty7 and you would automatically be switched from tty1 to tty7. This is no longer true – the graphical session will re-use your console TTY.
SDDM is still starting on tty7 but only because I make it do so via its configuration file.
Deps: The ‘deps’ section got a bit smaller again this month:
pcaudiolib, espeak-ng, hack-fonts-ttf, noto-fonts-ttf, and noto-cjk-fonts-ttf were moved into the actual Slackware distro. Things are progressing nicely in that regard.
flite has been removed since Pat decided we will go with just espeak-ng.
a new package ‘pipewire’ was added as a dependency for krfb and xdg-desktop-portal-kde.
The elogind-aware dbus package was upgraded to match the Slackware version.
Finally, qca-qt5 was upgraded and I recompiled mlt (to fix the broken kdenlive) and speech-dispatcher.
Frameworks 5.72.0 is an incremental stability release, see: https://kde.org/announcements/kde-frameworks-5.72.0. A new ‘kdav’ source tarball got added but that is actually the same package you’ll find in KDEPIM. Next batch, the actual kdav package will be built from Frameworks sources.
For applications-extra, I updated digikam, krita, libktorrent and ktorrent, and skanlite.
Note that the size of the digikam source tarball ‘blew up’ due to the addition of new neural network facial recognition data files, but the actual package ‘only’ grew from 97 to 108 MB.
KDE Telepathy is no longer part of my ‘ktown’ distribution of KDE Plasma5.
Not so visible but important nevertheless is this month’s contribution of Patrick Volkerding who validated all the KDE slack-desc files and enhanced/polished a lot of them. He also cleaned out the ‘patches’ directory and removed all the obsolete patches that are not being applied anymore. As you also will have noticed, Pat is slowly picking packages out of my ‘deps’ and adding them to Slackware. Even espeak-ng which I had not expected to happen.
Where to get KDE Plasma5 for Slackware
It should be obvious, but these packages will not work on Slackware 14.2. The old (KDE 5_17.11) Plasma5 packages that were still in my ‘ktown’ repository for Slackware 14.2 were removed in May 2020 because they were un-maintained and had security issues.
Check out the README file in the root of the repository for detailed installation or upgrade instructions.
BIG FAT WARNING: Read these README instructions carefully if you do not yet have elogind installed (i.e. if you did not install the ktown June 2020 release previously)!
UPGRADE TO THE LATEST slackware-current first.
Then, REMOVE the ConsoleKit2 package if you had not installed my June ktown batch before.
Next, install or upgrade the KDE5 package set.
Change to directory /usr/share/sddm/scripts/ and move the Xession.new & Xsetup.new files into place (remove the .new extension) after carefully checking that you are not overwriting your own customizations in the Xsession & Xsetup scripts. Note: because “slackpkg new-config” only looks inside the /etc/ directory it will miss the two scripts in /usr/share/sddm/scripts/.
You’ll still have to manually check /etc/ for some critical *.new files that need to be put into place if you are not using slackpkg (which does this *.new check at the end of its run).
Development of Plasma5 is tracked in git: https://git.slackware.nl/ktown/ and this month’s development took place in the ‘elogind‘ branch. I will fold these elogind developments back into the master branch soon.
Here is a new program for inclusion into my DAW package collection. It is Sonic-Pi, a ‘code-based music creation and performance tool’ as its web site states. My DAW collection already features Supercollider, which at its core is a powerful audio synthesis engine, but it also features a graphical user interface which you can use for live-coding music. Sonic-Pi has similar capabilities but it is more intuitively accessible (compare it to vi and notepad for instance).
Therefore Sonic-Pi would be better suited for introducing people to the concept of creating music through writing code, and letting that music evolve during a live performance by updating on-the-fly the code which represents the audio synthesis.
Sam Aaron is the creator of Sonic-Pi and uses it as a musical instrument in its own right with his band. He did a TEDx talk about programming as performance a couple of years ago:
He explains how Sonic-Pi was conceived as an educational tool. By making a free and open-source program like Sonic-Pi available to schools (and it runs on the Raspberry Pi – now you know where the program got its name from), you will gently introduce young kids to the art of computer programming while at the same time infusing them with a love for music – because they will be able to create the music they like in no time.
Sonic-Pi uses the synthesis engine of Supercollider, which means that that has to be installed as well. Both Sonic-Pi and Supercollider use JACK to route the audio and let it come out of your speakers.
The graphical user interface allows easy access to a large collection of example code snippets, sound samples and synthesizer definitions, so you will be listening to music in a few seconds after starting the program – after which you can begin modifying that code and hear live what your programming does to the generated music. The GUI also contains a nice visualization of the music you are generating.
The software is usually distributed as an ‘appimage’ which simply bundles everything you need into an archive. This is not really Slackware-like, so I wrote a SlackBuild script which brings some order into the directory structure, removing a lot of redundant megabytes and creating a proper package with a nice menu item.