New Tool (3.3) Phase Mixer

New alpha Phase Mixer (WIP experiment; Windows Only for Phasebug part):


Tool Download:
(link to get Phasebug in post below)

ledger.scripts.PhaseMixer_V0.51.xrnx

Shortcut: Phase Mixer


Gives you a specialised UI to use multiple instances of the VST Phasebug and control dedicated renoise gainers to flip the polarity of tracks in renoise.

Phase Mixer

Phasebug VST allows continuous adjustment of phase of an audio signal so you can get more precise results than a simple phase invert. There are side-effects of its allpass filtering though, see here for more info:

Requires the old Betabugs 32bit Windows VST for second part of tool to work:

Has a latency of: 75.44 ms

Phasebug

- Download Free Phase correction plugin: PhaseBug by BetaBugsAudio


Each row in the tool contains:

  • Track Select button, which will also select Phasbug in the track
  • Enable/Disable/Add Phasebug to the track
  • Invert Phase [In.] button to flip the phase 180 degrees
  • Rotary to adjust the phase values in Phasebug (it adjusts left and right together which are independent in the plug).

NOTE: While double-clicking, the rotaries reset to 0 degrees in Phasebug, there is something wonky about either the plugs value reporting or translation to Lua values. I’ll look int this but there may be slight inaccuracies when using the Invert button aswell - but you can always readjust things by hand with the rotary.


changelog:

v 0.51 uses native gainers for Inverse polarity switch with a bypass all button which will toggle those same gainers for A/Bing

My Other Scripts

@Ledger

Is this a phase rotator?

