Go Back   Cockos Incorporated Forums > REAPER Forums > ReaScript, JSFX, REAPER Plug-in Extensions, Developer Forum

Reply
 
Thread Tools Display Modes
Old 08-30-2020, 08:01 AM   #561
Meo-Ada Mespotine
Human being with feelings
 
Meo-Ada Mespotine's Avatar
 
Join Date: May 2017
Location: Leipzig
Posts: 6,478
Default

Ok guys and girls, I have to announce, that problems have arisen with parameter-learn and lfo-learn, as I pointed out in this thread:
https://forum.cockos.com/showthread.php?t=241734

Depending on the answer by the devs, I can fix it, BUT: it will make a change of some functions already existing in the Ultraschall-API needed.
Means: If you already use the following functions, things WILL break in the next update:

AddParmLFOLearn_FXStateChunk, DeleteParmLFOLearn_FXStateChunk, GetParmLFOLearn_FXStateChunk, GetParmLFOLearn_MediaItem, GetParmLFOLearn_MediaTrack, SetParmLFOLearn_FXStateChunk,
AddParmLearn_FXStateChunk, DeleteParmLearn_FXStateChunk, GetParmLearn_FXStateChunk
GetParmLearn_MediaItem, GetParmLearn_MediaTrack, SetParmLearn_FXStateChunk

so you need to check your scripts in that case.
Sorry for that, but it's the only way to make it correctly and not breaking in the future. And the current versions simply work wrong, so keeping them for the future is not an option.

In other news: ParmModulation is alive and kicking and WILL be in the next update. Correctly working.
__________________
Use you/she/her.Ultraschall-Api Lua Api4Reaper
Bugreports&Docs notes please do here:https://github.com/Ultraschall/ultra...-reaper/issues - Donate, if you wish
Meo-Ada Mespotine is offline   Reply With Quote
Old 09-18-2020, 08:45 AM   #562
Meo-Ada Mespotine
Human being with feelings
 
Meo-Ada Mespotine's Avatar
 
Join Date: May 2017
Location: Leipzig
Posts: 6,478
Default

Tell all your family and friends that you won't be available for an unknown amount of time

...

for ParmModulation will hit the virtual shelf on 30th of September.
__________________
Use you/she/her.Ultraschall-Api Lua Api4Reaper
Bugreports&Docs notes please do here:https://github.com/Ultraschall/ultra...-reaper/issues - Donate, if you wish
Meo-Ada Mespotine is offline   Reply With Quote
Old 09-19-2020, 03:29 AM   #563
TonE
Human being with feelings
 
Join Date: Feb 2009
Location: Reaper HAS send control via midi !!!
Posts: 3,962
Default

I was and still am ONLY interested in PARMLEARN, and exactly only this is not working yet. Thanks for all your efforts, I hope this will work at some point, if the devs give the right information. Then we can programmatically map our hardware devices/controllers to an entire Reaper project / template in one go, no matter how simple or how complex.
TonE is offline   Reply With Quote
Old 09-19-2020, 08:53 AM   #564
Meo-Ada Mespotine
Human being with feelings
 
Meo-Ada Mespotine's Avatar
 
Join Date: May 2017
Location: Leipzig
Posts: 6,478
Default

What doesn't work exactly? Can you post me examplecode and an exampleproject and explain what you exactly expected and what happens instead?

If there's still the problem in my current devbuild, I would like to fix it before release.
__________________
Use you/she/her.Ultraschall-Api Lua Api4Reaper
Bugreports&Docs notes please do here:https://github.com/Ultraschall/ultra...-reaper/issues - Donate, if you wish

Last edited by Meo-Ada Mespotine; 09-19-2020 at 09:11 AM.
Meo-Ada Mespotine is offline   Reply With Quote
Old 09-19-2020, 09:57 AM   #565
TonE
Human being with feelings
 
Join Date: Feb 2009
Location: Reaper HAS send control via midi !!!
Posts: 3,962
Default

No, I did not test now, last example I sent you was my last test, did you make it work since then? From your writing above it sounds it still does not work. My test project you should have, does it work now?
TonE is offline   Reply With Quote
Old 09-19-2020, 11:33 AM   #566
Meo-Ada Mespotine
Human being with feelings
 
Meo-Ada Mespotine's Avatar
 
Join Date: May 2017
Location: Leipzig
Posts: 6,478
Default

Tbh, I didn't really get, what the problem was you tried to show me so I couldn't figure out, if it's a bug or some weirdness with the usage of my function you stumbled upon.

Or some Reaper issue...
__________________
Use you/she/her.Ultraschall-Api Lua Api4Reaper
Bugreports&Docs notes please do here:https://github.com/Ultraschall/ultra...-reaper/issues - Donate, if you wish
Meo-Ada Mespotine is offline   Reply With Quote
Old 09-19-2020, 04:58 PM   #567
Meo-Ada Mespotine
Human being with feelings
 
Meo-Ada Mespotine's Avatar
 
Join Date: May 2017
Location: Leipzig
Posts: 6,478
Default

@TonE

Ok, please try the following, which should work:

Step 1:
Add ReaEQ to the first track as first fx. Select Factory-Defaults as preset

Step 2:
run the following lines. They will add a ParmLearn for ReaEQ's bypass, toggled by OSC.
Code:
dofile(reaper.GetResourcePath().."/UserPlugins/ultraschall_api.lua")

A, TrackStateChunk=ultraschall.GetTrackStateChunk_Tracknumber(1) -- get the TrackStateChunk from track 1
FXStateChunk=ultraschall.GetFXStateChunk(TrackStateChunk)        -- get the FXStateChunk from it

