Airwindows - A Fresh Approach: Looking for some testers and feedback

Trying it now and it’s kind of failing my use case it seems kind of wrong. I put it in line with the 1-8 Poly Direct out.

Monophonic: Everything summed to the left channel Polyphonic: Stereo output, and I assume the same effect applied to each channel individually. Mixmaster Polyphonic: Mono output

You’ll note that in this case I’ve got a RackWindows MM Console, which implements a summing bus using either Purest Console or Console 6. The AirWindows plugin is an insert on the 1-8 Poly Direct Out.

Really what I’m wondering is if it’s possible to do what RackWindows Console MM does: do bus summing to return to the Chain input. That isn’t really what AirWindows is set up to do, but it would be cool to have a MM version with just the AirWindows Console types as options.

PS I know it’s asking a lot, but I’d rather ask and get no for an answer than not let you know what I think would be cool. And RackWindows got no official 2.x port - even though you only have to modify the slug - so getting a new version of the MixMaster RackWindows plugin would be absolutely perfect for me, and maybe others as well.

So mixmaster 1-8 is LR LR LR LR LR LR LR LR across the poly

You have no R channel so the airwindows will just get mono input but have no way to detect they have mono only because the channels are all there.

I guess I just don’t understand the topology you want. Like how many effects do you want on which channel in which way?

It’s super easy to add another poly mode which, for instance, assumes mixmaster is mono so the LR LR LR LR LR LR LR LR feeds to airwindows as LL LL LL LL LL LL LL LL. Is that what you want? Then you could just return the stereo. But there’s no way to detect a channel is ‘missing’ in the mixmaster polyphonic outputs.

I guess : I know what mixmaster sends in its 1-8. LRLRLRLRLRLRLRLR. I know what an air window does (it goes LR → LR). I can make 1 or 16 of them in my module. And right now the behaviors are

Mono: // Single instance, summing L-> R if not connected
Output Channels = 0;
L = sum(INPUT_L); R = if (r is connected) sum (INPUT_R) else L. 
LR -> air win -> LR out

Poly: // a stereo instance per left pair with L->R if not connected
Output Channels = max(L Channels, 1)
L[c] = Input_L[c]; R = if (r is connected) INPUT_R[c] else L[c]; 
L[c] R[c] -> air win[c] -> L[c] R[c] out

Poly MixMaster: // de-interleave the channels onto instances. No 'connected' check available

Output Channels = max(L Channels, 1)
if (c<8)
  L[c] = input_l[c*2]; R[c] = input_L[c*2+1]
else
  L[c] = input_r[c*2], R[c] = input_r[c*2+1]

L[c] R[c] -> air win[c] 

if (c < 8)
   output_l[c*2] = air win[C].left; output_l[c*2 + 1] = airwin[c].right;
else
   output_r[c*2] = air win[C].left; output_r[c*2 + 1] = airwin[c].right;

With that setup, what do you want to happen to that signal? That’ the question I don’t really have an answer to and if you could answer it without me having to go through someone else’s code it would make it way more likely that I code it up tomorrow :slight_smile:

From looking at your picture I think what you want is a “MixMaster Poly → Mono” mode so that the output channels are summed. Or a “MixMaster Poly → Natural Left Right” mode so you can sum them elsewhere at least. That is I have the “stacked” 1-8/9-16 input and then a “stereo separated” LR output (which would be polyphonic but that’s OK mixmaster will sum it when you send it back).

But you might want a “MixMaster LR Sum → single instance”. I’m not sure.

You can do all of this with “melder” and other modules too but it is a bit clumsy. A “1-8/9-16 to LR deinterleaver” would be super handy here (and for the surge fx also).

How much CPU is ConsoleMM using on your setup? On mine it’s unusable (uses 117% CPU as soon as added to patch and connected)

I pulled up a fairly representative patch and I was getting around 5% from mixmaster, and 3.8% in Console MM. I don’t know what is going on with your patch. If you want to upload one I’ll look at it. Read the manual for Console MM because it’s a little wonky setting it up.

The Mixmaster Poly Direct outputs are LRLRLRLRLR. Console MM Takes 3 poly inputs (from the Poly Direct outs on MM), and sums them, applying the AirWindows mojo to a monophonic stereo pair.