Doofer
<?xml version="1.0" encoding="UTF-8"?>
<FilterDeviceClipboard doc_version="0">
  <DeviceSlot type="DooferDevice">
    <IsMaximized>true</IsMaximized>
    <IsSelected>true</IsSelected>
    <SelectedPresetName>Init</SelectedPresetName>
    <SelectedPresetLibrary>Bundled Content</SelectedPresetLibrary>
    <SelectedPresetIsModified>true</SelectedPresetIsModified>
    <IsActive>
      <Value>1.0</Value>
      <Visualization>Device only</Visualization>
    </IsActive>
    <Macro0>
      <Value>50</Value>
      <Visualization>Device only</Visualization>
      <Name>Rotate Ph</Name>
      <Mappings>
        <Mapping>
          <DestDeviceIndex>0</DestDeviceIndex>
          <DestParameterIndex>1</DestParameterIndex>
          <Min>0.0</Min>
          <Max>1.0</Max>
          <Scaling>Linear</Scaling>
        </Mapping>
        <Mapping>
          <DestDeviceIndex>1</DestDeviceIndex>
          <DestParameterIndex>1</DestParameterIndex>
          <Min>0.0</Min>
          <Max>1.0</Max>
          <Scaling>Linear</Scaling>
        </Mapping>
      </Mappings>
    </Macro0>
    <Macro1>
      <Value>50</Value>
      <Visualization>Device only</Visualization>
      <Name>Macro 2</Name>
    </Macro1>
    <Macro2>
      <Value>50</Value>
      <Visualization>Device only</Visualization>
      <Name>Macro 3</Name>
    </Macro2>
    <Macro3>
      <Value>50</Value>
      <Visualization>Device only</Visualization>
      <Name>Macro 4</Name>
    </Macro3>
    <Macro4>
      <Value>50</Value>
      <Visualization>Device only</Visualization>
      <Name>Macro 5</Name>
    </Macro4>
    <Macro5>
      <Value>50</Value>
      <Visualization>Device only</Visualization>
      <Name>Macro 6</Name>
    </Macro5>
    <Macro6>
      <Value>50</Value>
      <Visualization>Device only</Visualization>
      <Name>Macro 7</Name>
    </Macro6>
    <Macro7>
      <Value>50</Value>
      <Visualization>Device only</Visualization>
      <Name>Macro 8</Name>
    </Macro7>
    <NumActiveMacros>1</NumActiveMacros>
    <ShowDevices>true</ShowDevices>
    <DeviceChain>
      <SelectedPresetName>Init</SelectedPresetName>
      <SelectedPresetLibrary>Bundled Content</SelectedPresetLibrary>
      <SelectedPresetIsModified>true</SelectedPresetIsModified>
      <Devices>
        <FormulaMetaDevice type="FormulaMetaDevice">
          <IsMaximized>false</IsMaximized>
          <IsSelected>false</IsSelected>
          <SelectedPresetName>Init</SelectedPresetName>
          <SelectedPresetLibrary>Bundled Content</SelectedPresetLibrary>
          <SelectedPresetIsModified>true</SelectedPresetIsModified>
          <IsActive>
            <Value>1.0</Value>
            <Visualization>Device only</Visualization>
          </IsActive>
          <FormulaParagraphs>
            <FormulaParagraph>example(A)</FormulaParagraph>
          </FormulaParagraphs>
          <FunctionsParagraphs>
            <FunctionsParagraph>-- put custom code or variables here</FunctionsParagraph>
            <FunctionsParagraph>function example(s)</FunctionsParagraph>
            <FunctionsParagraph>  local y = s * 2</FunctionsParagraph>
            <FunctionsParagraph>  if (y &gt; 1) then y = 1 end</FunctionsParagraph>
            <FunctionsParagraph>  return y</FunctionsParagraph>
            <FunctionsParagraph>end</FunctionsParagraph>
          </FunctionsParagraphs>
          <InputNameA>A</InputNameA>
          <InputNameB>B</InputNameB>
          <InputNameC>C</InputNameC>
          <EditorVisible>true</EditorVisible>
          <InputA>
            <Value>0.5</Value>
            <Visualization>Device only</Visualization>
          </InputA>
          <InputB>
            <Value>1.0</Value>
            <Visualization>Device only</Visualization>
          </InputB>
          <InputC>
            <Value>0.0</Value>
            <Visualization>Device only</Visualization>
          </InputC>
          <DestTrack>
            <Value>-1</Value>
            <Visualization>Device only</Visualization>
          </DestTrack>
          <DestEffect>
            <Value>3</Value>
            <Visualization>Device only</Visualization>
          </DestEffect>
          <DestParameter>
            <Value>2</Value>
            <Visualization>Device only</Visualization>
          </DestParameter>
        </FormulaMetaDevice>
        <FormulaMetaDevice type="FormulaMetaDevice">
          <IsMaximized>false</IsMaximized>
          <IsSelected>true</IsSelected>
          <SelectedPresetName>Init</SelectedPresetName>
          <SelectedPresetLibrary>Bundled Content</SelectedPresetLibrary>
          <SelectedPresetIsModified>true</SelectedPresetIsModified>
          <IsActive>
            <Value>1.0</Value>
            <Visualization>Device only</Visualization>
          </IsActive>
          <FormulaParagraphs>
            <FormulaParagraph>example(A)</FormulaParagraph>
          </FormulaParagraphs>
          <FunctionsParagraphs>
            <FunctionsParagraph>-- put custom code or variables here</FunctionsParagraph>
            <FunctionsParagraph>function example(s)</FunctionsParagraph>
            <FunctionsParagraph>  local y = s * 2 - 1</FunctionsParagraph>
            <FunctionsParagraph>  return y</FunctionsParagraph>
            <FunctionsParagraph>end</FunctionsParagraph>
          </FunctionsParagraphs>
          <InputNameA>A</InputNameA>
          <InputNameB>B</InputNameB>
          <InputNameC>C</InputNameC>
          <EditorVisible>true</EditorVisible>
          <InputA>
            <Value>0.5</Value>
            <Visualization>Device only</Visualization>
          </InputA>
          <InputB>
            <Value>1.0</Value>
            <Visualization>Device only</Visualization>
          </InputB>
          <InputC>
            <Value>0.0</Value>
            <Visualization>Device only</Visualization>
          </InputC>
          <DestTrack>
            <Value>-1</Value>
            <Visualization>Device only</Visualization>
          </DestTrack>
          <DestEffect>
            <Value>4</Value>
            <Visualization>Device only</Visualization>
          </DestEffect>
          <DestParameter>
            <Value>2</Value>
            <Visualization>Device only</Visualization>
          </DestParameter>
        </FormulaMetaDevice>
        <GainerDevice type="GainerDevice">
          <IsMaximized>true</IsMaximized>
          <IsSelected>false</IsSelected>
          <SelectedPresetName>Init</SelectedPresetName>
          <SelectedPresetLibrary>Bundled Content</SelectedPresetLibrary>
          <SelectedPresetIsModified>true</SelectedPresetIsModified>
          <IsActive>
            <Value>1.0</Value>
            <Visualization>Device only</Visualization>
          </IsActive>
          <Volume>
            <Value>1.0</Value>
            <Visualization>Mixer and Device</Visualization>
          </Volume>
          <Panning>
            <Value>0.5</Value>
            <Visualization>Device only</Visualization>
          </Panning>
          <LPhaseInvert>true</LPhaseInvert>
          <RPhaseInvert>false</RPhaseInvert>
          <SmoothParameterChanges>true</SmoothParameterChanges>
        </GainerDevice>
        <StereoExpanderDevice type="StereoExpanderDevice">
          <IsMaximized>true</IsMaximized>
          <IsSelected>false</IsSelected>
          <SelectedPresetName>Init</SelectedPresetName>
          <SelectedPresetLibrary>Bundled Content</SelectedPresetLibrary>
          <SelectedPresetIsModified>true</SelectedPresetIsModified>
          <IsActive>
            <Value>1.0</Value>
            <Visualization>Device only</Visualization>
          </IsActive>
          <MonoMixMode>L</MonoMixMode>
          <StereoWidth>
            <Value>0.5</Value>
            <Visualization>Device only</Visualization>
          </StereoWidth>
          <SurroundWidth>
            <Value>1.0</Value>
            <Visualization>Device only</Visualization>
          </SurroundWidth>
        </StereoExpanderDevice>
        <StereoExpanderDevice type="StereoExpanderDevice">
          <IsMaximized>true</IsMaximized>
          <IsSelected>false</IsSelected>
          <SelectedPresetName>Init</SelectedPresetName>
          <SelectedPresetLibrary>Bundled Content</SelectedPresetLibrary>
          <SelectedPresetIsModified>true</SelectedPresetIsModified>
          <IsActive>
            <Value>1.0</Value>
            <Visualization>Device only</Visualization>
          </IsActive>
          <MonoMixMode>L</MonoMixMode>
          <StereoWidth>
            <Value>0.5</Value>
            <Visualization>Device only</Visualization>
          </StereoWidth>
          <SurroundWidth>
            <Value>0.0</Value>
            <Visualization>Device only</Visualization>
          </SurroundWidth>
        </StereoExpanderDevice>
      </Devices>
    </DeviceChain>
  </DeviceSlot>