-- add the new parmlearn to bypass(fx 1, parameter 12, parametername "bypass" in this case, no checkboxes set, react to OSC-message Tudelu
retval, alteredFXStateChunk = ultraschall.AddParmLearn_FXStateChunk(FXStateChunk, 1, 12, "bypass", 0, 0, "Tudelu") -- add parmlearn and return altered FXStateChunk

retval, TrackStateChunk2=ultraschall.SetFXStateChunk(TrackStateChunk, alteredFXStateChunk) -- put the altered FXStateChunk into the TrackStateChunk
ultraschall.SetTrackStateChunk_Tracknumber(1, TrackStateChunk2)               -- commit the FXStateChunk to Track 1
Step 3
send a local osc-message

Code:
-- this bypasses ReaEQ
reaper.OscLocalMessageToHost("Tudelu",1)
Code:
-- this enables ReaEQ
reaper.OscLocalMessageToHost("Tudelu",0)
This works on my machine and toggles bypass of ReaEQ. It's important to test this with the factory-default-preset of ReaEQ!
Could you please test that and give me feedback if that works?

If yes, we continue with the other ParmLearn-functions, but I want to see, whether this is already a problem.
__________________
Use you/she/her.Ultraschall-Api Lua Api4Reaper
Bugreports&Docs notes please do here:https://github.com/Ultraschall/ultra...-reaper/issues - Donate, if you wish
Meo-Ada Mespotine is offline   Reply With Quote
Old 09-20-2020, 01:41 AM   #568
TonE
Human being with feelings
 
Join Date: Feb 2009
Location: Reaper HAS send control via midi !!!
Posts: 3,962
Default

Thanks I will test as soon as I can, after Monday.
So do we have so far only osc mapping and not midi note or midi cc mapping for PARMLEARN? Especially in toggle mode. Also it should not depend on any selected or not selected preset, or not?
TonE is offline   Reply With Quote
Old 09-20-2020, 04:01 AM   #569
Meo-Ada Mespotine
Human being with feelings
 
Meo-Ada Mespotine's Avatar
 
Join Date: May 2017
Location: Leipzig
Posts: 6,478
Default

You can set and do everything in the ParmLearn dialog including midi. Currently afk, so I can't check how to do Midi. Will add a paragraph about that into the docs.

In my example it was easier to use OSC.
__________________
Use you/she/her.Ultraschall-Api Lua Api4Reaper
Bugreports&Docs notes please do here:https://github.com/Ultraschall/ultra...-reaper/issues - Donate, if you wish

Last edited by Meo-Ada Mespotine; 09-20-2020 at 04:04 PM.
Meo-Ada Mespotine is offline   Reply With Quote
Old 09-20-2020, 04:05 PM   #570
Meo-Ada Mespotine
Human being with feelings
 
Meo-Ada Mespotine's Avatar
 
Join Date: May 2017
Location: Leipzig
Posts: 6,478
Default

This is, how MIDI is stored in the parameter midi_note:

Code:
     integer midi_note - the midinote, that is assigned to this; this is a multibyte value, with the first byte
                         being the MIDI-mode, and the second byte the MIDI/CC-note
                             0,   OSC is used
                             176, MIDI Chan 1 CC 0     (Byte1=176, Byte2=0)
                             ...
                             432, MIDI Chan 1 CC 1     (Byte1=176, Byte2=1)
                             ...
                             144,  MIDI Chan 1 Note 1  (Byte1=144, Byte2=0)
                             400,  MIDI Chan 1 Note 1  (Byte1=144, Byte2=1)
                             ...
                             9360, MIDI Chan 1 Note 36 (Byte1=144, Byte2=36)
                             9616, MIDI Chan 1 Note 37 (Byte1=144, Byte2=37)
                             9872, MIDI Chan 1 Note 38 (Byte1=144, Byte2=38)
                               ...
                               
                         CC Mode-dropdownlist:
                            set the following flags to their specific values (0=0, 1=the value beginning &, like &65536 or &131072 or &262144)
                             &65536 &131072 &262144 
                                0       0       0,      Absolute
                                1       0       0,      Relative 1(127=-1, 1=+1)
                                0       1       0,      Relative 2(63=-1, 65=+1)
                                1       1       0,      Relative 3(65=-1, 1=+1)
                                0       0       1,      Toggle (>0=toggle)
This allows you to set any MIDI-note you want.

This is more elaborated in here than in the current versions of the docs. Will enhance the parameter-descriptions in the next update as well.
__________________
Use you/she/her.Ultraschall-Api Lua Api4Reaper
Bugreports&Docs notes please do here:https://github.com/Ultraschall/ultra...-reaper/issues - Donate, if you wish
Meo-Ada Mespotine is offline   Reply With Quote
Old 09-22-2020, 04:35 PM   #571
Meo-Ada Mespotine
Human being with feelings
 
Meo-Ada Mespotine's Avatar
 
Join Date: May 2017
Location: Leipzig
Posts: 6,478
Default

@TonE
Had you a chance to fiddle around with the example?
__________________
Use you/she/her.Ultraschall-Api Lua Api4Reaper
Bugreports&Docs notes please do here:https://github.com/Ultraschall/ultra...-reaper/issues - Donate, if you wish
Meo-Ada Mespotine is offline   Reply With Quote
Old 09-25-2020, 02:18 PM   #572
Meo-Ada Mespotine
Human being with feelings
 
Meo-Ada Mespotine's Avatar
 
Join Date: May 2017
Location: Leipzig
Posts: 6,478
Default

4.1.005 - "The Beatles - I want you(she's so heavy)" - 25th of September 2020

Has now 1240 functions, with 25 new ones

new in this release:
  • Parameter Modulation/Learn/Alias/LFOLearn
    A long time feature-request finally fulfilled. You have full access to programmatically get/alter parameter-modulation, parameter aliases, LFOLearn or Learn in general.
    So anything you would want to do with parameter-modulation can now be scripted.
    I'm curious, what will happen because of that feature. Surprise me.
    Requested by so many.
    Please consider donating, as this was a massive undertaking. Holy cow!
  • SLEM
    Allows now different output-targets, so outputting the last error-message to the ReaScript-console or even the clipboard is possible with that.
  • Lua-ReferenceManual
    Now included is the Lua 5.3 reference-manual, so it's always at your hand when needed.
  • Ultraschall-API settings dialog
    There's now an Ultraschall-API settings dialog. Not much in there yet, but you can already set, where SLEM() or
    ultraschall.ShowLastErrorMessage() shall output their error-messages.
    More to follow.
  • Launchpad_functions
    I wrote some launchpad 1st generation-functions, which you can find in the misc-folder. So if you want to be able to program its button's lights, you can do it.
  • Gmem functions
    For those of you, who want to use different gmem-names in your functions, you sometimes run into trouble, that you can't restore the old gmem-attachement again, as you can't get its old name.
    Now you can. Gmem_GetCurrentAttachedName returns the last used gmem-attachname. Keep it to later attach the old gmem back.
    This works best, if you add the dofile-line to activate Ultraschall-API as first code-line in your script.
  • Filemanager demo
    To showcase the background-copying-functions, I wrote a small filemanager demo, which is now available in the example-scripts.
    It shows you, how you can copy even large files in the background and still manage to run the UI of a script without having to code complex background-copying-routines.
  • MB works again on Windows and Linux
    Broke in Reaper 6 but I could fix it so replacing the button-texts is possible again. Mac-users are out of luck, as the button-texts can't be replaced there in the first place. Sorry.
  • GetUserInputs on Mac
    Also broke with Reaper 6 due some internal changes of Reaper. I finally managed to make it work again.
    So you can get and set the captions and retvals again of the GetUserInputs-dialog.
    Resizing of caption/retval-fields and the positioning of the GetUserInput-window doesn't work on Mac currently, but will return later.
    So you can use these parameters safely on Mac and one of the future updates will make it work out of a sudden.

New features in 4.1.005
  • API: requirements - raised required Reaper-version to 6.05
  • API: Settings-Dialog - allows you to set US-API-default-settings(currently the default output of ShowLastErrorMessage()/SLEM())
  • Docs: FXManagement - added chapters about Introduction, Manipulating individual effects, Working with FX-StateChunks, Working with FX-StateChunk's functions
  • Docs: ParameterMod/Learn/Mapping - added chapters about Introduction, Parameter Alias, Parameter LFO Learn, Parameter Mapping Learn
  • Docs: Lua Reference Manual - now added for Lua 5.3, so you have its manual right at hand
  • DeveloperTools: MonitorParmModulation.lua - monitors a certain parameter-modulation and shows the contents of its ParmModTable
  • EnvelopeManagement: IsAnyNamedEnvelopeVisible - returns, if there's a specific named-envelope set to visible in any track
  • EnvelopeManagement: IsEnvelope_Track - returns, if an envelope is a TrackEnvelope(true) or a TakeEnvelope(false)
  • EnvelopeManagement: IsTrackEnvelopeVisible_ArrangeView - returns, if a TrackEnvelope is currently visible in arrangeview
  • Examplescript: US_Api_Examples_FileManager_example_showcasing_bac kground_copying.lua - a simple file-manager which showcases background-copying
  • FXManagement: AddParmMod_ParmModTable - adds a new parameter-modulation of a specific FX in an FXStateChunk via a ParmModTable
  • FXManagement: CountParmModFromFXStateChunk - counts the number of parameter-modulations of a specifix FX in an FXStateChunk
  • FXManagement: CreateDefaultParmModTable - creates a ParameterModulationTable which holds Reaper's default values and can be altered
  • FXManagement: DeleteParmAlias2_FXStateChunk - like DeleteParmAlias_FXStateChunk, but allows indexing by parameter-index, not by number of existing aliasnames
  • FXManagement: DeleteParmModFromFXStateChunk - deletes a parameter-modulation of a specific FX in an FXStateChunk
  • FXManagement: GetAllParmAliasNames_FXStateChunk - gets all parameter-aliasnames of a specific fx from an FXStateChunk
  • FXManagement: GetParmAlias2_FXStateChunk - like GetParmAlias_FXStateChunk but allows indexing by parameter-index instead
  • FXManagement: GetParmModTable_FXStateChunk - returns a table with all values of a certain parameter-modulation of an fx
  • FXManagement: GetFXSettingsString_FXLines - returns the statestring of an fx as base64 and decoded-binary string
  • FXManagement: IsValidParmModTable - returns, if a table is a valid ParmModTable(used for altering Parameter-Modulations)
  • FXManagement: SetParmAlias2_FXStateChunk - like SetParmAlias_FXStateChunk but indexes by parameterindex, not already existing aliases
  • FXManagement: SetParmMod_ParmModTable - sets a parameter-modulation of an fx in an FXStateChunk via a ParmModTable
  • GFX-Management: GFX_DrawEmbossedSquare - draws an embossed square with optional background
  • GMEM: Gmem_GetCurrentAttachedName - returns the name of the currently attached gmem
  • Helper Functions: ActionsList_GetAllActions - returns all actions and shortcuts currently visible in the opened actionlist
  • Helper Functions: Create2DTable - creates a 2-dimensional table, of which all fields are indexable right away; optionally set to a default value
  • Helper Functions: Create3DTable - creates a 3-dimensional table, of which all fields are indexable right away; optionally set to a default value
  • Helper Functions: CreateMultiDimTable - create an up to 10-dimensional table, of which all fields are indexable right away; optionally set to a default value
  • Misc: Launchpad_functions - if you have a first generation LaunchPad by Novation, you can program it via a function-library in the misc-folder
  • ProjectManagement: AutoSave_GetMinutes - returns the number of minutes, at which a new autosaved project shall be saved
  • ProjectManagement: AutoSave_GetOptions - gets several auto-save-options
  • ProjectManagement: AutoSave_SetMinutes - sets the number of minutes, at which a new autosaved project shall be saved
  • ProjectManagement: AutoSave_SetOptions - sets several auto-save-options
  • ProjectManagement: GetProject_Author - gets the author of a projectfile or ProjectStateChunk(requested by dragonetti)


    Changes from 4.1.004 to 4.1.005
  • API: print - replaces null-characters now with . when displaying strings containing them
  • API: print2 - replaces null-characters now with . when displaying strings containing them
  • API: print_alt - replaces null-characters now with . when displaying strings containing them
  • API: print_update - replaces null-characters now with . when displaying strings containing them
  • Docs: AddParmAlias_FXStateChunk - was missing parameter in functioncall -> fixed
  • Docs: ParmLearn-docs - corrected information and added missing stuff
  • Docs: Reaper; GetUserInputs - added information about how to pass over default-retvals and its limitations
  • Docs: Reaper Internals - updated to Reaper 6.14
  • Error Messaging-System: ReadErrorMessage - allows now keeping error-message readstate as unread
  • Error Messaging-System: ShowLastErrorMessage - additional parameters and retvals for more control of the output-target and messagetype returned
  • Error Messaging-System: SLEM - additional parameters and retvals for more control of the output-target and messagetype returned
  • EventManager: Eventmanager mainscript - always executed the checks-functions before updating externally sent states which could lead to race-condition-problems -> fixed(thanks to rstockm)
  • File Management: CopyFile_AddFileToQueue - basic check, if the target-file is the same as the source-file and throws an error in these cases
  • File Management: GetAllDirectoriesInPath - omitted folderseparator in returned folders, if it hasn't been passed into parameter path
  • File Management: CopyFile_GetRemainingFilesToCopy - returned the wrong number of remaining files -> fixed
  • FXManagement: GetFXFromFXStateChunk - returns now the start and endoffset of the returned lines, so they could be used for string substitution; didn't return anything under some circumstances -> fixed
  • FXManagement: GetParmAudioControl_FXStateChunk - deprecated
  • FXManagement: GetParmLFO_FXStateChunk - deprecated
  • FXManagement: GetParmMIDIPLink_FXStateChunk - deprecated
  • Helper Functions: ActionsList_GetSelectedActions - returns now the shortcuts of the selected actions as well
  • ParmAlias: AddParmLearn_FXStateChunk - did not add aliasnames with spaces correctly, added it to one parameter higher than requested -> fixed
  • ParmAlias: SetParmLearn_FXStateChunk - did not set aliasnames with spaces correctly -> fixed
  • TrackManagement: SetTrackStateChunk_Tracknumber - had inner variable exposed -> fixed
  • User Interface: GetUserInputs - workaround for Mac, so this should work again on Mac OS
  • User Interface: MB - workaround for Mac, so this should work again on Mac OS

Please update it via ReaPack using: https://github.com/Ultraschall/ultra..._api_index.xml
__________________
Use you/she/her.Ultraschall-Api Lua Api4Reaper
Bugreports&Docs notes please do here:https://github.com/Ultraschall/ultra...-reaper/issues - Donate, if you wish
Meo-Ada Mespotine is offline   Reply With Quote
Old 09-25-2020, 03:03 PM   #573
Meo-Ada Mespotine
Human being with feelings
 
Meo-Ada Mespotine's Avatar
 
Join Date: May 2017
Location: Leipzig
Posts: 6,478
Default

If you want to go straight into how to work with FXStateChunks, ParmLearn, ParmAlias, ParmLFOLearn and Parameter Modulation, this is the chapter to go..ehrm...read:

https://mespotin.uber.space/Ultrasch...X_Introduction



PS: God, after 3 months of coding that, I'm so thoroughly sick of Parameter Modulation right now, you wouldn't believe...
__________________
Use you/she/her.Ultraschall-Api Lua Api4Reaper
Bugreports&Docs notes please do here:https://github.com/Ultraschall/ultra...-reaper/issues - Donate, if you wish
Meo-Ada Mespotine is offline   Reply With Quote
Old 09-25-2020, 04:39 PM   #574
pandabot
Human being with feelings
 
pandabot's Avatar
 
Join Date: Oct 2018
Posts: 367
Default

Issue with 5-7 second delay after calling ultraschall.RenderProject that's not present when rendering through File->Render, the code in question is here

edit: I also tried to move the render code outside of the undo block but that didn't have any effect
pandabot is offline   Reply With Quote
Old 09-25-2020, 05:02 PM   #575
Meo-Ada Mespotine
Human being with feelings
 
Meo-Ada Mespotine's Avatar
 
Join Date: May 2017
Location: Leipzig
Posts: 6,478
Default

I'll have a look within the next few days.
Could you post an example project as well? Rpp-file would be sufficient with preferably only Reaper's stock plugins used(if any). Maybe I can reproduce it.
__________________
Use you/she/her.Ultraschall-Api Lua Api4Reaper
Bugreports&Docs notes please do here:https://github.com/Ultraschall/ultra...-reaper/issues - Donate, if you wish
Meo-Ada Mespotine is offline   Reply With Quote
Old 09-25-2020, 09:28 PM   #576
pandabot
Human being with feelings
 
pandabot's Avatar
 
Join Date: Oct 2018
Posts: 367
Default

For it to be 5-7 seconds there needs to be lots of peaks to redraw, it's difficult to share project files over 20 MB but you'll see the peak redrawing dialog pop up on any project with audio items. On small projects it will just blink for a second as it's redrawing the peaks but for larger projects it will cause these delays, I wonder if there is an unnecessary reaper.UpdateArrange in there somewhere
Attached Files
File Type: zip renderProjectCausingPeaksToRedraw.zip (28.8 KB, 126 views)
pandabot is offline   Reply With Quote
Old 09-26-2020, 09:50 AM   #577
TonE
Human being with feelings
 
Join Date: Feb 2009
Location: Reaper HAS send control via midi !!!
Posts: 3,962
Default

Dear mespotine, tried my old experiment* again and now it seems to count the learned parameters correctly, which is great. Now I can experiment further.

Do we also have a function for checking if a parameter is mapped or not? (If mapped 1, if not mapped 0, for example). ParmMapped or so could be its name. Then we could print a list of all mapped parameters, not only the number of mapped parameters per fx.

If you want to do any midi mapping experimentation, without any real midi hardware, because we can simulate them with Reaper internal tools, here my recommendation how to do it:
a- VST: ReaControlMIDI (Cockos)
b- VST: MIDItoReaControlPath (S&M)
c- your fx you want to map

(a) and (b) would simulate your hardware midi controller, just make sure ReaControlMIDI is sending the exact same CC values as your hardware for example. For example in my Bitstream 3X, in Reason Mode, the first column of encoders send, from top to bottom:
CC 8
CC 16
CC 24
CC 32
CC 40 (fader)

I am mapping anyway one such column to a single stem/track, so having them nicely in one ReaControlMIDI preset is very flexible. Later with the real hardware I can simply disable (a) and (b) and use the hardware instead. The same method can be used for any hardware sending midi cc.



* https://github.com/michaelsjackson/r...orums/issues/4


Thanks a lot mespotine for your great work!
TonE is offline   Reply With Quote
Old 09-26-2020, 09:54 AM   #578
Meo-Ada Mespotine
Human being with feelings
 
Meo-Ada Mespotine's Avatar
 
Join Date: May 2017
Location: Leipzig
Posts: 6,478
Default

You get all of them using GetParmLearn_FXStateChunk.
The return-value parm_idx is the index of the learned parameter, so you can create your list out of that.

I suggest you to read the FX-management-concepts I've added to the newest release. It could clear up some more confusion as the whole parameter-learn/modulation/etc stuff has many steps to make it work.
I tried to explain as good as possible, how to do this step by step.

https://mespotin.uber.space/Ultrasch...X_Introduction

Quote:
Thanks a lot mespotine for your great work!
You're welcome
__________________
Use you/she/her.Ultraschall-Api Lua Api4Reaper
Bugreports&Docs notes please do here:https://github.com/Ultraschall/ultra...-reaper/issues - Donate, if you wish
Meo-Ada Mespotine is offline   Reply With Quote
Old 09-26-2020, 10:03 AM   #579
TonE
Human being with feelings
 
Join Date: Feb 2009
Location: Reaper HAS send control via midi !!!
Posts: 3,962
Default

Ok, thanks, will read it, maybe while doing it I can make a useful pdf for all other interested Reaper lovers, in case I understand anything.
TonE is offline   Reply With Quote
Old 09-30-2020, 11:38 PM   #580
Anton9
Human being with feelings
 
Anton9's Avatar
 
Join Date: Jun 2009
Location: Earth
Posts: 1,340
Default ParmMod

Hi Meo,

Awesome job with the ParmMod stuff !!!

Here are some things I noticed:

Example: Suppose I have a track with 3 plugins and the the last plugin(#3) in the list is the one doing the controlling.

If I want to control a param of the 1st. plugin the following code works.
Code:
dofile(reaper.GetResourcePath().."/UserPlugins/ultraschall_api.lua")

ParmModTable = ultraschall.CreateDefaultParmModTable()

local modsrc = 130  ---This is the modulation source param num, which is the controlling param.

ParmModTable["PARMLINK"] = true
ParmModTable["PARAM_NR"] = 57
ParmModTable["PARAM_TYPE"] = ""

--ParmModTable["PARAMOD_ENABLE_PARAMETER_MODULATION"] = true  
ParmModTable["PARMLINK_LINKEDPLUGIN"] = 3      ---This is the plugin that is controlling
ParmModTable["PARMLINK_LINKEDPARMIDX"] = modsrc  --- This is the Source param.
ParmModTable["PARMLINK_OFFSET"] = 0
ParmModTable["PARMLINK_SCALE"] = 1
--ParmModTable["MIDIPLINK"] = false
--ParmModTable["WINDOW_ALTERED"] = true


-- get the TrackStateChunk from track 1
retval, TrackStateChunk = ultraschall.GetTrackStateChunk_Tracknumber(1)
-- get the FXStateChunk
FXStateChunk = ultraschall.GetFXStateChunk(TrackStateChunk)
-- add the new parameter modulation
alteredFXStateChunk = ultraschall.AddParmMod_ParmModTable(FXStateChunk, 1, ParmModTable)
-- set the FXStateChunk back into the TrackStateChunk
retval, TrackStateChunk = ultraschall.SetFXStateChunk(TrackStateChunk, alteredFXStateChunk)
-- commit the TrackStateChunk back into the track 1
retval=ultraschall.SetTrackStateChunk_Tracknumber(1, TrackStateChunk)
However if I want to control the same param #, but that of plugin #2 instead. I would assume I only have to change this line
alteredFXStateChunk = ultraschall.AddParmMod_ParmModTable(FXStateChunk, 1, ParmModTable) to be
alteredFXStateChunk = ultraschall.AddParmMod_ParmModTable(FXStateChunk, 2, ParmModTable) ..., this does not work..
It appears as though it works, meaning that when you first run the code the param will take on the controlling params value and look as though it's locked to it, but if you wiggle the param or bring up the connection dialog
window you'll notice there really is no connection.
----------------------------
Second thing I noticed:
Example: Suppose I have the same 3 plugins but the one doing the controlling is #2 (so it's in middle of the list)
If you are controlling the plugin above it(#1 in the list) then this will appear in the plugins chunk of the 1st plugin.
<PROGRAMENV 54 0
PARAMBASE 0
LFO 0
LFOWT 1 1
AUDIOCTL 0
AUDIOCTLWT 1 1
PLINK 1 1:1 128:128 0
>

However if you want to contol plugin #3(the one bellow the controlling one) then this will appear in it's chunk section.
<PROGRAMENV 54 0
PARAMBASE 0
LFO 0
LFOWT 1 1
AUDIOCTL 0
AUDIOCTLWT 1 1
PLINK 1 1:-1 128:128 0
>
Notice the -1 in PLINK..., this states that it is one slot under the controlling plugin(#2).
If you wanted to contol a forth plugin which is at the bottom of the list.., then the PLINK would have a -2.

In your documentation it says,
"ParmModTable["PARMLINK_LINKEDPLUGIN"] - the selected plugin; nil, if not available
-1, nothing selected yet
-100, MIDI-parameter-settings
1 - the first fx-plugin
2 - the second fx-plugin
3 - the third fx-plugin, etc"

...,this is not quite correct?

I hope this all makes sense..., and trust me, I feel your frustration when it comes to dealing with ParmMod stuff.

Cheers

Last edited by Anton9; 10-01-2020 at 12:01 AM.
Anton9 is offline   Reply With Quote
Old 10-01-2020, 12:09 AM   #581
Jugoshin
Human being with feelings
 
Join Date: Sep 2017
Posts: 12
Default

sorry if offtopic, but what is the reaper theme used here?
https://ultraschall.fm/wp-content/up...schall-GUI.png
Jugoshin is offline   Reply With Quote
Old 10-01-2020, 03:19 AM   #582
Meo-Ada Mespotine
Human being with feelings
 
Meo-Ada Mespotine's Avatar
 
Join Date: May 2017
Location: Leipzig
Posts: 6,478
Default

It's the one of the Ultraschall-extension, which modifies Reaper for podcaster's needs.

https://ultraschall.fm
__________________
Use you/she/her.Ultraschall-Api Lua Api4Reaper
Bugreports&Docs notes please do here:https://github.com/Ultraschall/ultra...-reaper/issues - Donate, if you wish
Meo-Ada Mespotine is offline   Reply With Quote
Old 10-03-2020, 05:35 AM   #583
Meo-Ada Mespotine
Human being with feelings
 
Meo-Ada Mespotine's Avatar
 
Join Date: May 2017
Location: Leipzig
Posts: 6,478
Default

Quote:
Originally Posted by Anton9 View Post
Hi Meo,

Awesome job with the ParmMod stuff !!!

Here are some things I noticed:

Example: Suppose I have a track with 3 plugins and the the last plugin(#3) in the list is the one doing the controlling.

If I want to control a param of the 1st. plugin the following code works.
Code:
dofile(reaper.GetResourcePath().."/UserPlugins/ultraschall_api.lua")

ParmModTable = ultraschall.CreateDefaultParmModTable()

local modsrc = 130  ---This is the modulation source param num, which is the controlling param.

ParmModTable["PARMLINK"] = true
ParmModTable["PARAM_NR"] = 57
ParmModTable["PARAM_TYPE"] = ""

--ParmModTable["PARAMOD_ENABLE_PARAMETER_MODULATION"] = true  
ParmModTable["PARMLINK_LINKEDPLUGIN"] = 3      ---This is the plugin that is controlling
ParmModTable["PARMLINK_LINKEDPARMIDX"] = modsrc  --- This is the Source param.
ParmModTable["PARMLINK_OFFSET"] = 0
ParmModTable["PARMLINK_SCALE"] = 1
--ParmModTable["MIDIPLINK"] = false
--ParmModTable["WINDOW_ALTERED"] = true


-- get the TrackStateChunk from track 1
retval, TrackStateChunk = ultraschall.GetTrackStateChunk_Tracknumber(1)
-- get the FXStateChunk
FXStateChunk = ultraschall.GetFXStateChunk(TrackStateChunk)
-- add the new parameter modulation
alteredFXStateChunk = ultraschall.AddParmMod_ParmModTable(FXStateChunk, 1, ParmModTable)
-- set the FXStateChunk back into the TrackStateChunk
retval, TrackStateChunk = ultraschall.SetFXStateChunk(TrackStateChunk, alteredFXStateChunk)
-- commit the TrackStateChunk back into the track 1
retval=ultraschall.SetTrackStateChunk_Tracknumber(1, TrackStateChunk)
However if I want to control the same param #, but that of plugin #2 instead. I would assume I only have to change this line
alteredFXStateChunk = ultraschall.AddParmMod_ParmModTable(FXStateChunk, 1, ParmModTable) to be
alteredFXStateChunk = ultraschall.AddParmMod_ParmModTable(FXStateChunk, 2, ParmModTable) ..., this does not work..
It appears as though it works, meaning that when you first run the code the param will take on the controlling params value and look as though it's locked to it, but if you wiggle the param or bring up the connection dialog
window you'll notice there really is no connection.
----------------------------
Second thing I noticed:
Example: Suppose I have the same 3 plugins but the one doing the controlling is #2 (so it's in middle of the list)
If you are controlling the plugin above it(#1 in the list) then this will appear in the plugins chunk of the 1st plugin.
<PROGRAMENV 54 0
PARAMBASE 0
LFO 0
LFOWT 1 1
AUDIOCTL 0
AUDIOCTLWT 1 1
PLINK 1 1:1 128:128 0
>

However if you want to contol plugin #3(the one bellow the controlling one) then this will appear in it's chunk section.
<PROGRAMENV 54 0
PARAMBASE 0
LFO 0
LFOWT 1 1
AUDIOCTL 0
AUDIOCTLWT 1 1
PLINK 1 1:-1 128:128 0
>
Notice the -1 in PLINK..., this states that it is one slot under the controlling plugin(#2).
If you wanted to contol a forth plugin which is at the bottom of the list.., then the PLINK would have a -2.

In your documentation it says,
"ParmModTable["PARMLINK_LINKEDPLUGIN"] - the selected plugin; nil, if not available
-1, nothing selected yet
-100, MIDI-parameter-settings
1 - the first fx-plugin
2 - the second fx-plugin
3 - the third fx-plugin, etc"

...,this is not quite correct?

I hope this all makes sense...,
Ok, regarding your questions I need to clear up further, that I have absolutely no idea about ParamModulation. I could make it work as expected and implemented Reaper's datastructures as close as possible but I still have no sense of it.
That means, I need a different approach on bug-reporting the stuff and I came up with the following, that hopefully still allows representing your problem:

1) Make an example-project, that has the plugins inserted in the way that it reflects the project BEFORE your script execution as "this is how it was.rpp". Preferred are Reaper's own plugins, so I can be sure I can try that one on my machine too.

2) I need the code, with which you tried to make the change. Try to bring it down to its essentials and comment the part, which behaved wrong in your opinion.

3) Give me a list of the ParmModTable you expected and the one you got instead. You can use
ultraschall_developertool_MonitorParmModulation.lu a
and screenshot it and add into it the values you expected beside the ones you got. So I can see the difference between the two.
Also save the project after script-execution as "this is is the way.rpp"

4) Bonus: Make a LiceCap, that shows, how you clicked it in the ParmMod-Guis and got the right behavior. Add this changed project as a "this is how it should be.rpp"-project, so I can look at the diffs.

With that, I can try to follow it from the datastructures and see, where there is the problem.
I suspect, that you are using it wrong due missing information in my docs but I'm not sure as of yet.

In regards of your second question I need to check again.
The -1 is the PLINK-value set, when there is no plugin selected yet in the gui. You can check this for yourself in the statechunks before adding any plugin.
-2 and more sounds quite odd to me, as -100 signals MIDI, so you could reference only 98 or 99 plugins that way? That would be really weird.
Can you show me a LiceCap on how you set -2 or -3, etc via Gui?

Keep also in mind: my docs refer to the way the gui behaves. If there's additional undocumented behavior not settable via gui, I will not take care of it, as I can't know for sure, if it's intended to be that way or an oversight by the devs. But if you can show me how you manage it via gui, I will add that to my docs, as in this case, I have missed it.

Hope it makes sense.

Quote:
and trust me, I feel your frustration when it comes to dealing with ParmMod stuff.
Yeah, the more I coded it, the more I thought, I shouldn't have started it in the first place. Well, one is smarter after the fact

Edit:
In regard of question 2, I get an idea. I'll check some things...

Edit2:
Found that behavior. Oh Jesus. Please kill me.

Back to documentation-stage...

Edit3:
Ok, it seems like the following:
If the second parameter of PLINK is set to a single number, it signals stuff like "none linked" or "Midi"
like -1 or -100

But: if the second parameter hold two numbers, separated by a : then it signals the plugins linked.

I guess: The first seems to be the original plugin and the second seem to indicated the linked plugin relative to the original. I still have no idea what that means, but I figure, that my docs are still right with:

1:1 the first plugin
2:2 the second plugin

But not, when the second of the two numbers is different from the first.
Will need to check on further.
__________________
Use you/she/her.Ultraschall-Api Lua Api4Reaper
Bugreports&Docs notes please do here:https://github.com/Ultraschall/ultra...-reaper/issues - Donate, if you wish

Last edited by Meo-Ada Mespotine; 10-03-2020 at 06:01 AM.
Meo-Ada Mespotine is offline   Reply With Quote
Old 10-03-2020, 05:46 AM   #584
Meo-Ada Mespotine
Human being with feelings
 
Meo-Ada Mespotine's Avatar
 
Join Date: May 2017
Location: Leipzig
Posts: 6,478
Default

Hotfix 1 is available.

- Developertool: ultraschall_developertool_MonitorParmModulation.lu a - didn't work due critical bugs -> fixed

Please update your ReaPacks
__________________
Use you/she/her.Ultraschall-Api Lua Api4Reaper
Bugreports&Docs notes please do here:https://github.com/Ultraschall/ultra...-reaper/issues - Donate, if you wish
Meo-Ada Mespotine is offline   Reply With Quote
Old 10-03-2020, 07:18 AM   #585
Meo-Ada Mespotine
Human being with feelings
 
Meo-Ada Mespotine's Avatar
 
Join Date: May 2017
Location: Leipzig
Posts: 6,478
Default

@Anton9

Ok, I can confirm that it's basically doing relative stuff. I have no idea why, as my original experiments allowed using them directly.

Nevertheless, you can still set them correctly, by setting these to the same value. You just need to set them to negative(FX above the current FX) or positive(FX below the current FX) or 0(for a parameter of the current FX):

Code:
    ParmModTable["PARMLINK_LINKEDPLUGIN"]
I've asked Justin for a better explanation and will update the docs accordingly ASAP.

Thanks for pointing it out.

(Geez, I'm so happy that I implemented that as exact as possible, so I don't need to alter anything codewise.)

Edit: this is nonsense and it's not working right. I'll fix it for the next release...
__________________
Use you/she/her.Ultraschall-Api Lua Api4Reaper
Bugreports&Docs notes please do here:https://github.com/Ultraschall/ultra...-reaper/issues - Donate, if you wish

Last edited by Meo-Ada Mespotine; 10-04-2020 at 05:17 AM.
Meo-Ada Mespotine is offline   Reply With Quote
Old 10-03-2020, 08:11 PM   #586
pandabot
Human being with feelings
 
pandabot's Avatar
 
Join Date: Oct 2018
Posts: 367
Default

Quote:
Originally Posted by pandabot View Post
For it to be 5-7 seconds there needs to be lots of peaks to redraw, it's difficult to share project files over 20 MB but you'll see the peak redrawing dialog pop up on any project with audio items. On small projects it will just blink for a second as it's redrawing the peaks but for larger projects it will cause these delays, I wonder if there is an unnecessary reaper.UpdateArrange in there somewhere
I didn't notice this before, but it appears to be generating the reapeaks file and then immediately deleting it

pandabot is offline   Reply With Quote
Old 10-03-2020, 09:23 PM   #587
Meo-Ada Mespotine
Human being with feelings
 
Meo-Ada Mespotine's Avatar
 
Join Date: May 2017
Location: Leipzig
Posts: 6,478
Default

This is weird.
__________________
Use you/she/her.Ultraschall-Api Lua Api4Reaper
Bugreports&Docs notes please do here:https://github.com/Ultraschall/ultra...-reaper/issues - Donate, if you wish
Meo-Ada Mespotine is offline   Reply With Quote
Old 10-04-2020, 06:57 AM   #588
Meo-Ada Mespotine
Human being with feelings
 
Meo-Ada Mespotine's Avatar
 
Join Date: May 2017
Location: Leipzig
Posts: 6,478
Default

@anton9

The plink-management is fixed in the next release coming in a few days.
This was buggy to begin with and needs probably some alteration to your code.
__________________
Use you/she/her.Ultraschall-Api Lua Api4Reaper
Bugreports&Docs notes please do here:https://github.com/Ultraschall/ultra...-reaper/issues - Donate, if you wish
Meo-Ada Mespotine is offline   Reply With Quote
Old 10-04-2020, 07:23 AM   #589
Meo-Ada Mespotine
Human being with feelings
 
Meo-Ada Mespotine's Avatar
 
Join Date: May 2017
Location: Leipzig
Posts: 6,478
Default

@Pandabot
Found it and will be fixed in the next release.
This was indeed a problem that I created accidentally unneeded peak-files. Thanks for pointing me into the right direction.
__________________
Use you/she/her.Ultraschall-Api Lua Api4Reaper
Bugreports&Docs notes please do here:https://github.com/Ultraschall/ultra...-reaper/issues - Donate, if you wish
Meo-Ada Mespotine is offline   Reply With Quote
Old 10-04-2020, 11:18 AM   #590
pandabot
Human being with feelings
 
pandabot's Avatar
 
Join Date: Oct 2018
Posts: 367
Default

Quote:
Originally Posted by Meo-Ada Mespotine View Post
@Pandabot
Found it and will be fixed in the next release.
This was indeed a problem that I created accidentally unneeded peak-files. Thanks for pointing me into the right direction.
Thank you I appreciate it 🙌
pandabot is offline   Reply With Quote
Old 10-04-2020, 03:28 PM   #591
TonE
Human being with feelings
 
Join Date: Feb 2009
Location: Reaper HAS send control via midi !!!
Posts: 3,962
Default

In parameter modulation window, can we set now the values for Offset and Scale (for example) via midi somehow?
Offset: program change on midi channel 1
Scale: program change on midi channel 2, for example

The idea would be changing those values precisely via midi hardware controller.
TonE is offline   Reply With Quote
Old 10-04-2020, 03:41 PM   #592
Meo-Ada Mespotine
Human being with feelings
 
Meo-Ada Mespotine's Avatar
 
Join Date: May 2017
Location: Leipzig
Posts: 6,478
Default

I'm not sure if I can follow. Do you ask, if setting the checkboxes and dropdownlist is possible via Ultraschall-Api?
__________________
Use you/she/her.Ultraschall-Api Lua Api4Reaper
Bugreports&Docs notes please do here:https://github.com/Ultraschall/ultra...-reaper/issues - Donate, if you wish
Meo-Ada Mespotine is offline   Reply With Quote
Old 10-04-2020, 10:27 PM   #593
TonE
Human being with feelings
 
Join Date: Feb 2009
Location: Reaper HAS send control via midi !!!
Posts: 3,962
Default

Offset and Scale are sliders in parameter modulation window. Yes, if midi mapping of those sliders is somehow possible, normally this is not possible afaik. If anyone knows a trick, please write below, thanks in advance.

To be more precise I am talking of the window parameter modulation, then parameter linking feature in Reaper. Normally what I am using often is linking a probability parameter to various other places, e.g. status parameter of switchable transpose, or program parameter of ReaControlMIDI. So by probability melody will be transposed from time to time, adding nice variation, or by probability between two programs will be changed, again adding nice variation. Even if you have only a 1 bar melody/pattern, it can sound very complex, like 10 minute melody, because it never repeats in exact same form. And by probability some notes are left out as well. This is one of my favourite techniques currently.

Using Offset and Scale in parameter linking I can define which two programs should be used, so playing with them is most fun part, for finding interesting combinations which sound great. Thus trying to make those better accessible to outside world via hardware controllers.

I hope the idea is clear to all interested, thanks. These are topics Kenny Gioia will make videos in ten years, I guess. But he could surprise me and upload a video tomorrow.
TonE is offline   Reply With Quote
Old 10-10-2020, 06:29 PM   #594
Meo-Ada Mespotine
Human being with feelings
 
Meo-Ada Mespotine's Avatar
 
Join Date: May 2017
Location: Leipzig
Posts: 6,478
Default

4.1.006 - "Rage against the machine - Renegades of Funk" - 11th of October 2020

Has now 1294 functions, with 54 new ones

new in this release:
  • InputFX/MonitoringFX
    You can now code monitoringFX the same as you already could code TrackFX and TakeFX. Ever wanted to set a full FXChain into monitoring fx? Now you can.
    54 functions only for that. I must be insane...
  • ParameterModulation
    Fixed a bug and therefore added a new feature for parameter linking.
    ParmModTables have now two entries to set the index of the linked plugin:
    PARMLINK_LINKEDPLUGIN and PARMLINK_LINKEDPLUGIN_RELATIVE.
    To set an absolute plugin-index, set PARMLINK_LINKEDPLUGIN=absolute-index and PARMLINK_LINKEDPLUGIN_RELATIVE=nil
    To set a relative plugin-index, set
    PARMLINK_LINKEDPLUGIN=any number and
    PARMLINK_LINKEDPLUGIN_RELATIVE=0(current plugin), negative(higher in the FXChain), positive(lower in the FXChain)
    GetFunctions will usually have the linked plugin indexed in a relative-to-the-current-plugin-index(Reaper's standard behavior).
  • RenderFixes
    Renderfunctions sometimes created peak-files when not necessary. This is fixed now and speeds up the time between finished render and returning to the project.

New features in 4.1.006
  • FXManagement: InputFX_AddByName - adds an fx as monitoring fx
  • FXManagement: InputFX_CopyFX - copies a monitoring fx and inserts it at a new position
  • FXManagement: InputFX_CopyFXFromTakeFX - copies a monitoring fx to a takeFX
  • FXManagement: InputFX_CopyFXFromTrackFX - copies a trackfx into a monitoring fx
  • FXManagement: InputFX_CopyFXToTakeFX - copies a monitoring fx to a takeFX
  • FXManagement: InputFX_CopyFXToTrackFX - copies a monitoring fx into a track as trackfx
  • FXManagement: InputFX_Delete - deletes a certain monitoring-fx
  • FXManagement: InputFX_EndParamEdit - no idea what this function does, but it exists for trackFX and now for monitoring-fx too
  • FXManagement: InputFX_GetChainVisible - returns, if the current monitoring-fx-chain is visible and the index of the currently visible fx
  • FXManagement: InputFX_GetCount - returns the number of available monitoring-fx
  • FXManagement: InputFX_GetEnabled - returns, if a certain monitoring-fx is enabled or not
  • FXManagement: InputFX_GetEQ - returns the index of the first ReaEQ-instance in monitoring-fx; optionally creates an instance
  • FXManagement: InputFX_GetEQBandEnabled - returns the enabled/disabled state of a band of a ReaEQ-instance in monitoring-fx
  • FXManagement: InputFX_GetEQParam - returns the parameter-value of a ReaEQ-instance in monitoring-fx
  • FXManagement: InputFX_GetFloatingWindow - returns the hwnd of a floating monitoring-fx-window
  • FXManagement: InputFX_GetFormattedParamValue - returns the current value of a parameter of a monitoring fx formatted
  • FXManagement: InputFX_GetFXChain - gets the FXStateChunk of the current monitoring-fx-chain
  • FXManagement: InputFX_GetFXGUID - returns the guid of a monitoring-fx
  • FXManagement: InputFX_GetFXName - returns the name of a monitoring-fx
  • FXManagement: InputFX_GetIOSize - returns the plugin-type and the number of input/output pins(if available) for a monitoring-fx
  • FXManagement: InputFX_GetNamedConfigParm - returns the plug-in specific named configuration value of a monitoring-fx
  • FXManagement: InputFX_GetNumParams - returns the number of parameters of a monitoring-fx
  • FXManagement: InputFX_GetOffline - returns, if a certain monitoring-fx is offline or not
  • FXManagement: InputFX_GetOpen - returns, if a certain monitoring-fx is visible or not
  • FXManagement: InputFX_GetParam - returns the current, maximum and minimum value of a parameter of a monitoring-fx
  • FXManagement: InputFX_GetParamEx - returns the current, maximum, minimum and mid-values of a parameter of a monitoring-fx
  • FXManagement: InputFX_GetParameterStepSizes - returns the stepsizes of a parameter of a monitoring-fx
  • FXManagement: InputFX_GetParamName - returns the name of a parameter of a monitoring-fx
  • FXManagement: InputFX_GetParamNormalized - returns a normalized version of the current value of a parameter of a monitoring-fx
  • FXManagement: InputFX_GetPinMappings - returns the current pin-mappings of a monitoring-fx
  • FXManagement: InputFX_GetPreset - returns the name of the currently selected preset
  • FXManagement: InputFX_GetPresetIndex - returns the index of the currently selected monitoring-fx plus all available presets
  • FXManagement: InputFX_GetUserPresetFilename - gets the preset's-filename(which stores the presets) of a certain monitoring-fx
  • FXManagement: InputFX_FormatParamValue - formats a value in the style of a parameter
  • FXManagement: InputFX_FormatParamValueNormalized - formats a value in the style of a parameter as normalized
  • FXManagement: InputFX_MoveFX - moves a monitoring fx to a new position
  • FXManagement: InputFX_MoveFXFromTakeFX - moves a takeFX to the monitoring-fx-chain
  • FXManagement: InputFX_MoveFXToTakeFX - moves a monitoring-fx into take as takeFX
  • FXManagement: InputFX_MoveFXFromTrackFX - moves a trackFX to the monitoring-fx-chain
  • FXManagement: InputFX_MoveFXToTrackFX - moves a monitoring-fx into a track as trackFX
  • FXManagement: InputFX_NavigatePresets - navigates through the presets of a monitoring-fx
  • FXManagement: InputFX_SetEnabled - set a monitoring-fx enabled or disabled
  • FXManagement: InputFX_SetEQBandEnabled - sets a enable-state of a band of a ReaEQ-instance in monitoring-fx
  • FXManagement: InputFX_SetEQParam - sets new values of a band of a ReaEQ-instance in monitoring-fx
  • FXManagement: InputFX_SetFXChain - sets a FXStateChunk into the monitoring-fx-chain; optionally replaces it
  • FXManagement: InputFX_SetOffline - sets a monitoring-fx offline/online
  • FXManagement: InputFX_SetOpen - sets visibility of a monitoring fx visible/invisible
  • FXManagement: InputFX_SetParam - sets a parameter of a monitoring-fx
  • FXManagement: InputFX_SetParamNormalized - sets a parameter of a monitoring-fx as normalized value
  • FXManagement: InputFX_SetPinMappings - sets the pinmappings of a monitoring-fx
  • FXManagement: InputFX_SetPreset - sets a preset of a monitoring-fx by presetname
  • FXManagement: InputFX_SetPresetByIndex - sets a preset of a monitoring-fx by presetindex
  • FXManagement: InputFX_Show - sets visibility and floating-state of a monitoring-fx
  • FXManagement: InputFX_QueryFirstFXIndex - queries the first fx within monitoring fx with a certain fxname
  • FXManagement: ParmModTable - new entry PARMLINK_LINKEDPLUGIN_RELATIVE, which allows indexing linked parameters relative to current fx(thanks to anton9 and Justin)
Changes from 4.1.005 to 4.1.006
  • Docs: ReaperAPIDocs - updated to JS-extension 1.217
  • Docs: VideoProcessor - added default-value-descriptions for param
  • FXManagement: AddParmMod_ParmModTable - produced nil-error with invalid fx-index; didn't correctly set the linked-parameter index(thanks to anton9 and Justin)
  • FXManagement: CreateDefaultParmModTable - didn't correctly return the linked-parameter index(thanks to anton9 and Justin)
  • FXManagement: GetParmModTable_FXStateChunk - didn't correctly return the linked-parameter index(thanks to anton9 and Justin)
  • FXManagement: IsValidParmModTable - didn't correctly check the linked-parameter index(thanks to anton9 and Justin)
  • FXManagement: SetParmMod_ParmModTable - produced nil-error with invalid fx-index; didn't correctly set the linked-parameter index(thanks to anton9 and Justin)
  • Rendering: Render_Loop - created unneeded peakfiles under some circumstances -> fixed(thanks to pandabot)
  • Rendering: RenderProject - created unneeded peakfiles under some circumstances -> fixed(thanks to pandabot)
  • Rendering: RenderProject_Regions - created unneeded peakfiles under some circumstances -> fixed(thanks to pandabot)
  • Rendering: RenderProject_RenderTable - created unneeded peakfiles under some circumstances -> fixed(thanks to pandabot)

Please update it via ReaPack using: https://github.com/Ultraschall/ultra..._api_index.xml
__________________
Use you/she/her.Ultraschall-Api Lua Api4Reaper
Bugreports&Docs notes please do here:https://github.com/Ultraschall/ultra...-reaper/issues - Donate, if you wish
Meo-Ada Mespotine is offline   Reply With Quote
Old 10-18-2020, 09:17 PM   #595
Anton9
Human being with feelings
 
Anton9's Avatar
 
Join Date: Jun 2009
Location: Earth
Posts: 1,340
Default

Hey Meo,

So sorry I have'nt replied sooner.., been super busy.
Things are working much better with the new update!

Thank you sooo much!
Anton9 is offline   Reply With Quote
Old 10-19-2020, 04:12 AM   #596
Meo-Ada Mespotine
Human being with feelings
 
Meo-Ada Mespotine's Avatar
 
Join Date: May 2017
Location: Leipzig
Posts: 6,478
Default

Quote:
Originally Posted by Anton9 View Post
Hey Meo,

So sorry I have'nt replied sooner.., been super busy.
Things are working much better with the new update!

Thank you sooo much!
What a great relief
__________________
Use you/she/her.Ultraschall-Api Lua Api4Reaper
Bugreports&Docs notes please do here:https://github.com/Ultraschall/ultra...-reaper/issues - Donate, if you wish
Meo-Ada Mespotine is offline   Reply With Quote
Old 10-20-2020, 05:33 PM   #597
Meo-Ada Mespotine
Human being with feelings
 
Meo-Ada Mespotine's Avatar
 
Join Date: May 2017
Location: Leipzig
Posts: 6,478
Default

4.1.007 - "Frank Zappa - Carolina Hard-Core Ecstasy" - 21st of October 2020

Has now 1342 functions, with 48 new ones

new in this release:
  • Default v6-Theme-functions
    Ever wanted to write scripts that do, what the theme-adjuster can? Here's your chance.
    42 functions give you life, themeiverse and all the rest needed.
  • EditReaScript
    Create new scripts and open them in the IDE right from a script. Or edit an existing one. Now possible with EditReaScript().
  • GetFocusedFX and GetLastTouchedFX
    Basically like Reaper's own ones BUT I improved the parameter-interface so it is actually useable for regular scripters.
  • SFEM
    Sometimes, you want to get the first error-message that has happened in your script, which signals, what's the first thing that went wrong.
    SFEM(for Show First Error Message) is your way to go.
  • IsItemVisible and IsTrackVisible
    That's right, you can check now, if an item or track is visible in the arrangeview.
    You can check, whether they are fully in arrangeview or just partially.
  • Small Fixes and Docs
    Small bugfixes here and there as well updates to the docs for Reaper 6.15 and SWS 2.12.1


New features in 4.1.007
  • Developer: EditReaScript - edits a ReaScript in Reaper's IDE; creates it, if not yet existing
  • ErrorMessagingSystem: SFEM - returns the first error message from the current script-run
  • FXManagement: GetFocusedFX - returns the focused FX(easier than Reaper's own API-function)
  • FXManagement: GetLastTouchedFX - returns the last touched fx(easier than Reaper's own API-function)
  • MediaItem-Management: IsItemVisible - returns, if a MediaItem is visible or not
  • TrackManagement: IsTrackVisible - returns, if a track is visible or not
  • ThemeManagement: Theme_Defaultv6_GetEnvFaderSize - gets the current size of the faders of envelopes when using the default v6-theme
  • ThemeManagement: Theme_Defaultv6_GetEnvNameSize - gets the current size of the name of envelopes when using the default v6-theme
  • ThemeManagement: Theme_Defaultv6_GetEnvSize - gets the current size of the envelope when using the default v6-theme
  • ThemeManagement: Theme_Defaultv6_GetEnvFolderIndent - gets the current indentation-related-to-trackfolder-setting when using the default v6-theme
  • ThemeManagement: Theme_Defaultv6_GetHideTCPElement - gets the current hidden-states of tcp-element when using default v6-theme
  • ThemeManagement: Theme_Defaultv6_GetMCPAlignControls - gets the current alignement of controls in tcp when using default v6-theme
  • ThemeManagement: Theme_Defaultv6_GetMCPBorderStyle - gets the current border-style of the mcp when using the default v6-theme
  • ThemeManagement: Theme_Defaultv6_GetMCPFolderIndent - gets the current folder indentation of mcp when using default v6-theme
  • ThemeManagement: Theme_Defaultv6_GetMCPMeterExpansion - gets the current MCP meter expansion when using default v6-theme
  • ThemeManagement: Theme_Defaultv6_GetMCPSizeAndLayout - gets the current MCP-size and layout when using default v6-theme
  • ThemeManagement: Theme_Defaultv6_GetStyleMCPElement - gets the style of an mcp-element when using default v6-theme
  • ThemeManagement: Theme_Defaultv6_GetTCPAlignControls - gets the current alignement of controls in tcp when using default v6-theme
  • ThemeManagement: Theme_Defaultv6_GetTCPInputSize - gets the current size of the input-element when using default v6-theme
  • ThemeManagement: Theme_Defaultv6_GetTCPFolderIndent - gets the new folder-indent-size of tcp when using default v6-theme
  • ThemeManagement: Theme_Defaultv6_GetTCPMeterLocation - gets the current location of the meter-element when using default v6-theme
  • ThemeManagement: Theme_Defaultv6_GetTCPMeterSize - gets the current size of the meter-element when using default v6-theme
  • ThemeManagement: Theme_Defaultv6_GetTCPNameSize - gets the current size of the track-name-label when using default v6-theme
  • ThemeManagement: Theme_Defaultv6_GetTCPSizeAndLayout - gets the current TCP-size and layout when using default v6-theme
  • ThemeManagement: Theme_Defaultv6_GetTCPVolumeSize - gets the current size of the volume-element when using the default v6-theme
  • ThemeManagement: Theme_Defaultv6_GetTransPlayRateSize - gets the current size of the playrate-slider when using the default v6-theme
  • ThemeManagement: Theme_Defaultv6_GetTransSize - gets the current size of the transport when using the default v6-theme
  • ThemeManagement: Theme_Defaultv6_SetEnvFaderSize - sets the current size of the faders of envelopes when using the default v6-theme
  • ThemeManagement: Theme_Defaultv6_SetEnvNameSize - sets the new size of the name of envelopes when using the default v6-theme
  • ThemeManagement: Theme_Defaultv6_SetEnvSize - sets the new size of the envelope when using the default v6-theme
  • ThemeManagement: Theme_Defaultv6_SetEnvFolderIndent - sets the new indentation-related-to-trackfolder-setting when using the default v6-theme
  • ThemeManagement: Theme_Defaultv6_SetHideTCPElement - sets the hidden-states of tcp-element when using default v6-theme
  • ThemeManagement: Theme_Defaultv6_SetMCPAlignControls - sets the new alignement of controls in tcp when using default v6-theme
  • ThemeManagement: Theme_Defaultv6_SetMCPBorderStyle - sets the new border-style of the mcp when using the default v6-theme
  • ThemeManagement: Theme_Defaultv6_SetMCPFolderIndent - sets the new folder indentation of mcp when using default v6-theme
  • ThemeManagement: Theme_Defaultv6_SetMCPMeterExpansion - sets the new MCP meter expansion when using default v6-theme
  • ThemeManagement: Theme_Defaultv6_SetMCPSizeAndLayout - sets the new MCP-size and layout when using default v6-theme
  • ThemeManagement: Theme_Defaultv6_SetStyleMCPElement - sets the style of an mcp-element when using default v6-theme
  • ThemeManagement: Theme_Defaultv6_SetTCPAlignControls - sets the new alignement of controls in tcp when using default v6-theme
  • ThemeManagement: Theme_Defaultv6_SetTCPInputSize - sets the new size of the input-element when using default v6-theme
  • ThemeManagement: Theme_Defaultv6_SetTCPFolderIndent - sets the new folder-indent-size of tcp when using default v6-theme
  • ThemeManagement: Theme_Defaultv6_SetTCPMeterLocation - sets the new location of the meter-element when using default v6-theme
  • ThemeManagement: Theme_Defaultv6_SetTCPMeterSize - sets the new size of the meter-element when using default v6-theme
  • ThemeManagement: Theme_Defaultv6_SetTCPNameSize - sets the new size of the track-name-label when using default v6-theme
  • ThemeManagement: Theme_Defaultv6_SetTCPSizeAndLayout - sets the new TCP-size and layout when using default v6-theme
  • ThemeManagement: Theme_Defaultv6_SetTCPVolumeSize - sets the new size of the volume-element when using the default v6-theme
  • ThemeManagement: Theme_Defaultv6_SetTransPlayRateSize - sets the new size of the playrate-slider when using the default v6-theme
  • ThemeManagement: Theme_Defaultv6_SetTransSize - sets the new size of the transport when using the default v6-theme


    Changes from 4.1.006 to 4.1.007
  • Developer Tools: Theme Parameter Monitor - didn't stop script, when closed by close-window-button -> fixed
  • ThemeManagement: Theme_Defaultv6_SetMCPSize - didn't work, when no layout was present already -> fixed
  • TrackManagement: GetAllVisibleTracks_Arrange - returns the found tracks now as MediaTrack-objects as well; didn't find master-track under certain circumstances -> fixed
  • UserInterface: TCP_SetWidth - errors in the docs -> fixed

Please update it via ReaPack using: https://github.com/Ultraschall/ultra..._api_index.xml
__________________
Use you/she/her.Ultraschall-Api Lua Api4Reaper
Bugreports&Docs notes please do here:https://github.com/Ultraschall/ultra...-reaper/issues - Donate, if you wish
Meo-Ada Mespotine is offline   Reply With Quote
Old 10-25-2020, 10:09 AM   #598
TonE
Human being with feelings
 
Join Date: Feb 2009
Location: Reaper HAS send control via midi !!!
Posts: 3,962
Default

It would help in usability if there would be ready functions which can get/set the midi mapping/learned values in splitted form:
cc/note (at least), value (0..127), midi channel (1..16)
In all cases returning -1 if there is no learned parameter.

How this could be useful?
You could write out all values first by using get functions.
Replacing all -1 values with your favourite replacements. (in a text editor like emacs or vim)
Applying results using set functions.

Now, any user who wants to play around with ParmLearn techniques would need to write their own splitting and combining functions. Would it not be better having such fundamental features also in the API directly? Because we need to do those steps anyway each time.

From my csv_export.lua example those three columns are missing for each parameter.
input: fx_parameter_index
output: GetParamMidiMapping( ... )
cc/note (at least), value (0..127), midi channel (1..16)
In all cases returning -1 if there is no learned parameter.

Examples:
PHP Code:
cc,7,16     would be the returned values of one parameter.
-
1,-1,-1    if there is no midi mapping for that parameter
note
,36,10  if a kick note on midi channel 10 should do something 
Then the setting files as .csv or .txt would be also self explaining, much better workflow, also for non-programmers, which should be first goal, imo. Then anyone could profit from such a system. Just open that .csv in Excel, edit to your wishes, reimport into Reaper, there you go with new midi mappings.


similar to the example below which I am using for getting the parameter names.

ret, paramname = reaper.TrackFX_GetParamName(fromTrack, j-1, k-1, "")

Last edited by TonE; 10-25-2020 at 10:37 AM.
TonE is offline   Reply With Quote
Old 10-25-2020, 10:32 AM   #599
TonE
Human being with feelings
 
Join Date: Feb 2009
Location: Reaper HAS send control via midi !!!
Posts: 3,962
Default

What I can do now is:
PHP Code:
                parm_idxparmnamemidi_notecheckboxflags ultraschall.GetParmLearn_FXStateChunk(FXStateChunkjk)
                if     
midi_note == nil
                then   midi_note 
=  -1
                end 

getting something like:
2,"SEQ 1",JS: Volume Adjustment [utility/volume_0dB],fx count:3,Adjustment (dB),param count:1,paramslearned:1,midi mapping:30384

So the value 30384 is not very user friendly. Thinking now for the entire Reaper community, if this should be useful for anyone interested in midi mapping freely, from Excel/LibreOffice/emacs/vim.
TonE is offline   Reply With Quote
Old 10-25-2020, 12:30 PM   #600
Meo-Ada Mespotine
Human being with feelings
 
Meo-Ada Mespotine's Avatar
 
Join Date: May 2017
Location: Leipzig
Posts: 6,478
Default

I may look into this at some point, but I need to stay away from the parameterleanr/modulation/linking for some time.
It was too exhausting to work it out and I need some resting time on that.

But: if you happen to write functions, who allow such a thing, I would be happy to add them.
I'm just too tired of that subject right now.
But I see your point, some more convenience with the parameters of the functions would be really nice to have.
__________________
Use you/she/her.Ultraschall-Api Lua Api4Reaper
Bugreports&Docs notes please do here:https://github.com/Ultraschall/ultra...-reaper/issues - Donate, if you wish
Meo-Ada Mespotine is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -7. The time now is 12:19 AM.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2023, vBulletin Solutions Inc.