Cant separate mono signal into LR! Problem is not as simple as you think!
Hey everybody I'm somewhat new to M4L and I know that my Topic seems really dumb. You might be thinking "Just use the Right or Left signal coming from "Plugin~", but that just isn't going to work for me.
I'm turning one of my Effect Racks into a M4L device so I can make it take up less space, and possibly be lighter on CPU (idk if it will lmao).
Basically its a stereo device that takes a stereo signal, drops it down to mono, then inverts the right channel only, delays it by a few MS, then removes the mid channel.
Signal -> Mono -> Invert Right -> Delay -> Side Only
But I cannot for the life of me get how to turn the mono signal I get from "+~" into a Left-Right pair.
Literally all I need is a way to turn the mono signal coming out of "+~" into a Left-Right pair, but because the SEO of M4L documentation is completely garbage, I can't find any solutions.
I'm sure there is a simple way to do this but I don't have a good grasp on M4L logic.
Please help, thanks.
EDIT: TLDR: I'm trying to replicate an Audio Effect Rack with M4L to improve on efficiency.
Below is a diagram describing the Audio Effect Rack in question.
--Guide--
============================================================================================
>[MSEQ(x)] - Linear Phase M/S EQ with an Brickwall HP at 22khs on the "mid" channel and a
Brickwall LP at 0hz on the "mid" channel, so only the Side channel remains, it
has no mono image and nulls completely when I click the mono button on my
interface.
>[1-3ms delay] - This is a 0 Feedback Delay with a time range that only goes from 1ms to 3ms
>[Big Mono L] - This is the sum of [Device In L] and [Device In R], but panned hard Left
>[Big Mono R] - This is the sum of [Device In L] and [Device In R], but panned hard Right
============================================================================================
--Effect Rack Diagram--
==========================================================================================================
[Device In L]→┐ ┌→[Big Mono L]→─────────────→[1-3ms delay]→┐ ┌→[Device Out L]
├→[Mono]→┤ ╞═→[MSEQ(x)]═→[-6db]═→╡
[Device In R]→┘ └→[Big Mono R]→[Phase Invert]→[1-3ms delay]→┘ └→[Device Out R]
[Device In L&R]→──→[Mono]→──→[Device Out L&R]
==========================================================================================================
your question about +~ to stereo pair is easilly answered
if one ignores that there is nothing stereophonic,
but simply a mono signal sent to 2 outputs.

If you post your patch with decriptions about what the goal is,
I am sure it would be easy to do.
i was about to post the same answer last night and then deleted it; the description of his DSP algo does not make any sense and it is probably more a question about the usual ableton quirks in regard to "stereo channels".
Maybe it is simply bad explained, because language or whatever,
but as you say , this :
Signal -> Mono -> Invert Right -> Delay -> Side Only
can't exist, there is no Right after Mono conversion
the holy grail of side signals of a mono source.
@Source Audio
Yeah I know its a weird issue. But I have a working version in an effect rack that works really well at stereoizing narrow signals.
"can't exist, there is no Right after Mono conversion"
I disagree. For one, the effect rack that I use almost daily uses this algo and works as intended, so I know without a shadow of a doubt that this is possible. Secondly, There can still be a left and a right in a mono signal, so long as the mono signal is running in a stereo pair of channels, ie; mono in the sense that the two stereo channels are identical, moreso than there just being 1 channel.
What I want is Signal A collapsed to mono, then I want that mono signal panned Hard Left and Hard Right, so that I can invert the phase of the Right side of Signal A. When the 2 Hard Panned elements recombine, It creates a signal that is entirely within the side channel, ie; there is no similarities between the left and right pair.
In Ableton, If you take a signal, mono it, then you can still do things to the left and right channel separately, and that's what I'm doing with the effect rack I'm trying to convert into a M4L device.
I knew that people would misunderstand my problem, which is why I tried to clarify how non-elementary this issue actually is.
All I need to know how to do is take a stereo pair from the "device in section", mono that stereo pair, then turn that mono signal into two identical signals that are panned hard left and right, THEN all I need to do is invert the phase of the Hard Panned Right channel.
I know that its possible, and as of right now I actually have it working, but I'm using a BEEP add-on thing to pan the mono signal left and right, and I'd really just like to have a simpler way to do it.
here is what you ask for

