New Tool (2.7+): Synchronize Modulation Dsps

nice!

I was wondering why it wouldn’t do cross converting, so the LFO could also be programmed in Hz?

Internally the tool does this cross conversion already and i’ve tried to add the LFO for you but ran into an unexpected problem. Say you set the LFO rate to LPC “4” and query the parameter value with a script, you don’t get the “4” back, but some other value. I have no idea how to convert this number to the actual LPC value shown next to the parameter or what this number represents. Seems the LFO requires some extra handling.

Edit: The value seems to be in Hz already, should be easy to add then.

No chance, seems to be something else.

I believe the slider value should be a value between 0 and 1 (minislider) the other slider also is relative 0 to 100.
I assume the values are linear translatable for what the maximum value of the LPC can be, else try the db2lin() and the lin2db() functions that are embedded (or dbtolin / lintodb).

Well, the conversion was much simpler actually. To get the LPC value from the returned value one can use (60 / value). Attached is version 1.1, which allows you to set the LFO in Hz, let me know if everything works as expected. The menu name was simply changed to “Set Rate…” now and the keyboard handling was also a bit tweaked.

It seems to work.
Though for some reason the rounding also needs to be applied when the value is set.
If i set the frequency to 0.5hz or 0.1 hz, the value in the dialog is suddenly changed to something like 0.1003428834729 and 239.999999478 LPC (which supposed to be 240 LPC)
In the LFO the value is correctly set, just the GUI update isn’t correct for some reason after clicking the “set” button.

I suppose the rounding can’t be totally avoided, but is minimal and can be ignored probably. To make things a bit more pretty, i’ve limited the displayed numbers to 4 after the decimal point now, which is more close to what Renoise displays after applying the value. A small difference may still happen, but Renoise will handle this after setting the new value.

Edit: See first post for latest version.

I got this error while messing around with old songs that weren’t mine, downloaded from the site. Not sure how this happened as I wasn’t using the tool and I doubt these songs were?

[luabox]
ScriptingEngine: std::logic_error: ‘trying to access a nil object of type ‘class FilterDeviceParameter’. the object is not or no longer available.’
stack traceback:
[C]: ?
[C]: in function ‘__index’
[string “do…”]:36: in function <[string “do…”]:35>
./Classes/LPCDialog.lua:165: in function <./Classes/LPCDialog.lua:155>

Error Message: ‘/Users/ME/Library/Preferences/Renoise/V2.7.2/Scripts/Tools/AS.Beatslaughter.ChorusFlangerPhaserLPC.xrnx/main.lua’ failed in one of its notifiers.
Error Message: The notifier will be disabled to prevent further errors.
Error Message: Please contact the author (Alexander Stoica | Beatslaughter (info@beatslaughter.de)) for assistance…
Error Message: std::logic_error: ‘trying to access a nil object of type ‘class FilterDeviceParameter’. the object is not or no longer available.’
Error Message: stack traceback:
Error Message: [C]: ?
Error Message: [C]: in function ‘__index’
Error Message: [string “do…”]:36: in function <[string “do…”]:35>
Error Message: ./Classes/LPCDialog.lua:165: in function <./Classes/LPCDialog.lua:155>

ScriptingEngine: std::logic_error: ‘trying to access a nil object of type ‘class FilterDeviceParameter’. the object is not or no longer available.’
stack traceback:
[C]: ?
[C]: in function ‘__index’
[string “do…”]:36: in function <[string “do…”]:35>
./Classes/LPCDialog.lua:165: in function <./Classes/LPCDialog.lua:155>

Error Message: ‘/Users/ME/Library/Preferences/Renoise/V2.7.2/Scripts/Tools/AS.Beatslaughter.ChorusFlangerPhaserLPC.xrnx/main.lua’ failed in one of its notifiers.
Error Message: The notifier will be disabled to prevent further errors.
Error Message: Please contact the author (Alexander Stoica | Beatslaughter (info@beatslaughter.de)) for assistance…
Error Message: std::logic_error: ‘trying to access a nil object of type ‘class FilterDeviceParameter’. the object is not or no longer available.’
Error Message: stack traceback:
Error Message: [C]: ?
Error Message: [C]: in function ‘__index’
Error Message: [string “do…”]:36: in function <[string “do…”]:35>
Error Message: ./Classes/LPCDialog.lua:165: in function <./Classes/LPCDialog.lua:155>

ScriptingEngine: std::logic_error: ‘trying to access a nil object of type ‘class FilterDeviceParameter’. the object is not or no longer available.’
stack traceback:
[C]: ?
[C]: in function ‘__index’
[string “do…”]:36: in function <[string “do…”]:35>
./Classes/LPCDialog.lua:165: in function <./Classes/LPCDialog.lua:155>

