Mid Side processor in Max MSP
Did you know how to extract mid and side from stereo signal?
Mid = L+R
Side = L-R
Mid = L+R
Sides = L-R & R-L
On a side note, by what factor should I scale the side audio by to account for the perceived difference in gain?
check the patch for scaling…
LR to MS patch:
----------begin_max5_patcher---------- 655.3ocyWtzbaBCEEdM9WACqbZcn5AXi6ttOYSxxNY5fMx1pCHbA4otMS5u8 BWAMN1x0hvijM3QWjgy2QGtBdbjkyhz8rbG6Oa+UaKqGGYYAkJKXUM1xIIb+ x3vbXZNKSSRXBoyD04jr8Rn980U3Qv3zEe+ZrWcwUoBoHLgAm5KY7v35yH1k vEwLIb0wOWLcmrtJpp51P4xMbw5ukwVJUZlh7bQSrwyU+DTdjfbQ1ObvMNm+ a3FiItnxpOMZT4gIsj3a0QreeSLAgUDS6OhUJQGdzNBhYHEDvOD+5i+ChZOG RV7Hl8364qEgwW4zo3P5HbHyLGma4Q1iye8zHX+rP6mjF+vezAHtgwQhVzwW FcO.ZJw0+n3n5xH+0Vl5O3nP2oKyqMxRP8tkTEteSsjy0z5NMVxrduKMFZO6 gF9lz2ng2o8eOZn4Lcd+w6Yh7WqKx6MTIdL98WSfOpyQnCTaw.zang.xWC75 2zC0XDCfGpoSOyddmfni1sCuiudirUaHdNNwcDmpkx1x4MrUx9Xe+3zvnEgh 05R4zNoQ2+wanpV5SIvQzIM5Nwa.k1kg7UwoEpUG7jNAdxEgGigLguAzWH1v hjZOXCmIbv1uMyN+GYxwjq9DwUWyffAJiD.aCF3eYWxHiAliSLWb7WuBJnr9 Kcq7zcYKquC0uGn8ypHhkK4hPIOUb3jnuXRa3QQLwgcQR3QaS4BYkHreP6Zm wZBahlHCplnDSzToYhMWSTu4kaIhUQCR02x5AwhAPs3VoVeTmoVSE6vsbah+ Qal8Ut7VXeynG3dkCZ6CKFpzAz6BLQRC7iuljwNR3uGxXdMKiM.YIul4QjhW XrH0OU8ZiylWOnkJ0yztwu1kyhAOM5u.MidAjA -----------end_max5_patcher-----------
"Side = L-R"
yeah, you wish. :)
"yeah, you wish. :)"
if you don’t believe that side=L-R, download this http://www.brainworx-music.de/en/plugins/bx_solo free plugin from Brainworks and compare the results. or if you use Live, you can do LR to MS transformation with two utilities and an effect rack. set the stereo width (maybe it’s called otherwise) parameter of one utility to 0% (Mid or mono) and the other to 200% (sides)…
Well it does Roman … unless you have a better way? If you do, please do tell us :)
somebody posted one here for me about two years ago … but i cant find it now.
mid/side means mono and not-mono … this can only be done by phase, -~
will do nothing. :)
start with the "mid" and you will see what i mean. how would you get the mid channel?
to be pedantic:
morgan is closer:
"Mid = L+R
Sides = L-R & R-L"
he at least knows that "side" is two channels. ^^
Subtracting L from R is the same as adding L to a polarity-inverted R. Yes, it is to do with phase, but only regarding a 180degree shift for all frequencies, which is the same as a polarity inversion, which is the same as multiplying an audio stream by -1, hence just subtracting them does work … no?
The only similar kind of matrix that I know of is the Gerzon 2-3 matrix, which attempts to separate stereo l/r into 3-channel mid/left/right. It uses ms encoding/decoding, but it isn’t the same.
"Side" is only two channels when it is mixed with the mid signal (even though that still doesn’t make sense :p ) … have you ever use an m/s mic array? It’s the exact same concept, the "side" signal comes from a bidirectional microphone because the two lobes of the polar pattern are mechanically 180degrees out of phase with each other (opposite polarity).
side is _not_ two channels– side is single signal coming from a figure of 8 directionality pattern — people can confuse the two lobes as being two separate signals; it is not
Yes, Terry’s first post is exactly it and what I should have posted in the first place.
"Subtracting L from R is the same as adding L to a polarity-inverted R"
might be, but S- is M-R and and S+ is M-L, and you dont know M yet. :)
and even if S- and S+ is only one channel in some application, the side can
never be R-L … because both sides would be (R-L)+(R-L) from what you say … hehehe :D
and mid is not the same as mono, mid is _not L+R.
"might be, but S- is M-R and and S+ is M-L, and you dont know M yet. :)"
You don’t need to know M to find S … as Terry posted:
… you can disagree all you like, but it does work :)
Post a patch that proves the above doesn’t work if you like.
i dont see how L+R=M.
the sum of L and R still contain everything what is different between
L and R, except parts which are 100% out of phase (which almost never
happens in a piece of music.)
ok when you say it work, show me your patch and i will see if it works :D
(pls keep in mind that i am a max4 idiot, i need a max5 attachement or picture
for aminimum of "compatibilty")
i have now checked that old patch i had made and in fact i was wrong and i now also know why.
what i once was building is a custom 3 channel format which is able to split LR into "LMR"
which gave more control of how to distiguish between mono and stereo material in the
mix. it is built completely different from that M/S industry standard, which i am a bit
suprised about now that is seems to be nothing special – mine is so much better. :D
but still show me the "working" patch pls.
Thank you for all your answer :)
I also would like to see working patch, and I’ve got some more questions:
Do you know some sound processing techniques especially dedicated for M/S which are more complicated than playing with loudness and Eq? For example mentioned brainworx M/S plugin is really awesome. Do you know what it does with side signal?
I have no idea what they do with their MS algorithms– maybe as a total guess they make the mid bassier or something. I’m not at all familiar with their plugins.
to quote brainworx own marketing:
"bx_meter is not the tool that will automatically make your mixes sound better, of course, but it will give you some insight in what you are doing when you are mixing or mastering, and understanding the correlation of dynamics, M/S, phase and levels by listening to your music will help you mix / master better."
In other words all ms processing really allows you to do is change the stereo spread as implemented in this patch: (of course you can do anything you like with the M and S signals before re-encoding into stereo, but that’s up to you)
----------begin_max5_patcher---------- 1319.3oc2YszjiZCD9LyuBJNl06Fj3ctk6IWRNtUpojAMdztXvEHO6jr0N+1 iPRXfwHCVfYX1KT1Rf5t+52s99cFVayeFWZY9ale1zv362YXvWpZAC4+Mr1i dNNEUxeMq3786wYTqMh8n3mo70KH6djZRxp2H63dRVJlx+JfbwCE3R1Ginj7 r6KvwTAkA1NexdiYfc0y5Gl+SyIkejVeT1xUIIbxlu8KeDFUSzGxynYn8X9V +dAAkVuyADM9QR1tVTMhST+npmdbpBhZQ1pypj7e7yB.9jc0p+3t6pdrYhXU J9AcgJW2Fl95QJGasPJWuFhJ98biTY3uw3uyApbTxdbYoI3hXUW4FziERnVx MDxgXm.t3GblfKHJ8eOfEuuk0RX8H7zXz9JvjdrEb0BR..+JX.Beqbalrb6n kb6EHD6vamOfJwdOIwbGpIbQJICGmeLiuKTiXHRkWXflgaCzyxwQX4vwNGgi EbYPvRRBdlgvP.2D.3oIF5qGFJhAKwPukFC0J2d.OiEH.nIR4oGRYGITPtMl aKnC6zBQA0K1bkovIaxaiHqHO8GeoWAFN57yNZpj4RLztNZh2PInKI6xXG4B .IeXpPBTKHwWhHf2PD4gzbl3oSvhHYMVgiHVArGLyVyLShPTd7FBbsGtNOlD hX98lVaQY6lUra+wTJoLkErsnliKwTFBxdKAwErWWXYz.bnLDgSu.bLi+SPT j5fU8A5fKAstbUoOmdhXwAAWrB5M7pnuMVcCJK.85jDD3+SmAjV1BfvKV7hn MR3s2VPQL4e4EEMRN5nx.8p8MRZe.We4olALQuZY8hZ4yrtvjCl+weA+y+9J fk97EbmPilBCFO+gijHQkMCiOsoIK3f.UjvB6sIo3mvEkr7EszyFVs7eC8E9 ub2XnrUDnSC2wf6co4weEmzpvVCqD7CW2oje.m07EclJXmDVh2jj0NY2qoLh EO799ght6+.JFq7i6U8YXsqfjjmUwDc9xpkqIWUUpbsXG9l+FYnC87wz77zs nhmHkjso3N5BlwLJirGQwThfeXk9VuIY+gBhni1SqgyPry3wx3h7zzNGkXmm 5YmD7SjX72HIzG4mUCZ0YVwsrc53l0Y8K1vjx9KUlTRc2Sm47AaeVp0fpRUI 87Bf8OtGkweLpiAI9wla.P0zc4bfSNSCmD004E81.SB4aFQCvPxKPNLC6lwv T8ri.Wq7pNUq0rzZOfzJFYCv28MPX6jYtqCvu9hITIJ.UhBf9Qgvo4..DUy5 nXBDipRlasaxEvxSCtYFPxnogjxA1YCeehjyqUYvjvRoi66UixOLiFk9SBH8 CW+1jWpVA9UENeYLbmlGtuHqI3soXAtbqDKruVCKugjVWXyMjpH4o56O9lla 8RVLU2w57Yv3LCgwD2A+6d6kgJsTN6vnam4RS2mUW+ohF43bV098iPk4GKhq IuTrL6xkI3RJI6Tu3e9Tb3W8dORRR515KWEPRNjyZiUxdho+MnF8Z4ZuqfqA qFt1ejbcvpBqiFIWGtp35wZWG8tztNZUYWGLRttpg0UDXGNV1FLirsbQF+Ku aGzS3j6YjgkH4dDkVP1djJBt2d5tWbPmWX.miYFno4aQoxoJe5crF6HXUxQm kVWfBxI7ygytIxDC7+0ZQ4X+OS6A6n9Tn5fcTcmq15Wkc1kPLq7DHbQ4If+X vI3xxSAikm.qLbxYEhSNKJN8JWJE139qOdBZur5tQEKHZ44IvP7Tvx524NVd xdY4oQYiqKOw9yOt6+wCY7dF -----------end_max5_patcher-----------
so it seems that not only my confusion had to be sorted (so that i can stop beeing a dickhead),
there was another suprise for me.
i have a set of abstractions called "space" … encoder, decoder, utilities … which seem to do
what this "normal" LR to M/S also does.
quite shocking that i had to discover that it is such a simple thing.
about compressor plug-ins: i dont think they do anythign special. just have a dynamic effect
on M and S. there is one thing what is important: if you do anything with lookup or delay
or things like that, always have the effect enabled on both channels, just with different settings.
dependign on the effect you are biulding, you might othewise run into a trap where M is delayed
and S is not – with the result that decoding back L and R will fail.
the attached picture shows how my basic imager effect works (i often use this in effects or
generators), and (as it seems) it is basically MS encoding, balancing and panning, and MS
"Do you know some sound processing techniques especially dedicated for M/S which are more complicated than playing with loudness and Eq? For example mentioned brainworx M/S plugin is really awesome. Do you know what it does with side signal?"
definetly a limiter or gate are just as cool as compressors, but it can be fun with reverb, too.
… or a classic: lower the sub bass volume of the sides and raise it likewise for the center.
I’ve made a simple external for Middle/Side Processing according to this post.
Maybe it could be usefull for someone.