I don't care what live routings into or out of racks or whatever is.
We talk plain signal paths.
You asked to mix stereo signal into mono, and simply route it to 2 destinations, inverting one of them.
if you mix them to mono later, you'll hear nothing.
Eric T. wrote: "There can still be a left and a right in a mono signal, so long as the mono signal is running in a stereo pair of channels"
Well, no.
We have a slight difference in terminology.
Let's find the same language in the audio dialect:
Mono is one channel. There is no left, right, mid or side.
Two channels mixed down to one is Mono.
Two indentical Monos in two channels we like to call Big Mono. Through loudspeakers this can sound stereo-like because of speaker differences and room resonances .
By duplicating a mono channel and manipulating one or both sides in a certain way, you can get Stereo. There are various methods for this. Stereo must have two channels in a relationship to each other that creates spatiality. Otherwise it is not called that.
After manipulating one or both channels to an extreme extend, you get Dual-Channel, which means two independent signals, one left, one right.
The whole audio world makes stereo out of mono with delay, phase, level and frequency. If I understand you right, you just have to do what Source Audio suggests. Duplicate the mono signal and manipulate each channel to your heart's content.
Anyway, maybe I'm missing something. I do not understand what this has to do with Ableton Live. It's just channels, right? I don't know Ableton, but assume it has channels and can split/duplicate by sends and busses and pan them. You don't need Max to do this, but it could make sense in your application to deliver the signals already prepared to the Ableton DAW.
It looks as Eric tries to create stereo widener of some sort.
that is done by L+R & L-R mix with gain adjustments and
other toys being phase shifts, delays, crossovers etc
to make existing differences in stereo signal more prominent
or to fake mono signal into stereo.
But whatever one does, if one cares about mono compatibility, one has to insert that mono mix preview button somewhere, to avoid
stereo -> mono disaster at the end.
Hey Source Audio, This effect is totally mono compatible, because the processed chain runs through a "side only" effect before returning with the unprocessed mono signal.
The effect rack version maintains a completely clean mono signal, and so does my current implementation of the M4L device.
Trust me, I'm quite a stickler for mono compatibility. And this plugin ensures a wide stereo image (more than 6db quieter than the mono signal ofc), that leaves a completely in-tact mono image no matter the processing choices.
If you want, I can send you a video that shows that the effect rack leaves the mono image completely unaffected. There is no phase cancellation.
Hey Peter, Thanks for the info bomb. Yeah sorry I'm not an expert on all the nomenclature, but you really hit on what exactly I'm trying to do. "Big Mono" is the goal here; to take a stereo pair, make the stereo pair mono, and then use that mono signal to make a "Big Mono" pair, to which I invert the phase of one of those "Big Mono" signals, then recombine it with the original mono. The thing is, the two "Big Mono" signals have to be hard panned left and right. One signal hard panned left, and one signal hard panned right (The device also has a slider to preserve the sources side channel, and there is a delay, but I'm not worried about that in this context)
"You don't need Max to do this"
Precisely, I don't need max to do this. As I've said before, I already have a working version of this in an Ableton Audio Effect Rack, but I want to use Max because I want to customize the aesthetics of it, and there's a chance that its actually lighter on my CPU than the Audio Effect Rack.
Below is a poor diagram to describe what exactly I want to do.
Again, all I want to do is mono a stereo pair, (turn 2 signals into one signal), then convert it *back* to a stereo pair of Identical signals, one panned hard left, one panned hard right. Thats it.
The issue is that I cannot for the life of me find a way to simply make a "big mono" pair of identical signals panned hard left and right, AFTER making them mono.
And as I said previously, I do have the current version working using a BEEP addon that allows me to pan the single mono channel hard left and right, but I want a simpler implementation of it.
For the device to work as I intend it to, I need the source signals to be collapsed to mono BEFORE any of the processing.
Again though, thanks for the help, I hope the diagram helps elaborate exactly what I need help with.
This is the step I'm having issues with
↓
[Device In L]→┐ ┌→[Big Mono L]→─────────────→[Device Out L]
├→[Mono]→┤
[Device In R]→┘ │ └→[Big Mono R]→[Phase Invert]→[Device Out R]
└→─────────────→─────────────→──→[Device Out L&R]
In your scheme above, we don't care about <Device In L/R> because their sum is mono and ALL stereo information got lost (really!). Now we have a mono source and you wrote that correctly in your drawing. Then you duplicate this signal, pan the two hard left/right and invert one phase. This gives a phasing signal on two speakers and in an ideal world there would be silence when you combine the two equally to mono again.
Then you seem to mix the mono source to the half-inverted Big Mono pair. Maybe it's just running in parallel channels. However, the audible impression of <Big Mono L> gets louder because the source adds to it. The right channel changes the sound because it's invertion is partially compensated by the original mono signal. This method gives a tunable phasing effect. Technical shortcomings depending on the DAW can result in interesting side effects.
The result may be or may not be mono compatible, controlled by the level relationship. Depending on the levels, the soundfield can also tilt to one side (which could give better mono compatibility :-) and yes, here Max joins the game. It is relatively easy in Max to modulate one channel and automatically hold the balance if wanted. Would be tedious with DAW automation.
I would stay in Max for that and probably add some vst's here and there. If the mix in the other DAW doesn't quite match, you can always go back to Max and change a few numbers.
let´s leave aside suggestions how to change his DSP: connecting a one channel signal to a 2 channel output is done like shown in fig. 1 by source audio.
Hey Peter, thanks for the reply! A few things real quick:
1] "This gives a phasing signal on two speakers and in an ideal world there would be silence when you combine the two equally to mono again."
This is totally correct, but like I said, I'm actually delaying these signals (equally between the Big Mono L and R) by a few ms. (1ms to 3ms max), so there is a noticeable phasing when you change the delay amount, but somehow it only affects the side, and when I collapse down to mono, there is no phasing.
2]"...<Big Mono L> gets louder because the source adds to it..."
Yeah I actually counter this with a few things. Firstly, in the Effect Rack that I'm basing this M4L device on: the Big Mono L&R actually go through a Linear Phase M/S EQ that removes all mids, therefore only the interactions between the Big Mono L and Inverted Big Mono R are being preserved. If I didn't run this Linear Phase M/S eq, then the un-effected Big Mono L would in fact add to the source signal, creating loudness issues like you said. Secondly, I'm reducing this chain by -6 db and delaying it by a very small amount. All these things work together to make a relatively "natural" Side Channel that doesn't have any effect on the mono image.
The Linear M/S EQ, and Delay are removed from the diagram to remove unnecessary detail and focus on what my issue really is; separating the Big Mono L&R from the Sum of the incoming stereo pair, then inverting the R.
Its surprising to say that this effect genuinely doesn't affect the mono image at all, and I can actually prove it from a null test (if you want, I could provide a link to a clip of me demonstrating this).
Let me elaborate:
Lets say we have incoming stereo signals XL and XR
If we run XL and XR into my effect, we can call the out coming stereo pair YL and YR
If we sum XL and XR we get the Big Mono signal I'll call XM
If we do the same to YL and YR, we'll get the Big Mono signal I'll call YM
If you were to invert the phase of XM and sum it with YM, You would get a -infinity null
Therefore XM and YM are mathematically indistinguishable, despite the fact that YL and YR are not identical to their corrosponding pairs XL and XR.
In short:
XL≠YL
XR≠YR
XM=YM
And its because of this fact that I use it so frequently on narrow or mono signals, to give me a quick way to stereoize things without causing mono compatibility issues. But because I use it so frequently, and because it uses 3rd party VST's that arent optimized for my particular use case, I thought it would be best to hand-build a device so I could optimize it.
BTW: I really just wanna say thank you for your help this whole time, its been a huge help.
Hey Roman, I really appreciate the input, but I fear that you might not really be understanding what exactly I'm doing. Everything you're saying is 100% correct, but I think you misunderstand what exactly I need to do.
I understand that summing the incoming stereo pair, and connecting the sum to the two outputs will create a big mono signal where there is two identical signals playing on the left and right channel. But if you take a look at my diagrams, there's actually a few more steps involved.
I'm going to put a more detailed version of the Effect Rack that I'm trying to rebuild in M4L, as to alleviate confusion.
--Guide--
============================================================================================
>[MSEQ(x)] - Linear Phase M/S EQ with an Brickwall HP at 22khs on the "mid" channel and a
Brickwall LP at 0hz on the "mid" channel, so only the Side channel remains, it
has no mono image and nulls completely when I click the mono button on my
interface.
>[1-3ms delay] - This is a 0 Feedback Delay with a time range that only goes from 1ms to 3ms
>[Big Mono L] - This is the sum of [Device In L] and [Device In R], but panned hard Left
>[Big Mono R] - This is the sum of [Device In L] and [Device In R], but panned hard Right
============================================================================================
--Effect Rack Diagram--
==========================================================================================================
[Device In L]→┐ ┌→[Big Mono L]→─────────────→[1-3ms delay]→┐ ┌→[Device Out L]
├→[Mono]→┤ ╞═→[MSEQ(x)]═→[-6db]═→╡
[Device In R]→┘ └→[Big Mono R]→[Phase Invert]→[1-3ms delay]→┘ └→[Device Out R]
[Device In L&R]→──→[Mono]→──→[Device Out L&R]
==========================================================================================================
...and what happens if you connect [*~ 0.5] to both inlets of [plugout~] ? what does not work with it?
Well Roman, what does not work is that it doesn't do what I'm trying to do.
What you're describing is not what I'm describing.
I'm describing the following:
Sum [plugin L~] and [plugin R~], lets call this "Signal A"
Take "Signal A" and hard pan it Left, (Which we will call "Signal A_L")
Take "Signal A" and hard pan it Right, (Which we will call "Signal A_R")
Then we need to invert "Signal A_R"
Then we delay both "Signal A_R" and "Signal A_L" by 1 to 3ms
Then we run both "Signal A_R" and "Signal A_L" through a Linear Phase M/S EQ that removes the mid channel. We can call the outputs of this EQ; "Signal B_L" and "Signal B_R"
"Signal B_L" and "Signal B_R" are strictly different, if we were to sum these two channels, they would null completely because they do not have a mono image.
Then we reduce "Signal B_L" and "Signal B_R" by 6db and send both to [plugout L~] and [plugout R~] respectively
We also route "Signal A" directly to both [plugout L~] and [plugout R~]
Connecting [*~ 0.5] to both inlets of [plugout~] is just going to halve the volume of any signal reaching [plugout L~] and [plugout R~], but this is unnecessary because the Pair "Signal B_L" and "Signal B_R" are equally loud as [plugin L~] and [plugin R~] because my effect creates a side channel that is almost identical to the mid channel without phase cancellation, so all I need to do is turn "Signal B_L" and "Signal B_R" down by 6db.
This does result in an increase in gain if the source signal is mono, but this is because my effect leaves the mono signal completely un-effected, and only ADDS a side channel that fits it. Therefore since all I'm doing is ADDING a side image to the stereo pair, it makes sense that the gain will increase.
Hey Source Audio, quick little thing:
"we don't care about <Device In L/R> because their sum is mono and ALL stereo information got lost (really!)"
This isn't necessarily true in my case because of the diagram I've provided. I run these two channels through a Linear Phase M/S EQ that removes the Mid channel, therefore, if I don't hard pan the Sum of [plugin L~] and [plugin R~], I will get no audio out of the Linear M/S EQ because the resulting image will actually just be a mono "print", (for lack of a better term), of the side channel.
I need to pan the two elements before the Linear M/S EQ so that I can remove the Mid channel, so that the two output signals of the EQ will only contain "side" information, thus leaving the "Mid" pass-through channel entirely unnefected. (Which is the whole point of me making this effect).
I'm going to go ahead and repost the diagram just so its extra clear what exactly I'm trying to recreate in M4L.
--Guide--
============================================================================================
>[MSEQ(x)] - Linear Phase M/S EQ with an Brickwall HP at 22khs on the "mid" channel and a
Brickwall LP at 0hz on the "mid" channel, so only the Side channel remains, it
has no mono image and nulls completely when I click the mono button on my
interface.
>[1-3ms delay] - This is a 0 Feedback Delay with a time range that only goes from 1ms to 3ms
>[Big Mono L] - This is the sum of [Device In L] and [Device In R], but panned hard Left
>[Big Mono R] - This is the sum of [Device In L] and [Device In R], but panned hard Right
============================================================================================
--Effect Rack Diagram--
==========================================================================================================
[Device In L]→┐ ┌→[Big Mono L]→─────────────→[1-3ms delay]→┐ ┌→[Device Out L]
├→[Mono]→┤ ╞═→[MSEQ(x)]═→[-6db]═→╡
[Device In R]→┘ └→[Big Mono R]→[Phase Invert]→[1-3ms delay]→┘ └→[Device Out R]
[Device In L&R]→──→[Mono]→──→[Device Out L&R]
Notice that { ═→ } actually represents 2 signals, whereas { ─→ } just represents one signal
"Then we run both "Signal A_R" and "Signal A_L" through a Linear Phase M/S EQ that removes the mid channel.""
and this and a few other things just do not make any sense.
a "linear phase brickwall EQ at 22 khz" does not remove the mid signal from a mono signal. not even from a stereo signal. :)
Hey Roman, You clearly did not read what I said.
:)
"linear phase brickwall HIGH PASS at 22 khz ON THE MID CHANNEL and a brickwall LOWPASS at 0hz ON THE MID CHANNEL"
This DOES remove the mid channel from a stereo signal, leaving you with just the side channel.
I am going to send you a link to a video that demonstrates this.
Hey Roman, Here is a link to an EQ removing the Mid Channel, Leaving only the Side Channel, Via Brickwall Filters.
:)
There is no point for me to talk about any theories and such here.
I simply don't care and also have no time to read any of that.
If it can be of help, check how to mix or invert signals , that is all.
you invert signal either by *~ -1 or by passing it through right inlet of
~- object.
by nature all msp objects add signals if multiple ones are connected to same inlet.
allready this info should help you mix whatever you want,
but with all respect,
taking that Device Out L is same as left part of Device Out L&R
this drawing shows only nonesense :

because it will result in muted Out R and overblown Out L
One would have to add another multiplier , in max you can't
connect same signal twice as shown in your screenshot.

Eric,
before you accuse people of making false statements, you may want to question your theory, which is not robust. To assume M/S in a mono source, so saying it's all already in what you get out, is a purely philosophical approach.
What you wanted to show with the EQ is no proof for "hidden" M/S in a mono signal. You declare two identical signals as M/S and treat them accordingly. That's fine and creative. But your manipulation itself is the effect, not some property of the source. You have changed one of two identical signals and enjoy the difference.
I'm not saying this because I want to lecture you. I just have the impression that you are ignoring the help of Roman and Source Audio because their clear thematic references do not fit your way of thinking. But maybe you've already realised that anyway. As a storyteller, I'm out of this discussion now ;-)
"I simply don't care and also have no time to read any of that."
now that you had the chance to learn about the secret effect of a filter at 0 Hz but you refuse to click it?
clicking the link would probably also have enlighted you why should buy bitcoins or spirulina tabs. chance missed!