New Tool (3.3.2): EQ Helper Tool, transpose eqs/filters by semitones

Hi,

wrote this little EQ Helper tool. It provides a context menu on each eq and filter device for transposing. It also can “live”-transpose all eqs and filters of a song at once. There is a large slider which you can move while playing the song.

Currently it works for EQ5/10, digital/analog filter, filter 3, all Melda EQs, Pro Q 1/2/3, TDR Nova, Ozone EQ, SmartEQ, UVI Shade, DSEQ3 and apQualizr2. Here is the current version:

There is a “pluginRegistry” in main.lua, in which you can add your own translation functions for other eq and filter plugins.

Have a look at the context menu on the eq, in the track context menu under “track” and in the tools menu.

Changelog:

  • Added support for sampler dsp chains.
  • Fixed menu init bug, added track context menu entries
  • Added support for Melda EQs and Pro Q2/3
  • Also include group tracks (no idea why I excluded it first)
  • Updated parameter name matching with proper string matching. Simply write as parameterNamePattern in the pluginRegistry something like Frequency ? (EQ ?), where ? stands for any possible number (thanks to toimp)
  • Highly optimized speed by simply using device:parameter(index) instead device.parameters[index]
  • Added “live” transpose slider, even for the whole song. yay!
  • Added support for devices switching parameter names dynamically (e.g. filter 3)
  • Added transposing in signal flow of a track, means that sending tracks and group tracks recursively will be also affected. Added support for TDR Nova
  • Added simple exclusion mechanism. Devices which name starts with ! (can be changed in settings), will be excluded.
  • Bugfix, tool forgot key shortcuts
  • Fixed context menu bug on individual plugins, was not deleted properly
  • Fixed missing context menu in insturments’ dsp lane
  • Added workaround for missing re-bang of the selected_track_device_observable on window.active_middle_frame change
  • Workaround seems to have introduced a new problem, hopefully fixed now
  • Workaround 2 for missing re-bang problem. Now app_new_document_observable creates active_middle_frame_observable which then does the missing events, but if .app_release_document_observable was fired, active_middle_frame_observable is removed :crazy_face: Maybe active_middle_frame_observable / tab could be switched AFTER song initialisation? (Happens if the last song had instrument dsp tab opened and then loading a new song which switches to tracker view)
  • Added some LUA loop optimizations and support for Pro-Q 1
  • Fixed recursive routing logic for parallel routings, since it is not a strict tree structure in that case
  • Added support for transposing all devices and signal flow within an instrument mixer
  • Added support for also transposing the dsp devices of the sending instrument within the signal flow
  • Fixed some bugs in signal flow detection within an instrument mixer
  • Fixed bug reported by Same Freaky Sound
  • Fixed bugs in routing from instruments (renoise.song().tracks[].output_routing is really ugly IMHO)
  • Fixed transpose all in song
9 Likes

Not at my computer at the moment, but man what a cool idea! :smiley: can’t wait to see it

Yeah please try it, give me feedback if anything doesn’t work.

1 Like

@taktik Could you move this topic to Renoise Tools section? Thx

1 Like

Wasted another 4 hours of sparetime… :crazy_face:

1 Like

Hi ffx, just tried with a fresh installation on RNS 3.3.2 on Linux MIint 20 and i got this:

Schermata del 2021-09-13 11-55-43

To reproduce it, just select from the help menu the “Transpose song EQs/filters +12”, same for the other 3 option “+1”, “-1”, “-12”. Only “Transpose song EQs/Filters…” work

Thanx for your time and tools, are always useful!

Thanks for the report! Will fix tomorrow or so.

3 Likes

Should be fixed now.

Btw. did you see the function “transpose in signal flow”? Right click on a track (under track submenu), e.g. a send track, or on a dsp chain within an instrument.

Wow, superfast! Its working perfect now! Thanks for your suggestion, I hadn’t noticed the entries in the submenu very handy.

Added now to the tools page with superior graphics arts: EQ Helper | Renoise

3 Likes

for reference…

Added support for Ozone 10 EQ, UVI Shade, SmartEq3…

1 Like

can this tool be used to keytrack filter/eq movement?
such that, say I remove a specific harmonic from a specific pitch of an instrument, I could then play notes up and down the keyboard and have that eq track with the note, thereby removing that specific harmonic from each note? Or does this tool not allow that functionality?

If not, is there a way that you can think of to implement keytracked filters/eqs natively in renoise? I wonder if keytracker> formula>eq freq would do it somehow

No, can’t done with this tool. But you can implement a simple note-to-frequency transfer function using the formula device and use the formulas from the tool. You can find all the formulas in main.lua starting with line 43 where it says “EQHelper.pluginRegistry”. Here is a doofer for a keyfollowing eq5 (res and band gain needs to be set in eq5 itself):

