I wrote a small plugin for spreading mono content to stereo and I would
like to receive some feedback on it from people more knowledgable in DSP
matters than me.
It has one nice property: It spreads the signal over the spectrum by way
of a conjugate pair of random phase all-pass filters, and since it's a
conjugate pair it sums back to unity when down-mixing to mono. So, no
ugly comb filter effects like when downmixing a Haas-expanded signal.
The page has an example sound..
How it works:
It's actually rather simple:
1. create a vector of random phases (matlab notation):
filter_length = 1000;
spread = pi;
hfft1 = exp(-1i*(spread*rand(filter_length,1) - spread/2));
And for the second filter just take the complex conjugate:
hfft2 = conj(hfft1);
This ensures that what is a phase theta in the first filter becomes a
phase of -theta in the second filter, and summed that just gives a phase
2. Then assemble the coefficients such that it corresponds to a fft of a
real signal and do the inverse fft (possibly I have a small error here
which i needed to fix with the 'symmetric' flag in matlab):
f1 = ifft([1; hfft1; conj(hfft1((end-1):-1:1))], 'symmetric');
f2 = ifft([1; hfft2; conj(hfft2((end-1):-1:1))], 'symmetric');
3. The two IRs f1 and f2 implement the pair of filters and can be
applied via convolution (which the above plugin does).
It seems to be possible with little ill effect to reduce the length of
the filter down to a size of 50 samples or so by just cutting it off
before the convolution.
What do you think?
Dear Sir or Madam,
( Summary: Sonoj Convention is 2023-10-07 in Cologne, Germany. Register now at https://sonoj.org )
Are you a musician, sound designer, or just passionate about open source technology and music? If so, we're excited to invite you to the 2023 Sonoj Convention, which will be held on October 7th and 8th at our usual location in Cologne, Germany.
After the disappointment of having to cancel our past three events due to the pandemic, we are thrilled to finally welcome you back to our community. Admission is free, but donations are welcome to help us cover the costs.
This year's convention is shaping up to be even more special than before, with exciting networking opportunities, informative "Lecdems" (lecture-demonstrations), hands-on workshops, live performances, and more.
Here are some highlights of what you can expect at the event:
* Networking Opportunities: Connect with like-minded individuals, exchange ideas, and make lasting connections with others who share your passion for open source music and audio production. Our community is welcoming and inclusive, with something for everyone.
* Informative Talks and Demonstrations: Discover new ideas and approaches in our thought-provoking presentations and lecdems, delivered by knowledgeable speakers who are experts in their fields.
* Interactive Workshops: Learn and experiment with the latest open source music and audio production tools and techniques, guided by our friendly and helpful instructors.
* Live Performances: Experience the diverse and captivating sounds of our talented and dynamic performers, showcasing their usage of open source technology.
We will be providing a supply of simple food for free so you can enjoy the event with a full stomach. Of course there are plenty of opportunities to purchase food in the surrounding area as well.
Don't miss this opportunity to connect with the vibrant open source music and audio production community. Register now on our website https://sonoj.org for the 2023 Sonoj Convention (or by replying to this e-mail) and we look forward to seeing you there!
I've been contemplating trying out Pipewire as a replacement
for Jack. What is holding me back is a what seems to be a
serious lack of information. I'm not prepared to spend a lot
of time and risk breaking a perfectly working system just to
find out that it was a bad idea from the start. So I have a
lot of questions which maybe some of you reading this can
answer. Thanks in advance for all useful information.
A first thing to consider is that I actually *like* the
separation of the 'desktop' and 'pro audio' worlds that
using Jack provides. I don't want the former to interfere
(or just be able to do so) with the latter. Even so, it may
be useful in some cases to route e.g. browser audio or a
video conference to the Jack world. So the ideal solution
for me would be the have Pipewire as a Jack client.
So first question:
Q1. Is that still possible ? If not, why not ?
If the answer is no, then all of the following become
Q2. Does Pipewire as a Jack replacement work, in a reliable
way , in real-life conditions, with tens of clients,
each maybe having up to a hundred ports ?
Q3. What overhead (memory, CPU) is incurred for such large
systems, compared to plain old Jack ?
A key feature of Jack is that all clients share a common idea
of what a 'period' is, including its timing. In particular
the information provided by jack_get_cycle_times(), which is
basically the state of the DLL and identical for all clients
in any particular period. Now if Pipewire allows (non-Jack)
clients with arbitrary periods (and even sample rates)
Q4. Where is the DLL and what does it lock to when Pipewire
is emulating Jack ?
Q5. Do all Jack clients see the same (and correct) info
regarding the state of the DLL in all cases ?
The only way I can see this being OK would be that the Jack
emulation is not just a collection of Pipewire clients which
happen to have compatible parameters, but actually a dedicated
subsystem that operates almost independently of what the rest
of Pipewire is up to. Which in turn means that having Pipewire
as a Jack client would be the simpler (and hence preferred)
 which means I won't fall flat on my face in front of
a customer or a concert audience because of some software
not posting to any of LA* mailing lists often in the last years, but today I thought
I should make an exception to point out that it's now exactly 20 years ago that the
first Linux Audio Conference or "LAC" for short (then still called "Linux Audio
Developer's Meeting") took place at the ZKM in Karlsruhe, Germany.
Wow, 20 years come and gone so quickly! It's great to see a couple of "early
adopters" are still around today here, and many new names have entered the scene
in the meantime and left/leave a lasting footprint in it.
As a quick "trip down memory lane", here's a short list of things that happened back then:
- Takashi Iwai dove into the innards of an ALSA driver
- Fernando Lopez-Lezcano introduced the PlanetCCRMA distribution, based on Fedora
- Steve Harris explained the concept of a Bode frequency shifter as a LADSPA plugin
- Paul Davis held the keynote, AND spoke about JACK, AND shared his experience of writing
a DAW that is at the forefront of free, open-source and cross-platform DAWs today.
- Dave Philipps looked at the historic development of Linux audio, from OSS to ALSA and beyond
- Jörn Nettingsmeier managed to get the audio part of the presentations both recorded AND live-streamed
at a time when "streaming" was still a term unknown to most of us.
- The term "Linux Sound Night" already existed, but was..perhaps not as musical yet as you might have expected :-).
- And, we also learned that schedules are not easy to keep - I believe after the first day we
ran some >2 hours late, and people begin to STARVE.
- Posing in front of the ZKM "Kubus": https://linuxaudio.de/LAC2003_Posse.jpg
For some more memories, see also http://lac.linuxaudio.org/2003/zkm/
Of course, on the downside it has to be noted that Corona has impacted us too -
after an almost perfect track record of conferences or mini-conferences every year,
2021 and 2022 didn't see any event happening. There is a certain risk now that it
won't recover, but that's in our hands to change (sidenote: I have talked to my
contacts at ZKM here in Karlsruhe in January, but they are unable to finance and/or
organize an event of this size at the moment - certainly somewhat influenced by
current economics, but I am hearing ZKM has actually reduced their headcount quite
a bit, and after the recent passing of its artistic-scientific chairman, Peter
Weibel, it will have to be seen how his successor, Alistair Hudson, will steer
it into the future).
Whatever LAC's future will be, free and open-source audio software is certainly
flourishing, and will continue to do so. It just would be soo nice to enjoy the
results together with real, tangible people :-\.
If anyone sees an option for hosting a future LAC, lac-team(a)lists.linuxaudio.org
is willing to listen to proposals you might have (or just discuss it right here).
Well, the heck - there is no steering committee or anything in place, so I guess
the first one brave enough to say "I think we can do it" will get the job :-).
I am forever grateful to all the folks who have enriched and continue to enrich
our open-source audio life by writing or presenting software, creating
documentation and tutorials, hosting (AND attending) conferences like the LAC,
and whatever else helps to keep the penguin dancing!
figuring out the syntax for c++20 concepts I run into challenges. With a two
parameter template concept like swappable_with or convertible_to is it always
necessary to use a requires statement like this:
void f(T t) ...
With single parameter concepts like integral a syntax like this will work:
void f(T t)...
Also with single parameter concepts a statement like this should work:
std::integral auto my_variable;
Will that work with a two parameter concept like the above convertible_to? I
haven't seen/found a syntax which does it.
Any help is appreciated, definitely including a good read that WILL
demonstrate or demystify these things.
* Website: http://juliencoder.de - for summer is a state of sound
* Youtube: https://www.youtube.com/channel/UCMS4rfGrTwz8W7jhC1Jnv7g
* Audiobombs: https://www.audiobombs.com/users/jeanette_c
* GitHub: https://github.com/jeanette-c
Don't care about money
It doesn't give me half the thrill <3