- MCP server with stdio transport for local use - Search episodes, transcripts, hosts, and series - 4,511 episodes with metadata and transcripts - Data loader with in-memory JSON storage 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
547 lines
39 KiB
Plaintext
547 lines
39 KiB
Plaintext
Episode: 3492
|
|
Title: HPR3492: Linux Inlaws S01E44: Pipewire Just another audio server Think again
|
|
Source: https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr3492/hpr3492.mp3
|
|
Transcribed: 2025-10-25 00:24:25
|
|
|
|
---
|
|
|
|
This is Haka Public Radio Episode 3492 for Tuesday 21st of December 2021.
|
|
Today's show is entitled, Lihak's in-laws S0144, HypeWire just another audio server
|
|
think again and is part of the series, Lihak's in-laws, it is posted by Monochrome, and
|
|
is about 53 minutes long, and carries an explicit flag, the server is, HypeWire just another
|
|
audio server, think again.
|
|
This is Lihak's in-laws, a podcast on topics around free and open-source software, and
|
|
is hosted a contraband, communism, the revolution in general, and whatever fence is your
|
|
tickle.
|
|
Please note that this and other episodes may contain strong language, offensive humor,
|
|
and other certainly not politically correct language you have been warned.
|
|
Our parents insisted on this disclaimer.
|
|
Happy Mom?
|
|
Thus, the content is not suitable for consumption in the workplace, especially when played
|
|
back in an open plan office or similar environments.
|
|
Any minors under the age of 35 or any pets including fluffy little killer bunnies, you
|
|
trust the guide dog, a lesson speed, and QT Rex's or other associated dinosaurs.
|
|
This is Lihak's in-laws, Season 1 Episode 44, part wire, just another audio server, think
|
|
again, due to technical reasons, and Martin knows exactly what I'm talking about.
|
|
This episode is slightly out of schedule, we will be back to our normal roadtires soon
|
|
as possible and apologize for this slight delay in publishing this episode.
|
|
Unfortunately, my beloved co-host, Martin Visner, cannot make it tonight, but we, so I'm
|
|
afraid that the dear listeners and you listen to this episode I have to do with just me,
|
|
but to make up for this, I have very important guests tonight, a guy called Wim Tamens, I hope
|
|
I got this right without bitching last name.
|
|
For those few listeners who do not know Wim, of course he's the guy behind something
|
|
called pipe wire, the successor of something called Puzz Audio, but we're going to go into
|
|
the technical bits in a while.
|
|
But maybe we might not introduce ourselves first of all.
|
|
Yes, hi, hello, I'm Wim Tamens, I'm a Belgian, I'm living in Spain currently, I'm a programmer,
|
|
I started programming when I was young on Commodore 64, I made some games when I was young
|
|
in university, and then I started getting involved with a project called G Streamer, so I was
|
|
the second person to contribute to that, so I got involved with multimedia stuff from Linux
|
|
and all of that, with GNOME desktop, went to a lot of conferences, so I've been doing
|
|
them for a while, G Streamer, and then four or five years ago I was asked to rethink the
|
|
video sharing mostly for cameras, from web browsers, but also for screen sharing, and that's
|
|
how pipe wire started five years ago, so it's sort of evolved into everything, into an
|
|
audio replacement for all the Linux audio stuff, so that's kind of exciting, a little bit
|
|
more than expected.
|
|
Yeah, similar to 42, the answer to all questions by the sound of it, no Wim, but before we
|
|
go into pipe wire, if you have been working on G Streamer, maybe, now is the time to give
|
|
a short overview for the few listeners who do not know audio under Linux, maybe now is
|
|
the time to kind of give a short overview of how this whole stack fits together, starting
|
|
maybe with Elsa, and then continuing to pause and what this G Streamer thing is all about,
|
|
so that we have a little bit of context before we start to discuss something called pipe
|
|
wire, if that makes sense.
|
|
Yeah, so at the lowest layer, you have the kernel with the driver, so each audio card has
|
|
a driver, there's a generic driver for USB cards that comply with the USB standard for
|
|
audio, but on top of that, user space applications, they communicate with a library called ALSA.
|
|
ALSA is a lot of stuff, but in essence, it's a little wrapper around IOCDLs to do stuff in
|
|
a kernel.
|
|
Sorry, it stands for advanced Linux, sound architectures on Flotters?
|
|
Yeah, yes, yes.
|
|
Okay, sorry.
|
|
So it was meant, initially it was meant to be everything, it has like plug-in architecture
|
|
and you can link plug-ins together, and it has like a mixer as well and all kinds of tools.
|
|
But these things, they are less used these days.
|
|
So in essence, ALSA is used to just communicate with the driver, and also the plug-in system is
|
|
still useful as you'll see later.
|
|
So ALSA of course replaced a previous kernel API, OSS, so ALSA is not used anymore, it's
|
|
mostly ALSA.
|
|
Open sound system, it's not a complicated sound, right?
|
|
Open sound system, there is a whole history about how it was in the kernel and then proprietary
|
|
and back out, and then back in.
|
|
For the old folks, yeah, I can't remember it well when I used to compile my old kernels
|
|
about 20 years ago, something like that, but I digress, sorry, I didn't want to interrupt
|
|
you.
|
|
Exactly.
|
|
So there was some efforts to try to write a sound server in ALSA itself, but the routing
|
|
was a bit difficult.
|
|
So eventually there were other sound servers that came out, so like one of the first one
|
|
was ESD, if I'm not mistaken, you know, and then there were other projects that were
|
|
more like a synthesizer, infrastructure, like ARTS on GDE, there were others that never
|
|
gained really much traction, like MOS.
|
|
But eventually a new sound server came, which was also audio, so the pulse audio sits on
|
|
top of ALSA, it basically talks to the application, takes all the audio from the application, mixes
|
|
it together, and then sends it to the device.
|
|
It's fairly simple, but it also needs to do things like moving applications to different
|
|
devices, or plugging of new devices.
|
|
So there's a bit of logic that lives in a sound server, and over the years it has grown,
|
|
like you can do network transport, send audio between computers using pulse audio.
|
|
But there's another container called jack, right, if we were completely mistaken.
|
|
Yeah, so right around the time, a little bit before pulse audio was developed, the professional
|
|
Linux of, and also actually also was developed mostly by the pro audio people, they lived
|
|
in a separate group mostly, and they were focused on pro audio, which means like low
|
|
latency, you capture signals from a microphone, you apply effects, and send it back out, things
|
|
like that, or like digital audio workstations, mixing desks, these things.
|
|
And they had their own sound server that did very little, but was all about flexibly routing
|
|
signals around their apps, their drum machines, and all of that.
|
|
So the focus was completely different, and they sort of developed, they sort of developed
|
|
independently from each other, and by the time the pulse audio wanted to do the desktop
|
|
things, they already saw jack, which did something completely different, and then we ended
|
|
up with two situations, one for pro audio, and one for desktop.
|
|
So this is one of the reasons why many distributions picked up pulse as the answer to more consumer-oriented
|
|
audio approaches, right?
|
|
I suppose.
|
|
Yes, exactly.
|
|
So jack is very, very narrow focus, you can only use one device, and it has to be, you
|
|
can do other things, it's very difficult to configure, it doesn't really do any Bluetooth,
|
|
it's very narrow, very narrow focus, it's not very generically used for a desktop.
|
|
So pulse audio instead is very useful, it does everything automatically, you don't really
|
|
need to configure much.
|
|
So that works better in a desktop environment, but on the other hand, pulse audio was not
|
|
designed for the low latency use case of jack for different reasons, for different reasons.
|
|
Yeah.
|
|
Another interesting perspective here, and now how does this whole G streamer thing come
|
|
into play here?
|
|
The way I see it, and full disclosure, I'm by no means a multimedia expert when it comes
|
|
to maintenance, I just use the stuff and wonder about the different backends, for example,
|
|
when I use my favorite music application, which is known as strawberry, it used to be
|
|
an Amaraq, but then I switch over to strawberry, Clementine or Clementine came in between,
|
|
but then Clementine, by the way, said with regards to bit-trots, so I switch over to strawberry,
|
|
but therefore, for example, I see a G streamer backend that I normally use and it works.
|
|
So maybe now it's the time to shine a little bit more light on more user-land things.
|
|
Yeah.
|
|
So we talk about Alza, we talk about the sound servers, the thumb on top on the next layer
|
|
is the media frameworks.
|
|
So what do media frameworks do?
|
|
They decode, they read files, they demux things, they extract compressed audio, they decode
|
|
the audio, and then eventually send the audio to, in this case, puls audio, for example,
|
|
of the video to the compositor, all right, 11.
|
|
So that's the task of the multimedia framework.
|
|
It's like the gluing of all of those decoders, and possibly also provide a good user interface
|
|
for applications to do this, to make this possible.
|
|
So that's what G streamer is, it's a API to be able to construct these kind of things,
|
|
decoders and demuxers reading tags out of it, sending it to the sound server in a pluggable
|
|
way, so that if you have different sound servers that automatically selects one and all
|
|
these things, so that's a multimedia framework.
|
|
So it's more like a workflow that allows you to connect different components to each
|
|
other?
|
|
Yeah.
|
|
Different blocks, different functional blocks that you connect together, it doesn't really
|
|
have to do anything with audio or an audio server with audio, it can be reading files,
|
|
reading tags, interfacing with various APIs at lower levels.
|
|
So it could be like video capture encoding, sending it over RTP, for example.
|
|
So that's the thing that that multimedia frameworks do, it's like the big glue for gluing
|
|
all these components together.
|
|
I see.
|
|
And do you know where the name comes from as in G streamer, does that have anything to
|
|
GNOME?
|
|
Yes.
|
|
So originally it was called GNOME streamer, so it was built, well the first version was
|
|
from 1998, 1999, which is exactly when GNOME started implementing their stuff and it was
|
|
actually using also GDK at that time, and it was built using all of these things.
|
|
These technologies that GNOME was going to use for their GUIs.
|
|
It was using that object model and it was meant to go into the GNOME desktop as the multimedia
|
|
framework.
|
|
Okay.
|
|
So it was called GNOME streamer.
|
|
I see.
|
|
So that's a bit of history.
|
|
After a while we figured it out, but it doesn't really have to be GNOME specific, there's
|
|
really that we need to do GNOME specific.
|
|
I mean, we can use the technology, but we can just call it G streamer.
|
|
Okay.
|
|
Interesting overview now.
|
|
Given the fact that Pulse Audio has been run for a while, why or how did you come to
|
|
the conclusion that now it would be time for a new approach, hence Papuaia.
|
|
You can check it a little bit of light on the history of the project.
|
|
Yes.
|
|
So the first version of Papuaia was simply meant to be sharing of a camera video for Linux
|
|
camera and just capture video and we also had capture video from the desktop for screen
|
|
sharing.
|
|
It was all implemented using G streamer.
|
|
So that's basically the first fundamentals.
|
|
But when I started doing the project and I was thinking about things, it became clear
|
|
like, okay, I'm actually re-implementing all of these G streamer things.
|
|
Can I not make like an audio server with this?
|
|
And then I actually built an audio server using G streamer, but then I got into trouble
|
|
because G streamer is a bit too high level 40s.
|
|
It doesn't exactly have the lowest possible latency that you want, such a server.
|
|
So then I started rewriting those components and then it's sort of evolved into JAK, actually.
|
|
And then I had the JAK, but I also had components that actually made it work like Pulse Audio.
|
|
So then I sort of ended up something in between and then I started getting serious about
|
|
it.
|
|
Maybe I can actually implement both JAK and Pulse Audio with this new thing.
|
|
So if you say, how did I get to this?
|
|
It's more like an experimentation and an logical evolving of the code to where it went naturally.
|
|
There wasn't actually a plan to say like, I'm going to replace JAK or Pulse Audio.
|
|
It's more like building all of these things.
|
|
It just came to me once.
|
|
Maybe I should actually try to do this.
|
|
And I had to go to another redesign to make this actually happen because the initial design
|
|
wasn't suited to do JAK.
|
|
If you want to do like pro audio stuff, you need to be very, very, very specific and very,
|
|
very attention to all the little details to actually make this work.
|
|
And all little bottlenecks that can cause latency is just not slow.
|
|
Yeah.
|
|
I can recall an interview with Leonard Pottering where he kind of shed some light on the
|
|
challenges that he encountered when designing and implementing Pulse and latencies were
|
|
at the very top of that list.
|
|
So it came a little bit of a surprise that he actually didn't write this in December.
|
|
I'm joking.
|
|
But the reckoning C would be the natural choice for implementing this in the light that probably
|
|
Russ isn't ready for primetime here.
|
|
But you need a performance program in that year, right?
|
|
So yeah, but more importantly, even is the design of the communication between the clients
|
|
and the server, which is what Pulse Audio does not do correctly.
|
|
Okay.
|
|
That's the big problem that Pulse Audio's design for the communication between clients and
|
|
the server is based on a socket, which can be a local socket or a network socket.
|
|
And the protocol can be sent over the network or over a local, between a local demon and
|
|
a client.
|
|
But that rules out shared memory, if you need to be able to send it over a network.
|
|
And then the whole protocol becomes much more complicated than it needs to be.
|
|
And you actually get the data from a client to a server, it's very heavy in Pulse Audio.
|
|
So Pulse uses UDP or TCP to transfer the data as possible, so you need to be right?
|
|
TCP.
|
|
Okay.
|
|
Wow.
|
|
No.
|
|
It's TCP.
|
|
And like, for example, what you need to do in an audio server is the audio card needs,
|
|
let's say, 100 samples.
|
|
You need to wake up that client as fast as you can and tell it you need to make 100 samples
|
|
right now.
|
|
And that thing needs to send 100 samples and it needs to go as quickly as possible to the
|
|
hardware card.
|
|
So what happens in Pulse Audio is that it goes to a couple of context switches of threats,
|
|
even over a socket, it gets marshaled in the message, then over a threat, then to
|
|
apply the marshaled back to the threat of the network, back to the other threat and then
|
|
to the card.
|
|
So the path is just very long.
|
|
And you can't make that work reliably with very small buffer, so Pulse Audio can't go
|
|
very low latency for that reason.
|
|
So it's expensive.
|
|
Yes, especially using TCP, because the network stack ends up the kernel with regards to
|
|
TCP is quite heavy in comparison to you to UDP, because the TCP protocol is a kind of
|
|
sequencing all the rest of it, something that you don't necessarily need for audio, right?
|
|
No, right.
|
|
So there have been some changes made to put part of the data into shared memory.
|
|
So that's that speeds up things a bit.
|
|
And it mostly actually reduces the amount of CPU usage, hoping all over sockets and stuff.
|
|
But yeah, it's mostly the threading model that is causing a bottle next in Pulse Audio.
|
|
So if you compare it to Jack, Jack is very simple, card wakes up, it signals a summer forward,
|
|
the client wakes up, writes stuff in a buffer, the buffer is in shared memory, wakes up the
|
|
server again, server reads from the buffer and that's it, so it's very quick.
|
|
And it's very similar in pipe wire now.
|
|
So the path is super simple.
|
|
So with that design, you can send small buffers very quickly between many different applications.
|
|
So this is what you need for Jack-like features, but also for low latency.
|
|
So essentially you took the shared memory approach and implemented this for pop wire.
|
|
Yeah, so if you look at the implementation of pipe wire, it's very, very similar to
|
|
Jack.
|
|
So it uses a bit more modern ways of doing things, like it doesn't use a summer for, but
|
|
it uses an event of these because you can pull those on one thread, many on one thread.
|
|
With the summer for, you actually have to block things like that.
|
|
And Jack has like a huge piece of shared memory, like a hundred megabytes, where everything
|
|
is now.
|
|
Okay.
|
|
So all clients can basically read from all other clients, right?
|
|
Which is what you don't want to have in a flak pack, or in an environment where you
|
|
have to isolate programs from each other.
|
|
So also, the user stuff like app images, apps, whatever, yes, I get it.
|
|
Yeah.
|
|
So you don't want your, I don't know where it comes from app, be able to peek at other
|
|
apps' data, right?
|
|
You want to isolate that from all the other things.
|
|
Which is something that also audio doesn't do, and Jack also doesn't do.
|
|
So the pipe wire is designed to only give the memory to a client that it's allowed to
|
|
see.
|
|
So that's something like security already built in to certain extent?
|
|
Yeah, it's, I mean, these applications were written 15 years ago, nobody was talking
|
|
about flak packs or trying to isolate applications or virtual machines, value existence, on desktops
|
|
in that way.
|
|
So yeah, it's a, it's a little bit of a rethinking of all of these things, how they should work
|
|
in this new world.
|
|
What other differences are there between the traditional approach, like, primarily pulse
|
|
audio, I guess, and pipe wire?
|
|
It sets pipe wire aside with regards to further architecture and implementation differences.
|
|
Yeah, so I think the biggest part is the scheduling bits, which is more like Jack.
|
|
So you have a very short part to waking up clients and getting their moving data around.
|
|
The thing that is used from pulse audio is more like all of the dynamic things and the
|
|
the timer based scheduling, for example, from pulse audio is also in pipe wire.
|
|
So the way that it's built now is you have pipe wire itself, which actually doesn't really
|
|
natively support pulse audio applications.
|
|
There is a demon sitting in between that actually translates pulse audio clients to pulse audio
|
|
to pipe wire messages.
|
|
Okay.
|
|
So, I guess, I guess it's ripped open, pulse audio is ripped open into actually three parts.
|
|
So you have the core part, which is scheduling of the audio samples, how it flows from
|
|
clients to the devices.
|
|
Then you have the policy, which is separated in a session manager, which are all the rules
|
|
like where should audio go, how does it need to be configured, where the volume is stored
|
|
in a database, a lot of these things.
|
|
And then there's the protocol, which is separated in another deal, so it's actually pulled out
|
|
in three parts, pulse audio.
|
|
And the comparison to that pipe wire is different.
|
|
Yeah.
|
|
Yeah.
|
|
I mean, it eventually implements all the features that are in pulse audio, but it's
|
|
located the functionality in different parts, and it's slightly different implementations.
|
|
Okay.
|
|
Okay.
|
|
Just curious, you chose C as the main implementation language, similar parts to pulse audio, I'm
|
|
not going to remind you.
|
|
I think Jack is implemented in C as well.
|
|
C++.
|
|
Okay.
|
|
C++.
|
|
Yeah.
|
|
Jack, what is C?
|
|
Jack 2 is C++.
|
|
I'm just wondering, because whenever I meet some hipster colleagues of mine, where younger
|
|
I might add than me, of course, they talk about Rust and other new foreign languages,
|
|
which have certain advantages in terms of memory safety on the rest of it.
|
|
Did you ever consider using something else than C?
|
|
Yes.
|
|
Yes, I tried to learn Rust, but I couldn't get it, I didn't manage to feel comfortable enough
|
|
to actually implement the Rust.
|
|
Okay.
|
|
So, I mean, for distortion, we did a couple of episodes on Rust, on Rust recently, so
|
|
I'm a little bit of a, a hidden, a closet fanboy, if you want to call it like that, I wouldn't
|
|
consider myself an expert on Rust by no means, but I'm just curious about the language.
|
|
What do you consider as the biggest challenge with us learning curve in Rust, if you took
|
|
a look at it?
|
|
Just curious.
|
|
And nothing in particular, so I think that's part of the problem.
|
|
Okay.
|
|
You really think, and then you're like, oh, yeah, I'm going to do a new tier, and we take
|
|
a rough there.
|
|
But then, I don't know, if you're writing program, it's also kind of like the code.
|
|
It sort of, not so very, it sort of comes automatic, you know, you have an ID, and then you
|
|
say, I need to search in a list like this and that.
|
|
And with the new idioms, in Rust, you need to get like experience with that in order to
|
|
just write the thing that you're thinking, right?
|
|
So in Rust, I can't do that, then it's more, you probably need to start something else
|
|
simple, like do some modifications on something existing, build up your Rust experience.
|
|
I was an experienced enough to be able to build this in Rust, but I take it, but I take
|
|
it, you're coming from a C background, yeah, yeah, very comfortable with C, so very
|
|
enough.
|
|
No, I mean, the one thing, yeah, the one thing that before, when Rust and before the last
|
|
kind of remark a question on this, the one thing that I find very interesting about Rust
|
|
is actually the comprehensive ecosystem that comes with it, starting with the standard
|
|
library, which is really, really rich, never mind the crates ecosystem, where you can
|
|
simply simulate Python or other languages of recent persuasion.
|
|
Let's put it this way, where you can simply put in a pick and choose with regards to functionality
|
|
want to implement, I'm just wondering, what on what shoulders is part by standing with
|
|
regards to certain to third party code, why is it all written right from scratch?
|
|
Mostly written from scratch, yeah, wow, okay, yeah, yeah, there's nothing we used.
|
|
Even the fact that if you describe this as an experiment, quite a few distros and Fedora
|
|
I reckon, it's one of them because 34 picked part, why as opposed to replacements have
|
|
adopted this as the standard audio subsystem, any comments on this?
|
|
No, no comments, so I can say like, I mean, before
|
|
Fedora or before I suggested trying this out in Fedora, I had been running and testing
|
|
the audio server part for like a year and a half probably with some other people, so it's
|
|
not exactly like out of the blue, when it was suggested to be adopted for Fedora, it was
|
|
already working quite well, okay, but what happened this, it accelerated things enormously,
|
|
so it like when it was suggested in Fedora until it was adopted by Fedora, things just got
|
|
rewritten, major subsystems, I think the whole post audio thing was just written in like
|
|
those three months leading up to the release, it was just like, okay, this compiles and it runs
|
|
and it seems to run better than it did before, okay, ship it and literally in Fedora at the last minute
|
|
we patched up stuff, so I'm always sitting there or no, this is never gonna survive the task of Fedora,
|
|
right? I mean, you follow principles to develop these things, you test them, but it's always like,
|
|
whoa, I don't know where this is going, but it spends surprisingly well, until the last minute,
|
|
I was sitting there and something has to go wrong, this is impossible, how can this work so well?
|
|
People you heard adopted, so people you heard it your first, world domination accident, okay,
|
|
by accident, well, accident, it was a lot of hard work, of course,
|
|
but yeah, these things, replacing an audio subsystem is dangerous, you never know where you can
|
|
handle, right? Exactly, I mean, it's not something you that you do over weekend being a distro,
|
|
and if rumor is anything to go by, other distros like commodity goods you're going to,
|
|
are taking a very serious look at this, I mean, Ubuntu has packages as part of their standard
|
|
repo packages, so you can simply install popware within with a few changes, and with your
|
|
system deconfiguration, it's simply replaced as part of audio, as it's a dropout replacement
|
|
for part of audio, nevermind other little distros, so I reckon the acceptance curve is quite
|
|
steep at the moment, with regards to popware. Yeah, yeah, it works out really well apparently,
|
|
I mean, no comments, in general, it's, it works, it works. That's good to hear, just as you're
|
|
the architect, delete architect and you're the main implementer, I suppose. How many other people
|
|
are working on this project, red hat or not? It was in the beginning, just me, we have
|
|
some people from Colabra that were a wire plumber, that's an alternative session manager,
|
|
which is a bit more powerful than the toy session manager that we ship with popware and that is
|
|
currently used, and mostly the Bluetooth stuff was written by other people, by two or three,
|
|
mainly two or three other people. So the court team is a handful of people like two to three
|
|
or something? Yeah, yeah, okay. Yeah, and they are all in plumber at it? No, no, no, it's just me.
|
|
Fair enough, where do you see this project going? Other than what domination that is?
|
|
Yeah, yeah, yeah, yeah, we just keep going. So I think for example, for the moment,
|
|
there is the goal of having feature parity with both audio and jack. Okay.
|
|
So there's a couple of modules that don't really work yet, and a couple of things are
|
|
implementing, so we're going to move to that. But then probably, after that is done,
|
|
we are going to start to think about all the new things we can do and try to redesign
|
|
some of the audio experience, like, I don't know, I don't know exactly, GUIs to configure things
|
|
possibly. There are quite a few nice GUIs for pulse audio. For example, the equalizer comes to mind.
|
|
Any plans for this? Yeah, so feature parity, as I've said, then an equalizer is needed.
|
|
That's how this will be implemented. I don't know exactly yet, or how do we want to do this in
|
|
general? Like, for example, there is now also easy effects, which is native pipe wire. It used
|
|
to be pulse audio. So easy effects actually uses the pipe wire native filter plugins.
|
|
We implement the filter chain, and it wraps like existing plugins.
|
|
That are actually coming from pro audio space, like LV2 plugins, a lot of spot plugins.
|
|
There's going to be a bridging of these things, like pro audio effects that will be used more.
|
|
They also come with a GUI that maybe we don't want to show to regular users. They're very fancy,
|
|
and sometimes complicated. Interesting, because LV2, of course, rings well in the context of say
|
|
something like audacity, where you can get a lot of plugins for audacity coming from LV2 and
|
|
other spaces. So if you plan to integrate this native filter pipe wire, you're seriously taking a
|
|
look at the pro audio space, you know? Yeah, so there's a couple of, like, for example,
|
|
there's an effect chain in the pipe wire that you can load, and you can make like an arbitrary
|
|
graph of lots of plugins currently, so you can build your little effect chain.
|
|
But you can just run any jack application on top of pipe wire.
|
|
natively, wow, okay. So pipe wire is compatible with post audio applications and jack
|
|
applications. So all jack applications are dual. You can run multiple pipe wire,
|
|
the only jack. Okay. Wow. Interesting. That sounds very, very fascinating, especially if you're
|
|
taking a serious look at it, because I see the kind of the Linux audio space dividing into a pro
|
|
sector, and the more consumers oriented stuff like like the like the Windows or the other
|
|
other mince of the world, where simply take, where simply take a USB stick and have a system
|
|
up and running in about 10 to 15 minutes max, whereas a post audio workstation requires a lot of
|
|
more configuration here, and hence the difference between some technical parts audio and jack for that
|
|
matter. Yeah. So if you take a Fedora 34, you can just run Katia or Carla and see the pipe wire
|
|
graph using the jack API and see your post audio apps there and make filters and route signals.
|
|
It's all one big audio thing. So it's it's kind of like a unification. It's not exactly a
|
|
unification, because they're still two different APIs. And they don't exactly know about each other,
|
|
or maybe they shouldn't know about each other, but I think part of the future is also figuring out
|
|
where does this go and how can we bring those close to closer together. These kind of things.
|
|
Interesting. Given the fact that both pulse and jack are heavily tied into Linux systems and
|
|
BSDs use something completely different, I take it pipe wire has been designed in the implemented
|
|
along the same way, or do you for some wild reason could imagine actually a port to another operating
|
|
system outside the Linux space? I would have picked too much effort. I can't imagine it,
|
|
but I'm not interested. If somebody does that, I'm happy to merge pouches.
|
|
Well, the code base is under gpn license, baby BSD. MIT. MIT. Even more liberal. Okay, so
|
|
very liberal. People, people, the BSD people who are out there listening, looking for something
|
|
really extravagant in terms of sound system. The code base is on the T just max is felt out.
|
|
And along with the same. I received lots of me as the pouches.
|
|
Should you do? Okay. So it's part of our already up and running on BSD. It should just be
|
|
Wow. Okay. Out of the box. People you heard in your first. What's next? ZOS or Windows or something?
|
|
When I'm joking. No, I mean, joke aside, given the fact that WSL 2.0 now has a full-blown
|
|
Linux kernel integrated, you could even toy with the idea of running this on Windows, I suppose.
|
|
I think you have BALS audio runs under that system as well. So it shouldn't be a big deal.
|
|
So you can replace the drop-in replacement for BALS audio with power.
|
|
If you choose to do so. Another more philosophical question, because
|
|
it's similar to PULT. You're tying very much into the guts of the system. Do you perceive
|
|
something called system D, especially for example, in a in a norm context as the right approach
|
|
with regards to system management, because system D for those people who do not know listening
|
|
to this podcast system, D started out as a simple in-it demon replacement, but has now
|
|
kept up much, much, much, much more of the user land space, ranging from login session management
|
|
right up to virtual machine management, all the rest of it. So a little bit of more background.
|
|
Noum has, I think a couple of years back, maybe recently decided to tie in more with system D,
|
|
which so far has to say it didn't make VBSD people really that happy, because
|
|
GNOME was kind of a serious contender for, I wouldn't say, a standard desktop and on BSE systems,
|
|
but once used quite a lot, let's put it this way. But given the fact that system D only runs on Linux,
|
|
and if GNOME makes it more dependent, let's put it this way on system D, that makes it
|
|
harder and harder for the BSE people to develop as a standard desktop environment.
|
|
Any comments on this? Any thoughts about system D and the kind of high level of integration
|
|
that this more and more encompassing ecosystem brings with it? Needless to say, there is of
|
|
course a pipeline system D service unit to start up the whole thing. Yeah, we use it to start
|
|
up things. It works for that, I guess. Other people use other systems.
|
|
Yeah, I'm not, I don't know, I don't really have a lot of opinion about these things.
|
|
So what we use in system D, pipeline is very little.
|
|
And I think the stuff that we can use, I think something like login, D, it monitors the
|
|
logins and stuff like that, is handy because in Bluetooth you can only have one user register
|
|
Bluetooth services. So if you switch consoles or switch users, we need to, they register from one
|
|
user and register for the other or else there is no Bluetooth for that user. So I mean, if that
|
|
service is there, we can use it, we can make use of it. So I don't know, if there is another system,
|
|
we can conditionally compile support for that and then it works as well.
|
|
So you perceive system D as that toolbox that it was originally set out to be rather than the
|
|
threat as some people figure it to the whole units philosophy.
|
|
Oh, no, no, I don't, I don't feel threatened or I don't think that the Unix philosophy should
|
|
feel threatened. No, but yeah, I mean, it's getting big, of course, there's a lot of stuff that goes
|
|
in there. As long as it's separated in, in separate modules and you can, we can choose.
|
|
It's a bit like GStreamer, if you look at GStreamer, it's huge, thousands of plugins
|
|
wrapping any library that you can find. So yes, if you pull a GStreamer, you pull in everything,
|
|
almost according to multimedia, I guess. But it's separated in modules, you pick and choose,
|
|
you disable the things you don't want. If you have that flexibility, I don't see a problem really.
|
|
So for pipeline as well, so there is a clear separation of three items. Like for example,
|
|
the actual data transport, it doesn't need system D, it doesn't need any of those services.
|
|
It just shuffles data around. There's nothing there. And then you have the session manager,
|
|
which is probably highly specific to where you're running. So there I can see integrations with
|
|
GNOME specific things to get config files and settings should be used and integrated control
|
|
panels and all of these things. So that's living in a session manager. So the question is,
|
|
how do you build the session manager for your desktop? You have tools to do that. It's a bit like
|
|
like you're making a compositor with Whale and try it. You have toolkits like Sway or
|
|
Mutter or KDE. So you build where you're going to run your stuff in, I guess. So I guess it's the
|
|
same with part wire as well. So I don't really see that we are at some point. We have to choose
|
|
or we have to integrate everything with system D and there's no way around it. I don't see that
|
|
future at all. Interesting perspective. Is there anything that we've missed out on regarding
|
|
part wire so far before we close off the show? No, well, I think you asked about the future of
|
|
I think we've seen one big piece. Oh, let's go ahead. Yeah. So it started out as a video framework
|
|
but we haven't talked about where video is going because audio sort of took over and then it started
|
|
be placing these audio deans. But actually the original goal was to make video processing
|
|
pipelines for VJ purposes. There's a couple of of applications on other platforms that
|
|
that are very impressive to do like this live video combining and mixing and different apps
|
|
working together. So I see something like that also being created in part. So all new thing in Linux
|
|
is there's nothing like it. So I think that's also interesting to see. Yeah.
|
|
So people you already first for the next big thing with regards to audio and video, stay tuned.
|
|
Okay, watch this space and of course the whole code is available on GitHub, I suppose.
|
|
For people who want to check it out, of course the links will be in the show notes,
|
|
we normally at the end of the show we normally have something called the boxes that stands for
|
|
the picks of the week where we discuss anything that comes to mind. So if there's anything that has
|
|
crossed your path, so to speak in the last week or two, that you think worth it would be more
|
|
mentioning now is the time. It can be anything. A movie, a book, something that you rediscovered
|
|
recently, really anything goes. Yeah, I actually learned some new Rubik's cube tricks.
|
|
By all means. Yeah, yeah, yeah. I was frustrated with, well, I learned to solve the Rubik's cube
|
|
when I was like eight years old. Before you continue, sorry, we may have younger listeners among
|
|
the audience who do not know necessarily what Rubik's cube is. How do I explain this cube as six
|
|
sides with six colors and now it's like blocks you, turn them, you twist them and yeah, the colors
|
|
can be mixed up and the purpose is to twist the sides and the middles until all the colors are
|
|
but they're supposed to be one color on each side. It used to be the latest range to be 80s,
|
|
back in the day. Yeah, yeah, yeah, yeah, yeah, yeah. So yeah, I was doing the, there's a technique,
|
|
the C, the C-fold technique, but to the upper layer, I wasn't really good at it. I only knew like two
|
|
tricks. So I actually learned the other, well, I do the two, the two look up method for the orientation,
|
|
the permutation. So I learned, I learned like, I don't know, 16 algorithms is it or maybe, or 20.
|
|
So and now I'm a bit faster, now I'm happy. So yep. So you can solve that puzzle because essentially
|
|
it's a puzzle. Under it with an under minute? Yeah, under minute I can do. Wow, okay. Yeah,
|
|
so next task will be doing the finger tricks so that I can do it under maybe 45 seconds.
|
|
Okay, so it's never learning rust. So Rubik's cubes were all champion chips watch out for
|
|
whim, for Mr. Wimtame, just in case. You heard it here for us people. Okay, my pox of the
|
|
weeks actually make my own cafe. I'm cafe for those people who don't know it is a yogurt like
|
|
milk derivative. It's not the part I'm looking for. It's essentially for multimedia, pretty much like
|
|
your word. You combine the stuff in supermarkets, but if you do it yourself like your word, I'm
|
|
I'm tempted to add, it doesn't even come close to the stuff that you can buy in terms of your
|
|
full control over the process. You can do your own stuff. You can control the level of fermentation.
|
|
The stuff you combine the supermarket just doesn't even come near if you do it by yourself. And
|
|
of course, kefir coming from central Mongolia is probably one of my healthier drinks
|
|
rather than processed milk, but that will be my epochs of the week. Wimt, that has been more
|
|
than interesting. Never mind fascinating. It was a pleasure to have you on the show. I would
|
|
like to thank you for your time and look forward to having you back in a couple of months
|
|
to talk about the latest and greatest about Papua. Absolutely. It's a pleasure to be here.
|
|
Thank you. Thank you. And cut. Wimt, that has been more than interesting. Let's put this way.
|
|
I learned a lot. And this show is of course recorded. It should go out hopefully before the years
|
|
over. We have a little bit of a backlog with episodes. Just we are publishing this on HPR.
|
|
If you take a look at the website, you know where to find us, but if I don't forget it, of course,
|
|
I will send you a mail once it's live. Yeah, great. And thanks again for your time.
|
|
You're welcome. And do you have a link for this Rubik's cube thing?
|
|
Let me see you. I mean, you can send it to me via mail. That's not a big deal.
|
|
If you find it, simply should be a mail that would be great.
|
|
Yeah. Yeah. I'll send you a link to to the one that I used. But I composed my own algorithms from
|
|
different sites, but just not too much. Bim, again, thank you. Well, I know my duchess crap.
|
|
It's very good. And you see worse. So I won't bother with this. And as I said, keep up the good work
|
|
and speak to you soon. Okay, thank you. Okay, thanks. Bye.
|
|
You are currently the...
|
|
This is the Linux in-laws. You come for the knowledge. But stay for the madness.
|
|
Thank you for listening. This podcast is licensed under the latest version of the creative
|
|
commons license tab attribution share like credits for the entry music go to bluesy roosters
|
|
for the song salute margo to twin flames for their peace called the flow used for the segment
|
|
intros and finally to the lesser ground for the songs we just is used by the dark side.
|
|
You find these and other duchess license under creative commons at your mando. The website
|
|
dedicated to liberate the music industry from choking corporate legislation and other crap
|
|
concepts.
|
|
You've been listening to Hacker Public Radio at HackerPublicRadio.org. Today's show was
|
|
contributed by an HBR listener like yourself. If you ever thought of recording a podcast,
|
|
then click on our contributing to find out how easy it really is. Hosting for HBR is kindly
|
|
provided by an honest host.com, the internet archive and our sync.net. Unless otherwise stated,
|
|
today's show is released under a creative commons attribution share like 3.0 license.
|