 |
|
|
12-01-2020, 11:14 AM
|
#641
|
Human being with feelings
Join Date: May 2017
Location: Leipzig
Posts: 6,331
|
Hotfix 1 available:
- RenderManagement: ApplyRenderTable_Project - didn't always apply Mono-Media and Multi-Channel-checkboxes properly -> fixed(thanks to aurelien)
- RenderManagement: ApplyRenderTable_ProjectFile - didn't always apply Mono-Media and Multi-Channel-checkboxes properly -> fixed(thanks to aurelien)
Pleas update your ReaPacks
|
|
|
12-08-2020, 09:38 PM
|
#642
|
Human being with feelings
Join Date: Mar 2007
Location: Denver, CO
Posts: 633
|
Trying to write FX data using chunks...
I have been trying to use the fx_chunk methods to save VST presets, and have a possible bug?
When I get the fx_chunk for a track containing Reaktor, it does not seem to return the whole chunk.
The proper name of the vst is:
"VSTi: Reaktor5 (Native Instruments GmbH) (2->8)"
Wondering if the '>' is messing up the chunk reading???
When I call:
Code:
local found, trackstatechunk = ultraschall.GetTrackStateChunk_Tracknumber(tracknum)
M.Msg('TRACK_CHUNK\n'..trackstatechunk)
I'm not seeing any of that in the console, which starts right off with:
Code:
AAAgAAAAAQAAAAIAAAABAAAAAQAAAAEAAAABAAAApQAAAAAAAACZBQAAAQAAACAAAAABAAAAAgAAAAEA
I installed the chunk viewer, and all of this stuff shows at the beginning:
Code:
<TRACK
NAME "Moon Track 1"
PEAKCOL 16576
BEAT -1
AUTOMODE 0
VOLPAN 1 0 -1 -1 1
MUTESOLO 0 0 0
IPHASE 0
PLAYOFFS 0 1
ISBUS 0 0
BUSCOMP 0 0 0 0 0
SHOWINMIX 1 0.6667 0.5 1 0.5 0 0 0
FREEMODE 0
REC 0 5088 1 0 0 0 0
VU 2
TRACKHEIGHT 0 0 0
INQ 0 0 0 0.5 100 0 0 100
NCHAN 2
FX 1
TRACKID {31116F12-936E-4E2A-AC4F-B04F5EB563D2}
PERF 0
MIDIOUT -1
MAINSEND 1 0
<FXCHAIN
WNDRECT 34 241 1051 816
SHOW 0
LASTSEL 1
DOCKED 0
BYPASS 0 0 0
<JS _MOON/midiChStrip.jsfx ""
1.000000 - - 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 127.000000 139.000000 - 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 1.000000 0.000000 1.000000 15.000000 0.000000 2.000000 48.000000 48.000000 0.000000 - 0.000000 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
>
FLOATPOS 0 0 0 0
FXID {C47FD809-4664-41CA-9A43-70973079DC4E}
WAK 0 0
BYPASS 0 0 0
<VST "VSTi: Reaktor5 (Native Instruments GmbH) (2->8ch)" Reaktor5.dll 0 ""
Okay, now I'm wondering if the console is truncating the message, since I don't see the TRACK_CHUNK title string in the console either.
So that has me back to wondering what's wrong with this code:
Code:
local found, trackstatechunk = ultraschall.GetTrackStateChunk_Tracknumber(tracknum)
--M.Msg('TRACK_CHUNK\n'..trackstatechunk)
local fxStateChunk = ultraschall.GetFXStateChunk(trackstatechunk)
--M.Msg("FX_CHUNK\n"..fxStateChunk)
local fx_lines, startoffset, endoffset = ultraschall.GetFXFromFXStateChunk(fxStateChunk, 2)
local fx_statestring_base64, fx_statestring = ultraschall.GetFXSettingsString_FXLines(fx_lines)
M.Msg('State String'..fx_statestring)
As state string is returning nil, both base64 and normal. I'm getting a (truncated by the console, I guess?) readout for TRACK_CHUNK, and for FX_CHUNK, but nothing for State String.
Thoughts?
EDIT: It does seem to be a problem with Reaktor. I changed the fxnum to '1', and got the first JSFX data just as expected...
Last edited by woodslanding; 12-08-2020 at 10:54 PM.
|
|
|
12-09-2020, 07:29 AM
|
#643
|
Human being with feelings
Join Date: May 2017
Location: Leipzig
Posts: 6,331
|
Could you post the entire statechunk with the Reaktor-settings included? Then I can have a look.
Best is as the rpp-file.
|
|
|
12-09-2020, 08:55 AM
|
#644
|
Human being with feelings
Join Date: Mar 2007
Location: Denver, CO
Posts: 633
|
Rpp file
Here's that file, thanks!!
|
|
|
12-15-2020, 08:45 PM
|
#645
|
Human being with feelings
Join Date: May 2017
Location: Leipzig
Posts: 6,331
|
Quote:
Originally Posted by woodslanding
I have been trying to use the fx_chunk methods to save VST presets, and have a possible bug?
When I get the fx_chunk for a track containing Reaktor, it does not seem to return the whole chunk.
The proper name of the vst is:
"VSTi: Reaktor5 (Native Instruments GmbH) (2->8)"
Wondering if the '>' is messing up the chunk reading???
When I call:
Code:
local found, trackstatechunk = ultraschall.GetTrackStateChunk_Tracknumber(tracknum)
M.Msg('TRACK_CHUNK\n'..trackstatechunk)
|
When I use the following code, I get the full statechunk on your example-project for track 1:
Code:
dofile(reaper.GetResourcePath().."/UserPlugins/ultraschall_api.lua")
found, trackstatechunk = ultraschall.GetTrackStateChunk_Tracknumber(1)
print(trackstatechunk)
So I either guess, what you put into the variable tracknum isn't a valid one(which would explain why it didn't output anything) or the function M.msg() is buggy(can't check, as it's not written by me).
You can safely use print("hello world") with Ultraschall-API to print out stuff. It's faster to type for such things and cleans up your code.
You can also use ToClip("hello world") to output a string to clipboard. This sometimes helps seeing too, if a string has a valid value.
And use SLEM() in your scripts to check, whether an Ultraschall-API function throws an error. This helps everyday-debugging a lot. Maybe this gives you an additional hint in your script, where the error could be.
|
|
|
12-16-2020, 10:13 AM
|
#646
|
Human being with feelings
Join Date: Mar 2007
Location: Denver, CO
Posts: 633
|
Quote:
Originally Posted by Meo-Ada Mespotine
When I use the following code, I get the full statechunk on your example-project for track 1:
Code:
dofile(reaper.GetResourcePath().."/UserPlugins/ultraschall_api.lua")
found, trackstatechunk = ultraschall.GetTrackStateChunk_Tracknumber(1)
print(trackstatechunk)
So I either guess, what you put into the variable tracknum isn't a valid one(which would explain why it didn't output anything) or the function M.msg() is buggy(can't check, as it's not written by me).
You can safely use print("hello world") with Ultraschall-API to print out stuff. It's faster to type for such things and cleans up your code.
You can also use ToClip("hello world") to output a string to clipboard. This sometimes helps seeing too, if a string has a valid value.
And use SLEM() in your scripts to check, whether an Ultraschall-API function throws an error. This helps everyday-debugging a lot. Maybe this gives you an additional hint in your script, where the error could be.
|
M.Msg is from Scythe. I'll try out print...
ToClip() shows that the issue is in fact that the console is truncating the output....
So can you tell me why fx_statestring here is returning nil, then? I am getting a complete chainChunk, and fxLines, as verified by the clipboard:
Code:
dofile(reaper.GetResourcePath().."/UserPlugins/ultraschall_api.lua")
local found, trackChunk = ultraschall.GetTrackStateChunk_Tracknumber(1)
local chainChunk = ultraschall.GetFXStateChunk(trackChunk)
local fxLines = ultraschall.GetFXFromFXStateChunk(chainChunk, 2)
local fx_statestring_base64, fx_statestring = ultraschall.GetFXSettingsString_FXLines(fxLines)
ToClip(fx_statestring..'\n') --returns nil, as does the base64 version.
Thanks!
|
|
|
12-16-2020, 04:11 PM
|
#647
|
Human being with feelings
Join Date: May 2017
Location: Leipzig
Posts: 6,331
|
Ok, there's actually a bug in GetFXSettingsString_FXLines. I'll fix it.
GetFXFromFXStateChunk also seems to be hellish slow, when using it on fx 1 in the code. Dunno why but I think, I should improve on that too, as it's only a small jsfx and shouldn't take seconds to parse out.
Edit:
GetFXFromFXStateChunk was slow after some recent, yet unreleased, changes. I could fix it, thanks to your bugreport as well
So, both should be fixed in the next release coming within the next few days(probably together with Reaper 6.19)
Thanks
Last edited by Meo-Ada Mespotine; 12-16-2020 at 04:40 PM.
|
|
|
12-17-2020, 10:18 PM
|
#648
|
Human being with feelings
Join Date: Mar 2007
Location: Denver, CO
Posts: 633
|
Thank YOU
|
|
|
12-24-2020, 07:19 PM
|
#649
|
Human being with feelings
Join Date: May 2017
Location: Leipzig
Posts: 6,331
|
4.2.002 - "Dave Brubeck - Take Five" - 25th of December 2020
Has now 1359 functions, with 8 new ones
new in this release:- Get/Set Comment-field of fx
You can now get and set the comment-field of trackfx and takefx programmatically. Also gave me the chance to fix some bugs as well 
- Linesorting script for clipboard-content
Sometimes, you would love to sort the lines in the clipboard. Now you can, using the new developer-tool.
- bugfixes and docs
various bugfixes and update to Reaper Internals to Reaper 6.19, SWS 2.12.1.1, JS-extension 1.220
New features in 4.2.002 - DeveloperTools: ultraschall_developertool_SortLinesInClipboardText .lua - sorts the lines of the string in the clipboard
- FX-Management: CountFXFromFXStateChunk - counts the number of fx in an FXStateChunk
- FX-Management: GetFXComment_FXStateChunk - allows getting the comment of an fx within an FXStateChunk(requested by en5ca)
- FX-Management: GetTrackFXComment - gets the text in the comment-field of a trackfx(requested by en5ca)
- FX-Management: GetTakeFXComment - gets the text in the comment-field of an itemfx(requested by en5ca)
- FX-Management: InputFX_GetComment - gets the text in the comment-field of an inputfx
- FX-Management: SetFXComment_FXStateChunk - allows setting the comment of an fx within an FXStateChunk(requested by en5ca)
- FX-Management: SetTrackFXComment - sets the text in the comment-field of a trackfx(requested by en5ca)
- FX-Management: SetTakeFXComment - sets the text in the comment-field of an itemfx(requested by en5ca)
Changes from 4.2.001 to 4.2.002
- API: Settings - allows now turning on/off confirmation dialogs in certain devtools(for streamlined manipulation of strings); had some bug, when not set a value yet -> fixed
- Docs: Reaper Internals - updated to Reaper 6.19 and SWS 2.12.1.1 and JS-extension 1.220
- File-Management: PreviewMediaFile - allows now setting the output-channel of the preview as well
- FX-Management: GetFXFromFXStateChunk - didn't return possible comment-field -> fixed
- FX-Management: GetFXSettingsString_FXLines - didn't work due stupid bug on my side; crashed when an fx didn't have fx-lines available -> both fixed(thanks to woodslanding)
- Helper functions: EditReaScript - allows now opening the last file you opened up with this function by passing nil; adding Ultraschall-API is now supported; optionally add this script to the actionlist; docs were wrong -> fixed
- Helper functions: Base64_Decoder - fixed off-by-one-error that could mess up the last character in the Base-64-string under certain conditions
- Helper functions: Base64_Encoder - had inner variable exposed -> fixed
- RenderManagement: ApplyRenderTable_Project - didn't always apply Mono-Media and Multi-Channel-checkboxes properly -> fixed(thanks to aurelien)
- RenderManagement: ApplyRenderTable_ProjectFile - didn't always apply Mono-Media and Multi-Channel-checkboxes properly -> fixed(thanks to aurelien)
Please update it via ReaPack using: https://github.com/Ultraschall/ultra..._api_index.xml
|
|
|
12-25-2020, 08:00 AM
|
#650
|
Human being with feelings
Join Date: Dec 2018
Posts: 308
|
Very good! Thank you!
|
|
|
12-29-2020, 01:09 AM
|
#651
|
Human being with feelings
Join Date: Mar 2016
Location: Italy
Posts: 227
|
This is a lot of work! Thank you!
I wish I was a podcaster so I'd get to use ultrashall 4 which looks stunning!
I might try to code a cascade hw outputs with your API!
|
|
|
01-03-2021, 11:10 AM
|
#652
|
Human being with feelings
Join Date: Mar 2016
Location: Italy
Posts: 227
|
Hi!
I'm looking for an API that returns if a trackgroup is enabled .
I've found GetProject_GroupDisabled on your API list,
I'm trying to write a simple script like this in order to see what
Code:
dofile(reaper.GetResourcePath().."/UserPlugins/ultraschall_api.lua")
projectfilename_with_path = ultraschall.GetProjectFilename()
disabled1, disabled2 = ultraschall.GetProject_GroupDisabled(projectfilename_with_pat)
reaper.ShowConsoleMsg(tostring(projectfilename_with_path) .. " " .. disabled1 .. " - " .. disabled2 .. "\n")
but i keep on getting nil 0 - 0
what am i missing?
Thank u
|
|
|
01-03-2021, 02:45 PM
|
#653
|
Human being with feelings
Join Date: Oct 2007
Location: home is where the heart is
Posts: 11,928
|
^^ There seems to be a typo (not sure that's the cause though):
line 2: projectfilename_with_path
line 3: projectfilename_with_pat
|
|
|
01-03-2021, 11:49 PM
|
#654
|
Human being with feelings
Join Date: Nov 2015
Location: earth
Posts: 470
|
I followed the instructions to install the API. Upon saving the installation/test script, I see the following.
Functions-Engine=on
Data-Engine=off
Gui-Engine=off
Sound-Engine=off
Video-Engine=off
Doc-Engine=off
Tag-Engine=off
Network-Engine=off
Beta-Functions:
Functions-Beta-Engine=off
Data-Beta-Engine=off
Gui-Beta-Engine=off
Sound-Beta-Engine=off
Video-Beta-Engine=off
Doc-Beta-Engine=off
Tag-Beta-Engine=off
Network-Beta-Engine=off
Is this the normal response, or should more of these be "on"?
|
|
|
01-04-2021, 01:19 AM
|
#655
|
Human being with feelings
Join Date: Mar 2016
Location: Italy
Posts: 227
|
Quote:
Originally Posted by nofish
^^ There seems to be a typo (not sure that's the cause though):
line 2: projectfilename_with_path
line 3: projectfilename_with_pat
|
thanks
definitely a rookie mistake, either way I corrected it but still have no results
|
|
|
01-04-2021, 02:09 AM
|
#656
|
Human being with feelings
Join Date: May 2017
Location: Leipzig
Posts: 6,331
|
Quote:
Originally Posted by earhax
I followed the instructions to install the API. Upon saving the installation/test script, I see the following.
Functions-Engine=on
Data-Engine=off
Gui-Engine=off
Sound-Engine=off
Video-Engine=off
Doc-Engine=off
Tag-Engine=off
Network-Engine=off
Beta-Functions:
Functions-Beta-Engine=off
Data-Beta-Engine=off
Gui-Beta-Engine=off
Sound-Beta-Engine=off
Video-Beta-Engine=off
Doc-Beta-Engine=off
Tag-Beta-Engine=off
Network-Beta-Engine=off
Is this the normal response, or should more of these be "on"?
|
You're right. I'll fix it. Thnx.
Nevertheless, if this was shown, Ultraschall-Api is correctly installed.
|
|
|
01-04-2021, 02:11 AM
|
#657
|
Human being with feelings
Join Date: May 2017
Location: Leipzig
Posts: 6,331
|
Quote:
Originally Posted by 80icio
thanks
definitely a rookie mistake, either way I corrected it but still have no results
|
From the currently opened project or from a projectfile?
Due Api-limitations, most GetProject functions only support rpp-projectfiles.
You can add SLEM() at the end of the script. If an error occurs, SLEM() will give you a hint.
|
|
|
01-04-2021, 03:48 AM
|
#658
|
Human being with feelings
Join Date: Mar 2016
Location: Italy
Posts: 227
|
Quote:
Originally Posted by Meo-Ada Mespotine
From the currently opened project or from a projectfile?
Due Api-limitations, most GetProject functions only support rpp-projectfiles.
|
I'd need that info from the current opened project, do you mean it's not possible?
Thanks for the SLEM function, very helpful!
|
|
|
01-04-2021, 09:06 AM
|
#660
|
Human being with feelings
Join Date: Mar 2016
Location: Italy
Posts: 227
|
Quote:
Originally Posted by Meo-Ada Mespotine
|
Thanks so much, I've already came across those functions but it's not my case.
In the meantime I was successful and had some results from your function GetProject_GroupDisabled (besides I still need to figure out how to translate bitfields infos to track group numbers)
I'm wondering if there's any way to access temporary project infos while the project exists but it's unsaved. Have you tried something similar?
edit: I mean projects that have been saved already but are unsaved at the moment I need to get data from projectstatechunk related functions like GetProject_GroupDisabled
|
|
|
01-04-2021, 10:28 AM
|
#661
|
Human being with feelings
Join Date: May 2017
Location: Leipzig
Posts: 6,331
|
I only have GetProjectStateChunk, but this function is unstable so not recommended.
I have ideas to improve it, but haven't been able to code that yet.
|
|
|
01-05-2021, 05:16 PM
|
#662
|
Human being with feelings
Join Date: Mar 2007
Location: Denver, CO
Posts: 633
|
Question about Defer
I'm having trouble getting my head around the defer functions....
I'm working on a method to convert banks of factory vst presets to rpls. The approach is like so:
1. Make a list of all preset names that need converting, using inputs for fxnum and tracknum
2. Select the first preset in the list
3. Load that preset
WAIT -- this might take a while... would love to be able to query reaper for proof that the preset has loaded, but really it's not worth the trouble... just wait longer than we expect it to take.
4. Increment the preset number
go back to #3
Functions for 1,2, and 3 have been figured out and are working....
Since I need to take inputs for fxnum and tracknum, this can't be the main method. I keep getting lost about where I can increment the preset number. Will it have to be a global variable? I can't figure out another way...
|
|
|
01-05-2021, 08:44 PM
|
#663
|
Human being with feelings
Join Date: Mar 2007
Location: Denver, CO
Posts: 633
|
HAH, Got it!
I actually put the increment for the preset number in the call to the deferred method.... works great!
Mespotine, I have to see if you have a donate button somewhere, your code has been so useful! And the instructional material as well. I couldn't have done it with out the instructions on .ini files, encodings, and track chunks...
At the very least, know your work is being appreciated and used
|
|
|
01-05-2021, 10:03 PM
|
#664
|
Human being with feelings
Join Date: Nov 2015
Location: earth
Posts: 470
|
Anyone know if there is a way (either with Ultraschall API or Reaper API) to pass data from a clicked menu button's text string into the script it's triggering? If so, please let me know how to do it.
Additional info (for the curious minds who want to know): I'm currently working on a horizontal zoom preset system similar to the one in Pro Tools where the user can Cmd/Ctrl-click one of the buttons numbered 1-5 to save a zoom preset, then click normally or type number 1-5 on the keyboard to recall it. But mine will have 10 buttons since Reaper is twice the DAW that PT is.
I've already got it working using one script to save the hzoom level, and 10 recall scripts that are completely identical aside from the script names containing different numbers.
The save script prompts the user for a slot number, and writes the data to the project notes, thus making it accessible/tweakable at runtime, and fast/easy to copy from one open project/tab to another.
The recall scripts use the Ultraschall API to get the hzoom slot number from the script name string using a match command, load the zoom value for it, and execute the zoom function. But I'd like to eliminate the redundancy, and instead just have one "recall hzoom from slot number" script that will be able to use either keyboard character input data, or get the number from the text string of the menu button pressed.
My long term goal is to implement one of my favorite features from Pro Tools that is sadly missing in Reaper: the memory location system. This is similar to Reaper's screensets/track views or snapshots system, except it has a better UI, more functionality, and can store up to (IIRC) 999 presets. And, in addition to horizontal zoom levels, cursor position, and track heights and view/hide settings, a single memory location can also enable/disable track groups, load window configurations, time/loop selections, and other saved settings.
Ideally, I'd like to figure out how I could also save and load these presets using keyboard input sequences. In Pro Tools, using the numeric keypad keys, I think you type .[number]. to load a location number, and .[number]+ to save or edit a stored location (I'm not 100% certain since, luckily, it's been quite a while since I've needed to use Pro Tools  ). But, as far as I can tell, there's nothing in the Reaper API (or Ultraschall) that would allow me to trigger a script from a key sequence. The closest thing I can think of would be using keyboard shortcuts to initiate actions/scripts that load a GUI prompt for user input, then trigger the corresponding save/edit functionality for the entered memory slot number.
If anyone has any info that might help, or knows how to get the text string data from a pressed menu button into the script it trigers, or knows how I might accomplish the triggering of a script and passing data from keyboard character input sequences without loading a GUI prompt, please let me know!
|
|
|
01-06-2021, 03:07 AM
|
#665
|
Human being with feelings
Join Date: May 2017
Location: Leipzig
Posts: 6,331
|
Quote:
Originally Posted by woodslanding
HAH, Got it!
I actually put the increment for the preset number in the call to the deferred method.... works great!
Mespotine, I have to see if you have a donate button somewhere, your code has been so useful! And the instructional material as well. I couldn't have done it with out the instructions on .ini files, encodings, and track chunks...
At the very least, know your work is being appreciated and used 
|
Fantastic. I like that it's helpful for you so my hard work gives you opportunities to code the stuff you need.
For donation, I think it's in the signature. Though I should remove the patreon link from the donationways, as it does not exist anymore.
The rest is still valid.
|
|
|
01-06-2021, 05:24 AM
|
#666
|
Human being with feelings
Join Date: Aug 2016
Posts: 87
|
Lua documentation tool
Thanks for this great API and all the accompanying reaper doc!
I remember stumbling over a thread/post in which you talk about your own documentation tool for your lua/REAPER code and I wanted to ask if it is available for use in one's one code? That would be amazing!
Kind regards,
Lukas
|
|
|
01-06-2021, 05:45 AM
|
#667
|
Human being with feelings
Join Date: May 2017
Location: Leipzig
Posts: 6,331
|
I have created my own documentation-fileformat, which is quite easy to use yourself. I also have some functions in the docs
https://mespotin.uber.space/Ultraschall/US_Api_DOC.html
that allow parsing and taking apart these documentation-blocks within a file.
To give you a hint how this basically looks like, have a look at this file:
https://github.com/Ultraschall/ultra...r-docs.USDocML
It includes tons of so called "USDocBlocs" with one for each function. So this file documents all functions and variables for the video-processor, with which I create this doc:
https://mespotin.uber.space/Ultrasch...mentation.html
I also use it, to have my docs "inline" within the functions, so I can update them when I changed something in the functions.
This file gives you a hint, where I put the USDocBlocs within the function:
https://github.com/Ultraschall/ultra....lua#L197-L225
This includes description, parameters, retvals, etc.
If you think, this could benefit you, I can write down a description on how to write that and a basic parser, with which you can parse the file.
The parsed out information can then be used by you to create any file you want, may it be XML, HTML or whatever you'd like to.
|
|
|
01-06-2021, 05:50 AM
|
#668
|
Human being with feelings
Join Date: May 2017
Location: Leipzig
Posts: 6,331
|
Quote:
Originally Posted by earhax
Anyone know if there is a way (either with Ultraschall API or Reaper API) to pass data from a clicked menu button's text string into the script it's triggering? If so, please let me know how to do it.
|
What do you mean exactly? Like, having two buttons share the same script but depending on the pressed button, this one script behaves differently?
This will probably not possible, I'm afraid, as scripts can't know, which menu or button has been selected in the first place. And buttons and menus cannot send parameters themselves to the script to be interpreted.
So you either hardcode it via multiple scripts or you have no chance (if I understood your question right).
|
|
|
01-06-2021, 09:55 PM
|
#669
|
Human being with feelings
Join Date: Mar 2007
Location: Denver, CO
Posts: 633
|
Quote:
Originally Posted by Meo-Ada Mespotine
Fantastic. I like that it's helpful for you so my hard work gives you opportunities to code the stuff you need.
For donation, I think it's in the signature. Though I should remove the patreon link from the donationways, as it does not exist anymore.
The rest is still valid.
|
Well, once I translated it from Deutsch I was able to send you a coffee or two. Glad I didn't try the patreon... thanks again!
-eric
|
|
|
01-07-2021, 09:44 AM
|
#670
|
Human being with feelings
Join Date: May 2017
Location: Leipzig
Posts: 6,331
|
Quote:
Originally Posted by woodslanding
Well, once I translated it from Deutsch I was able to send you a coffee or two. Glad I didn't try the patreon... thanks again!
-eric
|
I thank you
|
|
|
01-07-2021, 03:15 PM
|
#671
|
Human being with feelings
Join Date: Dec 2020
Location: Miami, FL USA
Posts: 392
|
Hey Mespotine,
----
Thanks again for the heads-up about the Lua methods for parsing USDocML.
I have managed to rewrite my code using this =)
However, I would like to add support for the Ultraschall API methods to my VS Code extension too, and I noticed there is no pre-generated .USDocML for the file that gets output as "/Documentation/US_Api_Functions.html", from the "Ultraschall_Doc_Func_Converter.lua" file.
It seems like no intermediate file is generated -- you just read the folder of source code into strings in-memory, and then process it there and spit out the HTML.
I see a function, "ultraschall.SplitUSDocBlocs(String)", would I be able to use either this or the standard "ultraschall.Docs_GetAllUSDocBlocsFromString() ", and provide it the contents of all the files which have USDocML commented functions as string input?
By the way, here is the source for my little parser/serializer. I made the "ultraschall_doc_engine.lua" file standalone by pulling all the dependency functions into it, so that it can be run outside of Reaper from the commandline:
https://gist.github.com/GavinRay97/1...ile-parser-lua
You obviously know the API better than anyone, so just want to check I'm doing this right so far
Example, no USDocML file for method
Last edited by gxray; 01-07-2021 at 03:23 PM.
|
|
|
01-08-2021, 02:20 PM
|
#672
|
Human being with feelings
Join Date: Aug 2016
Posts: 87
|
Quote:
Originally Posted by Meo-Ada Mespotine
I have created my own documentation-fileformat, which is quite easy to use yourself. I also have some functions in the docs
https://mespotin.uber.space/Ultraschall/US_Api_DOC.html
that allow parsing and taking apart these documentation-blocks within a file.
To give you a hint how this basically looks like, have a look at this file:
https://github.com/Ultraschall/ultra...r-docs.USDocML
It includes tons of so called "USDocBlocs" with one for each function. So this file documents all functions and variables for the video-processor, with which I create this doc:
https://mespotin.uber.space/Ultrasch...mentation.html
I also use it, to have my docs "inline" within the functions, so I can update them when I changed something in the functions.
This file gives you a hint, where I put the USDocBlocs within the function:
https://github.com/Ultraschall/ultra....lua#L197-L225
This includes description, parameters, retvals, etc.
If you think, this could benefit you, I can write down a description on how to write that and a basic parser, with which you can parse the file.
The parsed out information can then be used by you to create any file you want, may it be XML, HTML or whatever you'd like to.
|
Hello!
I'm sure it would benefit us!  And it would be awesome, if you added the description and parser, so we can also generate documentation for our own (and shared!) modules! Thank you!
Kind regards,
Lukas
PS.: Maybe, gxray's standalone version is already something we could use?
|
|
|
01-08-2021, 03:08 PM
|
#673
|
Human being with feelings
Join Date: Dec 2017
Location: Brazil
Posts: 1,947
|
hey mespotine!
with the new dev how are your GetProjectStateChunk working?
is there already a way to SetProjectStateChunk ? (didn't find in yours doc )
This could open some good doors to reaper I think hahah.
|
|
|
01-12-2021, 06:12 AM
|
#674
|
Human being with feelings
Join Date: Aug 2016
Posts: 87
|
By the way! Do you guys and ladies think that it would be possible to somehow make (if present) such html documentation available via ReaPack as well? As in a button, for instance, that opens the index page of the documentation if it is found inside a folder called doc/html/ for instance?
cheers
|
|
|
01-14-2021, 01:48 PM
|
#675
|
Human being with feelings
Join Date: May 2017
Location: Leipzig
Posts: 6,331
|
Quote:
Originally Posted by daniellumertz
hey mespotine!
with the new dev how are your GetProjectStateChunk working?
is there already a way to SetProjectStateChunk ? (didn't find in yours doc )
This could open some good doors to reaper I think hahah.
|
If I could pull this off, I would be your new Overlord.. pardon.. Overlady of coding.
Sadly it's not possible (yet) as I have not found any part of Reaper to sneak in projectchanges.
GetProjectStateChunk however will now work reliably in Reaper 6.20+ due some recent dev-changes.
Will be in the next release. So at least getting all states is now possible properly.
|
|
|
01-14-2021, 01:50 PM
|
#676
|
Human being with feelings
Join Date: May 2017
Location: Leipzig
Posts: 6,331
|
Quote:
Originally Posted by LuCsa
By the way! Do you guys and ladies think that it would be possible to somehow make (if present) such html documentation available via ReaPack as well? As in a button, for instance, that opens the index page of the documentation if it is found inside a folder called doc/html/ for instance?
cheers
|
You mean you want to download the docs only? Otherwise you can open the docs already, as there are actions installed when you install Ultraschall-Api. Just search for docs in the actionlist.
|
|
|
01-14-2021, 01:51 PM
|
#677
|
Human being with feelings
Join Date: May 2017
Location: Leipzig
Posts: 6,331
|
Quote:
Originally Posted by LuCsa
Hello!
I'm sure it would benefit us!  And it would be awesome, if you added the description and parser, so we can also generate documentation for our own (and shared!) modules! Thank you!
Kind regards,
Lukas
PS.: Maybe, gxray's standalone version is already something we could use?
|
I'll do one for the next release.
|
|
|
01-14-2021, 01:54 PM
|
#678
|
Human being with feelings
Join Date: May 2017
Location: Leipzig
Posts: 6,331
|
Quote:
Originally Posted by gxray
Hey Mespotine,
----
Thanks again for the heads-up about the Lua methods for parsing USDocML.
I have managed to rewrite my code using this =)
However, I would like to add support for the Ultraschall API methods to my VS Code extension too, and I noticed there is no pre-generated .USDocML for the file that gets output as "/Documentation/US_Api_Functions.html", from the "Ultraschall_Doc_Func_Converter.lua" file.
It seems like no intermediate file is generated -- you just read the folder of source code into strings in-memory, and then process it there and spit out the HTML.
I see a function, "ultraschall.SplitUSDocBlocs(String)", would I be able to use either this or the standard "ultraschall.Docs_GetAllUSDocBlocsFromString() ", and provide it the contents of all the files which have USDocML commented functions as string input?
By the way, here is the source for my little parser/serializer. I made the "ultraschall_doc_engine.lua" file standalone by pulling all the dependency functions into it, so that it can be run outside of Reaper from the commandline:
https://gist.github.com/GavinRay97/1...ile-parser-lua
You obviously know the API better than anyone, so just want to check I'm doing this right so far
Example, no USDocML file for method

|
For Ultraschall-Api, you just need to parse a handful of .lua-files.
I'll add a list of the files in question into the misc-folder, so you just need to read the files given in that list, as some of the lua-files could create problems when you parse them as well.
It's easier than describing which file to parse.
You can parse them just like the USDocML-files.
|
|
|
01-14-2021, 07:49 PM
|
#679
|
Human being with feelings
Join Date: Dec 2020
Location: Miami, FL USA
Posts: 392
|
Quote:
Originally Posted by Meo-Ada Mespotine
For Ultraschall-Api, you just need to parse a handful of .lua-files.
I'll add a list of the files in question into the misc-folder, so you just need to read the files given in that list, as some of the lua-files could create problems when you parse them as well.
It's easier than describing which file to parse.
You can parse them just like the USDocML-files.
|
Oh okay awesome, thanks! So roughly something like this then, where sourcefiles is the list of Lua filenames from the text file?
Code:
for _, sourcefile in pairs(sourcefiles) do
local file = io.open(sourcefile , "r");
local text = file:read("*a")
local _, docblocks = ultraschall.Docs_GetAllUSDocBlocsFromString(text)
end
__________________
Seasoned codemonkey
Dunno a thing about making music (here to learn!)
|
|
|
01-14-2021, 08:54 PM
|
#680
|
Human being with feelings
Join Date: Dec 2017
Location: Brazil
Posts: 1,947
|
Quote:
Originally Posted by Meo-Ada Mespotine
If I could pull this off, I would be your new Overlord.. pardon.. Overlady of coding.
Sadly it's not possible (yet) as I have not found any part of Reaper to sneak in projectchanges.
GetProjectStateChunk however will now work reliably in Reaper 6.20+ due some recent dev-changes.
Will be in the next release. So at least getting all states is now possible properly.
|
You already are!
Keep up, the time of having get/set project chunks will come hahaha
thx!
|
|
|
Thread Tools |
|
Display Modes |
Linear Mode
|
Posting Rules
|
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
HTML code is Off
|
|
|
All times are GMT -7. The time now is 03:24 AM.
|