Error Message: ‘/Users/ME/Library/Preferences/Renoise/V2.7.2/Scripts/Tools/AS.Beatslaughter.ChorusFlangerPhaserLPC.xrnx/main.lua’ failed in one of its notifiers.
Error Message: The notifier will be disabled to prevent further errors.
Error Message: Please contact the author (Alexander Stoica | Beatslaughter (info@beatslaughter.de)) for assistance…
Error Message: std::logic_error: ‘trying to access a nil object of type ‘class FilterDeviceParameter’. the object is not or no longer available.’
Error Message: stack traceback:
Error Message: [C]: ?
Error Message: [C]: in function ‘__index’
Error Message: [string “do…”]:36: in function <[string “do…”]:35>
Error Message: ./Classes/LPCDialog.lua:165: in function <./Classes/LPCDialog.lua:155>

ScriptingEngine: std::logic_error: ‘trying to access a nil object of type ‘class FilterDeviceParameter’. the object is not or no longer available.’
stack traceback:
[C]: ?
[C]: in function ‘__index’
[string “do…”]:36: in function <[string “do…”]:35>
./Classes/LPCDialog.lua:165: in function <./Classes/LPCDialog.lua:155>

Error Message: ‘/Users/ME/Library/Preferences/Renoise/V2.7.2/Scripts/Tools/AS.Beatslaughter.ChorusFlangerPhaserLPC.xrnx/main.lua’ failed in one of its notifiers.
Error Message: The notifier will be disabled to prevent further errors.
Error Message: Please contact the author (Alexander Stoica | Beatslaughter (info@beatslaughter.de)) for assistance…
Error Message: std::logic_error: ‘trying to access a nil object of type ‘class FilterDeviceParameter’. the object is not or no longer available.’
Error Message: stack traceback:
Error Message: [C]: ?
Error Message: [C]: in function ‘__index’
Error Message: [string “do…”]:36: in function <[string “do…”]:35>
Error Message: ./Classes/LPCDialog.lua:165: in function <./Classes/LPCDialog.lua:155>
[/luabox]

Not sure yet what may have caused this. Can you test the current version instead of the old one you have? Maybe an idea what you did to make this occur?

Wait, what? /Me looks at the Tools page

Argh, there’s a new version that the Tool Updater is unaware of. Dang it.

We need to put “is upgradable?” in the sanity check when approving new Tools.

UPDATE: Wait, I see what happened. You renamed the Tool. I have to delete the old one. Strange, but OK.

The version you had was never approved, posted it on the board only. The old name was kinda silly and the renamed one went to the tools page. ;)

Updated to version 1.2, download from the tools page.

I was looking for a way to make a MIDI mapped LFO synced, switch between even numbers when I turn the knob. Now when I turn the knob it goes 127.0 LPC, 63.50 LPC, 42.33 LPC, 31.75 LPC… and so on.

This was the closest thing I could find.

How hard would it be to make a “live” version of this tool? Where the frequency of the LFO (or Chorus etc) is divided into 128 steps corresponding to the 0-127 cc value, which are synced to the BPM in a useful way. This would make a very useful live tool, certainly for dub step enthusiasts whom want to tweak wobble bass with MIDI controller.

You might find this interesting:

Thanks! I thought I had something useful on the subject recently, but I couldn’t find it. Nice workaround. It didn’t occur to me that I could use an LFO as a signal remapper this way, great! :)

Version 1.3 was uploaded. it requires Renoise 3.0.1 because a bug in the API was fixed for the tool to work properly. The menu can now be found for effects inside the sampler fx chains too.

Great!! Can you also use this tool to “reset” a Flanger to its initial (or arbitrary) phase at a start of a pattern? That’s one reason why I hardly ever use the Flanger or Phaser effects, because I can’t be sure whether it starts “high” or “low”, when I play my song or part of it. And most of the time I want my stuff to be programmed deterministically :slight_smile:

Well, the tool itself can only help you setting proper synced values, the actual phase is impossible to change by a tool. But after some testing it seems that automating on/off state does the trick of resetting the phase, so all you have to do is positioning (on/off earlier/later) your automation properly, maybe with help of a send track and automating wet/dry state if needed.

Here is a small example file with synced DSPs to 32 lines… the first pattern has the phase offset by 16 lines for f1/f2 and p1/p2, the second pattern is alternating the phase each 16 lines on f1/f2 and p1/p2. Follow the track scopes to see what’s going on. Also play this at low volume, since i have used a sine sound and it’s not really pleasant to listen to, but visualizes nicely.

Thanks for the tip, I got your example and will give it a try soon!