Transposer EQ5 With Inertia
<?xml version="1.0" encoding="UTF-8"?>
<FilterDeviceClipboard doc_version="0">
  <DeviceSlot type="DooferDevice">
    <IsMaximized>true</IsMaximized>
    <IsSelected>true</IsSelected>
    <SelectedPresetName>Ju Transposer-EQ5 Inertia</SelectedPresetName>
    <SelectedPresetLibrary>User Library</SelectedPresetLibrary>
    <SelectedPresetIsModified>true</SelectedPresetIsModified>
    <IsActive>
      <Value>1.0</Value>
      <Visualization>Device only</Visualization>
    </IsActive>
    <Macro0>
      <Value>50.3999825</Value>
      <Visualization>Device only</Visualization>
      <Name>Freq1 offs</Name>
      <Mappings>
        <Mapping>
          <DestDeviceIndex>5</DestDeviceIndex>
          <DestParameterIndex>3</DestParameterIndex>
          <Min>0.0</Min>
          <Max>1.0</Max>
          <Scaling>Linear</Scaling>
        </Mapping>
      </Mappings>
    </Macro0>
    <Macro1>
      <Value>58.4000206</Value>
      <Visualization>Device only</Visualization>
      <Name>Freq2 offs</Name>
      <Mappings>
        <Mapping>
          <DestDeviceIndex>6</DestDeviceIndex>
          <DestParameterIndex>3</DestParameterIndex>
          <Min>0.0</Min>
          <Max>1.0</Max>
          <Scaling>Linear</Scaling>
        </Mapping>
      </Mappings>
    </Macro1>
    <Macro2>
      <Value>68.4000626</Value>
      <Visualization>Device only</Visualization>
      <Name>Freq3 offs</Name>
      <Mappings>
        <Mapping>
          <DestDeviceIndex>7</DestDeviceIndex>
          <DestParameterIndex>3</DestParameterIndex>
          <Min>0.0</Min>
          <Max>1.0</Max>
          <Scaling>Linear</Scaling>
        </Mapping>
      </Mappings>
    </Macro2>
    <Macro3>
      <Value>77.2000427</Value>
      <Visualization>Device only</Visualization>
      <Name>Freq4 offs</Name>
      <Mappings>
        <Mapping>
          <DestDeviceIndex>8</DestDeviceIndex>
          <DestParameterIndex>3</DestParameterIndex>
          <Min>0.0</Min>
          <Max>1.0</Max>
          <Scaling>Linear</Scaling>
        </Mapping>
      </Mappings>
    </Macro3>
    <Macro4>
      <Value>96.4000168</Value>
      <Visualization>Device only</Visualization>
      <Name>Freq5 offs</Name>
      <Mappings>
        <Mapping>
          <DestDeviceIndex>9</DestDeviceIndex>
          <DestParameterIndex>3</DestParameterIndex>
          <Min>0.0</Min>
          <Max>1.0</Max>
          <Scaling>Linear</Scaling>
        </Mapping>
      </Mappings>
    </Macro4>
    <Macro5>
      <Value>27.2000065</Value>
      <Visualization>Device only</Visualization>
      <Name>Transpose</Name>
      <Mappings>
        <Mapping>
          <DestDeviceIndex>5</DestDeviceIndex>
          <DestParameterIndex>1</DestParameterIndex>
          <Min>0.0</Min>
          <Max>1.0</Max>
          <Scaling>Linear</Scaling>
        </Mapping>
        <Mapping>
          <DestDeviceIndex>6</DestDeviceIndex>
          <DestParameterIndex>1</DestParameterIndex>
          <Min>0.0</Min>
          <Max>1.0</Max>
          <Scaling>Linear</Scaling>
        </Mapping>
        <Mapping>
          <DestDeviceIndex>7</DestDeviceIndex>
          <DestParameterIndex>1</DestParameterIndex>
          <Min>0.0</Min>
          <Max>1.0</Max>
          <Scaling>Linear</Scaling>
        </Mapping>
        <Mapping>
          <DestDeviceIndex>8</DestDeviceIndex>
          <DestParameterIndex>1</DestParameterIndex>
          <Min>0.0</Min>
          <Max>1.0</Max>
          <Scaling>Linear</Scaling>
        </Mapping>
        <Mapping>
          <DestDeviceIndex>9</DestDeviceIndex>
          <DestParameterIndex>1</DestParameterIndex>
          <Min>0.0</Min>
          <Max>1.0</Max>
          <Scaling>Linear</Scaling>
        </Mapping>
      </Mappings>
    </Macro5>
    <Macro6>
      <Value>0.0</Value>
      <Visualization>Device only</Visualization>
      <Name>Inertia key</Name>
      <Mappings>
        <Mapping>
          <DestDeviceIndex>3</DestDeviceIndex>
          <DestParameterIndex>2</DestParameterIndex>
          <Min>0.0</Min>
          <Max>1.0</Max>
          <Scaling>Linear</Scaling>
        </Mapping>
      </Mappings>
    </Macro6>
    <Macro7>
      <Value>100</Value>
      <Visualization>Device only</Visualization>
      <Name>Range key</Name>
      <Mappings>
        <Mapping>
          <DestDeviceIndex>2</DestDeviceIndex>
          <DestParameterIndex>1</DestParameterIndex>
          <Min>0.0</Min>
          <Max>1.0</Max>
          <Scaling>Linear</Scaling>
        </Mapping>
      </Mappings>
    </Macro7>
    <NumActiveMacros>8</NumActiveMacros>
    <ShowDevices>true</ShowDevices>
    <DeviceChain>
      <SelectedPresetName>Init</SelectedPresetName>
      <SelectedPresetIsModified>true</SelectedPresetIsModified>
      <Devices>
        <Eq5Device type="Eq5Device">
          <CustomDeviceName>_EQ 5</CustomDeviceName>
          <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>
          <InputMode>L+R</InputMode>
          <MaxVisualizedGain>20</MaxVisualizedGain>
          <Gain0>
            <Value>-20</Value>
            <Visualization>Device only</Visualization>
          </Gain0>
          <Gain1>
            <Value>13.3333397</Value>
            <Visualization>Device only</Visualization>
          </Gain1>
          <Gain2>
            <Value>-15.4666672</Value>
            <Visualization>Device only</Visualization>
          </Gain2>
          <Gain3>
            <Value>20</Value>
            <Visualization>Device only</Visualization>
          </Gain3>
          <Gain4>
            <Value>-20</Value>
            <Visualization>Device only</Visualization>
          </Gain4>
          <Frequency0>
            <Value>94.467804</Value>
            <Visualization>Device only</Visualization>
          </Frequency0>
          <Frequency1>
            <Value>597.934753</Value>
            <Visualization>Device only</Visualization>
          </Frequency1>
          <Frequency2>
            <Value>1227.2677</Value>
            <Visualization>Device only</Visualization>
          </Frequency2>
          <Frequency3>
            <Value>1781.07751</Value>
            <Visualization>Device only</Visualization>
          </Frequency3>
          <Frequency4>
            <Value>2989.39062</Value>
            <Visualization>Device only</Visualization>
          </Frequency4>
          <BandWidth0>
            <Value>1.0</Value>
            <Visualization>Device only</Visualization>
          </BandWidth0>
          <BandWidth1>
            <Value>0.586752057</Value>
            <Visualization>Device only</Visualization>
          </BandWidth1>
          <BandWidth2>
            <Value>0.320092022</Value>
            <Visualization>Device only</Visualization>
          </BandWidth2>
          <BandWidth3>
            <Value>0.533420205</Value>
            <Visualization>Device only</Visualization>
          </BandWidth3>
          <BandWidth4>
            <Value>1.0</Value>
            <Visualization>Device only</Visualization>
          </BandWidth4>
          <VisualizationMode>Graph Only</VisualizationMode>
        </Eq5Device>
        <KeyTrackingDevice type="KeyTrackingDevice">
          <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>
          <SrcInstrument>-1</SrcInstrument>
          <DestScaling>Linear</DestScaling>
          <KeyTrackingMode>Clamp</KeyTrackingMode>
          <KeyTrackingMin>0</KeyTrackingMin>
          <KeyTrackingMax>119</KeyTrackingMax>
          <DestTrack>
            <Value>-1</Value>
            <Visualization>Device only</Visualization>
          </DestTrack>
          <DestEffect>
            <Value>3</Value>
            <Visualization>Device only</Visualization>
          </DestEffect>
          <DestParameter>
            <Value>1.0</Value>
            <Visualization>Device only</Visualization>
          </DestParameter>
          <DestMin>
            <Value>0.0</Value>
            <Visualization>Device only</Visualization>
          </DestMin>
          <DestMax>
            <Value>1.0</Value>
            <Visualization>Device only</Visualization>
          </DestMax>
        </KeyTrackingDevice>
        <HydraDevice type="HydraDevice">
          <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>
          <VisiblePages>1</VisiblePages>
          <InputValue>
            <Value>1.0</Value>
            <Visualization>Mixer and Device</Visualization>
          </InputValue>
          <Out1DestTrack>
            <Value>-1</Value>
            <Visualization>Device only</Visualization>
          </Out1DestTrack>
          <Out1DestEffect>
            <Value>1.0</Value>
            <Visualization>Device only</Visualization>
          </Out1DestEffect>
          <Out1DestParameter>
            <Value>4</Value>
            <Visualization>Device only</Visualization>
          </Out1DestParameter>
          <Out1Min>
            <Value>0.5</Value>
            <Visualization>Device only</Visualization>
          </Out1Min>
          <Out1Max>
            <Value>0.0</Value>
            <Visualization>Device only</Visualization>
          </Out1Max>
          <Out1Scaling>Linear</Out1Scaling>
          <Out2DestTrack>
            <Value>-1</Value>
            <Visualization>Device only</Visualization>
          </Out2DestTrack>
          <Out2DestEffect>
            <Value>1.0</Value>
            <Visualization>Device only</Visualization>
          </Out2DestEffect>
          <Out2DestParameter>
            <Value>5</Value>
            <Visualization>Device only</Visualization>
          </Out2DestParameter>
          <Out2Min>
            <Value>0.5</Value>
            <Visualization>Device only</Visualization>
          </Out2Min>
          <Out2Max>
            <Value>1.0</Value>
            <Visualization>Device only</Visualization>
          </Out2Max>
          <Out2Scaling>Linear</Out2Scaling>
          <Out3DestTrack>
            <Value>-1</Value>
            <Visualization>Device only</Visualization>
          </Out3DestTrack>
          <Out3DestEffect>
            <Value>-1</Value>
            <Visualization>Device only</Visualization>
          </Out3DestEffect>
          <Out3DestParameter>
            <Value>-1</Value>
            <Visualization>Device only</Visualization>
          </Out3DestParameter>
          <Out3Min>
            <Value>0.0</Value>
            <Visualization>Device only</Visualization>
          </Out3Min>
          <Out3Max>
            <Value>1.0</Value>
            <Visualization>Device only</Visualization>
          </Out3Max>
          <Out3Scaling>Linear</Out3Scaling>
          <Out4DestTrack>
            <Value>-1</Value>
            <Visualization>Device only</Visualization>
          </Out4DestTrack>
          <Out4DestEffect>
            <Value>-1</Value>
            <Visualization>Device only</Visualization>
          </Out4DestEffect>
          <Out4DestParameter>
            <Value>-1</Value>
            <Visualization>Device only</Visualization>
          </Out4DestParameter>
          <Out4Min>
            <Value>0.0</Value>
            <Visualization>Device only</Visualization>
          </Out4Min>
          <Out4Max>
            <Value>1.0</Value>
            <Visualization>Device only</Visualization>
          </Out4Max>
          <Out4Scaling>Linear</Out4Scaling>
          <Out5DestTrack>
            <Value>-1</Value>
            <Visualization>Device only</Visualization>
          </Out5DestTrack>
          <Out5DestEffect>
            <Value>-1</Value>
            <Visualization>Device only</Visualization>
          </Out5DestEffect>
          <Out5DestParameter>
            <Value>-1</Value>
            <Visualization>Device only</Visualization>
          </Out5DestParameter>
          <Out5Min>
            <Value>0.0</Value>
            <Visualization>Device only</Visualization>
          </Out5Min>
          <Out5Max>
            <Value>1.0</Value>
            <Visualization>Device only</Visualization>
          </Out5Max>
          <Out5Scaling>Linear</Out5Scaling>
          <Out6DestTrack>
            <Value>-1</Value>
            <Visualization>Device only</Visualization>
          </Out6DestTrack>
          <Out6DestEffect>
            <Value>-1</Value>
            <Visualization>Device only</Visualization>
          </Out6DestEffect>
          <Out6DestParameter>
            <Value>-1</Value>
            <Visualization>Device only</Visualization>
          </Out6DestParameter>
          <Out6Min>
            <Value>0.0</Value>
            <Visualization>Device only</Visualization>
          </Out6Min>
          <Out6Max>
            <Value>1.0</Value>
            <Visualization>Device only</Visualization>
          </Out6Max>
          <Out6Scaling>Linear</Out6Scaling>
          <Out7DestTrack>
            <Value>-1</Value>
            <Visualization>Device only</Visualization>
          </Out7DestTrack>
          <Out7DestEffect>
            <Value>-1</Value>
            <Visualization>Device only</Visualization>
          </Out7DestEffect>
          <Out7DestParameter>
            <Value>-1</Value>
            <Visualization>Device only</Visualization>
          </Out7DestParameter>
          <Out7Min>
            <Value>0.0</Value>
            <Visualization>Device only</Visualization>
          </Out7Min>
          <Out7Max>
            <Value>1.0</Value>
            <Visualization>Device only</Visualization>
          </Out7Max>
          <Out7Scaling>Linear</Out7Scaling>
          <Out8DestTrack>
            <Value>-1</Value>
            <Visualization>Device only</Visualization>
          </Out8DestTrack>
          <Out8DestEffect>
            <Value>-1</Value>
            <Visualization>Device only</Visualization>
          </Out8DestEffect>
          <Out8DestParameter>
            <Value>-1</Value>
            <Visualization>Device only</Visualization>
          </Out8DestParameter>
          <Out8Min>
            <Value>0.0</Value>
            <Visualization>Device only</Visualization>
          </Out8Min>
          <Out8Max>
            <Value>1.0</Value>
            <Visualization>Device only</Visualization>
          </Out8Max>
          <Out8Scaling>Linear</Out8Scaling>
          <Out9DestTrack>
            <Value>-1</Value>
            <Visualization>Device only</Visualization>
          </Out9DestTrack>
          <Out9DestEffect>
            <Value>-1</Value>
            <Visualization>Device only</Visualization>
          </Out9DestEffect>
          <Out9DestParameter>
            <Value>-1</Value>
            <Visualization>Device only</Visualization>
          </Out9DestParameter>
          <Out9Min>
            <Value>0.0</Value>
            <Visualization>Device only</Visualization>
          </Out9Min>
          <Out9Max>
            <Value>1.0</Value>
            <Visualization>Device only</Visualization>
          </Out9Max>
          <Out9Scaling>Linear</Out9Scaling>
        </HydraDevice>
        <FormulaMetaDevice type="FormulaMetaDevice">
          <CustomDeviceName>Inertia keynum</CustomDeviceName>
          <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>OUTPUT - (OUTPUT - A) * power_inertia(B, 0.025, 0.5)</FormulaParagraph>
          </FormulaParagraphs>
          <FunctionsParagraphs>
            <FunctionsParagraph>function power_inertia(inertia, min, max)</FunctionsParagraph>
            <FunctionsParagraph>  inertia = 1.0 - inertia</FunctionsParagraph>
            <FunctionsParagraph>  inertia = inertia * inertia * inertia</FunctionsParagraph>
            <FunctionsParagraph>  return min + inertia * (max - min)</FunctionsParagraph>
            <FunctionsParagraph>end</FunctionsParagraph>
            <FunctionsParagraph>local bufferval = 0</FunctionsParagraph>
            <FunctionsParagraph>function inertia(value, smoothness)</FunctionsParagraph>
            <FunctionsParagraph>  local retval = bufferval - (bufferval - value) * power_inertia(smoothness, 0.025, 0.5)</FunctionsParagraph>
            <FunctionsParagraph>  bufferval = retval</FunctionsParagraph>
            <FunctionsParagraph>  return retval</FunctionsParagraph>
            <FunctionsParagraph>end</FunctionsParagraph>
          </FunctionsParagraphs>
          <InputNameA>Input</InputNameA>
          <InputNameB>Inertia</InputNameB>
          <InputNameC>_</InputNameC>
          <EditorVisible>true</EditorVisible>
          <InputA>
            <Value>0.445378184</Value>
            <Visualization>Device only</Visualization>
          </InputA>
          <InputB>
            <Value>0.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>1.0</Value>
            <Visualization>Device only</Visualization>
          </DestParameter>
        </FormulaMetaDevice>
        <HydraDevice type="HydraDevice">
          <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>
          <VisiblePages>2</VisiblePages>
          <InputValue>
            <Value>0.445378184</Value>
            <Visualization>Mixer and Device</Visualization>
          </InputValue>
          <Out1DestTrack>
            <Value>-1</Value>
            <Visualization>Device only</Visualization>
          </Out1DestTrack>
          <Out1DestEffect>
            <Value>5</Value>
            <Visualization>Device only</Visualization>
          </Out1DestEffect>
          <Out1DestParameter>
            <Value>2</Value>
            <Visualization>Device only</Visualization>
          </Out1DestParameter>
          <Out1Min>
            <Value>0.0</Value>
            <Visualization>Device only</Visualization>
          </Out1Min>
          <Out1Max>
            <Value>1.0</Value>
            <Visualization>Device only</Visualization>
          </Out1Max>
          <Out1Scaling>Linear</Out1Scaling>
          <Out2DestTrack>
            <Value>-1</Value>
            <Visualization>Device only</Visualization>
          </Out2DestTrack>
          <Out2DestEffect>
            <Value>6</Value>
            <Visualization>Device only</Visualization>
          </Out2DestEffect>
          <Out2DestParameter>
            <Value>2</Value>
            <Visualization>Device only</Visualization>
          </Out2DestParameter>
          <Out2Min>
            <Value>0.0</Value>
            <Visualization>Device only</Visualization>
          </Out2Min>
          <Out2Max>
            <Value>1.0</Value>
            <Visualization>Device only</Visualization>
          </Out2Max>
          <Out2Scaling>Linear</Out2Scaling>
          <Out3DestTrack>
            <Value>-1</Value>
            <Visualization>Device only</Visualization>
          </Out3DestTrack>
          <Out3DestEffect>
            <Value>7</Value>
            <Visualization>Device only</Visualization>
          </Out3DestEffect>
          <Out3DestParameter>
            <Value>2</Value>
            <Visualization>Device only</Visualization>
          </Out3DestParameter>
          <Out3Min>
            <Value>0.0</Value>
            <Visualization>Device only</Visualization>
          </Out3Min>
          <Out3Max>
            <Value>1.0</Value>
            <Visualization>Device only</Visualization>
          </Out3Max>
          <Out3Scaling>Linear</Out3Scaling>
          <Out4DestTrack>
            <Value>-1</Value>
            <Visualization>Device only</Visualization>
          </Out4DestTrack>
          <Out4DestEffect>
            <Value>8</Value>
            <Visualization>Device only</Visualization>
          </Out4DestEffect>
          <Out4DestParameter>
            <Value>2</Value>
            <Visualization>Device only</Visualization>
          </Out4DestParameter>
          <Out4Min>
            <Value>0.0</Value>
            <Visualization>Device only</Visualization>
          </Out4Min>
          <Out4Max>
            <Value>1.0</Value>
            <Visualization>Device only</Visualization>
          </Out4Max>
          <Out4Scaling>Linear</Out4Scaling>
          <Out5DestTrack>
            <Value>-1</Value>
            <Visualization>Device only</Visualization>
          </Out5DestTrack>
          <Out5DestEffect>
            <Value>9</Value>
            <Visualization>Device only</Visualization>
          </Out5DestEffect>
          <Out5DestParameter>
            <Value>2</Value>
            <Visualization>Device only</Visualization>
          </Out5DestParameter>
          <Out5Min>
            <Value>0.0</Value>
            <Visualization>Device only</Visualization>
          </Out5Min>
          <Out5Max>
            <Value>1.0</Value>
            <Visualization>Device only</Visualization>
          </Out5Max>
          <Out5Scaling>Linear</Out5Scaling>
          <Out6DestTrack>
            <Value>-1</Value>
            <Visualization>Device only</Visualization>
          </Out6DestTrack>
          <Out6DestEffect>
            <Value>-1</Value>
            <Visualization>Device only</Visualization>
          </Out6DestEffect>
          <Out6DestParameter>
            <Value>-1</Value>
            <Visualization>Device only</Visualization>
          </Out6DestParameter>
          <Out6Min>
            <Value>0.0</Value>
            <Visualization>Device only</Visualization>
          </Out6Min>
          <Out6Max>
            <Value>1.0</Value>
            <Visualization>Device only</Visualization>
          </Out6Max>
          <Out6Scaling>Linear</Out6Scaling>
          <Out7DestTrack>
            <Value>-1</Value>
            <Visualization>Device only</Visualization>
          </Out7DestTrack>
          <Out7DestEffect>
            <Value>-1</Value>
            <Visualization>Device only</Visualization>
          </Out7DestEffect>
          <Out7DestParameter>
            <Value>-1</Value>
            <Visualization>Device only</Visualization>
          </Out7DestParameter>
          <Out7Min>
            <Value>0.0</Value>
            <Visualization>Device only</Visualization>
          </Out7Min>
          <Out7Max>
            <Value>1.0</Value>
            <Visualization>Device only</Visualization>
          </Out7Max>
          <Out7Scaling>Linear</Out7Scaling>
          <Out8DestTrack>
            <Value>-1</Value>
            <Visualization>Device only</Visualization>
          </Out8DestTrack>
          <Out8DestEffect>
            <Value>-1</Value>
            <Visualization>Device only</Visualization>
          </Out8DestEffect>
          <Out8DestParameter>
            <Value>-1</Value>
            <Visualization>Device only</Visualization>
          </Out8DestParameter>
          <Out8Min>
            <Value>0.0</Value>
            <Visualization>Device only</Visualization>
          </Out8Min>
          <Out8Max>
            <Value>1.0</Value>
            <Visualization>Device only</Visualization>
          </Out8Max>
          <Out8Scaling>Linear</Out8Scaling>
          <Out9DestTrack>
            <Value>-1</Value>
            <Visualization>Device only</Visualization>
          </Out9DestTrack>
          <Out9DestEffect>
            <Value>-1</Value>
            <Visualization>Device only</Visualization>
          </Out9DestEffect>
          <Out9DestParameter>
            <Value>-1</Value>
            <Visualization>Device only</Visualization>
          </Out9DestParameter>
          <Out9Min>
            <Value>0.0</Value>
            <Visualization>Device only</Visualization>
          </Out9Min>
          <Out9Max>
            <Value>1.0</Value>
            <Visualization>Device only</Visualization>
          </Out9Max>
          <Out9Scaling>Linear</Out9Scaling>
        </HydraDevice>
        <FormulaMetaDevice type="FormulaMetaDevice">
          <CustomDeviceName>band1</CustomDeviceName>
          <IsMaximized>false</IsMaximized>
          <IsSelected>false</IsSelected>
          <SelectedPresetName>note-freq-helper-inertia</SelectedPresetName>
          <SelectedPresetLibrary>Bundled Content</SelectedPresetLibrary>
          <SelectedPresetIsModified>false</SelectedPresetIsModified>
          <IsActive>
            <Value>1.0</Value>
            <Visualization>Device only</Visualization>
          </IsActive>
          <FormulaParagraphs>
            <FormulaParagraph>func(A, B, C, 20, 20000, 0.01)</FormulaParagraph>
          </FormulaParagraphs>
          <FunctionsParagraphs>
            <FunctionsParagraph>local function round(num, idp)</FunctionsParagraph>
            <FunctionsParagraph>  local mult = 10^(idp or 0)</FunctionsParagraph>
            <FunctionsParagraph>  return floor(num * mult + 0.5) / mult</FunctionsParagraph>
            <FunctionsParagraph>end</FunctionsParagraph>
            <FunctionsParagraph>function power_inertia(inertia, min, max)</FunctionsParagraph>
            <FunctionsParagraph>  inertia = 1.0 - inertia</FunctionsParagraph>
            <FunctionsParagraph>  inertia = inertia * inertia * inertia</FunctionsParagraph>
            <FunctionsParagraph>  return min + inertia * (max - min)</FunctionsParagraph>
            <FunctionsParagraph>end</FunctionsParagraph>
            <FunctionsParagraph>local bufferval = 0</FunctionsParagraph>
            <FunctionsParagraph>function inertia(value, smoothness)</FunctionsParagraph>
            <FunctionsParagraph>  local retval = bufferval - (bufferval - value) * power_inertia(smoothness, 0.025, 0.5)</FunctionsParagraph>
            <FunctionsParagraph>  bufferval = retval</FunctionsParagraph>
            <FunctionsParagraph>  return retval</FunctionsParagraph>
            <FunctionsParagraph>end</FunctionsParagraph>
            <FunctionsParagraph>function func(a,b,c,freq_start,freq_end, i)</FunctionsParagraph>
            <FunctionsParagraph>  local keynum = round(b * 119, 0)</FunctionsParagraph>
            <FunctionsParagraph>  local keyoffset = round(a * 119, 0)-60</FunctionsParagraph>
            <FunctionsParagraph>  local freqoffet = c * (freq_end-freq_start)*2 - (freq_end-freq_start)</FunctionsParagraph>
            <FunctionsParagraph>  local freq = (440.0 + freqoffet) * 2.0^(((keynum + keyoffset) - 57.0) / 12.0);</FunctionsParagraph>
            <FunctionsParagraph>  if (freq &lt; 0) then freq = 0; end</FunctionsParagraph>
            <FunctionsParagraph>  local retval = inertia((freq-freq_start)/(freq_end-freq_start), i) </FunctionsParagraph>
            <FunctionsParagraph>  if (retval &gt; 1) then retval = 1; end</FunctionsParagraph>
            <FunctionsParagraph>  return retval</FunctionsParagraph>
            <FunctionsParagraph>end</FunctionsParagraph>
            <FunctionsParagraph/>
          </FunctionsParagraphs>
          <InputNameA>key offset</InputNameA>
          <InputNameB>key</InputNameB>
          <InputNameC>freq offset</InputNameC>
          <EditorVisible>true</EditorVisible>
          <InputA>
            <Value>0.272000074</Value>
            <Visualization>Device only</Visualization>
          </InputA>
          <InputB>
            <Value>0.445378184</Value>
            <Visualization>Device only</Visualization>
          </InputB>
          <InputC>
            <Value>0.503999829</Value>
            <Visualization>Device only</Visualization>
          </InputC>
          <DestTrack>
            <Value>-1</Value>
            <Visualization>Device only</Visualization>
          </DestTrack>
          <DestEffect>
            <Value>0.0</Value>
            <Visualization>Device only</Visualization>
          </DestEffect>
          <DestParameter>
            <Value>6</Value>
            <Visualization>Device only</Visualization>
          </DestParameter>
        </FormulaMetaDevice>
        <FormulaMetaDevice type="FormulaMetaDevice">
          <CustomDeviceName>band2</CustomDeviceName>
          <IsMaximized>false</IsMaximized>
          <IsSelected>false</IsSelected>
          <SelectedPresetName>note-freq-helper-inertia</SelectedPresetName>
          <SelectedPresetLibrary>Bundled Content</SelectedPresetLibrary>
          <SelectedPresetIsModified>false</SelectedPresetIsModified>
          <IsActive>
            <Value>1.0</Value>
            <Visualization>Device only</Visualization>
          </IsActive>
          <FormulaParagraphs>
            <FormulaParagraph>func(A, B, C, 20, 20000, 0.01)</FormulaParagraph>
          </FormulaParagraphs>
          <FunctionsParagraphs>
            <FunctionsParagraph>local function round(num, idp)</FunctionsParagraph>
            <FunctionsParagraph>  local mult = 10^(idp or 0)</FunctionsParagraph>
            <FunctionsParagraph>  return floor(num * mult + 0.5) / mult</FunctionsParagraph>
            <FunctionsParagraph>end</FunctionsParagraph>
            <FunctionsParagraph>function power_inertia(inertia, min, max)</FunctionsParagraph>
            <FunctionsParagraph>  inertia = 1.0 - inertia</FunctionsParagraph>
            <FunctionsParagraph>  inertia = inertia * inertia * inertia</FunctionsParagraph>
            <FunctionsParagraph>  return min + inertia * (max - min)</FunctionsParagraph>
            <FunctionsParagraph>end</FunctionsParagraph>
            <FunctionsParagraph>local bufferval = 0</FunctionsParagraph>
            <FunctionsParagraph>function inertia(value, smoothness)</FunctionsParagraph>
            <FunctionsParagraph>  local retval = bufferval - (bufferval - value) * power_inertia(smoothness, 0.025, 0.5)</FunctionsParagraph>
            <FunctionsParagraph>  bufferval = retval</FunctionsParagraph>
            <FunctionsParagraph>  return retval</FunctionsParagraph>
            <FunctionsParagraph>end</FunctionsParagraph>
            <FunctionsParagraph>function func(a,b,c,freq_start,freq_end, i)</FunctionsParagraph>
            <FunctionsParagraph>  local keynum = round(b * 119, 0)</FunctionsParagraph>
            <FunctionsParagraph>  local keyoffset = round(a * 119, 0)-60</FunctionsParagraph>
            <FunctionsParagraph>  local freqoffet = c * (freq_end-freq_start)*2 - (freq_end-freq_start)</FunctionsParagraph>
            <FunctionsParagraph>  local freq = (440.0 + freqoffet) * 2.0^(((keynum + keyoffset) - 57.0) / 12.0);</FunctionsParagraph>
            <FunctionsParagraph>  if (freq &lt; 0) then freq = 0; end</FunctionsParagraph>
            <FunctionsParagraph>  local retval = inertia((freq-freq_start)/(freq_end-freq_start), i) </FunctionsParagraph>
            <FunctionsParagraph>  if (retval &gt; 1) then retval = 1; end</FunctionsParagraph>
            <FunctionsParagraph>  return retval</FunctionsParagraph>
            <FunctionsParagraph>end</FunctionsParagraph>
            <FunctionsParagraph/>
          </FunctionsParagraphs>
          <InputNameA>key offset</InputNameA>
          <InputNameB>key</InputNameB>
          <InputNameC>freq offset</InputNameC>
          <EditorVisible>true</EditorVisible>
          <InputA>
            <Value>0.272000074</Value>
            <Visualization>Device only</Visualization>
          </InputA>
          <InputB>
            <Value>0.445378184</Value>
            <Visualization>Device only</Visualization>
          </InputB>
          <InputC>
            <Value>0.58400023</Value>
            <Visualization>Device only</Visualization>
          </InputC>
          <DestTrack>
            <Value>-1</Value>
            <Visualization>Device only</Visualization>
          </DestTrack>
          <DestEffect>
            <Value>0.0</Value>
            <Visualization>Device only</Visualization>
          </DestEffect>
          <DestParameter>
            <Value>7</Value>
            <Visualization>Device only</Visualization>
          </DestParameter>
        </FormulaMetaDevice>
        <FormulaMetaDevice type="FormulaMetaDevice">
          <CustomDeviceName>band3</CustomDeviceName>
          <IsMaximized>false</IsMaximized>
          <IsSelected>false</IsSelected>
          <SelectedPresetName>note-freq-helper-inertia</SelectedPresetName>
          <SelectedPresetLibrary>Bundled Content</SelectedPresetLibrary>
          <SelectedPresetIsModified>false</SelectedPresetIsModified>
          <IsActive>
            <Value>1.0</Value>
            <Visualization>Device only</Visualization>
          </IsActive>
          <FormulaParagraphs>
            <FormulaParagraph>func(A, B, C, 20, 20000, 0.01)</FormulaParagraph>
          </FormulaParagraphs>
          <FunctionsParagraphs>
            <FunctionsParagraph>local function round(num, idp)</FunctionsParagraph>
            <FunctionsParagraph>  local mult = 10^(idp or 0)</FunctionsParagraph>
            <FunctionsParagraph>  return floor(num * mult + 0.5) / mult</FunctionsParagraph>
            <FunctionsParagraph>end</FunctionsParagraph>
            <FunctionsParagraph>function power_inertia(inertia, min, max)</FunctionsParagraph>
            <FunctionsParagraph>  inertia = 1.0 - inertia</FunctionsParagraph>
            <FunctionsParagraph>  inertia = inertia * inertia * inertia</FunctionsParagraph>
            <FunctionsParagraph>  return min + inertia * (max - min)</FunctionsParagraph>
            <FunctionsParagraph>end</FunctionsParagraph>
            <FunctionsParagraph>local bufferval = 0</FunctionsParagraph>
            <FunctionsParagraph>function inertia(value, smoothness)</FunctionsParagraph>
            <FunctionsParagraph>  local retval = bufferval - (bufferval - value) * power_inertia(smoothness, 0.025, 0.5)</FunctionsParagraph>
            <FunctionsParagraph>  bufferval = retval</FunctionsParagraph>
            <FunctionsParagraph>  return retval</FunctionsParagraph>
            <FunctionsParagraph>end</FunctionsParagraph>
            <FunctionsParagraph>function func(a,b,c,freq_start,freq_end, i)</FunctionsParagraph>
            <FunctionsParagraph>  local keynum = round(b * 119, 0)</FunctionsParagraph>
            <FunctionsParagraph>  local keyoffset = round(a * 119, 0)-60</FunctionsParagraph>
            <FunctionsParagraph>  local freqoffet = c * (freq_end-freq_start)*2 - (freq_end-freq_start)</FunctionsParagraph>
            <FunctionsParagraph>  local freq = (440.0 + freqoffet) * 2.0^(((keynum + keyoffset) - 57.0) / 12.0);</FunctionsParagraph>
            <FunctionsParagraph>  if (freq &lt; 0) then freq = 0; end</FunctionsParagraph>
            <FunctionsParagraph>  local retval = inertia((freq-freq_start)/(freq_end-freq_start), i) </FunctionsParagraph>
            <FunctionsParagraph>  if (retval &gt; 1) then retval = 1; end</FunctionsParagraph>
            <FunctionsParagraph>  return retval</FunctionsParagraph>
            <FunctionsParagraph>end</FunctionsParagraph>
            <FunctionsParagraph/>
          </FunctionsParagraphs>
          <InputNameA>key offset</InputNameA>
          <InputNameB>key</InputNameB>
          <InputNameC>freq offset</InputNameC>
          <EditorVisible>true</EditorVisible>
          <InputA>
            <Value>0.272000074</Value>
            <Visualization>Device only</Visualization>
          </InputA>
          <InputB>
            <Value>0.445378184</Value>
            <Visualization>Device only</Visualization>
          </InputB>
          <InputC>
            <Value>0.684000611</Value>
            <Visualization>Device only</Visualization>
          </InputC>
          <DestTrack>
            <Value>-1</Value>
            <Visualization>Device only</Visualization>
          </DestTrack>
          <DestEffect>
            <Value>0.0</Value>
            <Visualization>Device only</Visualization>
          </DestEffect>
          <DestParameter>
            <Value>8</Value>
            <Visualization>Device only</Visualization>
          </DestParameter>
        </FormulaMetaDevice>
        <FormulaMetaDevice type="FormulaMetaDevice">
          <CustomDeviceName>band4</CustomDeviceName>
          <IsMaximized>false</IsMaximized>
          <IsSelected>false</IsSelected>
          <SelectedPresetName>note-freq-helper-inertia</SelectedPresetName>
          <SelectedPresetLibrary>Bundled Content</SelectedPresetLibrary>
          <SelectedPresetIsModified>false</SelectedPresetIsModified>
          <IsActive>
            <Value>1.0</Value>
            <Visualization>Device only</Visualization>
          </IsActive>
          <FormulaParagraphs>
            <FormulaParagraph>func(A, B, C, 20, 20000, 0.01)</FormulaParagraph>
          </FormulaParagraphs>
          <FunctionsParagraphs>
            <FunctionsParagraph>local function round(num, idp)</FunctionsParagraph>
            <FunctionsParagraph>  local mult = 10^(idp or 0)</FunctionsParagraph>
            <FunctionsParagraph>  return floor(num * mult + 0.5) / mult</FunctionsParagraph>
            <FunctionsParagraph>end</FunctionsParagraph>
            <FunctionsParagraph>function power_inertia(inertia, min, max)</FunctionsParagraph>
            <FunctionsParagraph>  inertia = 1.0 - inertia</FunctionsParagraph>
            <FunctionsParagraph>  inertia = inertia * inertia * inertia</FunctionsParagraph>
            <FunctionsParagraph>  return min + inertia * (max - min)</FunctionsParagraph>
            <FunctionsParagraph>end</FunctionsParagraph>
            <FunctionsParagraph>local bufferval = 0</FunctionsParagraph>
            <FunctionsParagraph>function inertia(value, smoothness)</FunctionsParagraph>
            <FunctionsParagraph>  local retval = bufferval - (bufferval - value) * power_inertia(smoothness, 0.025, 0.5)</FunctionsParagraph>
            <FunctionsParagraph>  bufferval = retval</FunctionsParagraph>
            <FunctionsParagraph>  return retval</FunctionsParagraph>
            <FunctionsParagraph>end</FunctionsParagraph>
            <FunctionsParagraph>function func(a,b,c,freq_start,freq_end, i)</FunctionsParagraph>
            <FunctionsParagraph>  local keynum = round(b * 119, 0)</FunctionsParagraph>
            <FunctionsParagraph>  local keyoffset = round(a * 119, 0)-60</FunctionsParagraph>
            <FunctionsParagraph>  local freqoffet = c * (freq_end-freq_start)*2 - (freq_end-freq_start)</FunctionsParagraph>
            <FunctionsParagraph>  local freq = (440.0 + freqoffet) * 2.0^(((keynum + keyoffset) - 57.0) / 12.0);</FunctionsParagraph>
            <FunctionsParagraph>  if (freq &lt; 0) then freq = 0; end</FunctionsParagraph>
            <FunctionsParagraph>  local retval = inertia((freq-freq_start)/(freq_end-freq_start), i) </FunctionsParagraph>
            <FunctionsParagraph>  if (retval &gt; 1) then retval = 1; end</FunctionsParagraph>
            <FunctionsParagraph>  return retval</FunctionsParagraph>
            <FunctionsParagraph>end</FunctionsParagraph>
            <FunctionsParagraph/>
          </FunctionsParagraphs>
          <InputNameA>key offset</InputNameA>
          <InputNameB>key</InputNameB>
          <InputNameC>freq offset</InputNameC>
          <EditorVisible>true</EditorVisible>
          <InputA>
            <Value>0.272000074</Value>
            <Visualization>Device only</Visualization>
          </InputA>
          <InputB>
            <Value>0.445378184</Value>
            <Visualization>Device only</Visualization>
          </InputB>
          <InputC>
            <Value>0.772000432</Value>
            <Visualization>Device only</Visualization>
          </InputC>
          <DestTrack>
            <Value>-1</Value>
            <Visualization>Device only</Visualization>
          </DestTrack>
          <DestEffect>
            <Value>0.0</Value>
            <Visualization>Device only</Visualization>
          </DestEffect>
          <DestParameter>
            <Value>9</Value>
            <Visualization>Device only</Visualization>
          </DestParameter>
        </FormulaMetaDevice>
        <FormulaMetaDevice type="FormulaMetaDevice">
          <CustomDeviceName>band5</CustomDeviceName>
          <IsMaximized>false</IsMaximized>
          <IsSelected>false</IsSelected>
          <SelectedPresetName>note-freq-helper-inertia</SelectedPresetName>
          <SelectedPresetLibrary>Bundled Content</SelectedPresetLibrary>
          <SelectedPresetIsModified>false</SelectedPresetIsModified>
          <IsActive>
            <Value>1.0</Value>
            <Visualization>Device only</Visualization>
          </IsActive>
          <FormulaParagraphs>
            <FormulaParagraph>func(A, B, C, 20, 20000, 0.01)</FormulaParagraph>
          </FormulaParagraphs>
          <FunctionsParagraphs>
            <FunctionsParagraph>local function round(num, idp)</FunctionsParagraph>
            <FunctionsParagraph>  local mult = 10^(idp or 0)</FunctionsParagraph>
            <FunctionsParagraph>  return floor(num * mult + 0.5) / mult</FunctionsParagraph>
            <FunctionsParagraph>end</FunctionsParagraph>
            <FunctionsParagraph>function power_inertia(inertia, min, max)</FunctionsParagraph>
            <FunctionsParagraph>  inertia = 1.0 - inertia</FunctionsParagraph>
            <FunctionsParagraph>  inertia = inertia * inertia * inertia</FunctionsParagraph>
            <FunctionsParagraph>  return min + inertia * (max - min)</FunctionsParagraph>
            <FunctionsParagraph>end</FunctionsParagraph>
            <FunctionsParagraph>local bufferval = 0</FunctionsParagraph>
            <FunctionsParagraph>function inertia(value, smoothness)</FunctionsParagraph>
            <FunctionsParagraph>  local retval = bufferval - (bufferval - value) * power_inertia(smoothness, 0.025, 0.5)</FunctionsParagraph>
            <FunctionsParagraph>  bufferval = retval</FunctionsParagraph>
            <FunctionsParagraph>  return retval</FunctionsParagraph>
            <FunctionsParagraph>end</FunctionsParagraph>
            <FunctionsParagraph>function func(a,b,c,freq_start,freq_end, i)</FunctionsParagraph>
            <FunctionsParagraph>  local keynum = round(b * 119, 0)</FunctionsParagraph>
            <FunctionsParagraph>  local keyoffset = round(a * 119, 0)-60</FunctionsParagraph>
            <FunctionsParagraph>  local freqoffet = c * (freq_end-freq_start)*2 - (freq_end-freq_start)</FunctionsParagraph>
            <FunctionsParagraph>  local freq = (440.0 + freqoffet) * 2.0^(((keynum + keyoffset) - 57.0) / 12.0);</FunctionsParagraph>
            <FunctionsParagraph>  if (freq &lt; 0) then freq = 0; end</FunctionsParagraph>
            <FunctionsParagraph>  local retval = inertia((freq-freq_start)/(freq_end-freq_start), i) </FunctionsParagraph>
            <FunctionsParagraph>  if (retval &gt; 1) then retval = 1; end</FunctionsParagraph>
            <FunctionsParagraph>  return retval</FunctionsParagraph>
            <FunctionsParagraph>end</FunctionsParagraph>
            <FunctionsParagraph/>
          </FunctionsParagraphs>
          <InputNameA>key offset</InputNameA>
          <InputNameB>key</InputNameB>
          <InputNameC>freq offset</InputNameC>
          <EditorVisible>true</EditorVisible>
          <InputA>
            <Value>0.272000074</Value>
            <Visualization>Device only</Visualization>
          </InputA>
          <InputB>
            <Value>0.445378184</Value>
            <Visualization>Device only</Visualization>
          </InputB>
          <InputC>
            <Value>0.964000165</Value>
            <Visualization>Device only</Visualization>
          </InputC>
          <DestTrack>
            <Value>-1</Value>
            <Visualization>Device only</Visualization>
          </DestTrack>
          <DestEffect>
            <Value>0.0</Value>
            <Visualization>Device only</Visualization>
          </DestEffect>
          <DestParameter>
            <Value>10</Value>
            <Visualization>Device only</Visualization>
          </DestParameter>
        </FormulaMetaDevice>
      </Devices>
    </DeviceChain>
  </DeviceSlot>
</FilterDeviceClipboard>

1 Like

thanks! I have no idea how that is a doofer, lol. What does one do with that to be able to open it as a doofer?

I’ll check your code for formulas and see if I can get a keytracked eq 10 working. thank you!

Copy the whole xml and then paste it simply onto a dsp device inside renoise. I think you can’t keyfollow eq10, because doofers are limited in parameters.

1 Like

hey, awesome. thanks again! is this doofer your work?

Yes, but it is very old. You can improve it, using proper translation functions and for example, using logarithmic scaling for the frequency knobs.

1 Like

One could improve it, not I… :wink: At least not yet. Hoping to get there eventually

1 Like