</FilterDeviceClipboard>

As far as I can tell yes though I’m not totally up on all this. I’m just doing some reading up now as before I’d assumed phasebug was working some other way as it sounded different to my ears from the one in Flux channel strip I tried a while ago.

I did do some checks with an oscilloscope and on non-sinewave material Phasebug did mess with the transients i.e. like allpass (and a Phase Rotator?)

Thanks for the doofer, I’ll check it out. I’m already changing the Inv. button to an actual polarity flip swich using this VST:

https://www.refusesoftware.com/flipper

Unless I’m missing a native way to flip polarity in the DSP’s aswell?

Doesn’t the gain device have a phase flipper? But the surround slider of the stereo device is not 100% accurate sadly…

Ha! yes, totally forgotten about that :upside_down_face: one of those things I’d seen in renoise years ago then it became ‘hidden in plain site’ as I used plugs for the same job. I’ll use gainers for the Inv. switches then.

Does this cause issue for the doofer you posted? I was going to A/B it with phasebug to check the sound as like I said when I checked phasebug against the flux one there did seem to be a difference and I prefered Phasebug. As a side note I’ve noticed that renoise mono summing came out worse than the Flux stereo summing to my ears. Maybe internal oversampling or something in the Flux?

1 Like

I dont know exactly, I think the surround slider of the stereo-x has a rounding issue. If you mono check on master and rotate to maximum, it should be 100% silent, but actually passes a big or lowpassed sound. Or maybe I did not test it accurately.

I see, I’ll have a play around with them and see if I can hear/ duplicate.

In the mean time a quick update in first post:

(0.51) which uses native gainers for the Inv. polarity switches. These on their own are still useful if you don’t use the Phasebug/ Allpass part of the tool. Also added a global bypass for ABing them.

1 Like