What I’m asking for actually is EXACTLY RackWindows Console MM, but with the extra console modes. That is totally NOT what the AirWindows plug does. AirWindows understand stereo poly inputs just fine, and I’m afraid I’m asking for a mode that may not fit at all. I don’t want you all work on things that aren’t kludges to try and get it to work, because I don’t think the will ever do what Console MM does.

As I said before I’ll accept “no we’re not doing that” as an answer, because I know that it isn’t what AirWindows is set up for.

But an AirWindows version of Console MM would be super cool, as it would allow for a lot of cool stuff. You can ask the RackWindows dev to see if he minds if you just borrow that plugin from his collection and wire in the additional AirWindows console algorithms.

Or ask @n0jo to put together a pull request for AirWindows to do that. I notice that other people are into the Mixmaster MM idea for other reasons, as well

I think what you want is

M instances of Lrlrlrlrlrlr - de interleave → summed l, summed r → mono airwin → lr

So basically a mono mode where the assumption is that the poly inputs are not natural poly but mixmaster poly?

I mean I kinda want to ask Marc to make a little module to do that topology transform but I can add it easily. The only thing is I have 2 not 3 inputs and I don’t have panel space for a third inout

Anyway seems if l just a tiny utility module which takes up to (n) lrlrlrlrlr and sums them to a single lr, then you will get exactly what you want. Namely you plum the outputs to that get a mono lr and plum that to the airwindows module in mono mode and voila

I downloaded it again and it loads with monophonic setting,
I changed it to polyphonic and it works fine
maybe you want to try it:
Poly_AW MixMaster test.vcv (20.8 KB)

OK, currently (latest Rack, MacOS and as far as I can tell ConsoleMM version (2.1.2-unofficial) uses ‘only’ 32ish % CPU when connected and no sound is going through and up to 51% CPU as soon as I hit run on Clocked. Somewhat better than last time I checked, but only by 50-odd percent :wink:

Here is patch that produces those numbers on this M1 Mac Mini (16GB) :

FG_ConsoleMM_Test.vcv (6.1 KB)

not really here is a picture of ConsoleMM and it does something special to the summing and the sound:

here on win11 ConsoleMM uses fully engaged 2.5% in the performance meter on my Ryzen 5 4600H cpu.

I gonna test your patch now.

update:

your patch maxes here at about 30% and ConsoleMM uses ~2.7%

see:

1 Like

hmmm., that is odd, will rebuild (though seem to have version that matches source) and retest. Thanks for checking

OK, rebuilt and this is what it looks like still. latest pull, plugin.json version update and then build after a make clean.

the lower part of bar is clock not running and high bar is it running and sound going though it.

@baconpaul, could we get a console and purestconsole version that accepts the 3 direct poly ins from MM and 2 summed outs (stereo) as the airwindows version of the consoles use a mere 3% here , that would be swell…

1 Like

Right so this seems to be the request. 3 lrlrlrlr becomes a summed lr goes into a single airwin and makes a resulting lr

I kinda feel like I’m gonna have to read the console mm code unless one of you can use words to say what’s in the ins and outs. But the capability we have is run any airwindow on any input with modulation. The wrangling of inputs is pretty easy and I could totally make other panels or shape transform modules

The thing I really don’t know and would love an answer to though. If you had a module which went from 3 lrlrlrlr to a single summed mono lr wokld you need anything else at all? Then you could just use any effect? I think thinking of the console effect as special on any way is really a mistake here

At this point it’s probably faster that I go read the code though. It seems there’s not really a clear explanation in this thread of what you want to happen!

1 Like

On console mm doesn’t use airwindows code at all; it just reimplements a subset of a single effect on a set of mono channels. It also does some odd looking stuff like a sample which is zero is silence. And a call to std::sin on every samole it seems?

But that explains the confusion. Console mm is not an airwindows effect. It’s more a cover of one sort of.

here’s the topology it has

It has 3 lrlrlrlr inputs

It has 3 outputs which are either the mono effect on the lrlrlrl or the Sum of the corresponding inputs unprocessed or sum of inputs professed

And it as a stereo output pair which is the sum across all 3 items summed down or with some gain applied

But really that’s just some module someone wrote and called airwindows. It’s not chris code although it may be copied from parts of it. If you want something to happen with this port we realky just need to think about it as what topology do you want for what purpose.

rackwindows/console_mm.cpp at develop · n0jo/rackwindows · GitHub (Assuming tbis code is indeed console mm)

1 Like

I totally understand you Paul,
imho your idea is much better and broader as the “limited” version of the ConsoleMM,
ConsoleMM is just a convenient way to add some “Console magic” to the summing of MasterMix,

but your way of just summing the (3 or maybe more) inputs to add any “airwindows magic” to it looks more appealing to me! then we could have a SuperDuperConsoleMM :wink:

2 Likes

Or galactic mm :slight_smile:

Yeah I think the way to think about this as: what Inout outout and fx topologies are useful

2 Likes

One thing which is super easy is to add a “mixmaster mono mode” which instead of using the rack input sum uses a deinterleaved sum for instance. Then you can just drop 1-8 9-16 in as lr and get mono lr sum out. I’ll add that to my list before I push the mixmaster insert topology to the library

1 Like

Actually here’s another way for you to all think about it

This project only works if the module contain exactly no dsp code per effect - then I can keep up

So the way to cast the problem for this project is

I have a bucket of operators which are all lr to lr with parameters I can interrogate

Given that bucket what modules do I make

Right now I made one moduel which lets you pick an operator set and modulate the parameters and run it monophonically in sum to instance or polyphonically in either standard poly stereo or mixmaster poly stereo. Sounds like we want another variation in that module which treats the inputs as mixmaster lrlr rather than normal poly but still sums to mono. Fine

But given that core capability of a bag of monophonic operators there’s two more questions we could ask

1: does someone want to make a separate project whcih has this code as a submodule with custom faceplates for a few and additions pre and post process goop in the way? That’s cool! But that’s unambiguously not this project.

2; are there other module-independent faceplates and topologies we want? If so what are they? And maybe I can add em over the spring while I’m doing updates to the bag of ops

It looks like the repo you linked took a different approach whcih is automate nothing and handnport the effects into bespoke modules. No value judgement, but that approach does get you 15 operators in 8 weeks as opposed to 320 in a single week sprint. Fine project but different project

Helpful?

1 Like

I’ve got a suggestion, but you all will have to wait a bit. Maybe not all that long?

I see we have the library (which absolutely will be able to run Airwindows Console using individual plugins with any unity gain summing between them, much as any DAW would sum) and there’s another plugin called MixMaster, which may or may not be using my system internally. I haven’t looked at the code.

Paul, what might be throwing you is that you’re not using Console nor does Surge use Console and I doubt you’ve ever tried, and might not even want to.

I suggest backing out the ‘mixmaster’ mode. I don’t see how that can be the zero maintenance thing we need for this library plugin. Instead, I would say give folks a single mixer plugin that implements Airwindows Console8Lite. Then, respond to UI requests on that, but let me specify the audio path.

Console8Lite is the ‘two stage’ version of Console8, and I’m currently building linux versions for a bunch of upcoming plugins that do include that, so if people are really frantic to have this I can bump it up in the release schedule (I was going to do a bass-boost plugin I’ll be using personally, but that will still happen in due time)

To implement Console8Lite in a Rack mixer you must build the following topology:

Inputs, each of which goes into Console8LiteChannel, which has one fader per input. Digital summing that must be unity gain, and (since I’m designing it) must be a double precision buss. So you gotta come out of Console8LiteChannel using the 64 bit version, have a double for the digital summing, and feed that double into the master stage. That’s my design spec for the idea knowing that in no other place do you use the ‘double replacing’ VST process. This one you’d be doing by hand and it should use that. Summing buss from all the channel plugins goes at unity gain to the input of Console8LiteBuss, and the output of that goes to the output of the mixer. It does not dither but it does have post-summing clipping, and a fader which allows you to overdrive the output using ClipOnly2. And that would be the mixer plugin, in total: two Airwindows plugins, one on all inputs, one on the output, and the summing variable needs to be a double (good enough for Logic and Reaper!)

How does that sound? I would like to hear whether I should hurry up with Console8Lite. I could have it out Sunday and the code available for Paul tomorrow or tonight if I crunch a bit on it. Console8 proper is already there, but it’s a much more elaborate mixing console with in and out plugins on each stage, and channel/sub/buss topology. I needed something a lot simpler that still produces the same basic sound.

If you can get that as its own project we can talk about all the other questions, like ‘can we have pans and aux sends designed to work with the system from the ground up’ which would be a first, really. But understand the thing being asked for is a particular Airwindows configuration that’s not inherently that tricky to do, but the idea is to do it the way I would be doing it. So the internal summing needs to be in doubles, other than that it’s pretty straightforward :slight_smile:

back to the code mines…

1 Like