diff --git a/Scripts/ultraschall_edit_id3_tags.lua b/Scripts/ultraschall_edit_id3_tags.lua index 89b97a83..ad873218 100644 --- a/Scripts/ultraschall_edit_id3_tags.lua +++ b/Scripts/ultraschall_edit_id3_tags.lua @@ -1,18 +1,18 @@ --[[ ################################################################################ -# -# Copyright (c) 2014-2017 Ultraschall (http://ultraschall.fm) -# +# +# Copyright (c) 2014-2019 Ultraschall (http://ultraschall.fm) +# # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal # in the Software without restriction, including without limitation the rights # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: -# +# # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. -# +# # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -20,162 +20,27 @@ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. -# +# ################################################################################ ]] +oldnotes=reaper.GetSetProjectNotes(0, false, "") +oldnotes=string.gsub(oldnotes, "\n", "\b") --- Print Message to console (debugging) -function Msg(val) - reaper.ShowConsoleMsg(tostring(val).."\n") +if oldnotes=="" then + Date = os.date("*t") + oldnotes="\b\b\b"..Date.year end --- Used to escape "'s by toCSV ---function escapeCSV (s) --- _, count = string.gsub(s, "\"", "\"") --- if count==nil then count=0 end --- if math.fmod(count,2)==1 then --if we have a odd number of " replace them with "" --- if string.find(s, '["]') then --- s = '"' .. string.gsub(s, '"', '""') .. '"' --- end --- elseif string.find(s,",")~=nil then --- s="\""..s.."\"" --- end --- return s ---end -function notes2csv () - local csv = "" - local array = {} - local count=0 - notes = reaper.GetSetProjectNotes(0, false, "") - for line in notes:gmatch"[^\n]*" do - count=count+1 - csv = csv .. "," .. line --escapeCSV(line) - array[count]=line - end - - retval= string.sub(csv, 2) -- remove first "," - - return retval, count, array -end - - - -function csv2lines (line) - title = line:match("(.-),") - artist= line:match(".-,(.-),") - album = line:match(".-,.-,(.-),") - year = line:match(".-,.-,.-,(.-),") - genre = line:match(".-,.-,.-,.-,(.-),") - comment = line:match(".-,.-,.-,.-,.-,(.*)") ---[[ pos=0 - pos_old=1 - clean="" - for i=1, 5,1 do - pos=string.find(result,",",pos_old) - substring=string.sub(line,pos_old,pos-1) - clean=clean..substring.."\n" - pos_old=pos+1 - end - --check field 6 - substring=string.sub(line,pos_old) - clean=clean..substring - ]] - return title.."\n"..artist.."\n"..album.."\n"..year.."\n"..genre.."\n"..comment -end - -function checkevencharacters(string,character) - local count=0 - local even=true - for i=1, string.len(string) do - if string:sub(i,i)==character then - if even==true then even=false - else even=true - end - end - end - return even -end - ---reaper.ShowConsoleMsg("") --clear console -dialog_ret_vals, count, dialog_retvals_array = notes2csv() --default values +--if olll==nil then return end -retval, result = reaper.GetUserInputs("Edit ID3 Podcast Metadata", 6, "Title (no comma allowed):,Artist (no comma allowed):,Podcast (no comma allowed):,Year (no comma allowed):,Genre (no comma allowed):,Comment:", dialog_ret_vals) +retval, result = reaper.GetUserInputs("Edit ID3 Podcast Metadata", 6, "Episode Title:,Author:,Podcast:,Year:,Podcast Category:,Description:,extrawidth=300, separator=\b", oldnotes) -count=0 -temp=-1 -old_pos=0 -pos=0 -if retval == true then - pos=result:match(".-,.-,.-,.-,.-,()") - firstvals=result:sub(1,pos-1) - restvals=result:sub(pos,-1) - pos=restvals:match(".-,()") - if pos~=nil then restvals="\""..restvals.."\"" end - if restvals:match("\"\".*\"\"")~=nil then restvals=restvals:sub(2,-2) end - - - even=checkevencharacters(firstvals:match(".-,"),"\"") - if even==false then firstvals=firstvals:match("(.-),").."\""..firstvals:match(".-(,.*)") end - - even=checkevencharacters(firstvals:match(".-,(.-,)"),"\"") - if even==false then firstvals=firstvals:match("(.-,.-),").."\""..firstvals:match(".-,.-(,.*)") end - even=checkevencharacters(firstvals:match(".-,.-,(.-,)"),"\"") - if even==false then firstvals=firstvals:match("(.-,.-,.-),").."\""..firstvals:match(".-,.-,.-(,.*)") end - even=checkevencharacters(firstvals:match(".-,.-,.-,(.-,)"),"\"") - if even==false then firstvals=firstvals:match("(.-,.-,.-,.-),").."\""..firstvals:match(".-,.-,.-,.-(,.*)") end - - even=checkevencharacters(firstvals:match(".-,.-,.-,.-,(.-,)"),"\"") - if even==false then firstvals=firstvals:match("(.-,.-,.-,.-,.-),").."\""..firstvals:match(".-,.-,.-,.-,.-(,.*)") end - - even=checkevencharacters(restvals,"\"") - if even==false then restvals=restvals.."\"" end - - notes = reaper.GetSetProjectNotes(0, true, csv2lines(firstvals..restvals)) -- write new notes -end +result=string.gsub(result, "\b", "\n") ---[[ if retval == true then - --step through field 1-5 and check if the numer of " is even. Add a " to the end if needed. - pos=0 - pos_old=1 - clean="" - for i=1, 5,1 do - pos=string.find(result,",",pos_old) - substring=string.sub(result,pos_old,pos-1) - _, count = string.gsub(substring, "\"", "\"") - if math.fmod(count,2)==1 then substring=substring.."\"" end - clean=clean..substring.."," - pos_old=pos+1 - end - --check field 6 - substring=string.sub(result,pos_old) - _, count = string.gsub(substring, "\"", "\"") - if math.fmod(count,2)==1 then substring=substring.."\"" end - clean=clean..substring - result=clean - - -- if more than "," 5 then escape the comment field (surround with ") - _, count = string.gsub(result, ",", ",") - if count>5 then - pos=0 - for i=1, 5,1 do - pos=string.find(result,",",pos+1) - end - temp=string.sub(result,pos+1,-1) - if temp:match("\"\".*\"\"")~=nil then newresult=string.sub(result,1,pos)..temp:sub(2,-2) - else newresult=string.sub(result,1,pos)..string.sub(result,pos+1) - end - reaper.MB(newresult,result,0) - result=newresult - --reaper.MB(string.sub(result,pos+1,-1),"",0) - end - - - - notes = reaper.GetSetProjectNotes(0, true, csv2lines(result)) -- write new notes -end ---]] + notes = reaper.GetSetProjectNotes(0, true, result) -- write new notes +end \ No newline at end of file diff --git a/Scripts/ultraschall_export_assistant.lua b/Scripts/ultraschall_export_assistant.lua index 3d1a32df..0f361496 100644 --- a/Scripts/ultraschall_export_assistant.lua +++ b/Scripts/ultraschall_export_assistant.lua @@ -157,7 +157,7 @@ else -- macOS -- name = element type x y w h caption ...other params... logo = GUI.Pic:new( 484,280, 80, 80, img_ratio, img_adress, runcommand, "_Ultraschall_Open_Project_Folder"), - label = GUI.Lbl:new( 50, 120+y_offset, "Export MP3/ m4a\nRender your Podcast to a MP3/ m4a File.\n\n\nChapter Markers\nYou may take a final look at your chapter markers.\n\n\nID3 Metadata\nUse the ID3 Editor to add metadata to your podcast.\n\n\nPodcast Episode Image:\nFound.\n\n\n\n\nFinalize MP3/ m4a\nHit the button and select your MP3/ m4a to finalize it\nwith metadata, chapters and episode image!", 0), + label = GUI.Lbl:new( 50, 120+y_offset, "Export MP3\nRender your Podcast to a MP3 File.\n\n\nChapter Markers\nYou may take a final look at your chapter markers.\n\n\nID3 Metadata\nUse the ID3 Editor to add metadata to your podcast.\n\n\nPodcast Episode Image:\nFound.\n\n\n\n\nFinalize MP3\nHit the button and select your MP3 to finalize it\nwith metadata, chapters and episode image!", 0), label2 = GUI.Lbl:new( 30, 120+y_offset, "1.\n\n\n\n2.\n\n\n\n3.\n\n\n\n4.\n\n\n\n\n\n5.", 0), label3 = GUI.Lbl:new( 30, 70+y_offset, "Follow these simple steps:", 0), export = GUI.Btn:new( 430, 120+y_offset, 190, 40, "Export MP3", runcommand, "_Ultraschall_Render_Check"), @@ -173,7 +173,7 @@ else -- macOS -- name = element type x y w h caption ...other params... -- logo = GUI.Pic:new( 374,178, 0, 0, img_ratio, img_adress), - label = GUI.Lbl:new( 50, 120+y_offset, "Export MP3/ m4a\nRender your Podcast to a MP3/ m4a File.\n\n\nChapter Markers\nYou may take a final look at your chapter markers.\n\n\nID3 Metadata\nUse the ID3 Editor to add metadata to your podcast.\n\n\nPodcast Episode Image\nJust put a square .jpg, .jpeg or .png image with the\nname 'cover.xyz' OR with the same name as your\nproject file (.RPP) in the project folder.\n\n\nFinalize MP3/ m4a\nHit the button and select your MP3/ m4a to finalize it\nwith metadata, chapters and episode image!", 0), + label = GUI.Lbl:new( 50, 120+y_offset, "Export MP3\nRender your Podcast to a MP3 File.\n\n\nChapter Markers\nYou may take a final look at your chapter markers.\n\n\nID3 Metadata\nUse the ID3 Editor to add metadata to your podcast.\n\n\nPodcast Episode Image\nJust put a square .jpg, .jpeg or .png image with the\nname 'cover.xyz' OR with the same name as your\nproject file (.RPP) in the project folder.\n\n\nFinalize MP3\nHit the button and select your MP3 to finalize it\nwith metadata, chapters and episode image!", 0), label2 = GUI.Lbl:new( 30, 120+y_offset, "1.\n\n\n\n2.\n\n\n\n3.\n\n\n\n4.\n\n\n\n\n\n5.", 0), label3 = GUI.Lbl:new( 30, 70+y_offset, "Follow these simple steps:", 0), export = GUI.Btn:new( 430, 120+y_offset, 190, 40, "Export MP3", runcommand, "_Ultraschall_Render_Check"), diff --git a/Scripts/ultraschall_gui_lib.lua b/Scripts/ultraschall_gui_lib.lua index 01c4608c..d0223951 100644 --- a/Scripts/ultraschall_gui_lib.lua +++ b/Scripts/ultraschall_gui_lib.lua @@ -1620,11 +1620,16 @@ function Btn:draw() GUI.color("txt") GUI.font(4) + if reaper.GetOS() == "OSX64" then + btn_offset = 3 + else + btn_offset = 1 + end local str_w, str_h = gfx.measurestr(self.caption) gfx.x = x + 1 * state + ((w - str_w) / 2) - 2 gfx.y = y + 1 * state + ((h - str_h) / 2) - 2 - gfx.y = gfx.y + 3 + gfx.y = gfx.y + btn_offset gfx.drawstr(self.caption) end diff --git a/Scripts/ultraschall_open_project_folder.lua b/Scripts/ultraschall_open_project_folder.lua index eb017bc1..d6063ca6 100644 --- a/Scripts/ultraschall_open_project_folder.lua +++ b/Scripts/ultraschall_open_project_folder.lua @@ -6,7 +6,7 @@ * Author URI: http://extremraym.com * Repository: GitHub > X-Raym > EEL Scripts for Cockos REAPER * Repository URI: https://github.com/X-Raym/REAPER-EEL-Scripts - * File URl: + * File URl: * Licence: GPL v3 * Forum Thread: Scripts: Various * Forum Thread URI: http://forum.cockos.com/showthread.php?p=1622146 @@ -21,7 +21,7 @@ + Initial Release --]] - + -------------------------------------------------------- -- DEBUG -- ----- @@ -69,19 +69,19 @@ function IsProjectSaved() retval, project_path_name = reaper.EnumProjects(-1, "") if project_path_name ~= "" then - + dir = GetPath(project_path_name, separator) --msg(name) name = string.sub(project_path_name, string.len(dir) + 1) name = string.sub(name, 1, -5) name = name:gsub(dir, "") - + --msg(name) project_saved = true return project_saved else - display = reaper.ShowMessageBox("You need to save the project to execute this script.", "File Export", 1) + display = reaper.ShowMessageBox("You need to save the project to execute this script.", "Project Folder", 1) if display == 1 then diff --git a/UserPlugins/ultraschall_api.lua b/UserPlugins/ultraschall_api.lua index 93893003..e6cd2369 100644 --- a/UserPlugins/ultraschall_api.lua +++ b/UserPlugins/ultraschall_api.lua @@ -61,9 +61,9 @@ end if reaper.GetOS() == "Win32" or reaper.GetOS() == "Win64" then ultraschall.Separator = "\\" - else +else ultraschall.Separator = "/" - end +end local info = debug.getinfo(1,'S'); --ultraschall.Script_Path = info.source:match[[^@?(.*[\/])[^\/]-$]] diff --git a/UserPlugins/ultraschall_api/Changelog-Api.txt b/UserPlugins/ultraschall_api/Changelog-Api.txt index 27a956cd..46a420ec 100644 --- a/UserPlugins/ultraschall_api/Changelog-Api.txt +++ b/UserPlugins/ultraschall_api/Changelog-Api.txt @@ -1,6 +1,8 @@ - For 4.00beta2.78 + For 4.01betas: + RunCommand und andere US-LegacyCommands funzen net mehr... - TODO!! Defer - - make defer-loops protected, so they can't be influenced from the outside, neither changed or stopped. + which means: no stopping-feature available using StopDefer-function in such cases - registering of defer-using-running scripts into an extstate ultraschall->running_script_instance-> for monitoring purposes - need setting-functions - Defer -> identifier management must be more stable, without possible nameconflicts @@ -28,16 +30,12 @@ - TODO!! Event Manager: - Funktionen anstelle von Actions sollten auch hinzufügbar sein. Diese haben auch Zugriff auf den UserSpace des Events. - - DOcEngine: Retval und Parms-parsefkts haben Probleme, wenn zwischen parameter/retvalname und - kein Leerzeichen ist. - "parametername- Text" - TODO!! XML-versions of the USDOCML-docsfiles - TODO!! Text to XML-compatible characters-function, for < > & etc - TODO!! in the eventmanager-script: - CheckEveryXSeconds: mach Wert 0 zu permanent und negative Werte zu EveryXDeferCycle-Werten für mehr Kontrolle darüber(letzteres Kür) - CheckForXSeconds: mach Wert 0 zu dauerhaft und evtl negative Werte für Anzahl Defer-Cycles, die gecheckt werden soll(letzteres Kür) - - TODO!! index of config-vars is only one level - - TODO!! concepts-documentation, autoupdate the download-link on Introduction_002_How_to_Use-chapter - TODO!! XML-generator has problems with spaces and & in filenames; use this to overcome this: tempfile=files_array[i] tempfile2=string.gsub(tempfile, "&", "%%26") @@ -46,7 +44,6 @@ - TODO!! reaper.GetLastTouchedFX, reaper.GetFocusedFX - high word/low word-management is too difficult, make new functions of them - TODO!! - Get/SetProject-functions for - StateChunks: - SetProject_AutomationItemStateChunk - gets an automation-item from a project/ProjectStateChunk - SetProject_ProjectBay - gets the projectbay from a project/ProjectStateChunk @@ -73,7 +70,7 @@ - SetProject_CountMasterHWOuts - SetProject_MasterHWOut - SetProject_MasterVolume - - - SetProject_MasterPanMode - + - SetProject_MasterPanMode - - SetProject_MasterWidth - - SetProject_MasterGroupFlagsState - - SetProject_MasterGroupFlagsHighState - @@ -98,8 +95,6 @@ Delete the temp-rendered-files close the projects and return the filename - - For 4.00beta2.8: - TODO!! MB and GetUserInputs not working on Mac due unknown bug. Can't find ID of the buttons anymore. Changes in Reaper in recent versions? - TODO!! GetUserInputs - count doesn't match, if fewer inputboxes are filled than do exist. @@ -122,8 +117,6 @@ Regarding default color-values, IIRC they are stored in the .ReaperTheme-files, with the currently used stored in reaper.ini as well. So how would one reset color palette in reaper without losing theme config otherwise? just colors. needs more research - TODO!! Localize: can we detect, which language-file is currently installed and which language it holds, to decide, which language to use? - Nope...needs more research TODO!! GetTrackPanLaw_Boost(tracknumber, sendidx, setstate) setstate=true -> don't insert it setstate=false -> insert it AFTER the AUXRECV with idx "sendidx" @@ -171,9 +164,6 @@ TODO!! - Get/SetProjectBay-functions TODO!! - Envelope-StateChunk-functions - For 4.00Beta 2.9: - - TODO!! - Mix-Snapshots, who store/retrieve the current/a former mix TODO!! SaveProjectAs(ReaProject project, newfilename, relative_sourcefilenames, ProjectStateChunk) @@ -196,19 +186,85 @@ TODO!! buggy function the line "reaper.JS_WindowMessage_Send(Textfield, "WM_SETFONT", styles[style] ,0,0,0)" seems to be the problem due WM_SETFONT - -Additions: + +#### readded from earlier development-builds - Developer: SetReaScriptConsole_FontStyle - sets the style of the font in the ReaConsole - LiceCap: SetLiceCapExe - sets the LiceCap-executable, which shall be used by Reaper - LiceCap: SetupLiceCap - sets up the LiceCap-executable settings of the currently chosen LiceCap-executable in Reaper - ProjectManagement: SaveProjectAs - saves the current project under a new filename - - RenderManagement: GetProject_RenderOutputPath - gets the render-output- + - RenderManagement: GetProject_RenderOutputPath - gets the render-output-path - RenderManagement: ResolveRenderPattern - resolves the render-pattern into its actual filename - + - Subtitles: ReadSubtitles\_VTT - imports a webvtt-subtitlefile ## Ultraschall Framework - Changelog +### 4.00 Beta 2.79: - "Yes - Owner of a lonely heart" + +Has now 1082 functions, with 12 new ones + + **New in this release:** + + NOTE: There are some new features, who make use of Reaper v6-features. Please update soon, as Reaper 6 will be a requirement soon! + + - **Speedup when loading US-API** + I made a modules-system, which speeds up loading and initalization as well as memory-use of the Ultraschall-API by magnitudes. + This approach loads only the functions needed by your script(used to load all functions in earlier versions). + The loading is now about 86% faster and memoryuse if 56% less. + And what do you need to do to make use of the modules approach? + Well, nothing. The Ultraschall-API does it for you! (requested by many, so hope, this helps you a lot). + + - **Marker/Region Extstates** + Reaper 6.02 added some new features, which gives a unique guid for a marker. This again, helped me adding a feature I wanted to have for a long time: Marker/Region Extstates. + They work like regular ProjectExtStates, but have the benefit, that they allow saving additional key-value stores associated with a certain marker/region. + And even if you change the whole order of the markers, the extstates will still be attached to the marker of your choice. + Possible usecase: storing the render-format-settings as region-extstates for region-rendering or simply adding additional metadata to markers/regions, that are needed but would spam the markertitle shown in the arrangeview. + Experiment with it, you'll quickly get the idea and ideas for practical usecases! + + - **Blitting an image centered** + Sometimes, you want to blit an image into gfx-windows centered. Problem is: it's not easy to do. Until now, as I added the function + GFX\_BlitImageCentered, which does exactly that. + That means, you can pass to the function the position of the center of the image and change rotate/scale. This makes zooming in and out of images much more easier, as they stay at their position. + + - **Subtitles SRT-import/export** + You can import and export now SRT-files for subtitles. This should allow you to use regions as subtitle-feature. + + - **ConvertStringToBits and ConvertBitsToString** + This can be helpful, if you have a string, which represents a binary-number: Just convert it with this function and voila, you can work with the bits themselves. + And if you need to do it the other direction, use ConvertBitsToString. That way, you can work easily on a bitlevel, if fiddling with bitshifting is too difficult for you. + + - **Bugfixes with ArrangeViewSnapShots, Markers** + Should now work like a charm. + +#### New features in 4.00beta2.79 + - API: loadspeed - sped up loading speed by 86%, as API will now only load functions, actually needed, not all of them; memory need is reduced by about 56%. + - Docs: Reaper Internals - updated to Reaper 6.02 + - ExtStateManagement: GetMarkerExtState - gets an extstate from a specific marker/region + - ExtStateManagement: SetMarkerExtState - sets an extstate for a specific marker/region + - GFX: GFX\_BlitImageCentered - blits an image centered at a given position, to make "zooming"-effects easy to produce + - Helper Functions: ConvertBitsToString - converts a table with bits(entries with 0 or 1) into its string-representation + - Helper Functions: ConvertStringToBits - converts a string into its bit-representation + - Markermanagement: GetMarkerIDFromGuid - get the markerid from a guid + - Markermanagement: GetGuidFromMarkerID - get the guid from a marker + - Scrubbing: Scrubbing\_MoveCursor\_GetToggleState - gets the current toggle-state for when scrubbing using an action/surface + - Scrubbing: Scrubbing\_MoveCursor\_Toggle - toggles the state for when scrubbing using an action/surface + - Subtitles: ReadSubtitles\_SRT - imports a SubRip-srt-subtitlefile + - Subtitles: SaveSubtitles\_SRT - export a SubRip-srt-subtitlefile + +#### Changes from Beta 2.78 to Beta 2.79 + - API: Reapack-API-xml-generator.lua - didn't correctly create zip-archive of the API stored in GitHub -> fixed + - ArrangeView Snapshots: DeleteArrangeviewSnapshot - deleted all Arrangeview-Snapshots instead of the slot-one and didn't check for valid value for parameter slot -> fixed + - ArrangeView Snapshots: IsValidArrangeviewSnapshot - regression, didn't return false, if no snapshot was available in a certain slot -> fixed + - ArrangeView Snapshots: RetrieveArrangeviewSnapshot - had inner variable exposed -> fixed + - ConfigurationManagement: CountValuesByPattern - didn't count at all(for some reason), errors in docs -> fixed(thanks to reapero) + - Developer: ultraschall\_developertool\_Display-Altered-Config-Vars.lua - didn't work with rc-pre-releases of Reaper -> fixed + - Marker Management: AddCustomRegion - was expecting length, although declared as regionend in the docs -> fixed + - Marker Management: MoveRegionsBy - still had debug-code in it, which could display messageboxes and overwrite global variables -> fixed (sorry for that) + - Marker Management: SetCustomRegion - had docs of AddCustomRegion -> fixed + - Project Management: GetProject\_MarkersAndRegions - supports now guids of markers and regions, as introduced in Reaper 6.02 + +--- + ### 4.00 Beta 2.78: - "Tchaikovski - Overture 1812" - 5th of November 2019 Has now 1070 functions, with 41 new ones @@ -494,7 +550,7 @@ My apologies for any inconvenience.... :/** Shows changes with doubles without a problem now, is faster, uses the config-var-docs included with the API to get the currently accepted config-vars. I also improved the layout a bit. -###New features in 4.00beta2.761 +#### New features in 4.00beta2.761 - Helper functions: FindPatternsInString - finds all occurrences of a matching-pattern in a string - Helper functions: IsWithinTimeRange - returns, if a time is within a start and endtime, takes care of the precision-problem time-positions in Lua have - ProjectManagement: GetProjectStateChunk - returns the ProjectStateChunk of the current project(finally working!) @@ -505,7 +561,7 @@ My apologies for any inconvenience.... :/** - User Interface: UpdateMediaExplorer - updates the listview of the Media Explorer - User Interface: MediaExplorer\_OnCommand - runs an Media Explorer action(just like Reaper's Main\_OnCommand and Midi\_OnCommand-functions); runs no scripts yet, only native/extension actions -###Changes from Beta 2.76 to Beta 2.761 +#### Changes from Beta 2.76 to Beta 2.761 - Automation Items: GetProject_CountAutomationItems - didn't return the right retval in case of an error -> fixed - ColorManagement: RGB2Grayscale - didn't return the right retval in case of an error -> fixed @@ -2433,6 +2489,7 @@ Has now 700 functions, with about 250 new ones! --- ### 4.00 Beta2.1: - "Ich und der Rock - Renft" - 30th of August + #### New features in 4.00beta2.1 - mostly bugfixes @@ -2468,6 +2525,7 @@ Has now 700 functions, with about 250 new ones! --- ### 4.00 Beta2: - "Shock The Monkey - Peter Gabriel" - 20th August 2017 + #### New Features in 4.00beta2 - about 190 new functions with: - Configuration: Import/Export from/to reaper-kb.ini-files @@ -2502,6 +2560,7 @@ Has now 700 functions, with about 250 new ones! --- ### 4.00 beta1: - "Tomorrow Never Knows - The Beatles" - 10th of July 2017 + #### New Features in 4.00beta1 - about 140 new functions with: - Markers: extensive marker-management, with markers for chapter, edit, dummy, normal and podrange-regions diff --git a/UserPlugins/ultraschall_api/DocsSourcefiles/reaper-apidocs.USDocML b/UserPlugins/ultraschall_api/DocsSourcefiles/reaper-apidocs.USDocML index dd44a229..d185ac80 100644 --- a/UserPlugins/ultraschall_api/DocsSourcefiles/reaper-apidocs.USDocML +++ b/UserPlugins/ultraschall_api/DocsSourcefiles/reaper-apidocs.USDocML @@ -4,7 +4,7 @@ 1.Introduction 1 Introduction to ReaScript - ## ReaScript API as of Reaper 5.983 + ## ReaScript API as of Reaper 6.01 REAPER provides an API (advanced programming interface) for users and third parties to create extended functionality. API functions can be called from a compiled C/C++ dynamic library that is loaded by REAPER, or at run-time by user-created ReaScripts that can be written using REAPER's own editor. @@ -3328,6 +3328,37 @@ + + DockGetPosition + DockGetPosition + int DockGetPosition(int whichDock) + int DockGetPosition(int whichDock) + integer reaper.DockGetPosition(integer whichDock) + Int RPR_DockGetPosition(Int whichDock) + + Reaper=6.02 + Lua=5.3 + + + returns the position of docker whichDock + + + integer whichDock - the docker, whose position you want to get + - -1, not found + - 0, bottom + - 1, left + - 2, top + - 3, right + - 4, floating + + ReaperApiFunctionsReference + + + User Interface + + + + DockIsChildOfDock DockIsChildOfDock @@ -3973,11 +4004,18 @@ integer retval, optional number value, optional number dVdS, optional number ddVdS, optional number dddVdS = reaper.Envelope_Evaluate(TrackEnvelope envelope, number time, number samplerate, integer samplesRequested) (Int retval, TrackEnvelope envelope, Float time, Float samplerate, Int samplesRequested, Float valueOutOptional, Float dVdSOutOptional, Float ddVdSOutOptional, Float dddVdSOutOptional) = RPR_Envelope_Evaluate(envelope, time, samplerate, samplesRequested, valueOutOptional, dVdSOutOptional, ddVdSOutOptional, dddVdSOutOptional) - Reaper=5.62 + Reaper=5.987 Lua=5.3 - Get the effective envelope value at a given time position. samplesRequested is how long the caller expects until the next call to Envelope_Evaluate (often, the buffer block size). The return value is how many samples beyond that time position that the returned values are valid. + Get the effective envelope value at a given time position. + + samplesRequested is how long the caller expects until the next call to Envelope_Evaluate (often, the buffer block size). + + The return value is how many samples beyond that time position that the returned values are valid. + + dVdS is the change in value per sample (first derivative), ddVdS is the second derivative, dddVdS is the third derivative. + See [GetEnvelopeScalingMode](#GetEnvelopeScalingMode). @@ -5942,7 +5980,7 @@ number retval = reaper.GetMediaItemInfo_Value(MediaItem item, string parmname) Float RPR_GetMediaItemInfo_Value(MediaItem item, String parmname) - Reaper=5.95 + Reaper=6.01 Lua=5.3 @@ -5954,35 +5992,34 @@ MediaItem item - the MediaItem, whose value you want to have string parmname - the parametername, whose value you want to have: - - B_MUTE : bool * to muted state - - B_LOOPSRC : bool * to loop source - - B_ALLTAKESPLAY : bool * to all takes play - - B_UISEL : bool * to ui selected - - C_BEATATTACHMODE : char * to one char of beat attached mode, - - -1=def, 0=time, 1=allbeats, 2=beatsosonly - - C_LOCK : char * to one char of lock flags (&1 is locked, currently) - - D_VOL : double * of item volume (volume bar) - - D_POSITION : double * of item position (seconds) - - D_LENGTH : double * of item length (seconds) - - D_SNAPOFFSET : double * of item snap offset (seconds) - - D_FADEINLEN : double * of item fade in length (manual, seconds) - - D_FADEOUTLEN : double * of item fade out length (manual, seconds) - - D_FADEINDIR : double * of item fade in curve [-1; 1] - - D_FADEOUTDIR : double * of item fade out curve [-1; 1] - - D_FADEINLEN_AUTO : double * of item autofade in length (seconds, -1 for no autofade set) - - D_FADEOUTLEN_AUTO : double * of item autofade out length (seconds, -1 for no autofade set) - - C_FADEINSHAPE : int * to fadein shape, 0=linear, ... - - C_FADEOUTSHAPE : int * to fadeout shape - - I_GROUPID : int * to group ID (0 = no group) - - I_LASTY : int * to last y position in track (readonly) - - I_LASTH : int * to last height in track (readonly) - - I_CUSTOMCOLOR : int * : custom color, OS dependent color|0x100000 (i.e. ColorToNative(r,g,b)|0x100000). - - If you do not |0x100000, then it will not be used (though will store the color anyway). - - I_CURTAKE : int * to active take - - IP_ITEMNUMBER : int, item number within the track (read-only, returns the item number directly) - - F_FREEMODE_Y : float * to free mode y position (0..1) - - F_FREEMODE_H : float * to free mode height (0..1) - - P_TRACK : MediaTrack * (read only) + - B_MUTE : bool * : muted + - B_LOOPSRC : bool * : loop source + - B_ALLTAKESPLAY : bool * : all takes play + - B_UISEL : bool * : selected in arrange view + - C_BEATATTACHMODE : char * : item timebase, -1=track or project default, 1=beats (position, length, rate), 2=beats (position only). for auto-stretch timebase: C_BEATATTACHMODE=1, C_AUTOSTRETCH=1 + - C_AUTOSTRETCH: : char * : auto-stretch at project tempo changes, 1=enabled, requires C_BEATATTACHMODE=1 + - C_LOCK : char * : locked, &1=locked + - D_VOL : double * : item volume, 0=-inf, 0.5=-6dB, 1=+0dB, 2=+6dB, etc + - D_POSITION : double * : item position in seconds + - D_LENGTH : double * : item length in seconds + - D_SNAPOFFSET : double * : item snap offset in seconds + - D_FADEINLEN : double * : item manual fadein length in seconds + - D_FADEOUTLEN : double * : item manual fadeout length in seconds + - D_FADEINDIR : double * : item fadein curvature, -1..1 + - D_FADEOUTDIR : double * : item fadeout curvature, -1..1 + - D_FADEINLEN_AUTO : double * : item auto-fadein length in seconds, -1=no auto-fadein + - D_FADEOUTLEN_AUTO : double * : item auto-fadeout length in seconds, -1=no auto-fadeout + - C_FADEINSHAPE : int * : fadein shape, 0..6, 0=linear + - C_FADEOUTSHAPE : int * : fadeout shape, 0..6, 0=linear + - I_GROUPID : int * : group ID, 0=no group + - I_LASTY : int * : Y-position of track in pixels (read-only) + - I_LASTH : int * : height in track in pixels (read-only) + - I_CUSTOMCOLOR : int * : custom color, OS dependent color|0x100000 (i.e. ColorToNative(r,g,b)|0x100000). If you do not |0x100000, then it will not be used, but will store the color anyway) + - I_CURTAKE : int * : active take number + - IP_ITEMNUMBER : int, item number on this track (read-only, returns the item number directly) + - F_FREEMODE_Y : float * : free item positioning Y-position, 0=top of track, 1=bottom of track (will never be 1) + - F_FREEMODE_H : float * : free item positioning height, 0=no height, 1=full height of track (will never be 0) + - P_TRACK : MediaTrack * (read-only) ReaperApiFunctionsReference @@ -6203,22 +6240,22 @@ number retval = reaper.GetMediaItemTakeInfo_Value(MediaItem_Take take, string parmname) Float RPR_GetMediaItemTakeInfo_Value(MediaItem_Take take, String parmname) - Reaper=5.976 + Reaper=6.01 Lua=5.3 Get media item take numerical-value attributes. - D_STARTOFFS : double *, start offset in take of item - D_VOL : double *, take volume (negative if take polarity is flipped) - D_PAN : double *, take pan - D_PANLAW : double *, take pan law (-1.0=default, 0.5=-6dB, 1.0=+0dB, etc) - D_PLAYRATE : double *, take playrate (1.0=normal, 2.0=doublespeed, etc) - D_PITCH : double *, take pitch adjust (in semitones, 0.0=normal, +12 = one octave up, etc) - B_PPITCH, bool *, preserve pitch when changing rate - I_CHANMODE, int *, channel mode (0=normal, 1=revstereo, 2=downmix, 3=l, 4=r) - I_PITCHMODE, int *, pitch shifter mode, -1=proj default, otherwise high word=shifter low word = parameter - I_CUSTOMCOLOR : int *, custom color, OS dependent color|0x100000 (i.e. ColorToNative(r,g,b)|0x100000). If you do not |0x100000, then it will not be used (though will store the color anyway). - IP_TAKENUMBER : int, take number within the item (read-only, returns the take number directly) + D_STARTOFFS : double * : start offset in source media, in seconds + D_VOL : double * : take volume, 0=-inf, 0.5=-6dB, 1=+0dB, 2=+6dB, etc, negative if take polarity is flipped + D_PAN : double * : take pan, -1..1 + D_PANLAW : double * : take pan law, -1=default, 0.5=-6dB, 1.0=+0dB, etc + D_PLAYRATE : double * : take playback rate, 0.5=half speed, 1=normal, 2=double speed, etc + D_PITCH : double * : take pitch adjustment in semitones, -12=one octave down, 0=normal, +12=one octave up, etc + B_PPITCH : bool * : preserve pitch when changing playback rate + I_CHANMODE : int * : channel mode, 0=normal, 1=reverse stereo, 2=downmix, 3=left, 4=right + I_PITCHMODE : int * : pitch shifter mode, -1=projext default, otherwise high 2 bytes=shifter, low 2 bytes=parameter + I_CUSTOMCOLOR : int * : custom color, OS dependent color|0x100000 (i.e. ColorToNative(r,g,b)|0x100000). If you do not |0x100000, then it will not be used, but will store the color anyway) + IP_TAKENUMBER : int : take number (read-only, returns the take number directly) P_TRACK : pointer to MediaTrack (read-only) P_ITEM : pointer to MediaItem (read-only) P_SOURCE : PCM_source *. Note that if setting this, you should first retrieve the old source, set the new, THEN delete the old. @@ -6444,59 +6481,65 @@ number retval = reaper.GetMediaTrackInfo_Value(MediaTrack tr, string parmname) Float RPR_GetMediaTrackInfo_Value(MediaTrack tr, String parmname) - Reaper=5.982 + Reaper=6.01 Lua=5.3 Get track numerical-value attributes. - B_MUTE : bool * : mute flag - B_PHASE : bool * : invert track phase - IP_TRACKNUMBER : int : track number (returns zero if not found, -1 for master track) (read-only, returns the int directly) - I_SOLO : int * : 0=not soloed, 1=solo, 2=soloed in place. also: 5=solo-safe solo, 6=solo-safe soloed in place - I_FXEN : int * : 0=fx bypassed, nonzero = fx active - I_RECARM : int * : 0=not record armed, 1=record armed - I_RECINPUT : int * : record input. <0 = no input, 0..n = mono hardware input, 512+n = rearoute input, 1024 set for stereo input pair. 4096 set for MIDI input, if set, then low 6 bits represent channel (0=all, 1-16=only chan), then next 6 bits represent physical input (63=all, 62=VKB) - I_RECMODE : int * : record mode (0=input, 1=stereo out, 2=none, 3=stereo out w/latcomp, 4=midi output, 5=mono out, 6=mono out w/ lat comp, 7=midi overdub, 8=midi replace - I_RECMON : int * : record monitor (0=off, 1=normal, 2=not when playing (tapestyle)) - I_RECMONITEMS : int * : monitor items while recording (0=off, 1=on) - I_AUTOMODE : int * : track automation mode (0=trim/off, 1=read, 2=touch, 3=write, 4=latch) - I_NCHAN : int * : number of track channels, must be 2-64, even - I_SELECTED : int * : track selected? 0 or 1 - I_WNDH : int * : current TCP window height including envelopes (Read-only) - I_TCPH : int * : current TCP window height not including envelopes (Read-only) - I_TCPY : int * : current TCP window Y position relative to top of arrange view (Read-only) - I_FOLDERDEPTH : int * : folder depth change (0=normal, 1=track is a folder parent, -1=track is the last in the innermost folder, -2=track is the last in the innermost and next-innermost folders, etc - I_FOLDERCOMPACT : int * : folder compacting (only valid on folders), 0=normal, 1=small, 2=tiny children - I_MIDIHWOUT : int * : track midi hardware output index (>0 for disabled, low 5 bits are which channels (0=all, 1-16), next 5 bits are output device index (0-31)) - I_PERFFLAGS : int * : track perf flags (&1=no media buffering, &2=no anticipative FX) - I_CUSTOMCOLOR : int * : custom color, OS dependent color|0x100000 (i.e. ColorToNative(r,g,b)|0x100000). If you do not |0x100000, then it will not be used (though will store the color anyway). - I_HEIGHTOVERRIDE : int * : custom height override for TCP window. 0 for none, otherwise size in pixels + B_MUTE : bool * : muted + B_PHASE : bool * : track phase inverted + IP_TRACKNUMBER : int : track number 1-based, 0=not found, -1=master track (read-only, returns the int directly) + I_SOLO : int * : soloed, 0=not soloed, 1=soloed, 2=soloed in place, 5=safe soloed, 6=safe soloed in place + I_FXEN : int * : fx enabled, 0=bypassed, !0=fx active + I_RECARM : int * : record armed, 0=not record armed, 1=record armed + I_RECINPUT : int * : record input, <0=no input, 0..n=mono hardware input, 512+n=rearoute input, &1024=stereo input pair. &4096=MIDI input, if set then low 5 bits represent channel (0=all, 1-16=only chan), next 6 bits represent physical input (63=all, 62=VKB) + I_RECMODE : int * : record mode, 0=input, 1=stereo out, 2=none, 3=stereo out w/latency compensation, 4=midi output, 5=mono out, 6=mono out w/ latency compensation, 7=midi overdub, 8=midi replace + I_RECMON : int * : record monitoring, 0=off, 1=normal, 2=not when playing (tape style) + I_RECMONITEMS : int * : monitor items while recording, 0=off, 1=on + I_AUTOMODE : int * : track automation mode, 0=trim/off, 1=read, 2=touch, 3=write, 4=latch + I_NCHAN : int * : number of track channels, 2-64, even numbers only + I_SELECTED : int * : track selected, 0=unselected, 1=selected + I_WNDH : int * : current TCP window height in pixels including envelopes (read-only) + I_TCPH : int * : current TCP window height in pixels not including envelopes (read-only) + I_TCPY : int * : current TCP window Y-position in pixels relative to top of arrange view (read-only) + I_MCPX : int * : current MCP X-position in pixels relative to mixer container + I_MCPY : int * : current MCP Y-position in pixels relative to mixer container + I_MCPW : int * : current MCP width in pixels + I_MCPH : int * : current MCP height in pixels + I_FOLDERDEPTH : int * : folder depth change, 0=normal, 1=track is a folder parent, -1=track is the last in the innermost folder, -2=track is the last in the innermost and next-innermost folders, etc + I_FOLDERCOMPACT : int * : folder compacted state (only valid on folders), 0=normal, 1=small, 2=tiny children + I_MIDIHWOUT : int * : track midi hardware output index, <0=disabled, low 5 bits are which channels (0=all, 1-16), next 5 bits are output device index (0-31) + I_PERFFLAGS : int * : track performance flags, &1=no media buffering, &2=no anticipative FX + I_CUSTOMCOLOR : int * : custom color, OS dependent color|0x100000 (i.e. ColorToNative(r,g,b)|0x100000). If you do not |0x100000, then it will not be used, but will store the color anyway) + I_HEIGHTOVERRIDE : int * : custom height override for TCP window, 0 for none, otherwise size in pixels B_HEIGHTLOCK : bool * : track height lock (must set I_HEIGHTOVERRIDE before locking) - D_VOL : double * : trim volume of track (0 (-inf)..1 (+0dB) .. 2 (+6dB) etc ..) - D_PAN : double * : trim pan of track (-1..1) - D_WIDTH : double * : width of track (-1..1) - D_DUALPANL : double * : dualpan position 1 (-1..1), only if I_PANMODE==6 - D_DUALPANR : double * : dualpan position 2 (-1..1), only if I_PANMODE==6 - I_PANMODE : int * : pan mode (0 = classic 3.x, 3=new balance, 5=stereo pan, 6 = dual pan) - D_PANLAW : double * : pan law of track. >0 for project default, 1.0 for +0dB, etc - P_ENV:<envchunkname : read only, returns TrackEnvelope *. To get a specific TrackEnvelope, call with :<VOLENV, :<PANENV, etc appended to P_ENV. - B_SHOWINMIXER : bool * : show track panel in mixer -- do not use on master - B_SHOWINTCP : bool * : show track panel in tcp -- do not use on master + D_VOL : double * : trim volume of track, 0=-inf, 0.5=-6dB, 1=+0dB, 2=+6dB, etc + D_PAN : double * : trim pan of track, -1..1 + D_WIDTH : double * : width of track, -1..1 + D_DUALPANL : double * : dualpan position 1, -1..1, only if I_PANMODE==6 + D_DUALPANR : double * : dualpan position 2, -1..1, only if I_PANMODE==6 + I_PANMODE : int * : pan mode, 0=classic 3.x, 3=new balance, 5=stereo pan, 6=dual pan + D_PANLAW : double * : pan law of track, <0=project default, 1=+0dB, etc + P_ENV:<envchunkname : TrackEnvelope*, read only. Call with :<VOLENV, :<PANENV, etc appended. + B_SHOWINMIXER : bool * : track control panel visible in mixer (do not use on master track) + B_SHOWINTCP : bool * : track control panel visible in arrange view (do not use on master track) B_MAINSEND : bool * : track sends audio to parent - C_MAINSEND_OFFS : char * : track send to parent channel offset - B_FREEMODE : bool * : track free-mode enabled (requires UpdateTimeline() after changing etc) - C_BEATATTACHMODE : char * : char * to one char of beat attached mode, -1=def, 0=time, 1=allbeats, 2=beatsposonly - F_MCP_FXSEND_SCALE : float * : scale of fx+send area in MCP (0.0=smallest allowed, 1=max allowed) - F_MCP_SENDRGN_SCALE : float * : scale of send area as proportion of the fx+send total area (0=min allow, 1=max) + C_MAINSEND_OFFS : char * : channel offset of track send to parent + B_FREEMODE : bool * : track free item positioning enabled (call UpdateTimeline() after changing) + C_BEATATTACHMODE : char * : track timebase, -1=project default, 0=time, 1=beats (position, length, rate), 2=beats (position only) + F_MCP_FXSEND_SCALE : float * : scale of fx+send area in MCP (0=minimum allowed, 1=maximum allowed) + F_MCP_SENDRGN_SCALE : float * : scale of send area as proportion of the fx+send total area (0=minimum allowed, 1=maximum allowed) + I_PLAY_OFFSET_FLAG : int * : track playback offset state, &1=bypassed, &2=offset value is measured in samples (otherwise measured in seconds) + D_PLAY_OFFSET : double * : track playback offset, units depend on I_PLAY_OFFSET_FLAG P_PARTRACK : MediaTrack * : parent track (read-only) P_PROJECT : ReaProject * : parent project (read-only) - number retval - + number retval - the value of the requested attribute - MediaTrack tr - - string parmname - + MediaTrack tr - the MediaTrack-object, whose attribute you want to request + string parmname - the attribute, that you want to request, like D_VOL or B_SHOWINMIXER etc ReaperApiFunctionsReference @@ -7573,7 +7616,7 @@ GetSet_ArrangeView2 void GetSet_ArrangeView2(ReaProject* proj, bool isSet, int screen_x_start, int screen_x_end, double* start_timeOut, double* end_timeOut) GetSet_ArrangeView2(ReaProject proj, bool isSet, int screen_x_start, int screen_x_end, &start_time, &end_time) - number start_time retval, number end_time = reaper.GetSet_ArrangeView2(ReaProject proj, boolean isSet, integer screen_x_start, integer screen_x_end) + number start_time retval, number end_time = reaper.GetSet_ArrangeView2(ReaProject proj, boolean isSet, integer screen_x_start, integer screen_x_end, number start_time, number end_time) (ReaProject proj, Boolean isSet, Int screen_x_start, Int screen_x_end, Float start_timeOut, Float end_timeOut) = RPR_GetSet_ArrangeView2(proj, isSet, screen_x_start, screen_x_end, start_timeOut, end_timeOut) Reaper=5.62 @@ -7583,14 +7626,16 @@ Gets or sets the arrange view start/end time for screen coordinates. use screen_x_start=screen_x_end=0 to use the full arrange view's start/end time - start_time retval - - end_time - + number start_time retval - + number end_time - - proj - the project-number. 0 for the current project. Can also be a ReaProject-object, as returned by [EnumProjects](#EnumProjects) - isSet - - screen_x_start - - screen_x_end - + ReaProject proj - the project-number. 0 for the current project. Can also be a ReaProject-object, as returned by [EnumProjects](#EnumProjects) + boolean isSet - + integer screen_x_start - + integer screen_x_end - + number start_time - + number end_time - ReaperApiFunctionsReference @@ -7675,21 +7720,21 @@ number = reaper.GetSetAutomationItemInfo(TrackEnvelope env, integer autoitem_idx, string desc, number value, boolean is_set) Float RPR_GetSetAutomationItemInfo(TrackEnvelope env, Int autoitem_idx, String desc, Float value, Boolean is_set) - Reaper=5.975 + Reaper=6.01 Lua=5.3 Get or set automation item information. autoitem_idx=0 for the first automation item on an envelope, 1 for the second item, etc. desc can be any of the following: - D_POOL_ID: double *, automation item pool ID (as an integer); edits are propagated to all other automation items that share a pool ID - D_POSITION: double *, automation item timeline position in seconds - D_LENGTH: double *, automation item length in seconds - D_STARTOFFS: double *, automation item start offset in seconds - D_PLAYRATE: double *, automation item playback rate - D_BASELINE: double *, automation item baseline value in the range [0,1] - D_AMPLITUDE: double *, automation item amplitude in the range [-1,1] - D_LOOPSRC: double *, nonzero if the automation item contents are looped - D_UISEL: double *, nonzero if the automation item is selected in the arrange view - D_POOL_QNLEN : double *, automation item pooled source length in quarter notes (setting will affect all pooled instances) + D_POOL_ID : double * : automation item pool ID (as an integer); edits are propagated to all other automation items that share a pool ID + D_POSITION : double * : automation item timeline position in seconds + D_LENGTH : double * : automation item length in seconds + D_STARTOFFS : double * : automation item start offset in seconds + D_PLAYRATE : double * : automation item playback rate + D_BASELINE : double * : automation item baseline value in the range [0,1] + D_AMPLITUDE : double * : automation item amplitude in the range [-1,1] + D_LOOPSRC : double * : nonzero if the automation item contents are looped + D_UISEL : double * : nonzero if the automation item is selected in the arrange view + D_POOL_QNLEN : double * : automation item pooled source length in quarter notes (setting will affect all pooled instances) number - @@ -7822,7 +7867,7 @@ deprecated -- see [SetEnvelopeStateChunk](#SetEnvelopeStateChunk), [GetEnvelopeStateChunk](#GetEnvelopeStateChunk) - retval - + retval - str - @@ -7853,7 +7898,7 @@ deprecated -- see [SetItemStateChunk](#SetItemStateChunk), [GetItemStateChunk](#GetItemStateChunk) - retval - + retval - str - @@ -7882,7 +7927,7 @@ deprecated -- see [SetItemStateChunk](#SetItemStateChunk), [GetItemStateChunk](#GetItemStateChunk) - retval - + retval - str - @@ -8076,24 +8121,24 @@ number value = reaper.GetSetProjectInfo(ReaProject project, string desc, number value, boolean is_set) Float RPR_GetSetProjectInfo(ReaProject project, String desc, Float value, Boolean is_set) - Reaper=5.975 + Reaper=6.01 Lua=5.3 Get or set project information. - RENDER_SETTINGS: &(1|2)=0:master mix, &1=stems+master mix, &2=stems only, &4=multichannel tracks to multichannel files, &8=use render matrix, &16=tracks with only mono media to mono files, &32=selected media items; &64=selected media items via master + RENDER_SETTINGS : &(1|2)=0:master mix, &1=stems+master mix, &2=stems only, &4=multichannel tracks to multichannel files, &8=use render matrix, &16=tracks with only mono media to mono files, &32=selected media items, &64=selected media items via master RENDER_BOUNDSFLAG : 0=custom time bounds, 1=entire project, 2=time selection, 3=all project regions, 4=selected media items, 5=selected project regions - RENDER_CHANNELS: number of channels in rendered file - RENDER_SRATE: sample rate of rendered file (or 0 for project sample rate) + RENDER_CHANNELS : number of channels in rendered file + RENDER_SRATE : sample rate of rendered file (or 0 for project sample rate) RENDER_STARTPOS : render start time when RENDER_BOUNDSFLAG=0 RENDER_ENDPOS : render end time when RENDER_BOUNDSFLAG=0 - RENDER_TAILFLAG: apply render tail setting when rendering: &1=custom time bounds, &2=entire project, &4=time selection, &8=all project regions, &16=selected media items, &32=selected project regions - RENDER_TAILMS: tail length in ms to render (only used if RENDER_BOUNDSFLAG and RENDER_TAILFLAG are set) - RENDER_ADDTOPROJ: 1=add rendered files to project - RENDER_DITHER: &1=dither, &2=noise shaping, &4=dither stems, &8=noise shaping on stems - PROJECT_SRATE: samplerate (ignored unless PROJECT_SRATE_USE set) - PROJECT_SRATE_USE: set to 1 if project samplerate is used + RENDER_TAILFLAG : apply render tail setting when rendering: &1=custom time bounds, &2=entire project, &4=time selection, &8=all project regions, &16=selected media items, &32=selected project regions + RENDER_TAILMS : tail length in ms to render (only used if RENDER_BOUNDSFLAG and RENDER_TAILFLAG are set) + RENDER_ADDTOPROJ : 1=add rendered files to project + RENDER_DITHER : &1=dither, &2=noise shaping, &4=dither stems, &8=noise shaping on stems + PROJECT_SRATE : samplerate (ignored unless PROJECT_SRATE_USE set) + PROJECT_SRATE_USE : set to 1 if project samplerate is used number value - @@ -8125,7 +8170,8 @@ Get or set project information. - + + MARKER\_GUID:X : get the GUID (unique ID) of the marker or region with index X, where X is the index passed to EnumProjectMarkers, not necessarily the displayed number RECORD\_PATH: recording directory -- may be blank or a relative path, to get the effective path see [GetProjectPathEx](#GetProjectPathEx) RENDER\_FILE: render directory RENDER\_PATTERN: render file name (may contain wildcards) @@ -8315,7 +8361,7 @@ deprecated -- see [SetTrackStateChunk](#SetTrackStateChunk), [GetTrackStateChunk](#GetTrackStateChunk) - retval - + retval - str - @@ -8344,7 +8390,7 @@ deprecated -- see [SetTrackStateChunk](#SetTrackStateChunk), [GetTrackStateChunk](#GetTrackStateChunk) - retval - + retval - str - @@ -8549,7 +8595,7 @@ If position/source position are used to find marker position, their values are not updated. - retval - + retval - pos - srcpos - @@ -8609,7 +8655,7 @@ Get information about a specific FX parameter knob (see [CountTCPFXParms](#CountTCPFXParms)). - retval - + retval - fxindex - parmidx - @@ -8641,7 +8687,7 @@ finds the playrate and target length to insert this item stretched to a round power-of-2 number of bars, between 1/8 and 256 - retval - + retval - rate - targetlen - @@ -8674,7 +8720,7 @@ Get information about a tempo/time signature marker. See [CountTempoTimeSigMarkers](#CountTempoTimeSigMarkers), [SetTempoTimeSigMarker](#SetTempoTimeSigMarker), [AddTempoTimeSigMarker](#AddTempoTimeSigMarker), [DeleteTempoTimeSigMarker](#DeleteTempoTimeSigMarker). - retval - + retval - timepos - measurepos - beatpos - @@ -9335,7 +9381,7 @@ See [GetTrackSendUIMute](#GetTrackSendUIMute). - retval - + retval - mute - @@ -9365,7 +9411,7 @@ See [GetTrackSendUIVolPan](#GetTrackSendUIVolPan). - retval - + retval - volume - pan - @@ -9475,7 +9521,7 @@ send\_idx>=0 for hw outputs, >=nb\_of\_hw\_outputs for sends. See [GetTrackReceiveUIMute](#GetTrackReceiveUIMute). - retval - + retval - mute - @@ -9505,7 +9551,7 @@ send\_idx>=0 for hw outputs, >=nb\_of\_hw\_outputs for sends. See [GetTrackReceiveUIVolPan](#GetTrackReceiveUIVolPan). - retval - + retval - volume - pan - @@ -9548,7 +9594,7 @@ &1024=hide from MCP - retval - + retval - flags - @@ -9577,7 +9623,7 @@ Gets the RPPXML state of a track, returns true if successful. Undo flag is a performance/caching hint. - retval - + retval - str - @@ -9608,7 +9654,7 @@ - retval - + retval - mute - @@ -9637,7 +9683,7 @@ - retval - + retval - pan1 - pan2 - panmode - @@ -9668,7 +9714,7 @@ - retval - + retval - volume - pan - @@ -10495,7 +10541,7 @@ enumerates installed devices, returns GUID as a string - retval - + retval - string namestr - @@ -10581,7 +10627,7 @@ returns button count - retval - + retval - axes - povs - @@ -10668,7 +10714,7 @@ Returns false if the line is entirely offscreen. - retval - + retval - pX1 - pY1 - pX2 - @@ -11140,7 +11186,7 @@ Count the number of notes, CC events, and text/sysex events in a given MIDI item. - retval - + retval - notecnt - ccevtcnt - textsyxevtcnt - @@ -11421,14 +11467,24 @@ boolean retval, string buf = reaper.MIDI_GetAllEvts(MediaItem_Take take, string buf) (Boolean retval, MediaItem_Take take, String bufNeedBig, Int bufNeedBig_sz) = RPR_MIDI_GetAllEvts(take, bufNeedBig, bufNeedBig_sz) - Reaper=5.62 + Reaper=6.00 Lua=5.3 - Get all MIDI data. MIDI buffer is returned as a list of { int offset, char flag, int msglen, unsigned char msg\[\] }. offset: MIDI ticks from previous event, flag: &1=selected &2=muted, msglen: byte length of msg (usually 3), msg: the MIDI message. For tick intervals longer than a 32 bit word can represent, zero-length meta events may be placed between valid events. See [MIDI_SetAllEvts](#MIDI_SetAllEvts). + Get all MIDI data. MIDI buffer is returned as a list of { int offset, char flag, int msglen, unsigned char msg[] }. + + offset: MIDI ticks from previous event + flag: &1=selected &2=muted + flag high 4 bits for CC shape: &16=linear, &32=slow start/end, &16|32=fast start, &64=fast end, &64|16=bezier + msg: the MIDI message. + + A meta-event of type 0xF followed by 'CCBZ ' and 5 more bytes represents bezier curve data for the previous MIDI event: 1 byte for the bezier type (usually 0) and 4 bytes for the bezier tension as a float. + For tick intervals longer than a 32 bit word can represent, zero-length meta events may be placed between valid events. + + See [MIDI_SetAllEvts](#MIDI_SetAllEvts). - retval - + retval - buf - @@ -11457,7 +11513,7 @@ Get MIDI CC event properties. - retval - + retval - selected - muted - ppqpos - @@ -11478,6 +11534,37 @@ + + MIDI_GetCCShape + MIDI_GetCCShape + bool MIDI_GetCCShape(MediaItem_Take* take, int ccidx, int* shapeOut, double* beztensionOut) + bool MIDI_GetCCShape(MediaItem_Take take, int ccidx, int &shape, &beztension) + boolean retval, number shape, number beztension = reaper.MIDI_GetCCShape(MediaItem_Take take, integer ccidx) + (Boolean retval, MediaItem_Take take, Int ccidx, Int shapeOut, Float beztensionOut) = RPR_MIDI_GetCCShape(take, ccidx, shapeOut, beztensionOut) + + Reaper=6.00 + Lua=5.3 + + + Get CC shape and bezier tension. See [MIDI_GetCC](#MIDI_GetCC), [MIDI_SetCCShape](#MIDI_SetCCShape) + + + boolean retval - + number shape - + number beztension - + + + MediaItem_Take take - + integer ccidx - + + ReaperApiFunctionsReference + + + MIDI Management + + + + MIDI_GetEvt MIDI_GetEvt @@ -11493,7 +11580,7 @@ Get MIDI event properties. - retval - + retval - selected - muted - ppqpos - @@ -11526,7 +11613,7 @@ Returns the most recent MIDI editor grid size for this MIDI take, in QN. Swing is between 0 and 1. Note length is 0 if it follows the grid size. - retval - + retval - swing - noteLen - @@ -11556,7 +11643,7 @@ Get a string that only changes when the MIDI data changes. If notesonly==true, then the string changes only when the MIDI notes change. See [MIDI_GetTrackHash](#MIDI_GetTrackHash) - retval - + retval - hash - @@ -11586,7 +11673,7 @@ Get MIDI note properties. - retval - + retval - selected - muted - startppqpos - @@ -11796,7 +11883,7 @@ Get the active scale in the media source, if any. root 0=C, 1=C#, etc. scale &0x1=root, &0x2=minor 2nd, &0x4=major 2nd, &0x8=minor 3rd, &0xF=fourth, etc. - retval - + retval - root - scale - name - @@ -11820,14 +11907,16 @@ boolean retval, optional boolean selected, optional boolean muted, optional number ppqpos, optional number type, optional string msg = reaper.MIDI_GetTextSysexEvt(MediaItem_Take take, integer textsyxevtidx, optional boolean selected, optional boolean muted, optional number ppqpos, optional number type, optional string msg) (Boolean retval, MediaItem_Take take, Int textsyxevtidx, Boolean selectedOutOptional, Boolean mutedOutOptional, Float ppqposOutOptional, Int typeOutOptional, String msgOptional, Int msgOptional_sz) = RPR_MIDI_GetTextSysexEvt(take, textsyxevtidx, selectedOutOptional, mutedOutOptional, ppqposOutOptional, typeOutOptional, msgOptional, msgOptional_sz) - Reaper=5.62 + Reaper=6.00 Lua=5.3 - - Get MIDI meta-event properties. Allowable types are -1:sysex (msg should not include bounding F0..F7), 1-7:MIDI text event types. + + Get MIDI meta-event properties. Allowable types are -1:sysex (msg should not include bounding F0..F7), 1-14:MIDI text event types, 15=REAPER notation event. For all other meta-messages, type is returned as -2 and msg returned as all zeroes. + + See [MIDI_GetEvt](#MIDI_GetEvt). - retval - + retval - selected - muted - ppqpos - @@ -11861,7 +11950,7 @@ Get a string that only changes when the MIDI data changes. If notesonly==true, then the string changes only when the MIDI notes change. See [MIDI_GetHash](#MIDI_GetHash) - retval - + retval - hash - @@ -11987,11 +12076,11 @@ boolean = reaper.MIDI_InsertTextSysexEvt(MediaItem_Take take, boolean selected, boolean muted, number ppqpos, integer type, string bytestr) Boolean RPR_MIDI_InsertTextSysexEvt(MediaItem_Take take, Boolean selected, Boolean muted, Float ppqpos, Int type, String bytestr, Int bytestr_sz) - Reaper=5.62 + Reaper=6.00 Lua=5.3 - Insert a new MIDI text or sysex event. Allowable types are -1:sysex (msg should not include bounding F0..F7), 1-7:MIDI text event types. + Insert a new MIDI text or sysex event. Allowable types are -1:sysex (msg should not include bounding F0..F7), 1-14:MIDI text event types, 15=REAPER notation event. boolean - @@ -12068,11 +12157,21 @@ boolean = reaper.MIDI_SetAllEvts(MediaItem_Take take, string buf) Boolean RPR_MIDI_SetAllEvts(MediaItem_Take take, String buf, Int buf_sz) - Reaper=5.62 + Reaper=6.00 Lua=5.3 - Set all MIDI data. MIDI buffer is passed in as a list of { int offset, char flag, int msglen, unsigned char msg\[\] }. offset: MIDI ticks from previous event, flag: &1=selected &2=muted, msglen: byte length of msg (usually 3), msg: the MIDI message. For tick intervals longer than a 32 bit word can represent, zero-length meta events may be placed between valid events. See [MIDI_GetAllEvts](#MIDI_GetAllEvts). + Set all MIDI data. MIDI buffer is passed in as a list of { int offset, char flag, int msglen, unsigned char msg[] }. + + offset: MIDI ticks from previous event + flag: &1=selected &2=muted + flag high 4 bits for CC shape: &16=linear, &32=slow start/end, &16|32=fast start, &64=fast end, &64|16=bezier + msg: the MIDI message. + + A meta-event of type 0xF followed by 'CCBZ ' and 5 more bytes represents bezier curve data for the previous MIDI event: 1 byte for the bezier type (usually 0) and 4 bytes for the bezier tension as a float. + For tick intervals longer than a 32 bit word can represent, zero-length meta events may be placed between valid events. + + See [MIDI_GetAllEvts](#MIDI_GetAllEvts). boolean - @@ -12126,6 +12225,38 @@ + + MIDI_SetCCShape + MIDI_SetCCShape + bool MIDI_SetCCShape(MediaItem_Take* take, int ccidx, int shape, double beztension, const bool* noSortInOptional) + bool MIDI_SetCCShape(MediaItem_Take take, int ccidx, int shape, beztension, optional bool noSortIn) + boolean reaper.MIDI_SetCCShape(MediaItem_Take take, integer ccidx, integer shape, number beztension, optional boolean noSortIn) + Boolean RPR_MIDI_SetCCShape(MediaItem_Take take, Int ccidx, Int shape, Float beztension, const bool noSortInOptional) + + Reaper=6.00 + Lua=5.3 + + + Set CC shape and bezier tension. set noSort if setting multiple events, then call MIDI_Sort when done. See [MIDI_SetCC](#MIDI_SetCC), [MIDI_GetCCShape](#MIDI_GetCCShape) + + + boolean retval - + + + MediaItem_Take take - + integer ccidx - + integer shape - + number beztension - + optional boolean noSortIn - + + ReaperApiFunctionsReference + + + MIDI Management + + + + MIDI_SetEvt MIDI_SetEvt @@ -12235,11 +12366,11 @@ boolean = reaper.MIDI_SetTextSysexEvt(MediaItem_Take take, integer textsyxevtidx, optional boolean selectedIn, optional boolean mutedIn, optional number ppqposIn, optional number typeIn, optional string msg, optional boolean noSortIn) Boolean RPR_MIDI_SetTextSysexEvt(MediaItem_Take take, Int textsyxevtidx, const bool selectedInOptional, const bool mutedInOptional, const double ppqposInOptional, const int typeInOptional, String msgOptional, Int msgOptional_sz, const bool noSortInOptional) - Reaper=5.62 + Reaper=6.00 Lua=5.3 - Set MIDI text or sysex event properties. Properties passed as NULL will not be set. Allowable types are -1:sysex (msg should not include bounding F0..F7), 1-7:MIDI text event types. set noSort if setting multiple events, then call MIDI_Sort when done. + Set MIDI text or sysex event properties. Properties passed as NULL will not be set. Allowable types are -1:sysex (msg should not include bounding F0..F7), 1-14:MIDI text event types, 15=REAPER notation event. set noSort if setting multiple events, then call MIDI_Sort when done. boolean - @@ -13404,7 +13535,7 @@ If a section/reverse block, retrieves offset/len/reverse. return true if success - retval - + retval - offs - len - rev - @@ -13525,6 +13656,38 @@ helperfunctions, create, recursive, directory + + reduce_open_files + reduce_open_files + int reduce_open_files(int flags) + int reduce_open_files(int flags) + integer reaper.reduce_open_files(integer flags) + Int RPR_reduce_open_files(Int flags) + + Reaper=6.00 + Lua=5.3 + + + garbage-collects extra open files and closes them. if flags has 1 set, this is done incrementally (call this from a regular timer, if desired). if flags has 2 set, files are aggressively closed (they may need to be re-opened very soon). + + returns number of files closed by this call. + + + integer - the number of closed files + + + integer flags - influences, how the garbage collection shall be + - &1, incrementally + - &2, aggressively(files need to be reopened after that, if needed) + + ReaperApiFunctionsReference + + + Api-Helper-Functions + + helperfunctions, reduce, open files + + RefreshToolbar RefreshToolbar @@ -14337,37 +14500,38 @@ boolean = reaper.SetMediaItemInfo_Value(MediaItem item, string parmname, number newvalue) Boolean RPR_SetMediaItemInfo_Value(MediaItem item, String parmname, Float newvalue) - Reaper=5.62 + Reaper=6.01 Lua=5.3 Set media item numerical-value attributes. - B_MUTE : bool * to muted state - B_LOOPSRC : bool * to loop source - B_ALLTAKESPLAY : bool * to all takes play - B_UISEL : bool * to ui selected - C_BEATATTACHMODE : char * to one char of beat attached mode, -1=def, 0=time, 1=allbeats, 2=beatsosonly - C_LOCK : char * to one char of lock flags (&1 is locked, currently) - D_VOL : double * of item volume (volume bar) - D_POSITION : double * of item position (seconds) - D_LENGTH : double * of item length (seconds) - D_SNAPOFFSET : double * of item snap offset (seconds) - D_FADEINLEN : double * of item fade in length (manual, seconds) - D_FADEOUTLEN : double * of item fade out length (manual, seconds) - D_FADEINDIR : double * of item fade in curve [-1; 1] - D_FADEOUTDIR : double * of item fade out curve [-1; 1] - D_FADEINLEN_AUTO : double * of item autofade in length (seconds, -1 for no autofade set) - D_FADEOUTLEN_AUTO : double * of item autofade out length (seconds, -1 for no autofade set) - C_FADEINSHAPE : int * to fadein shape, 0=linear, ... - C_FADEOUTSHAPE : int * to fadeout shape - I_GROUPID : int * to group ID (0 = no group) - I_LASTY : int * to last y position in track (readonly) - I_LASTH : int * to last height in track (readonly) - I_CUSTOMCOLOR : int * : custom color, OS dependent color|0x100000 (i.e. ColorToNative(r,g,b)|0x100000). If you do not |0x100000, then it will not be used (though will store the color anyway). - I_CURTAKE : int * to active take - IP_ITEMNUMBER : int, item number within the track (read-only, returns the item number directly) - F_FREEMODE_Y : float * to free mode y position (0..1) - F_FREEMODE_H : float * to free mode height (0..1) + B_MUTE : bool * : muted + B_LOOPSRC : bool * : loop source + B_ALLTAKESPLAY : bool * : all takes play + B_UISEL : bool * : selected in arrange view + C_BEATATTACHMODE : char * : item timebase, -1=track or project default, 1=beats (position, length, rate), 2=beats (position only). for auto-stretch timebase: C_BEATATTACHMODE=1, C_AUTOSTRETCH=1 + C_AUTOSTRETCH: : char * : auto-stretch at project tempo changes, 1=enabled, requires C_BEATATTACHMODE=1 + C_LOCK : char * : locked, &1=locked + D_VOL : double * : item volume, 0=-inf, 0.5=-6dB, 1=+0dB, 2=+6dB, etc + D_POSITION : double * : item position in seconds + D_LENGTH : double * : item length in seconds + D_SNAPOFFSET : double * : item snap offset in seconds + D_FADEINLEN : double * : item manual fadein length in seconds + D_FADEOUTLEN : double * : item manual fadeout length in seconds + D_FADEINDIR : double * : item fadein curvature, -1..1 + D_FADEOUTDIR : double * : item fadeout curvature, -1..1 + D_FADEINLEN_AUTO : double * : item auto-fadein length in seconds, -1=no auto-fadein + D_FADEOUTLEN_AUTO : double * : item auto-fadeout length in seconds, -1=no auto-fadeout + C_FADEINSHAPE : int * : fadein shape, 0..6, 0=linear + C_FADEOUTSHAPE : int * : fadeout shape, 0..6, 0=linear + I_GROUPID : int * : group ID, 0=no group + I_LASTY : int * : Y-position of track in pixels (read-only) + I_LASTH : int * : height in track in pixels (read-only) + I_CUSTOMCOLOR : int * : custom color, OS dependent color|0x100000 (i.e. ColorToNative(r,g,b)|0x100000). If you do not |0x100000, then it will not be used, but will store the color anyway) + I_CURTAKE : int * : active take number + IP_ITEMNUMBER : int, item number on this track (read-only, returns the item number directly) + F_FREEMODE_Y : float * : free item positioning Y-position, 0=top of track, 1=bottom of track (will never be 1) + F_FREEMODE_H : float * : free item positioning height, 0=no height, 1=full height of track (will never be 0) boolean - @@ -14510,22 +14674,22 @@ boolean = reaper.SetMediaItemTakeInfo_Value(MediaItem_Take take, string parmname, number newvalue) Boolean RPR_SetMediaItemTakeInfo_Value(MediaItem_Take take, String parmname, Float newvalue) - Reaper=5.976 + Reaper=6.01 Lua=5.3 Set media item take numerical-value attributes. - D_STARTOFFS : double *, start offset in take of item - D_VOL : double *, take volume (negative if take polarity is flipped) - D_PAN : double *, take pan - D_PANLAW : double *, take pan law (-1.0=default, 0.5=-6dB, 1.0=+0dB, etc) - D_PLAYRATE : double *, take playrate (1.0=normal, 2.0=doublespeed, etc) - D_PITCH : double *, take pitch adjust (in semitones, 0.0=normal, +12 = one octave up, etc) - B_PPITCH, bool *, preserve pitch when changing rate - I_CHANMODE, int *, channel mode (0=normal, 1=revstereo, 2=downmix, 3=l, 4=r) - I_PITCHMODE, int *, pitch shifter mode, -1=proj default, otherwise high word=shifter low word = parameter - I_CUSTOMCOLOR : int *, custom color, OS dependent color|0x100000 (i.e. ColorToNative(r,g,b)|0x100000). If you do not |0x100000, then it will not be used (though will store the color anyway). - IP_TAKENUMBER : int, take number within the item (read-only, returns the take number directly) + D_STARTOFFS : double * : start offset in source media, in seconds + D_VOL : double * : take volume, 0=-inf, 0.5=-6dB, 1=+0dB, 2=+6dB, etc, negative if take polarity is flipped + D_PAN : double * : take pan, -1..1 + D_PANLAW : double * : take pan law, -1=default, 0.5=-6dB, 1.0=+0dB, etc + D_PLAYRATE : double * : take playback rate, 0.5=half speed, 1=normal, 2=double speed, etc + D_PITCH : double * : take pitch adjustment in semitones, -12=one octave down, 0=normal, +12=one octave up, etc + B_PPITCH : bool * : preserve pitch when changing playback rate + I_CHANMODE : int * : channel mode, 0=normal, 1=reverse stereo, 2=downmix, 3=left, 4=right + I_PITCHMODE : int * : pitch shifter mode, -1=projext default, otherwise high 2 bytes=shifter, low 2 bytes=parameter + I_CUSTOMCOLOR : int * : custom color, OS dependent color|0x100000 (i.e. ColorToNative(r,g,b)|0x100000). If you do not |0x100000, then it will not be used, but will store the color anyway) + IP_TAKENUMBER : int : take number (read-only, returns the take number directly) boolean - @@ -14551,50 +14715,56 @@ boolean = reaper.SetMediaTrackInfo_Value(MediaTrack tr, string parmname, number newvalue) Boolean RPR_SetMediaTrackInfo_Value(MediaTrack tr, String parmname, Float newvalue) - Reaper=5.982 + Reaper=6.01 Lua=5.3 Set track numerical-value attributes. - B_MUTE : bool * : mute flag - B_PHASE : bool * : invert track phase - IP_TRACKNUMBER : int : track number (returns zero if not found, -1 for master track) (read-only, returns the int directly) - I_SOLO : int * : 0=not soloed, 1=solo, 2=soloed in place. also: 5=solo-safe solo, 6=solo-safe soloed in place - I_FXEN : int * : 0=fx bypassed, nonzero = fx active - I_RECARM : int * : 0=not record armed, 1=record armed - I_RECINPUT : int * : record input. <0 = no input, 0..n = mono hardware input, 512+n = rearoute input, 1024 set for stereo input pair. 4096 set for MIDI input, if set, then low 6 bits represent channel (0=all, 1-16=only chan), then next 6 bits represent physical input (63=all, 62=VKB) - I_RECMODE : int * : record mode (0=input, 1=stereo out, 2=none, 3=stereo out w/latcomp, 4=midi output, 5=mono out, 6=mono out w/ lat comp, 7=midi overdub, 8=midi replace - I_RECMON : int * : record monitor (0=off, 1=normal, 2=not when playing (tapestyle)) - I_RECMONITEMS : int * : monitor items while recording (0=off, 1=on) - I_AUTOMODE : int * : track automation mode (0=trim/off, 1=read, 2=touch, 3=write, 4=latch) - I_NCHAN : int * : number of track channels, must be 2-64, even - I_SELECTED : int * : track selected? 0 or 1 - I_WNDH : int * : current TCP window height including envelopes (Read-only) - I_TCPH : int * : current TCP window height not including envelopes (Read-only) - I_TCPY : int * : current TCP window Y position relative to top of arrange view (Read-only) - I_FOLDERDEPTH : int * : folder depth change (0=normal, 1=track is a folder parent, -1=track is the last in the innermost folder, -2=track is the last in the innermost and next-innermost folders, etc - I_FOLDERCOMPACT : int * : folder compacting (only valid on folders), 0=normal, 1=small, 2=tiny children - I_MIDIHWOUT : int * : track midi hardware output index (>0 for disabled, low 5 bits are which channels (0=all, 1-16), next 5 bits are output device index (0-31)) - I_PERFFLAGS : int * : track perf flags (&1=no media buffering, &2=no anticipative FX) - I_CUSTOMCOLOR : int * : custom color, OS dependent color|0x100000 (i.e. ColorToNative(r,g,b)|0x100000). If you do not |0x100000, then it will not be used (though will store the color anyway). - I_HEIGHTOVERRIDE : int * : custom height override for TCP window. 0 for none, otherwise size in pixels + B_MUTE : bool * : muted + B_PHASE : bool * : track phase inverted + IP_TRACKNUMBER : int : track number 1-based, 0=not found, -1=master track (read-only, returns the int directly) + I_SOLO : int * : soloed, 0=not soloed, 1=soloed, 2=soloed in place, 5=safe soloed, 6=safe soloed in place + I_FXEN : int * : fx enabled, 0=bypassed, !0=fx active + I_RECARM : int * : record armed, 0=not record armed, 1=record armed + I_RECINPUT : int * : record input, <0=no input, 0..n=mono hardware input, 512+n=rearoute input, &1024=stereo input pair. &4096=MIDI input, if set then low 5 bits represent channel (0=all, 1-16=only chan), next 6 bits represent physical input (63=all, 62=VKB) + I_RECMODE : int * : record mode, 0=input, 1=stereo out, 2=none, 3=stereo out w/latency compensation, 4=midi output, 5=mono out, 6=mono out w/ latency compensation, 7=midi overdub, 8=midi replace + I_RECMON : int * : record monitoring, 0=off, 1=normal, 2=not when playing (tape style) + I_RECMONITEMS : int * : monitor items while recording, 0=off, 1=on + I_AUTOMODE : int * : track automation mode, 0=trim/off, 1=read, 2=touch, 3=write, 4=latch + I_NCHAN : int * : number of track channels, 2-64, even numbers only + I_SELECTED : int * : track selected, 0=unselected, 1=selected + I_WNDH : int * : current TCP window height in pixels including envelopes (read-only) + I_TCPH : int * : current TCP window height in pixels not including envelopes (read-only) + I_TCPY : int * : current TCP window Y-position in pixels relative to top of arrange view (read-only) + I_MCPX : int * : current MCP X-position in pixels relative to mixer container + I_MCPY : int * : current MCP Y-position in pixels relative to mixer container + I_MCPW : int * : current MCP width in pixels + I_MCPH : int * : current MCP height in pixels + I_FOLDERDEPTH : int * : folder depth change, 0=normal, 1=track is a folder parent, -1=track is the last in the innermost folder, -2=track is the last in the innermost and next-innermost folders, etc + I_FOLDERCOMPACT : int * : folder compacted state (only valid on folders), 0=normal, 1=small, 2=tiny children + I_MIDIHWOUT : int * : track midi hardware output index, <0=disabled, low 5 bits are which channels (0=all, 1-16), next 5 bits are output device index (0-31) + I_PERFFLAGS : int * : track performance flags, &1=no media buffering, &2=no anticipative FX + I_CUSTOMCOLOR : int * : custom color, OS dependent color|0x100000 (i.e. ColorToNative(r,g,b)|0x100000). If you do not |0x100000, then it will not be used, but will store the color anyway) + I_HEIGHTOVERRIDE : int * : custom height override for TCP window, 0 for none, otherwise size in pixels B_HEIGHTLOCK : bool * : track height lock (must set I_HEIGHTOVERRIDE before locking) - D_VOL : double * : trim volume of track (0 (-inf)..1 (+0dB) .. 2 (+6dB) etc ..) - D_PAN : double * : trim pan of track (-1..1) - D_WIDTH : double * : width of track (-1..1) - D_DUALPANL : double * : dualpan position 1 (-1..1), only if I_PANMODE==6 - D_DUALPANR : double * : dualpan position 2 (-1..1), only if I_PANMODE==6 - I_PANMODE : int * : pan mode (0 = classic 3.x, 3=new balance, 5=stereo pan, 6 = dual pan) - D_PANLAW : double * : pan law of track. >0 for project default, 1.0 for +0dB, etc - P_ENV:<envchunkname : read only, returns TrackEnvelope *. To get a specific TrackEnvelope, call with :<VOLENV, :<PANENV, etc appended. - B_SHOWINMIXER : bool * : show track panel in mixer -- do not use on master - B_SHOWINTCP : bool * : show track panel in tcp -- do not use on master + D_VOL : double * : trim volume of track, 0=-inf, 0.5=-6dB, 1=+0dB, 2=+6dB, etc + D_PAN : double * : trim pan of track, -1..1 + D_WIDTH : double * : width of track, -1..1 + D_DUALPANL : double * : dualpan position 1, -1..1, only if I_PANMODE==6 + D_DUALPANR : double * : dualpan position 2, -1..1, only if I_PANMODE==6 + I_PANMODE : int * : pan mode, 0=classic 3.x, 3=new balance, 5=stereo pan, 6=dual pan + D_PANLAW : double * : pan law of track, <0=project default, 1=+0dB, etc + P_ENV:<envchunkname : TrackEnvelope*, read only. Call with :<VOLENV, :<PANENV, etc appended. + B_SHOWINMIXER : bool * : track control panel visible in mixer (do not use on master track) + B_SHOWINTCP : bool * : track control panel visible in arrange view (do not use on master track) B_MAINSEND : bool * : track sends audio to parent - C_MAINSEND_OFFS : char * : track send to parent channel offset - B_FREEMODE : bool * : track free-mode enabled (requires UpdateTimeline() after changing etc) - C_BEATATTACHMODE : char * : char * to one char of beat attached mode, -1=def, 0=time, 1=allbeats, 2=beatsposonly - F_MCP_FXSEND_SCALE : float * : scale of fx+send area in MCP (0.0=smallest allowed, 1=max allowed) - F_MCP_SENDRGN_SCALE : float * : scale of send area as proportion of the fx+send total area (0=min allow, 1=max) + C_MAINSEND_OFFS : char * : channel offset of track send to parent + B_FREEMODE : bool * : track free item positioning enabled (call UpdateTimeline() after changing) + C_BEATATTACHMODE : char * : track timebase, -1=project default, 0=time, 1=beats (position, length, rate), 2=beats (position only) + F_MCP_FXSEND_SCALE : float * : scale of fx+send area in MCP (0=minimum allowed, 1=maximum allowed) + F_MCP_SENDRGN_SCALE : float * : scale of send area as proportion of the fx+send total area (0=minimum allowed, 1=maximum allowed) + I_PLAY_OFFSET_FLAG : int * : track playback offset state, &1=bypassed, &2=offset value is measured in samples (otherwise measured in seconds) + D_PLAY_OFFSET : double * : track playback offset, units depend on I_PLAY_OFFSET_FLAG boolean - @@ -15887,7 +16057,7 @@ Note: only works with FX that support Cockos VST extensions. - retval - + retval - buf - @@ -15919,7 +16089,7 @@ Note: only works with FX that support Cockos VST extensions. - retval - + retval - buf - @@ -16096,7 +16266,7 @@ - retval - + retval - buf - @@ -16156,7 +16326,7 @@ - retval - + retval - buf - @@ -16186,7 +16356,7 @@ sets the number of input/output pins for FX if available, returns plug-in type or -1 on error - retval - + retval - inputPins - outputPins - @@ -16217,7 +16387,7 @@ gets plug-in specific named configuration value (returns true on success) - retval - + retval - buf - @@ -16306,7 +16476,7 @@ - retval - + retval - minval - maxval - @@ -16338,7 +16508,7 @@ - retval - + retval - step - smallstep - largestep - @@ -16372,7 +16542,7 @@ - retval - + retval - minval - maxval - midval - @@ -16405,7 +16575,7 @@ - retval - + retval - buf - @@ -16466,7 +16636,7 @@ gets the effective channel mapping bitmask for a particular pin. high32OutOptional will be set to the high 32 bits - retval - + retval - high32 - @@ -16498,7 +16668,7 @@ Get the name of the preset currently showing in the REAPER dropdown, or the full path to a factory preset file for VST3 plug-ins (.vstpreset). Returns false if the current FX parameters do not exactly match the preset (in other words, if the user loaded the preset but moved the knobs afterward). See [TakeFX_SetPreset](#TakeFX_SetPreset). - retval - + retval - presetname - @@ -16528,7 +16698,7 @@ Returns current preset index, or -1 if error. numberOfPresetsOut will be set to total number of presets available. See [TakeFX_SetPresetByIndex](#TakeFX_SetPresetByIndex) - retval - + retval - numberOfPresets - @@ -16905,16 +17075,19 @@ boolean retval, string name = reaper.ThemeLayout_GetLayout(string section, integer idx) (Boolean retval, String section, Int idx, String nameOut, Int nameOut_sz) = RPR_ThemeLayout_GetLayout(section, idx, nameOut, nameOut_sz) - Reaper=5.974 + Reaper=6.00 Lua=5.3 Gets theme layout information. - section can be 'global' for global layout override, 'seclist' to enumerate a list of layout sections, otherwise a layout section such as 'mcp', 'tcp', 'trans', etc. - idx can be -1 to query the current value, -2 to get the description of the section (if not global), or 0..x. - - returns false if failed. + section can be 'global' for global layout override, 'seclist' to enumerate a list of layout sections, otherwise a layout section such as 'mcp', 'tcp', 'trans', etc. + idx can be + -1 to query the current value, + -2 to get the description of the section (if not global), + -3 will return the current context DPI-scaling (256=normal, 512=retina, etc), or 0..x. + + returns false if failed. boolean retval - @@ -17218,7 +17391,7 @@ if cdenom is non-NULL, will be set to the current time signature denominator. - retval - + retval - measures - cml - fullbeats - @@ -17280,7 +17453,7 @@ Gets project framerate, and optionally whether it is drop-frame timecode - retval - + retval - dropFrame - @@ -17337,7 +17510,7 @@ Get the QN position and time signature information for the start of a measure. Return the time in seconds of the measure start. - retval - + retval - qn_start - qn_end - timesig_num - @@ -17371,7 +17544,7 @@ Fills in a string representing the active metronome pattern. For example, in a 7/8 measure divided 3+4, the pattern might be "1221222". The length of the string is the time signature numerator, and the function returns the time signature denominator. - retval - + retval - pattern - @@ -17432,7 +17605,7 @@ Find which measure the given QN position falls in. - retval - + retval - qnMeasureStart - qnMeasureEnd - @@ -17814,7 +17987,7 @@ Note: only works with FX that support Cockos VST extensions. - retval - + retval - buf - @@ -17846,7 +18019,7 @@ Note: only works with FX that support Cockos VST extensions. - retval - + retval - buf - @@ -18061,7 +18234,7 @@ See [TrackFX_GetEQ](#TrackFX_GetEQ), [TrackFX_SetEQParam](#TrackFX_SetEQParam), [TrackFX_GetEQBandEnabled](#TrackFX_GetEQBandEnabled), [TrackFX_SetEQBandEnabled](#TrackFX_SetEQBandEnabled). - retval - + retval - bandtype - bandidx - paramtype - @@ -18124,7 +18297,7 @@ - retval - + retval - buf - @@ -18184,7 +18357,7 @@ - retval - + retval - buf - @@ -18242,7 +18415,7 @@ sets the number of input/output pins for FX if available, returns plug-in type or -1 on error - retval - + retval - inputPins - outputPins - @@ -18362,7 +18535,7 @@ - retval - + retval - minval - maxval - @@ -18394,7 +18567,7 @@ - retval - + retval - step - smallstep - largestep - @@ -18428,7 +18601,7 @@ - retval - + retval - minval - maxval - midval - @@ -18461,7 +18634,7 @@ - retval - + retval - buf - @@ -18522,7 +18695,7 @@ gets the effective channel mapping bitmask for a particular pin. high32OutOptional will be set to the high 32 bits - retval - + retval - high32 - @@ -18554,7 +18727,7 @@ Get the name of the preset currently showing in the REAPER dropdown, or the full path to a factory preset file for VST3 plug-ins (.vstpreset). Returns false if the current FX parameters do not exactly match the preset (in other words, if the user loaded the preset but moved the knobs afterward). See [TrackFX_SetPreset](#TrackFX_SetPreset). - retval - + retval - presetname - @@ -18584,7 +18757,7 @@ Returns current preset index, or -1 if error. numberOfPresetsOut will be set to total number of presets available. See [TrackFX_SetPresetByIndex](#TrackFX_SetPresetByIndex) - retval - + retval - numberOfPresets - @@ -20328,7 +20501,7 @@ \[BR\] Get envelope point by id (zero-based) from the envelope object allocated with [BR_EnvAlloc](#BR_EnvAlloc). Returns true on success. - retval - + retval - position - value - shape - @@ -20683,7 +20856,7 @@ \[BR\] Get currently loaded image resource and it's flags for a given item. Returns false if there is no image resource set. To set image resource, see [BR_SetMediaItemImageResource](#BR_SetMediaItemImageResource). - retval - + retval - image - imageFlags - @@ -20744,7 +20917,7 @@ To set source properties, see [BR_SetMediaSourceProperties](#BR_SetMediaSourceProperties). - retval - + retval - section - start - length - @@ -21001,7 +21174,7 @@ [BR] Get MIDI take pool GUID as a string (guidStringOut_sz should be at least 64). Returns true if take is pooled. - retval - + retval - guidString - @@ -21031,7 +21204,7 @@ [BR] Get "ignore project tempo" information for MIDI take. Returns true if take can ignore project tempo (no matter if it's actually ignored), otherwise false. - retval - + retval - ignoreProjTempo - bpm - num - @@ -21116,7 +21289,7 @@ \[BR\] Returns envelope that was captured with the last call to [BR_GetMouseCursorContext](#BR_GetMouseCursorContext). In case the envelope belongs to take, takeEnvelope will be true. - retval - + retval - takeEnvelope - ReaperApiFunctionsReference @@ -21177,7 +21350,7 @@ Note: due to API limitations, if mouse is over inline MIDI editor with some note rows hidden, noteRow will be -1 - retval - + retval - inlineEditor - noteRow - ccLane - @@ -21485,7 +21658,7 @@ [BR] Check if take is MIDI take, in case MIDI take is in-project MIDI source data, inProjectMidiOut will be true, otherwise false. - retval - + retval - inProjectMidi - @@ -21515,7 +21688,7 @@ [BR] Get media item under mouse cursor. Position is mouse cursor position in arrange. - retval - + retval - position - ReaperApiFunctionsReference @@ -21885,7 +22058,7 @@ [BR] Get take under mouse cursor. Position is mouse cursor position in arrange. - retval - + retval - position - ReaperApiFunctionsReference @@ -21914,7 +22087,7 @@ Position will hold mouse cursor position in arrange if applicable. - retval - + retval - context - position - @@ -21942,7 +22115,7 @@ [BR] Get the exact name (like effect.dll, effect.vst3, etc...) of an FX. - retval - + retval - name - @@ -22361,7 +22534,7 @@ Full loudness analysis. retval: returns true on successful analysis, false on MIDI take or when analysis failed for some reason. analyzeTruePeak=true: Also do true peak analysis. Returns true peak value and true peak position (relative to item position). Considerably slower than without true peak analysis (since it uses oversampling). Note: Short term uses a time window of 3 sec. for calculation. So for items shorter than this shortTermMaxOut can't be calculated correctly. Momentary uses a time window of 0.4 sec. - retval - + retval - lufsIntegrated - range - truePeak - @@ -22397,7 +22570,7 @@ Same as [NF_AnalyzeTakeLoudness](#NF_AnalyzeTakeLoudness) but additionally returns shortTermMaxPos and momentaryMaxPos (in absolute project time). Note: shortTermMaxPos and momentaryMaxPos actually indicate the beginning of time *intervalls*, (3 sec. and 0.4 sec. resp.). - retval - + retval - lufsIntegrated - range - truePeak - @@ -22439,7 +22612,7 @@ - retval - + retval - lufsIntegrated - @@ -23056,7 +23229,7 @@ \[S&M\] Reads a media file tag. Supported tags: "artist", "album", "genre", "comment", "title", or "year". Returns false if tag was not found. See [SNM_TagMediaFile](#SNM_TagMediaFile). - retval - + retval - tagval - @@ -36809,6 +36982,36 @@ cpp, get, icon, theme, pointer + + // GetIconThemePointerForDPI + GetIconThemePointerForDPI + void* (*GetIconThemePointerForDPI)(const char* name, int dpisc); + + Reaper=6.02 + + + returns a named icontheme entry for a given DPI-scaling (256=1:1). + + Note: the return value should not be stored, it should be queried at each paint! + Querying name=NULL returns the start of the structure + + + void* - + + + name - + dpisc - + + ReaperApiFunctionsReference + reaper_plugin.h + + Additional C++ Functions + reaper_plugin_functions.h + + cpp, get, icon, theme, pointer, dpi + + + GetIconThemeStruct @@ -37122,12 +37325,13 @@ GetSetTrackMIDISupportFile const char* (*GetSetTrackMIDISupportFile)(ReaProject* proj, MediaTrack* track, int which, const char* filename) - Reaper=5.62 + Reaper=6.02 - Get or set the filename for storage of various track MIDI characteristics. - - If fn != NULL, a new track MIDI storage file will be set; otherwise the existing track MIDI storage file will be returned. + Get or set the filename for storage of the MIDI bank/program select file. + "which" must be 1. + + If fn != NULL, a new track MIDI storage file will be set; otherwise the existing track MIDI storage file will be returned. char* - diff --git a/UserPlugins/ultraschall_api/DocsSourcefiles/reaper-config_var.USDocML b/UserPlugins/ultraschall_api/DocsSourcefiles/reaper-config_var.USDocML index a360b1e7..d8a97e75 100644 --- a/UserPlugins/ultraschall_api/DocsSourcefiles/reaper-config_var.USDocML +++ b/UserPlugins/ultraschall_api/DocsSourcefiles/reaper-config_var.USDocML @@ -3,7 +3,7 @@ Introduction Introduction to Config Variables - List of all Config Variables as of Reaper 5.982 and probably are missing some, but should be fairly complete anyway. + List of all Config Variables as of Reaper 6.01 and probably are missing some, but should be fairly complete anyway. These can be used to set configuration-stuff in the preferences, the project-settings, the render-dialog, many context-menus(like MCP or transport-context-menus) and many others. To change them, you can use the following ReaScript API-functions(requires SWS being installed): @@ -83,7 +83,7 @@ >[aot](#aot), [cueitems](#cueitems), [itemtexthide](#itemtexthide), [psmaxv](#psmaxv), [psminv](#psminv), [templateditcursor](#templateditcursor) the following variables are available in pre-releases of Reaper only - >[bpminfnimport](#bpminfnimport), [disk_peaks_mmapkb](#disk_peaks_mmapkb), [disk_peaks_ramkb](#disk_peaks_ramkb), [maxplayoffsrate](#maxplayoffsrate), [midiccenv](#midiccenv), [midiccinterp](#midiccinterp), [windowflags](#windowflags), [wiring_options](#wiring_options) + >none currently An Introduction @@ -833,14 +833,12 @@ bpminfnimport unknown - only available in pre-releases, yet - It is an integer + It is a double Unknown, if it's stored in reaper.ini as well... Config Variables - Pre-Releases Reaper_Config_Variables @@ -3228,7 +3226,6 @@ disk_peaks_mmapkb disk_peaks_mmapkb - only available in pre-releases of Reaper, yet The Fully-buffer peak files smaller than-inputbox as set in Preferences -> Buffering -> Advanced Disk I/O Settings It is an integer @@ -3241,7 +3238,6 @@ Config Variables - Pre-Releases Reaper_Config_Variables @@ -3250,7 +3246,6 @@ disk_peaks_ramkb disk_peaks_ramkb - only available in pre-releases of Reaper, yet The Fully-buffer peak files smaller than-inputbox as set in Preferences -> Buffering -> Advanced Disk I/O Settings It is an integer @@ -3263,7 +3258,6 @@ Config Variables - Pre-Releases Reaper_Config_Variables @@ -3437,7 +3431,6 @@ >&32=1, Show recording volume name(on), checked set in Preferences -> Buffering -> Advanced Disk I/O Settings! - in pre-releases only >&64=1 - Periodially close excess file handles(experimental)-checkbox unchecked >&64=1 - Periodially close excess file handles(experimental)-checkbox checked @@ -5371,13 +5364,10 @@ [nativedrawtext](#nativedrawtext), [playcursormode](#playcursormode), [rulerlayout](#rulerlayout), [showlastundo](#showlastundo), [textflags](#textflags), [timeseledge](#timeseledge), [tooltips](#tooltips), [trackitemgap](#trackitemgap), [vgrid](#vgrid) - Only available in pre-releases, yet! - Stored in reaper.ini under the same name in the section REAPER. Config Variables - Pre-Releases Reaper_Config_Variables @@ -5650,7 +5640,6 @@ Config Variables - Pre-Releases Reaper_Config_Variables @@ -5668,7 +5657,6 @@ Config Variables - Pre-Releases Reaper_Config_Variables @@ -12410,7 +12398,6 @@ windowflags windowflags - only available in pre-releases of Reaper, yet It is the Modal window positioning-dropdownlist, as set in Preferences -> General -> Advanced UI/system tweaks It is an integer @@ -12423,7 +12410,6 @@ Config Variables - Pre-Releases Reaper_Config_Variables @@ -12432,7 +12418,6 @@ wiring_options wiring_options - only available in pre-releases of Reaper, yet It is the context-menu from within the wiring-diagram It is an integer-bitfield @@ -12448,7 +12433,6 @@ Config Variables - Pre-Releases Reaper_Config_Variables diff --git a/UserPlugins/ultraschall_api/Documentation/ChangeLog.html b/UserPlugins/ultraschall_api/Documentation/ChangeLog.html index ee7f191d..f4b94f94 100644 --- a/UserPlugins/ultraschall_api/Documentation/ChangeLog.html +++ b/UserPlugins/ultraschall_api/Documentation/ChangeLog.html @@ -40,6 +40,63 @@

Ultraschall Framework - Changelog

+

4.00 Beta 2.79: - "Yes - Owner of a lonely heart"

+

Has now 1082 functions, with 12 new ones

+

New in this release:

+

NOTE: There are some new features, who make use of Reaper v6-features. Please update soon, as Reaper 6 will be a requirement soon!

+
    +
  • Speedup when loading US-API
    +I made a modules-system, which speeds up loading and initalization as well as memory-use of the Ultraschall-API by magnitudes.
    +This approach loads only the functions needed by your script(used to load all functions in earlier versions).
    +The loading is now about 86% faster and memoryuse if 56% less.
    +And what do you need to do to make use of the modules approach?
    +Well, nothing. The Ultraschall-API does it for you! (requested by many, so hope, this helps you a lot).

  • +
  • Marker/Region Extstates
    +Reaper 6.02 added some new features, which gives a unique guid for a marker. This again, helped me adding a feature I wanted to have for a long time: Marker/Region Extstates. They work like regular ProjectExtStates, but have the benefit, that they allow saving additional key-value stores associated with a certain marker/region.
    +And even if you change the whole order of the markers, the extstates will still be attached to the marker of your choice.
    +Possible usecase: storing the render-format-settings as region-extstates for region-rendering or simply adding additional metadata to markers/regions, that are needed but would spam the markertitle shown in the arrangeview.
    +Experiment with it, you'll quickly get the idea and ideas for practical usecases!

  • +
  • Blitting an image centered
    +Sometimes, you want to blit an image into gfx-windows centered. Problem is: it's not easy to do. Until now, as I added the function GFX_BlitImageCentered, which does exactly that.
    +That means, you can pass to the function the position of the center of the image and change rotate/scale. This makes zooming in and out of images much more easier, as they stay at their position.

  • +
  • Subtitles SRT-import/export
    +You can import and export now SRT-files for subtitles. This should allow you to use regions as subtitle-feature.

  • +
  • ConvertStringToBits and ConvertBitsToString
    +This can be helpful, if you have a string, which represents a binary-number: Just convert it with this function and voila, you can work with the bits themselves.
    +And if you need to do it the other direction, use ConvertBitsToString. That way, you can work easily on a bitlevel, if fiddling with bitshifting is too difficult for you.

  • +
  • Bugfixes with ArrangeViewSnapShots, Markers
    +Should now work like a charm.

  • +
+

New features in 4.00beta2.79

+
    +
  • API: loadspeed - sped up loading speed by 86%, as API will now only load functions, actually needed, not all of them; memory need is reduced by about 56%.
  • +
  • Docs: Reaper Internals - updated to Reaper 6.02
  • +
  • ExtStateManagement: GetMarkerExtState - gets an extstate from a specific marker/region
  • +
  • ExtStateManagement: SetMarkerExtState - sets an extstate for a specific marker/region
  • +
  • GFX: GFX_BlitImageCentered - blits an image centered at a given position, to make "zooming"-effects easy to produce
  • +
  • Helper Functions: ConvertBitsToString - converts a table with bits(entries with 0 or 1) into its string-representation
  • +
  • Helper Functions: ConvertStringToBits - converts a string into its bit-representation
  • +
  • Markermanagement: GetMarkerIDFromGuid - get the markerid from a guid
  • +
  • Markermanagement: GetGuidFromMarkerID - get the guid from a marker
  • +
  • Scrubbing: Scrubbing_MoveCursor_GetToggleState - gets the current toggle-state for when scrubbing using an action/surface
  • +
  • Scrubbing: Scrubbing_MoveCursor_Toggle - toggles the state for when scrubbing using an action/surface
  • +
  • Subtitles: ReadSubtitles_SRT - imports a SubRip-srt-subtitlefile
  • +
  • Subtitles: SaveSubtitles_SRT - export a SubRip-srt-subtitlefile
  • +
+

Changes from Beta 2.78 to Beta 2.79

+
    +
  • API: Reapack-API-xml-generator.lua - didn't correctly create zip-archive of the API stored in GitHub -> fixed
  • +
  • ArrangeView Snapshots: DeleteArrangeviewSnapshot - deleted all Arrangeview-Snapshots instead of the slot-one and didn't check for valid value for parameter slot -> fixed
  • +
  • ArrangeView Snapshots: IsValidArrangeviewSnapshot - regression, didn't return false, if no snapshot was available in a certain slot -> fixed
  • +
  • ArrangeView Snapshots: RetrieveArrangeviewSnapshot - had inner variable exposed -> fixed
  • +
  • ConfigurationManagement: CountValuesByPattern - didn't count at all(for some reason), errors in docs -> fixed(thanks to reapero)
  • +
  • Developer: ultraschall_developertool_Display-Altered-Config-Vars.lua - didn't work with rc-pre-releases of Reaper -> fixed
  • +
  • Marker Management: AddCustomRegion - was expecting length, although declared as regionend in the docs -> fixed
  • +
  • Marker Management: MoveRegionsBy - still had debug-code in it, which could display messageboxes and overwrite global variables -> fixed (sorry for that)
  • +
  • Marker Management: SetCustomRegion - had docs of AddCustomRegion -> fixed
  • +
  • Project Management: GetProject_MarkersAndRegions - supports now guids of markers and regions, as introduced in Reaper 6.02
  • +
+

4.00 Beta 2.78: - "Tchaikovski - Overture 1812" - 5th of November 2019

Has now 1070 functions, with 41 new ones

New in this release:

diff --git a/UserPlugins/ultraschall_api/Documentation/Downloads.html b/UserPlugins/ultraschall_api/Documentation/Downloads.html index 149f21c3..9eb65791 100644 --- a/UserPlugins/ultraschall_api/Documentation/Downloads.html +++ b/UserPlugins/ultraschall_api/Documentation/Downloads.html @@ -40,10 +40,10 @@

Download Ultraschall Package

- ultraschall_api4.00_beta2.78.zip - the downloadpackage of the ultraschall-api

+ ultraschall_api4.00_beta2.79.zip - the downloadpackage of the ultraschall-api

ReaPack-installable-index-file. See ReaPack-Website for more details on the ReaPack-package-manager.

Download Reaper-Internals and Ultraschall-API-docs

- Reaper-Internals-Ultraschall-Api-Docs.zip - Docs: Reaper-Internals 5.984, SWS 2.10.0.1, JS-extension 0.995, ReaPack and Ultraschall-Api 4.00-beta2.78

+ Reaper-Internals-Ultraschall-Api-Docs.zip - Docs: Reaper-Internals 6.2, SWS 2.10.0.1, JS-extension 0.995, ReaPack and Ultraschall-Api 4.00-beta2.79

Reaper-Developer-Tools_by_Mespotine.zip - My Developer-Tools for Reaper

diff --git a/UserPlugins/ultraschall_api/Documentation/Reaper_API_Video_Documentation.html b/UserPlugins/ultraschall_api/Documentation/Reaper_API_Video_Documentation.html index d23a0ed2..452407a6 100644 --- a/UserPlugins/ultraschall_api/Documentation/Reaper_API_Video_Documentation.html +++ b/UserPlugins/ultraschall_api/Documentation/Reaper_API_Video_Documentation.html @@ -680,4 +680,4 @@

Reaper Video Processor Plugin API

Description:
Notifies that the parameter pointed to by pvar (must be param1..param24 or a user-defined parameter) has changed.

Specify isdone=1 when done modifying parameter (e.g. releasing touch)

-
Parameters:
          float pvar - the parameter, whose parameter-change you want to notify
          optional integer isdone - 1, when done modifying parameter



View: [all] [C/C++] [EEL] [Lua] [Python] Automatically generated by Ultraschall-API 4.00 Beta 2.78 - 66 functions available (Reaper and SWS)

\ No newline at end of file +
Parameters:
          float pvar - the parameter, whose parameter-change you want to notify
          optional integer isdone - 1, when done modifying parameter



View: [all] [C/C++] [EEL] [Lua] [Python] Automatically generated by Ultraschall-API 4.00 Beta 2.79 - 66 functions available (Reaper and SWS)

\ No newline at end of file diff --git a/UserPlugins/ultraschall_api/Documentation/Reaper_Api_Documentation.html b/UserPlugins/ultraschall_api/Documentation/Reaper_Api_Documentation.html index b968114c..f5df3803 100644 --- a/UserPlugins/ultraschall_api/Documentation/Reaper_Api_Documentation.html +++ b/UserPlugins/ultraschall_api/Documentation/Reaper_Api_Documentation.html @@ -82,14 +82,14 @@

-
View: [all] [C/C++] [EEL] [Lua] [Python] Automatically generated by Ultraschall-API 4.00 Beta 2.78 - 1344 functions available (Reaper, SWS and JS)


Reaper Reascript-Api-Documentation 5.984
"Ken Enjoyer"

The Functions Reference


API-Documentation

+
View: [all] [C/C++] [EEL] [Lua] [Python] Automatically generated by Ultraschall-API 4.00 Beta 2.79 - 1349 functions available (Reaper, SWS and JS)


Reaper Reascript-Api-Documentation 6.02
"The Aristocrats!"

The Functions Reference


API-Documentation

1.Introduction2.1.cpp_desc2.2.eel_desc2.3.python_desc
2.4.lua_desc3.Datatypes_used_in_this_document  

Additional C++ Functions

reaper_plugin_functions.h -
AddCustomizableMenuAddExtensionsMainMenuAudio_RegHardwareHookCSurf_OnOscControlMessage
CalculatePeaksCalculatePeaksFloatSrcPtrCountActionShortcutsCreateLocalOscHandler
CreateMIDIInputCreateMIDIOutputDeleteActionShortcutDestroyLocalOscHandler
DoActionShortcutDialogDuplicateCustomizableMenuFreeHeapPtrGetActionShortcutDesc
GetColorThemeGetColorThemeStructGetContextMenuGetIconThemePointer
GetIconThemeStructGetPeaksBitmapGetPreferredDiskReadModeGetPreferredDiskReadModePeak
GetPreferredDiskWriteModeGetSetMediaItemInfoGetSetMediaItemTakeInfoGetSetMediaTrackInfo
GetSetObjectStateGetSetObjectState2GetSetTrackMIDISupportFileGetSetTrackSendInfo
GetToggleCommandState2GetToggleCommandStateThroughHooksGetTrackInfoHiresPeaksFromSource
IsInRealTimeAudioIsItemTakeActiveForPlaybackIsREAPERKBD_OnMainActionEx
LICE_ArcLICE_BlitLICE_BlurLICE_BorderedRect
LICE_CircleLICE_ClearLICE_ClearRectLICE_Copy
LICE_CreateBitmapLICE_CreateFontLICE_DrawCBezierLICE_DrawChar
LICE_DrawGlyphLICE_DrawRectLICE_DrawTextLICE_FillCBezier
LICE_FillCircleLICE_FillConvexPolygonLICE_FillRectLICE_FillTrapezoid
LICE_FillTriangleLICE_GetPixelLICE_GradRectLICE_Line
LICE_LineIntLICE_LoadPNGLICE_LoadPNGFromResourceLICE_MeasureText
LICE_MultiplyAddRectLICE_PutPixelLICE_RotatedBlitLICE_RoundRect
LICE_ScaledBlitLICE_SimpleFillLICE__DestroyLICE__DestroyFont
LICE__DrawTextLICE__GetBitsLICE__GetDCLICE__GetHeight
LICE__GetRowSpanLICE__GetWidthLICE__IsFlippedLICE__SetBkColor
LICE__SetFromHFontLICE__SetTextColorLICE__SetTextCombineModeLICE__resize
MIDI_eventlist_CreateMIDI_eventlist_DestroyPCM_Sink_CreatePCM_Sink_CreateEx
PCM_Sink_CreateMIDIFilePCM_Sink_CreateMIDIFileExPCM_Source_CreateFromSimplePeakBuild_Create
PeakBuild_CreateExPeakGet_CreatePitchShiftSubModeMenuPlayPreview
PlayPreviewExPlayTrackPreviewPlayTrackPreview2PlayTrackPreview2Ex
REAPERAPI_LoadAPIReaperGetPitchShiftAPIResampler_CreateSectionFromUniqueID
SendLocalOscMessageSetRenderLastErrorStopPreviewStopTrackPreview
StopTrackPreview2WDL_VirtualWnd_ScaledBlitBG__mergesortget_config_var
get_midi_config_varkbd_OnMidiEventkbd_OnMidiListkbd_ProcessActionsMenu
kbd_RunCommandThroughHookskbd_enumerateActionskbd_formatKeyNamekbd_getCommandName
kbd_getTextFromCmdkbd_processMidiEventActionExkbd_reprocessMenukbd_translateAccelerator
kbd_translateMouseplugin_getFilterListplugin_getImportableProjectFilterListplugin_getapi
plugin_registerprojectconfig_var_addrprojectconfig_var_getoffsrealloc_cmd_ptr
screenset_registerscreenset_registerNewscreenset_unregisterscreenset_unregisterByParam
screenset_updateLastFocusupdate_disk_counters  

Additional EEL-Functions

+
// GetIconThemePointerForDPIAddCustomizableMenuAddExtensionsMainMenuAudio_RegHardwareHook
CSurf_OnOscControlMessageCalculatePeaksCalculatePeaksFloatSrcPtrCountActionShortcuts
CreateLocalOscHandlerCreateMIDIInputCreateMIDIOutputDeleteActionShortcut
DestroyLocalOscHandlerDoActionShortcutDialogDuplicateCustomizableMenuFreeHeapPtr
GetActionShortcutDescGetColorThemeGetColorThemeStructGetContextMenu
GetIconThemePointerGetIconThemeStructGetPeaksBitmapGetPreferredDiskReadMode
GetPreferredDiskReadModePeakGetPreferredDiskWriteModeGetSetMediaItemInfoGetSetMediaItemTakeInfo
GetSetMediaTrackInfoGetSetObjectStateGetSetObjectState2GetSetTrackMIDISupportFile
GetSetTrackSendInfoGetToggleCommandState2GetToggleCommandStateThroughHooksGetTrackInfo
HiresPeaksFromSourceIsInRealTimeAudioIsItemTakeActiveForPlaybackIsREAPER
KBD_OnMainActionExLICE_ArcLICE_BlitLICE_Blur
LICE_BorderedRectLICE_CircleLICE_ClearLICE_ClearRect
LICE_CopyLICE_CreateBitmapLICE_CreateFontLICE_DrawCBezier
LICE_DrawCharLICE_DrawGlyphLICE_DrawRectLICE_DrawText
LICE_FillCBezierLICE_FillCircleLICE_FillConvexPolygonLICE_FillRect
LICE_FillTrapezoidLICE_FillTriangleLICE_GetPixelLICE_GradRect
LICE_LineLICE_LineIntLICE_LoadPNGLICE_LoadPNGFromResource
LICE_MeasureTextLICE_MultiplyAddRectLICE_PutPixelLICE_RotatedBlit
LICE_RoundRectLICE_ScaledBlitLICE_SimpleFillLICE__Destroy
LICE__DestroyFontLICE__DrawTextLICE__GetBitsLICE__GetDC
LICE__GetHeightLICE__GetRowSpanLICE__GetWidthLICE__IsFlipped
LICE__SetBkColorLICE__SetFromHFontLICE__SetTextColorLICE__SetTextCombineMode
LICE__resizeMIDI_eventlist_CreateMIDI_eventlist_DestroyPCM_Sink_Create
PCM_Sink_CreateExPCM_Sink_CreateMIDIFilePCM_Sink_CreateMIDIFileExPCM_Source_CreateFromSimple
PeakBuild_CreatePeakBuild_CreateExPeakGet_CreatePitchShiftSubModeMenu
PlayPreviewPlayPreviewExPlayTrackPreviewPlayTrackPreview2
PlayTrackPreview2ExREAPERAPI_LoadAPIReaperGetPitchShiftAPIResampler_Create
SectionFromUniqueIDSendLocalOscMessageSetRenderLastErrorStopPreview
StopTrackPreviewStopTrackPreview2WDL_VirtualWnd_ScaledBlitBG__mergesort
get_config_varget_midi_config_varkbd_OnMidiEventkbd_OnMidiList
kbd_ProcessActionsMenukbd_RunCommandThroughHookskbd_enumerateActionskbd_formatKeyName
kbd_getCommandNamekbd_getTextFromCmdkbd_processMidiEventActionExkbd_reprocessMenu
kbd_translateAcceleratorkbd_translateMouseplugin_getFilterListplugin_getImportableProjectFilterList
plugin_getapiplugin_registerprojectconfig_var_addrprojectconfig_var_getoffs
realloc_cmd_ptrscreenset_registerscreenset_registerNewscreenset_unregister
screenset_unregisterByParamscreenset_updateLastFocusupdate_disk_counters 

Additional EEL-Functions

eel_abseel_acoseel_asineel_atan
eel_atan2eel_atexiteel_ceileel_convolve_c
eel_coseel_defereel_evaleel_exp
eel_extension_apieel_fcloseeel_feofeel_fflush
eel_ffteel_fft_ipermuteeel_fft_permuteeel_fft_real
eel_fgetceel_fgetseel_flooreel_fopen
eel_fprintfeel_freadeel_freembufeel_fseek
eel_ftelleel_fwriteeel_get_action_contexteel_gfx_arc
eel_gfx_bliteel_gfx_bliteel_gfx_blitexteel_gfx_blurto
eel_gfx_circleeel_gfx_clienttoscreeneel_gfx_deltabliteel_gfx_dock
eel_gfx_drawchareel_gfx_drawnumbereel_gfx_drawstreel_gfx_getchar
eel_gfx_getdropfileeel_gfx_getfonteel_gfx_getimgdimeel_gfx_getpixel
eel_gfx_gradrecteel_gfx_initeel_gfx_lineeel_gfx_lineto
eel_gfx_loadimgeel_gfx_measurechareel_gfx_measurestreel_gfx_muladdrect
eel_gfx_printfeel_gfx_quiteel_gfx_recteel_gfx_rectto
eel_gfx_roundrecteel_gfx_screentoclienteel_gfx_seteel_gfx_setcursor
eel_gfx_setfonteel_gfx_setimgdimeel_gfx_setpixeleel_gfx_showmenu
eel_gfx_transformbliteel_gfx_triangleeel_gfx_updateeel_gfx_variables
eel_iffteel_ifft_realeel_invsqrteel_log
eel_log10eel_loopeel_matcheel_matchi
eel_maxeel_mem_get_valueseel_mem_set_valueseel_memcpy
eel_memseteel_mineel_printfeel_rand
eel_runloopeel_signeel_sineel_sleep
eel_sprintfeel_sqreel_sqrteel_stack_exch
eel_stack_peekeel_stack_popeel_stack_pusheel_str_delsub
eel_str_getchareel_str_inserteel_str_setchareel_str_setlen
eel_strcateel_strcmpeel_strcpyeel_strcpy_from
eel_strcpy_substreel_stricmpeel_strleneel_strncat
eel_strncmpeel_strncpyeel_strnicmpeel_tan
eel_tcp_closeeel_tcp_connecteel_tcp_listeneel_tcp_listen_end
eel_tcp_recveel_tcp_sendeel_tcp_set_blockeel_time
eel_time_preciseeel_while  

Additional Lua-Functions

lua_atexitlua_deferlua_get_action_contextlua_gfx.arc
lua_gfx.blitlua_gfx.blit_simplifiedlua_gfx.blitextlua_gfx.blurto
lua_gfx.circlelua_gfx.clienttoscreenlua_gfx.deltablitlua_gfx.dock
lua_gfx.drawcharlua_gfx.drawnumberlua_gfx.drawstrlua_gfx.getchar
lua_gfx.getdropfilelua_gfx.getfontlua_gfx.getimgdimlua_gfx.getpixel
lua_gfx.gradrectlua_gfx.initlua_gfx.linelua_gfx.lineto
lua_gfx.loadimglua_gfx.measurecharlua_gfx.measurestrlua_gfx.muladdrect
lua_gfx.printflua_gfx.quitlua_gfx.rectlua_gfx.rectto
lua_gfx.roundrectlua_gfx.screentoclientlua_gfx.setlua_gfx.setcursor
lua_gfx.setfontlua_gfx.setimgdimlua_gfx.setpixellua_gfx.showmenu
lua_gfx.transformblitlua_gfx.trianglelua_gfx.updatelua_gfx_variables
lua_gmem_attachlua_gmem_readlua_gmem_writelua_new_array
lua_runlooplua_{reaper.array}.clearlua_{reaper.array}.convolvelua_{reaper.array}.copy
lua_{reaper.array}.fftlua_{reaper.array}.fft_reallua_{reaper.array}.get_alloclua_{reaper.array}.ifft
lua_{reaper.array}.ifft_reallua_{reaper.array}.multiplylua_{reaper.array}.resizelua_{reaper.array}.table

Additional Python-Functions

python_atexitpython_deferpython_runloop 

Api-Helper-Functions

-
APIExistsAPITestAddRemoveReaScriptBR_Win32_GetConstant
BR_Win32_HIBYTEBR_Win32_HIWORDBR_Win32_LOBYTEBR_Win32_LOWORD
BR_Win32_MAKELONGBR_Win32_MAKELPARAMBR_Win32_MAKELRESULTBR_Win32_MAKEWORD
BR_Win32_MAKEWPARAMBR_Win32_ShellExecuteCF_EnumerateActionsCF_GetClipboard
CF_GetClipboardBigCF_GetCommandTextCF_GetSWSVersionCF_SetClipboard
CF_ShellExecuteClearConsoleClearPeakCacheColorFromNative
ColorToNativeDB2SLIDERExecProcessGetAppVersion
GetExePathGetOSGetResourcePathGetToggleCommandState
GetToggleCommandStateExIsMediaExtensionMain_OnCommandMain_OnCommandEx
NamedCommandLookupReaScriptErrorRecursiveCreateDirectoryReverseNamedCommandLookup
SLIDER2DBSNM_CreateFastStringSNM_DeleteFastStringSNM_GetDoubleConfigVar
SNM_GetFastStringSNM_GetFastStringLengthSNM_GetIntConfigVarSNM_SetDoubleConfigVar
SNM_SetFastStringSNM_SetIntConfigVarSetToggleCommandStateShowActionList
ShowConsoleMsgToggleTrackSendUIMuteValidatePtrValidatePtr2
format_timestrformat_timestr_lenformat_timestr_posgenGuid
get_config_var_stringget_ini_fileguidToStringimage_resolve_fn
mkpanstrmkvolpanstrmkvolstrparse_timestr
parse_timestr_lenparse_timestr_posparsepanstrrelative_fn
resolve_fnresolve_fn2stringToGuidtime_precise

Arrangeview Management

+
APIExistsAPITestAddRemoveReaScriptBR_Win32_GetConstant
BR_Win32_HIBYTEBR_Win32_HIWORDBR_Win32_LOBYTEBR_Win32_LOWORD
BR_Win32_MAKELONGBR_Win32_MAKELPARAMBR_Win32_MAKELRESULTBR_Win32_MAKEWORD
BR_Win32_MAKEWPARAMBR_Win32_ShellExecuteCF_EnumerateActionsCF_GetClipboard
CF_GetClipboardBigCF_GetCommandTextCF_GetSWSVersionCF_SetClipboard
CF_ShellExecuteClearConsoleClearPeakCacheColorFromNative
ColorToNativeDB2SLIDERExecProcessGetAppVersion
GetExePathGetOSGetResourcePathGetToggleCommandState
GetToggleCommandStateExIsMediaExtensionMain_OnCommandMain_OnCommandEx
NamedCommandLookupReaScriptErrorRecursiveCreateDirectoryReverseNamedCommandLookup
SLIDER2DBSNM_CreateFastStringSNM_DeleteFastStringSNM_GetDoubleConfigVar
SNM_GetFastStringSNM_GetFastStringLengthSNM_GetIntConfigVarSNM_SetDoubleConfigVar
SNM_SetFastStringSNM_SetIntConfigVarSetToggleCommandStateShowActionList
ShowConsoleMsgToggleTrackSendUIMuteValidatePtrValidatePtr2
format_timestrformat_timestr_lenformat_timestr_posgenGuid
get_config_var_stringget_ini_fileguidToStringimage_resolve_fn
mkpanstrmkvolpanstrmkvolstrparse_timestr
parse_timestr_lenparse_timestr_posparsepanstrreduce_open_files
relative_fnresolve_fnresolve_fn2stringToGuid
time_precise   

Arrangeview Management

BR_GetArrangeViewBR_SetArrangeViewCSurf_OnArrowCSurf_OnScroll
CSurf_OnZoomGetCursorContextGetCursorContext2GetHZoomLevel
GetSet_ArrangeView2SetCursorContextUpdateArrangeUpdateTimeline
adjustZoom   

Audio Management

AudioAccessorValidateStateCF_EnumMediaSourceCuesCF_ExportMediaSourceCF_GetMediaSourceBitDepth
CF_GetMediaSourceMetadataCF_GetMediaSourceOnlineCF_GetMediaSourceRPPCF_SetMediaSourceOnline
CreateTakeAudioAccessorCreateTrackAudioAccessorDestroyAudioAccessorGetAudioAccessorEndTime
GetAudioAccessorHashGetAudioAccessorSamplesGetAudioAccessorStartTimeGetItemEditingTime2
GetMediaSourceFileNameGetMediaSourceLengthGetMediaSourceNumChannelsGetMediaSourceParent
GetMediaSourceSampleRateGetMediaSourceTypeGetPeakFileNameGetPeakFileNameEx
GetPeakFileNameEx2GetSubProjectFromSourceGetTempoMatchPlayRateInsertMedia
InsertMediaSectionNF_AnalyzeMediaItemPeakAndRMSNF_AnalyzeTakeLoudnessNF_AnalyzeTakeLoudness2
NF_AnalyzeTakeLoudness_IntegratedOnlyNF_GetMediaItemAverageRMSNF_GetMediaItemMaxPeakNF_GetMediaItemMaxPeakAndMaxPeakPos
NF_GetMediaItemPeakRMS_NonWindowedNF_GetMediaItemPeakRMS_WindowedPCM_Sink_EnumPCM_Sink_GetExtension
PCM_Sink_ShowConfigPCM_Source_CreateFromFilePCM_Source_CreateFromFileExPCM_Source_CreateFromType
PCM_Source_DestroyPCM_Source_GetPeaksPCM_Source_GetSectionInfoResample_EnumModes

AudioMidi Devicemanagement

AudioAccessorStateChangedAudioAccessorUpdateAudio_InitAudio_IsPreBuffer
Audio_IsRunningAudio_QuitGetAudioDeviceInfoGetInputChannelName
GetInputOutputLatencyGetMIDIInputNameGetMIDIOutputNameGetMaxMidiInputs
GetMaxMidiOutputsGetNumAudioInputsGetNumAudioOutputsGetNumMIDIInputs
GetNumMIDIOutputsGetOutputChannelNameGetOutputLatencyGetUnderrunTime
OscLocalMessageToHost   

Automation Management

@@ -100,7 +100,7 @@
BR_Win32_GetPrivateProfileStringBR_Win32_WritePrivateProfileStringEnumerateFilesEnumerateSubdirectories
SNM_ReadMediaFileTagSNM_TagMediaFilefile_exists 

JS_Plugin

JS_ByteJS_CompositeJS_Composite_ListBitmapsJS_Composite_Unlink
JS_Dialog_BrowseForFolderJS_Dialog_BrowseForOpenFilesJS_Dialog_BrowseForSaveFileJS_Double
JS_GDI_BlitJS_GDI_CreateFillBrushJS_GDI_CreateFontJS_GDI_CreatePen
JS_GDI_DeleteObjectJS_GDI_DrawTextJS_GDI_FillEllipseJS_GDI_FillPolygon
JS_GDI_FillRectJS_GDI_FillRoundRectJS_GDI_GetClientDCJS_GDI_GetScreenDC
JS_GDI_GetSysColorJS_GDI_GetTextColorJS_GDI_GetWindowDCJS_GDI_Line
JS_GDI_PolylineJS_GDI_ReleaseDCJS_GDI_SelectObjectJS_GDI_SetPixel
JS_GDI_SetTextBkColorJS_GDI_SetTextBkModeJS_GDI_SetTextColorJS_GDI_StretchBlit
JS_IntJS_LICE_AlterBitmapHSVJS_LICE_AlterRectHSVJS_LICE_Arc
JS_LICE_BezierJS_LICE_BlitJS_LICE_CircleJS_LICE_Clear
JS_LICE_CreateBitmapJS_LICE_CreateFontJS_LICE_DestroyBitmapJS_LICE_DestroyFont
JS_LICE_DrawCharJS_LICE_DrawTextJS_LICE_FillCircleJS_LICE_FillPolygon
JS_LICE_FillRectJS_LICE_FillTriangleJS_LICE_GetDCJS_LICE_GetHeight
JS_LICE_GetPixelJS_LICE_GetWidthJS_LICE_GradRectJS_LICE_IsFlipped
JS_LICE_LineJS_LICE_LoadPNGJS_LICE_MeasureTextJS_LICE_ProcessRect
JS_LICE_PutPixelJS_LICE_ResizeJS_LICE_RotatedBlitJS_LICE_RoundRect
JS_LICE_ScaledBlitJS_LICE_SetAlphaFromColorMaskJS_LICE_SetFontBkColorJS_LICE_SetFontColor
JS_LICE_SetFontFromGDIJS_LICE_WritePNGJS_ListView_EnsureVisibleJS_ListView_EnumSelItems
JS_ListView_GetFocusedItemJS_ListView_GetItemJS_ListView_GetItemCountJS_ListView_GetItemState
JS_ListView_GetItemTextJS_ListView_GetSelectedCountJS_ListView_ListAllSelItemsJS_Localize
JS_MIDIEditor_ArrayAllJS_MIDIEditor_ListAllJS_Mem_AllocJS_Mem_Free
JS_Mem_FromStringJS_Mouse_GetCursorJS_Mouse_GetStateJS_Mouse_LoadCursor
JS_Mouse_LoadCursorFromFileJS_Mouse_SetCursorJS_Mouse_SetPositionJS_PtrFromStr
JS_ReaScriptAPI_VersionJS_StringJS_VKeys_ClearHistoryJS_VKeys_GetDown
JS_VKeys_GetHistoryJS_VKeys_GetStateJS_VKeys_GetUpJS_VKeys_Intercept
JS_WindowMessage_InterceptJS_WindowMessage_InterceptListJS_WindowMessage_ListInterceptsJS_WindowMessage_PassThrough
JS_WindowMessage_PeekJS_WindowMessage_PostJS_WindowMessage_ReleaseJS_WindowMessage_ReleaseAll
JS_WindowMessage_ReleaseWindowJS_WindowMessage_SendJS_Window_AddressFromHandleJS_Window_ArrayAllChild
JS_Window_ArrayAllTopJS_Window_ArrayFindJS_Window_AttachResizeGripJS_Window_AttachTopmostPin
JS_Window_ClientToScreenJS_Window_CreateJS_Window_DestroyJS_Window_Enable
JS_Window_FindJS_Window_FindChildJS_Window_FindChildByIDJS_Window_FindEx
JS_Window_FindTopJS_Window_FromPointJS_Window_GetClassNameJS_Window_GetClientRect
JS_Window_GetFocusJS_Window_GetForegroundJS_Window_GetLongPtrJS_Window_GetParent
JS_Window_GetRectJS_Window_GetRelatedJS_Window_GetScrollInfoJS_Window_GetTitle
JS_Window_GetViewportFromRectJS_Window_HandleFromAddressJS_Window_InvalidateRectJS_Window_IsChild
JS_Window_IsVisibleJS_Window_IsWindowJS_Window_ListAllChildJS_Window_ListAllTop
JS_Window_ListFindJS_Window_MonitorFromRectJS_Window_MoveJS_Window_OnCommand
JS_Window_RemoveXPStyleJS_Window_ResizeJS_Window_ScreenToClientJS_Window_SetFocus
JS_Window_SetForegroundJS_Window_SetLongJS_Window_SetOpacityJS_Window_SetPosition
JS_Window_SetScrollPosJS_Window_SetStyleJS_Window_SetTitleJS_Window_SetZOrder
JS_Window_ShowJS_Window_UpdateXen_AudioWriter_CreateXen_AudioWriter_Destroy
Xen_AudioWriter_WriteXen_GetMediaSourceSamplesXen_StartSourcePreviewXen_StopSourcePreview

Joystick Management

joystick_createjoystick_destroyjoystick_enumjoystick_getaxis
joystick_getbuttonmaskjoystick_getinfojoystick_getpovjoystick_update

MIDI Management

-
BR_GetMidiSourceLenPPQBR_GetMidiTakePoolGUIDBR_GetMidiTakeTempoInfoBR_IsMidiOpenInInlineEditor
BR_IsTakeMidiBR_MIDI_CCLaneRemoveBR_MIDI_CCLaneReplaceBR_SetMidiTakeTempoInfo
EnumTrackMIDIProgramNamesEnumTrackMIDIProgramNamesExFNG_AddMidiNoteFNG_AllocMidiTake
FNG_CountMidiNotesFNG_FreeMidiTakeFNG_GetMidiNoteFNG_GetMidiNoteIntProperty
FNG_SetMidiNoteIntPropertyGetTrackMIDILyricsGetTrackMIDINoteNameGetTrackMIDINoteNameEx
GetTrackMIDINoteRangeHasTrackMIDIProgramsHasTrackMIDIProgramsExMIDIEditor_GetActive
MIDIEditor_GetModeMIDIEditor_GetSetting_intMIDIEditor_GetSetting_strMIDIEditor_GetTake
MIDIEditor_LastFocused_OnCommandMIDIEditor_OnCommandMIDIEditor_SetSetting_intMIDI_CountEvts
MIDI_DeleteCCMIDI_DeleteEvtMIDI_DeleteNoteMIDI_DeleteTextSysexEvt
MIDI_DisableSortMIDI_EnumSelCCMIDI_EnumSelEvtsMIDI_EnumSelNotes
MIDI_EnumSelTextSysexEvtsMIDI_GetAllEvtsMIDI_GetCCMIDI_GetEvt
MIDI_GetGridMIDI_GetHashMIDI_GetNoteMIDI_GetPPQPosFromProjQN
MIDI_GetPPQPosFromProjTimeMIDI_GetPPQPos_EndOfMeasureMIDI_GetPPQPos_StartOfMeasureMIDI_GetProjQNFromPPQPos
MIDI_GetProjTimeFromPPQPosMIDI_GetScaleMIDI_GetTextSysexEvtMIDI_GetTrackHash
MIDI_InsertCCMIDI_InsertEvtMIDI_InsertNoteMIDI_InsertTextSysexEvt
MIDI_SelectAllMIDI_SetAllEvtsMIDI_SetCCMIDI_SetEvt
MIDI_SetItemExtentsMIDI_SetNoteMIDI_SetTextSysexEvtMIDI_Sort
SetMIDIEditorGridSetTrackMIDILyricsSetTrackMIDINoteNameSetTrackMIDINoteNameEx
StuffMIDIMessageTakeIsMIDImidi_reinit 

Marker Management

+
BR_GetMidiSourceLenPPQBR_GetMidiTakePoolGUIDBR_GetMidiTakeTempoInfoBR_IsMidiOpenInInlineEditor
BR_IsTakeMidiBR_MIDI_CCLaneRemoveBR_MIDI_CCLaneReplaceBR_SetMidiTakeTempoInfo
EnumTrackMIDIProgramNamesEnumTrackMIDIProgramNamesExFNG_AddMidiNoteFNG_AllocMidiTake
FNG_CountMidiNotesFNG_FreeMidiTakeFNG_GetMidiNoteFNG_GetMidiNoteIntProperty
FNG_SetMidiNoteIntPropertyGetTrackMIDILyricsGetTrackMIDINoteNameGetTrackMIDINoteNameEx
GetTrackMIDINoteRangeHasTrackMIDIProgramsHasTrackMIDIProgramsExMIDIEditor_GetActive
MIDIEditor_GetModeMIDIEditor_GetSetting_intMIDIEditor_GetSetting_strMIDIEditor_GetTake
MIDIEditor_LastFocused_OnCommandMIDIEditor_OnCommandMIDIEditor_SetSetting_intMIDI_CountEvts
MIDI_DeleteCCMIDI_DeleteEvtMIDI_DeleteNoteMIDI_DeleteTextSysexEvt
MIDI_DisableSortMIDI_EnumSelCCMIDI_EnumSelEvtsMIDI_EnumSelNotes
MIDI_EnumSelTextSysexEvtsMIDI_GetAllEvtsMIDI_GetCCMIDI_GetCCShape
MIDI_GetEvtMIDI_GetGridMIDI_GetHashMIDI_GetNote
MIDI_GetPPQPosFromProjQNMIDI_GetPPQPosFromProjTimeMIDI_GetPPQPos_EndOfMeasureMIDI_GetPPQPos_StartOfMeasure
MIDI_GetProjQNFromPPQPosMIDI_GetProjTimeFromPPQPosMIDI_GetScaleMIDI_GetTextSysexEvt
MIDI_GetTrackHashMIDI_InsertCCMIDI_InsertEvtMIDI_InsertNote
MIDI_InsertTextSysexEvtMIDI_SelectAllMIDI_SetAllEvtsMIDI_SetCC
MIDI_SetCCShapeMIDI_SetEvtMIDI_SetItemExtentsMIDI_SetNote
MIDI_SetTextSysexEvtMIDI_SortSetMIDIEditorGridSetTrackMIDILyrics
SetTrackMIDINoteNameSetTrackMIDINoteNameExStuffMIDIMessageTakeIsMIDI
midi_reinit   

Marker Management

AddProjectMarkerAddProjectMarker2AddTempoTimeSigMarkerCountProjectMarkers
CountTempoTimeSigMarkersDeleteProjectMarkerDeleteProjectMarkerByIndexDeleteTakeStretchMarkers
DeleteTempoTimeSigMarkerEditTempoTimeSigMarkerEnumProjectMarkersEnumProjectMarkers2
EnumProjectMarkers3FindTempoTimeSigMarkerGetLastMarkerAndCurRegionGetProjectTimeSignature
GetProjectTimeSignature2GetTakeNumStretchMarkersGetTakeStretchMarkerGetTakeStretchMarkerSlope
GetTempoTimeSigMarkerNF_GetSWSMarkerRegionSubNF_SetSWSMarkerRegionSubSNM_GetProjectMarkerName
SNM_SetProjectMarkerSetProjectMarkerSetProjectMarker2SetProjectMarker3
SetProjectMarker4SetProjectMarkerByIndexSetProjectMarkerByIndex2SetTakeStretchMarker
SetTakeStretchMarkerSlopeSetTempoTimeSigMarker  

Mediaitem Management

AddMediaItemToTrackAddTakeToMediaItemApplyNudgeBR_GetMediaItemByGUID
BR_GetMediaItemGUIDBR_GetMediaItemImageResourceBR_GetMediaItemTakeGUIDBR_GetMediaSourceProperties
BR_GetMediaTrackFreezeCountBR_SetItemEdgesBR_SetMediaItemImageResourceBR_SetMediaSourceProperties
BR_SetTakeSourceFromFileBR_SetTakeSourceFromFile2CountMediaItemsCountSelectedMediaItems
CountTakeEnvelopesCountTakesCountTrackMediaItemsCreateNewMIDIItemInProj
DeleteTrackMediaItemGetActiveTakeGetDisplayedMediaItemColorGetDisplayedMediaItemColor2
GetItemFromPointGetItemProjectContextGetItemStateChunkGetMediaItem
GetMediaItemInfo_ValueGetMediaItemNumTakesGetMediaItemTakeGetMediaItemTakeByGUID
GetMediaItemTakeInfo_ValueGetMediaItemTake_ItemGetMediaItemTake_PeaksGetMediaItemTake_Source
GetMediaItemTake_TrackGetSelectedMediaItemGetSetItemStateGetSetItemState2
GetSetMediaItemInfo_StringGetSetMediaItemTakeInfo_StringGetTakeGetTakeName
GetTrackMediaItemIsMediaItemSelectedMoveMediaItemToTrackSNM_GetMediaItemTakeByGUID
SNM_GetSetSourceStateSNM_GetSetSourceState2SNM_GetSourceTypeSelectAllMediaItems
SetActiveTakeSetItemStateChunkSetMediaItemInfo_ValueSetMediaItemLength
SetMediaItemPositionSetMediaItemSelectedSetMediaItemTakeInfo_ValueSetMediaItemTake_Source
SplitMediaItemULT_GetMediaItemNoteULT_SetMediaItemNoteUpdateItemInProject

Miscellaneous

ArmCommandCSurf_FlushUndoCSurf_SetTrackListChangeEnsureNotCompletelyOffscreen
GetArmedCommandHelp_SetMain_UpdateLoopInfoMarkTrackItemsDirty
MediaItemDescendsFromTrackRenderFileSectionSNM_GetSetObjectStateSNM_SelectResourceBookmark
SNM_TieResourceSlotActionsSetRegionRenderMatrixSplash_GetWndTimeMap2_GetDividedBpmAtTime
TimeMap2_GetNextChangeTimeTimeMap2_QNToTimeTimeMap2_beatsToTimeTimeMap2_timeToBeats
TimeMap2_timeToQNTimeMap_GetDividedBpmAtTimeTimeMap_GetMeasureInfoTimeMap_GetMetronomePattern
TimeMap_GetTimeSigAtTimeTimeMap_QNToMeasuresTimeMap_QNToTimeTimeMap_QNToTime_abs
TimeMap_curFrameRateTimeMap_timeToQNTimeMap_timeToQN_absTrackList_UpdateAllExternalSurfaces

Pitchshifting

@@ -110,14 +110,14 @@
ThemeLayout_GetLayoutThemeLayout_GetParameterThemeLayout_RefreshAllThemeLayout_SetLayout
ThemeLayout_SetParameter   

Track Management

AnyTrackSoloBR_GetMediaTrackByGUIDBR_GetMediaTrackGUIDBR_GetMediaTrackSendInfo_Envelope
BR_GetMediaTrackSendInfo_TrackBR_GetSetTrackSendInfoBypassFxAllTracksCSurf_GetTouchState
CSurf_NumTracksCSurf_OnFXChangeCSurf_OnInputMonitorChangeCSurf_OnInputMonitorChangeEx
CSurf_OnMuteChangeCSurf_OnMuteChangeExCSurf_OnPanChangeCSurf_OnPanChangeEx
CSurf_OnRecArmChangeCSurf_OnRecArmChangeExCSurf_OnRecvPanChangeCSurf_OnRecvVolumeChange
CSurf_OnSelectedChangeCSurf_OnSendPanChangeCSurf_OnSendVolumeChangeCSurf_OnSoloChange
CSurf_OnSoloChangeExCSurf_OnStopCSurf_OnTrackSelectionCSurf_OnVolumeChange
CSurf_OnVolumeChangeExCSurf_OnWidthChangeCSurf_OnWidthChangeExCSurf_ResetAllCachedVolPanStates
CSurf_SetSurfaceMuteCSurf_SetSurfacePanCSurf_SetSurfaceRecArmCSurf_SetSurfaceSelected
CSurf_SetSurfaceSoloCSurf_SetSurfaceVolumeCSurf_TrackFromIDCSurf_TrackToID
ClearAllRecArmedCountSelectedTracksCountSelectedTracks2CountTCPFXParms
CountTracksCreateTrackSendDeleteTrackGetLastTouchedTrack
GetMasterMuteSoloFlagsGetMasterTrackGetMasterTrackVisibilityGetMediaItemTrack
GetMediaItem_TrackGetMediaTrackInfo_ValueGetNumTracksGetParentTrack
GetSelectedTrackGetSelectedTrack2GetSetMediaTrackInfo_StringGetSetTrackGroupMembership
GetSetTrackGroupMembershipHighGetSetTrackSendInfo_StringGetSetTrackStateGetSetTrackState2
GetTrackGetTrackColorGetTrackDepthGetTrackFromPoint
GetTrackGUIDGetTrackNameGetTrackNumMediaItemsGetTrackNumSends
GetTrackReceiveNameGetTrackReceiveUIMuteGetTrackReceiveUIVolPanGetTrackSendInfo_Value
GetTrackSendNameGetTrackSendUIMuteGetTrackSendUIVolPanGetTrackState
GetTrackStateChunkGetTrackUIMuteGetTrackUIPanGetTrackUIVolPan
InsertTrackAtIndexIsTrackSelectedIsTrackVisibleNF_GetSWSTrackNotes
NF_SetSWSTrackNotesRemoveTrackSendReorderSelectedTracksSNM_AddReceive
SNM_RemoveReceiveSNM_RemoveReceivesFromSetMasterTrackVisibilitySetMediaTrackInfo_Value
SetOnlyTrackSelectedSetTrackColorSetTrackSelectedSetTrackSendInfo_Value
SetTrackSendUIPanSetTrackSendUIVolSetTrackStateChunkSoloAllTracks
TrackFX_GetOpenTrackFX_SetOpenTrackFX_ShowTrack_GetPeakHoldDB
Track_GetPeakInfo   

Transport Management

CSurf_GoEndCSurf_GoStartCSurf_OnFwdCSurf_OnPause
CSurf_OnPlayCSurf_OnPlayRateChangeCSurf_OnRecordCSurf_OnRew
CSurf_OnRewFwdCSurf_ScrubAmtCSurf_SetPlayStateCSurf_SetRepeatState
GetAllProjectPlayStatesGetCursorPositionGetCursorPositionExGetPlayPosition
GetPlayPosition2GetPlayPosition2ExGetPlayPositionExGetPlayState
GetPlayStateExGetSetRepeatGetSetRepeatExGetSet_LoopTimeRange
GetSet_LoopTimeRange2GoToMarkerGoToRegionLoop_OnArrow
Master_GetPlayRateMaster_GetPlayRateAtTimeMaster_GetTempoMaster_NormalizePlayRate
Master_NormalizeTempoMoveEditCursorMuteAllTracksOnPauseButton
OnPauseButtonExOnPlayButtonOnPlayButtonExOnStopButton
OnStopButtonExSetEditCurPosSetEditCurPos2 

User Interface

-
BR_GetCurrentThemeBR_GetMediaTrackLayoutsBR_GetMouseCursorContextBR_GetMouseCursorContext_Envelope
BR_GetMouseCursorContext_ItemBR_GetMouseCursorContext_MIDIBR_GetMouseCursorContext_PositionBR_GetMouseCursorContext_StretchMarker
BR_GetMouseCursorContext_TakeBR_GetMouseCursorContext_TrackBR_ItemAtMouseCursorBR_PositionAtMouseCursor
BR_SetMediaTrackLayoutsBR_TakeAtMouseCursorBR_TrackAtMouseCursorBR_Win32_GetCursorPos
CF_LocateInExplorerDockIsChildOfDockDockWindowActivateDockWindowAdd
DockWindowAddExDockWindowRefreshDockWindowRefreshForHWNDDockWindowRemove
Dock_UpdateDockIDGR_SelectColorGSC_mainwndGetConfigWantsDock
GetLastColorThemeFileGetMainHwndGetMixerScrollGetMouseModifier
GetMousePositionGetTooltipWindowGetUserFileNameForReadGetUserInputs
LICE_ClipLineMBNF_UpdateSWSMarkerRegionSubWindowOpenColorThemeFile
OpenMediaExplorerPreventUIRefreshRefreshToolbarRefreshToolbar2
SN_FocusMIDIEditorSetMixerScrollSetMouseModifierShowMessageBox
ShowPopupMenuTrackCtl_SetToolTipViewPrefsmy_getViewport
Window Management +
BR_GetCurrentThemeBR_GetMediaTrackLayoutsBR_GetMouseCursorContextBR_GetMouseCursorContext_Envelope
BR_GetMouseCursorContext_ItemBR_GetMouseCursorContext_MIDIBR_GetMouseCursorContext_PositionBR_GetMouseCursorContext_StretchMarker
BR_GetMouseCursorContext_TakeBR_GetMouseCursorContext_TrackBR_ItemAtMouseCursorBR_PositionAtMouseCursor
BR_SetMediaTrackLayoutsBR_TakeAtMouseCursorBR_TrackAtMouseCursorBR_Win32_GetCursorPos
CF_LocateInExplorerDockGetPositionDockIsChildOfDockDockWindowActivate
DockWindowAddDockWindowAddExDockWindowRefreshDockWindowRefreshForHWND
DockWindowRemoveDock_UpdateDockIDGR_SelectColorGSC_mainwnd
GetConfigWantsDockGetLastColorThemeFileGetMainHwndGetMixerScroll
GetMouseModifierGetMousePositionGetTooltipWindowGetUserFileNameForRead
GetUserInputsLICE_ClipLineMBNF_UpdateSWSMarkerRegionSubWindow
OpenColorThemeFileOpenMediaExplorerPreventUIRefreshRefreshToolbar
RefreshToolbar2SN_FocusMIDIEditorSetMixerScrollSetMouseModifier
ShowMessageBoxShowPopupMenuTrackCtl_SetToolTipViewPrefs
my_getViewport   
Window Management
BR_Win32_CB_FindStringBR_Win32_CB_FindStringExactBR_Win32_ClientToScreenBR_Win32_FindWindowEx
BR_Win32_GET_X_LPARAMBR_Win32_GET_Y_LPARAMBR_Win32_GetFocusBR_Win32_GetForegroundWindow
BR_Win32_GetMainHwndBR_Win32_GetMixerHwndBR_Win32_GetMonitorRectFromRectBR_Win32_GetParent
BR_Win32_GetWindowBR_Win32_GetWindowLongBR_Win32_GetWindowRectBR_Win32_GetWindowText
BR_Win32_HwndToStringBR_Win32_IsWindowBR_Win32_IsWindowVisibleBR_Win32_MIDIEditor_GetActive
BR_Win32_ScreenToClientBR_Win32_SendMessageBR_Win32_SetFocusBR_Win32_SetForegroundWindow
BR_Win32_SetWindowLongBR_Win32_SetWindowPosBR_Win32_ShowWindowBR_Win32_StringToHwnd
BR_Win32_WindowFromPoint   


^ 1 Introduction to ReaScript
-

ReaScript API as of Reaper 5.983

+

ReaScript API as of Reaper 6.01


REAPER provides an API (advanced programming interface) for users and third parties to create extended functionality. API functions can be called from a compiled C/C++ dynamic library that is loaded by REAPER, or at run-time by user-created ReaScripts that can be written using REAPER's own editor.

ReaScripts can be written in EEL2, a specialized language that is also used to write JSFX; Lua, a popular scripting language; or Python, another scripting language. EEL and Lua are embedded within REAPER and require no additional downloads or settings. Python must be downloaded and installed separately, and enabled in REAPER preferences.

A script named "__startup.lua|.eel" will be started automatically by Reaper at startup. You can have both; Reaper will run __startup.eel first, __startup.lua second.
This __startup-script doesn't need to be registered into the actionlist of Reaper; it's pure existence in the scripts-folder of the resources-folder of Reaper is sufficient for it to be run.

Learn more about ReaScript: http://www.cockos.com/reaper/sdk/reascript/reascript.php.

This documentation includes the functions provided by SWS: sws-extension.org as well as Julian Sader's plugin, that can be installed via ReaPack.

The IDE in Reaper has some limitations, as every line must not exceed 4095 characters, or they will be split when the script is loaded the next time.

The base-directory for files created from ReaScript can be read from the reaper.ini -> [REAPER] -> lastcwd=
That means, if you create a new file without giving it a path, it will be created in the path set in lastcwd.



^ 2.1 CPP Api-Description
@@ -1212,7 +1212,15 @@

Datatypes used in this document

Python: RPR_Dock_UpdateDockID(String ident_str, Int whichDock)

Description:
updates preference for docker window ident_str to be in dock whichDock on next open

-
Parameters:
          string ident_str -
          integer whichDock -


+
Parameters:
          string ident_str -
          integer whichDock -


+ ^ Reaper version 6.02Lua version 5.3 DockGetPosition

Functioncall:

+
C: int DockGetPosition(int whichDock)

+
EEL: int DockGetPosition(int whichDock)

+
Lua: integer reaper.DockGetPosition(integer whichDock)

+
Python: Int RPR_DockGetPosition(Int whichDock)

+ +Description:
returns the position of docker whichDock

+
Parameters:
          integer whichDock - the docker, whose position you want to get
-1, not found
0, bottom
1, left
2, top
3, right
4, floating


^ Reaper version 5.62Lua version 5.3 DockIsChildOfDock

Functioncall:

C: int DockIsChildOfDock(HWND hwnd, bool* isFloatingDockerOut)

EEL: int DockIsChildOfDock(HWND hwnd, bool &isFloatingDocker)

@@ -1449,13 +1457,13 @@

Datatypes used in this document

Returnvalues:
          boolean retval -
          string programName -


- ^ Reaper version 5.62Lua version 5.3 Envelope_Evaluate

Functioncall:

+ ^ Reaper version 5.987Lua version 5.3 Envelope_Evaluate

Functioncall:

C: int Envelope_Evaluate(TrackEnvelope* envelope, double time, double samplerate, int samplesRequested, double* valueOutOptional, double* dVdSOutOptional, double* ddVdSOutOptional, double* dddVdSOutOptional)

EEL: int Envelope_Evaluate(TrackEnvelope envelope, time, samplerate, int samplesRequested, optional &value, optional &dVdS, optional &ddVdS, optional &dddVdS)

Lua: integer retval, optional number value, optional number dVdS, optional number ddVdS, optional number dddVdS = reaper.Envelope_Evaluate(TrackEnvelope envelope, number time, number samplerate, integer samplesRequested)

Python: (Int retval, TrackEnvelope envelope, Float time, Float samplerate, Int samplesRequested, Float valueOutOptional, Float dVdSOutOptional, Float ddVdSOutOptional, Float dddVdSOutOptional) = RPR_Envelope_Evaluate(envelope, time, samplerate, samplesRequested, valueOutOptional, dVdSOutOptional, ddVdSOutOptional, dddVdSOutOptional)

-Description:
Get the effective envelope value at a given time position. samplesRequested is how long the caller expects until the next call to Envelope_Evaluate (often, the buffer block size). The return value is how many samples beyond that time position that the returned values are valid.
See GetEnvelopeScalingMode.

+Description:
Get the effective envelope value at a given time position.

samplesRequested is how long the caller expects until the next call to Envelope_Evaluate (often, the buffer block size).

The return value is how many samples beyond that time position that the returned values are valid.

dVdS is the change in value per sample (first derivative), ddVdS is the second derivative, dddVdS is the third derivative.

See GetEnvelopeScalingMode.

Parameters:
          TrackEnvelope envelope -
          number time - @@ -2158,14 +2166,14 @@

Datatypes used in this document

Description:
arms a command (or disarms if 0 passed) in section sectionname (empty string for main)

Parameters:
          integer cmd -
          string sectionname -


- ^ Reaper version 5.95Lua version 5.3 GetMediaItemInfo_Value

Functioncall:

+ ^ Reaper version 6.01Lua version 5.3 GetMediaItemInfo_Value

Functioncall:

C: double GetMediaItemInfo_Value(MediaItem* item, const char* parmname)

EEL: double GetMediaItemInfo_Value(MediaItem item, "parmname")

Lua: number retval = reaper.GetMediaItemInfo_Value(MediaItem item, string parmname)

Python: Float RPR_GetMediaItemInfo_Value(MediaItem item, String parmname)

Description:
Get media item numerical-value attributes.

-
Parameters:
          MediaItem item - the MediaItem, whose value you want to have
          string parmname - the parametername, whose value you want to have:
  B_MUTE : bool * to muted state
  B_LOOPSRC : bool * to loop source
  B_ALLTAKESPLAY : bool * to all takes play
  B_UISEL : bool * to ui selected
  C_BEATATTACHMODE : char * to one char of beat attached mode,
                     -1=def, 0=time, 1=allbeats, 2=beatsosonly
  C_LOCK : char * to one char of lock flags (&1 is locked, currently)
  D_VOL : double * of item volume (volume bar)
  D_POSITION : double * of item position (seconds)
  D_LENGTH : double * of item length (seconds)
  D_SNAPOFFSET : double * of item snap offset (seconds)
  D_FADEINLEN : double * of item fade in length (manual, seconds)
  D_FADEOUTLEN : double * of item fade out length (manual, seconds)
  D_FADEINDIR : double * of item fade in curve [-1; 1]
  D_FADEOUTDIR : double * of item fade out curve [-1; 1]
  D_FADEINLEN_AUTO : double * of item autofade in length (seconds, -1 for no autofade set)
  D_FADEOUTLEN_AUTO : double * of item autofade out length (seconds, -1 for no autofade set)
  C_FADEINSHAPE : int * to fadein shape, 0=linear, ...
  C_FADEOUTSHAPE : int * to fadeout shape
  I_GROUPID : int * to group ID (0 = no group)
  I_LASTY : int * to last y position in track (readonly)
  I_LASTH : int * to last height in track (readonly)
  I_CUSTOMCOLOR : int * : custom color, OS dependent color|0x100000 (i.e. ColorToNative(r,g,b)|0x100000).
                          If you do not |0x100000, then it will not be used (though will store the color anyway).
  I_CURTAKE : int * to active take
  IP_ITEMNUMBER : int, item number within the track (read-only, returns the item number directly)
  F_FREEMODE_Y : float * to free mode y position (0..1)
  F_FREEMODE_H : float * to free mode height (0..1)
  P_TRACK : MediaTrack * (read only)
+
Parameters:
          MediaItem item - the MediaItem, whose value you want to have
          string parmname - the parametername, whose value you want to have:
B_MUTE : bool * : muted
B_LOOPSRC : bool * : loop source
B_ALLTAKESPLAY : bool * : all takes play
B_UISEL : bool * : selected in arrange view
C_BEATATTACHMODE : char * : item timebase, -1=track or project default, 1=beats (position, length, rate), 2=beats (position only). for auto-stretch timebase: C_BEATATTACHMODE=1, C_AUTOSTRETCH=1
C_AUTOSTRETCH: : char * : auto-stretch at project tempo changes, 1=enabled, requires C_BEATATTACHMODE=1
C_LOCK : char * : locked, &1=locked
D_VOL : double * : item volume, 0=-inf, 0.5=-6dB, 1=+0dB, 2=+6dB, etc
D_POSITION : double * : item position in seconds
D_LENGTH : double * : item length in seconds
D_SNAPOFFSET : double * : item snap offset in seconds
D_FADEINLEN : double * : item manual fadein length in seconds
D_FADEOUTLEN : double * : item manual fadeout length in seconds
D_FADEINDIR : double * : item fadein curvature, -1..1
D_FADEOUTDIR : double * : item fadeout curvature, -1..1
D_FADEINLEN_AUTO : double * : item auto-fadein length in seconds, -1=no auto-fadein
D_FADEOUTLEN_AUTO : double * : item auto-fadeout length in seconds, -1=no auto-fadeout
C_FADEINSHAPE : int * : fadein shape, 0..6, 0=linear
C_FADEOUTSHAPE : int * : fadeout shape, 0..6, 0=linear
I_GROUPID : int * : group ID, 0=no group
I_LASTY : int * : Y-position of track in pixels (read-only)
I_LASTH : int * : height in track in pixels (read-only)
I_CUSTOMCOLOR : int * : custom color, OS dependent color|0x100000 (i.e. ColorToNative(r,g,b)|0x100000). If you do not |0x100000, then it will not be used, but will store the color anyway)
I_CURTAKE : int * : active take number
IP_ITEMNUMBER : int, item number on this track (read-only, returns the item number directly)
F_FREEMODE_Y : float * : free item positioning Y-position, 0=top of track, 1=bottom of track (will never be 1)
F_FREEMODE_H : float * : free item positioning height, 0=no height, 1=full height of track (will never be 0)
P_TRACK : MediaTrack * (read-only)
Returnvalues:
          number retval - the value you requested


^ Reaper version 5.62Lua version 5.3 GetMediaItemNumTakes

Functioncall:

C: int GetMediaItemNumTakes(MediaItem* item)

@@ -2233,13 +2241,13 @@

Datatypes used in this document

Returnvalues:
          MediaItem_Take - take


- ^ Reaper version 5.976Lua version 5.3 GetMediaItemTakeInfo_Value

Functioncall:

+ ^ Reaper version 6.01Lua version 5.3 GetMediaItemTakeInfo_Value

Functioncall:

C: double GetMediaItemTakeInfo_Value(MediaItem_Take* take, const char* parmname)

EEL: double GetMediaItemTakeInfo_Value(MediaItem_Take take, "parmname")

Lua: number retval = reaper.GetMediaItemTakeInfo_Value(MediaItem_Take take, string parmname)

Python: Float RPR_GetMediaItemTakeInfo_Value(MediaItem_Take take, String parmname)

-Description:
Get media item take numerical-value attributes.
D_STARTOFFS : double *, start offset in take of item
D_VOL : double *, take volume (negative if take polarity is flipped)
D_PAN : double *, take pan
D_PANLAW : double *, take pan law (-1.0=default, 0.5=-6dB, 1.0=+0dB, etc)
D_PLAYRATE : double *, take playrate (1.0=normal, 2.0=doublespeed, etc)
D_PITCH : double *, take pitch adjust (in semitones, 0.0=normal, +12 = one octave up, etc)
B_PPITCH, bool *, preserve pitch when changing rate
I_CHANMODE, int *, channel mode (0=normal, 1=revstereo, 2=downmix, 3=l, 4=r)
I_PITCHMODE, int *, pitch shifter mode, -1=proj default, otherwise high word=shifter low word = parameter
I_CUSTOMCOLOR : int *, custom color, OS dependent color|0x100000 (i.e. ColorToNative(r,g,b)|0x100000). If you do not |0x100000, then it will not be used (though will store the color anyway).
IP_TAKENUMBER : int, take number within the item (read-only, returns the take number directly)
P_TRACK : pointer to MediaTrack (read-only)
P_ITEM : pointer to MediaItem (read-only)
P_SOURCE : PCM_source *. Note that if setting this, you should first retrieve the old source, set the new, THEN delete the old.

+Description:
Get media item take numerical-value attributes.
D_STARTOFFS : double * : start offset in source media, in seconds
D_VOL : double * : take volume, 0=-inf, 0.5=-6dB, 1=+0dB, 2=+6dB, etc, negative if take polarity is flipped
D_PAN : double * : take pan, -1..1
D_PANLAW : double * : take pan law, -1=default, 0.5=-6dB, 1.0=+0dB, etc
D_PLAYRATE : double * : take playback rate, 0.5=half speed, 1=normal, 2=double speed, etc
D_PITCH : double * : take pitch adjustment in semitones, -12=one octave down, 0=normal, +12=one octave up, etc
B_PPITCH : bool * : preserve pitch when changing playback rate
I_CHANMODE : int * : channel mode, 0=normal, 1=reverse stereo, 2=downmix, 3=left, 4=right
I_PITCHMODE : int * : pitch shifter mode, -1=projext default, otherwise high 2 bytes=shifter, low 2 bytes=parameter
I_CUSTOMCOLOR : int * : custom color, OS dependent color|0x100000 (i.e. ColorToNative(r,g,b)|0x100000). If you do not |0x100000, then it will not be used, but will store the color anyway)
IP_TAKENUMBER : int : take number (read-only, returns the take number directly)
P_TRACK : pointer to MediaTrack (read-only)
P_ITEM : pointer to MediaItem (read-only)
P_SOURCE : PCM_source *. Note that if setting this, you should first retrieve the old source, set the new, THEN delete the old.

Parameters:
          MediaItem_Take take -
          string parmname -
Returnvalues:
          number retval -


^ Reaper version 5.62Lua version 5.3 GetMediaItemTrack

Functioncall:

@@ -2309,15 +2317,15 @@

Datatypes used in this document

Description:
copies the media source type ("WAV", "MIDI", etc) to typebuf

Parameters:
          PCM_source source -
Returnvalues:
          string typebuf - a string-buffer needed by the function, use "" in Lua


- ^ Reaper version 5.982Lua version 5.3 GetMediaTrackInfo_Value

Functioncall:

+ ^ Reaper version 6.01Lua version 5.3 GetMediaTrackInfo_Value

Functioncall:

C: double GetMediaTrackInfo_Value(MediaTrack* tr, const char* parmname)

EEL: double GetMediaTrackInfo_Value(MediaTrack tr, "parmname")

Lua: number retval = reaper.GetMediaTrackInfo_Value(MediaTrack tr, string parmname)

Python: Float RPR_GetMediaTrackInfo_Value(MediaTrack tr, String parmname)

-Description:
Get track numerical-value attributes.
B_MUTE : bool * : mute flag
B_PHASE : bool * : invert track phase
IP_TRACKNUMBER : int : track number (returns zero if not found, -1 for master track) (read-only, returns the int directly)
I_SOLO : int * : 0=not soloed, 1=solo, 2=soloed in place. also: 5=solo-safe solo, 6=solo-safe soloed in place
I_FXEN : int * : 0=fx bypassed, nonzero = fx active
I_RECARM : int * : 0=not record armed, 1=record armed
I_RECINPUT : int * : record input. <0 = no input, 0..n = mono hardware input, 512+n = rearoute input, 1024 set for stereo input pair. 4096 set for MIDI input, if set, then low 6 bits represent channel (0=all, 1-16=only chan), then next 6 bits represent physical input (63=all, 62=VKB)
I_RECMODE : int * : record mode (0=input, 1=stereo out, 2=none, 3=stereo out w/latcomp, 4=midi output, 5=mono out, 6=mono out w/ lat comp, 7=midi overdub, 8=midi replace
I_RECMON : int * : record monitor (0=off, 1=normal, 2=not when playing (tapestyle))
I_RECMONITEMS : int * : monitor items while recording (0=off, 1=on)
I_AUTOMODE : int * : track automation mode (0=trim/off, 1=read, 2=touch, 3=write, 4=latch)
I_NCHAN : int * : number of track channels, must be 2-64, even
I_SELECTED : int * : track selected? 0 or 1
I_WNDH : int * : current TCP window height including envelopes (Read-only)
I_TCPH : int * : current TCP window height not including envelopes (Read-only)
I_TCPY : int * : current TCP window Y position relative to top of arrange view (Read-only)
I_FOLDERDEPTH : int * : folder depth change (0=normal, 1=track is a folder parent, -1=track is the last in the innermost folder, -2=track is the last in the innermost and next-innermost folders, etc
I_FOLDERCOMPACT : int * : folder compacting (only valid on folders), 0=normal, 1=small, 2=tiny children
I_MIDIHWOUT : int * : track midi hardware output index (>0 for disabled, low 5 bits are which channels (0=all, 1-16), next 5 bits are output device index (0-31))
I_PERFFLAGS : int * : track perf flags (&1=no media buffering, &2=no anticipative FX)
I_CUSTOMCOLOR : int * : custom color, OS dependent color|0x100000 (i.e. ColorToNative(r,g,b)|0x100000). If you do not |0x100000, then it will not be used (though will store the color anyway).
I_HEIGHTOVERRIDE : int * : custom height override for TCP window. 0 for none, otherwise size in pixels
B_HEIGHTLOCK : bool * : track height lock (must set I_HEIGHTOVERRIDE before locking)
D_VOL : double * : trim volume of track (0 (-inf)..1 (+0dB) .. 2 (+6dB) etc ..)
D_PAN : double * : trim pan of track (-1..1)
D_WIDTH : double * : width of track (-1..1)
D_DUALPANL : double * : dualpan position 1 (-1..1), only if I_PANMODE==6
D_DUALPANR : double * : dualpan position 2 (-1..1), only if I_PANMODE==6
I_PANMODE : int * : pan mode (0 = classic 3.x, 3=new balance, 5=stereo pan, 6 = dual pan)
D_PANLAW : double * : pan law of track. >0 for project default, 1.0 for +0dB, etc
P_ENV:<envchunkname : read only, returns TrackEnvelope *. To get a specific TrackEnvelope, call with :<VOLENV, :<PANENV, etc appended to P_ENV.
B_SHOWINMIXER : bool * : show track panel in mixer -- do not use on master
B_SHOWINTCP : bool * : show track panel in tcp -- do not use on master
B_MAINSEND : bool * : track sends audio to parent
C_MAINSEND_OFFS : char * : track send to parent channel offset
B_FREEMODE : bool * : track free-mode enabled (requires UpdateTimeline() after changing etc)
C_BEATATTACHMODE : char * : char * to one char of beat attached mode, -1=def, 0=time, 1=allbeats, 2=beatsposonly
F_MCP_FXSEND_SCALE : float * : scale of fx+send area in MCP (0.0=smallest allowed, 1=max allowed)
F_MCP_SENDRGN_SCALE : float * : scale of send area as proportion of the fx+send total area (0=min allow, 1=max)
P_PARTRACK : MediaTrack * : parent track (read-only)
P_PROJECT : ReaProject * : parent project (read-only)

-
Parameters:
          MediaTrack tr -
          string parmname -
-
Returnvalues:
          number retval -


+Description:
Get track numerical-value attributes.
B_MUTE : bool * : muted
B_PHASE : bool * : track phase inverted
IP_TRACKNUMBER : int : track number 1-based, 0=not found, -1=master track (read-only, returns the int directly)
I_SOLO : int * : soloed, 0=not soloed, 1=soloed, 2=soloed in place, 5=safe soloed, 6=safe soloed in place
I_FXEN : int * : fx enabled, 0=bypassed, !0=fx active
I_RECARM : int * : record armed, 0=not record armed, 1=record armed
I_RECINPUT : int * : record input, <0=no input, 0..n=mono hardware input, 512+n=rearoute input, &1024=stereo input pair. &4096=MIDI input, if set then low 5 bits represent channel (0=all, 1-16=only chan), next 6 bits represent physical input (63=all, 62=VKB)
I_RECMODE : int * : record mode, 0=input, 1=stereo out, 2=none, 3=stereo out w/latency compensation, 4=midi output, 5=mono out, 6=mono out w/ latency compensation, 7=midi overdub, 8=midi replace
I_RECMON : int * : record monitoring, 0=off, 1=normal, 2=not when playing (tape style)
I_RECMONITEMS : int * : monitor items while recording, 0=off, 1=on
I_AUTOMODE : int * : track automation mode, 0=trim/off, 1=read, 2=touch, 3=write, 4=latch
I_NCHAN : int * : number of track channels, 2-64, even numbers only
I_SELECTED : int * : track selected, 0=unselected, 1=selected
I_WNDH : int * : current TCP window height in pixels including envelopes (read-only)
I_TCPH : int * : current TCP window height in pixels not including envelopes (read-only)
I_TCPY : int * : current TCP window Y-position in pixels relative to top of arrange view (read-only)
I_MCPX : int * : current MCP X-position in pixels relative to mixer container
I_MCPY : int * : current MCP Y-position in pixels relative to mixer container
I_MCPW : int * : current MCP width in pixels
I_MCPH : int * : current MCP height in pixels
I_FOLDERDEPTH : int * : folder depth change, 0=normal, 1=track is a folder parent, -1=track is the last in the innermost folder, -2=track is the last in the innermost and next-innermost folders, etc
I_FOLDERCOMPACT : int * : folder compacted state (only valid on folders), 0=normal, 1=small, 2=tiny children
I_MIDIHWOUT : int * : track midi hardware output index, <0=disabled, low 5 bits are which channels (0=all, 1-16), next 5 bits are output device index (0-31)
I_PERFFLAGS : int * : track performance flags, &1=no media buffering, &2=no anticipative FX
I_CUSTOMCOLOR : int * : custom color, OS dependent color|0x100000 (i.e. ColorToNative(r,g,b)|0x100000). If you do not |0x100000, then it will not be used, but will store the color anyway)
I_HEIGHTOVERRIDE : int * : custom height override for TCP window, 0 for none, otherwise size in pixels
B_HEIGHTLOCK : bool * : track height lock (must set I_HEIGHTOVERRIDE before locking)
D_VOL : double * : trim volume of track, 0=-inf, 0.5=-6dB, 1=+0dB, 2=+6dB, etc
D_PAN : double * : trim pan of track, -1..1
D_WIDTH : double * : width of track, -1..1
D_DUALPANL : double * : dualpan position 1, -1..1, only if I_PANMODE==6
D_DUALPANR : double * : dualpan position 2, -1..1, only if I_PANMODE==6
I_PANMODE : int * : pan mode, 0=classic 3.x, 3=new balance, 5=stereo pan, 6=dual pan
D_PANLAW : double * : pan law of track, <0=project default, 1=+0dB, etc
P_ENV:<envchunkname : TrackEnvelope*, read only. Call with :<VOLENV, :<PANENV, etc appended.
B_SHOWINMIXER : bool * : track control panel visible in mixer (do not use on master track)
B_SHOWINTCP : bool * : track control panel visible in arrange view (do not use on master track)
B_MAINSEND : bool * : track sends audio to parent
C_MAINSEND_OFFS : char * : channel offset of track send to parent
B_FREEMODE : bool * : track free item positioning enabled (call UpdateTimeline() after changing)
C_BEATATTACHMODE : char * : track timebase, -1=project default, 0=time, 1=beats (position, length, rate), 2=beats (position only)
F_MCP_FXSEND_SCALE : float * : scale of fx+send area in MCP (0=minimum allowed, 1=maximum allowed)
F_MCP_SENDRGN_SCALE : float * : scale of send area as proportion of the fx+send total area (0=minimum allowed, 1=maximum allowed)
I_PLAY_OFFSET_FLAG : int * : track playback offset state, &1=bypassed, &2=offset value is measured in samples (otherwise measured in seconds)
D_PLAY_OFFSET : double * : track playback offset, units depend on I_PLAY_OFFSET_FLAG
P_PARTRACK : MediaTrack * : parent track (read-only)
P_PROJECT : ReaProject * : parent project (read-only)

+
Parameters:
          MediaTrack tr - the MediaTrack-object, whose attribute you want to request
          string parmname - the attribute, that you want to request, like D_VOL or B_SHOWINMIXER etc
+
Returnvalues:
          number retval - the value of the requested attribute


^ Reaper version 5.62Lua version 5.3 GetMIDIInputName

Functioncall:

C: bool GetMIDIInputName(int dev, char* nameout, int nameout_sz)

EEL: bool GetMIDIInputName(int dev, #nameout)

@@ -2704,17 +2712,19 @@

Datatypes used in this document

^ Reaper version 5.62Lua version 5.3 GetSet_ArrangeView2

Functioncall:

C: void GetSet_ArrangeView2(ReaProject* proj, bool isSet, int screen_x_start, int screen_x_end, double* start_timeOut, double* end_timeOut)

EEL: GetSet_ArrangeView2(ReaProject proj, bool isSet, int screen_x_start, int screen_x_end, &start_time, &end_time)

-
Lua: number start_time retval, number end_time = reaper.GetSet_ArrangeView2(ReaProject proj, boolean isSet, integer screen_x_start, integer screen_x_end)

+
Lua: number start_time retval, number end_time = reaper.GetSet_ArrangeView2(ReaProject proj, boolean isSet, integer screen_x_start, integer screen_x_end, number start_time, number end_time)

Python: (ReaProject proj, Boolean isSet, Int screen_x_start, Int screen_x_end, Float start_timeOut, Float end_timeOut) = RPR_GetSet_ArrangeView2(proj, isSet, screen_x_start, screen_x_end, start_timeOut, end_timeOut)

Description:
Gets or sets the arrange view start/end time for screen coordinates. use screen_x_start=screen_x_end=0 to use the full arrange view's start/end time

-
Parameters:
          proj - the project-number. 0 for the current project. Can also be a ReaProject-object, as returned by EnumProjects -
          isSet - -
          screen_x_start - -
          screen_x_end - -
-
Returnvalues:
          start_time retval - -
          end_time - +
Parameters:
          ReaProject proj - the project-number. 0 for the current project. Can also be a ReaProject-object, as returned by EnumProjects +
          boolean isSet - +
          integer screen_x_start - +
          integer screen_x_end - +
          number start_time - +
          number end_time - +
+
Returnvalues:
          number start_time retval - +
          number end_time -


^ Reaper version 5.62Lua version 5.3 GetSet_LoopTimeRange

Functioncall:

C: void GetSet_LoopTimeRange(bool isSet, bool isLoop, double* startOut, double* endOut, bool allowautoseek)

@@ -2742,13 +2752,13 @@

Datatypes used in this document

Returnvalues:
          start retval -
          end -


- ^ Reaper version 5.975Lua version 5.3 GetSetAutomationItemInfo

Functioncall:

+ ^ Reaper version 6.01Lua version 5.3 GetSetAutomationItemInfo

Functioncall:

C: double GetSetAutomationItemInfo(TrackEnvelope* env, int autoitem_idx, const char* desc, double value, bool is_set)

EEL: double GetSetAutomationItemInfo(TrackEnvelope env, int autoitem_idx, "desc", value, bool is_set)

Lua: number = reaper.GetSetAutomationItemInfo(TrackEnvelope env, integer autoitem_idx, string desc, number value, boolean is_set)

Python: Float RPR_GetSetAutomationItemInfo(TrackEnvelope env, Int autoitem_idx, String desc, Float value, Boolean is_set)

-Description:
Get or set automation item information. autoitem_idx=0 for the first automation item on an envelope, 1 for the second item, etc. desc can be any of the following:
D_POOL_ID: double *, automation item pool ID (as an integer); edits are propagated to all other automation items that share a pool ID
D_POSITION: double *, automation item timeline position in seconds
D_LENGTH: double *, automation item length in seconds
D_STARTOFFS: double *, automation item start offset in seconds
D_PLAYRATE: double *, automation item playback rate
D_BASELINE: double *, automation item baseline value in the range [0,1]
D_AMPLITUDE: double *, automation item amplitude in the range [-1,1]
D_LOOPSRC: double *, nonzero if the automation item contents are looped
D_UISEL: double *, nonzero if the automation item is selected in the arrange view
D_POOL_QNLEN : double *, automation item pooled source length in quarter notes (setting will affect all pooled instances)

+Description:
Get or set automation item information. autoitem_idx=0 for the first automation item on an envelope, 1 for the second item, etc. desc can be any of the following:
D_POOL_ID : double * : automation item pool ID (as an integer); edits are propagated to all other automation items that share a pool ID
D_POSITION : double * : automation item timeline position in seconds
D_LENGTH : double * : automation item length in seconds
D_STARTOFFS : double * : automation item start offset in seconds
D_PLAYRATE : double * : automation item playback rate
D_BASELINE : double * : automation item baseline value in the range [0,1]
D_AMPLITUDE : double * : automation item amplitude in the range [-1,1]
D_LOOPSRC : double * : nonzero if the automation item contents are looped
D_UISEL : double * : nonzero if the automation item is selected in the arrange view
D_POOL_QNLEN : double * : automation item pooled source length in quarter notes (setting will affect all pooled instances)

Parameters:
          env -
          autoitem_idx -
          desc -
          value -
          is_set -
Returnvalues:
          number -


^ Reaper version 5.975Lua version 5.3 GetSetAutomationItemInfo_String

Functioncall:

@@ -2880,13 +2890,13 @@

Datatypes used in this document

          swingmodeIn -
          swingamtIn -


- ^ Reaper version 5.975Lua version 5.3 GetSetProjectInfo

Functioncall:

+ ^ Reaper version 6.01Lua version 5.3 GetSetProjectInfo

Functioncall:

C: double GetSetProjectInfo(ReaProject* project, const char* desc, double value, bool is_set)

EEL: double GetSetProjectInfo(ReaProject project, "desc", value, bool is_set)

Lua: number value = reaper.GetSetProjectInfo(ReaProject project, string desc, number value, boolean is_set)

Python: Float RPR_GetSetProjectInfo(ReaProject project, String desc, Float value, Boolean is_set)

-Description:
Get or set project information.

RENDER_SETTINGS: &(1|2)=0:master mix, &1=stems+master mix, &2=stems only, &4=multichannel tracks to multichannel files, &8=use render matrix, &16=tracks with only mono media to mono files, &32=selected media items; &64=selected media items via master
RENDER_BOUNDSFLAG : 0=custom time bounds, 1=entire project, 2=time selection, 3=all project regions, 4=selected media items, 5=selected project regions
RENDER_CHANNELS: number of channels in rendered file
RENDER_SRATE: sample rate of rendered file (or 0 for project sample rate)
RENDER_STARTPOS : render start time when RENDER_BOUNDSFLAG=0
RENDER_ENDPOS : render end time when RENDER_BOUNDSFLAG=0
RENDER_TAILFLAG: apply render tail setting when rendering: &1=custom time bounds, &2=entire project, &4=time selection, &8=all project regions, &16=selected media items, &32=selected project regions
RENDER_TAILMS: tail length in ms to render (only used if RENDER_BOUNDSFLAG and RENDER_TAILFLAG are set)
RENDER_ADDTOPROJ: 1=add rendered files to project
RENDER_DITHER: &1=dither, &2=noise shaping, &4=dither stems, &8=noise shaping on stems
PROJECT_SRATE: samplerate (ignored unless PROJECT_SRATE_USE set)
PROJECT_SRATE_USE: set to 1 if project samplerate is used

+Description:
Get or set project information.

RENDER_SETTINGS : &(1|2)=0:master mix, &1=stems+master mix, &2=stems only, &4=multichannel tracks to multichannel files, &8=use render matrix, &16=tracks with only mono media to mono files, &32=selected media items, &64=selected media items via master
RENDER_BOUNDSFLAG : 0=custom time bounds, 1=entire project, 2=time selection, 3=all project regions, 4=selected media items, 5=selected project regions
RENDER_CHANNELS : number of channels in rendered file
RENDER_SRATE : sample rate of rendered file (or 0 for project sample rate)
RENDER_STARTPOS : render start time when RENDER_BOUNDSFLAG=0
RENDER_ENDPOS : render end time when RENDER_BOUNDSFLAG=0
RENDER_TAILFLAG : apply render tail setting when rendering: &1=custom time bounds, &2=entire project, &4=time selection, &8=all project regions, &16=selected media items, &32=selected project regions
RENDER_TAILMS : tail length in ms to render (only used if RENDER_BOUNDSFLAG and RENDER_TAILFLAG are set)
RENDER_ADDTOPROJ : 1=add rendered files to project
RENDER_DITHER : &1=dither, &2=noise shaping, &4=dither stems, &8=noise shaping on stems
PROJECT_SRATE : samplerate (ignored unless PROJECT_SRATE_USE set)
PROJECT_SRATE_USE : set to 1 if project samplerate is used

Parameters:
          ReaProject project -
          string desc -
          number value -
          boolean is_set -
Returnvalues:
          number value -


^ Reaper version 5.975Lua version 5.3 GetSetProjectInfo_String

Functioncall:

@@ -2895,7 +2905,7 @@

Datatypes used in this document

Lua: boolean retval, string valuestrNeedBig = reaper.GetSetProjectInfo_String(ReaProject project, string desc, string valuestrNeedBig, boolean is_set)

Python: (Boolean retval, ReaProject project, String desc, String valuestrNeedBig, Boolean is_set) = RPR_GetSetProjectInfo_String(project, desc, valuestrNeedBig, is_set)

-Description:
Get or set project information.

RECORD_PATH: recording directory -- may be blank or a relative path, to get the effective path see GetProjectPathEx
RENDER_FILE: render directory
RENDER_PATTERN: render file name (may contain wildcards)
RENDER_FORMAT: base64-encoded sink configuration (see project files, etc). Callers can also pass a simple 4-byte string (non-base64-encoded), to use default settings for that sink type.
see render-code-documentation for how the unencoded RENDER_FORMAT-string is structured.

To just use the 4-byte-string, you can use:
"evaw" for wave, "ffia" for aiff, " osi" for audio-cd, " pdd" for ddp, "calf" for flac, "l3pm" for mp3, "vggo" for ogg, "SggO" for Opus, "PMFF" for FFMpeg-video, "FVAX" for MP4Video/Audio on Mac, " FIG" for Gif, " FCL" for LCF, "kpvw" for wavepack

+Description:
Get or set project information.

MARKER_GUID:X : get the GUID (unique ID) of the marker or region with index X, where X is the index passed to EnumProjectMarkers, not necessarily the displayed number
RECORD_PATH: recording directory -- may be blank or a relative path, to get the effective path see GetProjectPathEx
RENDER_FILE: render directory
RENDER_PATTERN: render file name (may contain wildcards)
RENDER_FORMAT: base64-encoded sink configuration (see project files, etc). Callers can also pass a simple 4-byte string (non-base64-encoded), to use default settings for that sink type.
see render-code-documentation for how the unencoded RENDER_FORMAT-string is structured.

To just use the 4-byte-string, you can use:
"evaw" for wave, "ffia" for aiff, " osi" for audio-cd, " pdd" for ddp, "calf" for flac, "l3pm" for mp3, "vggo" for ogg, "SggO" for Opus, "PMFF" for FFMpeg-video, "FVAX" for MP4Video/Audio on Mac, " FIG" for Gif, " FCL" for LCF, "kpvw" for wavepack

Parameters:
          ReaProject project -
          string desc - @@ -4045,13 +4055,13 @@

Datatypes used in this document

Description:
Returns the index of the next selected MIDI text/sysex event after textsyxidx (-1 if there are no more selected events).

Parameters:
          take -
          textsyxidx -
Returnvalues:
          integer -


- ^ Reaper version 5.62Lua version 5.3 MIDI_GetAllEvts

Functioncall:

+ ^ Reaper version 6.00Lua version 5.3 MIDI_GetAllEvts

Functioncall:

C: bool MIDI_GetAllEvts(MediaItem_Take* take, char* bufNeedBig, int* bufNeedBig_sz)

EEL: bool MIDI_GetAllEvts(MediaItem_Take take, #buf)

Lua: boolean retval, string buf = reaper.MIDI_GetAllEvts(MediaItem_Take take, string buf)

Python: (Boolean retval, MediaItem_Take take, String bufNeedBig, Int bufNeedBig_sz) = RPR_MIDI_GetAllEvts(take, bufNeedBig, bufNeedBig_sz)

-Description:
Get all MIDI data. MIDI buffer is returned as a list of { int offset, char flag, int msglen, unsigned char msg[] }. offset: MIDI ticks from previous event, flag: &1=selected &2=muted, msglen: byte length of msg (usually 3), msg: the MIDI message. For tick intervals longer than a 32 bit word can represent, zero-length meta events may be placed between valid events. See MIDI_SetAllEvts.

+Description:
Get all MIDI data. MIDI buffer is returned as a list of { int offset, char flag, int msglen, unsigned char msg[] }.

offset: MIDI ticks from previous event
flag: &1=selected &2=muted
flag high 4 bits for CC shape: &16=linear, &32=slow start/end, &16|32=fast start, &64=fast end, &64|16=bezier
msg: the MIDI message.

A meta-event of type 0xF followed by 'CCBZ ' and 5 more bytes represents bezier curve data for the previous MIDI event: 1 byte for the bezier type (usually 0) and 4 bytes for the bezier tension as a float.
For tick intervals longer than a 32 bit word can represent, zero-length meta events may be placed between valid events.

See MIDI_SetAllEvts.

Parameters:
          take -
@@ -4066,7 +4076,22 @@

Datatypes used in this document

Description:
Get MIDI CC event properties.

Parameters:
          take -
          ccidx -
-
Returnvalues:
          retval -
          selected -
          muted -
          ppqpos -
          chanmsg -
          chan -
          msg2 -
          msg3 -


+
Returnvalues:
          retval -
          selected -
          muted -
          ppqpos -
          chanmsg -
          chan -
          msg2 -
          msg3 -


+ ^ Reaper version 6.00Lua version 5.3 MIDI_GetCCShape

Functioncall:

+
C: bool MIDI_GetCCShape(MediaItem_Take* take, int ccidx, int* shapeOut, double* beztensionOut)

+
EEL: bool MIDI_GetCCShape(MediaItem_Take take, int ccidx, int &shape, &beztension)

+
Lua: boolean retval, number shape, number beztension = reaper.MIDI_GetCCShape(MediaItem_Take take, integer ccidx)

+
Python: (Boolean retval, MediaItem_Take take, Int ccidx, Int shapeOut, Float beztensionOut) = RPR_MIDI_GetCCShape(take, ccidx, shapeOut, beztensionOut)

+ +Description:
Get CC shape and bezier tension. See MIDI_GetCC, MIDI_SetCCShape

+
+
Parameters:
          MediaItem_Take take - +
          integer ccidx - +
+
Returnvalues:
          boolean retval - +
          number shape - +
          number beztension - +


^ Reaper version 5.62Lua version 5.3 MIDI_GetEvt

Functioncall:

C: bool MIDI_GetEvt(MediaItem_Take* take, int evtidx, bool* selectedOut, bool* mutedOut, double* ppqposOut, char* msg, int* msg_sz)

EEL: bool MIDI_GetEvt(MediaItem_Take take, int evtidx, bool &selected, bool &muted, &ppqpos, #msg)

@@ -4171,15 +4196,24 @@

Datatypes used in this document

Description:
Get the active scale in the media source, if any. root 0=C, 1=C#, etc. scale &0x1=root, &0x2=minor 2nd, &0x4=major 2nd, &0x8=minor 3rd, &0xF=fourth, etc.

Parameters:
          take -
Returnvalues:
          retval -
          root -
          scale -
          name -


- ^ Reaper version 5.62Lua version 5.3 MIDI_GetTextSysexEvt

Functioncall:

+ ^ Reaper version 6.00Lua version 5.3 MIDI_GetTextSysexEvt

Functioncall:

C: bool MIDI_GetTextSysexEvt(MediaItem_Take* take, int textsyxevtidx, bool* selectedOutOptional, bool* mutedOutOptional, double* ppqposOutOptional, int* typeOutOptional, char* msgOptional, int* msgOptional_sz)

EEL: bool MIDI_GetTextSysexEvt(MediaItem_Take take, int textsyxevtidx, optional bool &selected, optional bool &muted, optional &ppqpos, optional int &type, optional #msg)

Lua: boolean retval, optional boolean selected, optional boolean muted, optional number ppqpos, optional number type, optional string msg = reaper.MIDI_GetTextSysexEvt(MediaItem_Take take, integer textsyxevtidx, optional boolean selected, optional boolean muted, optional number ppqpos, optional number type, optional string msg)

Python: (Boolean retval, MediaItem_Take take, Int textsyxevtidx, Boolean selectedOutOptional, Boolean mutedOutOptional, Float ppqposOutOptional, Int typeOutOptional, String msgOptional, Int msgOptional_sz) = RPR_MIDI_GetTextSysexEvt(take, textsyxevtidx, selectedOutOptional, mutedOutOptional, ppqposOutOptional, typeOutOptional, msgOptional, msgOptional_sz)

-Description:
Get MIDI meta-event properties. Allowable types are -1:sysex (msg should not include bounding F0..F7), 1-7:MIDI text event types.

-
Parameters:
          take -
          textsyxevtidx -
-
Returnvalues:
          retval -
          selected -
          muted -
          ppqpos -
          type -
          string msg -


+Description:
Get MIDI meta-event properties. Allowable types are -1:sysex (msg should not include bounding F0..F7), 1-14:MIDI text event types, 15=REAPER notation event. For all other meta-messages, type is returned as -2 and msg returned as all zeroes.

See MIDI_GetEvt.

+
+
Parameters:
          take - +
          textsyxevtidx - +
+
Returnvalues:
          retval - +
          selected - +
          muted - +
          ppqpos - +
          type - +
          string msg - +


^ Reaper version 5.62Lua version 5.3 MIDI_GetTrackHash

Functioncall:

C: bool MIDI_GetTrackHash(MediaTrack* track, bool notesonly, char* hash, int hash_sz)

EEL: bool MIDI_GetTrackHash(MediaTrack track, bool notesonly, #hash)

@@ -4221,13 +4255,13 @@

Datatypes used in this document

Description:
Insert a new MIDI note. Set noSort if inserting multiple events, then call MIDI_Sort when done.

Parameters:
          take -
          selected -
          muted -
          startppqpos -
          endppqpos -
          chan -
          pitch -
          vel -
          noSortIn -
Returnvalues:
          boolean -


- ^ Reaper version 5.62Lua version 5.3 MIDI_InsertTextSysexEvt

Functioncall:

+ ^ Reaper version 6.00Lua version 5.3 MIDI_InsertTextSysexEvt

Functioncall:

C: bool MIDI_InsertTextSysexEvt(MediaItem_Take* take, bool selected, bool muted, double ppqpos, int type, const char* bytestr, int bytestr_sz)

EEL: bool MIDI_InsertTextSysexEvt(MediaItem_Take take, bool selected, bool muted, ppqpos, int type, "bytestr")

Lua: boolean = reaper.MIDI_InsertTextSysexEvt(MediaItem_Take take, boolean selected, boolean muted, number ppqpos, integer type, string bytestr)

Python: Boolean RPR_MIDI_InsertTextSysexEvt(MediaItem_Take take, Boolean selected, Boolean muted, Float ppqpos, Int type, String bytestr, Int bytestr_sz)

-Description:
Insert a new MIDI text or sysex event. Allowable types are -1:sysex (msg should not include bounding F0..F7), 1-7:MIDI text event types.

+Description:
Insert a new MIDI text or sysex event. Allowable types are -1:sysex (msg should not include bounding F0..F7), 1-14:MIDI text event types, 15=REAPER notation event.

Parameters:
          take -
          selected -
          muted -
          ppqpos -
          type -
          bytestr -
Returnvalues:
          boolean -


^ Reaper version 5.62Lua version 5.3 midi_reinit

Functioncall:

@@ -4245,13 +4279,13 @@

Datatypes used in this document

Description:
Select or deselect all MIDI content.

Parameters:
          take -
          select -


- ^ Reaper version 5.62Lua version 5.3 MIDI_SetAllEvts

Functioncall:

+ ^ Reaper version 6.00Lua version 5.3 MIDI_SetAllEvts

Functioncall:

C: bool MIDI_SetAllEvts(MediaItem_Take* take, const char* buf, int buf_sz)

EEL: bool MIDI_SetAllEvts(MediaItem_Take take, "buf")

Lua: boolean = reaper.MIDI_SetAllEvts(MediaItem_Take take, string buf)

Python: Boolean RPR_MIDI_SetAllEvts(MediaItem_Take take, String buf, Int buf_sz)

-Description:
Set all MIDI data. MIDI buffer is passed in as a list of { int offset, char flag, int msglen, unsigned char msg[] }. offset: MIDI ticks from previous event, flag: &1=selected &2=muted, msglen: byte length of msg (usually 3), msg: the MIDI message. For tick intervals longer than a 32 bit word can represent, zero-length meta events may be placed between valid events. See MIDI_GetAllEvts.

+Description:
Set all MIDI data. MIDI buffer is passed in as a list of { int offset, char flag, int msglen, unsigned char msg[] }.

offset: MIDI ticks from previous event
flag: &1=selected &2=muted
flag high 4 bits for CC shape: &16=linear, &32=slow start/end, &16|32=fast start, &64=fast end, &64|16=bezier
msg: the MIDI message.

A meta-event of type 0xF followed by 'CCBZ ' and 5 more bytes represents bezier curve data for the previous MIDI event: 1 byte for the bezier type (usually 0) and 4 bytes for the bezier tension as a float.
For tick intervals longer than a 32 bit word can represent, zero-length meta events may be placed between valid events.

See MIDI_GetAllEvts.

Parameters:
          take -
          buf - @@ -4266,7 +4300,23 @@

Datatypes used in this document

Description:
Set MIDI CC event properties. Properties passed as NULL will not be set. set noSort if setting multiple events, then call MIDI_Sort when done.

Parameters:
          take -
          ccidx -
          selectedIn -
          mutedIn -
          chanmsgIn -
          chanmsgIn -
          chanIn -
          msg2In -
          msg3In -
          noSortIn -
-
Returnvalues:
          boolean -


+
Returnvalues:
          boolean -


+ ^ Reaper version 6.00Lua version 5.3 MIDI_SetCCShape

Functioncall:

+
C: bool MIDI_SetCCShape(MediaItem_Take* take, int ccidx, int shape, double beztension, const bool* noSortInOptional)

+
EEL: bool MIDI_SetCCShape(MediaItem_Take take, int ccidx, int shape, beztension, optional bool noSortIn)

+
Lua: boolean reaper.MIDI_SetCCShape(MediaItem_Take take, integer ccidx, integer shape, number beztension, optional boolean noSortIn)

+
Python: Boolean RPR_MIDI_SetCCShape(MediaItem_Take take, Int ccidx, Int shape, Float beztension, const bool noSortInOptional)

+ +Description:
Set CC shape and bezier tension. set noSort if setting multiple events, then call MIDI_Sort when done. See MIDI_SetCC, MIDI_GetCCShape

+
+
Parameters:
          MediaItem_Take take - +
          integer ccidx - +
          integer shape - +
          number beztension - +
          optional boolean noSortIn - +
+
Returnvalues:
          boolean retval - +


^ Reaper version 5.62Lua version 5.3 MIDI_SetEvt

Functioncall:

C: bool MIDI_SetEvt(MediaItem_Take* take, int evtidx, const bool* selectedInOptional, const bool* mutedInOptional, const double* ppqposInOptional, const char* msgOptional, int msgOptional_sz, const bool* noSortInOptional)

EEL: bool MIDI_SetEvt(MediaItem_Take take, int evtidx, optional bool selectedIn, optional bool mutedIn, optional ppqposIn, optional "msg", optional bool noSortIn)

@@ -4294,13 +4344,13 @@

Datatypes used in this document

Description:
Set MIDI note properties. Properties passed as NULL (or negative values) will not be set. Set noSort if setting multiple events, then call MIDI_Sort when done. Setting multiple note start positions at once is done more safely by deleting and re-inserting the notes.

Parameters:
          take -
          noteidx -
          selectedIn -
          mutedIn -
          chanIn -
          chanIn -
          chanIn -
          pitchIn -
          velIn -
          noSortIn -
Returnvalues:
          boolean -


- ^ Reaper version 5.62Lua version 5.3 MIDI_SetTextSysexEvt

Functioncall:

+ ^ Reaper version 6.00Lua version 5.3 MIDI_SetTextSysexEvt

Functioncall:

C: bool MIDI_SetTextSysexEvt(MediaItem_Take* take, int textsyxevtidx, const bool* selectedInOptional, const bool* mutedInOptional, const double* ppqposInOptional, const int* typeInOptional, const char* msgOptional, int msgOptional_sz, const bool* noSortInOptional)

EEL: bool MIDI_SetTextSysexEvt(MediaItem_Take take, int textsyxevtidx, optional bool selectedIn, optional bool mutedIn, optional ppqposIn, optional int typeIn, optional "msg", optional bool noSortIn)

Lua: boolean = reaper.MIDI_SetTextSysexEvt(MediaItem_Take take, integer textsyxevtidx, optional boolean selectedIn, optional boolean mutedIn, optional number ppqposIn, optional number typeIn, optional string msg, optional boolean noSortIn)

Python: Boolean RPR_MIDI_SetTextSysexEvt(MediaItem_Take take, Int textsyxevtidx, const bool selectedInOptional, const bool mutedInOptional, const double ppqposInOptional, const int typeInOptional, String msgOptional, Int msgOptional_sz, const bool noSortInOptional)

-Description:
Set MIDI text or sysex event properties. Properties passed as NULL will not be set. Allowable types are -1:sysex (msg should not include bounding F0..F7), 1-7:MIDI text event types. set noSort if setting multiple events, then call MIDI_Sort when done.

+Description:
Set MIDI text or sysex event properties. Properties passed as NULL will not be set. Allowable types are -1:sysex (msg should not include bounding F0..F7), 1-14:MIDI text event types, 15=REAPER notation event. set noSort if setting multiple events, then call MIDI_Sort when done.

Parameters:
          take -
          textsyxevtidx -
          selectedIn -
          mutedIn -
          typeIn -
          typeIn -
          msg -
          noSortIn -
Returnvalues:
          boolean -


^ Reaper version 5.62Lua version 5.3 MIDI_Sort

Functioncall:

@@ -4727,7 +4777,16 @@

Datatypes used in this document

Description:
Creates a new directory. You can recursivly create directories, means: if the higher directories don't exist, the will also be automatically created.
returns positive value on success, 0 on failure.

Parameters:
          path - the directory-path to be created
          ignored - unknown
-
Returnvalues:
          integer -


+
Returnvalues:
          integer -


+ ^ Reaper version 6.00Lua version 5.3 reduce_open_files

Functioncall:

+
C: int reduce_open_files(int flags)

+
EEL: int reduce_open_files(int flags)

+
Lua: integer reaper.reduce_open_files(integer flags)

+
Python: Int RPR_reduce_open_files(Int flags)

+ +Description:
garbage-collects extra open files and closes them. if flags has 1 set, this is done incrementally (call this from a regular timer, if desired). if flags has 2 set, files are aggressively closed (they may need to be re-opened very soon).

returns number of files closed by this call.

+
Parameters:
          integer flags - influences, how the garbage collection shall be
&1, incrementally
&2, aggressively(files need to be reopened after that, if needed)
+
Returnvalues:
          integer - the number of closed files


^ Reaper version 5.62Lua version 5.3 RefreshToolbar

Functioncall:

C: void RefreshToolbar(int command_id)

EEL: RefreshToolbar(int command_id)

@@ -5018,13 +5077,13 @@

Datatypes used in this document

Returnvalues:
          integer -


- ^ Reaper version 5.62Lua version 5.3 SetMediaItemInfo_Value

Functioncall:

+ ^ Reaper version 6.01Lua version 5.3 SetMediaItemInfo_Value

Functioncall:

C: bool SetMediaItemInfo_Value(MediaItem* item, const char* parmname, double newvalue)

EEL: bool SetMediaItemInfo_Value(MediaItem item, "parmname", newvalue)

Lua: boolean = reaper.SetMediaItemInfo_Value(MediaItem item, string parmname, number newvalue)

Python: Boolean RPR_SetMediaItemInfo_Value(MediaItem item, String parmname, Float newvalue)

-Description:
Set media item numerical-value attributes.
B_MUTE : bool * to muted state
B_LOOPSRC : bool * to loop source
B_ALLTAKESPLAY : bool * to all takes play
B_UISEL : bool * to ui selected
C_BEATATTACHMODE : char * to one char of beat attached mode, -1=def, 0=time, 1=allbeats, 2=beatsosonly
C_LOCK : char * to one char of lock flags (&1 is locked, currently)
D_VOL : double * of item volume (volume bar)
D_POSITION : double * of item position (seconds)
D_LENGTH : double * of item length (seconds)
D_SNAPOFFSET : double * of item snap offset (seconds)
D_FADEINLEN : double * of item fade in length (manual, seconds)
D_FADEOUTLEN : double * of item fade out length (manual, seconds)
D_FADEINDIR : double * of item fade in curve [-1; 1]
D_FADEOUTDIR : double * of item fade out curve [-1; 1]
D_FADEINLEN_AUTO : double * of item autofade in length (seconds, -1 for no autofade set)
D_FADEOUTLEN_AUTO : double * of item autofade out length (seconds, -1 for no autofade set)
C_FADEINSHAPE : int * to fadein shape, 0=linear, ...
C_FADEOUTSHAPE : int * to fadeout shape
I_GROUPID : int * to group ID (0 = no group)
I_LASTY : int * to last y position in track (readonly)
I_LASTH : int * to last height in track (readonly)
I_CUSTOMCOLOR : int * : custom color, OS dependent color|0x100000 (i.e. ColorToNative(r,g,b)|0x100000). If you do not |0x100000, then it will not be used (though will store the color anyway).
I_CURTAKE : int * to active take
IP_ITEMNUMBER : int, item number within the track (read-only, returns the item number directly)
F_FREEMODE_Y : float * to free mode y position (0..1)
F_FREEMODE_H : float * to free mode height (0..1)

+Description:
Set media item numerical-value attributes.
B_MUTE : bool * : muted
B_LOOPSRC : bool * : loop source
B_ALLTAKESPLAY : bool * : all takes play
B_UISEL : bool * : selected in arrange view
C_BEATATTACHMODE : char * : item timebase, -1=track or project default, 1=beats (position, length, rate), 2=beats (position only). for auto-stretch timebase: C_BEATATTACHMODE=1, C_AUTOSTRETCH=1
C_AUTOSTRETCH: : char * : auto-stretch at project tempo changes, 1=enabled, requires C_BEATATTACHMODE=1
C_LOCK : char * : locked, &1=locked
D_VOL : double * : item volume, 0=-inf, 0.5=-6dB, 1=+0dB, 2=+6dB, etc
D_POSITION : double * : item position in seconds
D_LENGTH : double * : item length in seconds
D_SNAPOFFSET : double * : item snap offset in seconds
D_FADEINLEN : double * : item manual fadein length in seconds
D_FADEOUTLEN : double * : item manual fadeout length in seconds
D_FADEINDIR : double * : item fadein curvature, -1..1
D_FADEOUTDIR : double * : item fadeout curvature, -1..1
D_FADEINLEN_AUTO : double * : item auto-fadein length in seconds, -1=no auto-fadein
D_FADEOUTLEN_AUTO : double * : item auto-fadeout length in seconds, -1=no auto-fadeout
C_FADEINSHAPE : int * : fadein shape, 0..6, 0=linear
C_FADEOUTSHAPE : int * : fadeout shape, 0..6, 0=linear
I_GROUPID : int * : group ID, 0=no group
I_LASTY : int * : Y-position of track in pixels (read-only)
I_LASTH : int * : height in track in pixels (read-only)
I_CUSTOMCOLOR : int * : custom color, OS dependent color|0x100000 (i.e. ColorToNative(r,g,b)|0x100000). If you do not |0x100000, then it will not be used, but will store the color anyway)
I_CURTAKE : int * : active take number
IP_ITEMNUMBER : int, item number on this track (read-only, returns the item number directly)
F_FREEMODE_Y : float * : free item positioning Y-position, 0=top of track, 1=bottom of track (will never be 1)
F_FREEMODE_H : float * : free item positioning height, 0=no height, 1=full height of track (will never be 0)

Parameters:
          item -
          parmname -
          newvalue -
Returnvalues:
          boolean -


^ Reaper version 5.62Lua version 5.3 SetMediaItemLength

Functioncall:

@@ -5072,22 +5131,22 @@

Datatypes used in this document

Description:
Set media source of media item take. The old source will not be destroyed, it is the caller's responsibility to retrieve it and destroy it after. If source already exists in any project, it will be duplicated before being set. C/C++ code should not use this and instead use GetSetMediaItemTakeInfo() with P_SOURCE to manage ownership directly.

Parameters:
          take -
          source -
Returnvalues:
          boolean -


- ^ Reaper version 5.976Lua version 5.3 SetMediaItemTakeInfo_Value

Functioncall:

+ ^ Reaper version 6.01Lua version 5.3 SetMediaItemTakeInfo_Value

Functioncall:

C: bool SetMediaItemTakeInfo_Value(MediaItem_Take* take, const char* parmname, double newvalue)

EEL: bool SetMediaItemTakeInfo_Value(MediaItem_Take take, "parmname", newvalue)

Lua: boolean = reaper.SetMediaItemTakeInfo_Value(MediaItem_Take take, string parmname, number newvalue)

Python: Boolean RPR_SetMediaItemTakeInfo_Value(MediaItem_Take take, String parmname, Float newvalue)

-Description:
Set media item take numerical-value attributes.
D_STARTOFFS : double *, start offset in take of item
D_VOL : double *, take volume (negative if take polarity is flipped)
D_PAN : double *, take pan
D_PANLAW : double *, take pan law (-1.0=default, 0.5=-6dB, 1.0=+0dB, etc)
D_PLAYRATE : double *, take playrate (1.0=normal, 2.0=doublespeed, etc)
D_PITCH : double *, take pitch adjust (in semitones, 0.0=normal, +12 = one octave up, etc)
B_PPITCH, bool *, preserve pitch when changing rate
I_CHANMODE, int *, channel mode (0=normal, 1=revstereo, 2=downmix, 3=l, 4=r)
I_PITCHMODE, int *, pitch shifter mode, -1=proj default, otherwise high word=shifter low word = parameter
I_CUSTOMCOLOR : int *, custom color, OS dependent color|0x100000 (i.e. ColorToNative(r,g,b)|0x100000). If you do not |0x100000, then it will not be used (though will store the color anyway).
IP_TAKENUMBER : int, take number within the item (read-only, returns the take number directly)

+Description:
Set media item take numerical-value attributes.
D_STARTOFFS : double * : start offset in source media, in seconds
D_VOL : double * : take volume, 0=-inf, 0.5=-6dB, 1=+0dB, 2=+6dB, etc, negative if take polarity is flipped
D_PAN : double * : take pan, -1..1
D_PANLAW : double * : take pan law, -1=default, 0.5=-6dB, 1.0=+0dB, etc
D_PLAYRATE : double * : take playback rate, 0.5=half speed, 1=normal, 2=double speed, etc
D_PITCH : double * : take pitch adjustment in semitones, -12=one octave down, 0=normal, +12=one octave up, etc
B_PPITCH : bool * : preserve pitch when changing playback rate
I_CHANMODE : int * : channel mode, 0=normal, 1=reverse stereo, 2=downmix, 3=left, 4=right
I_PITCHMODE : int * : pitch shifter mode, -1=projext default, otherwise high 2 bytes=shifter, low 2 bytes=parameter
I_CUSTOMCOLOR : int * : custom color, OS dependent color|0x100000 (i.e. ColorToNative(r,g,b)|0x100000). If you do not |0x100000, then it will not be used, but will store the color anyway)
IP_TAKENUMBER : int : take number (read-only, returns the take number directly)

Parameters:
          take -
          parmname -
          newvalue -
Returnvalues:
          boolean -


- ^ Reaper version 5.982Lua version 5.3 SetMediaTrackInfo_Value

Functioncall:

+ ^ Reaper version 6.01Lua version 5.3 SetMediaTrackInfo_Value

Functioncall:

C: bool SetMediaTrackInfo_Value(MediaTrack* tr, const char* parmname, double newvalue)

EEL: bool SetMediaTrackInfo_Value(MediaTrack tr, "parmname", newvalue)

Lua: boolean = reaper.SetMediaTrackInfo_Value(MediaTrack tr, string parmname, number newvalue)

Python: Boolean RPR_SetMediaTrackInfo_Value(MediaTrack tr, String parmname, Float newvalue)

-Description:
Set track numerical-value attributes.
B_MUTE : bool * : mute flag
B_PHASE : bool * : invert track phase
IP_TRACKNUMBER : int : track number (returns zero if not found, -1 for master track) (read-only, returns the int directly)
I_SOLO : int * : 0=not soloed, 1=solo, 2=soloed in place. also: 5=solo-safe solo, 6=solo-safe soloed in place
I_FXEN : int * : 0=fx bypassed, nonzero = fx active
I_RECARM : int * : 0=not record armed, 1=record armed
I_RECINPUT : int * : record input. <0 = no input, 0..n = mono hardware input, 512+n = rearoute input, 1024 set for stereo input pair. 4096 set for MIDI input, if set, then low 6 bits represent channel (0=all, 1-16=only chan), then next 6 bits represent physical input (63=all, 62=VKB)
I_RECMODE : int * : record mode (0=input, 1=stereo out, 2=none, 3=stereo out w/latcomp, 4=midi output, 5=mono out, 6=mono out w/ lat comp, 7=midi overdub, 8=midi replace
I_RECMON : int * : record monitor (0=off, 1=normal, 2=not when playing (tapestyle))
I_RECMONITEMS : int * : monitor items while recording (0=off, 1=on)
I_AUTOMODE : int * : track automation mode (0=trim/off, 1=read, 2=touch, 3=write, 4=latch)
I_NCHAN : int * : number of track channels, must be 2-64, even
I_SELECTED : int * : track selected? 0 or 1
I_WNDH : int * : current TCP window height including envelopes (Read-only)
I_TCPH : int * : current TCP window height not including envelopes (Read-only)
I_TCPY : int * : current TCP window Y position relative to top of arrange view (Read-only)
I_FOLDERDEPTH : int * : folder depth change (0=normal, 1=track is a folder parent, -1=track is the last in the innermost folder, -2=track is the last in the innermost and next-innermost folders, etc
I_FOLDERCOMPACT : int * : folder compacting (only valid on folders), 0=normal, 1=small, 2=tiny children
I_MIDIHWOUT : int * : track midi hardware output index (>0 for disabled, low 5 bits are which channels (0=all, 1-16), next 5 bits are output device index (0-31))
I_PERFFLAGS : int * : track perf flags (&1=no media buffering, &2=no anticipative FX)
I_CUSTOMCOLOR : int * : custom color, OS dependent color|0x100000 (i.e. ColorToNative(r,g,b)|0x100000). If you do not |0x100000, then it will not be used (though will store the color anyway).
I_HEIGHTOVERRIDE : int * : custom height override for TCP window. 0 for none, otherwise size in pixels
B_HEIGHTLOCK : bool * : track height lock (must set I_HEIGHTOVERRIDE before locking)
D_VOL : double * : trim volume of track (0 (-inf)..1 (+0dB) .. 2 (+6dB) etc ..)
D_PAN : double * : trim pan of track (-1..1)
D_WIDTH : double * : width of track (-1..1)
D_DUALPANL : double * : dualpan position 1 (-1..1), only if I_PANMODE==6
D_DUALPANR : double * : dualpan position 2 (-1..1), only if I_PANMODE==6
I_PANMODE : int * : pan mode (0 = classic 3.x, 3=new balance, 5=stereo pan, 6 = dual pan)
D_PANLAW : double * : pan law of track. >0 for project default, 1.0 for +0dB, etc
P_ENV:<envchunkname : read only, returns TrackEnvelope *. To get a specific TrackEnvelope, call with :<VOLENV, :<PANENV, etc appended.
B_SHOWINMIXER : bool * : show track panel in mixer -- do not use on master
B_SHOWINTCP : bool * : show track panel in tcp -- do not use on master
B_MAINSEND : bool * : track sends audio to parent
C_MAINSEND_OFFS : char * : track send to parent channel offset
B_FREEMODE : bool * : track free-mode enabled (requires UpdateTimeline() after changing etc)
C_BEATATTACHMODE : char * : char * to one char of beat attached mode, -1=def, 0=time, 1=allbeats, 2=beatsposonly
F_MCP_FXSEND_SCALE : float * : scale of fx+send area in MCP (0.0=smallest allowed, 1=max allowed)
F_MCP_SENDRGN_SCALE : float * : scale of send area as proportion of the fx+send total area (0=min allow, 1=max)

+Description:
Set track numerical-value attributes.
B_MUTE : bool * : muted
B_PHASE : bool * : track phase inverted
IP_TRACKNUMBER : int : track number 1-based, 0=not found, -1=master track (read-only, returns the int directly)
I_SOLO : int * : soloed, 0=not soloed, 1=soloed, 2=soloed in place, 5=safe soloed, 6=safe soloed in place
I_FXEN : int * : fx enabled, 0=bypassed, !0=fx active
I_RECARM : int * : record armed, 0=not record armed, 1=record armed
I_RECINPUT : int * : record input, <0=no input, 0..n=mono hardware input, 512+n=rearoute input, &1024=stereo input pair. &4096=MIDI input, if set then low 5 bits represent channel (0=all, 1-16=only chan), next 6 bits represent physical input (63=all, 62=VKB)
I_RECMODE : int * : record mode, 0=input, 1=stereo out, 2=none, 3=stereo out w/latency compensation, 4=midi output, 5=mono out, 6=mono out w/ latency compensation, 7=midi overdub, 8=midi replace
I_RECMON : int * : record monitoring, 0=off, 1=normal, 2=not when playing (tape style)
I_RECMONITEMS : int * : monitor items while recording, 0=off, 1=on
I_AUTOMODE : int * : track automation mode, 0=trim/off, 1=read, 2=touch, 3=write, 4=latch
I_NCHAN : int * : number of track channels, 2-64, even numbers only
I_SELECTED : int * : track selected, 0=unselected, 1=selected
I_WNDH : int * : current TCP window height in pixels including envelopes (read-only)
I_TCPH : int * : current TCP window height in pixels not including envelopes (read-only)
I_TCPY : int * : current TCP window Y-position in pixels relative to top of arrange view (read-only)
I_MCPX : int * : current MCP X-position in pixels relative to mixer container
I_MCPY : int * : current MCP Y-position in pixels relative to mixer container
I_MCPW : int * : current MCP width in pixels
I_MCPH : int * : current MCP height in pixels
I_FOLDERDEPTH : int * : folder depth change, 0=normal, 1=track is a folder parent, -1=track is the last in the innermost folder, -2=track is the last in the innermost and next-innermost folders, etc
I_FOLDERCOMPACT : int * : folder compacted state (only valid on folders), 0=normal, 1=small, 2=tiny children
I_MIDIHWOUT : int * : track midi hardware output index, <0=disabled, low 5 bits are which channels (0=all, 1-16), next 5 bits are output device index (0-31)
I_PERFFLAGS : int * : track performance flags, &1=no media buffering, &2=no anticipative FX
I_CUSTOMCOLOR : int * : custom color, OS dependent color|0x100000 (i.e. ColorToNative(r,g,b)|0x100000). If you do not |0x100000, then it will not be used, but will store the color anyway)
I_HEIGHTOVERRIDE : int * : custom height override for TCP window, 0 for none, otherwise size in pixels
B_HEIGHTLOCK : bool * : track height lock (must set I_HEIGHTOVERRIDE before locking)
D_VOL : double * : trim volume of track, 0=-inf, 0.5=-6dB, 1=+0dB, 2=+6dB, etc
D_PAN : double * : trim pan of track, -1..1
D_WIDTH : double * : width of track, -1..1
D_DUALPANL : double * : dualpan position 1, -1..1, only if I_PANMODE==6
D_DUALPANR : double * : dualpan position 2, -1..1, only if I_PANMODE==6
I_PANMODE : int * : pan mode, 0=classic 3.x, 3=new balance, 5=stereo pan, 6=dual pan
D_PANLAW : double * : pan law of track, <0=project default, 1=+0dB, etc
P_ENV:<envchunkname : TrackEnvelope*, read only. Call with :<VOLENV, :<PANENV, etc appended.
B_SHOWINMIXER : bool * : track control panel visible in mixer (do not use on master track)
B_SHOWINTCP : bool * : track control panel visible in arrange view (do not use on master track)
B_MAINSEND : bool * : track sends audio to parent
C_MAINSEND_OFFS : char * : channel offset of track send to parent
B_FREEMODE : bool * : track free item positioning enabled (call UpdateTimeline() after changing)
C_BEATATTACHMODE : char * : track timebase, -1=project default, 0=time, 1=beats (position, length, rate), 2=beats (position only)
F_MCP_FXSEND_SCALE : float * : scale of fx+send area in MCP (0=minimum allowed, 1=maximum allowed)
F_MCP_SENDRGN_SCALE : float * : scale of send area as proportion of the fx+send total area (0=minimum allowed, 1=maximum allowed)
I_PLAY_OFFSET_FLAG : int * : track playback offset state, &1=bypassed, &2=offset value is measured in samples (otherwise measured in seconds)
D_PLAY_OFFSET : double * : track playback offset, units depend on I_PLAY_OFFSET_FLAG

Parameters:
          tr -
          parmname -
          newvalue -
Returnvalues:
          boolean -


^ Reaper version 5.62Lua version 5.3 SetMIDIEditorGrid

Functioncall:

@@ -5897,13 +5956,13 @@

Datatypes used in this document

Description:
Returns true if the active take contains MIDI.

Parameters:
          take - the MediaItem_Take, that you want to check for MIDI-elements
Returnvalues:
          boolean - true, MediaItem_Take contains MIDI; false, MediaItem_Take doesn't contain MIDI


- ^ Reaper version 5.974Lua version 5.3 ThemeLayout_GetLayout

Functioncall:

+ ^ Reaper version 6.00Lua version 5.3 ThemeLayout_GetLayout

Functioncall:

C: bool ThemeLayout_GetLayout(const char* section, int idx, char* nameOut, int nameOut_sz)

EEL: bool ThemeLayout_GetLayout("section", int idx, #name)

Lua: boolean retval, string name = reaper.ThemeLayout_GetLayout(string section, integer idx)

Python: (Boolean retval, String section, Int idx, String nameOut, Int nameOut_sz) = RPR_ThemeLayout_GetLayout(section, idx, nameOut, nameOut_sz)

-Description:
Gets theme layout information.

section can be 'global' for global layout override, 'seclist' to enumerate a list of layout sections, otherwise a layout section such as 'mcp', 'tcp', 'trans', etc.
idx can be -1 to query the current value, -2 to get the description of the section (if not global), or 0..x.

returns false if failed.

+Description:
Gets theme layout information.

    section can be 'global' for global layout override, 'seclist' to enumerate a list of layout sections, otherwise a layout section such as 'mcp', 'tcp', 'trans', etc.
    idx can be
        -1 to query the current value,
        -2 to get the description of the section (if not global),
        -3 will return the current context DPI-scaling (256=normal, 512=retina, etc), or 0..x.
        
returns false if failed.

Parameters:
          string section -
          integer idx -
Returnvalues:
          boolean retval -
          string name -


^ Reaper version 5.972Lua version 5.3 ThemeLayout_GetParameter

Functioncall:

@@ -12935,6 +12994,15 @@

Datatypes used in this document

Description:
returns a named icontheme entry

Parameters:
          name -
+
Returnvalues:
          void* -


+ ^ Reaper version 6.02 GetIconThemePointerForDPI

Functioncall:

+
C: void* (*GetIconThemePointerForDPI)(const char* name, int dpisc);

+ + +
+ +Description:
returns a named icontheme entry for a given DPI-scaling (256=1:1).

Note: the return value should not be stored, it should be queried at each paint!
Querying name=NULL returns the start of the structure

+
Parameters:
          name -
          dpisc -
Returnvalues:
          void* -


^ Reaper version 5.62 GetIconThemeStruct

Functioncall:

C: void* (*GetIconThemeStruct)(int* szOut)

@@ -13020,13 +13088,13 @@

Datatypes used in this document

Description:
get or set the state of a {track,item,envelope} as an RPPXML chunk        

Parameters:
          obj - the object, to be modified. Can be MediaItem, TrackEnvelope, MediaTrack.
          str - supply str to set the state (returns zero); str="" to get the chunk string returned (must call FreeHeapPtr when done)
          isundo - set, if the state will be used for undo purposes (which may allow REAPER to get the state more efficiently
Returnvalues:
          char* -


- ^ Reaper version 5.62 GetSetTrackMIDISupportFile

Functioncall:

+ ^ Reaper version 6.02 GetSetTrackMIDISupportFile

Functioncall:

C: const char* (*GetSetTrackMIDISupportFile)(ReaProject* proj, MediaTrack* track, int which, const char* filename)

-Description:
Get or set the filename for storage of various track MIDI characteristics.

If fn != NULL, a new track MIDI storage file will be set; otherwise the existing track MIDI storage file will be returned.

+Description:
Get or set the filename for storage of the MIDI bank/program select file.
"which" must be 1.

If fn != NULL, a new track MIDI storage file will be set; otherwise the existing track MIDI storage file will be returned.

Parameters:
          proj - the project-number. 0 for the current project. Can also be a ReaProject-object, as returned by EnumProjects
          track - the MediaTrack-object of the track to be treated
          which - thich MIDI-file to use
0, MIDI colormap image file,
1, MIDI bank/program select file,
2, MIDI text string file,
3, MIDI note mapping file. @@ -14189,4 +14257,4 @@

Datatypes used in this document

Description:
Run pending operations and save the configuration file. If refreshUI is true the browser and manager windows are guaranteed to be refreshed (otherwise it depends on which operations are in the queue).

Parameters:
          boolean refreshUI - true, refreshes the UI of the ReaPack-user-interface; false, doesn't update the UI -



View: [all] [C/C++] [EEL] [Lua] [Python] Automatically generated by Ultraschall-API 4.00 Beta 2.78 - 1344 functions available (Reaper, SWS, JS)

\ No newline at end of file +


View: [all] [C/C++] [EEL] [Lua] [Python] Automatically generated by Ultraschall-API 4.00 Beta 2.79 - 1349 functions available (Reaper, SWS, JS)

\ No newline at end of file diff --git a/UserPlugins/ultraschall_api/Documentation/Reaper_Config_Variables.html b/UserPlugins/ultraschall_api/Documentation/Reaper_Config_Variables.html index 6a445497..5fc38dd4 100644 --- a/UserPlugins/ultraschall_api/Documentation/Reaper_Config_Variables.html +++ b/UserPlugins/ultraschall_api/Documentation/Reaper_Config_Variables.html @@ -85,14 +85,12 @@

The Configuration-Variables

Configuration-variables hold many settings of Reaper, may it be from Preferences, Dialogs or Menus and Context-Menus.
Many of them can be read from and even set.
Some of them are integers, some numbers and some are integer-bitfields. In rare instances, it can be a string.

Read the Introduction to Config Variables to get an idea how it works and how to work with them.



An Introduction
Introduction   
Config Variables -
__numcpuacidimportactionmenuadjreclat
adjrecmanlatadjrecmanlatinafxcfgallstereopairs
altpeaksaltpeaksopathlistaltpeakspathalwaysallowkb
aotapplyfxtailaraaudioasync
audiocloseinactiveaudioclosestopaudioprshiftaudiothreadpr
autoclosetrackwndsautomuteautomuteflagsautomuteval
autonbworkerthreadsautoreturntimeautoreturntime_actionautosaveint
autosavemodeautoxfadebigwndframesbouncecfg
copyimpmediacpuallowedcsurfratectrlcopyitem
cueitemscustommenudefautomodedefenvs
deffadelendeffadeshapedefhwvoldefpitchcfg
defrenderpathdefsavepathdefsendflagdefsendvol
defsplitxfadelendefstretchmodedeftrackrecflagsdeftrackrecinput
deftrackvoldefvzoomdefxfadeshapedisabledxscan
disk_peakmmap2disk_rdblksexdisk_rdmodeexdisk_rdsizeex
disk_wrblksdisk_wrblks2disk_wrmodedisk_wrsize
diskcheckdiskcheckmbedit_fontsizeenv_autoadd
env_deffocenv_ol_minhenv_optionsenv_reduce
envattachenvclicksegmodeenvlanesenvtranstime
envtrimadjmodeenvwritepasschgerrnowarnfadeeditflags
fadeeditlinkfadeeditpostselfadeeditpreselfeedbackmode
fullscreenrectbfullscreenrectlfullscreenrectrfullscreenrectt
fxdenormfxfloat_focusfxresizeg_config_project
g_markerlist_updcntgriddotgridinbggridinbg2
groupdispmodeguidelines2handzoomhelp
hwfadexhwoutfx_bypasside_colorsinsertmtrack
isfullscreenitemclickmovecursitemdblclkitemeditpr
itemfade_minheightitemfade_minwidthitemfadehandle_maxwidthitemfxtail
itemiconsitemicons_minheightitemlabel_minheightitemlowerhalf_minheight
itemmixflagitempropsitemprops_timemodeitemsnap
itemtexthideitemtimelockitemvolmodekbd_usealt
labelitems2lastthemefn5loadlastprojlocklooptotime
looploopclickmodeloopgranloopgranlen
loopnewitemsloopselprloopstopfxmanuallat
manuallatinmastermutesolomaxitemlanesmaxrecent
maxrecentfxmaxrecsizemaxrecsize_usemaxsnaptrack
maxspeakgainmetronome_defoutmetronome_flagsmidiccdensity
midiccdensitymidicctouchtimeoutmididefcolormapmidieditor
midiinsmidiins_csmidioctoffsmidiouts
midiouts_clockmidiouts_clock_nosppmidiouts_llmodemidioutthread
midisendflagsmiditicksperbeatmidivumiscopts
mixerflagmixeruiflagmixrowflagsmousemovemod
mousewheelmodemultiprojoptmultitouchmultitouch_ignore_ms
multitouch_ignorewheel_msmultitouch_rotate_gearmultitouch_swipe_gearmultitouch_zoom_gear
mutefadems10mvu_rmsgainmvu_rmsmodemvu_rmsoffs2
mvu_rmsredmvu_rmssizenativedrawtextnewfnopt
newprojdonewtflagnometersnorunmute
offlineinactopencopypromptopennotesoptimizesilence
pandispmodepanlawpanmodepeakcachegenmode
peakcachegenrspeakrecbmpeaksedgespitchenvrange
playcursormodeplayrateplayresamplemodepmfol
pooledenvattachpooledenvspooledenvtranstimeprebufperb
prerollprerollmeasprojalignbeatsrateprojbpm
projfrbaseprojfrdropprojgriddivprojgriddivsnap
projgridframeprojgridminprojgridsnapminprojgridswing
projgroupoverprojgroupselprojintmixprojmasternch
projmastervuflagsprojmaxlenprojmaxlenuseprojmeaslen
projmeasoffsprojmeasoffsrulerprojmetrobeatlenprojmetrocountin
projmetroenprojmetrof1projmetrof2projmetrov1
projmetrov2projmidieditorprojpeaksgainprojrecforopencopy
projrecmodeprojrelpathprojrenderaddtoprojprojrenderdither
projrenderlimitprojrendernchprojrenderqdelayprojrenderrateinternal
projrenderresampleprojrendersrateprojrenderstemsprojripedit
projsellockprojshowgridprojsmpteaheadprojsmptefw_rec
projsmpteinputprojsmptemaxfreeprojsmpteoffsprojsmpterate
projsmpterateuseprojprojsmpteresyncprojsmpteresync_recprojsmpteskip
projsmptesyncprojsrateprojsrateuseprojtakelane
projtimemodeprojtimemode2projtimeoffsprojtrackgroupdisabled
projtsdenomprojvidflagsprojvidhprojvidw
promptendrecpsmaxvpsminvquantflag
quantolmsquantolms2quantsize2rbn
reamote_maxblockreamote_maxlat_renderreamote_maxpktreamote_smplfmt
reascriptreascripttimeoutrecaddatloopreccfg
recfile_wildcardsrecoptsrecupdatemsrelativeedges
relsnaprenderaheadlenrenderaheadlen2renderbsnew
rendercfgrenderclosewhendonerenderqdelayrendertail
rendertaillenrendertailsresetvuplayrestrictcpu
rewireslaverewireslavedelayreximportrfprojfirst
rightclickemulateripplelockmoderulerlayoutrunafterstop
runallonstopsampleedgessaveoptssaveundostatesproj
scnameeditscnotesscoreminnotelenscorequant
screenset_as_viewsscreenset_as_winscreenset_autosavescrubloopend
scrubloopstartscrubmodescrubrelgainseekmodes
selitem_tintalphaselitemtopshowctinmixshowlastundo
showmaintrackshowpeaksshowpeaksbuildshowrecitems
slidermaxvsliderminvslidershexsmoothseek
smoothseekmeassnapextradsnapextradensolodimdb10
solodimensoloipspecpeak_alphaspecpeak_bv
specpeak_ftpspecpeak_huehspecpeak_huelspecpeak_lo
specpeak_nasplitautoxfadestopendofloopstopprojlen
syncsmpmax2syncsmpusetabtotransflagtakelanes
tcpaligntemplateditcursortempoenvmaxtempoenvmin
tempoenvtimelocktextflagsthreadprtimeseledge
tinttcptitlebarreghidetooltipdelaytooltips
trackitemgaptrackselonmousetransflagstransientsensitivity
transientthresholdtrimmidionsplittsmarkeruiscale
undomaskundomaxmemunselitem_tintalphause_reamote
usedxplugsuseinncuserewireverchk
vgridvideo_colorspacevideo_decpriovideo_defimglen
video_delaymsviewadvancevolenvrangevstbr64
vstfolder_settingsvstfullstatevuclipstickvudecay
vumaxvolvuminvolvuupdfreqvzoom2
vzoommodewarnmaxram64workbehvrworkbuffxuims
workbufmsexworkrenderworkset_maxworkset_min
workset_useworkthreadszoomzoommode
zoomshowarm   
Config Variables - Pre-Releases -
bpminfnimportdisk_peaks_mmapkbdisk_peaks_ramkbmaxplayoffsrate
midiccenvmidiccinterpwindowflagswiring_options
Reaper Ini-Only +
__numcpuacidimportactionmenuadjreclat
adjrecmanlatadjrecmanlatinafxcfgallstereopairs
altpeaksaltpeaksopathlistaltpeakspathalwaysallowkb
aotapplyfxtailaraaudioasync
audiocloseinactiveaudioclosestopaudioprshiftaudiothreadpr
autoclosetrackwndsautomuteautomuteflagsautomuteval
autonbworkerthreadsautoreturntimeautoreturntime_actionautosaveint
autosavemodeautoxfadebigwndframesbouncecfg
bpminfnimportcopyimpmediacpuallowedcsurfrate
ctrlcopyitemcueitemscustommenudefautomode
defenvsdeffadelendeffadeshapedefhwvol
defpitchcfgdefrenderpathdefsavepathdefsendflag
defsendvoldefsplitxfadelendefstretchmodedeftrackrecflags
deftrackrecinputdeftrackvoldefvzoomdefxfadeshape
disabledxscandisk_peakmmap2disk_peaks_mmapkbdisk_peaks_ramkb
disk_rdblksexdisk_rdmodeexdisk_rdsizeexdisk_wrblks
disk_wrblks2disk_wrmodedisk_wrsizediskcheck
diskcheckmbedit_fontsizeenv_autoaddenv_deffoc
env_ol_minhenv_optionsenv_reduceenvattach
envclicksegmodeenvlanesenvtranstimeenvtrimadjmode
envwritepasschgerrnowarnfadeeditflagsfadeeditlink
fadeeditpostselfadeeditpreselfeedbackmodefullscreenrectb
fullscreenrectlfullscreenrectrfullscreenrecttfxdenorm
fxfloat_focusfxresizeg_config_projectg_markerlist_updcnt
griddotgridinbggridinbg2groupdispmode
guidelines2handzoomhelphwfadex
hwoutfx_bypasside_colorsinsertmtrackisfullscreen
itemclickmovecursitemdblclkitemeditpritemfade_minheight
itemfade_minwidthitemfadehandle_maxwidthitemfxtailitemicons
itemicons_minheightitemlabel_minheightitemlowerhalf_minheightitemmixflag
itempropsitemprops_timemodeitemsnapitemtexthide
itemtimelockitemvolmodekbd_usealtlabelitems2
lastthemefn5loadlastprojlocklooptotimeloop
loopclickmodeloopgranloopgranlenloopnewitems
loopselprloopstopfxmanuallatmanuallatin
mastermutesolomaxitemlanesmaxplayoffsratemaxrecent
maxrecentfxmaxrecsizemaxrecsize_usemaxsnaptrack
maxspeakgainmetronome_defoutmetronome_flagsmidiccdensity
midiccdensitymidiccenvmidiccinterpmidicctouchtimeout
mididefcolormapmidieditormidiinsmidiins_cs
midioctoffsmidioutsmidiouts_clockmidiouts_clock_nospp
midiouts_llmodemidioutthreadmidisendflagsmiditicksperbeat
midivumiscoptsmixerflagmixeruiflag
mixrowflagsmousemovemodmousewheelmodemultiprojopt
multitouchmultitouch_ignore_msmultitouch_ignorewheel_msmultitouch_rotate_gear
multitouch_swipe_gearmultitouch_zoom_gearmutefadems10mvu_rmsgain
mvu_rmsmodemvu_rmsoffs2mvu_rmsredmvu_rmssize
nativedrawtextnewfnoptnewprojdonewtflag
nometersnorunmuteofflineinactopencopyprompt
opennotesoptimizesilencepandispmodepanlaw
panmodepeakcachegenmodepeakcachegenrspeakrecbm
peaksedgespitchenvrangeplaycursormodeplayrate
playresamplemodepmfolpooledenvattachpooledenvs
pooledenvtranstimeprebufperbprerollprerollmeas
projalignbeatsrateprojbpmprojfrbaseprojfrdrop
projgriddivprojgriddivsnapprojgridframeprojgridmin
projgridsnapminprojgridswingprojgroupoverprojgroupsel
projintmixprojmasternchprojmastervuflagsprojmaxlen
projmaxlenuseprojmeaslenprojmeasoffsprojmeasoffsruler
projmetrobeatlenprojmetrocountinprojmetroenprojmetrof1
projmetrof2projmetrov1projmetrov2projmidieditor
projpeaksgainprojrecforopencopyprojrecmodeprojrelpath
projrenderaddtoprojprojrenderditherprojrenderlimitprojrendernch
projrenderqdelayprojrenderrateinternalprojrenderresampleprojrendersrate
projrenderstemsprojripeditprojsellockprojshowgrid
projsmpteaheadprojsmptefw_recprojsmpteinputprojsmptemaxfree
projsmpteoffsprojsmpterateprojsmpterateuseprojprojsmpteresync
projsmpteresync_recprojsmpteskipprojsmptesyncprojsrate
projsrateuseprojtakelaneprojtimemodeprojtimemode2
projtimeoffsprojtrackgroupdisabledprojtsdenomprojvidflags
projvidhprojvidwpromptendrecpsmaxv
psminvquantflagquantolmsquantolms2
quantsize2rbnreamote_maxblockreamote_maxlat_render
reamote_maxpktreamote_smplfmtreascriptreascripttimeout
recaddatloopreccfgrecfile_wildcardsrecopts
recupdatemsrelativeedgesrelsnaprenderaheadlen
renderaheadlen2renderbsnewrendercfgrenderclosewhendone
renderqdelayrendertailrendertaillenrendertails
resetvuplayrestrictcpurewireslaverewireslavedelay
reximportrfprojfirstrightclickemulateripplelockmode
rulerlayoutrunafterstoprunallonstopsampleedges
saveoptssaveundostatesprojscnameeditscnotes
scoreminnotelenscorequantscreenset_as_viewsscreenset_as_win
screenset_autosavescrubloopendscrubloopstartscrubmode
scrubrelgainseekmodesselitem_tintalphaselitemtop
showctinmixshowlastundoshowmaintrackshowpeaks
showpeaksbuildshowrecitemsslidermaxvsliderminv
slidershexsmoothseeksmoothseekmeassnapextrad
snapextradensolodimdb10solodimensoloip
specpeak_alphaspecpeak_bvspecpeak_ftpspecpeak_hueh
specpeak_huelspecpeak_lospecpeak_nasplitautoxfade
stopendofloopstopprojlensyncsmpmax2syncsmpuse
tabtotransflagtakelanestcpaligntemplateditcursor
tempoenvmaxtempoenvmintempoenvtimelocktextflags
threadprtimeseledgetinttcptitlebarreghide
tooltipdelaytooltipstrackitemgaptrackselonmouse
transflagstransientsensitivitytransientthresholdtrimmidionsplit
tsmarkeruiscaleundomaskundomaxmem
unselitem_tintalphause_reamoteusedxplugsuseinnc
userewireverchkvgridvideo_colorspace
video_decpriovideo_defimglenvideo_delaymsviewadvance
volenvrangevstbr64vstfolder_settingsvstfullstate
vuclipstickvudecayvumaxvolvuminvol
vuupdfreqvzoom2vzoommodewarnmaxram64
windowflagswiring_optionsworkbehvrworkbuffxuims
workbufmsexworkrenderworkset_maxworkset_min
workset_useworkthreadszoomzoommode
zoomshowarm   
Reaper Ini-Only REAPER
REAPER->pspage_last   
Reaper Ini-Only reaper_video
reaper_video->fx_modereaper_video->misc_flagsreaper_video->playback_cachereaper_video->smp
reaper_video->vdprefetch_srcsreaper_video->vdprefetch_threadsreaper_video->visible 


Introduction to Config Variables

Description:

List of all Config Variables as of Reaper 5.982 and probably are missing some, but should be fairly complete anyway.
Introduction to Config Variables

Description:

List of all Config Variables as of Reaper 6.01 and probably are missing some, but should be fairly complete anyway.
These can be used to set configuration-stuff in the preferences, the project-settings, the render-dialog, many context-menus(like MCP or transport-context-menus) and many others.
To change them, you can use the following ReaScript API-functions(requires SWS being installed):

@@ -156,7 +154,7 @@

The Configuration-Variables

Configuration-variables hold many settings o

aot, cueitems, itemtexthide, psmaxv, psminv, templateditcursor

the following variables are available in pre-releases of Reaper only
->bpminfnimport, disk_peaks_mmapkb, disk_peaks_ramkb, maxplayoffsrate, midiccenv, midiccinterp, windowflags, wiring_options

+>none currently


 __numcpu

Description:

The number of CPUs available in your system.
It can be set, though it is unclear, what kind of effect this would have, so better leave it be.
@@ -518,7 +516,7 @@

The Configuration-Variables

Configuration-variables hold many settings o  bouncecfg

Description:

Contains the bounce-outputfile-settings, but seems not to be updated after having set it once, only in the reaper.ini It is an integer

Stored in reaper.ini under the same name in the section REAPER, when bounce-cfg-settings have been changed


bpminfnimport

Description:

unknown only available in pre-releases, yet It is an integer

bpminfnimport

Description:

unknown It is a double

Unknown, if it’s stored in reaper.ini as well…


 copyimpmedia

Description:

Some checkboxes in the Media Settings-section, as set in Preferences -> Media as well as toggled by action 40263
@@ -2766,8 +2764,7 @@

The Configuration-Variables

Configuration-variables hold many settings o disk_wrblks, disk_wrblks2, disk_wrmode, disk_wrsize

Stored in reaper.ini under the same name in the section REAPER.


disk_peaks_mmapkb

Description:

only available in pre-releases of Reaper, yet
-The Fully-buffer peak files smaller than-inputbox as set in Preferences -> Buffering -> Advanced Disk I/O Settings
disk_peaks_mmapkb

Description:

The Fully-buffer peak files smaller than-inputbox as set in Preferences -> Buffering -> Advanced Disk I/O Settings
It is an integer

0 to 2147483647 in kilobytes

@@ -2776,8 +2773,7 @@

The Configuration-Variables

Configuration-variables hold many settings o disk_wrblks, disk_wrblks2, disk_wrmode, disk_wrsize

Stored in reaper.ini under the same name in the section REAPER.


disk_peaks_ramkb

Description:

only available in pre-releases of Reaper, yet
-The Fully-buffer peak files smaller than-inputbox as set in Preferences -> Buffering -> Advanced Disk I/O Settings
disk_peaks_ramkb

Description:

The Fully-buffer peak files smaller than-inputbox as set in Preferences -> Buffering -> Advanced Disk I/O Settings
It is an integer

0 to 2147483647 in kilobytes

@@ -2876,7 +2872,6 @@

The Configuration-Variables

Configuration-variables hold many settings o &32=1, Show recording volume name(on), checked

set in Preferences -> Buffering -> Advanced Disk I/O Settings!
-in pre-releases only
>&64=1 - Periodially close excess file handles(experimental)-checkbox unchecked
>&64=1 - Periodially close excess file handles(experimental)-checkbox checked

For the megabytes-inputbox(check free disk space on record start), see diskcheckmb
@@ -4044,7 +4039,6 @@

The Configuration-Variables

Configuration-variables hold many settings o

For other settings in Preferences -> Appearance, see tooltipdelay, custommenu, envlanes, griddot, gridinbg, gridinbg2, guidelines2,
nativedrawtext, playcursormode, rulerlayout, showlastundo, textflags, timeseledge,
tooltips, trackitemgap, vgrid

-

Only available in pre-releases, yet!

Stored in reaper.ini under the same name in the section REAPER.


 maxrecent

Description:

The Maximum projects in recent project list, as set in the Preferences -> General
@@ -8238,8 +8232,7 @@

The Configuration-Variables

Configuration-variables hold many settings o

Stored in reaper.ini under the same name in the section REAPER.


windowflags

Description:

only available in pre-releases of Reaper, yet
-It is the Modal window positioning-dropdownlist, as set in Preferences -> General -> Advanced UI/system tweaks
windowflags

Description:

It is the Modal window positioning-dropdownlist, as set in Preferences -> General -> Advanced UI/system tweaks
It is an integer

0, Last window position (default)
@@ -8249,8 +8242,7 @@

The Configuration-Variables

Configuration-variables hold many settings o

Stored in reaper.ini under the same name in the section REAPER.


wiring_options

Description:

only available in pre-releases of Reaper, yet
-It is the context-menu from within the wiring-diagram
wiring_options

Description:

It is the context-menu from within the wiring-diagram
It is an integer-bitfield

&1=0, only show send wires on track mouseover - unchecked
@@ -8499,4 +8491,4 @@

The Configuration-Variables

Configuration-variables hold many settings o

0, Project Settings-tab 1, Media-tab 2, Video-tab 3, Advanced-tab 4, Notes-tab

-


Automatically generated by Ultraschall-API 4.00 Beta 2.78 - 439 configuration-variables available


\ No newline at end of file +


Automatically generated by Ultraschall-API 4.00 Beta 2.79 - 439 configuration-variables available


\ No newline at end of file diff --git a/UserPlugins/ultraschall_api/Documentation/Reaper_StateChunk_Docs.html b/UserPlugins/ultraschall_api/Documentation/Reaper_StateChunk_Docs.html index 49cb2cb9..b5f2bef8 100644 --- a/UserPlugins/ultraschall_api/Documentation/Reaper_StateChunk_Docs.html +++ b/UserPlugins/ultraschall_api/Documentation/Reaper_StateChunk_Docs.html @@ -39,7 +39,7 @@
-


Beta 2.7 - "John Cage - 4'33" - 15th of October 2018 - Build: 40869

The Functions Reference

To add the API to your script, just add
           dofile(reaper.GetResourcePath().."/UserPlugins/ultraschall_api.lua")
as first line into your script.

For more details, read the docs in the Introduction and Concepts-area of this page.


ProjectStateChunk

+


Beta 2.7 - "John Cage - 4'33" - 15th of October 2018 - Build: 40924

The Functions Reference

To add the API to your script, just add
           dofile(reaper.GetResourcePath().."/UserPlugins/ultraschall_api.lua")
as first line into your script.

For more details, read the docs in the Introduction and Concepts-area of this page.


ProjectStateChunk

APPLY_CFGAUTOXFADECURSORDEFPITCHMODE
ENVATTACHFEEDBACKGLOBAL_AUTOGRID
GROUPOVERRIDEGROUPS_DISABLEDGROUP_NAMEINTMIXMODE
ITEMMIXLOCKLOOPLOOPGRAN
MARKER/REGIONMASTERAUTOMODEMASTERHWOUTMASTERHWOUT
MASTERMUTESOLOMASTERPEAKCOLMASTERTRACKHEIGHTMASTERTRACKVIEW
MASTER_FXMASTER_GROUP_FLAGSMASTER_GROUP_FLAGS_HIGHMASTER_NCH
MASTER_PANMODEMASTER_SELMASTER_VOLUMEMASTER_WIDTH
MAXPROJLENMIXERUIFLAGSPANLAWPANMODE
PEAKGAINPLAYRATEPROJOFFSQUEUED_RENDER_ORIGINAL_FILENAME
QUEUED_RENDER_OUTFILEREAPER_PROJECTRECMODERECORD_CFG
RECORD_PATHRENDER_1XRENDER_ADDTOPROJRENDER_CFG
RENDER_DITHERRENDER_FILERENDER_FMTRENDER_PATTERN
RENDER_QDELAYRENDER_RANGERENDER_RESAMPLERENDER_STEMS
RIPPLESAMPLERATESELECTIONSELECTION2
SMPTESYNCTAKELANETEMPOTEMPOENVLOCKMODE
TIMELOCKMODE xTIMEMODEUSE_REC_CFGVIDEO_CONFIG
VZOOMEXZOOM  
Automation Items
POOLEDENV   
Extensions
EXTENSIONS   
Master DualPan Envelope 2 @@ -203,4 +203,4 @@

Functioncall:

MIDIBANKPROGFN string MidiBankProgFn

Description:
The filename of the MidiBankProg. Will be enclosed in doublequotes, when it contains spaces.

Does not exist, if no MIDIBankProg is not set.


Parameters:
 string MidiBankProgFn the MidiBankProg-Filename 


MIDIEXTSTRFN

Functioncall:

MIDIEXTSTRFN string MidiTextStrFn

Description:
The filename of the MIDIExtStr. Will be enclosed in doublequotes, when it contains spaces.

Does not exist, if no file is set


Parameters:
 string MidiTextStrFn the MidiTextStrFn-Filename 


TRACKID

Functioncall:

TRACKID string TrackID

Description:
The TrackID as GUID-string. Will be enclosed in doublequotes, when it contains spaces.


Parameters:
 string TrackID the TrackID 


SCORE -

Functioncall:

SCORE integer Score1 integer Score2 number Score3 number Score4

Description:
The Score-setting for the track


Parameters:
 integer Score1 unknown  
 integer Score2 unknown 
 number Score3 unknown 
 number Score4 unknown 



Automatically generated by Ultraschall-API 4.00 Beta 2.7 - 1070 functions and -946 Api-variables available


\ No newline at end of file +

Functioncall:

SCORE integer Score1 integer Score2 number Score3 number Score4

Description:
The Score-setting for the track


Parameters:
 integer Score1 unknown  
 integer Score2 unknown 
 number Score3 unknown 
 number Score4 unknown 



Automatically generated by Ultraschall-API 4.00 Beta 2.7 - 1082 functions and -958 Api-variables available


\ No newline at end of file diff --git a/UserPlugins/ultraschall_api/Documentation/US_Api_AUD.html b/UserPlugins/ultraschall_api/Documentation/US_Api_AUD.html index fdbcb508..b39a0184 100644 --- a/UserPlugins/ultraschall_api/Documentation/US_Api_AUD.html +++ b/UserPlugins/ultraschall_api/Documentation/US_Api_AUD.html @@ -55,4 +55,4 @@
-


4.00Beta 2.78 - "Tchaikovski - Overture 1812" - 5th of November 2019 - Build: 40869

Functions Reference




Automatically generated by Ultraschall-API 4.00 Beta 2.78 - 1070 functions and 6 Api-variables available


\ No newline at end of file +


4.00Beta 2.79 - "Yes - Owner of a lonely heart" - - Build: 40927

Functions Reference




Automatically generated by Ultraschall-API 4.00 Beta 2.79 - 1082 functions and 6 Api-variables available


\ No newline at end of file diff --git a/UserPlugins/ultraschall_api/Documentation/US_Api_Concepts_AUD.html b/UserPlugins/ultraschall_api/Documentation/US_Api_Concepts_AUD.html index faf68c03..181cb395 100644 --- a/UserPlugins/ultraschall_api/Documentation/US_Api_Concepts_AUD.html +++ b/UserPlugins/ultraschall_api/Documentation/US_Api_Concepts_AUD.html @@ -55,8 +55,8 @@
-


4.00Beta 2.78 - "Tchaikovski - Overture 1812" - 5th of November 2019 - Build: 40869

Introduction and Concepts

+


4.00Beta 2.79 - "Yes - Owner of a lonely heart" - - Build: 40927

Introduction and Concepts

 
, Introduction

 
, Introduction

^

-



Automatically generated by Ultraschall-API 4.00 Beta 2.78 - 1 chapters available


\ No newline at end of file +



Automatically generated by Ultraschall-API 4.00 Beta 2.79 - 1 chapters available


\ No newline at end of file diff --git a/UserPlugins/ultraschall_api/Documentation/US_Api_Concepts_DOC.html b/UserPlugins/ultraschall_api/Documentation/US_Api_Concepts_DOC.html index 1950e2dd..be3f7614 100644 --- a/UserPlugins/ultraschall_api/Documentation/US_Api_Concepts_DOC.html +++ b/UserPlugins/ultraschall_api/Documentation/US_Api_Concepts_DOC.html @@ -55,8 +55,8 @@
-


4.00Beta 2.78 - "Tchaikovski - Overture 1812" - 5th of November 2019 - Build: 40869

Introduction and Concepts

+


4.00Beta 2.79 - "Yes - Owner of a lonely heart" - - Build: 40927

Introduction and Concepts

 
, Introduction

 
, Introduction

^

-



Automatically generated by Ultraschall-API 4.00 Beta 2.78 - 1 chapters available


\ No newline at end of file +



Automatically generated by Ultraschall-API 4.00 Beta 2.79 - 1 chapters available


\ No newline at end of file diff --git a/UserPlugins/ultraschall_api/Documentation/US_Api_Concepts_GFX.html b/UserPlugins/ultraschall_api/Documentation/US_Api_Concepts_GFX.html index 85cf3549..1b0db0da 100644 --- a/UserPlugins/ultraschall_api/Documentation/US_Api_Concepts_GFX.html +++ b/UserPlugins/ultraschall_api/Documentation/US_Api_Concepts_GFX.html @@ -55,8 +55,8 @@
-


4.00Beta 2.78 - "Tchaikovski - Overture 1812" - 5th of November 2019 - Build: 40869

Introduction and Concepts

+


4.00Beta 2.79 - "Yes - Owner of a lonely heart" - - Build: 40927

Introduction and Concepts

 
, Introduction

 
, Introduction

^

-



Automatically generated by Ultraschall-API 4.00 Beta 2.78 - 1 chapters available


\ No newline at end of file +



Automatically generated by Ultraschall-API 4.00 Beta 2.79 - 1 chapters available


\ No newline at end of file diff --git a/UserPlugins/ultraschall_api/Documentation/US_Api_Concepts_GUI.html b/UserPlugins/ultraschall_api/Documentation/US_Api_Concepts_GUI.html index d12f6627..e4db8b7d 100644 --- a/UserPlugins/ultraschall_api/Documentation/US_Api_Concepts_GUI.html +++ b/UserPlugins/ultraschall_api/Documentation/US_Api_Concepts_GUI.html @@ -55,8 +55,8 @@
-


4.00Beta 2.78 - "Tchaikovski - Overture 1812" - 5th of November 2019 - Build: 40869

Introduction and Concepts

+


4.00Beta 2.79 - "Yes - Owner of a lonely heart" - - Build: 40927

Introduction and Concepts

 
, Introduction

 
, Introduction

^

-



Automatically generated by Ultraschall-API 4.00 Beta 2.78 - 1 chapters available


\ No newline at end of file +



Automatically generated by Ultraschall-API 4.00 Beta 2.79 - 1 chapters available


\ No newline at end of file diff --git a/UserPlugins/ultraschall_api/Documentation/US_Api_Concepts_VID.html b/UserPlugins/ultraschall_api/Documentation/US_Api_Concepts_VID.html index ca47aafc..38ecdb85 100644 --- a/UserPlugins/ultraschall_api/Documentation/US_Api_Concepts_VID.html +++ b/UserPlugins/ultraschall_api/Documentation/US_Api_Concepts_VID.html @@ -55,8 +55,8 @@
-


4.00Beta 2.78 - "Tchaikovski - Overture 1812" - 5th of November 2019 - Build: 40869

Introduction and Concepts

+


4.00Beta 2.79 - "Yes - Owner of a lonely heart" - - Build: 40927

Introduction and Concepts

 
, Introduction

 
, Introduction

^

-



Automatically generated by Ultraschall-API 4.00 Beta 2.78 - 1 chapters available


\ No newline at end of file +



Automatically generated by Ultraschall-API 4.00 Beta 2.79 - 1 chapters available


\ No newline at end of file diff --git a/UserPlugins/ultraschall_api/Documentation/US_Api_DOC.html b/UserPlugins/ultraschall_api/Documentation/US_Api_DOC.html index acb23f11..c5e38214 100644 --- a/UserPlugins/ultraschall_api/Documentation/US_Api_DOC.html +++ b/UserPlugins/ultraschall_api/Documentation/US_Api_DOC.html @@ -55,7 +55,7 @@
-


4.00Beta 2.78 - "Tchaikovski - Overture 1812" - 5th of November 2019 - Build: 40869

Functions Reference


Helper functions

+


4.00Beta 2.79 - "Yes - Owner of a lonely heart" - - Build: 40927

Functions Reference


Helper functions

Docs_ConvertPlainTextToHTML  

Ultraschall DocML

Docs_GetAllUSDocBlocsFromStringDocs_GetUSDocBloc_ChapterContextDocs_GetUSDocBloc_DescriptionDocs_GetUSDocBloc_Functioncall
Docs_GetUSDocBloc_NextChapterDocs_GetUSDocBloc_ParamsDocs_GetUSDocBloc_PreviousChapterDocs_GetUSDocBloc_Requires
Docs_GetUSDocBloc_RetvalsDocs_GetUSDocBloc_SlugDocs_GetUSDocBloc_SourceDocumentDocs_GetUSDocBloc_Tags
Docs_GetUSDocBloc_TargetDocumentDocs_GetUSDocBloc_TitleDocs_RemoveIndent


Reaper version 5.978Lua version 5.3 Docs_ConvertPlainTextToHTML

Functioncall:

string html_text = ultraschall.Docs_ConvertPlainTextToHTML(string String)

Description:
Converts a plaintext into HTML.

Converts newlines to
, Double Spaces to    and Tabs to     
returns nil in case of an error

Returnvalues:
 string html_text the html-version of the text 

Parameters:
 string text the text, which shall be converted to html 


@@ -73,4 +73,4 @@ Reaper version 5.978Lua version 5.3 Docs_GetUSDocBloc_Functioncall

Functioncall:

string functioncall, string prog_lang = ultraschall.Docs_GetUSDocBloc_Functioncall(string String, integer index)

Description:
returns the functioncall-entries from an US_DocBloc-element

There can be multiple functioncall-entries, e.g. for multiple programming-languages

returns nil in case of an error

Returnvalues:
 string functioncall the functioncall, as stored in the USDocBloc 
 string prog_lang the used programming language 

Parameters:
 string String a string which hold a US_DocBloc to retrieve the functioncall-entry from 
 integer index the index of the functioncall, if there are multiple ones; beginning with 1 


Reaper version 5.978Lua version 5.3 Docs_GetUSDocBloc_Requires

Functioncall:

integer count, array requires, array requires_alt = ultraschall.Docs_GetUSDocBloc_Requires(string String)

Description:
returns the requires-entries from an US_DocBloc-element

returns nil in case of an error

Returnvalues:
 integer count the number of required elements found in the require-tag 
 array requires the requires found; of the format element=versionnumber, e.g. "Reaper=5.978" 
 array requires_alt like requires, but the index is the required element, while the value is the versionnumber, e.g requires_alt["Reaper"]="5.978" 

Parameters:
 string String a string which hold a US_DocBloc to retrieve the requires-entry from 


Reaper version 5.978Lua version 5.3 Docs_GetUSDocBloc_PreviousChapter

Functioncall:

string previous_chapter = ultraschall.Docs_GetUSDocBloc_PreviousChapter(string String)

Description:
returns the slug of the previous chapter of an US_DocBloc-element

returns nil in case of an error

Returnvalues:
 string previous_chapter the slug of the previous-chapter, as stored in the USDocBloc 

Parameters:
 string String a string which hold a US_DocBloc to retrieve the slug of the previous chapter from 


-Reaper version 5.978Lua version 5.3 Docs_GetUSDocBloc_NextChapter

Functioncall:

string next_chapter = ultraschall.Docs_GetUSDocBloc_NextChapter(string String)

Description:
returns the slug of the next chapter of an US_DocBloc-element

returns nil in case of an error

Returnvalues:
 string next_chapter the slug of the next-chapter, as stored in the USDocBloc 

Parameters:
 string String a string which hold a US_DocBloc to retrieve the slug of the next chapter from 



Automatically generated by Ultraschall-API 4.00 Beta 2.78 - 1070 functions and 6 Api-variables available


\ No newline at end of file +Reaper version 5.978Lua version 5.3 Docs_GetUSDocBloc_NextChapter

Functioncall:

string next_chapter = ultraschall.Docs_GetUSDocBloc_NextChapter(string String)

Description:
returns the slug of the next chapter of an US_DocBloc-element

returns nil in case of an error

Returnvalues:
 string next_chapter the slug of the next-chapter, as stored in the USDocBloc 

Parameters:
 string String a string which hold a US_DocBloc to retrieve the slug of the next chapter from 



Automatically generated by Ultraschall-API 4.00 Beta 2.79 - 1082 functions and 6 Api-variables available


\ No newline at end of file diff --git a/UserPlugins/ultraschall_api/Documentation/US_Api_Functions.html b/UserPlugins/ultraschall_api/Documentation/US_Api_Functions.html index be876817..79e13027 100644 --- a/UserPlugins/ultraschall_api/Documentation/US_Api_Functions.html +++ b/UserPlugins/ultraschall_api/Documentation/US_Api_Functions.html @@ -55,7 +55,7 @@
-


4.00Beta 2.78 - "Tchaikovski - Overture 1812" - 5th of November 2019 - Build: 40869

The Functions Reference

+


4.00Beta 2.79 - "Yes - Owner of a lonely heart" - - Build: 40927

The Functions Reference

To add the API to your script, just add


@@ -67,10 +67,10 @@
       For more details, read the docs in the Introduction and Concepts-area of this page.
   

API-Helper functions

-
CheckActionCommandIDFormatCheckActionCommandIDFormat2ConvertFunction_FromBase64StringConvertFunction_FromHexString
ConvertFunction_ToBase64StringConvertFunction_ToHexStringGetAllActionsGetApiVersion
GetOSGetReaperAppVersionGetReaperColorThemesPathGetReaperJSFXPath
GetReaperScriptPathGetReaperWebRCPathGetScriptFilenameFromActionCommandIDIsItemInTrack
IsItemInTrack2IsItemInTrack3IsOS_MacIsOS_Other
IsOS_WindowsIsObjectValidReaperObjectIsValidGuidIsWithinTimeRange
LoadFunctionFromExtStateMakeFunctionUndoableOpenURLPingMe
PreventCreatingUndoPointPrintProgressBarRefreshToolbar_ActionResetProgressBar
ReturnTypeOfReaperObjectReturnsMinusOneInCaseOfError_ArzalaRunBackgroundHelperFeaturesRunCommand
RunLuaSourceCodeSetIntConfigVar_BitfieldStoreFunctionInExtStateToggleStateAction
ToggleStateButtonget_action_context_MediaItemDiffprintprint2
print3print_altprint_updatetoboolean
type  
Child Scripts +
CheckActionCommandIDFormatCheckActionCommandIDFormatCheckActionCommandIDFormat2ConvertFunction_FromBase64String
ConvertFunction_FromHexStringConvertFunction_ToBase64StringConvertFunction_ToHexStringGetAllActions
GetApiVersionGetOSGetReaperAppVersionGetReaperColorThemesPath
GetReaperJSFXPathGetReaperScriptPathGetReaperWebRCPathGetScriptFilenameFromActionCommandID
IsItemInTrackIsItemInTrack2IsItemInTrack3IsOS_Mac
IsOS_OtherIsOS_WindowsIsObjectValidReaperObjectIsValidGuid
IsWithinTimeRangeLoadFunctionFromExtStateMakeFunctionUndoableOpenURL
PingMePreventCreatingUndoPointPrintProgressBarRefreshToolbar_Action
ResetProgressBarReturnTypeOfReaperObjectReturnsMinusOneInCaseOfError_ArzalaRunBackgroundHelperFeatures
RunCommandRunLuaSourceCodeSetIntConfigVar_BitfieldStoreFunctionInExtState
ToggleStateActionToggleStateButtonget_action_context_MediaItemDiffprint
print2print3print_altprint_update
tobooleantype 
Child Scripts
GetScriptIdentifierGetScriptIdentifier_DescriptionGetScriptIdentifier_TitleGetScriptParameters
GetScriptReturnvaluesGetScriptReturnvalues_SenderMIDI_OnCommandByFilenameMain_OnCommandByFilename
Main_OnCommand_LuaCodeSetScriptIdentifier_DescriptionSetScriptIdentifier_TitleSetScriptParameters
SetScriptReturnvalues  
Data Analysis
FindPatternsInString  
Data Manipulation -
AddIntToCharBase64_DecoderBase64_EncoderCSV2IndividualLinesAsArray
CSV2LineCombineBytesToIntegerCompareArraysCompareStringWithAsciiValues
ConcatIntegerIndexedTablesConvertAscii2HexConvertBitsToIntegerConvertHex2Ascii
ConvertIntegerIntoString2ConvertIntegerToBitsConvertStringToAscii_ArrayConvertStringToIntegers
CountCharacterInStringCountEntriesInTable_MainCountLinesInStringCountPatternInString
CycleTableDB2MKVOLGetAllEntriesFromTableGetDuplicatesFromArrays
GetPartialStringGetSetIntConfigVarIsValidMatchingPatternKeepTableEntriesOfType
LimitFractionOfFloatMKVOL2DBMakeCopyOfTableNotes2CSV
RemoveTableEntriesOfTypeReplacePartOfStringReplacePatternInStringReturnTableAsIndividualValues
ReverseEndianess_ByteReverseTableRoundNumberSearchStringInString
SecondsToTimeSecondsToTimeString_hh_mm_ss_mssSetBitfieldSplitIntegerIntoBytes
SplitStringAtLineFeedToArraySplitStringAtNULLBytesStateChunkLayouterTimeStringToSeconds_hh_mm_ss_mss
TimeToSeconds  

API-Variables

+
AddIntToCharBase64_DecoderBase64_EncoderCSV2IndividualLinesAsArray
CSV2LineCombineBytesToIntegerCompareArraysCompareStringWithAsciiValues
ConcatIntegerIndexedTablesConvertAscii2HexConvertBitsToIntegerConvertBitsToString
ConvertHex2AsciiConvertIntegerIntoString2ConvertIntegerToBitsConvertStringToAscii_Array
ConvertStringToBitsConvertStringToIntegersCountCharacterInStringCountEntriesInTable_Main
CountLinesInStringCountPatternInStringCycleTableDB2MKVOL
GetAllEntriesFromTableGetDuplicatesFromArraysGetPartialStringGetSetIntConfigVar
IsValidMatchingPatternKeepTableEntriesOfTypeLimitFractionOfFloatMKVOL2DB
MakeCopyOfTableNotes2CSVRemoveTableEntriesOfTypeReplacePartOfString
ReplacePatternInStringReturnTableAsIndividualValuesReverseEndianess_ByteReverseTable
RoundNumberSearchStringInStringSecondsToTimeSecondsToTimeString_hh_mm_ss_mss
SetBitfieldSplitIntegerIntoBytesSplitStringAtLineFeedToArraySplitStringAtNULLBytes
StateChunkLayouterTimeStringToSeconds_hh_mm_ss_mssTimeToSeconds

API-Variables

API_TempPathApi_InstallPathApi_PathEuro
SeparatorStartTime 

Audio Management

GetHWInputs_AliasnamesGetHWOutputs_Aliasnames 

Automation Items

GetProject_AutomationItemStateChunkGetProject_CountAutomationItems 

Clipboard Functions

@@ -112,15 +112,15 @@
CheckForValidFileFormatsCountLinesInFileGetLengthOfFileOnlyFilesOfCertainType
   
Helper functions
CountDirectoriesAndFilesInPathCreateValidTempFileDirectoryExistsDirectoryExists2
GetAllDirectoriesInPathGetAllFilenamesInPathGetAllRecursiveFilesAndSubdirectoriesGetPath
GetReaperWorkDirSetReaperWorkDir 
Manipulate Files
MakeCopyOfFileMakeCopyOfFile_Binary 
Read Files -
ReadBinaryFileFromPatternReadBinaryFileUntilPatternReadBinaryFile_OffsetReadFileAsLines_Array
ReadFullFileReadLinerangeFromFileReadValueFromFile
Write Files -
WriteValueToFileWriteValueToFile_InsertWriteValueToFile_InsertBinaryWriteValueToFile_Replace
WriteValueToFile_ReplaceBinary  

Localization

+
ReadBinaryFileFromPatternReadBinaryFileUntilPatternReadBinaryFile_OffsetReadFileAsLines_Array
ReadFullFileReadLinerangeFromFileReadSubtitles_SRTReadValueFromFile
   
Write Files +
SaveSubtitles_SRTWriteValueToFileWriteValueToFile_InsertWriteValueToFile_InsertBinary
WriteValueToFile_ReplaceWriteValueToFile_ReplaceBinary 

Localization

LocalizeLocalize_RefreshFileLocalize_UseFile

MIDI Management

MIDI Editor
OpenItemInMidiEditorZoomHorizontal_MidiEditorZoomVertical_MidiEditor
Notes
MIDI_SendMidiCCMIDI_SendMidiNoteMIDI_SendMidiPCMIDI_SendMidiPitch
   

Markers

Assistance functions -
CountMarkersAndRegionsGetMarkerByScreenCoordinatesGetMarkerByTimeGetMarkerUpdateCounter
GetNextFreeRegionIndexGetRegionByScreenCoordinatesGetRegionByTimeGetTimeSignaturesByTime
GetTimesignaturesByScreenCoordinatesIsMarkerAtPositionIsRegionAtPositionMoveMarkersBy
MoveRegionsByParseMarkerStringRenumerateMarkers
Custom Markers -
AddCustomMarkerAddCustomRegionAddCustomRegionCountAllCustomMarkers
CountAllCustomRegionsDeleteCustomMarkersDeleteCustomRegionsEnumerateCustomMarkers
EnumerateCustomRegionsGetAllCustomMarkersGetAllCustomRegionsIsMarkerValidCustomMarker
IsRegionValidCustomRegionSetCustomMarker 
Edit Markers and Regions +
CountMarkersAndRegionsGetGuidFromMarkerIDGetMarkerByScreenCoordinatesGetMarkerByTime
GetMarkerIDFromGuidGetMarkerUpdateCounterGetNextFreeRegionIndexGetRegionByScreenCoordinates
GetRegionByTimeGetTimeSignaturesByTimeGetTimesignaturesByScreenCoordinatesIsMarkerAtPosition
IsRegionAtPositionMoveMarkersByMoveRegionsByParseMarkerString
RenumerateMarkers  
Custom Markers +
AddCustomMarkerAddCustomRegionCountAllCustomMarkersCountAllCustomRegions
DeleteCustomMarkersDeleteCustomRegionsEnumerateCustomMarkersEnumerateCustomRegions
GetAllCustomMarkersGetAllCustomRegionsIsMarkerValidCustomMarkerIsRegionValidCustomRegion
SetCustomMarkerSetCustomRegion 
Edit Markers and Regions
AddEditMarkerAddEditRegionCountEditMarkersCountEditRegions
DeleteEditMarkerDeleteEditRegionEditToMarkerEnumerateEditMarkers
EnumerateEditRegionExportEditMarkersToFileGetAllEditMarkersImportEditFromFile
IsMarkerEditIsRegionEditRegionMarkerToEditMarkerSetEditMarker
SetEditRegion  
General Markers and Regions
GetAllMarkersGetAllMarkersBetweenGetAllRegionsGetAllRegionsBetween
GetLastMarkerPositionGetLastRegionGetMarkerAndRegionsByIndexGetMarkerByName
GetMarkerByName_PatternImportMarkersFromFileRippleCut_RegionsSetMarkerByIndex
   
Normal Markers
AddNormalMarkerCountNormalMarkersCountNormalMarkers_NumGapDeleteNormalMarker
EnumerateNormalMarkersExportNormalMarkersToFileGetAllNormalMarkersIsMarkerNormal
SetNormalMarker  
PodRange Region @@ -141,11 +141,13 @@
AddItemSpectralEditCountItemSpectralEditsDeleteItemSpectralEditGetItemSpectralConfig
GetItemSpectralEditGetItemSpectralVisibilityStateSetItemSpectralConfigSetItemSpectralEdit
SetItemSpectralVisibilityState  

Metadata Management

Extension States(Guid)
GetGuidExtStateSetGuidExtState 
Extension States -
DeleteProjExtState_KeyDeleteProjExtState_SectionGetProjExtState_AllKeyValues

Miscellaneous

+
DeleteProjExtState_KeyDeleteProjExtState_SectionGetProjExtState_AllKeyValues
Markers +
GetMarkerExtStateSetMarkerExtState 

Miscellaneous

WinterlySnowflakes  

Mute Management

Muting tracks within envelope-lanes
CountMuteEnvelopePointsDeleteMuteStateDeleteMuteState_TrackObjectGetNextMuteState
GetNextMuteState_TrackObjectGetPreviousMuteStateGetPreviousMuteState_TrackObjectIsMuteAtPosition
IsMuteAtPosition_TrackObjectToggleMuteToggleMute_TrackObject

Navigation

-
CenterViewToCursorGetClosestGoToPointsGetClosestNextMarkerGetClosestNextRegionEdge
GetClosestPreviousMarkerGetClosestPreviousRegionEdgeGetLastCursorPositionGetLastLoopState
GetLastPlayStateGetNextClosestItemEdgeGetPreviousClosestItemEdgeJumpBackwardBy
JumpBackwardBy_RecordingJumpForwardByJumpForwardBy_RecordingSetPlayAndEditCursor_WhenPlaying
SetPlayCursor_WhenPlayingToggleScrollingDuringPlayback 
Transport +
CenterViewToCursorGetClosestGoToPointsGetClosestNextMarkerGetClosestNextRegionEdge
GetClosestPreviousMarkerGetClosestPreviousRegionEdgeGetLastCursorPositionGetLastLoopState
GetLastPlayStateGetNextClosestItemEdgeGetPreviousClosestItemEdgeJumpBackwardBy
JumpBackwardBy_RecordingJumpForwardByJumpForwardBy_RecordingSetPlayAndEditCursor_WhenPlaying
SetPlayCursor_WhenPlayingToggleScrollingDuringPlayback 
Scrubbing +
Scrubbing_MoveCursor_GetToggleStateScrubbing_MoveCursor_Toggle 
Transport
GetLoopStateSetLoopState 

Project-Files

Helper functions
GetProjectStateChunk  
RPP-Files Set @@ -186,7 +188,9 @@
GetScreenHeightGetScreenWidth 
Transport
GetPlayCursorWidthSetPlayCursorWidth 
UI-Elements
GetCheckboxStateSetCheckboxState 
Window Management -
CloseReaScriptConsoleGetAllReaScriptIDEWindowsGetChildSizeWithinParentHWNDGetHWND_ArrangeViewAndTimeLine
GetReaScriptConsoleWindowGetReaperWindowAttributesGetTopmostHWNDHasHWNDChildWindowNames
IsValidHWNDMoveChildWithinParentHWNDWindows_Find


+CloseReaScriptConsoleGetAllReaScriptIDEWindowsGetChildSizeWithinParentHWNDGetHWND_ArrangeViewAndTimeLineGetReaScriptConsoleWindowGetReaperWindowAttributesGetTopmostHWNDHasHWNDChildWindowNamesIsValidHWNDMoveChildWithinParentHWNDWindows_Find

+ ^ Reaper version 5.40Lua version 5.3 CountProjectTabs

Functioncall:

integer number_of_projecttabs = ultraschall.CountProjectTabs()

Description:
Counts the number of opened project tabs.

Returnvalues:
 integer number_of_projecttabs the number of projecttabs currently opened 



+ ^ Reaper version 5.40Lua version 5.3 GetProject_Tabs

Functioncall:

integer number_of_projecttabs, array projecttablist = ultraschall.GetProject_Tabs()

Description:
Returns the ReaProject-objects, as well as the filenames of all opened project-tabs.

Returnvalues:
 integer number_of_projecttabs the number of projecttabs currently opened 
 array projecttablist an array, that holds all ReaProjects as well as the projectfilenames
projecttablist[idx][1] = ReaProject
projecttablist[idx][2] = projectfilename with path 



^ Reaper version 5.40Lua version 5.3 GetApiVersion

Functioncall:

number versionnumber, string version, string date, string beta, string tagline = ultraschall.GetApiVersion()

Description:
returns the version, release-date and if it's a beta-version plus the currently installed hotfix

Returnvalues:
 number versionnumber a number, that you can use for comparisons like, "if requestedversion>versionnumber then" 
 string version the current Api-version 
 string date the release date of this api-version 
 string beta if it's a beta version, this is the beta-version-number 
 string tagline the tagline of the current release 
 string hotfix_date the release-date of the currently installed hotfix ($ResourceFolder/ultraschall_api/ultraschall_hotfixes.lua) 



^ Reaper version 5.965Lua version 5.3 SuppressErrorMessages

Functioncall:

boolean retval = ultraschall.SuppressErrorMessages(boolean flag)

Description:
Allows you to suppress error-messages.
If you pass true, all error messages will be suppressed, until you run the function again passing false.

Note: You should supress error-messages only temprarily and "unsuppress" them again, after your critical stuff is finished.
Otherwise, someone using your functions will have no error-messages to debug with.

Returns false, if parameter isn't boolean. Unlike most other function, this will never create an error-message!

Returnvalues:
 boolean retval true, setting was successful; false, you didn't pass a boolean as parameter 

Parameters:
 boolean flag true, suppress error-messages; false, don't suppress error-messages 


^ Reaper version 5.965Lua version 5.3 AddErrorMessage

Functioncall:

boolean retval, integer errorcount = ultraschall.AddErrorMessage(string functionname, string parametername, string errormessage, integer errorcode)

Description:
Adds a new errormessage to the Ultraschall-Api-Error-messagesystem. Returns the number of the errormessage.
Intended for your own 3rd party-functions for the API, to give the user more feedback about errors than just a cryptic errorcode.

returns false in case of failure

Returnvalues:
 boolean retval true, if it worked; false if it didn't 
 integer errorcount the number of the errormessage within the Ultraschall-Api-Error-messagesystem; nil, if errormessages are suppressed currently 

Parameters:
 string functionname the function, where the error happened 
 string parametername the parameter, that caused the problem 
 string errormessage a longer description of what cause the problem and a hint to a possible solution 
 integer errorcode a number, that represents the error-message. Will be -1 by default, if not given. 


@@ -212,7 +216,21 @@ ^ Reaper version 5.95Lua version 5.3 GetErrorMessage_Funcname

Functioncall:

integer errorindex, string parametername, string errormessage, integer errorcode = ultraschall.GetErrorMessage_Funcname(string functionname, integer index)

Description:
Returns a specific errormessage specified by index, functionname added to the Error-Messaging-System.
Sets read-state of the error-message to the date-time of accessing it.

returns -1 in case of error

Returnvalues:
 integer errorindex the index of the error within the Error-Messaging-System 
 string parametername the parameter that produced the problem, or "" if no parameter was involved 
 string errormessage the errormessage 
 integer errorcode the errorcode the error has 

Parameters:
 string functionname the name of the function, whose last error message you want to retrieve 
 integer index the index of the error-message for functionname 


^ Reaper version 5.965Lua version 5.3 ShowErrorMessagesInReascriptConsole

Functioncall:

ultraschall.ShowErrorMessagesInReascriptConsole(boolean state)

Description:
Sets, if errormessages shall be shown in the ReaScript-Console immediately, when they happen.

Will show functionname, parametername, errorcode plus errormessage and the time the error has happened.


Parameters:
 boolean state true, show error-messages in the ReaScript-Console when they happen; false, don't show errormessages 


^ Reaper version 5.95Lua version 5.3 WinterlySnowflakes

Functioncall:

integer retval = ultraschall.WinterlySnowflakes(boolean toggle, number falling_speed, integer number_snowflakes)

Description:
Exchanges the gfx.update()-function with a variant, that displays falling snowflakes everytime it is called.

returns -1 in case of error

Returnvalues:
 integer retval returns -1 in case of a'JS_Window_ListFind' n error; 1, in case of success 

Parameters:
 boolean toggle true, toggles falling snow on; false, toggles falling snow off 
 number falling_speed the falling speed of the snowflakes, 1.3 is recommended 
 integer number_snowflakes the number of falling snowflakes at the same time on screen; 2000 is recommended 


- ^ Reaper version 5.95Lua version 5.3 PingMe

Functioncall:

string pingmessage = PingMe(optional string message, integer outputtarget)

Description:
Shows the current script and line of script-execution, optionally with a message.

This is for debugging-purposes. For instance, if you want to know, if an if-statement is working as you expect it, just add
PingMe() into that if-statement.
It will show a message including linenumbers, when the if-statement is going through.

You can also choose, whether to output the message into ReaConsole, Messagebox or clipboard(including culminating options)

Returnvalues:
 string pingmessage returns the pingmessage 

Parameters:
 optional string message an optional message shown 
 optional integer outputtarget 0, don't show a message
1, output the pingme-message into ReaScript-console
2 or nil, show a messagebox
3, output it into the clipboard
4, add it to the end of the contents of the clipboard
5, add it to the beginning of the contents of the clipboard 


+ ^ Reaper version 5.95Lua version 5.3 PingMe

Functioncall:

string pingmessage = PingMe(optional string message, integer outputtarget)

Description:
Shows the current script and line of script-execution, optionally with a message.

This is for debugging-purposes. For instance, if you want to know, if an if-statement is working as you expect it, just add
PingMe() into that if-statement.
It will show a message including linenumbers, when the if-statement is going through.

You can also choose, whether to output the message into ReaConsole, Messagebox or clipboard(including culminating options)

Returnvalues:
 string pingmessage returns the pingmessage 

Parameters:
 optional string message an optional message shown 
 optional integer outputtarget 0, don't show a message
1, output the pingme-message into ReaScript-console
2 or nil, show a messagebox
3, output it into the clipboard
4, add it to the end of the contents of the clipboard
5, add it to the beginning of the contents of the clipboard 


+ ^ Reaper version 5.965Lua version 5.3 print2

Functioncall:

print2(parameter_1 to parameter_n)

Description:
replaces Lua's own print-function.

Converts all parametes given into string using tostring() and displays them as a MessageBox, separated by two spaces.


Parameters:
 parameter_1 to parameter_n the parameters, that you want to have printed out 


+ ^ Reaper version 5.965Lua version 5.3 print_alt

Functioncall:

print_alt(parameter_1 to parameter_n)

Description:
replaces Lua's own print-function, that is quite useless in Reaper.

like print, but separates the entries by a two spaced, not a newline

+

Parameters:
 parameter_1 to parameter_n the parameters, that you want to have printed out 


+ ^ Reaper version 5.965Lua version 5.3 print

Functioncall:

print(parameter_1 to parameter_n)

Description:
replaces Lua's own print-function, that is quite useless in Reaper.

Converts all parametes given into string using tostring() and displays them in the ReaScript-console, separated by a newline and ending with a newline.

+

Parameters:
 parameter_1 to parameter_n the parameters, that you want to have printed out 


+ ^ Reaper version 5.40Lua version 5.3 toboolean

Functioncall:

boolean retval = toboolean(string value)

Description:
Converts the string "value" to a boolean, if applicable; means: if it contains either true or false in it.
If it contains both or other characters(except spaces or tabs), it will not convert.
Works basially like Lua's own tostring() or tonumber()-functions.

Returns nil, if conversion isn't possible.

Note: Unlike other ultraschall-api-functions, toboolean() has no ultraschall. in it's functionname!

Returnvalues:
 boolean retval true or false, depending on the input variable value 

Parameters:
 string value the value to be converted to a boolean. True and false can be upper-, lower and camelcase. 


+ ^ Reaper version 5.965SWS version 2.9.7Lua version 5.3 print3

Functioncall:

print(parameter_1 to parameter_n)

Description:
like print, but puts the parameters into the clipboard.

Converts all parametes given into string using tostring() and puts them into the clipboard, with each parameter separated by two spaces.
Unlike print and print2, this does NOT end with a newline!

+

Parameters:
 parameter_1 to parameter_n the parameters, that you want to have put into the clipboard 


+ ^ Reaper version 5.965Lua version 5.3 print_update

Functioncall:

print_update(parameter_1 to parameter_n)

Description:
replaces Lua's own print-function, that is quite useless in Reaper.

Converts all parametes given into string using tostring() and displays them in the ReaScript-console, separated by two spaces, ending with a newline.

This is like print, but clears console everytime before displaying the values. Good for status-display, that shall not scroll.

+

Parameters:
 parameter_1 to parameter_n the parameters, that you want to have printed out 


+ ^ Reaper version 5.40Lua version 5.3 CheckActionCommandIDFormat

Functioncall:

boolean retval = ultraschall.CheckActionCommandIDFormat(action_command_id)

Description:
Checks, whether an action command id is a valid commandid(which is a number) or a valid _action_command_id (which is a string with an _underscore in the beginning).

Does not check, whether this action_command_id is a useable one, only if it's "syntax" is correct!

returns falsein case of an error

Returnvalues:
 boolean retval true, valid action_command_id; false, not a valid action_command_id 

Parameters:
 actioncommand_id the ActionCommandID you want to check; either a number or an action_command_id with an underscore at the beginning 


+ ^ Reaper version 5.40Lua version 5.3 RunCommand

Functioncall:

integer retval = ultraschall.RunCommand(string actioncommand_id)

Description:
runs a command by its ActionCommandID(instead of the CommandID-number)

returns -1 in case of error

Returnvalues:
 integer retval -1, in case of error 

Parameters:
 string actioncommand_id the ActionCommandID of the Command/Script/Action you want to run; must be either a number or the ActionCommandID beginning with an underscore _ 


+ ^ Reaper version 5.965Lua version 5.3 ConvertStringToBits

Functioncall:

integer number_of_bits, array bitarray = ultraschall.ConvertStringToBits(string message)

Description:
converts a string into its bit-representation and returns that as a handy table

returns -1 in case of an error

Returnvalues:
 integer number_of_bits the number of bits in the string, -1, in case of an error 
 array bitarray the individual bits as a handy table 

Parameters:
 string message the string, which you want to convert into its bit representation 


+ ^ Reaper version 5.965Lua version 5.3 ConvertBitsToString

Functioncall:

string message = ultraschall.ConvertBitsToString(array bitarray)

Description:
converts a table of bit-representation into a string

Every entry in the table must be either 0 or 1. If there are too few bits to fill up a byte, the missing bits will be seen as trailing 0-bits.

returns nil in case of an error

Returnvalues:
 string message the converted bits as string-representation 

Parameters:
 array bitarray the individual bits in a table, which will be converted into a string-representation
each entry in the table must be either 0 or 1; missing bits at the end(usually nil) will be seen as 0 


^ Reaper version 5.965SWS version 2.9.7Lua version 5.3 GetHWInputs_Aliasnames

Functioncall:

integer number_of_aliases, table aliases = ultraschall.GetHWInputs_Aliasnames()

Description:
Returns the aliasnames and their associated channels of the currently selected audio-device.

The returned table is of the format
table[index][1] - the name of the alias
table[index][2] - the hardware-input-channel, associated to this aliasname

Returnvalues:
 integer number_of_aliases the number of aliases available 
 table aliases a table, that contains all alias-names and their associated Hardware-Input-channels 



^ Reaper version 5.965SWS version 2.9.7Lua version 5.3 GetHWOutputs_Aliasnames

Functioncall:

integer number_of_aliases, table aliases = ultraschall.GetHWOutputs_Aliasnames()

Description:
Returns the aliasnames and their associated channels of the currently selected audio-device.

The returned table is of the format
table[index][1] - the name of the alias
table[index][2] - the hardware-output-channel, associated to this aliasname

@@ -247,15 +265,15 @@ ^ Reaper version 5.95Lua version 5.3 ConvertColorToWin

Functioncall:

integer win_linux_colorvalue, boolean retval = ultraschall.ConvertColorToWin(integer red, integer green, integer blue)

Description:
Converts a colorvalue to the correct-native-colorvalue for Windows/Linux, no matter if you're using Mac, Windows or Linux.

returns 0, false in case of an error

Returnvalues:
 integer win_linux_colorvalue the Windows/Linux-native-colorvalue 
 boolean retval true, if conversion succeeded; false, if conversion failed 

Parameters:
 integer red the red-value of the color 
 integer green the green-value of the color 
 integer blue the blue-value of the color 


^ Reaper version 5.95Lua version 5.3 ConvertColorFromMac

Functioncall:

integer red, integer green, integer blue, boolean retval = ultraschall.ConvertColorFromMac(integer mac_colorvalue)

Description:
Converts a native-colorvalue to the correct rgb-color-values for Mac, no matter if you're using Mac, Windows or Linux.

returns 0, 0, 0, false in case of an error

Returnvalues:
 integer red the red-value of the color 
 integer green the green-value of the color 
 integer blue the blue-value of the color 
 boolean retval true, if conversion succeeded; false, if conversion failed 

Parameters:
 integer mac_colorvalue the Mac-native-colorvalue 


^ Reaper version 5.95Lua version 5.3 ConvertColorFromWin

Functioncall:

integer red, integer green, integer blue, boolean retval = ultraschall.ConvertColorFromWin(integer win_colorvalue)

Description:
Converts a native-colorvalue to the correct rgb-color-values for Windows/Linux, no matter if you're using Mac, Windows or Linux.

returns 0, 0, 0, false in case of an error

Returnvalues:
 integer red the red-value of the color 
 integer green the green-value of the color 
 integer blue the blue-value of the color 
 boolean retval true, if conversion succeeded; false, if conversion failed 

Parameters:
 integer win_colorvalue the Windows/Linux-native-colorvalue 


- ^ Reaper version 5.40Lua version 5.3 SetIniFileExternalState

Functioncall:

boolean retval = ultraschall.SetIniFileExternalState(string section, string key, string value, string ini_filename_with_path)

Description:
Sets an external state into ini_filename_with_path. Returns false, if it doesn't work.

Returnvalues:
 boolean retval true, if setting the state was successful; false, if setting was unsuccessful 

Parameters:
 string section section of the external state. No = allowed! 
 string key key of the external state. No = allowed! 
 string value value for the key 
 string filename_with_path filename of the ini-file 


- ^ Reaper version 5.40Lua version 5.3 GetIniFileExternalState

Functioncall:

string value = ultraschall.GetIniFileExternalState(string section, string key, string ini_filename_with_path)

Description:
Gets an external state from ini_filename_with_path. Returns -1, if the file does not exist or parameters are invalid.

Returnvalues:
 integer entrylength the length of the returned value 
 string value the value stored in a section->key in a configuration-file 

Parameters:
 string section section of the external state 
 string key key of the external state. No = allowed! 
 string filename_with_path filename of the ini-file 


- ^ Reaper version 5.40SWS version 2.8.8Lua version 5.3 CountIniFileExternalState_sec

Functioncall:

integer sectioncount = ultraschall.CountIniFileExternalState_sec(string ini_filename_with_path)

Description:
Count external-state-[sections] from an ini-configurationsfile.

Returns -1, if the file does not exist.

Returnvalues:
 integer sectioncount number of sections within an ini-configuration-file 

Parameters:
 string ini_filename_with_path filename of the ini-file 


- ^ Reaper version 5.40SWS version 2.8.8Lua version 5.3 CountIniFileExternalState_key

Functioncall:

integer keyscount = ultraschall.CountIniFileExternalState_key(string section, string ini_filename_with_path)

Description:
Count external-state-keys within a specific section, in a ini_filename_with_path.

Returns -1, if file does not exist.

Returnvalues:
 integer keyscount number of keys with section within an ini-configuration-file 

Parameters:
 string section the section within the ini-filename 
 string ini_filename_with_path filename of the ini-file 


- ^ Reaper version 5.40SWS version 2.8.8Lua version 5.3 EnumerateIniFileExternalState_sec

Functioncall:

string sectionname = ultraschall.EnumerateIniFileExternalState_sec(integer number_of_section, string ini_filename_with_path)

Description:
Returns the numberth section in an ini_filename_with_path.

Returns nil, in case of an error.

Returnvalues:
 string sectionname the name of the numberth section in the ini-file 

Parameters:
 integer number_of_section the section within the ini-filename; 1, for the first section 
 string ini_filename_with_path filename of the ini-file 


- ^ Reaper version 5.40SWS version 2.8.8Lua version 5.3 EnumerateIniFileExternalState_key

Functioncall:

string keyname = ultraschall.EnumerateIniFileExternalState_key(string section, integer number, string ini_filename_with_path)

Description:
Returns the numberth key within a section in an ini_filename_with_path.

Returns nil, in case of an error.

Returnvalues:
 string keyname the name of the numberth key within section in the ini-file 

Parameters:
 string section the name of the section 
 integer number the number of the key within a section within the ini-filename, with 1 for the first key in the section 
 string ini_filename_with_path filename of the ini-file 


- ^ Reaper version 5.40SWS version 2.8.8Lua version 5.3 CountSectionsByPattern

Functioncall:

integer number_of_sections, string sectionnames = ultraschall.CountSectionsByPattern(string pattern, string ini_filename_with_path)

Description:
Counts the number of sections within an ini-file, that fit a specific pattern.

Uses "pattern"-string to determine, how often a section with a certain pattern exists. Good for sections, that have a number in them, like [section1], [section2], [section3].
Returns the number of sections, that include that pattern as well as a string, that includes the names of all such sections, separated by a comma.

Pattern can also contain patterns for pattern matching. Refer the LUA-docs for pattern matching.
i.e. characters like ^$()%.[]*+-? must be escaped with a %, means: %[%]%(%) etc

Returns -1, in case of an error.

Returnvalues:
 integer number_of_sections the number of sections, that fit the pattern 
 string sectionnames a string, like: [section1],[section8],[section99] 

Parameters:
 string pattern the pattern itself. Case sensitive. 
 string ini_filename_with_path filename of the ini-file 


- ^ Reaper version 5.40SWS version 2.8.8Lua version 5.3 CountKeysByPattern

Functioncall:

integer number_of_keys, string sections_and_keys = ultraschall.CountKeysByPattern(string pattern, string ini_filename_with_path)

Description:
Counts the number of keys within an ini-file, that fit a specific pattern.

Uses "pattern"-string to determine, how often a key with a certain pattern exists. Good for keys, that have a number in them, like key1, key2, key3.
Returns the number of keys, that include the pattern, as well as a string with all [sections] that contain keys= with a pattern, separated by a , i.e. [section1],key1=,key2=,key3=,[section2],key1=,key4=

Pattern can also contain patterns for pattern matching. Refer the LUA-docs for pattern matching.
i.e. characters like ^$()%.[]*+-? must be escaped with a %, means: %[%]%(%) etc

Returns -1, in case of an error.

Returnvalues:
 integer number_of_keys the number of keys, that fit the pattern 
 string sections_and_keys a string, like: [section1],Key1=,Key2=,Key3=[section2],Key7= 

Parameters:
 string pattern the pattern itself. Case sensitive. 
 string ini_filename_with_path filename of the ini-file 


- ^ Reaper version 5.40SWS version 2.8.8Lua version 5.3 CountValuesByPattern

Functioncall:

integer number_of_keys, string sections_and_keys = ultraschall.CountValuesByPattern(string pattern, string ini_filename_with_path)

Description:
Counts the number of values within an ini-file, that fit a specific pattern.

Uses "pattern"-string to determine, how often a value with a certain pattern exists. Good for values, that have a number in them, like value1, value2, value3
Returns the number of values, that include that pattern as well as a string, that contains the [sections] and the keys= and values , the latter that contain the pattern, separated by a comma
e.g. [section1], key1=, value, key4=, value, [section4], key2=, value

Pattern can also contain patterns for pattern matching. Refer the LUA-docs for pattern matching.
i.e. characters like ^$()%.[]*+-? must be escaped with a %, means: %[%]%(%) etc

Returns -1, in case of an error.

Returnvalues:
 integer number_of_values the number of values, that fit the pattern 
 string sections_keys_values a string, like: [section1],key1=,value,key4=,value,[section4],key2=,value 

Parameters:
 string pattern the pattern itself. Case sensitive. 
 string ini_filename_with_path filename of the ini-file 


+ ^ Reaper version 5.40SWS version 2.8.8Lua version 5.3 SetIniFileExternalState

Functioncall:

boolean retval = ultraschall.SetIniFileExternalState(string section, string key, string value, string ini_filename_with_path)

Description:
Sets an external state into ini_filename_with_path. Returns false, if it doesn't work.

Returnvalues:
 boolean retval true, if setting the state was successful; false, if setting was unsuccessful 

Parameters:
 string section section of the external state. No = allowed! 
 string key key of the external state. No = allowed! 
 string value value for the key 
 string filename_with_path filename of the ini-file 


+ ^ Reaper version 5.40SWS version 2.8.8Lua version 5.3 GetIniFileExternalState

Functioncall:

string value = ultraschall.GetIniFileExternalState(string section, string key, string ini_filename_with_path)

Description:
Gets an external state from ini_filename_with_path. Returns -1, if the file does not exist or parameters are invalid.

Returnvalues:
 integer entrylength the length of the returned value 
 string value the value stored in a section->key in a configuration-file 

Parameters:
 string section section of the external state 
 string key key of the external state. No = allowed! 
 string filename_with_path filename of the ini-file 


+ ^ Reaper version 5.40Lua version 5.3 CountIniFileExternalState_sec

Functioncall:

integer sectioncount = ultraschall.CountIniFileExternalState_sec(string ini_filename_with_path)

Description:
Count external-state-[sections] from an ini-configurationsfile.

Returns -1, if the file does not exist.

Returnvalues:
 integer sectioncount number of sections within an ini-configuration-file 

Parameters:
 string ini_filename_with_path filename of the ini-file 


+ ^ Reaper version 5.40Lua version 5.3 CountIniFileExternalState_key

Functioncall:

integer keyscount = ultraschall.CountIniFileExternalState_key(string section, string ini_filename_with_path)

Description:
Count external-state-keys within a specific section, in a ini_filename_with_path.

Returns -1, if file does not exist.

Returnvalues:
 integer keyscount number of keys with section within an ini-configuration-file 

Parameters:
 string section the section within the ini-filename 
 string ini_filename_with_path filename of the ini-file 


+ ^ Reaper version 5.40Lua version 5.3 EnumerateIniFileExternalState_sec

Functioncall:

string sectionname = ultraschall.EnumerateIniFileExternalState_sec(integer number_of_section, string ini_filename_with_path)

Description:
Returns the numberth section in an ini_filename_with_path.

Returns nil, in case of an error.

Returnvalues:
 string sectionname the name of the numberth section in the ini-file 

Parameters:
 integer number_of_section the section within the ini-filename; 1, for the first section 
 string ini_filename_with_path filename of the ini-file 


+ ^ Reaper version 5.40Lua version 5.3 EnumerateIniFileExternalState_key

Functioncall:

string keyname = ultraschall.EnumerateIniFileExternalState_key(string section, integer number, string ini_filename_with_path)

Description:
Returns the numberth key within a section in an ini_filename_with_path.

Returns nil, in case of an error.

Returnvalues:
 string keyname the name of the numberth key within section in the ini-file 

Parameters:
 string section the name of the section 
 integer number the number of the key within a section within the ini-filename, with 1 for the first key in the section 
 string ini_filename_with_path filename of the ini-file 


+ ^ Reaper version 5.40Lua version 5.3 CountSectionsByPattern

Functioncall:

integer number_of_sections, string sectionnames = ultraschall.CountSectionsByPattern(string pattern, string ini_filename_with_path)

Description:
Counts the number of sections within an ini-file, that fit a specific pattern.

Uses "pattern"-string to determine, how often a section with a certain pattern exists. Good for sections, that have a number in them, like [section1], [section2], [section3].
Returns the number of sections, that include that pattern as well as a string, that includes the names of all such sections, separated by a comma.

Pattern can also contain patterns for pattern matching. Refer the LUA-docs for pattern matching.
i.e. characters like ^$()%.[]*+-? must be escaped with a %, means: %[%]%(%) etc

Returns -1, in case of an error.

Returnvalues:
 integer number_of_sections the number of sections, that fit the pattern 
 string sectionnames a string, like: [section1],[section8],[section99] 

Parameters:
 string pattern the pattern itself. Case sensitive. 
 string ini_filename_with_path filename of the ini-file 


+ ^ Reaper version 5.40Lua version 5.3 CountKeysByPattern

Functioncall:

integer number_of_keys, string sections_and_keys = ultraschall.CountKeysByPattern(string pattern, string ini_filename_with_path)

Description:
Counts the number of keys within an ini-file, that fit a specific pattern.

Uses "pattern"-string to determine, how often a key with a certain pattern exists. Good for keys, that have a number in them, like key1, key2, key3.
Returns the number of keys, that include the pattern, as well as a string with all [sections] that contain keys= with a pattern, separated by a , i.e. [section1],key1=,key2=,key3=,[section2],key1=,key4=

Pattern can also contain patterns for pattern matching. Refer the LUA-docs for pattern matching.
i.e. characters like ^$()%.[]*+-? must be escaped with a %, means: %[%]%(%) etc

Returns -1, in case of an error.

Returnvalues:
 integer number_of_keys the number of keys, that fit the pattern 
 string sections_and_keys a string, like: [section1],Key1=,Key2=,Key3=[section2],Key7= 

Parameters:
 string pattern the pattern itself. Case sensitive. 
 string ini_filename_with_path filename of the ini-file 


+ ^ Reaper version 5.40Lua version 5.3 CountValuesByPattern

Functioncall:

integer number_of_values, string sections_and_keys = ultraschall.CountValuesByPattern(string pattern, string ini_filename_with_path)

Description:
Counts the number of values within an ini-file, that fit a specific pattern.

Uses "pattern"-string to determine, how often a value with a certain pattern exists. Good for values, that have a number in them, like value1, value2, value3
Returns the number of values, that include that pattern as well as a string, that contains the [sections] and the keys= and values , the latter that contain the pattern, separated by a comma
e.g. [section1], key1=, value, key4=, value, [section4], key2=, value

Pattern can also contain patterns for pattern matching. Refer the LUA-docs for pattern matching.
i.e. characters like ^$()%.[]*+-? must be escaped with a %, means: %[%]%(%) etc

Returns -1, in case of an error.

Returnvalues:
 integer number_of_values the number of values, that fit the pattern 
 string sections_keys_values a string, like: [section1],key1=,value,key4=,value,[section4],key2=,value 

Parameters:
 string pattern the pattern itself. Case sensitive. 
 string ini_filename_with_path filename of the ini-file 


^ Reaper version 5.40SWS version 2.8.8Lua version 5.3 EnumerateSectionsByPattern

Functioncall:

string sectionname = ultraschall.EnumerateSectionsByPattern(string pattern, integer id, string ini_filename_with_path)

Description:
Returns the numberth section within an ini-file, that fits the pattern, e.g. the third section containing "hawaii" in it.

Uses "pattern"-string to determine if a section contains a certain pattern. Good for sections, that have a number in them, like section1, section2, section3
Returns the section that includes that pattern as a string, numbered by id.

Pattern can also contain patterns for pattern matching. Refer the LUA-docs for pattern matching.
i.e. characters like ^$()%.[]*+-? must be escaped with a %, means: %[%]%(%) etc

Returns nil, in case of an error.

Returnvalues:
 string sectionname a string, that contains the sectionname 

Parameters:
 string pattern the pattern itself. Case sensitive. 
 integer id the number of section, that contains pattern 
 string ini_filename_with_path filename of the ini-file 


^ Reaper version 5.40SWS version 2.8.8Lua version 5.3 EnumerateKeysByPattern

Functioncall:

string keyname = ultraschall.EnumerateKeysByPattern(string pattern, string section, integer id, string ini_filename_with_path)

Description:
Returns the numberth key within a section in an ini-file, that fits the pattern, e.g. the third key containing "hawaii" in it.

Uses "pattern"-string to determine if a key contains a certain pattern. Good for keys, that have a number in them, like key1=, key2=, key3=
Returns the key that includes that pattern as a string, numbered by id.

Pattern can also contain patterns for pattern matching. Refer the LUA-docs for pattern matching.
i.e. characters like ^$()%.[]*+-? must be escaped with a %, means: %[%]%(%) etc

Returns nil, in case of an error.

Returnvalues:
 string keyname a string, that contains the keyname 

Parameters:
 string pattern the pattern itself. Case sensitive. 
 string section the section, in which to look for the key 
 integer id the number of key, that contains pattern 
 string ini_filename_with_path filename of the ini-file 


^ Reaper version 5.40SWS version 2.8.8Lua version 5.3 EnumerateValuesByPattern

Functioncall:

string value, string keyname = ultraschall.EnumerateValuesByPattern(string pattern, string section, string id, string ini_filename_with_path)

Description:
Returns the numberth value(and it's accompanying key) within a section in an ini-file, that fits the pattern, e.g. the third value containing "hawaii" in it.

Uses "pattern"-string to determine if a value contains a certain pattern. Good for values, that have a number in them, like value1, value2, value3
Returns the value that includes that pattern as a string, numbered by id, as well as it's accompanying key.

Pattern can also contain patterns for pattern matching. Refer the LUA-docs for pattern matching.
i.e. characters like ^$()%.[]*+-? must be escaped with a %, means: %[%]%(%) etc

Returns nil, in case of an error.

Returnvalues:
 string value the value that contains the pattern 
 string keyname a string, that contains the keyname 

Parameters:
 string pattern the pattern itself. Case sensitive. 
 string section the section, in which to look for the key 
 integer id the number of key, that contains pattern 
 string ini_filename_with_path filename of the ini-file 


@@ -455,7 +473,9 @@ ^ Reaper version 5.40Lua version 5.3 WriteValueToFile_Replace

Functioncall:

integer retval = ultraschall.WriteValueToFile_Replace(string filename_with_path, integer startlinenumber, integer endlinenumber, string value)

Description:
Replaces the linenumbers startlinenumber to endlinenumber in a file with value. All lines, up to startlinenumber-1 come before value, all lines at endlinenumber+1 to the end of the file will come after value.
Will return -1, if no such lines exists.

Note: non-binary-files only!

Returnvalues:
 integer retval 1, in case of success, -1 in case of error 

Parameters:
 string filename_with_path filename to write the value to 
 integer startlinenumber the first linenumber, to be replaced with value in the file 
 integer endlinenumber the last linenumber, to be replaced with value in the file 
 string value the value to be inserted into the file 


^ Reaper version 5.40Lua version 5.3 WriteValueToFile_InsertBinary

Functioncall:

integer retval = ultraschall.WriteValueToFile_InsertBinary(string filename_with_path, integer byteposition, string value)

Description:
Inserts value into a file at byteposition. All bytes, up to byteposition-1 come before value, all bytes at byteposition to the end of the file will come after value.
Will return -1, if no such line exists.

Note: good for binary files

Returnvalues:
 integer retval 1, in case of success, -1 in case of error 

Parameters:
 string filename_with_path filename to write the value to 
 integer byteposition the byteposition, at where to insert the value into the file 
 string value the value to be inserted into the file 


^ Reaper version 5.40Lua version 5.3 WriteValueToFile_ReplaceBinary

Functioncall:

integer retval = ultraschall.WriteValueToFile_ReplaceBinary(string filename_with_path, integer startbyteposition, integer endbyteposition, string value)

Description:
Replaces content in the file from startbyteposition to endbyteposition-1 with value. All bytes, up to startbyteposition-1 come before value, all bytes from (and including)endbyteposition to the end of the file will come after value.
Will return -1, if no such line exists.

Note: good for binary files

Returnvalues:
 integer retval 1, in case of success, -1 in case of error 

Parameters:
 string filename_with_path filename to write the value to 
 integer startbyteposition the first byte in the file to be replaced, starting with 1, if you want to replace at the beginning of the file. Everything before startposition will be kept. 
 integer endbyteposition the first byte after the replacement. Everything from endbyteposition to the end of the file will be kept. 
 string value the value to be inserted into the file 


- ^ Reaper version 5.965Lua version 5.3 GetAllRecursiveFilesAndSubdirectories

Functioncall:

integer found_dirs, array dirs_array, integer found_files, array files_array = ultraschall.GetAllRecursiveFilesAndSubdirectories(string path)

Description:
Returns all subdirectories and files within a given path.

Might take some time with many folders/files.


Returns -1 in case of an error.

Returnvalues:
 integer found_dirs the number of directories found; -1, in case of an error 
 array dirs_array the full path to the found directories as an array 
 integer found_files the number of files found 
 array files_array the full path to the found files as an array 

Parameters:
 string path the path from where to retrieve the files and subdirectories 


+ ^ Reaper version 5.965Lua version 5.3 GetAllRecursiveFilesAndSubdirectories

Functioncall:

integer found_dirs, array dirs_array, integer found_files, array files_array = ultraschall.GetAllRecursiveFilesAndSubdirectories(string path)

Description:
Returns all subdirectories and files within a given path.

Might take some time with many folders/files.


Returns -1 in case of an error.

Returnvalues:
 integer found_dirs the number of directories found; -1, in case of an error 
 array dirs_array the full path to the found directories as an array 
 integer found_files the number of files found 
 array files_array the full path to the found files as an array 

Parameters:
 string path the path from where to retrieve the files and subdirectories 


+ ^ Reaper version 5.99Lua version 5.3 SaveSubtitles_SRT

Functioncall:

integer retval = ultraschall.SaveSubtitles_SRT(string subtitle_filename_with_path, table subtitle_table)

Description:
saves the subtitles from the subtitle-table.

The subtitles-table is expected to be of the following format:

    subtitle_table[subtitle_index]["start"]   = starttime in seconds
    subtitle_table[subtitle_index]["end"]     = endtime in seconds
    subtitle_table[subtitle_index]["caption"] = the caption, which shall be shown from start to end-time

returns -1 in case of an error

Returnvalues:
 string guid the guid of the marker/region of the marker with a specific index 

Parameters:
 string subtitle_filename_with_path the filename of the subtitle-file, into which you want to store the subtitles 
 table Table the subtitle-table, which holds all captions and the start- and endtimes of displaying the caption 


+ ^ Reaper version 5.965Lua version 5.3 ReadSubtitles_SRT

Functioncall:

integer Captions_Counter, table Captions = ultraschall.ReadSubtitles_SRT(string filename_with_path)

Description:
parses an srt-subtitle-file and returns its contents as table

returns nil in case of an error

Returnvalues:
 integer Captions_Counter the number of captions in the file 
 table Captions the Captions as a table of the format:
    Captions[index]["start"]= the starttime of this caption in seconds
    Captions[index]["end"]= the endtime of this caption in seconds
    Captions[index]["caption"]= the caption itself 

Parameters:
 string filename_with_path the filename with path of the subrip srt-file 


^ Reaper version 5.975Lua version 5.3 IsValidFXStateChunk

Functioncall:

boolean retval = ultraschall.IsValidFXStateChunk(string StateChunk)

Description:
Returns, if a StateChunk is a valid FXStateChunk.
An FXStateChunk holds all FX-plugin-settings for a specific MediaTrack or MediaItem.

Returns false in case of an error

Returnvalues:
 boolean retval true, it is a valid FXStateChunk; false, it is not 

Parameters:
 string StateChunk the StateChunk, which you want to check, whether it's a valid FXStateChunk 


^ Reaper version 5.975Lua version 5.3 GetFXFromFXStateChunk

Functioncall:

string fx = ultraschall.GetFXFromFXStateChunk(string FXStateChunk, integer id)

Description:
Returns all lines of a specific TrackFX/ItemFX from a StateChunk
An FXStateChunk holds all FX-plugin-settings for a specific MediaTrack or MediaItem.

Returns nil in case of an error

@@ -514,19 +534,13 @@ ^ Reaper version 5.979Lua version 5.3 CountParmLFOLearn_FXStateChunk

Functioncall:

integer count = ultraschall.CountParmLFOLearn_FXStateChunk(string FXStateChunk, integer fxid)

Description:
Counts already existing Parm-LFOLearn-entries of an FX-plugin from an FXStateChunk.

It's the LFOLEARN-entry

returns -1 in case of an error

Returnvalues:
 integer count the number of LFOLearn-entried found 

Parameters:
 string FXStateChunk the FXStateChunk, in which you want to count a Parm-LFOLearn-entry 
 integer fxid the id of the fx, which holds the to-count-Parm-LFOLearn-entry; beginning with 1 


^ Reaper version 5.977SWS version 2.10.0.1Julian Sader's plugin version 0.986Lua version 5.3 ScanVSTPlugins

Functioncall:

ultraschall.ScanVSTPlugins(optional boolean clear_cache)

Description:
Re-scans all VST-Plugins.


Parameters:
 optional boolean clear_cache true, clear cache before re-scanning; false or nil, just scan vts-plugins 


- ^ Reaper version 5.977SWS version 2.10.0.1Julian Sader's plugin version 0.986Lua version 5.3 AutoDetectVSTPluginsFolder

Functioncall:

ultraschall.AutoDetectVSTPluginsFolder()

Description:
Auto-detects the vst-plugins-folder.




- ^ Reaper version 5.965Lua version 5.3 print2

Functioncall:

print2(parameter_1 to parameter_n)

Description:
replaces Lua's own print-function.

Converts all parametes given into string using tostring() and displays them as a MessageBox, separated by two spaces.


Parameters:
 parameter_1 to parameter_n the parameters, that you want to have printed out 


- ^ Reaper version 5.965Lua version 5.3 print_alt

Functioncall:

print_alt(parameter_1 to parameter_n)

Description:
replaces Lua's own print-function, that is quite useless in Reaper.

like print, but separates the entries by a two spaced, not a newline

-

Parameters:
 parameter_1 to parameter_n the parameters, that you want to have printed out 


- ^ Reaper version 5.965Lua version 5.3 print

Functioncall:

print(parameter_1 to parameter_n)

Description:
replaces Lua's own print-function, that is quite useless in Reaper.

Converts all parametes given into string using tostring() and displays them in the ReaScript-console, separated by a newline and ending with a newline.

-

Parameters:
 parameter_1 to parameter_n the parameters, that you want to have printed out 


+ ^ Reaper version 5.977SWS version 2.10.0.1Julian Sader's plugin version 0.986Lua version 5.3 AutoDetectVSTPluginsFolder

Functioncall:

ultraschall.AutoDetectVSTPluginsFolder()

Description:
Auto-detects the vst-plugins-folder.




^ Reaper version 5.40Lua version 5.3 SplitStringAtLineFeedToArray

Functioncall:

integer count, array split_string = ultraschall.SplitStringAtLineFeedToArray(string unsplitstring)

Description:
Splits the string unsplitstring at linefeed/tabs/control characters and puts each of these splitpieces into an array, each splitpiece one array-entry.
The linefeeds will not(!) be returned in the array's entries.
Returns the number of entries in the array, as well as the array itself
If there are no control characters or linefeeds in the string, the array will have only one entry with unsplitstring in it.

returns -1 in case of failure

Returnvalues:
 integer count number of entries in the split_string-array 
 array split_string an array with all the individual "postsplit"-pieces of the string 

Parameters:
 string unsplitstring the string, that shall be split at LineFeed/Tabs/Control Characters. Nil is not allowed. 


^ Reaper version 5.40Lua version 5.3 CountCharacterInString

Functioncall:

integer count, array positions = ultraschall.CountCharacterInString(string checkstring, string character)

Description:
Counts, how often character appears in checkstring and returns the count, as well as a array an with the position-numbers.

returns -1 in case of error

Returnvalues:
 integer count the number of occurences of character in checkstring 
 array positions the positionnumbers of the character in checkstring 

Parameters:
 string checkstring the string to check search through 
 string character the character to search for. Only single characters are allowed. Controlcodes like \n \t count as single character. Case sensitive. 


^ Reaper version 5.77Lua version 5.3 IsValidMatchingPattern

Functioncall:

boolean retval = ultraschall.IsValidMatchingPattern(string patstring)

Description:
Returns, if patstring is a valid pattern-matching-string

Returnvalues:
 boolean retval true, patstring is a valid pattern-matching-string; false, patstring isn't a valid pattern-matching-string 

Parameters:
 string patstring the string to check for, if it's a valid pattern-matching-string 


^ Reaper version 5.40Lua version 5.3 CSV2IndividualLinesAsArray

Functioncall:

integer count, array individual_values = ultraschall.CSV2IndividualLinesAsArray(string csv_line, optional string separator)

Description:
convert a csv-string to an array of the individual values. If separator cannot be found, it'll return the original string

returns nil in case or error

Returnvalues:
 integer count the number of entries 
 array individual_values all values, each in an individual array-position 

Parameters:
 string csv_line a string as a csv, with all values included and separated by parameter separator 
 string separator the separator, that separates the individual entries; use nil for commas; separators will be removed from the final strings! 


^ Reaper version 5.40Lua version 5.3 RoundNumber

Functioncall:

integer retval = ultraschall.RoundNumber(number num)

Description:
returns a rounded value of the parameter number. %.5 and higher rounds up, lower than %.5 round down.

returns nil in case of an error

Returnvalues:
 integer retval the rounded number 

Parameters:
 number num the floatingpoint number, you'd like to have rounded. 


- ^ Reaper version 5.40Lua version 5.3 GetPartialString

Functioncall:

string partial_string = ultraschall.GetPartialString(string str, string sep1, string sep2)

Description:
returns the part of a filename-string between sep1 and sep2

returns nil if it doesn't work, no sep1 or sep2 exist

Returnvalues:
 string partial_string the partial string between sep1 and sep2 

Parameters:
 string str string to be processed 
 string sep1 separator on the "left" side of the partial string 
 string sep2 separator on the "right" side of the partial string 


- ^ Reaper version 5.40Lua version 5.3 RunCommand

Functioncall:

integer retval = ultraschall.RunCommand(string actioncommand_id)

Description:
runs a command by its ActionCommandID(instead of the CommandID-number)

returns -1 in case of error

Returnvalues:
 integer retval -1, in case of error 

Parameters:
 string actioncommand_id the ActionCommandID of the Command/Script/Action you want to run; must be either a number or the ActionCommandID beginning with an underscore _ 


+ ^ Reaper version 5.40Lua version 5.3 GetPartialString

Functioncall:

string partial_string = ultraschall.GetPartialString(string str, string sep1, string sep2)

Description:
returns the part of a filename-string between sep1 and sep2

returns nil if it doesn't work, no sep1 or sep2 exist

Returnvalues:
 string partial_string the partial string between sep1 and sep2 

Parameters:
 string str string to be processed 
 string sep1 separator on the "left" side of the partial string 
 string sep2 separator on the "right" side of the partial string 


^ Reaper version 5.40Lua version 5.3 Notes2CSV

Functioncall:

string csv_retval = ultraschall.Notes2CSV()

Description:
Gets the project's notes and returns it as a CSV.

Returnvalues:
 string csv_retval the project notes, returned as a csv-string; entries separated by a comma 



^ Reaper version 5.40Lua version 5.3 CSV2Line

Functioncall:

string values = ultraschall.CSV2Line(string csv_line)

Description:
converts a string of csv-values into a string with all values and without the ,-separators

returns nil in case of error

Returnvalues:
 string values all values in one string 



^ Reaper version 5.40Lua version 5.3 IsItemInTrack

Functioncall:

boolean retval = ultraschall.IsItemInTrack(integer tracknumber, integer itemIDX)

Description:
checks, whether a given item is part of the track tracknumber

returns true, if the itemIDX is part of track tracknumber, false if not, nil if no such itemIDX or Tracknumber available

Returnvalues:
 boolean retval true, if item is in track, false if item isn't in track 

Parameters:
 integer itemIDX the number of the item to check of 
 integer tracknumber the number of the track to check in, with 1 for track 1, 2 for track 2, etc. 


@@ -539,8 +553,7 @@ ^ Reaper version 5.40SWS version 2.8.8Lua version 5.3 TimeToSeconds

Functioncall:

number position = ultraschall.TimeToSeconds(string timestring)

Description:
converts a timestring days:hours:minutes:seconds.milliseconds to timeposition in seconds
it is ok, to have only some of the last ones given, so i.e. excluding days and hours is ok. Though excluding values inbetween does not work!

A single integer in timestring will be seen as seconds.
To only specifiy milliseconds in particular, start the number with a .
all other values are separated by :

returns -1 in case of error, timestring is a nil or if you try to add an additional value, added before days

does not check for valid timeranges, so 61 minutes is possible to give, even if hours are present in the string

Returnvalues:
 number position the converted position 

Parameters:
 string timestring a string like: days:hours:minutes:seconds.milliseconds , i.e. 1:16:27:50.098 


^ Reaper version 5.40Lua version 5.3 SecondsToTimeString_hh_mm_ss_mss

Functioncall:

string timestring = ultraschall.SecondsToTimeString_hh_mm_ss_mss(number time)

Description:
Converts the parameter time into a timestring of the format hh:mm:ss.mss
Valid timeranges are from 0 to 359999.99 seconds(about 99 hours).

returns -1 in case of error

Returnvalues:
 string timestring the converted timestring. It will always follow the format hh:mm:ss.mss and fill up digits with zeros, if necessary. 

Parameters:
 number time the time in seconds to be converted into the timestring 


^ Reaper version 5.40Lua version 5.3 TimeStringToSeconds_hh_mm_ss_mss

Functioncall:

number time = ultraschall.TimeStringToSeconds_hh_mm_ss_mss(string timestring)

Description:
Converts the parameter timestring of the format hh:mm:ss.mss into seconds
The timestring must follow strictly this format, or the function returns -1 as result.

returns -1 in case of error

Returnvalues:
 number time the time in seconds to be converted into the timestring, -1 in case of an error 

Parameters:
 string timestring the converted timestring. It must always follow the format hh:mm:ss.mss. Fill up digits with zeros, if necessary. 


- ^ Reaper version 5.52Lua version 5.3 CountPatternInString

Functioncall:

integer count, array positions = ultraschall.CountPatternInString(string sourcestring, string searchstring, boolean non_case_sensitive)

Description:
returns the count and an array with all positions of searchstring in sourcestring.

Returnvalues:
 integer count the number of appearances of searchstring in sourcestring 
 array positions an array with count-entries, where every entry contains the position of searchstring in sourcestring 

Parameters:
 string sourcestring the string, you want to search through 
 string searchstring the string, you want to search for in sourcestring 
 boolean non_case_sensitive true, the search does not care about case-sensitivity; false, case of searchstring will be kept 


- ^ Reaper version 5.40Lua version 5.3 toboolean

Functioncall:

boolean retval = toboolean(string value)

Description:
Converts the string "value" to a boolean, if applicable; means: if it contains either true or false in it.
If it contains both or other characters(except spaces or tabs), it will not convert.
Works basially like Lua's own tostring() or tonumber()-functions.

Returns nil, if conversion isn't possible.

Note: Unlike other ultraschall-api-functions, toboolean() has no ultraschall. in it's functionname!

Returnvalues:
 boolean retval true or false, depending on the input variable value 

Parameters:
 string value the value to be converted to a boolean. True and false can be upper-, lower and camelcase. 


+ ^ Reaper version 5.52Lua version 5.3 CountPatternInString

Functioncall:

integer count, array positions = ultraschall.CountPatternInString(string sourcestring, string searchstring, boolean non_case_sensitive)

Description:
returns the count and an array with all positions of searchstring in sourcestring.

Returnvalues:
 integer count the number of appearances of searchstring in sourcestring 
 array positions an array with count-entries, where every entry contains the position of searchstring in sourcestring 

Parameters:
 string sourcestring the string, you want to search through 
 string searchstring the string, you want to search for in sourcestring 
 boolean non_case_sensitive true, the search does not care about case-sensitivity; false, case of searchstring will be kept 


^ Reaper version 5.40Lua version 5.3 OpenURL

Functioncall:

integer retval = ultraschall.OpenURL(string url)

Description:
Opens the URI with the standard-browser installed in your system.

returns -1 in case of an error


Parameters:
 string url the url to be opened in the browser; will check for :// in it for validity! 


^ Reaper version 5.40Lua version 5.3 CountEntriesInTable_Main

Functioncall:

integer count, table subtables, integer count_of_subtables = ultraschall.CountEntriesInTable_Main(table the_table)

Description:
Counts the number of entries in an indexed table.
Will only count the entries from the main-table, not it's subtables. If you want to know the number of subtables, this function returns a table that includes all subtables found in the main-table,
as well as the number of found subtables.

Returns -1 if table isn't a valid table

Returnvalues:
 integer count the number of entries in the table 
 table subtables if an entry of table has a table as value, that table-value will be included in this subtables-table(for recursive counting-usecases) 
 integer count_of_subtables the number of entries in the subtables-table 

Parameters:
 table table the table, whose entries you want to count 


^ Reaper version 5.40Lua version 5.3 CompareArrays

Functioncall:

table diff_array = ultraschall.CompareArrays(table Array, table CompareArray2)

Description:
Compares Array using parameter CompareArray2 and returns an array with all entries in CompareArray2, that are not in Array.
The comparable arrays must be indexed by integer-numbers.

Returns nil in case of an error

Returnvalues:
 table diff_array an array with all entries from CompareArray2, that are not in Array 

Parameters:
 table Array the reference-array 
 table CompareArray2 the array you want to check against Array; all entries in CompareArray2 that are not in Array will be returned 


@@ -614,17 +627,13 @@ ^ Reaper version 5.965Lua version 5.3 GetScriptIdentifier

Functioncall:

string script_identifier = ultraschall.GetScriptIdentifier()

Description:
The Ultraschall-API gives any script, that uses the API, a unique identifier generated when the script is run.
This identifier can be used to communicate with this script. If you start numerous instances of a script, it will create for each instance
its own script-identifier, so you can be sure, that you communicate with the right instance.

The identifier is of the format "ScriptIdentifier:scriptfilename-{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}.ext", where the {}-part is a guid and ext either .lua .py or .eel

Defer1 to Defer20 make use of this to stop a running defer-loop from the outside of a deferred-script.

Returnvalues:
 string script_identifier a unique script-identifier for this script-instance, of the format:
ScriptIdentifier: scriptfilename-guid 



^ Reaper version 5.965Lua version 5.3 ReplacePartOfString

Functioncall:

string replaced_string = ultraschall.ReplacePartOfString(string originalstring, string insertstring, integer offset, optional integer length)

Description:
replaces a part of a string with a second string

Returns nil in case of an error

Returnvalues:
 string replaced_string the altered string 

Parameters:
 string originalstring the originalstring, in which you want to insert the string 
 string insertstring the string that shall be inserted 
 integer offset the position, at which to insert the string; it is the position BEFORE the position at which to insert, so if you want to replace the 25th character, offset is 24! 
 optional integer length the length of the part of the originalstring that shall be replaced, counted from offset. 0 or nil for simple insertion. 


- ^ Reaper version 5.77Lua version 5.3 SearchStringInString

Functioncall:

integer count, array posarray = ultraschall.SearchStringInString(string fullstring, string searchstring)

Description:
Searches for the string searchstring in fullstring.

Keep in mind: Umlauts may produce multibyte-values. Therefore, the returned offsets might be confusing.

returns -1 in case of error, 0 if string wasn't found

Returnvalues:
 integer count the number of found occurences of searchstring in fullstring 
 array posarray an array that contains the positions, where searchstring was found within fullstring 

Parameters:
 string fullstring the string to be searched through 
 string searchstring the string to search for within fullstring 


- ^ Reaper version 5.965SWS version 2.9.7Lua version 5.3 print3

Functioncall:

print(parameter_1 to parameter_n)

Description:
like print, but puts the parameters into the clipboard.

Converts all parametes given into string using tostring() and puts them into the clipboard, with each parameter separated by two spaces.
Unlike print and print2, this does NOT end with a newline!

-

Parameters:
 parameter_1 to parameter_n the parameters, that you want to have put into the clipboard 


+ ^ Reaper version 5.77Lua version 5.3 SearchStringInString

Functioncall:

integer count, array posarray = ultraschall.SearchStringInString(string fullstring, string searchstring)

Description:
Searches for the string searchstring in fullstring.

Keep in mind: Umlauts may produce multibyte-values. Therefore, the returned offsets might be confusing.

returns -1 in case of error, 0 if string wasn't found

Returnvalues:
 integer count the number of found occurences of searchstring in fullstring 
 array posarray an array that contains the positions, where searchstring was found within fullstring 

Parameters:
 string fullstring the string to be searched through 
 string searchstring the string to search for within fullstring 


^ Reaper version 5.965Lua version 5.3 MKVOL2DB

Functioncall:

number db_value = ultraschall.MKVOL2DB(number mkvol_value)

Description:
Converts an MKVOL-value into a dB-value.

MKVOL-values are used by the routing-functions for HWOut/AUXSendReceive, specifically for their volume-value as these can't be converted using Reaper's own DB2SLIDER or SLIDER2DB, so this function should help you.

This function is an adapted one from the function provided in Plugins/reaper_www_root/main.js

See DB2MKVOL to convert a dB-value into it's MKVOL-representation

returns nil in case of an error

Returnvalues:
 number db_value the dB-value, converted from the MKVOL-value; minimum -144dB 

Parameters:
 number mkvol_value the mkvol_value, that you want to convert into dB 


^ Reaper version 5.965Lua version 5.3 DB2MKVOL

Functioncall:

number mkvol_value = ultraschall.DB2MKVOL(number db_value)

Description:
Converts an dB-value into a MKVOL-value.

MKVOL-values are used by the routing-functions for HWOut/AUXSendReceive, specifically for their volume-value as these can't be converted using Reaper's own DB2SLIDER or SLIDER2DB, so this function should help you.

See MKVOL2DB to convert a MKVOL-value into it's dB-representation

returns nil in case of an error

Returnvalues:
 number mkvol_value the mkvol-value, converted from the dB-value 

Parameters:
 number db_value the dB-value, that you want to convert into the MKVOL-value; minimum is -144dB 


^ Reaper version 5.965Lua version 5.3 ConvertIntegerIntoString2

Functioncall:

string converted_value = ultraschall.ConvertIntegerIntoString2(integer Size, integer integervalue_1, ..., integer integervalue_n)

Description:
Splits numerous integers into its individual bytes and converts them into a string-representation.
Maximum 32bit-integers are supported.

Returns nil in case of an error.

Returnvalues:
 string converted_value the string-representation of the integer 

Parameters:
 integer Size the maximum size of the integer to convert, 1(8 bit) to 4(32 bit) 
 integer integervalue_1 the first integer value to convert from
 
 integer integervalue_n the last integer value to convert from 


- ^ Reaper version 5.965Lua version 5.3 ConvertStringToIntegers

Functioncall:

integer num_integers, array individual_integers = ultraschall.ConvertStringToIntegers(string String, integer Size)

Description:
Converts a string into its integer-representation. Allows you to set the size of the integers between 1 Byte and 8 Bytes(64 bits).

Returns -1 in case of an error.

Returnvalues:
 integer num_integers the number of integers converted from this string 
 array individual_integers the individual integers, as converted from the original string 

Parameters:
 string String the string to convert into its integer representation 
 integer Size the size of the integers. 1 for 8 bits, 2 for 16 bits, ..., 8 for 64 bits 


- ^ Reaper version 5.965Lua version 5.3 print_update

Functioncall:

print_update(parameter_1 to parameter_n)

Description:
replaces Lua's own print-function, that is quite useless in Reaper.

Converts all parametes given into string using tostring() and displays them in the ReaScript-console, separated by two spaces, ending with a newline.

This is like print, but clears console everytime before displaying the values. Good for status-display, that shall not scroll.

-

Parameters:
 parameter_1 to parameter_n the parameters, that you want to have printed out 


+ ^ Reaper version 5.965Lua version 5.3 ConvertStringToIntegers

Functioncall:

integer num_integers, array individual_integers = ultraschall.ConvertStringToIntegers(string String, integer Size)

Description:
Converts a string into its integer-representation. Allows you to set the size of the integers between 1 Byte and 8 Bytes(64 bits).

Returns -1 in case of an error.

Returnvalues:
 integer num_integers the number of integers converted from this string 
 array individual_integers the individual integers, as converted from the original string 

Parameters:
 string String the string to convert into its integer representation 
 integer Size the size of the integers. 1 for 8 bits, 2 for 16 bits, ..., 8 for 64 bits 


^ Reaper version 5.965Lua version 5.3 SetScriptIdentifier_Description

Functioncall:

integer retval = ultraschall.SetScriptIdentifier_Description(string description)

Description:
The Ultraschall-API gives any script, that uses the API, a unique identifier generated when the script is run.
This identifier can be used to communicate with this script. If you start numerous instances of a script, it will create for each instance
its own script-identifier, so you can be sure, that you communicate with the right instance.

With this function, you can set its description, that is less cryptic than the ScriptIdentifier itself.

You can get it using GetScriptIdentifier_Description.

returns -1 in case of an error

Returnvalues:
 integer retval -1 in case of an error 

Parameters:
 string description the new description of your script 


^ Reaper version 5.965Lua version 5.3 GetScriptIdentifier_Description

Functioncall:

string script_identifier_description = ultraschall.GetScriptIdentifier_Description()

Description:
The Ultraschall-API gives any script, that uses the API, a unique identifier generated when the script is run.
This identifier can be used to communicate with this script. If you start numerous instances of a script, it will create for each instance
its own script-identifier, so you can be sure, that you communicate with the right instance.

With this function, you can get its description, that is less cryptic than the ScriptIdentifier itself.

You can set it using SetScriptIdentifier_Description.

@@ -750,19 +759,21 @@ ^ Reaper version 5.965Lua version 5.3 DeleteCustomRegions

Functioncall:

boolean retval, integer marker_index, number pos, number regionend, string name, integer shown_number, integer color = ultraschall.DeleteCustomRegions(string custom_marker_name, integer idx)

Description:
Deletes a specific custom-region with a certain name.

A custom-region has the naming-scheme

_customname: text for this region

You just need to pass customname to this function, leaving out the preceding _ and the trailing :
Exception: if the custom-region has the name

__customname:: test for this region

Example:

The custom-region VanillaChief has the custom_region_name VanillaChief and will be shown as _VanillaChief: text in the project.
So you pass VanillaChief to this function to get all _VanillaChief:-regions.

Will not delete custom-markers, use DeleteCustomMarkers instead.

returns false in case of an error

Returnvalues:
 boolean retval true, if the custom-region exists; false, if not or an error occurred 
 integer marker_index the index of the marker within all markers and regions, as positioned in the project, with 0 for the first, 2 for the second, etc 
 number pos the position of the region in seconds 
 number rgnend the end of the region in seconds 
 string name the name of the region, exluding the custom-region-name 
 integer shown_number the regionnumber, that is displayed in the timeline of the arrangeview 
 integer color the color of the region 

Parameters:
 string custom_region_name the name of the custom-region. Don't include the _ at the beginning and the : at the end, or it might not be found. Exception: Your custom-region is called "__CustomRegion::"
Lua-pattern-matching-expressions are allowed. This parameter is NOT case-sensitive. 
 integer idx the index of the region within all same-named custom-regions; 0, for the first custom-region 


^ Reaper version 5.965Lua version 5.3 AddCustomMarker

Functioncall:

boolean retval = ultraschall.AddCustomMarker(string custom_marker_name, number pos, string name, integer shown_number, integer color)

Description:
Will add new custom-marker with a certain name.

A custom-marker has the naming-scheme

_customname: text for this marker

You just need to pass customname to this function, leaving out the preceding _ and the trailing :
Exception: if the custom-marker has the name

__customname:: test for this marker

Example:

The custom-marker VanillaChief has the custom_marker_name VanillaChief and will be shown as _VanillaChief: text in the project.
So you pass VanillaChief to this function to get all _VanillaChief:-markers.

Will not add custom-regions, use AddCustomRegion instead.

returns false in case of an error

-
Returnvalues:
 boolean retval true, if adding the custom-marker was successful; false, if not or an error occurred 

Parameters:
 string custom_marker_name the name of the custom-marker. Don't include the _ at the beginning and the : at the end, or it might not be found. Exception: Your custom-marker is called "__CustomMarker::" 
 number pos the position of the marker in seconds 
 string name the name of the marker, exluding the custom-marker-name 
 integer shown_number the markernumber, that is displayed in the timeline of the arrangeview 
 integer color the color of the marker 


+Returnvalues:
 boolean retval true, if adding the custom-marker was successful; false, if not or an error occurred 

Parameters:
 string custom_marker_name the name of the custom-marker. Don't include the _ at the beginning and the : at the end, or it might not be found. Exception: Your custom-marker is called "__CustomMarker::"; nil, adds a normal marker 
 number pos the position of the marker in seconds 
 string name the name of the marker, exluding the custom-marker-name 
 integer shown_number the markernumber, that is displayed in the timeline of the arrangeview 
 integer color the color of the marker 


^ Reaper version 5.965Lua version 5.3 AddCustomRegion

Functioncall:

boolean retval, integer shown_number = ultraschall.AddCustomRegion(string custom_region_name, number pos, number regionend, string name, integer shown_number, integer color)

Description:
Will add new custom-region with a certain name.

A custom-region has the naming-scheme

_customname: text for this region

You just need to pass customname to this function, leaving out the preceding _ and the trailing :
Exception: if the custom-region has the name

__customname:: test for this region

Example:

The custom-region VanillaChief has the custom_region_name VanillaChief and will be shown as _VanillaChief: text in the project.
So you pass VanillaChief to this function to get all _VanillaChief:-regions.

Will not add custom-markers, use AddCustomMarker instead.

returns false in case of an error

-
Returnvalues:
 boolean retval true, if adding the custom-region was successful; false, if not or an error occurred 
 integer shown_number if the desired shown_number is already used by another region, this will hold the alternative number for the new custom-region 

Parameters:
 string custom_marker_name the name of the custom-region. Don't include the _ at the beginning and the : at the end, or it might not be found. Exception: Your custom-region is called "__CustomRegion::" 
 number pos the position of the region in seconds 
 number regionend the endposition of the region in seconds 
 string name the name of the region, exluding the custom-region-name 
 integer shown_number the regionnumber, that is displayed in the timeline of the arrangeview 
 integer color the color of the marker 


+Returnvalues:
 boolean retval true, if adding the custom-region was successful; false, if not or an error occurred 
 integer shown_number if the desired shown_number is already used by another region, this will hold the alternative number for the new custom-region 

Parameters:
 string custom_marker_name the name of the custom-region. Don't include the _ at the beginning and the : at the end, or it might not be found. Exception: Your custom-region is called "__CustomRegion::"; nil, make it a normal regionname 
 number pos the position of the region in seconds 
 number regionend the endposition of the region in seconds 
 string name the name of the region, exluding the custom-region-name 
 integer shown_number the regionnumber, that is displayed in the timeline of the arrangeview 
 integer color the color of the marker 


^ Reaper version 5.965Lua version 5.3 SetCustomMarker

Functioncall:

boolean retval = ultraschall.SetCustomMarker(string custom_marker_name, integer idx, number pos, string name, integer shown_number, integer color)

Description:
Will set attributes of an already existing custom-marker with a certain name.

A custom-marker has the naming-scheme

_customname: text for this marker

You just need to pass customname to this function, leaving out the preceding _ and the trailing :
Exception: if the custom-marker has the name

__customname:: test for this marker

Example:

The custom-marker VanillaChief has the custom_marker_name VanillaChief and will be shown as _VanillaChief: text in the project.
So you pass VanillaChief to this function to get all _VanillaChief:-markers.

Will not set custom-regions, use SetCustomRegion instead.

returns false in case of an error

-
Returnvalues:
 boolean retval true, if setting the new attributes of the custom-marker was successful; false, if not or an error occurred 

Parameters:
 string custom_marker_name the name of the custom-marker. Don't include the _ at the beginning and the : at the end, or it might not be found. Exception: Your custom-marker is called "__CustomMarker::" 
 integer idx the index-number of the custom-marker within all custom-markers 
 number pos the position of the marker in seconds 
 string name the name of the marker, exluding the custom-marker-name 
 integer shown_number the markernumber, that is displayed in the timeline of the arrangeview 
 integer color the color of the marker 


- ^ Reaper version 5.965Lua version 5.3 AddCustomRegion

Functioncall:

boolean retval, integer shown_number = ultraschall.AddCustomRegion(string custom_region_name, number pos, string name, integer shown_number, integer color)

Description:
Will add new custom-region with a certain name.

A custom-region has the naming-scheme

_customname: text for this region

You just need to pass customname to this function, leaving out the preceding _ and the trailing :
Exception: if the custom-region has the name

__customname:: test for this region

Example:

The custom-region VanillaChief has the custom_region_name VanillaChief and will be shown as _VanillaChief: text in the project.
So you pass VanillaChief to this function to get all _VanillaChief:-regions.

Will not add custom-markers, use AddCustomMarker instead.

returns false in case of an error, like the desired shown_number is already taken by another region

-
Returnvalues:
 boolean retval true, if adding the region was successful; false, if not or an error occurred 
 integer shown_number if the desired shown_number is already used by another region, this will hold the alternative number for the new custom-region 

Parameters:
 string custom_marker_name the name of the custom-region. Don't include the _ at the beginning and the : at the end, or it might not be found. Exception: Your custom-region is called "__CustomRegion::" 
 number pos the position of the region in seconds 
 string name the name of the region, exluding the custom-region-name 
 integer shown_number the regionnumber, that is displayed in the timeline of the arrangeview 
 integer color the color of the marker 


+Returnvalues:
 boolean retval true, if setting the new attributes of the custom-marker was successful; false, if not or an error occurred 

Parameters:
 string custom_marker_name the name of the custom-marker. Don't include the _ at the beginning and the : at the end, or it might not be found. Exception: Your custom-marker is called "__CustomMarker::"; nil, make it a normal marker 
 integer idx the index-number of the custom-marker within all custom-markers 
 number pos the position of the marker in seconds 
 string name the name of the marker, exluding the custom-marker-name 
 integer shown_number the markernumber, that is displayed in the timeline of the arrangeview 
 integer color the color of the marker 


+ ^ Reaper version 5.965Lua version 5.3 SetCustomRegion

Functioncall:

boolean retval, integer shown_number = ultraschall.SetCustomRegion(string custom_region_name, integer idx, number pos, number regionend, string name, integer shown_number, integer color)

Description:
Will set an already existing custom-region with a certain name.

A custom-region has the naming-scheme

_customname: text for this region

You just need to pass customname to this function, leaving out the preceding _ and the trailing :
Exception: if the custom-region has the name

__customname:: test for this region

Example:

The custom-region VanillaChief has the custom_region_name VanillaChief and will be shown as _VanillaChief: text in the project.
So you pass VanillaChief to this function to get all _VanillaChief:-regions.

Will not add custom-markers, use AddCustomMarker instead.

returns false in case of an error, like the desired shown_number is already taken by another region

+
Returnvalues:
 boolean retval true, if adding the region was successful; false, if not or an error occurred 
 integer shown_number if the desired shown_number is already used by another region, this will hold the alternative number for the new custom-region 

Parameters:
 string custom_marker_name the name of the custom-region. Don't include the _ at the beginning and the : at the end, or it might not be found. Exception: Your custom-region is called "__CustomRegion::" 
 integer idx the index of the custom region to change 
 number pos the position of the region in seconds 
 string name the name of the region, exluding the custom-region-name 
 integer shown_number the regionnumber, that is displayed in the timeline of the arrangeview 
 integer color the color of the marker 


^ Reaper version 5.965Lua version 5.3 GetNextFreeRegionIndex

Functioncall:

integer free_shown_number = ultraschall.GetNextFreeRegionIndex()

Description:
returns the next unused region-index-number, beginning with 0.

Returnvalues:
 integer free_shown_number the next free/unused region-index-number 



^ Reaper version 5.965Lua version 5.3 IsMarkerValidCustomMarker

Functioncall:

boolean retval = ultraschall.IsMarkerValidCustomMarker(string custom_marker_name, integer markeridx)

Description:
returns true, if the marker with id markeridx is a valid custom-marker of the type custommarkername

markeridx is the index of all markers and regions!

returns false in case of an error

Returnvalues:
 boolean retval true, marker is a valid custom-marker of type custom_marker_name; false, it is not or an error occurred 



^ Reaper version 5.965Lua version 5.3 IsRegionValidCustomRegion

Functioncall:

boolean retval = ultraschall.IsRegionValidCustomRegion(string custom_region_name, integer markeridx)

Description:
returns true, if the marker with id markeridx is a valid custom-region of the type customregionname

markeridx is the index of all markers and regions!

returns false in case of an error

-
Returnvalues:
 boolean retval true, marker is a valid custom-region of type custom_region_name; false, it is not or an error occurred 



+Returnvalues:
 boolean retval true, marker is a valid custom-region of type custom_region_name; false, it is not or an error occurred 



+ ^ Reaper version 6.02Lua version 5.3 GetMarkerIDFromGuid

Functioncall:

integer index = ultraschall.GetMarkerIDFromGuid(string guid)

Description:
Gets the corresponding indexnumber of a marker-guid

The index is for all markers and regions, inclusive and 1-based

returns -1 in case of an error

Returnvalues:
 integer index the index of the marker/region, whose guid you have passed to this function 

Parameters:
 string guid the guid of the marker/region, whose index-number you want to retrieve 


+ ^ Reaper version 6.02Lua version 5.3 GetGuidFromMarkerID

Functioncall:

string guid = ultraschall.GetGuidFromMarkerID(integer index)

Description:
Gets the corresponding marker-guid of a marker with a specific index

The index is for all markers and regions, inclusive and 1-based

returns -1 in case of an error

Returnvalues:
 string guid the guid of the marker/region of the marker with a specific index 

Parameters:
 integer index the index of the marker/region, whose guid you want to retrieve 


^ Reaper version 5.40Lua version 5.3 GetItemPosition

Functioncall:

number position = ultraschall.GetItemPosition(MediaItem MediaItem, optional string MediaItemStateChunk)

Description:
Returns position-entry of a MediaItem or MediaItemStateChunk.
Returns nil in case of error.

Returnvalues:
 number position the position in seconds, as set in the statechunk 

Parameters:
 MediaItem MediaItem the MediaItem, whose position you want to know; nil, use parameter MediaItemStatechunk instead 
 optional string MediaItemStateChunk an rpp-xml-statechunk, as created by reaper-api-functions like GetItemStateChunk 


^ Reaper version 5.40Lua version 5.3 GetItemLength

Functioncall:

number length = ultraschall.GetItemLength(MediaItem MediaItem, optional string MediaItemStateChunk)

Description:
Returns length-entry of a MediaItem or MediaItemStateChunk.
Returns nil in case of error.

Returnvalues:
 number length the length in seconds, as set in the statechunk 

Parameters:
 MediaItem MediaItem the MediaItem, whose length you want to know; nil, use parameter MediaItemStatechunk instead 
 optional string MediaItemStateChunk an rpp-xml-statechunk, as created by reaper-api-functions like GetItemStateChunk 


^ Reaper version 5.40Lua version 5.3 GetItemSnapOffset

Functioncall:

number snapoffset = ultraschall.GetItemSnapOffset(MediaItem MediaItem, optional string MediaItemStateChunk)

Description:
Returns snapoffs-entry of a MediaItem or MediaItemStateChunk.
Returns nil in case of error.

Returnvalues:
 number snapoffset the snapoffset in seconds, as set in the statechunk 

Parameters:
 MediaItem MediaItem the MediaItem, whose snapoffset you want to know; nil, use parameter MediaItemStatechunk instead 
 optional string MediaItemStateChunk an rpp-xml-statechunk, as created by reaper-api-functions like GetItemStateChunk 


@@ -887,7 +898,9 @@ ^ Reaper version 5.40Lua version 5.3 DeleteProjExtState_Section

Functioncall:

integer retval = ultraschall.DeleteProjExtState_Section(string section)

Description:
Deletes all key/values from a specific section.

Returns -1 in case of an error.

Returnvalues:
 integer retval 0, in case of success; -1, in case of an error 

Parameters:
 string section the section/extname, whose key/values shall be deleted 


^ Reaper version 5.40Lua version 5.3 DeleteProjExtState_Key

Functioncall:

integer retval = ultraschall.DeleteProjExtState_Key(string section, section key)

Description:
Deletes the value from a specific section -> key.

Returns -1 in case of an error.

Returnvalues:
 integer retval 0, in case of success; -1, in case of an error 

Parameters:
 string section the section/extname, from whom a key/value shall be deleted 
 string key the key, whose value shall be deleted 


^ Reaper version 5.40Lua version 5.3 GetProjExtState_AllKeyValues

Functioncall:

integer retval = ultraschall.GetProjExtState_AllKeyValues(string section)

Description:
Returns the count of all key/values in a specific section, as well as an array with all keynames and their accompanying stored values.
The array has the format:
   AllValues[idx][1]=Key
   AllValues[idx][2]=Value

Returns -1 in case of an error or if no key exists in the given section

Returnvalues:
 integer retval 0, in case of success; -1, in case of an error 

Parameters:
 string section the section/extname, from whom a key/value shall be deleted 


- ^ Reaper version 5.40Lua version 5.3 GetGuidExtState

Functioncall:

integer retval, string value = ultraschall.GetGuidExtState(string guid, string key, integer savelocation)

Description:
Gets an extension-state using a given guid. Good for storing additional metadata of objects like MediaTracks, MediaItems, MediaItem_Takes, etc(everything, that has a guid).
The guid can have additional text, but must contain a valid guid somewhere in it!
A valid guid is a string that follows the following pattern:
{........-....-....-....-............}
where . is a hexadecimal value(0-F)

Returns -1 in case of error

Returnvalues:
 integer retval the idx of the extstate(if a project extension state); 1, successful(with extension states), -1, unsuccessful 
 string value the returned value from the extstate 

Parameters:
 string guid the guid of the object, for whom you want to get the key/value-pair; can have additional characters before and after the guid, but must contain a valid guid! 
 string key the key for this guid 
 integer savelocation 0, get as project extension state(from the currently opened project); 1, get as global extension state(when persist=true, from reaper-extstate.ini in the resourcesfolder) 


+ ^ Reaper version 5.40Lua version 5.3 GetGuidExtState

Functioncall:

integer retval, string value = ultraschall.GetGuidExtState(string guid, string key, integer savelocation)

Description:
Gets an extension-state using a given guid. Good for storing additional metadata of objects like MediaTracks, MediaItems, MediaItem_Takes, etc(everything, that has a guid).
The guid can have additional text, but must contain a valid guid somewhere in it!
A valid guid is a string that follows the following pattern:
{........-....-....-....-............}
where . is a hexadecimal value(0-F)

Returns -1 in case of error

Returnvalues:
 integer retval the idx of the extstate(if a project extension state); 1, successful(with extension states), -1, unsuccessful 
 string value the returned value from the extstate 

Parameters:
 string guid the guid of the object, for whom you want to get the key/value-pair; can have additional characters before and after the guid, but must contain a valid guid! 
 string key the key for this guid 
 integer savelocation 0, get as project extension state(from the currently opened project); 1, get as global extension state(when persist=true, from reaper-extstate.ini in the resourcesfolder) 


+ ^ Reaper version 6.02Lua version 5.3 SetMarkerExtState

Functioncall:

integer retval = ultraschall.SetMarkerExtState(integer index, string key, string value)

Description:
Stores an Extstate for a specific marker/region.

The index is for all markers and regions, inclusive and 1-based

returns -1 in case of an error

Returnvalues:
 integer retval -1, in case of an error; 1, in case of success 

Parameters:
 integer index the marker/region-index, for which to store an extstate; starting with 1 for first marker/region, 2 for second marker/region 
 string key the key, into which the marker-extstate shall be stored 
 string value the value, which you want to store into the marker-extstate 


+ ^ Reaper version 6.02Lua version 5.3 GetMarkerExtState

Functioncall:

string value = ultraschall.GetMarkerExtState(integer index, string key)

Description:
Retrieves an Extstate for a specific marker/region.

The index is for all markers and regions, inclusive and 1-based

returns nil in case of an error

Returnvalues:
 string value the value, that has been stored into the marker-extstate; nil, in case of an error 

Parameters:
 integer index the marker/region-index, for which an extstate has been stored; starting with 1 for first marker/region, 2 for second marker/region 
 string key the key, in which the marker-extstate is stored 


^ Reaper version 5.77Lua version 5.3 ZoomVertical_MidiEditor

Functioncall:

boolean retval = ultraschall.ZoomVertical_MidiEditor(integer zoomamt, optional HWND midieditor_hwnd)

Description:
Zooms within the Midi-Editor vertically.

returns false in case of an error

Returnvalues:
 boolean retval true, if zooming was successful; false, if not 

Parameters:
 integer zoomamt the zoom-factor; positive values, zoom in; negative values, zoom out 
 optional HWND midieditor_hwnd the HWND of the MIDI-Editor, in which you want to zoom; nil, uses active MIDI-Editor 


^ Reaper version 5.77Lua version 5.3 ZoomHorizontal_MidiEditor

Functioncall:

boolean retval = ultraschall.ZoomHorizontal_MidiEditor(integer zoomamt, optional HWND midieditor_hwnd)

Description:
Zooms within the Midi-Editor horizontally.

returns false in case of an error

Returnvalues:
 boolean retval true, if zooming was successful; false, if not 

Parameters:
 integer zoomamt the zoom-factor; positive values, zoom in; negative values, zoom out 
 optional HWND midieditor_hwnd the HWND of the MIDI-Editor, in which you want to zoom; nil, uses active MIDI-Editor 


^ Reaper version 5.77Lua version 5.3 OpenItemInMidiEditor

Functioncall:

boolean retval = ultraschall.OpenItemInMidiEditor(MediaItem MediaItem)

Description:
opens a given MediaItem in the MIDI-Editor

returns false in case of an error

Returnvalues:
 boolean retval true, if opening was successful; false, if not 

Parameters:
 MediaItem MediaItem the MediaItem to be opened in the MIDI-Editor 


@@ -932,9 +945,9 @@ ^ Reaper version 5.95Lua version 5.3 GetLastLoopState

Functioncall:

string last_loop_state, string new_loop_state, number statechangetime = ultraschall.GetLastLoopState()

Description:
Returns the last and current loopstate. Needs Ultraschall-API-background-scripts started first, see RunBackgroundHelperFeatures().

Possible states are LOOPED, UNLOOPED

returns -1, if Ultraschall-API-backgroundscripts weren't started yet.

Returnvalues:
 string last_loop_state the last loopstate before the current one; -1, in case of an error 
 string new_loop_state the current loopstate; -1, in case of an error 
 number statechangetime the time, when the state has changed the last time 



^ Reaper version 5.965Lua version 5.3 GetLoopState

Functioncall:

integer retval = ultraschall.GetLoopState()

Description:
Returns the current loop-state

Returnvalues:
 integer retval 0, loop is on; 1, loop is off 



- ^ Reaper version 5.965Lua version 5.3 SetLoopState

Functioncall:

boolean retval = ultraschall.SetLoopState(integer state)

Description:
Sets the current loop-state

returns false in case of an error

Returnvalues:
 boolean retval true, if setting was successful; false, if setting was unsuccessful 

Parameters:
 integer state 0, loop is on; 1, loop is off 


- ^ Reaper version 5.40Lua version 5.3 CountProjectTabs

Functioncall:

integer number_of_projecttabs = ultraschall.CountProjectTabs()

Description:
Counts the number of opened project tabs.

Returnvalues:
 integer number_of_projecttabs the number of projecttabs currently opened 



- ^ Reaper version 5.40Lua version 5.3 GetProject_Tabs

Functioncall:

integer number_of_projecttabs, array projecttablist = ultraschall.GetProject_Tabs()

Description:
Returns the ReaProject-objects, as well as the filenames of all opened project-tabs.

Returnvalues:
 integer number_of_projecttabs the number of projecttabs currently opened 
 array projecttablist an array, that holds all ReaProjects as well as the projectfilenames
projecttablist[idx][1] = ReaProject
projecttablist[idx][2] = projectfilename with path 



+ ^ Reaper version 5.965Lua version 5.3 SetLoopState

Functioncall:

boolean retval = ultraschall.SetLoopState(integer state)

Description:
Sets the current loop-state

returns false in case of an error

Returnvalues:
 boolean retval true, if setting was successful; false, if setting was unsuccessful 

Parameters:
 integer state 0, loop is on; 1, loop is off 


+ ^ Reaper version 5.965SWS version 2.10.0.1Lua version 5.3 Scrubbing_MoveCursor_GetToggleState

Functioncall:

boolean state = ultraschall.Scrubbing_MoveCursor_GetToggleState()

Description:
Returns, if scrub is toggled on/off, for when moving editcursor via action or control surface, as set in Preferences -> Playback.

Returnvalues:
 boolean retval true, scrub is on; false, scrub is off 



+ ^ Reaper version 5.965SWS version 2.10.0.1Lua version 5.3 Scrubbing_MoveCursor_Toggle

Functioncall:

boolean state, optional integer new_scrubmode = ultraschall.Scrubbing_MoveCursor_Toggle(boolean toggle)

Description:
Toggles scrub on/off, for when moving editcursor via action or control surface, as set in Preferences -> Playback.

returns false in case of an error

Returnvalues:
 boolean retval true, toggling was successful; false, toggling was unsuccessful 
 optional integer new_scrubmode this is the new value of the configvariable scrubmode, which is altered by this function 

Parameters:
 boolean toggle true, toggles scrubbing on; false, toggles scrubbing off 


^ Reaper version 5.40Lua version 5.3 GetProjectFilename

Functioncall:

string projectfilename_with_path = ultraschall.GetProjectFilename(ReaProject proj)

Description:
Returns the filename of a currently opened project(-tab)

returns nil in case of an error

Returnvalues:
 string projectfilename_with_path the filename of the project; "", project hasn't been saved yet; nil, in case of an error 

Parameters:
 ReaProject proj a currently opened project, whose filename you want to know 


^ Reaper version 5.40Lua version 5.3 CheckForChangedProjectTabs

Functioncall:

boolean retval, integer countReorderedProj, array reorderedProj, integer countNewProj, array newProj, integer countClosedProj, array closedProj, integer countRenamedProjects, array RenamesProjects = ultraschall.CheckForChangedProjectTabs(boolean update)

Description:
Returns if projecttabs have been changed due reordering, new projects or closed projects, since last calling this function.
Set update=true to update Ultraschall's internal project-monitoring-list or it will only return the changes since starting the API in this script or since the last time you used this function with parameter update set to true!

Returns false, -1 in case of error.

Returnvalues:
 boolean retval false, no changes in the projecttabs at all; true, either order, newprojects or closed project-changes 
 integer countReorderedProj the number of reordered projects 
 array reorderedProj ReaProjects, who got reordered within the tabs 
 integer countNewProj the number of new projects 
 array newProj the new projects as ReaProjects 
 integer countClosedProj the number of closed projects 
 array closedProj the closed projects as ReaProjects 
 integer countRenamedProjects the number of projects, who got renamed by either saving under a new filename or loading of another project 
 array RenamesProjects the renamed projects, by loading a new project or saving the project under another filename 

Parameters:
 boolean update true, update Ultraschall's internal projecttab-monitoring-list to the current state of all tabs
false, don't update the internal projecttab-monitoring-list, so it will keep the "old" project-tab-state as checking-reference 


^ Reaper version 5.40Lua version 5.3 IsValidProjectStateChunk

Functioncall:

boolean retval = ultraschall.IsValidProjectStateChunk(string ProjectStateChunk)

Description:
Checks, whether ProjectStateChunk is a valid ProjectStateChunk

Returnvalues:
 boolean retval true, if it's a valid ProjectStateChunk; false, if not 

Parameters:
 string ProjectStateChunk the string to check, if it's a valid ProjectStateChunk 


@@ -1034,7 +1047,7 @@ ^ Reaper version 5.40Lua version 5.3 GetProject_CountMarkersAndRegions

Functioncall:

integer number_of_markers_and_regions, integer number_of_regions_only, integer number_of_markers_only = ultraschall.GetProject_CountMarkersAndRegions(string projectfilename_with_path)

Description:
returns the number of all markers, the number of regions and the number of markers(that are not regions) in the project.

It's the entry MARKER

returns -1 in case of an error

Returnvalues:
 integer number_of_markers_and_regions the number of all markers and regions 
 integer number_of_regions_only the number of regions 
 integer number_of_markers_only the number of markers only 

Parameters:
 string projectfilename_with_path the projectfilename in which to count the markers 


^ Reaper version 5.40Lua version 5.3 GetProject_GetMarker

Functioncall:

boolean retval, integer shownnumber, number markerposition, string markertitle, integer markercolor = ultraschall.GetProject_GetMarker(string projectfilename_with_path, integer idx)

Description:
returns the information of the marker idx in a projectfile.

It's the entry MARKER

returns false in case of error

Returnvalues:
 boolean retval true, in case of success; false in case of failure 
 integer shownnumber the number that is shown with the marker in the arrange-view 
 number markerposition the position of the marker in seconds 
 string markertitle the name of the marker. "" if no name is given. 
 integer markercolor the colorvalue of the marker 

Parameters:
 string projectfilename_with_path the projectfilename from where to get the marker 
 integer idx the number of the marker, you want to have the information of 


^ Reaper version 5.40Lua version 5.3 GetProject_GetRegion

Functioncall:

boolean retval, integer shownnumber, number start_of_region, number end_of_region, string regionname, integer regioncolor = ultraschall.GetProject_GetRegion(string projectfilename_with_path, integer idx)

Description:
returns the information of the region idx in a projectfile.

It's the entry MARKER

returns false in case of error

Returnvalues:
 boolean retval true, in case of success; false in case of failure 
 integer shownnumber the number that is shown with the region in the arrange-view 
 number start_of_region the startposition of the region in seconds 
 number end_of_region the endposition of the region in seconds 
 string regionname the name of the region. "" if no name is given. 
 integer regioncolor the colorvalue of the region 

Parameters:
 string projectfilename_with_path the projectfilename from where to get the region 
 integer idx the number of the marker, you want to have the information of 


- ^ Reaper version 5.40Lua version 5.3 GetProject_MarkersAndRegions

Functioncall:

integer markerregioncount, integer NumMarker, integer Numregions, array Markertable = ultraschall.GetProject_MarkersAndRegions(string projectfilename_with_path, optional string ProjectStateChunk)

Description:
Returns the markers and regions from an RPP-Projectfile or a ProjectStateChunk.
Doe not return TimeSignature-markers(!)
Returns nil in case of error or if no such entry exists.

Returnvalues:
 integer markerregioncount the number of markers and regions in the projectfile/ProjectStateChunk 
 array markertable an array with all elements of markers/regions
markertable has the following entries:
markertable[id][1]=boolean isrgn - true, marker is a region; false, marker is a normal marker
markertable[id][2]=number pos    - the startposition of the marker/region
markertable[id][3]=number rgnend - the endposition of a region; 0, if it's a marker
markertable[id][4]=string name   - the name of the marker/region
markertable[id][5]=integer markrgnindexnumber - the shown number of the region/marker
markertable[id][6]=integer color - the color-value of the marker 

Parameters:
 string projectfilename_with_path filename with path for the rpp-projectfile; nil, if you want to use parameter ProjectStateChunk 
 optional string ProjectStateChunk a ProjectStateChunk to use instead if a filename; only used, when projectfilename_with_path is nil 


+ ^ Reaper version 6.02Lua version 5.3 GetProject_MarkersAndRegions

Functioncall:

integer markerregioncount, integer NumMarker, integer Numregions, array Markertable = ultraschall.GetProject_MarkersAndRegions(string projectfilename_with_path, optional string ProjectStateChunk)

Description:
Returns the markers and regions from an RPP-Projectfile or a ProjectStateChunk.
Doe not return TimeSignature-markers(!)
Returns nil in case of error or if no such entry exists.

Returnvalues:
 integer markerregioncount the number of markers and regions in the projectfile/ProjectStateChunk 
 array markertable an array with all elements of markers/regions
markertable has the following entries:
markertable[id][1]=boolean isrgn - true, marker is a region; false, marker is a normal marker
markertable[id][2]=number pos    - the startposition of the marker/region
markertable[id][3]=number rgnend - the endposition of a region; 0, if it's a marker
markertable[id][4]=string name   - the name of the marker/region
markertable[id][5]=integer markrgnindexnumber - the shown number of the region/marker
markertable[id][6]=integer color - the color-value of the marker
markertable[id][7]=string guid - the guid of the marker 

Parameters:
 string projectfilename_with_path filename with path for the rpp-projectfile; nil, if you want to use parameter ProjectStateChunk 
 optional string ProjectStateChunk a ProjectStateChunk to use instead if a filename; only used, when projectfilename_with_path is nil 


^ Reaper version 5.77Lua version 5.3 IsValidReaProject

Functioncall:

boolean retval = ultraschall.IsValidReaProject(ReaProject ReaProject)

Description:
Returns, if parameter ReaProject is a valid ReaProject(means, an existing opened project) or not.

returns false in case of an error

Returnvalues:
 boolean retval true, if parameter ReaProject is a valid ReaProject; false, if parameter ReaProject isn't a valid ReaProject 

Parameters:
 ReaProject ReaProject the object that you want to check for being a valid ReaProject 


^ Reaper version 5.941Lua version 5.3 NewProjectTab

Functioncall:

ReaProject newproject = ultraschall.NewProjectTab(boolean switch_to_new_tab)

Description:
Opens a new projecttab and optionally switches to it. Returns the newly created ReaProject.

returns nil in case of an error

Returnvalues:
 ReaProject newproject the newly created project-object of the projecttab 

Parameters:
 boolean switch_to_new_tab true, switch to the newly created project-tab; false, stay in the "old" project-tab 


^ Reaper version 5.941Lua version 5.3 GetCurrentTimeLengthOfFrame

Functioncall:

number length = ultraschall.GetCurrentTimeLengthOfFrame(ReaProject ReaProject)

Description:
Returns a project's length of a frame in seconds. Depends on the fps set in the Project's settings of ReaProject.

Returns -1 in case of an error

Returnvalues:
 number length the current length of a frame of ReaProject in seconds 

Parameters:
 ReaProject ReaProject the project to check for; use nil or 0 for the current project 


@@ -1105,7 +1118,7 @@ ^ Reaper version 5.40Lua version 5.3 IsValidArrangeviewSnapshot

Functioncall:

boolean retval = ultraschall.IsValidArrangeviewSnapshot(integer slot)

Description:
Checks, if an Arrangeview-snapshot-slot is valid(means set).

Returns false in case of error.

Returnvalues:
 boolean retval true, if Arrangeview-Snapshot is valid; false, if Arrangeview-Snapshot is not existing 

Parameters:
 integer slot the slot for arrangeview-snapshot 


^ Reaper version 5.40Lua version 5.3 RetrieveArrangeviewSnapshot

Functioncall:

boolean retval, string description, number startposition, number endposition, integer vzoomfactor, number hzoomfactor, number vertical_scroll = ultraschall.RetrieveArrangeviewSnapshot(integer slot)

Description:
Retrieves an Arrangeview-snapshot and returns the startposition, endposition and vertical and horizontal zoom-factor as well as the number vertical-scroll-factor..

Returns false in case of error.

Returnvalues:
 boolean retval false, in case of error; true, in case of success 
 string description a description for this arrangeview-snapshot 
 number startposition the startposition of the arrangeview 
 number endposition the endposition of the arrangeview 
 integer vzoom the vertical-zoomfactor(0-40) 
 number hzoomfactor the horizontal zoomfactor 
 number vertical_scroll the vertical scroll-value 

Parameters:
 integer slot the slot for arrangeview-snapshot 


^ Reaper version 5.40SWS version 2.9.7Lua version 5.3 RestoreArrangeviewSnapshot

Functioncall:

boolean retval, string description, number startposition, number endposition, integer vzoomfactor, number hzoomfactor, number vertical_scroll_factor = ultraschall.RestoreArrangeviewSnapshot(integer slot, optional boolean position, optional boolean vzoom, optional integer hcentermode, optional boolean verticalscroll)

Description:
Sets arrangeview to start/endposition and horizontal and vertical-zoom, as received from Arrangeview-Snapshot-slot. It returns the newly set start/endposition, vertical zoom, horizontal zoom and description of slot.

Returns false in case of error.

Returnvalues:
 boolean retval false, in case of error; true, in case of success 
 string description a description for this arrangeview-snapshot 
 number startposition the startposition of the arrangeview 
 number endposition the endposition of the arrangeview 
 integer vzoom the vertical-zoomfactor(0-40) 
 number hzoomfactor the horizontal zoomfactor 
 number vertical_scroll_factor the vertical-scroll-factor 

Parameters:
 integer slot the slot for arrangeview-snapshot 
 optional boolean position nil or true, set arrange to stored start and endposition(and it's horizontal-zoom); false, set only horizontal-zoom 
 optional boolean vzoom nil or true, set vertical-zoom; false, don't set vertical zoom 
 optional integer hcentermode decides, what shall be in the center of the zoomed horizontal view. Only available when position==false
The following are available:
  nil, keeps center of view in the center during zoom(default)
   -1, default selection, as set in the reaper-prefs,
    0, edit-cursor or playcursor(if it's in the current zoomfactor of the view during playback/recording) in center,
    1, keeps edit-cursor in center of zoom
    2, keeps center of view in the center during zoom
    3, keeps in center of zoom, what is beneath the mousecursor 
 optional boolean verticalscroll true, sets vertical scroll-value as well; false, doesn't set vertical-scroll-value 


- ^ Reaper version 5.40Lua version 5.3 DeleteArrangeviewSnapshot

Functioncall:

integer retval = ultraschall.DeleteArrangeviewSnapshot(integer slot)

Description:
Deletes an ArrangeviewSnapshot-slot.

Returns -1 if the slot is unset.

Returnvalues:
 integer retval -1 in case of an error; 0 in case of success 

Parameters:
 integer slot the slot for arrangeview-snapshot 


+ ^ Reaper version 5.40Lua version 5.3 DeleteArrangeviewSnapshot

Functioncall:

integer retval = ultraschall.DeleteArrangeviewSnapshot(integer slot)

Description:
Deletes an ArrangeviewSnapshot-slot.

Returns -1 if the slot is unset or slot is an invalid value.

Returnvalues:
 integer retval -1 in case of an error; 0 in case of success 

Parameters:
 integer slot the slot for arrangeview-snapshot 


^ Reaper version 5.77Lua version 5.3 SetIDEFontSize

Functioncall:

boolean retval = ultraschall.SetIDEFontSize(integer fontsize)

Description:
Sets the fontsize of Reaper's IDE (ReaScript/Video Processor/JSFX)
New fontsize is valid for all IDE's opened after calling this function.

Returns false in case of an error

Returnvalues:
 boolean retval true, if setting was successful; false, if not 

Parameters:
 integer fontsize the new font-size for Reaper's IDEs 


^ Reaper version 5.77Lua version 5.3 GetIDEFontSize

Functioncall:

integer retval = ultraschall.GetIDEFontSize()

Description:
Returns the current fontsize of Reaper's IDE (ReaScript/Video Processor/JSFX)

Returnvalues:
 integer fontsize the currently set fontsize within Reaper's IDEs 



^ Reaper version 5.941SWS version 2.9.7Lua version 5.3 GetPlayCursorWidth

Functioncall:

integer play_cursor_width = ultraschall.GetPlayCursorWidth()

Description:
Returns the width of the playcursor in pixels

see SetPlayCursorWidth for setting the playcursor-width.

Returnvalues:
 integer play_cursor_width the width of the playcursor in pixels 



@@ -1492,4 +1505,4 @@ ^ Reaper version 5.965Lua version 5.3 SoundBoard_PlayList_Next

Functioncall:

ultraschall.Soundboard_PlayList_Next()

Description:
Stops current player and starts the next player within the playlist of the Ultraschall-Soundboard.

Needs ultraschall-Soundboard installed to be useable!

Track(s) who hold the soundboard must be recarmed and recinput set to MIDI or VKB.

For other playlist-related functions, see also Soundboard_PlayList_CurrentIndex, SoundBoard_PlayList_SetIndex and SoundBoard_PlayList_Previous




^ Reaper version 5.965Lua version 5.3 SoundBoard_PlayList_Previous

Functioncall:

ultraschall.Soundboard_PlayList_Previous()

Description:
Stops current player and starts the previous player within the playlist of the Ultraschall-Soundboard.

When the previous would be before the first, it will not do anything.

Needs ultraschall-Soundboard installed to be useable!

Track(s) who hold the soundboard must be recarmed and recinput set to MIDI or VKB.

For other playlist-related functions, see also Soundboard_PlayList_CurrentIndex, SoundBoard_PlayList_SetIndex and SoundBoard_PlayList_Next.

-




Automatically generated by Ultraschall-API 4.00 Beta 2.78 - 1070 functions and 6 Api-variables available


\ No newline at end of file +



Automatically generated by Ultraschall-API 4.00 Beta 2.79 - 1082 functions and 6 Api-variables available


\ No newline at end of file diff --git a/UserPlugins/ultraschall_api/Documentation/US_Api_GFX.html b/UserPlugins/ultraschall_api/Documentation/US_Api_GFX.html index 58e83391..6cf89a05 100644 --- a/UserPlugins/ultraschall_api/Documentation/US_Api_GFX.html +++ b/UserPlugins/ultraschall_api/Documentation/US_Api_GFX.html @@ -55,9 +55,9 @@
-


4.00Beta 2.78 - "Tchaikovski - Overture 1812" - 5th of November 2019 - Build: 40869

Functions Reference


Basic Shapes

+


4.00Beta 2.79 - "Yes - Owner of a lonely heart" - - Build: 40927

Functions Reference


Basic Shapes

GFX_DrawThickRoundRect  

Blitting

-
GFX_BlitFramebuffer  

Font Handling

+
GFX_BlitFramebufferGFX_BlitImageCentered 

Font Handling

GFX_SetFont  

Mouse Handling

GFX_GetMouseCap  

Window Handling

GFX_GetWindowHWNDGFX_Init 


@@ -68,4 +68,5 @@
Returnvalues:
 HWND hwnd the window-handler of the opened gfx-window; will contain a helpermessage, if you didn't use ultraschall.GFX_Init() for window creation.  



Reaper version 5.965Lua version 5.3 GFX_GetMouseCap

Functioncall:

string clickstate, string specific_clickstate, integer mouse_cap, integer click_x, integer click_y, integer drag_x, integer drag_y, integer mouse_wheel, integer mouse_hwheel = ultraschall.GFX_GetMouseCap(optional integer doubleclick_wait, optional integer drag_wait)

Description:
Checks mouseclick/wheel-behavior, since last time calling this function and returns it's state.
Allows you to get click, doubleclick, dragging, including the appropriate coordinates and mousewheel-states.

Much more convenient, than fiddling around with gfx.mouse_cap

Note: After doubleclicked, this will not return mouse-clicked-states, until the mouse-button is released. So any mouse-clicks during that can be only gotten from the retval mouse_cap.
      This is to prevent automatic mouse-dragging after double-clicks.

Returnvalues:
 string clickstate "", if not clicked, "CLK" for clicked and "FirstCLK", if the click is a first-click. 
 string specific_clickstate either "" for not clicked, "CLK" for clicked, "DBLCLK" for doubleclick or "DRAG" for dragging 
 integer mouse_cap the mouse_cap, a bitfield of mouse and keyboard modifier states
   1: left mouse button
   2: right mouse button
   4: Control key
   8: Shift key
   16: Alt key
   32: Windows key
   64: middle mouse button 
 integer click_x the x position, when the mouse has been clicked the last time 
 integer click_y the y position, when the mouse has been clicked the last time 
 integer drag_x the x-position of the mouse-dragging-coordinate; is like click_x for non-dragging mousestates 
 integer drag_y the y-position of the mouse-dragging-coordinate; is like click_y for non-dragging mousestates 
 integer mouse_wheel the mouse_wheel-delta, since the last time calling this function 
 integer mouse_hwheel the mouse_horizontal-wheel-delta, since the last time calling this function 

Parameters:
 optional integer doubleclick_wait the timeframe, in which a second click is recognized as double-click, in defer-cycles. 30 is approximately 1 second; nil, will use 15(default) 
 optional integer drag_wait the timeframe, after which a mouseclick without moving the mouse is recognized as dragging, in defer-cycles. 30 is approximately 1 second; nil, will use 5(default) 


-Reaper version 5.965Lua version 5.3 GFX_SetFont

Functioncall:

ultraschall.GFX_SetFont(integer fontindex, string font, integer size, string flagStr)

Description:
Sets the font of the gfx-window.

As Mac and Windows have different visible font-sizes for the same font-size, this function adapts the font-size correctly(unlike Reaper's own native gfx.setfont-function).

returns false in case of an error


Parameters:
 integer fontindex the font-id; idx=0 for default bitmapped font, no configuration is possible for this font. idx=1..16 for a configurable font 
 string font the name of the font 
 integer size the size of the font 
 string flagStr a string, which holds the desired font-styles. You can combine multiple ones, up to 4.
The following are valid:
B - bold
i - italic
o - white outline
r - blurred
s - sharpen
u - underline
v - inverse 



Automatically generated by Ultraschall-API 4.00 Beta 2.78 - 1070 functions and 6 Api-variables available


\ No newline at end of file +Reaper version 5.965Lua version 5.3 GFX_SetFont

Functioncall:

ultraschall.GFX_SetFont(integer fontindex, string font, integer size, string flagStr)

Description:
Sets the font of the gfx-window.

As Mac and Windows have different visible font-sizes for the same font-size, this function adapts the font-size correctly(unlike Reaper's own native gfx.setfont-function).

returns false in case of an error


Parameters:
 integer fontindex the font-id; idx=0 for default bitmapped font, no configuration is possible for this font. idx=1..16 for a configurable font 
 string font the name of the font 
 integer size the size of the font 
 string flagStr a string, which holds the desired font-styles. You can combine multiple ones, up to 4.
The following are valid:
B - bold
i - italic
o - white outline
r - blurred
s - sharpen
u - underline
v - inverse 


+Reaper version 5.99Lua version 5.3 GFX_BlitImageCentered

Functioncall:

boolean retval = ultraschall.GFX_BlitImageCentered(integer image, integer x, integer y, number scale, number rotate, optional number srcx, optional number srcy, optional number srcw, optional number srch, optional integer destx, optional integer desty, optional integer destw, optional integer desth, optional integer rotxoffs, optional integer rotyoffs)

Description:
Blits a centered image at the position given by parameter x and y. That means, the center of the image will be at x and y.

All the rest basically works like the regular gfx.blit-function.

returns false in case of an error

Returnvalues:
 boolean retval true, blitting was successful; false, blitting was unsuccessful 

Parameters:
 integer source the source-image/framebuffer to blit; -1 to 1023; -1 for the currently displayed framebuffer. 
 integer x the x-position of the center of the image 
 integer y the y-position of the center of the image 
 number scale the scale-factor; 1, for normal size; smaller or bigger than 1 make image smaller or bigger
has no effect, when destx, desty, destw, desth are given 
 number rotation the rotation-factor; 0 to 6.28; 3.14 for 180 degrees. 
 optional number srcx the x-coordinate-offset in the source-image 
 optional number srcy the y-coordinate-offset in the source-image 
 optional number srcw the width-offset in the source-image 
 optional number srch the height-offset in the source-image 
 optional integer destx the x-coordinate of the blitting destination 
 optional integer desty the y-coordinate of the blitting destination 
 optional integer destw the width of the blitting destination; may lead to stretched images 
 optional integer desth the height of the blitting destination; may lead to stretched images 
 optional number rotxoffs influences rotation 
 optional number rotyoffs influences rotation 



Automatically generated by Ultraschall-API 4.00 Beta 2.79 - 1082 functions and 6 Api-variables available


\ No newline at end of file diff --git a/UserPlugins/ultraschall_api/Documentation/US_Api_GUI.html b/UserPlugins/ultraschall_api/Documentation/US_Api_GUI.html index 5ea7460f..bf88889c 100644 --- a/UserPlugins/ultraschall_api/Documentation/US_Api_GUI.html +++ b/UserPlugins/ultraschall_api/Documentation/US_Api_GUI.html @@ -55,4 +55,4 @@
-


4.00Beta 2.78 - "Tchaikovski - Overture 1812" - 5th of November 2019 - Build: 40869

Functions Reference




Automatically generated by Ultraschall-API 4.00 Beta 2.78 - 1070 functions and 6 Api-variables available


\ No newline at end of file +


4.00Beta 2.79 - "Yes - Owner of a lonely heart" - - Build: 40927

Functions Reference




Automatically generated by Ultraschall-API 4.00 Beta 2.79 - 1082 functions and 6 Api-variables available


\ No newline at end of file diff --git a/UserPlugins/ultraschall_api/Documentation/US_Api_Introduction_and_Concepts.html b/UserPlugins/ultraschall_api/Documentation/US_Api_Introduction_and_Concepts.html index af7e7594..49726f22 100644 --- a/UserPlugins/ultraschall_api/Documentation/US_Api_Introduction_and_Concepts.html +++ b/UserPlugins/ultraschall_api/Documentation/US_Api_Introduction_and_Concepts.html @@ -55,7 +55,7 @@
-


4.00Beta 2.78 - "Tchaikovski - Overture 1812" - 5th of November 2019 - Build: 40869

Introduction and Concepts

+


4.00Beta 2.79 - "Yes - Owner of a lonely heart" - - Build: 40927

Introduction and Concepts

 
Introduction
Introduction to the Ultraschall API
@@ -4315,4 +4315,4 @@

RenderProject_RenderTable

I go to sleep now. I think, I deserved it :)

Meo Mespotine, Leipzig(Germany) 30th of November 2018

-
 
Introduction
Introduction to the Ultraschall API How to use the Ultraschall API How to install hotfixes Introduction: Bugreporting and Feature Requests



Automatically generated by Ultraschall-API 4.00 Beta 2.78 - 107 chapters available


\ No newline at end of file +



Automatically generated by Ultraschall-API 4.00 Beta 2.79 - 107 chapters available


\ No newline at end of file diff --git a/UserPlugins/ultraschall_api/Documentation/US_Api_VID.html b/UserPlugins/ultraschall_api/Documentation/US_Api_VID.html index 26aa3f64..f77309cf 100644 --- a/UserPlugins/ultraschall_api/Documentation/US_Api_VID.html +++ b/UserPlugins/ultraschall_api/Documentation/US_Api_VID.html @@ -55,10 +55,10 @@
-


4.00Beta 2.78 - "Tchaikovski - Overture 1812" - 5th of November 2019 - Build: 40869

Functions Reference


User Interface

+


4.00Beta 2.79 - "Yes - Owner of a lonely heart" - - Build: 40927

Functions Reference


User Interface

Coordinates
VID_Pixels2VideoUIStateCoordsVID_VideoUIStateCoords2Pixels 
Window Management
GetVideoHWND  


Reaper version 5.965Julian Sader's plugin version 0.963Lua version 5.3 GetVideoHWND

Functioncall:

HWND hwnd = ultraschall.GetVideoHWND()

Description:
returns the HWND of the Video window, if the window is opened.

returns nil if the Video Window is closed

Returnvalues:
 HWND hwnd the window-handler of the Video Window 



Reaper version 5.97Lua version 5.3 VID_VideoUIStateCoords2Pixels

Functioncall:

integer x_coordinate, integer y_coordinate = ultraschall.VID_VideoUIStateCoords2Pixels(number uistate_x, number uistate_y, integer videowindow_width, integer videowindow_height)

Description:
converts the ui_state-coordinates of the Video-Processor into pixel-coordinates within the Video Window

You should add x and y-position of the Video-Processor-window, to get the actual screen-coordinates.

returns nil in case of an error

Returnvalues:
 integer x_coordinate the converted x-coordinate 
 integer y_coordinate the converted y-coordinate 

Parameters:
 number uistate_x the x-coordinate, that the function ui_get_state within the videoprocessor returns 
 number uistate_y the y-coordinate, that the function ui_get_state within the videoprocessor returns 
 integer videowindow_width the current width of the Video Window 
 integer videowindow_height the current height of the Video Window 


-Reaper version 5.97Lua version 5.3 VID_Pixels2VideoUIStateCoords

Functioncall:

number uistate_x, number uistate_y = ultraschall.VID_Pixels2VideoUIStateCoords(integer x, integer y, integer videowindow_width, integer videowindow_height)

Description:
converts the ui_state-coordinates of the Video-Processor into pixel-coordinates within the Video Window

You should add x and y-position of the Video-Processor-window, to get the actual screen-coordinates.

returns nil in case of an error

Returnvalues:
 number x_coordinate the converted x-coordinate, that reflects the values within the video-processor function ui_get_state 
 number y_coordinate the converted y-coordinate, that reflects the values within the video-processor function ui_get_state 

Parameters:
 integer x the x-coordinate within the Video-Window 
 integer y the y-coordinate within the Video-Window 
 integer videowindow_width the current width of the Video Window 
 integer videowindow_height the current height of the Video Window 



Automatically generated by Ultraschall-API 4.00 Beta 2.78 - 1069 functions and -1065 Api-variables available


\ No newline at end of file +Reaper version 5.97Lua version 5.3 VID_Pixels2VideoUIStateCoords

Functioncall:

number uistate_x, number uistate_y = ultraschall.VID_Pixels2VideoUIStateCoords(integer x, integer y, integer videowindow_width, integer videowindow_height)

Description:
converts the ui_state-coordinates of the Video-Processor into pixel-coordinates within the Video Window

You should add x and y-position of the Video-Processor-window, to get the actual screen-coordinates.

returns nil in case of an error

Returnvalues:
 number x_coordinate the converted x-coordinate, that reflects the values within the video-processor function ui_get_state 
 number y_coordinate the converted y-coordinate, that reflects the values within the video-processor function ui_get_state 

Parameters:
 integer x the x-coordinate within the Video-Window 
 integer y the y-coordinate within the Video-Window 
 integer videowindow_width the current width of the Video Window 
 integer videowindow_height the current height of the Video Window 



Automatically generated by Ultraschall-API 4.00 Beta 2.79 - 1081 functions and -1077 Api-variables available


\ No newline at end of file diff --git a/UserPlugins/ultraschall_api/Documentation/gfx/Reaper_Internals.png b/UserPlugins/ultraschall_api/Documentation/gfx/Reaper_Internals.png index 29e1ddad..8cb978f0 100644 Binary files a/UserPlugins/ultraschall_api/Documentation/gfx/Reaper_Internals.png and b/UserPlugins/ultraschall_api/Documentation/gfx/Reaper_Internals.png differ diff --git a/UserPlugins/ultraschall_api/Documentation/gfx/US-header.png b/UserPlugins/ultraschall_api/Documentation/gfx/US-header.png index bdcb7667..1dbd91f9 100644 Binary files a/UserPlugins/ultraschall_api/Documentation/gfx/US-header.png and b/UserPlugins/ultraschall_api/Documentation/gfx/US-header.png differ diff --git a/UserPlugins/ultraschall_api/Documentation/gfx/reaper5.987.png b/UserPlugins/ultraschall_api/Documentation/gfx/reaper5.987.png new file mode 100644 index 00000000..92de9044 Binary files /dev/null and b/UserPlugins/ultraschall_api/Documentation/gfx/reaper5.987.png differ diff --git a/UserPlugins/ultraschall_api/Documentation/gfx/reaper5.99.png b/UserPlugins/ultraschall_api/Documentation/gfx/reaper5.99.png new file mode 100644 index 00000000..0776a245 Binary files /dev/null and b/UserPlugins/ultraschall_api/Documentation/gfx/reaper5.99.png differ diff --git a/UserPlugins/ultraschall_api/Documentation/gfx/reaper6.00.png b/UserPlugins/ultraschall_api/Documentation/gfx/reaper6.00.png new file mode 100644 index 00000000..470cf6d5 Binary files /dev/null and b/UserPlugins/ultraschall_api/Documentation/gfx/reaper6.00.png differ diff --git a/UserPlugins/ultraschall_api/Documentation/gfx/reaper6.01.png b/UserPlugins/ultraschall_api/Documentation/gfx/reaper6.01.png new file mode 100644 index 00000000..44e3cfe6 Binary files /dev/null and b/UserPlugins/ultraschall_api/Documentation/gfx/reaper6.01.png differ diff --git a/UserPlugins/ultraschall_api/Documentation/gfx/reaper6.02.png b/UserPlugins/ultraschall_api/Documentation/gfx/reaper6.02.png new file mode 100644 index 00000000..f15f5d0f Binary files /dev/null and b/UserPlugins/ultraschall_api/Documentation/gfx/reaper6.02.png differ diff --git a/UserPlugins/ultraschall_api/Documentation/gfx/reaper6.10.png b/UserPlugins/ultraschall_api/Documentation/gfx/reaper6.10.png new file mode 100644 index 00000000..6bb1434e Binary files /dev/null and b/UserPlugins/ultraschall_api/Documentation/gfx/reaper6.10.png differ diff --git a/UserPlugins/ultraschall_api/IniFiles/ultraschall_api.ini b/UserPlugins/ultraschall_api/IniFiles/ultraschall_api.ini index c51e570d..655e6678 100644 --- a/UserPlugins/ultraschall_api/IniFiles/ultraschall_api.ini +++ b/UserPlugins/ultraschall_api/IniFiles/ultraschall_api.ini @@ -1,8 +1,8 @@ [Ultraschall-Api-Build] -API-Build=40871 -API-Docs-FuncEngine=11122 -API-Docs-Introduction=2122 -API-Docs-ReaperApi=1447 +API-Build=40927 +API-Docs-FuncEngine=11168 +API-Docs-Introduction=2168 +API-Docs-ReaperApi=1457 DOC-Build=10400 Functions-Build=38629 GFX-Build=10237 diff --git a/UserPlugins/ultraschall_api/Modules/ultraschall_functions_ConfigurationFiles_Module.lua b/UserPlugins/ultraschall_api/Modules/ultraschall_functions_ConfigurationFiles_Module.lua index 41a623be..1ea4b663 100644 --- a/UserPlugins/ultraschall_api/Modules/ultraschall_functions_ConfigurationFiles_Module.lua +++ b/UserPlugins/ultraschall_api/Modules/ultraschall_functions_ConfigurationFiles_Module.lua @@ -61,6 +61,7 @@ function ultraschall.SetIniFileExternalState(section, key, value, ini_filename_w Ultraschall=4.00 Reaper=5.40 + SWS=2.8.8 Lua=5.3 boolean retval = ultraschall.SetIniFileExternalState(string section, string key, string value, string ini_filename_with_path) @@ -103,6 +104,7 @@ function ultraschall.GetIniFileExternalState(section, key, ini_filename_with_pat Ultraschall=4.00 Reaper=5.40 + SWS=2.8.8 Lua=5.3 string value = ultraschall.GetIniFileExternalState(string section, string key, string ini_filename_with_path) @@ -146,7 +148,6 @@ function ultraschall.CountIniFileExternalState_sec(ini_filename_with_path) Ultraschall=4.00 Reaper=5.40 - SWS=2.8.8 Lua=5.3 integer sectioncount = ultraschall.CountIniFileExternalState_sec(string ini_filename_with_path) @@ -188,7 +189,6 @@ function ultraschall.CountIniFileExternalState_key(section, ini_filename_with_pa Ultraschall=4.00 Reaper=5.40 - SWS=2.8.8 Lua=5.3 integer keyscount = ultraschall.CountIniFileExternalState_key(string section, string ini_filename_with_path) @@ -238,7 +238,6 @@ function ultraschall.EnumerateIniFileExternalState_sec(number_of_section, ini_fi Ultraschall=4.00 Reaper=5.40 - SWS=2.8.8 Lua=5.3 string sectionname = ultraschall.EnumerateIniFileExternalState_sec(integer number_of_section, string ini_filename_with_path) @@ -287,7 +286,6 @@ function ultraschall.EnumerateIniFileExternalState_key(section, number, ini_file Ultraschall=4.00 Reaper=5.40 - SWS=2.8.8 Lua=5.3 string keyname = ultraschall.EnumerateIniFileExternalState_key(string section, integer number, string ini_filename_with_path) @@ -343,7 +341,6 @@ function ultraschall.CountSectionsByPattern(pattern, ini_filename_with_path) Ultraschall=4.00 Reaper=5.40 - SWS=2.8.8 Lua=5.3 integer number_of_sections, string sectionnames = ultraschall.CountSectionsByPattern(string pattern, string ini_filename_with_path) @@ -396,7 +393,6 @@ function ultraschall.CountKeysByPattern(pattern, ini_filename_with_path) Ultraschall=4.00 Reaper=5.40 - SWS=2.8.8 Lua=5.3 integer number_of_keys, string sections_and_keys = ultraschall.CountKeysByPattern(string pattern, string ini_filename_with_path) @@ -458,10 +454,9 @@ function ultraschall.CountValuesByPattern(pattern, ini_filename_with_path) Ultraschall=4.00 Reaper=5.40 - SWS=2.8.8 Lua=5.3 - integer number_of_keys, string sections_and_keys = ultraschall.CountValuesByPattern(string pattern, string ini_filename_with_path) + integer number_of_values, string sections_and_keys = ultraschall.CountValuesByPattern(string pattern, string ini_filename_with_path) Counts the number of values within an ini-file, that fit a specific pattern. @@ -501,15 +496,17 @@ function ultraschall.CountValuesByPattern(pattern, ini_filename_with_path) local tiff=0 local temppattern=nil for line in io.lines(ini_filename_with_path) do - if line:match("%[.*%]") then temppattern=line tiff=1 end--:match("%[(.*)%]") tiff=1 end-- reaper.MB(temppattern,"",0) end - if line:match("%[.*%]")==nil and line:match(".*=("..pattern..")") then count=count+1 - if tiff==1 then retpattern=retpattern..temppattern.."," end - retpattern=retpattern..line:match(".*=").."," - retpattern=retpattern..line:match(".*=("..pattern..")").."," - tiff=0 + if line:match("%[.-%]")~=nil then temppattern=line end + if line:match(".-=")~=nil then + local A,B=line:match("(.-)=(.*)") + if B:match(pattern)~=nil then + count=count+1 + retpattern=retpattern..","..temppattern..","..A.."=,"..B + end end end - return count, retpattern:sub(1,-2) + + return count, retpattern:sub(2,-1) end function ultraschall.EnumerateSectionsByPattern(pattern, id, ini_filename_with_path) diff --git a/UserPlugins/ultraschall_api/Modules/ultraschall_functions_FileManagement_Module.lua b/UserPlugins/ultraschall_api/Modules/ultraschall_functions_FileManagement_Module.lua index 50a1017b..b9e7073a 100644 --- a/UserPlugins/ultraschall_api/Modules/ultraschall_functions_FileManagement_Module.lua +++ b/UserPlugins/ultraschall_api/Modules/ultraschall_functions_FileManagement_Module.lua @@ -1581,3 +1581,157 @@ end --A,B,C,D=ultraschall.GetAllRecursiveFilesAndSubdirectories("L:\\") +function ultraschall.SaveSubtitles_SRT(subtitle_filename_with_path, subtitle_table) +--[[ + + SaveSubtitles_SRT + + Ultraschall=4.00 + Reaper=5.99 + Lua=5.3 + + integer retval = ultraschall.SaveSubtitles_SRT(string subtitle_filename_with_path, table subtitle_table) + + saves the subtitles from the subtitle-table. + + The subtitles-table is expected to be of the following format: + + subtitle_table[subtitle_index]["start"] = starttime in seconds + subtitle_table[subtitle_index]["end"] = endtime in seconds + subtitle_table[subtitle_index]["caption"] = the caption, which shall be shown from start to end-time + + returns -1 in case of an error + + + string guid - the guid of the marker/region of the marker with a specific index + + + string subtitle_filename_with_path - the filename of the subtitle-file, into which you want to store the subtitles + table Table - the subtitle-table, which holds all captions and the start- and endtimes of displaying the caption + + + File Management + Write Files + + US_Api_Documentation + ultraschall_functions_engine.lua + file management, save, write, subtitles, srt, subrip, export + +--]] + if type(subtitle_filename_with_path)~="string" then ultraschall.AddErrorMessage("SaveSubtitles_SRT", "subtitle_filename_with_path", "must be a string", -1) return -1 end + if type(subtitle_table)~="table" then ultraschall.AddErrorMessage("SaveSubtitles_SRT", "subtitle_table", "must be a table", -2) return -1 end + local String="" + local i=1 + while type(subtitle_table[i])=="table" do + if subtitle_table[i]["start"]==nil + or subtitle_table[i]["end"]==nil + or subtitle_table[i]["caption"]==nil then + ultraschall.AddErrorMessage("SaveSubtitles_SRT", "subtitle_table", "entry "..i.." is missing information!", -3) + return -1 + end + String=String..i.."\n".. + string.gsub(ultraschall.SecondsToTimeString_hh_mm_ss_mss(subtitle_table[i]["start"]),"%.",",").." --> ".. + string.gsub(ultraschall.SecondsToTimeString_hh_mm_ss_mss(subtitle_table[i]["end"]),"%.",",").."\n".. + subtitle_table[i]["caption"].."\n\n" + i=i+1 + end + if String~="" then + return ultraschall.WriteValueToFile(subtitle_filename_with_path, String:sub(1,-3)) + else + ultraschall.AddErrorMessage("SaveSubtitles_SRT", "subtitle_table", "no subtitles available", -4) + return -1 + end +end + +function ultraschall.ReadSubtitles_SRT(filename_with_path) +--[[ + + ReadSubtitles_SRT + + Ultraschall=4.00 + Reaper=5.965 + Lua=5.3 + + integer Captions_Counter, table Captions = ultraschall.ReadSubtitles_SRT(string filename_with_path) + + parses an srt-subtitle-file and returns its contents as table + + returns nil in case of an error + + + integer Captions_Counter - the number of captions in the file + table Captions - the Captions as a table of the format: + - Captions[index]["start"]= the starttime of this caption in seconds + - Captions[index]["end"]= the endtime of this caption in seconds + - Captions[index]["caption"]= the caption itself + + + string filename_with_path - the filename with path of the subrip srt-file + + + File Management + Read Files + + US_Api_Documentation + ultraschall_functions_engine.lua + filemanagement, read, file, srt, subrip, subtitle, import + +--]] + if type(filename_with_path)~="string" then ultraschall.AddErrorMessage("ReadSubtitles_SRT", "filename_with_path", "must be a string", -1) return end + if reaper.file_exists(filename_with_path)=="false" then ultraschall.AddErrorMessage("ReadSubtitles_SRT", "filename_with_path", "must be a string", -2) return end + local A, Type, Offset, Kind, Language, Subs, Subs_Counter, i, line + line=0 + + Subs={} + Subs_Counter=0 + A=ultraschall.ReadFullFile(filename_with_path) + i=0 + local caption="" + if A:match("(.-)\n"):len()>0 then A="\n"..A line=-1 else line=0 end + A=A.."\n" + + for k in string.gmatch(A, "(.-)\n") do + line=line+1 + + if i==3 and k~="" then + -- get the captions + caption=caption..k.."\n" + elseif i==3 and k=="" then + -- put the captions into the Subs-table + if caption=="" then caption="" end + Subs[Subs_Counter]["caption"]=caption:sub(1,-2) + caption="" + i=0 + end + if i==2 and k:match("%-%-%>")~=nil then + -- get the start and endtime + Subs[Subs_Counter]["start"], Subs[Subs_Counter]["end"] = k:match("(.-) --> (.*)") + if Subs[Subs_Counter]["start"]==nil or Subs[Subs_Counter]["end"]==nil then ultraschall.AddErrorMessage("ReadSubtitles_SRT", "filename_with_path", "can't parse the time in line: "..line, -3) return end + Subs[Subs_Counter]["start"]=reaper.parse_timestr(Subs[Subs_Counter]["start"]) + Subs[Subs_Counter]["end"]=reaper.parse_timestr(Subs[Subs_Counter]["end"]) + i=3 + elseif i==2 then + -- if the time is not the expected start and endtime, stop with an error-message + ultraschall.AddErrorMessage("ReadSubtitles_SRT", "filename_with_path", "can't parse the time in line: "..line, -4) + return + end + if i==1 and tonumber(k)==nil then + -- if the caption-index isn't there, we have a faulty srt, so stop with an error-message + ultraschall.AddErrorMessage("ReadSubtitles_SRT", "filename_with_path", "can't parse the caption-index in line: "..line, -5) + return + elseif i==1 and tonumber(k)~=nil then + i=2 + end + if i==0 and k=="" then + -- if an empty line occurs, add a new entry to sub-table, into which we put the next caption + i=1 + Subs_Counter=Subs_Counter+1 + Subs[Subs_Counter]={} + end + end + + Subs[Subs_Counter]["caption"]=caption:sub(1,-2) + if Subs[Subs_Counter]["start"]==nil then Subs[Subs_Counter]=nil Subs_Counter=Subs_Counter-1 end + return Subs_Counter, Subs +end + diff --git a/UserPlugins/ultraschall_api/Modules/ultraschall_functions_HelperFunctions_Module.lua b/UserPlugins/ultraschall_api/Modules/ultraschall_functions_HelperFunctions_Module.lua index 3d7749ae..2a07bbf9 100644 --- a/UserPlugins/ultraschall_api/Modules/ultraschall_functions_HelperFunctions_Module.lua +++ b/UserPlugins/ultraschall_api/Modules/ultraschall_functions_HelperFunctions_Module.lua @@ -52,120 +52,8 @@ if type(ultraschall)~="table" then ultraschall.API_TempPath=reaper.GetResourcePath().."/UserPlugins/ultraschall_api/temp/" end -function print2(...) ---[[ - - print2 - - Ultraschall=4.00 - Reaper=5.965 - Lua=5.3 - - print2(parameter_1 to parameter_n) - - replaces Lua's own print-function. - - Converts all parametes given into string using tostring() and displays them as a MessageBox, separated by two spaces. - - - parameter_1 to parameter_n - the parameters, that you want to have printed out - - - API-Helper functions - - US_Api_Documentation - ultraschall_functions_engine.lua - helperfunctions, print, messagebox - -]] - - local string="" - local count=1 - local temp={...} - while temp[count]~=nil or temp[count+1]~=nil do - string=string.." "..tostring(temp[count]) - count=count+1 - end - reaper.MB(string:sub(3,-1),"Print",0) -end -function print_alt(...) ---[[ - - print_alt - - Ultraschall=4.00 - Reaper=5.965 - Lua=5.3 - - print_alt(parameter_1 to parameter_n) - - replaces Lua's own print-function, that is quite useless in Reaper. - - like [print](#print), but separates the entries by a two spaced, not a newline - - - parameter_1 to parameter_n - the parameters, that you want to have printed out - - - API-Helper functions - - US_Api_Documentation - ultraschall_functions_engine.lua - helperfunctions, print, console - -]] - - local string="" - local count=1 - local temp={...} - while temp[count]~=nil do - string=string.." "..tostring(temp[count]) - count=count+1 - end - if string:sub(-1,-1)=="\n" then string=string:sub(1,-2) end - reaper.ShowConsoleMsg(string:sub(3,-1).."\n","Print",0) -end - - -function print(...) ---[[ - - print - - Ultraschall=4.00 - Reaper=5.965 - Lua=5.3 - - print(parameter_1 to parameter_n) - - replaces Lua's own print-function, that is quite useless in Reaper. - - Converts all parametes given into string using tostring() and displays them in the ReaScript-console, separated by a newline and ending with a newline. - - - parameter_1 to parameter_n - the parameters, that you want to have printed out - - - API-Helper functions - - US_Api_Documentation - ultraschall_functions_engine.lua - helperfunctions, print, console - -]] - local string="" - local count=1 - local temp={...} - while temp[count]~=nil do - string=string.."\n"..tostring(temp[count]) - count=count+1 - end - if string:sub(-1,-1)=="\n" then string=string:sub(1,-2) end - reaper.ShowConsoleMsg(string:sub(2,-1).."\n","Print",0) -end - function ultraschall.SplitStringAtLineFeedToArray(unsplitstring) --[[ @@ -435,42 +323,7 @@ function ultraschall.GetPartialString(str,sep1,sep2) return result end -function ultraschall.RunCommand(actioncommand_id) ---[[ - - RunCommand - - Ultraschall=4.00 - Reaper=5.40 - Lua=5.3 - - integer retval = ultraschall.RunCommand(string actioncommand_id) - - runs a command by its ActionCommandID(instead of the CommandID-number) - - returns -1 in case of error - - - integer retval - -1, in case of error - - - string actioncommand_id - the ActionCommandID of the Command/Script/Action you want to run; must be either a number or the ActionCommandID beginning with an underscore _ - - - API-Helper functions - - US_Api_Documentation - ultraschall_functions_engine.lua - command,commandid,actioncommandid,action,run - ---]] - -- check parameter - if ultraschall.CheckActionCommandIDFormat(actioncommand_id)==false then ultraschall.AddErrorMessage("RunCommand", "actioncommand_id", "must be a command-number or start with an _underscore", -1) return -1 end - - -- run the command - local command_id = reaper.NamedCommandLookup(actioncommand_id) - reaper.Main_OnCommand(command_id,0) -end + function ultraschall.Notes2CSV() --[[ @@ -1162,52 +1015,6 @@ end --A,AA=ultraschall.CountPatternInString("HulaLLHulaLHulaHula,HULA,HuLahUlA", "Hula", false) -function toboolean(value) - -- converts a value to boolean, or returns nil, if not convertible ---[[ - - toboolean - - Ultraschall=4.00 - Reaper=5.40 - Lua=5.3 - - boolean retval = toboolean(string value) - - Converts the string "value" to a boolean, if applicable; means: if it contains either true or false in it. - If it contains both or other characters(except spaces or tabs), it will not convert. - Works basially like Lua's own tostring() or tonumber()-functions. - - Returns nil, if conversion isn't possible. - - Note: Unlike other ultraschall-api-functions, toboolean() has no ultraschall. in it's functionname! - - - string value - the value to be converted to a boolean. True and false can be upper-, lower and camelcase. - - - boolean retval - true or false, depending on the input variable value - - - API-Helper functions - - US_Api_Documentation - ultraschall_functions_engine.lua - helper functions, string, convert, boolean - ---]] - if type(value)=="boolean" then return value end - if value==nil then ultraschall.AddErrorMessage("toboolean","value", "must contain either true or false, nothing else. Spaces and tabs are allowed.", -1) return end - local value=value:lower() - local truth=value:match("^\t*%s*()true\t*%s*$") - local falseness=value:match("^\t*%s*()false\t*%s*$") - - if tonumber(truth)==nil and tonumber(falseness)~=nil then - return false - elseif tonumber(truth)~=nil and tonumber(falseness)==nil then - return true - end -end function ultraschall.OpenURL(url) --[[ @@ -4362,45 +4169,6 @@ end -function print3(...) ---[[ - - print3 - - Ultraschall=4.00 - Reaper=5.965 - SWS=2.9.7 - Lua=5.3 - - print(parameter_1 to parameter_n) - - like [print](#print), but puts the parameters into the clipboard. - - Converts all parametes given into string using tostring() and puts them into the clipboard, with each parameter separated by two spaces. - Unlike print and print2, this does NOT end with a newline! - - - parameter_1 to parameter_n - the parameters, that you want to have put into the clipboard - - - API-Helper functions - - US_Api_Documentation - ultraschall_functions_engine.lua - helperfunctions, print, clipboard - -]] - local Table={...} - local Stringer="" - local count=1 - while Table[count]~=nil do - Stringer=Stringer..tostring(Table[count]).." " - count=count+1 - end - reaper.CF_SetClipboard(Stringer:sub(1,-2)) -end - ---print3() function ultraschall.MKVOL2DB(mkvol_value) --[[ @@ -4483,10 +4251,6 @@ function ultraschall.DB2MKVOL(db_value) return math.exp(db_value/8.68588963806) end - -runcommand=ultraschall.RunCommand - - function ultraschall.ConvertIntegerIntoString2(Size, ...) --[[ @@ -4631,42 +4395,6 @@ function ultraschall.ConvertStringToIntegers(String, Size) return String:len(), Table end - -function print_update(...) ---[[ - - print_update - - Ultraschall=4.00 - Reaper=5.965 - Lua=5.3 - - print_update(parameter_1 to parameter_n) - - replaces Lua's own print-function, that is quite useless in Reaper. - - Converts all parametes given into string using tostring() and displays them in the ReaScript-console, separated by two spaces, ending with a newline. - - This is like [print](#print), but clears console everytime before displaying the values. Good for status-display, that shall not scroll. - - - parameter_1 to parameter_n - the parameters, that you want to have printed out - - - API-Helper functions - - US_Api_Documentation - ultraschall_functions_engine.lua - helperfunctions, print, clear, update, console - -]] - - reaper.ClearConsole() - print(...) -end - - - function ultraschall.SetScriptIdentifier_Description(description) --[[ @@ -5600,7 +5328,7 @@ function ultraschall.FindPatternsInString(SourceString, pattern, sort_after_find return counter-1, String, String2 end ---O,P,Q = ultraschall.FindPatternsInString(A, "(.-)", false) +--O,P,Q = ultraschall.FindPatternsInString(A, "<>(.-)", false) function ultraschall.RunLuaSourceCode(code) --[[ diff --git a/UserPlugins/ultraschall_api/Modules/ultraschall_functions_Markers_Module.lua b/UserPlugins/ultraschall_api/Modules/ultraschall_functions_Markers_Module.lua index 713dcc76..672776b5 100644 --- a/UserPlugins/ultraschall_api/Modules/ultraschall_functions_Markers_Module.lua +++ b/UserPlugins/ultraschall_api/Modules/ultraschall_functions_Markers_Module.lua @@ -3500,8 +3500,8 @@ function ultraschall.MoveRegionsBy(startposition, endposition, moveby, cut_at_bo for i=start, stop, step do local sretval, isrgn, pos, rgnend, name, markrgnindexnumber, color = reaper.EnumProjectMarkers3(0, i) - - reaper.MB("Pos:"..pos.." - Start:"..startposition.." End: "..endposition.." "..tostring(isrgn),"",0) + -- debug line + --reaper.MB("Pos:"..pos.." - Start:"..startposition.." End: "..endposition.." "..tostring(isrgn),"",0) if isrgn==true and (pos>=startposition and pos<=endposition) then -- only regions within start and endposition @@ -3511,16 +3511,16 @@ function ultraschall.MoveRegionsBy(startposition, endposition, moveby, cut_at_bo -- when regions would move after endposition, put it into the markerdelete-array markerdeleter[count]=markrgnindexnumber count=count+1 - reaper.MB("","0",0) + --reaper.MB("","0",0) elseif pos+moveby=startposition and rgnend+moveby<=endposition then -- when start of the region is before startposition and end of the region is within start and endposition, -- set start of the region to startposition and only move regionend by moveby - reaper.MB("","2",0) + --reaper.MB("","2",0) boolean=reaper.SetProjectMarker(markrgnindexnumber, isrgn, startposition, rgnend+moveby, name) -- elseif rgnend+moveby=startposition and pos+moveby<=endposition then -- when end of the region is BEFORE endposition and start of the region is within start and endposition, @@ -3528,12 +3528,12 @@ function ultraschall.MoveRegionsBy(startposition, endposition, moveby, cut_at_bo elseif rgnend+moveby>endposition and pos+moveby>=startposition and pos+moveby<=endposition then -- when end of the region is after endposition and start of the region is within start and endposition, -- set end of the region to endposition and only move regionstart(pos) by moveby - reaper.MB("","2",0) + --reaper.MB("","2",0) boolean=reaper.SetProjectMarker(markrgnindexnumber, isrgn, pos+moveby, endposition, name) else -- move the region by moveby boolean=reaper.SetProjectMarker(markrgnindexnumber, isrgn, pos+moveby, rgnend+moveby, name) - reaper.MB("","3",0) + --reaper.MB("","3",0) end else -- move the region by moveby @@ -3542,7 +3542,7 @@ function ultraschall.MoveRegionsBy(startposition, endposition, moveby, cut_at_bo end end for i=0, count-1 do - Aboolean=reaper.DeleteProjectMarker(0, markerdeleter[i], true) + reaper.DeleteProjectMarker(0, markerdeleter[i], true) end return 1 end @@ -4278,7 +4278,7 @@ function ultraschall.AddCustomMarker(custom_marker_name, pos, name, shown_number returns false in case of an error - string custom_marker_name - the name of the custom-marker. Don't include the _ at the beginning and the : at the end, or it might not be found. Exception: Your custom-marker is called "__CustomMarker::" + string custom_marker_name - the name of the custom-marker. Don't include the _ at the beginning and the : at the end, or it might not be found. Exception: Your custom-marker is called "__CustomMarker::"; nil, adds a normal marker number pos - the position of the marker in seconds string name - the name of the marker, exluding the custom-marker-name integer shown_number - the markernumber, that is displayed in the timeline of the arrangeview @@ -4297,13 +4297,15 @@ function ultraschall.AddCustomMarker(custom_marker_name, pos, name, shown_number ]] -- ToDo: return the index of the newly added marker, if that is useful - if type(custom_marker_name)~="string" then ultraschall.AddErrorMessage("AddCustomMarker", "custom_marker_name", "must be a string", -1) return false end + if custom_marker_name~=nil and type(custom_marker_name)~="string" then ultraschall.AddErrorMessage("AddCustomMarker", "custom_marker_name", "must be a string", -1) return false end if type(pos)~="number" then ultraschall.AddErrorMessage("AddCustomMarker", "pos", "must be a number", -2) return false end if type(name)~="string" then ultraschall.AddErrorMessage("AddCustomMarker", "name", "must be a string", -3) return false end if math.type(shown_number)~="integer" then ultraschall.AddErrorMessage("AddCustomMarker", "shown_number", "must be an integer", -4) return false end if math.type(color)~="integer" then ultraschall.AddErrorMessage("AddCustomMarker", "color", "must be an integer; 0, for default color", -5) return false end - reaper.AddProjectMarker2(0, false, pos, 0, "_"..custom_marker_name..": "..name, shown_number, color) + if custom_marker_name==nil then custom_marker_name=name else custom_marker_name="_"..custom_marker_name..": "..name end + + reaper.AddProjectMarker2(0, false, pos, 0, custom_marker_name, shown_number, color) return true end --A,B,C=ultraschall.AddCustomMarker("vanillachief", 1, "Hulahoop", 987, 9865) @@ -4341,7 +4343,7 @@ function ultraschall.AddCustomRegion(custom_region_name, pos, regionend, name, s returns false in case of an error - string custom_marker_name - the name of the custom-region. Don't include the _ at the beginning and the : at the end, or it might not be found. Exception: Your custom-region is called "__CustomRegion::" + string custom_marker_name - the name of the custom-region. Don't include the _ at the beginning and the : at the end, or it might not be found. Exception: Your custom-region is called "__CustomRegion::"; nil, make it a normal regionname number pos - the position of the region in seconds number regionend - the endposition of the region in seconds string name - the name of the region, exluding the custom-region-name @@ -4362,14 +4364,16 @@ function ultraschall.AddCustomRegion(custom_region_name, pos, regionend, name, s ]] -- ToDo: return the index of the newly added marker, if that is useful - if type(custom_region_name)~="string" then ultraschall.AddErrorMessage("AddCustomRegion", "custom_region_name", "must be a string", -1) return false end + if custom_region_name~=nil and type(custom_region_name)~="string" then ultraschall.AddErrorMessage("AddCustomRegion", "custom_region_name", "must be a string", -1) return false end if type(pos)~="number" then ultraschall.AddErrorMessage("AddCustomRegion", "pos", "must be a number", -2) return false end - if type(length)~="number" then ultraschall.AddErrorMessage("AddCustomRegion", "length", "must be a number", -6) return false end + if type(regionend)~="number" then ultraschall.AddErrorMessage("AddCustomRegion", "regionend", "must be a number", -6) return false end if type(name)~="string" then ultraschall.AddErrorMessage("AddCustomRegion", "name", "must be a string", -3) return false end if math.type(shown_number)~="integer" then ultraschall.AddErrorMessage("AddCustomRegion", "shown_number", "must be an integer", -4) return false end if math.type(color)~="integer" then ultraschall.AddErrorMessage("AddCustomRegion", "color", "must be an integer; 0, for default color", -5) return false end - local shown_number=reaper.AddProjectMarker2(0, true, pos, length, "_"..custom_region_name..": "..name, shown_number, color) + if custom_region_name==nil then custom_region_name=name else custom_region_name="_"..custom_region_name..": "..name end + + local shown_number=reaper.AddProjectMarker2(0, true, pos, regionend, custom_region_name, shown_number, color) return true, shown_number end @@ -4408,7 +4412,7 @@ function ultraschall.SetCustomMarker(custom_marker_name, idx, pos, name, shown_n returns false in case of an error - string custom_marker_name - the name of the custom-marker. Don't include the _ at the beginning and the : at the end, or it might not be found. Exception: Your custom-marker is called "__CustomMarker::" + string custom_marker_name - the name of the custom-marker. Don't include the _ at the beginning and the : at the end, or it might not be found. Exception: Your custom-marker is called "__CustomMarker::"; nil, make it a normal marker integer idx - the index-number of the custom-marker within all custom-markers number pos - the position of the marker in seconds string name - the name of the marker, exluding the custom-marker-name @@ -4438,7 +4442,9 @@ function ultraschall.SetCustomMarker(custom_marker_name, idx, pos, name, shown_n if retval==false then ultraschall.AddErrorMessage("SetCustomMarker", "idx", "no such custom-marker", -7) return false end - return reaper.SetProjectMarkerByIndex2(0, markerindex, false, pos, 0, shown_number, "_"..custom_marker_name..": "..name, color, 0) + custom_marker_name="_"..custom_marker_name..": "..name + + return reaper.SetProjectMarkerByIndex2(0, markerindex, false, pos, 0, shown_number, custom_marker_name, color, 0) end --A,B,C=ultraschall.SetCustomMarker("vanillachief", -3, 30, "Hulahoop9", 48787, 12) @@ -4447,15 +4453,15 @@ end function ultraschall.SetCustomRegion(custom_region_name, idx, pos, regionend, name, shown_number, color) --[[ - AddCustomRegion + SetCustomRegion Ultraschall=4.00 Reaper=5.965 Lua=5.3 - boolean retval, integer shown_number = ultraschall.AddCustomRegion(string custom_region_name, number pos, string name, integer shown_number, integer color) + boolean retval, integer shown_number = ultraschall.SetCustomRegion(string custom_region_name, integer idx, number pos, number regionend, string name, integer shown_number, integer color) - Will add new custom-region with a certain name. + Will set an already existing custom-region with a certain name. A custom-region has the naming-scheme @@ -4477,6 +4483,7 @@ function ultraschall.SetCustomRegion(custom_region_name, idx, pos, regionend, na string custom_marker_name - the name of the custom-region. Don't include the _ at the beginning and the : at the end, or it might not be found. Exception: Your custom-region is called "__CustomRegion::" + integer idx - the index of the custom region to change number pos - the position of the region in seconds string name - the name of the region, exluding the custom-region-name integer shown_number - the regionnumber, that is displayed in the timeline of the arrangeview @@ -4507,7 +4514,9 @@ function ultraschall.SetCustomRegion(custom_region_name, idx, pos, regionend, na if retval==false then ultraschall.AddErrorMessage("SetCustomRegion", "idx", "no such custom-region", -7) return false end - return reaper.SetProjectMarkerByIndex2(0, markerindex, true, pos, regionend, shown_number, "_"..custom_region_name..": "..name, color, 0) + custom_region_name="_"..custom_region_name..": "..name + + return reaper.SetProjectMarkerByIndex2(0, markerindex, true, pos, regionend, shown_number, custom_region_name, color, 0) end --A,B,C=ultraschall.SetCustomRegion("vanillachief", 0, 10, 20, "HudelDudel", 2, 0) @@ -4649,3 +4658,84 @@ end --C=ultraschall.IsRegionValidCustomRegion("vanillachief", 1) +function ultraschall.GetMarkerIDFromGuid(guid) +--[[ + + GetMarkerIDFromGuid + + Ultraschall=4.00 + Reaper=6.02 + Lua=5.3 + + integer index = ultraschall.GetMarkerIDFromGuid(string guid) + + Gets the corresponding indexnumber of a marker-guid + + The index is for all markers and regions, inclusive and 1-based + + returns -1 in case of an error + + + integer index - the index of the marker/region, whose guid you have passed to this function + + + string guid - the guid of the marker/region, whose index-number you want to retrieve + + + Markers + Assistance functions + + US_Api_Documentation + ultraschall_functions_engine.lua + marker management, get, markerid, guid + +--]] + if type(guid)~="string" then ultraschall.AddErrorMessage("GetMarkerIDFromGuid", "guid", "must be a string", -1) return -1 end + if ultraschall.IsValidGuid(guid, true)==false then ultraschall.AddErrorMessage("GetMarkerIDFromGuid", "guid", "must be a valid guid", -2) return -1 end + for i=0, reaper.CountProjectMarkers(0) do + local A,B=reaper.GetSetProjectInfo_String(0, "MARKER_GUID:"..(i-1), 1, false) + if B==guid then return i end + end + return -1 +end + +--A,guid=reaper.GetSetProjectInfo_String(0, "MARKER_GUID:1", 1, false) +--O=ultraschall.GetMarkerIDFromGuid(guid) + +function ultraschall.GetGuidFromMarkerID(index) +--[[ + + GetGuidFromMarkerID + + Ultraschall=4.00 + Reaper=6.02 + Lua=5.3 + + string guid = ultraschall.GetGuidFromMarkerID(integer index) + + Gets the corresponding marker-guid of a marker with a specific index + + The index is for all markers and regions, inclusive and 1-based + + returns -1 in case of an error + + + string guid - the guid of the marker/region of the marker with a specific index + + + integer index - the index of the marker/region, whose guid you want to retrieve + + + Markers + Assistance functions + + US_Api_Documentation + ultraschall_functions_engine.lua + marker management, get, markerid, guid + +--]] + if math.type(index)~="integer" then ultraschall.AddErrorMessage("GetGuidFromMarkerID", "index", "must be an integer", -1) return -1 end + if index<1 or index>reaper.CountProjectMarkers(0) then ultraschall.AddErrorMessage("GetGuidFromMarkerID", "index", "must be between 1 and "..reaper.CountProjectMarkers(0), -2) return -1 end + local A,B=reaper.GetSetProjectInfo_String(0, "MARKER_GUID:"..(index-1), 1, false) + return B +end diff --git a/UserPlugins/ultraschall_api/Modules/ultraschall_functions_MetaData_Module.lua b/UserPlugins/ultraschall_api/Modules/ultraschall_functions_MetaData_Module.lua index bbb8950d..2a280e7c 100644 --- a/UserPlugins/ultraschall_api/Modules/ultraschall_functions_MetaData_Module.lua +++ b/UserPlugins/ultraschall_api/Modules/ultraschall_functions_MetaData_Module.lua @@ -273,3 +273,92 @@ function ultraschall.GetTrackExtState(track, key) if retval==-1 then return false else return true, retval2 end end +function ultraschall.SetMarkerExtState(index, key, value) +--[[ + + SetMarkerExtState + + Ultraschall=4.00 + Reaper=6.02 + Lua=5.3 + + integer retval = ultraschall.SetMarkerExtState(integer index, string key, string value) + + Stores an Extstate for a specific marker/region. + + The index is for all markers and regions, inclusive and 1-based + + returns -1 in case of an error + + + integer retval - -1, in case of an error; 1, in case of success + + + integer index - the marker/region-index, for which to store an extstate; starting with 1 for first marker/region, 2 for second marker/region + string key - the key, into which the marker-extstate shall be stored + string value - the value, which you want to store into the marker-extstate + + + Metadata Management + Markers + + US_Api_Documentation + ultraschall_functions_engine.lua + extstate management, marker, region, set, extstate + +--]] + if math.type(index)~="integer" then ultraschall.AddErrorMessage("SetMarkerExtState", "index", "must be an integer", -1) return -1 end + if index<1 or index>reaper.CountProjectMarkers(0) then ultraschall.AddErrorMessage("SetMarkerExtState", "index", "must be between 1 and "..reaper.CountProjectMarkers(0), -2) return -1 end + if type(key)~="string" then ultraschall.AddErrorMessage("SetMarkerExtState", "key", "must be a string", -3) return -1 end + if type(value)~="string" then ultraschall.AddErrorMessage("SetMarkerExtState", "value", "must be an integer", -4) return -1 end + local A,B=reaper.GetSetProjectInfo_String(0, "MARKER_GUID:"..(index-1), 1, false) + return ultraschall.SetGuidExtState("MarkerExtState_"..B, key, value, 0, true, true) +end + +--A1,B1,C1=ultraschall.SetMarkerExtState(2, "Keyt", "marker 2") +--SLEM() + +function ultraschall.GetMarkerExtState(index, key) +--[[ + + GetMarkerExtState + + Ultraschall=4.00 + Reaper=6.02 + Lua=5.3 + + string value = ultraschall.GetMarkerExtState(integer index, string key) + + Retrieves an Extstate for a specific marker/region. + + The index is for all markers and regions, inclusive and 1-based + + returns nil in case of an error + + + string value - the value, that has been stored into the marker-extstate; nil, in case of an error + + + integer index - the marker/region-index, for which an extstate has been stored; starting with 1 for first marker/region, 2 for second marker/region + string key - the key, in which the marker-extstate is stored + + + Metadata Management + Markers + + US_Api_Documentation + ultraschall_functions_engine.lua + extstate management, marker, region, get, extstate + +--]] + if math.type(index)~="integer" then ultraschall.AddErrorMessage("GetMarkerExtState", "index", "must be an integer", -1) return end + if index<1 or index>reaper.CountProjectMarkers(0) then ultraschall.AddErrorMessage("GetMarkerExtState", "index", "must be between 1 and "..reaper.CountProjectMarkers(0), -2) return end + if type(key)~="string" then ultraschall.AddErrorMessage("GetMarkerExtState", "key", "must be a string", -3) return end + local A,B=reaper.GetSetProjectInfo_String(0, "MARKER_GUID:"..(index-1), 1, false) + local A1,B1=ultraschall.GetGuidExtState("MarkerExtState_"..B, key, 0, true) + return B1 +end + +--A1,B1,C1=ultraschall.GetMarkerExtState(2, "Keyt", "123") + + diff --git a/UserPlugins/ultraschall_api/Modules/ultraschall_functions_Navigation_Module.lua b/UserPlugins/ultraschall_api/Modules/ultraschall_functions_Navigation_Module.lua index dbec5d61..b11199c0 100644 --- a/UserPlugins/ultraschall_api/Modules/ultraschall_functions_Navigation_Module.lua +++ b/UserPlugins/ultraschall_api/Modules/ultraschall_functions_Navigation_Module.lua @@ -1280,3 +1280,68 @@ end --A=ultraschall.SetLoopState(0) +function ultraschall.Scrubbing_MoveCursor_GetToggleState() +--[[ + + Scrubbing_MoveCursor_GetToggleState + + Ultraschall=4.00 + Reaper=5.965 + SWS=2.10.0.1 + Lua=5.3 + + boolean state = ultraschall.Scrubbing_MoveCursor_GetToggleState() + + Returns, if scrub is toggled on/off, for when moving editcursor via action or control surface, as set in Preferences -> Playback. + + + boolean retval - true, scrub is on; false, scrub is off + + + Navigation + Scrubbing + + US_Api_Documentation + ultraschall_functions_engine.lua + navigation, get, scrub, when moving editcursor, action, surface + +--]] + if reaper.SNM_GetIntConfigVar("scrubmode", -9)&1==0 then return false else return true end +end + +function ultraschall.Scrubbing_MoveCursor_Toggle(toggle) +--[[ + + Scrubbing_MoveCursor_Toggle + + Ultraschall=4.00 + Reaper=5.965 + SWS=2.10.0.1 + Lua=5.3 + + boolean state, optional integer new_scrubmode = ultraschall.Scrubbing_MoveCursor_Toggle(boolean toggle) + + Toggles scrub on/off, for when moving editcursor via action or control surface, as set in Preferences -> Playback. + + returns false in case of an error + + + boolean retval - true, toggling was successful; false, toggling was unsuccessful + optional integer new_scrubmode - this is the new value of the configvariable scrubmode, which is altered by this function + + + boolean toggle - true, toggles scrubbing on; false, toggles scrubbing off + + + Navigation + Scrubbing + + US_Api_Documentation + ultraschall_functions_engine.lua + navigation, scrub, toggle, when moving editcursor, action, surface + +--]] + if type(toggle)~="boolean" then ultraschall.AddErrorMessage("Scrubbing_MoveCursor_Toggle", "toggle", "must be a boolean", -1) return false end + return ultraschall.GetSetIntConfigVar("scrubmode", true, toggle) +end + diff --git a/UserPlugins/ultraschall_api/Modules/ultraschall_functions_ProjectManagement_Module.lua b/UserPlugins/ultraschall_api/Modules/ultraschall_functions_ProjectManagement_Module.lua index cf9e1084..7950cb34 100644 --- a/UserPlugins/ultraschall_api/Modules/ultraschall_functions_ProjectManagement_Module.lua +++ b/UserPlugins/ultraschall_api/Modules/ultraschall_functions_ProjectManagement_Module.lua @@ -53,85 +53,7 @@ if type(ultraschall)~="table" then end -function ultraschall.CountProjectTabs() ---[[ - - CountProjectTabs - - Ultraschall=4.00 - Reaper=5.40 - Lua=5.3 - - integer number_of_projecttabs = ultraschall.CountProjectTabs() - - Counts the number of opened project tabs. - - - integer number_of_projecttabs - the number of projecttabs currently opened - - - Project-Management - Helper functions - - US_Api_Documentation - ultraschall_functions_engine.lua - helperfunctions, projectfiles, count, projecttab - -]] - local ProjCount=-1 - local Aretval="t" - while Aretval~=nil do - local Aretval, Aprojfn = reaper.EnumProjects(ProjCount+1, "") - if Aretval~=nil then ProjCount=ProjCount+1 - else break - end - end - return ProjCount+1 -end -function ultraschall.GetProject_Tabs() ---[[ - - GetProject_Tabs - - Ultraschall=4.00 - Reaper=5.40 - Lua=5.3 - - integer number_of_projecttabs, array projecttablist = ultraschall.GetProject_Tabs() - - Returns the ReaProject-objects, as well as the filenames of all opened project-tabs. - - - integer number_of_projecttabs - the number of projecttabs currently opened - array projecttablist - an array, that holds all ReaProjects as well as the projectfilenames - - projecttablist[idx][1] = ReaProject - - projecttablist[idx][2] = projectfilename with path - - - Project-Management - Helper functions - - US_Api_Documentation - ultraschall_functions_engine.lua - helperfunctions, projectfiles, count, projecttab, project, filename - -]] - local ProjTabList={} - local CountProj=ultraschall.CountProjectTabs() - for i=1, CountProj do - ProjTabList[i]={} - ProjTabList[i][1], ProjTabList[i][2] = reaper.EnumProjects(i-1, "") - end - return CountProj, ProjTabList -end - --- Project ChangeCheck Initialisation -ultraschall.tempCount, ultraschall.tempProjects = ultraschall.GetProject_Tabs() -if ultraschall.ProjectList==nil then - ultraschall.ProjectList=ultraschall.tempProjects - ultraschall.ProjectCount=ultraschall.tempCount -end function ultraschall.GetProjectFilename(proj) --[[ diff --git a/UserPlugins/ultraschall_api/Modules/ultraschall_functions_ProjectManagement_ProjectFiles_Module.lua b/UserPlugins/ultraschall_api/Modules/ultraschall_functions_ProjectManagement_ProjectFiles_Module.lua index 1752d8dc..4603a831 100644 --- a/UserPlugins/ultraschall_api/Modules/ultraschall_functions_ProjectManagement_ProjectFiles_Module.lua +++ b/UserPlugins/ultraschall_api/Modules/ultraschall_functions_ProjectManagement_ProjectFiles_Module.lua @@ -8659,7 +8659,7 @@ function ultraschall.GetProject_MarkersAndRegions(projectfilename_with_path, Pro GetProject_MarkersAndRegions Ultraschall=4.00 - Reaper=5.40 + Reaper=6.02 Lua=5.3 integer markerregioncount, integer NumMarker, integer Numregions, array Markertable = ultraschall.GetProject_MarkersAndRegions(string projectfilename_with_path, optional string ProjectStateChunk) @@ -8682,6 +8682,7 @@ function ultraschall.GetProject_MarkersAndRegions(projectfilename_with_path, Pro - markertable[id][4]=string name - the name of the marker/region - markertable[id][5]=integer markrgnindexnumber - the shown number of the region/marker - markertable[id][6]=integer color - the color-value of the marker + - markertable[id][7]=string guid - the guid of the marker
Project-Management @@ -8689,7 +8690,7 @@ function ultraschall.GetProject_MarkersAndRegions(projectfilename_with_path, Pro US_Api_Documentation ultraschall_functions_engine.lua - projectfiles, rpp, state, get, marker, regions + projectfiles, rpp, state, get, marker, regions, guid ]] @@ -8716,10 +8717,11 @@ function ultraschall.GetProject_MarkersAndRegions(projectfilename_with_path, Pro Marker, Offset=Markerlist:match("(MARKER.-\n)()") if Offset~=nil then Markerlist=Markerlist:sub(Offset,-1) end if Marker==nil then break end + Marker=Marker:sub(1,-2).." " MarkerCount=MarkerCount+1 - local shownnumber, position, name, isrgn, color, unknown, unknown2=Marker:match("MARKER (.-) (.-) \"(.-)\" (.-) (.-) (.-) (.*)") - if name==nil then shownnumber, position, name, isrgn, color, unknown, unknown2=Marker:match("MARKER (.-) (.-) (.-) (.-) (.-) (.-) (.*)") end + local shownnumber, position, name, isrgn, color, unknown, unknown2, guid = Marker:match("MARKER (.-) (.-) \"(.-)\" (.-) (.-) (.-) (.-) (.-) ") + if name==nil then shownnumber, position, name, isrgn, color, unknown, unknown2, guid = Marker:match("MARKER (.-) (.-) (.-) (.-) (.-) (.-) (.-) (.-) ") end if isrgn=="1" then endposition, Markerlist=Markerlist:match("MARKER .- (.-) .-(MARKER.*)") else @@ -8740,6 +8742,7 @@ function ultraschall.GetProject_MarkersAndRegions(projectfilename_with_path, Pro MarkerArray[MarkerCount][4]=name MarkerArray[MarkerCount][5]=tonumber(shownnumber) MarkerArray[MarkerCount][6]=tonumber(color) + MarkerArray[MarkerCount][7]=guid end return MarkerCount, NumMarker, NumRegions, MarkerArray end diff --git a/UserPlugins/ultraschall_api/Modules/ultraschall_functions_ReaperUserInterface_Module.lua b/UserPlugins/ultraschall_api/Modules/ultraschall_functions_ReaperUserInterface_Module.lua index f0de8374..8b9a5e2c 100644 --- a/UserPlugins/ultraschall_api/Modules/ultraschall_functions_ReaperUserInterface_Module.lua +++ b/UserPlugins/ultraschall_api/Modules/ultraschall_functions_ReaperUserInterface_Module.lua @@ -268,7 +268,7 @@ function ultraschall.IsValidArrangeviewSnapshot(slot) reaper.GetProjExtState(0,"Ultraschall", "ArrangeViewSnapShot_"..slot.."_description")~=0 or reaper.GetProjExtState(0,"Ultraschall", "ArrangeViewSnapShot_"..slot.."_hzoom")~=0 or reaper.GetProjExtState(0,"Ultraschall", "ArrangeViewSnapShot_"..slot.."_vzoom")~=0 or - reaper.GetProjExtState(0, "Ultraschall", "ArrangeViewSnapShot_"..slot.."_vscroll")~="" then + reaper.GetProjExtState(0, "Ultraschall", "ArrangeViewSnapShot_"..slot.."_vscroll")~=0 then return true else return false @@ -320,7 +320,7 @@ function ultraschall.RetrieveArrangeviewSnapshot(slot) -- prepare variables slot=tostring(slot) - local _l, start, ende, description, vzoom, hzoom + local _l, start, ende, description, vzoom, hzoom, vscroll -- get information from arrangeview-snapshot-slot and return it, if existing if reaper.GetProjExtState(0,"Ultraschall", "ArrangeViewSnapShot_"..slot.."_start")~=0 or @@ -447,11 +447,11 @@ function ultraschall.DeleteArrangeviewSnapshot(slot) Deletes an ArrangeviewSnapshot-slot. - Returns -1 if the slot is unset. + Returns -1 if the slot is unset or slot is an invalid value. integer slot - the slot for arrangeview-snapshot - +
integer retval - -1 in case of an error; 0 in case of success @@ -464,7 +464,15 @@ function ultraschall.DeleteArrangeviewSnapshot(slot) userinterface, delete, arrangeview, snapshot, startposition, endposition, verticalzoom --]] - return ultraschall.DeleteProjExtState_Section("Ultraschall", "ArrangeViewSnapShot_"..slot) + if math.type(slot)~="integer" then ultraschall.AddErrorMessage("DeleteArrangeviewSnapshot","slot", "Must be an integer!", -1) return -1 end + + reaper.SetProjExtState(0, "Ultraschall", "ArrangeViewSnapShot_"..slot.."_start","","") + reaper.SetProjExtState(0, "Ultraschall", "ArrangeViewSnapShot_"..slot.."_end","","") + reaper.SetProjExtState(0, "Ultraschall", "ArrangeViewSnapShot_"..slot.."_description","","") + reaper.SetProjExtState(0, "Ultraschall", "ArrangeViewSnapShot_"..slot.."_hzoom","","") + reaper.SetProjExtState(0, "Ultraschall", "ArrangeViewSnapShot_"..slot.."_vzoom","","") + reaper.SetProjExtState(0, "Ultraschall", "ArrangeViewSnapShot_"..slot.."_vscroll","","") + return 1 end diff --git a/UserPlugins/ultraschall_api/Reaper-Internals-readme.txt b/UserPlugins/ultraschall_api/Reaper-Internals-readme.txt new file mode 100644 index 00000000..6ae009f8 --- /dev/null +++ b/UserPlugins/ultraschall_api/Reaper-Internals-readme.txt @@ -0,0 +1,11 @@ +compiled by Meo Mespotine(mespotine.de) for the ultraschall.fm-project + +Documentation for Reaper-Internals 6.2 and Ultraschall Api 4.00-Beta 2.79, SWS 2.10.0.1, JS-extension-plugin 0.995 and ReaPack + +Written and compiled by Meo Mespotine (mespotine.de) for the Ultraschall.FM-project. +licensed under creative-commons by-sa-nc-license + +Some docs are enhanced versions of the original docs and the Reaper-logo is by the Cockos Inc. +The SWS-logo is by SWS-extension.org + +You can download the full Ultraschall-API-framework at ultraschall.fm/api diff --git a/UserPlugins/ultraschall_api/Scripts/Tools/DeveloperScripts/ultraschall_developertool_CheckForNewConfigVars.lua b/UserPlugins/ultraschall_api/Scripts/Tools/DeveloperScripts/ultraschall_developertool_CheckForNewConfigVars.lua index c7d11d3b..3a2090ef 100644 --- a/UserPlugins/ultraschall_api/Scripts/Tools/DeveloperScripts/ultraschall_developertool_CheckForNewConfigVars.lua +++ b/UserPlugins/ultraschall_api/Scripts/Tools/DeveloperScripts/ultraschall_developertool_CheckForNewConfigVars.lua @@ -43,7 +43,7 @@ dofile(reaper.GetResourcePath().."/UserPlugins/ultraschall_api.lua") A2=ultraschall.ReadFullFile(reaper.GetResourcePath().."/UserPlugins/ultraschall_api/DocsSourcefiles/reaper-config_var.USDocML") if A2==nil then A2="" end -A2="" +--A2="" orgvars={} Acount=1 diff --git a/UserPlugins/ultraschall_api/Scripts/Tools/DeveloperScripts/ultraschall_developertool_Display-Altered-Config-Vars.lua b/UserPlugins/ultraschall_api/Scripts/Tools/DeveloperScripts/ultraschall_developertool_Display-Altered-Config-Vars.lua index c5d076f7..159155f6 100644 --- a/UserPlugins/ultraschall_api/Scripts/Tools/DeveloperScripts/ultraschall_developertool_Display-Altered-Config-Vars.lua +++ b/UserPlugins/ultraschall_api/Scripts/Tools/DeveloperScripts/ultraschall_developertool_Display-Altered-Config-Vars.lua @@ -24,7 +24,7 @@ ################################################################################ --]] --- written by Meo Mespotine mespotine.de 20th of August 2019 +-- written by Meo Mespotine mespotine.de 26th of November 2019 -- for the ultraschall.fm-project -- requires Reaper 5.982 and SWS 2.9.10.1, JS-extension 0.986 and Ultraschall-API 4.00 beta 2.761 installed @@ -50,6 +50,9 @@ B=tonumber(A:match("(.-)/")) if B==nil then B=tonumber(A:match("(.-)+")) end +if B==nil then + B=tonumber(A:match("(.-%.%d*)")) +end if reaper.file_exists(reaper.GetResourcePath().."/UserPlugins/ultraschall_api.lua")==false or reaper.CF_SetClipboard==nil diff --git a/UserPlugins/ultraschall_api/Scripts/Tools/Docgenerator/Reaper_ReaScriptConverter.lua b/UserPlugins/ultraschall_api/Scripts/Tools/Docgenerator/Reaper_ReaScriptConverter.lua index ae0e48aa..adc30de5 100644 --- a/UserPlugins/ultraschall_api/Scripts/Tools/Docgenerator/Reaper_ReaScriptConverter.lua +++ b/UserPlugins/ultraschall_api/Scripts/Tools/Docgenerator/Reaper_ReaScriptConverter.lua @@ -563,7 +563,7 @@ function header() end function contentindex() - FunctionList=FunctionList.."


Reaper Reascript-Api-Documentation 5.984
\"Ken Enjoyer\"

The Functions Reference

" + FunctionList=FunctionList.."


Reaper Reascript-Api-Documentation 6.02
\"The Aristocrats!\"

The Functions Reference

" reaper.ClearConsole() reaper.ShowConsoleMsg("Create Index\n") HeaderList={} diff --git a/UserPlugins/ultraschall_api/Scripts/Tools/Reapack-API-xml-generator.lua b/UserPlugins/ultraschall_api/Scripts/Tools/Reapack-API-xml-generator.lua index aa6c3dd0..fd902c8f 100644 --- a/UserPlugins/ultraschall_api/Scripts/Tools/Reapack-API-xml-generator.lua +++ b/UserPlugins/ultraschall_api/Scripts/Tools/Reapack-API-xml-generator.lua @@ -119,12 +119,12 @@ Batter=[[ cd ]]..SourceDir..[[ del c:\Ultraschall-Api-Git-Repo\Ultraschall-Api-for-Reaper\ultraschall_api4.00_]]..C2vers..[[.zip -zip.exe c:\Ultraschall-Api-Git-Repo\Ultraschall-Api-for-Reaper\ultraschall_api4.00_]]..C2vers..[[.zip *.lua *.txt ultraschall_api -r +zip.exe -r c:\Ultraschall-Api-Git-Repo\Ultraschall-Api-for-Reaper\ultraschall_api4.00_]]..C2vers..[[.zip *.lua *.txt ultraschall_api del c:\Ultraschall-Api-Git-Repo\Ultraschall-Api-for-Reaper\Reaper-Internals-Ultraschall-Api-Docs.zip cd ultraschall_api -..\zip.exe c:\Ultraschall-Api-Git-Repo\Ultraschall-Api-for-Reaper\Reaper-Internals-Ultraschall-Api-Docs.zip Documentation\* Reaper-Internals-readme.txt c:\Reaper-Internal-Docs-Miscellaneous_Maybe_Helpful_Files -r +..\zip.exe -r c:\Ultraschall-Api-Git-Repo\Ultraschall-Api-for-Reaper\Reaper-Internals-Ultraschall-Api-Docs.zip Documentation\* Reaper-Internals-readme.txt c:\Reaper-Internal-Docs-Miscellaneous_Maybe_Helpful_Files del Reaper-Internals-readme.txt del Scripts\Tools\batter.bat ]] diff --git a/UserPlugins/ultraschall_api/Scripts/Tools/Ultraschall_API-UnitTest.lua b/UserPlugins/ultraschall_api/Scripts/Tools/Ultraschall_API-UnitTest.lua new file mode 100644 index 00000000..5d784f6b --- /dev/null +++ b/UserPlugins/ultraschall_api/Scripts/Tools/Ultraschall_API-UnitTest.lua @@ -0,0 +1,59 @@ +--[[ +################################################################################ +# +# Copyright (c) 2014-2019 Ultraschall (http://ultraschall.fm) +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. +# +################################################################################ +]] + +-- Some Basic Unit Tests +dofile(reaper.GetResourcePath().."/UserPlugins/ultraschall_api.lua") + +-- are all functions still available, when with the modules-approach +found_dirs, dirs_array, found_files, files_array = ultraschall.GetAllRecursiveFilesAndSubdirectories(reaper.GetResourcePath().."/UserPlugins/ultraschall_api/Modules/") + +A="" + +for i=1, found_files do + A=A.."\n"..ultraschall.ReadFullFile(files_array[i]) +end + +A=A.."\n"..ultraschall.ReadFullFile(reaper.GetResourcePath().."/UserPlugins/ultraschall_api/ultraschall_datastructures_engine.lua") +A=A.."\n"..ultraschall.ReadFullFile(reaper.GetResourcePath().."/UserPlugins/ultraschall_api/ultraschall_doc_engine.lua") +A=A.."\n"..ultraschall.ReadFullFile(reaper.GetResourcePath().."/UserPlugins/ultraschall_api/ultraschall_functions_engine.lua") +A=A.."\n"..ultraschall.ReadFullFile(reaper.GetResourcePath().."/UserPlugins/ultraschall_api/ultraschall_gfx_engine.lua") +A=A.."\n"..ultraschall.ReadFullFile(reaper.GetResourcePath().."/UserPlugins/ultraschall_api/ultraschall_gui_engine.lua") +A=A.."\n"..ultraschall.ReadFullFile(reaper.GetResourcePath().."/UserPlugins/ultraschall_api/ultraschall_network_engine.lua") +A=A.."\n"..ultraschall.ReadFullFile(reaper.GetResourcePath().."/UserPlugins/ultraschall_api/ultraschall_sound_engine.lua") +A=A.."\n"..ultraschall.ReadFullFile(reaper.GetResourcePath().."/UserPlugins/ultraschall_api/ultraschall_tag_engine.lua") +A=A.."\n"..ultraschall.ReadFullFile(reaper.GetResourcePath().."/UserPlugins/ultraschall_api/ultraschall_video_engine.lua") + +B="" + +for k in string.gmatch(A, "(.-)") do + B=B..string.gsub(k,"\n","").."\n" +end + +--print3(B) +Found="" +for k in string.gmatch(B, "(.-)\n") do + if ultraschall[k]==nil then print(k) Found=Found.."\n"..k end +end diff --git a/UserPlugins/ultraschall_api/Scripts/Tools/batter.bat b/UserPlugins/ultraschall_api/Scripts/Tools/batter.bat new file mode 100644 index 00000000..8bf3b438 --- /dev/null +++ b/UserPlugins/ultraschall_api/Scripts/Tools/batter.bat @@ -0,0 +1,10 @@ +cd C:\Ultraschall-Hackversion_3.2_US_beta_2_79/UserPlugins/ +del c:\Ultraschall-Api-Git-Repo\Ultraschall-Api-for-Reaper\ultraschall_api4.00_beta2.79.zip +zip.exe -r c:\Ultraschall-Api-Git-Repo\Ultraschall-Api-for-Reaper\ultraschall_api4.00_beta2.79.zip *.lua *.txt ultraschall_api + +del c:\Ultraschall-Api-Git-Repo\Ultraschall-Api-for-Reaper\Reaper-Internals-Ultraschall-Api-Docs.zip +cd ultraschall_api + +..\zip.exe -r c:\Ultraschall-Api-Git-Repo\Ultraschall-Api-for-Reaper\Reaper-Internals-Ultraschall-Api-Docs.zip Documentation\* Reaper-Internals-readme.txt c:\Reaper-Internal-Docs-Miscellaneous_Maybe_Helpful_Files +del Reaper-Internals-readme.txt +del Scripts\Tools\batter.bat diff --git a/UserPlugins/ultraschall_api/Scripts/Tools/ultraschall_ModulerLoader_Generator.lua b/UserPlugins/ultraschall_api/Scripts/Tools/ultraschall_ModulerLoader_Generator.lua new file mode 100644 index 00000000..ee270d54 --- /dev/null +++ b/UserPlugins/ultraschall_api/Scripts/Tools/ultraschall_ModulerLoader_Generator.lua @@ -0,0 +1,120 @@ +dofile(reaper.GetResourcePath().."/UserPlugins/ultraschall_api.lua") + +--[[ +A=reaper.time_precise() +for i=1, 100 do + dofile(reaper.GetResourcePath().."/UserPlugins/ultraschall_api.lua") +end +B=reaper.time_precise() +C=B-A +--]] +Path=ultraschall.Api_Path.."Modules" + +A1=type(Path) + +print_update("Creating Moduleloader\nGet All Files") +found_dirs, dirs_array, found_files, files_array = ultraschall.GetAllRecursiveFilesAndSubdirectories(Path) + +SLEM() +AAA=collectgarbage("count") +AAA2=collectgarbage("collect") +AAA3=collectgarbage("count") + +--if kuddel==nil then return end + +print_update("Creating Moduleloader\nParse Modules") +ModulesList="" +for i=1, found_files do + ModulesList=ModulesList.."\""..files_array[i]:match(".*/(.*)").."\",\n" +end + +print_update("Creating Moduleloader\nModule Number") +function GetModuleNumber(name) + for i=1, found_files do + if files_array[i]:match(name) then return i end + end +end + +ModulesList=ModulesList:sub(1,-3) + +Files_Contents="" +OutPutFile=[[ +--[]]..[[[ +################################################################################ +# +# Copyright (c) 2014-2019 Ultraschall (http://ultraschall.fm) +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. +# +################################################################################ +]].. + "]]\n-- This makes the incredible and magical automatic loading of functions-when-needed-feature possible\n"..[[ + +function ultraschall.LM(name) + dofile(ultraschall.Api_Path.."/Modules/"..ultraschall.Modules_List[name]) +end + +ultraschall.Modules_List={]]..ModulesList..[[} + +if ultraschall.US_BetaFunctions=="ON" then + -- if beta-functions are available, load all functions from all modules + local found_files=0 + local files_array2={} + local filecount=0 + local file="" + while file~=nil do + local file=reaper.EnumerateFiles(reaper.GetResourcePath().."/UserPlugins/ultraschall_api/Modules/",filecount) + if file==nil then break end + file=reaper.GetResourcePath().."/UserPlugins/ultraschall_api/Modules/"..file + found_files=filecount+1 + files_array2[filecount+1]=file + filecount=filecount+1 + end + for i=1, found_files do + dofile(files_array2[i]) + end +else + -- if beta-functions aren't available, load temporary functions, who load their accompanying module, when needed +]] + + +print_update("Creating Moduleloader\nCreate Moduleloader") + +for i=1, found_files do + Files_Contents=ultraschall.ReadFullFile(files_array[i]) + for k in string.gmatch(Files_Contents, "(.-)") do + k=string.gsub(k, "\n", "") + k=string.gsub(k, "\r", "") + OutPutFile=OutPutFile..[[ + function ultraschall.]]..k..[[(...) + ultraschall.LM(]]..GetModuleNumber(files_array[i]:match(".*/(.*)"))..[[) + return ultraschall.]]..k..[[(table.unpack({...})) + end +]] + end +end + + +OutPutFile=OutPutFile.."end\ncollectgarbage(\"collect\")" + +print_update("Creating Moduleloader\nWrite Moduleloader") + +ultraschall.WriteValueToFile(ultraschall.Api_Path.."/ultraschall_ModulatorLoad3000.lua", OutPutFile) + + diff --git a/UserPlugins/ultraschall_api/ultraschall_ModulatorLoad3000.lua b/UserPlugins/ultraschall_api/ultraschall_ModulatorLoad3000.lua new file mode 100644 index 00000000..2198b81d --- /dev/null +++ b/UserPlugins/ultraschall_api/ultraschall_ModulatorLoad3000.lua @@ -0,0 +1,4182 @@ +--[[ +################################################################################ +# +# Copyright (c) 2014-2019 Ultraschall (http://ultraschall.fm) +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. +# +################################################################################ +]] +-- This makes the incredible and magical automatic loading of functions-when-needed-feature possible + +function ultraschall.LM(name) + dofile(ultraschall.Api_Path.."/Modules/"..ultraschall.Modules_List[name]) +end + +ultraschall.Modules_List={"ultraschall_functions_AudioManagement_Module.lua", +"ultraschall_functions_AutomationItems_Module.lua", +"ultraschall_functions_Clipboard_Module.lua", +"ultraschall_functions_Color_Module.lua", +"ultraschall_functions_ConfigurationFiles_Module.lua", +"ultraschall_functions_ConfigurationSettings_Module.lua", +"ultraschall_functions_DeferManagement_Module.lua", +"ultraschall_functions_Envelope_Module.lua", +"ultraschall_functions_EventManager.lua", +"ultraschall_functions_FileManagement_Module.lua", +"ultraschall_functions_FXManagement_Module.lua", +"ultraschall_functions_HelperFunctions_Module.lua", +"ultraschall_functions_Localize_Module.lua", +"ultraschall_functions_Markers_Module.lua", +"ultraschall_functions_MediaItem_MediaItemStates_Module.lua", +"ultraschall_functions_MediaItem_Module.lua", +"ultraschall_functions_MetaData_Module.lua", +"ultraschall_functions_MIDIManagement_Module.lua", +"ultraschall_functions_Muting_Module.lua", +"ultraschall_functions_Navigation_Module.lua", +"ultraschall_functions_ProjectManagement_Module.lua", +"ultraschall_functions_ProjectManagement_ProjectFiles_Module.lua", +"ultraschall_functions_ReaMote_Module.lua", +"ultraschall_functions_ReaperUserInterface_Module.lua", +"ultraschall_functions_Render_Module.lua", +"ultraschall_functions_TrackManagement_Module.lua", +"ultraschall_functions_TrackManagement_Routing_Module.lua", +"ultraschall_functions_TrackManagement_TrackStates_Module.lua", +"ultraschall_functions_Ultraschall_Module.lua"} + +if ultraschall.US_BetaFunctions=="ON" then + -- if beta-functions are available, load all functions from all modules + local found_files=0 + local files_array2={} + local filecount=0 + local file="" + while file~=nil do + local file=reaper.EnumerateFiles(reaper.GetResourcePath().."/UserPlugins/ultraschall_api/Modules/",filecount) + if file==nil then break end + file=reaper.GetResourcePath().."/UserPlugins/ultraschall_api/Modules/"..file + found_files=filecount+1 + files_array2[filecount+1]=file + filecount=filecount+1 + end + for i=1, found_files do + dofile(files_array2[i]) + end +else + -- if beta-functions aren't available, load temporary functions, who load their accompanying module, when needed + function ultraschall.GetHWInputs_Aliasnames(...) + ultraschall.LM(1) + return ultraschall.GetHWInputs_Aliasnames(table.unpack({...})) + end + function ultraschall.GetHWOutputs_Aliasnames(...) + ultraschall.LM(1) + return ultraschall.GetHWOutputs_Aliasnames(table.unpack({...})) + end + function ultraschall.GetProject_AutomationItemStateChunk(...) + ultraschall.LM(2) + return ultraschall.GetProject_AutomationItemStateChunk(table.unpack({...})) + end + function ultraschall.GetProject_CountAutomationItems(...) + ultraschall.LM(2) + return ultraschall.GetProject_CountAutomationItems(table.unpack({...})) + end + function ultraschall.GetMediaItemsFromClipboard(...) + ultraschall.LM(3) + return ultraschall.GetMediaItemsFromClipboard(table.unpack({...})) + end + function ultraschall.GetStringFromClipboard_SWS(...) + ultraschall.LM(3) + return ultraschall.GetStringFromClipboard_SWS(table.unpack({...})) + end + function ultraschall.PutMediaItemsToClipboard_MediaItemArray(...) + ultraschall.LM(3) + return ultraschall.PutMediaItemsToClipboard_MediaItemArray(table.unpack({...})) + end + function ultraschall.ConvertColor(...) + ultraschall.LM(4) + return ultraschall.ConvertColor(table.unpack({...})) + end + function ultraschall.ConvertColorReverse(...) + ultraschall.LM(4) + return ultraschall.ConvertColorReverse(table.unpack({...})) + end + function ultraschall.RGB2Grayscale(...) + ultraschall.LM(4) + return ultraschall.RGB2Grayscale(table.unpack({...})) + end + function ultraschall.ConvertColorToGFX(...) + ultraschall.LM(4) + return ultraschall.ConvertColorToGFX(table.unpack({...})) + end + function ultraschall.ConvertGFXToColor(...) + ultraschall.LM(4) + return ultraschall.ConvertGFXToColor(table.unpack({...})) + end + function ultraschall.CreateColorTable(...) + ultraschall.LM(4) + return ultraschall.CreateColorTable(table.unpack({...})) + end + function ultraschall.CreateSonicRainboomColorTable(...) + ultraschall.LM(4) + return ultraschall.CreateSonicRainboomColorTable(table.unpack({...})) + end + function ultraschall.IsValidColorTable(...) + ultraschall.LM(4) + return ultraschall.IsValidColorTable(table.unpack({...})) + end + function ultraschall.ApplyColorTableToTrackColors(...) + ultraschall.LM(4) + return ultraschall.ApplyColorTableToTrackColors(table.unpack({...})) + end + function ultraschall.ApplyColorTableToItemColors(...) + ultraschall.LM(4) + return ultraschall.ApplyColorTableToItemColors(table.unpack({...})) + end + function ultraschall.ChangeColorBrightness(...) + ultraschall.LM(4) + return ultraschall.ChangeColorBrightness(table.unpack({...})) + end + function ultraschall.ChangeColorContrast(...) + ultraschall.LM(4) + return ultraschall.ChangeColorContrast(table.unpack({...})) + end + function ultraschall.ChangeColorSaturation(...) + ultraschall.LM(4) + return ultraschall.ChangeColorSaturation(table.unpack({...})) + end + function ultraschall.ConvertColorToMac(...) + ultraschall.LM(4) + return ultraschall.ConvertColorToMac(table.unpack({...})) + end + function ultraschall.ConvertColorToWin(...) + ultraschall.LM(4) + return ultraschall.ConvertColorToWin(table.unpack({...})) + end + function ultraschall.ConvertColorFromMac(...) + ultraschall.LM(4) + return ultraschall.ConvertColorFromMac(table.unpack({...})) + end + function ultraschall.ConvertColorFromWin(...) + ultraschall.LM(4) + return ultraschall.ConvertColorFromWin(table.unpack({...})) + end + function ultraschall.SetIniFileExternalState(...) + ultraschall.LM(5) + return ultraschall.SetIniFileExternalState(table.unpack({...})) + end + function ultraschall.GetIniFileExternalState(...) + ultraschall.LM(5) + return ultraschall.GetIniFileExternalState(table.unpack({...})) + end + function ultraschall.CountIniFileExternalState_sec(...) + ultraschall.LM(5) + return ultraschall.CountIniFileExternalState_sec(table.unpack({...})) + end + function ultraschall.CountIniFileExternalState_key(...) + ultraschall.LM(5) + return ultraschall.CountIniFileExternalState_key(table.unpack({...})) + end + function ultraschall.EnumerateIniFileExternalState_sec(...) + ultraschall.LM(5) + return ultraschall.EnumerateIniFileExternalState_sec(table.unpack({...})) + end + function ultraschall.EnumerateIniFileExternalState_key(...) + ultraschall.LM(5) + return ultraschall.EnumerateIniFileExternalState_key(table.unpack({...})) + end + function ultraschall.CountSectionsByPattern(...) + ultraschall.LM(5) + return ultraschall.CountSectionsByPattern(table.unpack({...})) + end + function ultraschall.CountKeysByPattern(...) + ultraschall.LM(5) + return ultraschall.CountKeysByPattern(table.unpack({...})) + end + function ultraschall.CountValuesByPattern(...) + ultraschall.LM(5) + return ultraschall.CountValuesByPattern(table.unpack({...})) + end + function ultraschall.EnumerateSectionsByPattern(...) + ultraschall.LM(5) + return ultraschall.EnumerateSectionsByPattern(table.unpack({...})) + end + function ultraschall.EnumerateKeysByPattern(...) + ultraschall.LM(5) + return ultraschall.EnumerateKeysByPattern(table.unpack({...})) + end + function ultraschall.EnumerateValuesByPattern(...) + ultraschall.LM(5) + return ultraschall.EnumerateValuesByPattern(table.unpack({...})) + end + function ultraschall.GetKBIniFilepath(...) + ultraschall.LM(5) + return ultraschall.GetKBIniFilepath(table.unpack({...})) + end + function ultraschall.CountKBIniActions(...) + ultraschall.LM(5) + return ultraschall.CountKBIniActions(table.unpack({...})) + end + function ultraschall.CountKBIniScripts(...) + ultraschall.LM(5) + return ultraschall.CountKBIniScripts(table.unpack({...})) + end + function ultraschall.CountKBIniKeys(...) + ultraschall.LM(5) + return ultraschall.CountKBIniKeys(table.unpack({...})) + end + function ultraschall.GetKBIniActions(...) + ultraschall.LM(5) + return ultraschall.GetKBIniActions(table.unpack({...})) + end + function ultraschall.GetKBIniScripts(...) + ultraschall.LM(5) + return ultraschall.GetKBIniScripts(table.unpack({...})) + end + function ultraschall.GetKBIniKeys(...) + ultraschall.LM(5) + return ultraschall.GetKBIniKeys(table.unpack({...})) + end + function ultraschall.GetKBIniActionsID_ByActionCommandID(...) + ultraschall.LM(5) + return ultraschall.GetKBIniActionsID_ByActionCommandID(table.unpack({...})) + end + function ultraschall.GetKBIniScripts_ByActionCommandID(...) + ultraschall.LM(5) + return ultraschall.GetKBIniScripts_ByActionCommandID(table.unpack({...})) + end + function ultraschall.GetKBIniKeys_ByActionCommandID(...) + ultraschall.LM(5) + return ultraschall.GetKBIniKeys_ByActionCommandID(table.unpack({...})) + end + function ultraschall.SetKBIniActions(...) + ultraschall.LM(5) + return ultraschall.SetKBIniActions(table.unpack({...})) + end + function ultraschall.SetKBIniScripts(...) + ultraschall.LM(5) + return ultraschall.SetKBIniScripts(table.unpack({...})) + end + function ultraschall.SetKBIniKeys(...) + ultraschall.LM(5) + return ultraschall.SetKBIniKeys(table.unpack({...})) + end + function ultraschall.DeleteKBIniActions(...) + ultraschall.LM(5) + return ultraschall.DeleteKBIniActions(table.unpack({...})) + end + function ultraschall.DeleteKBIniScripts(...) + ultraschall.LM(5) + return ultraschall.DeleteKBIniScripts(table.unpack({...})) + end + function ultraschall.DeleteKBIniKeys(...) + ultraschall.LM(5) + return ultraschall.DeleteKBIniKeys(table.unpack({...})) + end + function ultraschall.GetIniFileValue(...) + ultraschall.LM(5) + return ultraschall.GetIniFileValue(table.unpack({...})) + end + function ultraschall.SetIniFileValue(...) + ultraschall.LM(5) + return ultraschall.SetIniFileValue(table.unpack({...})) + end + function ultraschall.GetSetConfigAcidImport(...) + ultraschall.LM(6) + return ultraschall.GetSetConfigAcidImport(table.unpack({...})) + end + function ultraschall.GetSetConfigActionMenu(...) + ultraschall.LM(6) + return ultraschall.GetSetConfigActionMenu(table.unpack({...})) + end + function ultraschall.GetSetConfigAdjRecLat(...) + ultraschall.LM(6) + return ultraschall.GetSetConfigAdjRecLat(table.unpack({...})) + end + function ultraschall.GetSetConfigAdjRecManLat(...) + ultraschall.LM(6) + return ultraschall.GetSetConfigAdjRecManLat(table.unpack({...})) + end + function ultraschall.GetSetConfigAfxCfg(...) + ultraschall.LM(6) + return ultraschall.GetSetConfigAfxCfg(table.unpack({...})) + end + function ultraschall.GetSetConfigAllStereoPairs(...) + ultraschall.LM(6) + return ultraschall.GetSetConfigAllStereoPairs(table.unpack({...})) + end + function ultraschall.GetSetConfigAlwaysAllowKB(...) + ultraschall.LM(6) + return ultraschall.GetSetConfigAlwaysAllowKB(table.unpack({...})) + end + function ultraschall.GetSetConfigApplyFXTail(...) + ultraschall.LM(6) + return ultraschall.GetSetConfigApplyFXTail(table.unpack({...})) + end + function ultraschall.GetSetConfigAdjRecManLatIn(...) + ultraschall.LM(6) + return ultraschall.GetSetConfigAdjRecManLatIn(table.unpack({...})) + end + function ultraschall.GetSetConfigAudioPrShift(...) + ultraschall.LM(6) + return ultraschall.GetSetConfigAudioPrShift(table.unpack({...})) + end + function ultraschall.GetSetConfigAudioCloseStop(...) + ultraschall.LM(6) + return ultraschall.GetSetConfigAudioCloseStop(table.unpack({...})) + end + function ultraschall.GetSetConfigAudioThreadPr(...) + ultraschall.LM(6) + return ultraschall.GetSetConfigAudioThreadPr(table.unpack({...})) + end + function ultraschall.GetSetConfigAudioCloseTrackWnds(...) + ultraschall.LM(6) + return ultraschall.GetSetConfigAudioCloseTrackWnds(table.unpack({...})) + end + function ultraschall.GetSetConfigAutoMute(...) + ultraschall.LM(6) + return ultraschall.GetSetConfigAutoMute(table.unpack({...})) + end + function ultraschall.GetSetConfigAutoMuteFlags(...) + ultraschall.LM(6) + return ultraschall.GetSetConfigAutoMuteFlags(table.unpack({...})) + end + function ultraschall.GetSetConfigAutoSaveInt(...) + ultraschall.LM(6) + return ultraschall.GetSetConfigAutoSaveInt(table.unpack({...})) + end + function ultraschall.GetSetConfigAutoSaveMode(...) + ultraschall.LM(6) + return ultraschall.GetSetConfigAutoSaveMode(table.unpack({...})) + end + function ultraschall.SetRender_OfflineOnlineMode(...) + ultraschall.LM(6) + return ultraschall.SetRender_OfflineOnlineMode(table.unpack({...})) + end + function ultraschall.GetRender_OfflineOnlineMode(...) + ultraschall.LM(6) + return ultraschall.GetRender_OfflineOnlineMode(table.unpack({...})) + end + function ultraschall.GetRender_ResampleMode(...) + ultraschall.LM(6) + return ultraschall.GetRender_ResampleMode(table.unpack({...})) + end + function ultraschall.SetRender_ResampleMode(...) + ultraschall.LM(6) + return ultraschall.SetRender_ResampleMode(table.unpack({...})) + end + function ultraschall.GetStartNewFileRecSizeState(...) + ultraschall.LM(6) + return ultraschall.GetStartNewFileRecSizeState(table.unpack({...})) + end + function ultraschall.SetStartNewFileRecSizeState(...) + ultraschall.LM(6) + return ultraschall.SetStartNewFileRecSizeState(table.unpack({...})) + end + function ultraschall.GetDeferIdentifier(...) + ultraschall.LM(7) + return ultraschall.GetDeferIdentifier(table.unpack({...})) + end + function ultraschall.GetDeferRunState(...) + ultraschall.LM(7) + return ultraschall.GetDeferRunState(table.unpack({...})) + end + function ultraschall.Defer1(...) + ultraschall.LM(7) + return ultraschall.Defer1(table.unpack({...})) + end + function ultraschall.StopDeferCycle(...) + ultraschall.LM(7) + return ultraschall.StopDeferCycle(table.unpack({...})) + end + function ultraschall.Defer2(...) + ultraschall.LM(7) + return ultraschall.Defer2(table.unpack({...})) + end + function ultraschall.Defer3(...) + ultraschall.LM(7) + return ultraschall.Defer3(table.unpack({...})) + end + function ultraschall.Defer4(...) + ultraschall.LM(7) + return ultraschall.Defer4(table.unpack({...})) + end + function ultraschall.Defer5(...) + ultraschall.LM(7) + return ultraschall.Defer5(table.unpack({...})) + end + function ultraschall.Defer6(...) + ultraschall.LM(7) + return ultraschall.Defer6(table.unpack({...})) + end + function ultraschall.Defer7(...) + ultraschall.LM(7) + return ultraschall.Defer7(table.unpack({...})) + end + function ultraschall.Defer8(...) + ultraschall.LM(7) + return ultraschall.Defer8(table.unpack({...})) + end + function ultraschall.Defer9(...) + ultraschall.LM(7) + return ultraschall.Defer9(table.unpack({...})) + end + function ultraschall.Defer10(...) + ultraschall.LM(7) + return ultraschall.Defer10(table.unpack({...})) + end + function ultraschall.Defer11(...) + ultraschall.LM(7) + return ultraschall.Defer11(table.unpack({...})) + end + function ultraschall.Defer12(...) + ultraschall.LM(7) + return ultraschall.Defer12(table.unpack({...})) + end + function ultraschall.Defer13(...) + ultraschall.LM(7) + return ultraschall.Defer13(table.unpack({...})) + end + function ultraschall.Defer14(...) + ultraschall.LM(7) + return ultraschall.Defer14(table.unpack({...})) + end + function ultraschall.Defer15(...) + ultraschall.LM(7) + return ultraschall.Defer15(table.unpack({...})) + end + function ultraschall.Defer16(...) + ultraschall.LM(7) + return ultraschall.Defer16(table.unpack({...})) + end + function ultraschall.Defer17(...) + ultraschall.LM(7) + return ultraschall.Defer17(table.unpack({...})) + end + function ultraschall.Defer18(...) + ultraschall.LM(7) + return ultraschall.Defer18(table.unpack({...})) + end + function ultraschall.Defer19(...) + ultraschall.LM(7) + return ultraschall.Defer19(table.unpack({...})) + end + function ultraschall.Defer20(...) + ultraschall.LM(7) + return ultraschall.Defer20(table.unpack({...})) + end + function ultraschall.Defer(...) + ultraschall.LM(7) + return ultraschall.Defer(table.unpack({...})) + end + function ultraschall.IsValidEnvStateChunk(...) + ultraschall.LM(8) + return ultraschall.IsValidEnvStateChunk(table.unpack({...})) + end + function ultraschall.MoveTrackEnvelopePointsBy(...) + ultraschall.LM(8) + return ultraschall.MoveTrackEnvelopePointsBy(table.unpack({...})) + end + function ultraschall.GetEnvelopePoint(...) + ultraschall.LM(8) + return ultraschall.GetEnvelopePoint(table.unpack({...})) + end + function ultraschall.GetClosestEnvelopePointIDX_ByTime(...) + ultraschall.LM(8) + return ultraschall.GetClosestEnvelopePointIDX_ByTime(table.unpack({...})) + end + function ultraschall.GetEnvelopePointIDX_Between(...) + ultraschall.LM(8) + return ultraschall.GetEnvelopePointIDX_Between(table.unpack({...})) + end + function ultraschall.CheckEnvelopePointObject(...) + ultraschall.LM(8) + return ultraschall.CheckEnvelopePointObject(table.unpack({...})) + end + function ultraschall.IsValidEnvelopePointObject(...) + ultraschall.LM(8) + return ultraschall.IsValidEnvelopePointObject(table.unpack({...})) + end + function ultraschall.SetEnvelopePoints_EnvelopePointObject(...) + ultraschall.LM(8) + return ultraschall.SetEnvelopePoints_EnvelopePointObject(table.unpack({...})) + end + function ultraschall.SetEnvelopePoints_EnvelopePointArray(...) + ultraschall.LM(8) + return ultraschall.SetEnvelopePoints_EnvelopePointArray(table.unpack({...})) + end + function ultraschall.DeleteEnvelopePoints_EnvelopePointObject(...) + ultraschall.LM(8) + return ultraschall.DeleteEnvelopePoints_EnvelopePointObject(table.unpack({...})) + end + function ultraschall.DeleteEnvelopePoints_EnvelopePointArray(...) + ultraschall.LM(8) + return ultraschall.DeleteEnvelopePoints_EnvelopePointArray(table.unpack({...})) + end + function ultraschall.AddEnvelopePoints_EnvelopePointObject(...) + ultraschall.LM(8) + return ultraschall.AddEnvelopePoints_EnvelopePointObject(table.unpack({...})) + end + function ultraschall.AddEnvelopePoints_EnvelopePointArray(...) + ultraschall.LM(8) + return ultraschall.AddEnvelopePoints_EnvelopePointArray(table.unpack({...})) + end + function ultraschall.CreateEnvelopePointObject(...) + ultraschall.LM(8) + return ultraschall.CreateEnvelopePointObject(table.unpack({...})) + end + function ultraschall.CountEnvelopePoints(...) + ultraschall.LM(8) + return ultraschall.CountEnvelopePoints(table.unpack({...})) + end + function ultraschall.SetEnvelopeHeight(...) + ultraschall.LM(8) + return ultraschall.SetEnvelopeHeight(table.unpack({...})) + end + function ultraschall.GetAllTrackEnvelopes(...) + ultraschall.LM(8) + return ultraschall.GetAllTrackEnvelopes(table.unpack({...})) + end + function ultraschall.IsValidEnvelopePointArray(...) + ultraschall.LM(8) + return ultraschall.IsValidEnvelopePointArray(table.unpack({...})) + end + function ultraschall.GetLastEnvelopePoint_TrackEnvelope(...) + ultraschall.LM(8) + return ultraschall.GetLastEnvelopePoint_TrackEnvelope(table.unpack({...})) + end + function ultraschall.GetArmState_Envelope(...) + ultraschall.LM(8) + return ultraschall.GetArmState_Envelope(table.unpack({...})) + end + function ultraschall.SetArmState_Envelope(...) + ultraschall.LM(8) + return ultraschall.SetArmState_Envelope(table.unpack({...})) + end + function ultraschall.GetTrackEnvelope_ClickState(...) + ultraschall.LM(8) + return ultraschall.GetTrackEnvelope_ClickState(table.unpack({...})) + end + function ultraschall.EventManager_EnumerateStartupEvents(...) + ultraschall.LM(9) + return ultraschall.EventManager_EnumerateStartupEvents(table.unpack({...})) + end + function ultraschall.EventManager_EnumerateStartupEvents2(...) + ultraschall.LM(9) + return ultraschall.EventManager_EnumerateStartupEvents2(table.unpack({...})) + end + function ultraschall.EventManager_AddEvent(...) + ultraschall.LM(9) + return ultraschall.EventManager_AddEvent(table.unpack({...})) + end + function ultraschall.EventManager_IsValidEventIdentifier(...) + ultraschall.LM(9) + return ultraschall.EventManager_IsValidEventIdentifier(table.unpack({...})) + end + function ultraschall.Eventmanager_RemoveEvent(...) + ultraschall.LM(9) + return ultraschall.Eventmanager_RemoveEvent(table.unpack({...})) + end + function ultraschall.Eventmanager_RemoveAllEvents_Script(...) + ultraschall.LM(9) + return ultraschall.Eventmanager_RemoveAllEvents_Script(table.unpack({...})) + end + function ultraschall.EventManager_SetEvent(...) + ultraschall.LM(9) + return ultraschall.EventManager_SetEvent(table.unpack({...})) + end + function ultraschall.EventManager_EnumerateEvents(...) + ultraschall.LM(9) + return ultraschall.EventManager_EnumerateEvents(table.unpack({...})) + end + function ultraschall.EventManager_EnumerateEvents2(...) + ultraschall.LM(9) + return ultraschall.EventManager_EnumerateEvents2(table.unpack({...})) + end + function ultraschall.EventManager_CountRegisteredEvents(...) + ultraschall.LM(9) + return ultraschall.EventManager_CountRegisteredEvents(table.unpack({...})) + end + function ultraschall.EventManager_GetLastUpdateTime(...) + ultraschall.LM(9) + return ultraschall.EventManager_GetLastUpdateTime(table.unpack({...})) + end + function ultraschall.EventManager_PauseEvent(...) + ultraschall.LM(9) + return ultraschall.EventManager_PauseEvent(table.unpack({...})) + end + function ultraschall.EventManager_ResumeEvent(...) + ultraschall.LM(9) + return ultraschall.EventManager_ResumeEvent(table.unpack({...})) + end + function ultraschall.EventManager_Start(...) + ultraschall.LM(9) + return ultraschall.EventManager_Start(table.unpack({...})) + end + function ultraschall.EventManager_Stop(...) + ultraschall.LM(9) + return ultraschall.EventManager_Stop(table.unpack({...})) + end + function ultraschall.EventManager_AddStartupEvent(...) + ultraschall.LM(9) + return ultraschall.EventManager_AddStartupEvent(table.unpack({...})) + end + function ultraschall.EventManager_RemoveStartupEvent2(...) + ultraschall.LM(9) + return ultraschall.EventManager_RemoveStartupEvent2(table.unpack({...})) + end + function ultraschall.EventManager_RemoveStartupEvent(...) + ultraschall.LM(9) + return ultraschall.EventManager_RemoveStartupEvent(table.unpack({...})) + end + function ultraschall.EventManager_CountStartupEvents(...) + ultraschall.LM(9) + return ultraschall.EventManager_CountStartupEvents(table.unpack({...})) + end + function ultraschall.EventManager_SetStartupEvent(...) + ultraschall.LM(9) + return ultraschall.EventManager_SetStartupEvent(table.unpack({...})) + end + function ultraschall.EventManager_GetPausedState2(...) + ultraschall.LM(9) + return ultraschall.EventManager_GetPausedState2(table.unpack({...})) + end + function ultraschall.EventManager_GetPausedState(...) + ultraschall.LM(9) + return ultraschall.EventManager_GetPausedState(table.unpack({...})) + end + function ultraschall.EventManager_GetEventIdentifier(...) + ultraschall.LM(9) + return ultraschall.EventManager_GetEventIdentifier(table.unpack({...})) + end + function ultraschall.EventManager_GetLastCheckfunctionState(...) + ultraschall.LM(9) + return ultraschall.EventManager_GetLastCheckfunctionState(table.unpack({...})) + end + function ultraschall.EventManager_GetRegisteredEventID(...) + ultraschall.LM(9) + return ultraschall.EventManager_GetRegisteredEventID(table.unpack({...})) + end + function ultraschall.EventManager_GetLastCheckfunctionState2(...) + ultraschall.LM(9) + return ultraschall.EventManager_GetLastCheckfunctionState2(table.unpack({...})) + end + function ultraschall.EventManager_DebugMode(...) + ultraschall.LM(9) + return ultraschall.EventManager_DebugMode(table.unpack({...})) + end + function ultraschall.EventManager_DebugMode_UserSpace(...) + ultraschall.LM(9) + return ultraschall.EventManager_DebugMode_UserSpace(table.unpack({...})) + end + function ultraschall.ReadFullFile(...) + ultraschall.LM(10) + return ultraschall.ReadFullFile(table.unpack({...})) + end + function ultraschall.ReadValueFromFile(...) + ultraschall.LM(10) + return ultraschall.ReadValueFromFile(table.unpack({...})) + end + function ultraschall.ReadLinerangeFromFile(...) + ultraschall.LM(10) + return ultraschall.ReadLinerangeFromFile(table.unpack({...})) + end + function ultraschall.MakeCopyOfFile(...) + ultraschall.LM(10) + return ultraschall.MakeCopyOfFile(table.unpack({...})) + end + function ultraschall.MakeCopyOfFile_Binary(...) + ultraschall.LM(10) + return ultraschall.MakeCopyOfFile_Binary(table.unpack({...})) + end + function ultraschall.ReadBinaryFileUntilPattern(...) + ultraschall.LM(10) + return ultraschall.ReadBinaryFileUntilPattern(table.unpack({...})) + end + function ultraschall.ReadBinaryFileFromPattern(...) + ultraschall.LM(10) + return ultraschall.ReadBinaryFileFromPattern(table.unpack({...})) + end + function ultraschall.CountLinesInFile(...) + ultraschall.LM(10) + return ultraschall.CountLinesInFile(table.unpack({...})) + end + function ultraschall.ReadFileAsLines_Array(...) + ultraschall.LM(10) + return ultraschall.ReadFileAsLines_Array(table.unpack({...})) + end + function ultraschall.ReadBinaryFile_Offset(...) + ultraschall.LM(10) + return ultraschall.ReadBinaryFile_Offset(table.unpack({...})) + end + function ultraschall.GetLengthOfFile(...) + ultraschall.LM(10) + return ultraschall.GetLengthOfFile(table.unpack({...})) + end + function ultraschall.CountDirectoriesAndFilesInPath(...) + ultraschall.LM(10) + return ultraschall.CountDirectoriesAndFilesInPath(table.unpack({...})) + end + function ultraschall.GetAllFilenamesInPath(...) + ultraschall.LM(10) + return ultraschall.GetAllFilenamesInPath(table.unpack({...})) + end + function ultraschall.GetAllDirectoriesInPath(...) + ultraschall.LM(10) + return ultraschall.GetAllDirectoriesInPath(table.unpack({...})) + end + function ultraschall.CheckForValidFileFormats(...) + ultraschall.LM(10) + return ultraschall.CheckForValidFileFormats(table.unpack({...})) + end + function ultraschall.DirectoryExists(...) + ultraschall.LM(10) + return ultraschall.DirectoryExists(table.unpack({...})) + end + function ultraschall.OnlyFilesOfCertainType(...) + ultraschall.LM(10) + return ultraschall.OnlyFilesOfCertainType(table.unpack({...})) + end + function ultraschall.GetReaperWorkDir(...) + ultraschall.LM(10) + return ultraschall.GetReaperWorkDir(table.unpack({...})) + end + function ultraschall.DirectoryExists2(...) + ultraschall.LM(10) + return ultraschall.DirectoryExists2(table.unpack({...})) + end + function ultraschall.SetReaperWorkDir(...) + ultraschall.LM(10) + return ultraschall.SetReaperWorkDir(table.unpack({...})) + end + function ultraschall.GetPath(...) + ultraschall.LM(10) + return ultraschall.GetPath(table.unpack({...})) + end + function ultraschall.CreateValidTempFile(...) + ultraschall.LM(10) + return ultraschall.CreateValidTempFile(table.unpack({...})) + end + function ultraschall.WriteValueToFile(...) + ultraschall.LM(10) + return ultraschall.WriteValueToFile(table.unpack({...})) + end + function ultraschall.WriteValueToFile_Insert(...) + ultraschall.LM(10) + return ultraschall.WriteValueToFile_Insert(table.unpack({...})) + end + function ultraschall.WriteValueToFile_Replace(...) + ultraschall.LM(10) + return ultraschall.WriteValueToFile_Replace(table.unpack({...})) + end + function ultraschall.WriteValueToFile_InsertBinary(...) + ultraschall.LM(10) + return ultraschall.WriteValueToFile_InsertBinary(table.unpack({...})) + end + function ultraschall.WriteValueToFile_ReplaceBinary(...) + ultraschall.LM(10) + return ultraschall.WriteValueToFile_ReplaceBinary(table.unpack({...})) + end + function ultraschall.GetAllRecursiveFilesAndSubdirectories(...) + ultraschall.LM(10) + return ultraschall.GetAllRecursiveFilesAndSubdirectories(table.unpack({...})) + end + function ultraschall.SaveSubtitles_SRT(...) + ultraschall.LM(10) + return ultraschall.SaveSubtitles_SRT(table.unpack({...})) + end + function ultraschall.ReadSubtitles_SRT(...) + ultraschall.LM(10) + return ultraschall.ReadSubtitles_SRT(table.unpack({...})) + end + function ultraschall.IsValidFXStateChunk(...) + ultraschall.LM(11) + return ultraschall.IsValidFXStateChunk(table.unpack({...})) + end + function ultraschall.GetFXFromFXStateChunk(...) + ultraschall.LM(11) + return ultraschall.GetFXFromFXStateChunk(table.unpack({...})) + end + function ultraschall.GetParmLearn_FXStateChunk(...) + ultraschall.LM(11) + return ultraschall.GetParmLearn_FXStateChunk(table.unpack({...})) + end + function ultraschall.GetParmLearn_MediaItem(...) + ultraschall.LM(11) + return ultraschall.GetParmLearn_MediaItem(table.unpack({...})) + end + function ultraschall.GetParmLearn_MediaTrack(...) + ultraschall.LM(11) + return ultraschall.GetParmLearn_MediaTrack(table.unpack({...})) + end + function ultraschall.GetParmAlias_FXStateChunk(...) + ultraschall.LM(11) + return ultraschall.GetParmAlias_FXStateChunk(table.unpack({...})) + end + function ultraschall.GetParmAlias_MediaTrack(...) + ultraschall.LM(11) + return ultraschall.GetParmAlias_MediaTrack(table.unpack({...})) + end + function ultraschall.GetParmModulationChunk_FXStateChunk(...) + ultraschall.LM(11) + return ultraschall.GetParmModulationChunk_FXStateChunk(table.unpack({...})) + end + function ultraschall.GetParmLFOLearn_FXStateChunk(...) + ultraschall.LM(11) + return ultraschall.GetParmLFOLearn_FXStateChunk(table.unpack({...})) + end + function ultraschall.GetParmLFOLearn_MediaItem(...) + ultraschall.LM(11) + return ultraschall.GetParmLFOLearn_MediaItem(table.unpack({...})) + end + function ultraschall.GetParmLFOLearn_MediaTrack(...) + ultraschall.LM(11) + return ultraschall.GetParmLFOLearn_MediaTrack(table.unpack({...})) + end + function ultraschall.GetParmAudioControl_FXStateChunk(...) + ultraschall.LM(11) + return ultraschall.GetParmAudioControl_FXStateChunk(table.unpack({...})) + end + function ultraschall.GetParmLFO_FXStateChunk(...) + ultraschall.LM(11) + return ultraschall.GetParmLFO_FXStateChunk(table.unpack({...})) + end + function ultraschall.GetParmMIDIPLink_FXStateChunk(...) + ultraschall.LM(11) + return ultraschall.GetParmMIDIPLink_FXStateChunk(table.unpack({...})) + end + function ultraschall.ScanDXPlugins(...) + ultraschall.LM(11) + return ultraschall.ScanDXPlugins(table.unpack({...})) + end + function ultraschall.DeleteParmLearn_FXStateChunk(...) + ultraschall.LM(11) + return ultraschall.DeleteParmLearn_FXStateChunk(table.unpack({...})) + end + function ultraschall.DeleteParmAlias_FXStateChunk(...) + ultraschall.LM(11) + return ultraschall.DeleteParmAlias_FXStateChunk(table.unpack({...})) + end + function ultraschall.DeleteParmLFOLearn_FXStateChunk(...) + ultraschall.LM(11) + return ultraschall.DeleteParmLFOLearn_FXStateChunk(table.unpack({...})) + end + function ultraschall.SetParmLFOLearn_FXStateChunk(...) + ultraschall.LM(11) + return ultraschall.SetParmLFOLearn_FXStateChunk(table.unpack({...})) + end + function ultraschall.SetParmLearn_FXStateChunk(...) + ultraschall.LM(11) + return ultraschall.SetParmLearn_FXStateChunk(table.unpack({...})) + end + function ultraschall.SetParmAlias_FXStateChunk(...) + ultraschall.LM(11) + return ultraschall.SetParmAlias_FXStateChunk(table.unpack({...})) + end + function ultraschall.SetFXStateChunk(...) + ultraschall.LM(11) + return ultraschall.SetFXStateChunk(table.unpack({...})) + end + function ultraschall.GetFXStateChunk(...) + ultraschall.LM(11) + return ultraschall.GetFXStateChunk(table.unpack({...})) + end + function ultraschall.AddParmLFOLearn_FXStateChunk(...) + ultraschall.LM(11) + return ultraschall.AddParmLFOLearn_FXStateChunk(table.unpack({...})) + end + function ultraschall.AddParmLearn_FXStateChunk(...) + ultraschall.LM(11) + return ultraschall.AddParmLearn_FXStateChunk(table.unpack({...})) + end + function ultraschall.AddParmAlias_FXStateChunk(...) + ultraschall.LM(11) + return ultraschall.AddParmAlias_FXStateChunk(table.unpack({...})) + end + function ultraschall.CountParmAlias_FXStateChunk(...) + ultraschall.LM(11) + return ultraschall.CountParmAlias_FXStateChunk(table.unpack({...})) + end + function ultraschall.CountParmLearn_FXStateChunk(...) + ultraschall.LM(11) + return ultraschall.CountParmLearn_FXStateChunk(table.unpack({...})) + end + function ultraschall.CountParmLFOLearn_FXStateChunk(...) + ultraschall.LM(11) + return ultraschall.CountParmLFOLearn_FXStateChunk(table.unpack({...})) + end + function ultraschall.ScanVSTPlugins(...) + ultraschall.LM(11) + return ultraschall.ScanVSTPlugins(table.unpack({...})) + end + function ultraschall.AutoDetectVSTPluginsFolder(...) + ultraschall.LM(11) + return ultraschall.AutoDetectVSTPluginsFolder(table.unpack({...})) + end + function ultraschall.SplitStringAtLineFeedToArray(...) + ultraschall.LM(12) + return ultraschall.SplitStringAtLineFeedToArray(table.unpack({...})) + end + function ultraschall.CountCharacterInString(...) + ultraschall.LM(12) + return ultraschall.CountCharacterInString(table.unpack({...})) + end + function ultraschall.IsValidMatchingPattern(...) + ultraschall.LM(12) + return ultraschall.IsValidMatchingPattern(table.unpack({...})) + end + function ultraschall.CSV2IndividualLinesAsArray(...) + ultraschall.LM(12) + return ultraschall.CSV2IndividualLinesAsArray(table.unpack({...})) + end + function ultraschall.RoundNumber(...) + ultraschall.LM(12) + return ultraschall.RoundNumber(table.unpack({...})) + end + function ultraschall.GetPartialString(...) + ultraschall.LM(12) + return ultraschall.GetPartialString(table.unpack({...})) + end + function ultraschall.Notes2CSV(...) + ultraschall.LM(12) + return ultraschall.Notes2CSV(table.unpack({...})) + end + function ultraschall.CSV2Line(...) + ultraschall.LM(12) + return ultraschall.CSV2Line(table.unpack({...})) + end + function ultraschall.IsItemInTrack(...) + ultraschall.LM(12) + return ultraschall.IsItemInTrack(table.unpack({...})) + end + function ultraschall.CheckActionCommandIDFormat(...) + ultraschall.LM(12) + return ultraschall.CheckActionCommandIDFormat(table.unpack({...})) + end + function ultraschall.CheckActionCommandIDFormat2(...) + ultraschall.LM(12) + return ultraschall.CheckActionCommandIDFormat2(table.unpack({...})) + end + function ultraschall.ToggleStateAction(...) + ultraschall.LM(12) + return ultraschall.ToggleStateAction(table.unpack({...})) + end + function ultraschall.RefreshToolbar_Action(...) + ultraschall.LM(12) + return ultraschall.RefreshToolbar_Action(table.unpack({...})) + end + function ultraschall.ToggleStateButton(...) + ultraschall.LM(12) + return ultraschall.ToggleStateButton(table.unpack({...})) + end + function ultraschall.SecondsToTime(...) + ultraschall.LM(12) + return ultraschall.SecondsToTime(table.unpack({...})) + end + function ultraschall.TimeToSeconds(...) + ultraschall.LM(12) + return ultraschall.TimeToSeconds(table.unpack({...})) + end + function ultraschall.SecondsToTimeString_hh_mm_ss_mss(...) + ultraschall.LM(12) + return ultraschall.SecondsToTimeString_hh_mm_ss_mss(table.unpack({...})) + end + function ultraschall.TimeStringToSeconds_hh_mm_ss_mss(...) + ultraschall.LM(12) + return ultraschall.TimeStringToSeconds_hh_mm_ss_mss(table.unpack({...})) + end + function ultraschall.CountPatternInString(...) + ultraschall.LM(12) + return ultraschall.CountPatternInString(table.unpack({...})) + end + function ultraschall.OpenURL(...) + ultraschall.LM(12) + return ultraschall.OpenURL(table.unpack({...})) + end + function ultraschall.CountEntriesInTable_Main(...) + ultraschall.LM(12) + return ultraschall.CountEntriesInTable_Main(table.unpack({...})) + end + function ultraschall.CompareArrays(...) + ultraschall.LM(12) + return ultraschall.CompareArrays(table.unpack({...})) + end + function ultraschall.GetOS(...) + ultraschall.LM(12) + return ultraschall.GetOS(table.unpack({...})) + end + function ultraschall.IsOS_Windows(...) + ultraschall.LM(12) + return ultraschall.IsOS_Windows(table.unpack({...})) + end + function ultraschall.IsOS_Mac(...) + ultraschall.LM(12) + return ultraschall.IsOS_Mac(table.unpack({...})) + end + function ultraschall.IsOS_Other(...) + ultraschall.LM(12) + return ultraschall.IsOS_Other(table.unpack({...})) + end + function ultraschall.GetReaperAppVersion(...) + ultraschall.LM(12) + return ultraschall.GetReaperAppVersion(table.unpack({...})) + end + function ultraschall.LimitFractionOfFloat(...) + ultraschall.LM(12) + return ultraschall.LimitFractionOfFloat(table.unpack({...})) + end + function ultraschall.GetAllEntriesFromTable(...) + ultraschall.LM(12) + return ultraschall.GetAllEntriesFromTable(table.unpack({...})) + end + function ultraschall.APIExists(...) + ultraschall.LM(12) + return ultraschall.APIExists(table.unpack({...})) + end + function ultraschall.IsValidGuid(...) + ultraschall.LM(12) + return ultraschall.IsValidGuid(table.unpack({...})) + end + function ultraschall.SetGuidExtState(...) + ultraschall.LM(12) + return ultraschall.SetGuidExtState(table.unpack({...})) + end + function ultraschall.SetBitfield(...) + ultraschall.LM(12) + return ultraschall.SetBitfield(table.unpack({...})) + end + function ultraschall.PreventCreatingUndoPoint(...) + ultraschall.LM(12) + return ultraschall.PreventCreatingUndoPoint(table.unpack({...})) + end + function ultraschall.SetIntConfigVar_Bitfield(...) + ultraschall.LM(12) + return ultraschall.SetIntConfigVar_Bitfield(table.unpack({...})) + end + function ultraschall.MakeCopyOfTable(...) + ultraschall.LM(12) + return ultraschall.MakeCopyOfTable(table.unpack({...})) + end + function ultraschall.ConvertStringToAscii_Array(...) + ultraschall.LM(12) + return ultraschall.ConvertStringToAscii_Array(table.unpack({...})) + end + function ultraschall.CompareStringWithAsciiValues(...) + ultraschall.LM(12) + return ultraschall.CompareStringWithAsciiValues(table.unpack({...})) + end + function ultraschall.ReturnsMinusOneInCaseOfError_Arzala(...) + ultraschall.LM(12) + return ultraschall.ReturnsMinusOneInCaseOfError_Arzala(table.unpack({...})) + end + function ultraschall.CountLinesInString(...) + ultraschall.LM(12) + return ultraschall.CountLinesInString(table.unpack({...})) + end + function ultraschall.ReturnTypeOfReaperObject(...) + ultraschall.LM(12) + return ultraschall.ReturnTypeOfReaperObject(table.unpack({...})) + end + function ultraschall.IsObjectValidReaperObject(...) + ultraschall.LM(12) + return ultraschall.IsObjectValidReaperObject(table.unpack({...})) + end + function ultraschall.KeepTableEntriesOfType(...) + ultraschall.LM(12) + return ultraschall.KeepTableEntriesOfType(table.unpack({...})) + end + function ultraschall.RemoveTableEntriesOfType(...) + ultraschall.LM(12) + return ultraschall.RemoveTableEntriesOfType(table.unpack({...})) + end + function ultraschall.IsItemInTrack3(...) + ultraschall.LM(12) + return ultraschall.IsItemInTrack3(table.unpack({...})) + end + function ultraschall.AddIntToChar(...) + ultraschall.LM(12) + return ultraschall.AddIntToChar(table.unpack({...})) + end + function ultraschall.MakeFunctionUndoable(...) + ultraschall.LM(12) + return ultraschall.MakeFunctionUndoable(table.unpack({...})) + end + function ultraschall.ReturnTableAsIndividualValues(...) + ultraschall.LM(12) + return ultraschall.ReturnTableAsIndividualValues(table.unpack({...})) + end + function ultraschall.type(...) + ultraschall.LM(12) + return ultraschall.type(table.unpack({...})) + end + function ultraschall.ConcatIntegerIndexedTables(...) + ultraschall.LM(12) + return ultraschall.ConcatIntegerIndexedTables(table.unpack({...})) + end + function ultraschall.ReverseTable(...) + ultraschall.LM(12) + return ultraschall.ReverseTable(table.unpack({...})) + end + function ultraschall.GetDuplicatesFromArrays(...) + ultraschall.LM(12) + return ultraschall.GetDuplicatesFromArrays(table.unpack({...})) + end + function ultraschall.GetScriptFilenameFromActionCommandID(...) + ultraschall.LM(12) + return ultraschall.GetScriptFilenameFromActionCommandID(table.unpack({...})) + end + function ultraschall.CombineBytesToInteger(...) + ultraschall.LM(12) + return ultraschall.CombineBytesToInteger(table.unpack({...})) + end + function ultraschall.SplitIntegerIntoBytes(...) + ultraschall.LM(12) + return ultraschall.SplitIntegerIntoBytes(table.unpack({...})) + end + function ultraschall.GetReaperScriptPath(...) + ultraschall.LM(12) + return ultraschall.GetReaperScriptPath(table.unpack({...})) + end + function ultraschall.GetReaperColorThemesPath(...) + ultraschall.LM(12) + return ultraschall.GetReaperColorThemesPath(table.unpack({...})) + end + function ultraschall.GetReaperJSFXPath(...) + ultraschall.LM(12) + return ultraschall.GetReaperJSFXPath(table.unpack({...})) + end + function ultraschall.GetReaperWebRCPath(...) + ultraschall.LM(12) + return ultraschall.GetReaperWebRCPath(table.unpack({...})) + end + function ultraschall.CycleTable(...) + ultraschall.LM(12) + return ultraschall.CycleTable(table.unpack({...})) + end + function ultraschall.SplitStringAtNULLBytes(...) + ultraschall.LM(12) + return ultraschall.SplitStringAtNULLBytes(table.unpack({...})) + end + function ultraschall.RunBackgroundHelperFeatures(...) + ultraschall.LM(12) + return ultraschall.RunBackgroundHelperFeatures(table.unpack({...})) + end + function ultraschall.Main_OnCommandByFilename(...) + ultraschall.LM(12) + return ultraschall.Main_OnCommandByFilename(table.unpack({...})) + end + function ultraschall.MIDI_OnCommandByFilename(...) + ultraschall.LM(12) + return ultraschall.MIDI_OnCommandByFilename(table.unpack({...})) + end + function ultraschall.GetScriptParameters(...) + ultraschall.LM(12) + return ultraschall.GetScriptParameters(table.unpack({...})) + end + function ultraschall.SetScriptParameters(...) + ultraschall.LM(12) + return ultraschall.SetScriptParameters(table.unpack({...})) + end + function ultraschall.GetScriptReturnvalues(...) + ultraschall.LM(12) + return ultraschall.GetScriptReturnvalues(table.unpack({...})) + end + function ultraschall.SetScriptReturnvalues(...) + ultraschall.LM(12) + return ultraschall.SetScriptReturnvalues(table.unpack({...})) + end + function ultraschall.GetScriptReturnvalues_Sender(...) + ultraschall.LM(12) + return ultraschall.GetScriptReturnvalues_Sender(table.unpack({...})) + end + function ultraschall.Base64_Encoder(...) + ultraschall.LM(12) + return ultraschall.Base64_Encoder(table.unpack({...})) + end + function ultraschall.Base64_Decoder(...) + ultraschall.LM(12) + return ultraschall.Base64_Decoder(table.unpack({...})) + end + function ultraschall.StateChunkLayouter(...) + ultraschall.LM(12) + return ultraschall.StateChunkLayouter(table.unpack({...})) + end + function ultraschall.ReverseEndianess_Byte(...) + ultraschall.LM(12) + return ultraschall.ReverseEndianess_Byte(table.unpack({...})) + end + function ultraschall.ConvertIntegerIntoString(...) + ultraschall.LM(12) + return ultraschall.ConvertIntegerIntoString(table.unpack({...})) + end + function ultraschall.ConvertIntegerToBits(...) + ultraschall.LM(12) + return ultraschall.ConvertIntegerToBits(table.unpack({...})) + end + function ultraschall.ConvertBitsToInteger(...) + ultraschall.LM(12) + return ultraschall.ConvertBitsToInteger(table.unpack({...})) + end + function ultraschall.GetSetIntConfigVar(...) + ultraschall.LM(12) + return ultraschall.GetSetIntConfigVar(table.unpack({...})) + end + function ultraschall.GetScriptIdentifier(...) + ultraschall.LM(12) + return ultraschall.GetScriptIdentifier(table.unpack({...})) + end + function ultraschall.ReplacePartOfString(...) + ultraschall.LM(12) + return ultraschall.ReplacePartOfString(table.unpack({...})) + end + function ultraschall.SearchStringInString(...) + ultraschall.LM(12) + return ultraschall.SearchStringInString(table.unpack({...})) + end + function ultraschall.MKVOL2DB(...) + ultraschall.LM(12) + return ultraschall.MKVOL2DB(table.unpack({...})) + end + function ultraschall.DB2MKVOL(...) + ultraschall.LM(12) + return ultraschall.DB2MKVOL(table.unpack({...})) + end + function ultraschall.ConvertIntegerIntoString2(...) + ultraschall.LM(12) + return ultraschall.ConvertIntegerIntoString2(table.unpack({...})) + end + function ultraschall.ConvertStringToIntegers(...) + ultraschall.LM(12) + return ultraschall.ConvertStringToIntegers(table.unpack({...})) + end + function ultraschall.SetScriptIdentifier_Description(...) + ultraschall.LM(12) + return ultraschall.SetScriptIdentifier_Description(table.unpack({...})) + end + function ultraschall.GetScriptIdentifier_Description(...) + ultraschall.LM(12) + return ultraschall.GetScriptIdentifier_Description(table.unpack({...})) + end + function ultraschall.SetScriptIdentifier_Title(...) + ultraschall.LM(12) + return ultraschall.SetScriptIdentifier_Title(table.unpack({...})) + end + function ultraschall.GetScriptIdentifier_Title(...) + ultraschall.LM(12) + return ultraschall.GetScriptIdentifier_Title(table.unpack({...})) + end + function ultraschall.ResetProgressBar(...) + ultraschall.LM(12) + return ultraschall.ResetProgressBar(table.unpack({...})) + end + function ultraschall.PrintProgressBar(...) + ultraschall.LM(12) + return ultraschall.PrintProgressBar(table.unpack({...})) + end + function ultraschall.StoreFunctionInExtState(...) + ultraschall.LM(12) + return ultraschall.StoreFunctionInExtState(table.unpack({...})) + end + function ultraschall.LoadFunctionFromExtState(...) + ultraschall.LM(12) + return ultraschall.LoadFunctionFromExtState(table.unpack({...})) + end + function ultraschall.ConvertHex2Ascii(...) + ultraschall.LM(12) + return ultraschall.ConvertHex2Ascii(table.unpack({...})) + end + function ultraschall.ConvertAscii2Hex(...) + ultraschall.LM(12) + return ultraschall.ConvertAscii2Hex(table.unpack({...})) + end + function ultraschall.get_action_context_MediaItemDiff(...) + ultraschall.LM(12) + return ultraschall.get_action_context_MediaItemDiff(table.unpack({...})) + end + function ultraschall.GetAllActions(...) + ultraschall.LM(12) + return ultraschall.GetAllActions(table.unpack({...})) + end + function ultraschall.IsWithinTimeRange(...) + ultraschall.LM(12) + return ultraschall.IsWithinTimeRange(table.unpack({...})) + end + function ultraschall.MediaExplorer_OnCommand(...) + ultraschall.LM(12) + return ultraschall.MediaExplorer_OnCommand(table.unpack({...})) + end + function ultraschall.UpdateMediaExplorer(...) + ultraschall.LM(12) + return ultraschall.UpdateMediaExplorer(table.unpack({...})) + end + function ultraschall.FindPatternsInString(...) + ultraschall.LM(12) + return ultraschall.FindPatternsInString(table.unpack({...})) + end + function ultraschall.RunLuaSourceCode(...) + ultraschall.LM(12) + return ultraschall.RunLuaSourceCode(table.unpack({...})) + end + function ultraschall.Main_OnCommand_LuaCode(...) + ultraschall.LM(12) + return ultraschall.Main_OnCommand_LuaCode(table.unpack({...})) + end + function ultraschall.ReplacePatternInString(...) + ultraschall.LM(12) + return ultraschall.ReplacePatternInString(table.unpack({...})) + end + function ultraschall.ConvertFunction_ToBase64String(...) + ultraschall.LM(12) + return ultraschall.ConvertFunction_ToBase64String(table.unpack({...})) + end + function ultraschall.ConvertFunction_FromBase64String(...) + ultraschall.LM(12) + return ultraschall.ConvertFunction_FromBase64String(table.unpack({...})) + end + function ultraschall.ConvertFunction_ToHexString(...) + ultraschall.LM(12) + return ultraschall.ConvertFunction_ToHexString(table.unpack({...})) + end + function ultraschall.ConvertFunction_FromHexString(...) + ultraschall.LM(12) + return ultraschall.ConvertFunction_FromHexString(table.unpack({...})) + end + function ultraschall.Localize_UseFile(...) + ultraschall.LM(13) + return ultraschall.Localize_UseFile(table.unpack({...})) + end + function ultraschall.Localize(...) + ultraschall.LM(13) + return ultraschall.Localize(table.unpack({...})) + end + function ultraschall.Localize_RefreshFile(...) + ultraschall.LM(13) + return ultraschall.Localize_RefreshFile(table.unpack({...})) + end + function ultraschall.AddNormalMarker(...) + ultraschall.LM(14) + return ultraschall.AddNormalMarker(table.unpack({...})) + end + function ultraschall.AddPodRangeRegion(...) + ultraschall.LM(14) + return ultraschall.AddPodRangeRegion(table.unpack({...})) + end + function ultraschall.GetMarkerByName(...) + ultraschall.LM(14) + return ultraschall.GetMarkerByName(table.unpack({...})) + end + function ultraschall.GetMarkerByName_Pattern(...) + ultraschall.LM(14) + return ultraschall.GetMarkerByName_Pattern(table.unpack({...})) + end + function ultraschall.GetMarkerAndRegionsByIndex(...) + ultraschall.LM(14) + return ultraschall.GetMarkerAndRegionsByIndex(table.unpack({...})) + end + function ultraschall.SetMarkerByIndex(...) + ultraschall.LM(14) + return ultraschall.SetMarkerByIndex(table.unpack({...})) + end + function ultraschall.AddEditMarker(...) + ultraschall.LM(14) + return ultraschall.AddEditMarker(table.unpack({...})) + end + function ultraschall.CountNormalMarkers(...) + ultraschall.LM(14) + return ultraschall.CountNormalMarkers(table.unpack({...})) + end + function ultraschall.CountEditMarkers(...) + ultraschall.LM(14) + return ultraschall.CountEditMarkers(table.unpack({...})) + end + function ultraschall.GetPodRangeRegion(...) + ultraschall.LM(14) + return ultraschall.GetPodRangeRegion(table.unpack({...})) + end + function ultraschall.EnumerateNormalMarkers(...) + ultraschall.LM(14) + return ultraschall.EnumerateNormalMarkers(table.unpack({...})) + end + function ultraschall.EnumerateEditMarkers(...) + ultraschall.LM(14) + return ultraschall.EnumerateEditMarkers(table.unpack({...})) + end + function ultraschall.GetAllEditMarkers(...) + ultraschall.LM(14) + return ultraschall.GetAllEditMarkers(table.unpack({...})) + end + function ultraschall.GetAllNormalMarkers(...) + ultraschall.LM(14) + return ultraschall.GetAllNormalMarkers(table.unpack({...})) + end + function ultraschall.GetAllMarkers(...) + ultraschall.LM(14) + return ultraschall.GetAllMarkers(table.unpack({...})) + end + function ultraschall.SetNormalMarker(...) + ultraschall.LM(14) + return ultraschall.SetNormalMarker(table.unpack({...})) + end + function ultraschall.SetEditMarker(...) + ultraschall.LM(14) + return ultraschall.SetEditMarker(table.unpack({...})) + end + function ultraschall.SetPodRangeRegion(...) + ultraschall.LM(14) + return ultraschall.SetPodRangeRegion(table.unpack({...})) + end + function ultraschall.DeletePodRangeRegion(...) + ultraschall.LM(14) + return ultraschall.DeletePodRangeRegion(table.unpack({...})) + end + function ultraschall.DeleteNormalMarker(...) + ultraschall.LM(14) + return ultraschall.DeleteNormalMarker(table.unpack({...})) + end + function ultraschall.DeleteEditMarker(...) + ultraschall.LM(14) + return ultraschall.DeleteEditMarker(table.unpack({...})) + end + function ultraschall.ExportEditMarkersToFile(...) + ultraschall.LM(14) + return ultraschall.ExportEditMarkersToFile(table.unpack({...})) + end + function ultraschall.ExportNormalMarkersToFile(...) + ultraschall.LM(14) + return ultraschall.ExportNormalMarkersToFile(table.unpack({...})) + end + function ultraschall.ImportEditFromFile(...) + ultraschall.LM(14) + return ultraschall.ImportEditFromFile(table.unpack({...})) + end + function ultraschall.ImportMarkersFromFile(...) + ultraschall.LM(14) + return ultraschall.ImportMarkersFromFile(table.unpack({...})) + end + function ultraschall.MarkerToEditMarker(...) + ultraschall.LM(14) + return ultraschall.MarkerToEditMarker(table.unpack({...})) + end + function ultraschall.EditToMarker(...) + ultraschall.LM(14) + return ultraschall.EditToMarker(table.unpack({...})) + end + function ultraschall.GetMarkerByScreenCoordinates(...) + ultraschall.LM(14) + return ultraschall.GetMarkerByScreenCoordinates(table.unpack({...})) + end + function ultraschall.GetMarkerByTime(...) + ultraschall.LM(14) + return ultraschall.GetMarkerByTime(table.unpack({...})) + end + function ultraschall.GetRegionByScreenCoordinates(...) + ultraschall.LM(14) + return ultraschall.GetRegionByScreenCoordinates(table.unpack({...})) + end + function ultraschall.GetRegionByTime(...) + ultraschall.LM(14) + return ultraschall.GetRegionByTime(table.unpack({...})) + end + function ultraschall.GetTimesignaturesByScreenCoordinates(...) + ultraschall.LM(14) + return ultraschall.GetTimesignaturesByScreenCoordinates(table.unpack({...})) + end + function ultraschall.GetTimeSignaturesByTime(...) + ultraschall.LM(14) + return ultraschall.GetTimeSignaturesByTime(table.unpack({...})) + end + function ultraschall.IsMarkerEdit(...) + ultraschall.LM(14) + return ultraschall.IsMarkerEdit(table.unpack({...})) + end + function ultraschall.IsMarkerNormal(...) + ultraschall.LM(14) + return ultraschall.IsMarkerNormal(table.unpack({...})) + end + function ultraschall.IsRegionPodrange(...) + ultraschall.LM(14) + return ultraschall.IsRegionPodrange(table.unpack({...})) + end + function ultraschall.IsRegionEditRegion(...) + ultraschall.LM(14) + return ultraschall.IsRegionEditRegion(table.unpack({...})) + end + function ultraschall.AddEditRegion(...) + ultraschall.LM(14) + return ultraschall.AddEditRegion(table.unpack({...})) + end + function ultraschall.SetEditRegion(...) + ultraschall.LM(14) + return ultraschall.SetEditRegion(table.unpack({...})) + end + function ultraschall.DeleteEditRegion(...) + ultraschall.LM(14) + return ultraschall.DeleteEditRegion(table.unpack({...})) + end + function ultraschall.EnumerateEditRegion(...) + ultraschall.LM(14) + return ultraschall.EnumerateEditRegion(table.unpack({...})) + end + function ultraschall.CountEditRegions(...) + ultraschall.LM(14) + return ultraschall.CountEditRegions(table.unpack({...})) + end + function ultraschall.GetAllMarkersBetween(...) + ultraschall.LM(14) + return ultraschall.GetAllMarkersBetween(table.unpack({...})) + end + function ultraschall.GetAllRegions(...) + ultraschall.LM(14) + return ultraschall.GetAllRegions(table.unpack({...})) + end + function ultraschall.GetAllRegionsBetween(...) + ultraschall.LM(14) + return ultraschall.GetAllRegionsBetween(table.unpack({...})) + end + function ultraschall.ParseMarkerString(...) + ultraschall.LM(14) + return ultraschall.ParseMarkerString(table.unpack({...})) + end + function ultraschall.RenumerateMarkers(...) + ultraschall.LM(14) + return ultraschall.RenumerateMarkers(table.unpack({...})) + end + function ultraschall.CountNormalMarkers_NumGap(...) + ultraschall.LM(14) + return ultraschall.CountNormalMarkers_NumGap(table.unpack({...})) + end + function ultraschall.IsMarkerAtPosition(...) + ultraschall.LM(14) + return ultraschall.IsMarkerAtPosition(table.unpack({...})) + end + function ultraschall.IsRegionAtPosition(...) + ultraschall.LM(14) + return ultraschall.IsRegionAtPosition(table.unpack({...})) + end + function ultraschall.CountMarkersAndRegions(...) + ultraschall.LM(14) + return ultraschall.CountMarkersAndRegions(table.unpack({...})) + end + function ultraschall.GetLastMarkerPosition(...) + ultraschall.LM(14) + return ultraschall.GetLastMarkerPosition(table.unpack({...})) + end + function ultraschall.GetLastRegion(...) + ultraschall.LM(14) + return ultraschall.GetLastRegion(table.unpack({...})) + end + function ultraschall.GetLastTimeSigMarkerPosition(...) + ultraschall.LM(14) + return ultraschall.GetLastTimeSigMarkerPosition(table.unpack({...})) + end + function ultraschall.GetMarkerUpdateCounter(...) + ultraschall.LM(14) + return ultraschall.GetMarkerUpdateCounter(table.unpack({...})) + end + function ultraschall.MoveTimeSigMarkersBy(...) + ultraschall.LM(14) + return ultraschall.MoveTimeSigMarkersBy(table.unpack({...})) + end + function ultraschall.GetAllTimeSigMarkers(...) + ultraschall.LM(14) + return ultraschall.GetAllTimeSigMarkers(table.unpack({...})) + end + function ultraschall.MoveMarkersBy(...) + ultraschall.LM(14) + return ultraschall.MoveMarkersBy(table.unpack({...})) + end + function ultraschall.MoveRegionsBy(...) + ultraschall.LM(14) + return ultraschall.MoveRegionsBy(table.unpack({...})) + end + function ultraschall.RippleCut_Regions(...) + ultraschall.LM(14) + return ultraschall.RippleCut_Regions(table.unpack({...})) + end + function ultraschall.GetAllCustomMarkers(...) + ultraschall.LM(14) + return ultraschall.GetAllCustomMarkers(table.unpack({...})) + end + function ultraschall.GetAllCustomRegions(...) + ultraschall.LM(14) + return ultraschall.GetAllCustomRegions(table.unpack({...})) + end + function ultraschall.CountAllCustomMarkers(...) + ultraschall.LM(14) + return ultraschall.CountAllCustomMarkers(table.unpack({...})) + end + function ultraschall.CountAllCustomRegions(...) + ultraschall.LM(14) + return ultraschall.CountAllCustomRegions(table.unpack({...})) + end + function ultraschall.EnumerateCustomMarkers(...) + ultraschall.LM(14) + return ultraschall.EnumerateCustomMarkers(table.unpack({...})) + end + function ultraschall.EnumerateCustomRegions(...) + ultraschall.LM(14) + return ultraschall.EnumerateCustomRegions(table.unpack({...})) + end + function ultraschall.DeleteCustomMarkers(...) + ultraschall.LM(14) + return ultraschall.DeleteCustomMarkers(table.unpack({...})) + end + function ultraschall.DeleteCustomRegions(...) + ultraschall.LM(14) + return ultraschall.DeleteCustomRegions(table.unpack({...})) + end + function ultraschall.AddCustomMarker(...) + ultraschall.LM(14) + return ultraschall.AddCustomMarker(table.unpack({...})) + end + function ultraschall.AddCustomRegion(...) + ultraschall.LM(14) + return ultraschall.AddCustomRegion(table.unpack({...})) + end + function ultraschall.SetCustomMarker(...) + ultraschall.LM(14) + return ultraschall.SetCustomMarker(table.unpack({...})) + end + function ultraschall.SetCustomRegion(...) + ultraschall.LM(14) + return ultraschall.SetCustomRegion(table.unpack({...})) + end + function ultraschall.GetNextFreeRegionIndex(...) + ultraschall.LM(14) + return ultraschall.GetNextFreeRegionIndex(table.unpack({...})) + end + function ultraschall.IsMarkerValidCustomMarker(...) + ultraschall.LM(14) + return ultraschall.IsMarkerValidCustomMarker(table.unpack({...})) + end + function ultraschall.IsRegionValidCustomRegion(...) + ultraschall.LM(14) + return ultraschall.IsRegionValidCustomRegion(table.unpack({...})) + end + function ultraschall.GetMarkerIDFromGuid(...) + ultraschall.LM(14) + return ultraschall.GetMarkerIDFromGuid(table.unpack({...})) + end + function ultraschall.GetGuidFromMarkerID(...) + ultraschall.LM(14) + return ultraschall.GetGuidFromMarkerID(table.unpack({...})) + end + function ultraschall.GetItemPosition(...) + ultraschall.LM(15) + return ultraschall.GetItemPosition(table.unpack({...})) + end + function ultraschall.GetItemLength(...) + ultraschall.LM(15) + return ultraschall.GetItemLength(table.unpack({...})) + end + function ultraschall.GetItemSnapOffset(...) + ultraschall.LM(15) + return ultraschall.GetItemSnapOffset(table.unpack({...})) + end + function ultraschall.GetItemLoop(...) + ultraschall.LM(15) + return ultraschall.GetItemLoop(table.unpack({...})) + end + function ultraschall.GetItemAllTakes(...) + ultraschall.LM(15) + return ultraschall.GetItemAllTakes(table.unpack({...})) + end + function ultraschall.GetItemFadeIn(...) + ultraschall.LM(15) + return ultraschall.GetItemFadeIn(table.unpack({...})) + end + function ultraschall.GetItemFadeOut(...) + ultraschall.LM(15) + return ultraschall.GetItemFadeOut(table.unpack({...})) + end + function ultraschall.GetItemMute(...) + ultraschall.LM(15) + return ultraschall.GetItemMute(table.unpack({...})) + end + function ultraschall.GetItemFadeFlag(...) + ultraschall.LM(15) + return ultraschall.GetItemFadeFlag(table.unpack({...})) + end + function ultraschall.GetItemLock(...) + ultraschall.LM(15) + return ultraschall.GetItemLock(table.unpack({...})) + end + function ultraschall.GetItemSelected(...) + ultraschall.LM(15) + return ultraschall.GetItemSelected(table.unpack({...})) + end + function ultraschall.GetItemGroup(...) + ultraschall.LM(15) + return ultraschall.GetItemGroup(table.unpack({...})) + end + function ultraschall.GetItemIGUID(...) + ultraschall.LM(15) + return ultraschall.GetItemIGUID(table.unpack({...})) + end + function ultraschall.GetItemIID(...) + ultraschall.LM(15) + return ultraschall.GetItemIID(table.unpack({...})) + end + function ultraschall.GetItemName(...) + ultraschall.LM(15) + return ultraschall.GetItemName(table.unpack({...})) + end + function ultraschall.GetItemVolPan(...) + ultraschall.LM(15) + return ultraschall.GetItemVolPan(table.unpack({...})) + end + function ultraschall.GetItemSampleOffset(...) + ultraschall.LM(15) + return ultraschall.GetItemSampleOffset(table.unpack({...})) + end + function ultraschall.GetItemPlayRate(...) + ultraschall.LM(15) + return ultraschall.GetItemPlayRate(table.unpack({...})) + end + function ultraschall.GetItemChanMode(...) + ultraschall.LM(15) + return ultraschall.GetItemChanMode(table.unpack({...})) + end + function ultraschall.GetItemGUID(...) + ultraschall.LM(15) + return ultraschall.GetItemGUID(table.unpack({...})) + end + function ultraschall.GetItemRecPass(...) + ultraschall.LM(15) + return ultraschall.GetItemRecPass(table.unpack({...})) + end + function ultraschall.GetItemBeat(...) + ultraschall.LM(15) + return ultraschall.GetItemBeat(table.unpack({...})) + end + function ultraschall.GetItemMixFlag(...) + ultraschall.LM(15) + return ultraschall.GetItemMixFlag(table.unpack({...})) + end + function ultraschall.GetItemUSTrackNumber_StateChunk(...) + ultraschall.LM(15) + return ultraschall.GetItemUSTrackNumber_StateChunk(table.unpack({...})) + end + function ultraschall.SetItemUSTrackNumber_StateChunk(...) + ultraschall.LM(15) + return ultraschall.SetItemUSTrackNumber_StateChunk(table.unpack({...})) + end + function ultraschall.SetItemPosition(...) + ultraschall.LM(15) + return ultraschall.SetItemPosition(table.unpack({...})) + end + function ultraschall.SetItemLength(...) + ultraschall.LM(15) + return ultraschall.SetItemLength(table.unpack({...})) + end + function ultraschall.GetItemStateChunk(...) + ultraschall.LM(15) + return ultraschall.GetItemStateChunk(table.unpack({...})) + end + function ultraschall.IsValidMediaItemStateChunk(...) + ultraschall.LM(16) + return ultraschall.IsValidMediaItemStateChunk(table.unpack({...})) + end + function ultraschall.CheckMediaItemArray(...) + ultraschall.LM(16) + return ultraschall.CheckMediaItemArray(table.unpack({...})) + end + function ultraschall.IsValidMediaItemArray(...) + ultraschall.LM(16) + return ultraschall.IsValidMediaItemArray(table.unpack({...})) + end + function ultraschall.CheckMediaItemStateChunkArray(...) + ultraschall.LM(16) + return ultraschall.CheckMediaItemStateChunkArray(table.unpack({...})) + end + function ultraschall.IsValidMediaItemStateChunkArray(...) + ultraschall.LM(16) + return ultraschall.IsValidMediaItemStateChunkArray(table.unpack({...})) + end + function ultraschall.GetMediaItemsAtPosition(...) + ultraschall.LM(16) + return ultraschall.GetMediaItemsAtPosition(table.unpack({...})) + end + function ultraschall.OnlyMediaItemsOfTracksInTrackstring(...) + ultraschall.LM(16) + return ultraschall.OnlyMediaItemsOfTracksInTrackstring(table.unpack({...})) + end + function ultraschall.SplitMediaItems_Position(...) + ultraschall.LM(16) + return ultraschall.SplitMediaItems_Position(table.unpack({...})) + end + function ultraschall.SplitItemsAtPositionFromArray(...) + ultraschall.LM(16) + return ultraschall.SplitItemsAtPositionFromArray(table.unpack({...})) + end + function ultraschall.DeleteMediaItem(...) + ultraschall.LM(16) + return ultraschall.DeleteMediaItem(table.unpack({...})) + end + function ultraschall.DeleteMediaItemsFromArray(...) + ultraschall.LM(16) + return ultraschall.DeleteMediaItemsFromArray(table.unpack({...})) + end + function ultraschall.DeleteMediaItems_Position(...) + ultraschall.LM(16) + return ultraschall.DeleteMediaItems_Position(table.unpack({...})) + end + function ultraschall.GetAllMediaItemsBetween(...) + ultraschall.LM(16) + return ultraschall.GetAllMediaItemsBetween(table.unpack({...})) + end + function ultraschall.MoveMediaItemsAfter_By(...) + ultraschall.LM(16) + return ultraschall.MoveMediaItemsAfter_By(table.unpack({...})) + end + function ultraschall.MoveMediaItemsBefore_By(...) + ultraschall.LM(16) + return ultraschall.MoveMediaItemsBefore_By(table.unpack({...})) + end + function ultraschall.MoveMediaItemsBetween_To(...) + ultraschall.LM(16) + return ultraschall.MoveMediaItemsBetween_To(table.unpack({...})) + end + function ultraschall.ChangeLengthOfMediaItems_FromArray(...) + ultraschall.LM(16) + return ultraschall.ChangeLengthOfMediaItems_FromArray(table.unpack({...})) + end + function ultraschall.ChangeDeltaLengthOfMediaItems_FromArray(...) + ultraschall.LM(16) + return ultraschall.ChangeDeltaLengthOfMediaItems_FromArray(table.unpack({...})) + end + function ultraschall.ChangeOffsetOfMediaItems_FromArray(...) + ultraschall.LM(16) + return ultraschall.ChangeOffsetOfMediaItems_FromArray(table.unpack({...})) + end + function ultraschall.ChangeDeltaOffsetOfMediaItems_FromArray(...) + ultraschall.LM(16) + return ultraschall.ChangeDeltaOffsetOfMediaItems_FromArray(table.unpack({...})) + end + function ultraschall.SectionCut(...) + ultraschall.LM(16) + return ultraschall.SectionCut(table.unpack({...})) + end + function ultraschall.SectionCut_Inverse(...) + ultraschall.LM(16) + return ultraschall.SectionCut_Inverse(table.unpack({...})) + end + function ultraschall.RippleCut(...) + ultraschall.LM(16) + return ultraschall.RippleCut(table.unpack({...})) + end + function ultraschall.RippleCut_Reverse(...) + ultraschall.LM(16) + return ultraschall.RippleCut_Reverse(table.unpack({...})) + end + function ultraschall.InsertMediaItem_MediaItem(...) + ultraschall.LM(16) + return ultraschall.InsertMediaItem_MediaItem(table.unpack({...})) + end + function ultraschall.InsertMediaItem_MediaItemStateChunk(...) + ultraschall.LM(16) + return ultraschall.InsertMediaItem_MediaItemStateChunk(table.unpack({...})) + end + function ultraschall.InsertMediaItemArray(...) + ultraschall.LM(16) + return ultraschall.InsertMediaItemArray(table.unpack({...})) + end + function ultraschall.GetMediaItemStateChunksFromItems(...) + ultraschall.LM(16) + return ultraschall.GetMediaItemStateChunksFromItems(table.unpack({...})) + end + function ultraschall.RippleInsert(...) + ultraschall.LM(16) + return ultraschall.RippleInsert(table.unpack({...})) + end + function ultraschall.MoveMediaItems_FromArray(...) + ultraschall.LM(16) + return ultraschall.MoveMediaItems_FromArray(table.unpack({...})) + end + function ultraschall.InsertMediaItemStateChunkArray(...) + ultraschall.LM(16) + return ultraschall.InsertMediaItemStateChunkArray(table.unpack({...})) + end + function ultraschall.OnlyMediaItemsOfTracksInTrackstring_StateChunk(...) + ultraschall.LM(16) + return ultraschall.OnlyMediaItemsOfTracksInTrackstring_StateChunk(table.unpack({...})) + end + function ultraschall.RippleInsert_MediaItemStateChunks(...) + ultraschall.LM(16) + return ultraschall.RippleInsert_MediaItemStateChunks(table.unpack({...})) + end + function ultraschall.GetAllMediaItemsFromTrack(...) + ultraschall.LM(16) + return ultraschall.GetAllMediaItemsFromTrack(table.unpack({...})) + end + function ultraschall.SetItemsLockState(...) + ultraschall.LM(16) + return ultraschall.SetItemsLockState(table.unpack({...})) + end + function ultraschall.AddLockStateToMediaItemStateChunk(...) + ultraschall.LM(16) + return ultraschall.AddLockStateToMediaItemStateChunk(table.unpack({...})) + end + function ultraschall.AddLockStateTo_MediaItemStateChunkArray(...) + ultraschall.LM(16) + return ultraschall.AddLockStateTo_MediaItemStateChunkArray(table.unpack({...})) + end + function ultraschall.ApplyStateChunkToItems(...) + ultraschall.LM(16) + return ultraschall.ApplyStateChunkToItems(table.unpack({...})) + end + function ultraschall.GetAllLockedItemsFromMediaItemArray(...) + ultraschall.LM(16) + return ultraschall.GetAllLockedItemsFromMediaItemArray(table.unpack({...})) + end + function ultraschall.GetMediaItemStateChunksFromMediaItemArray(...) + ultraschall.LM(16) + return ultraschall.GetMediaItemStateChunksFromMediaItemArray(table.unpack({...})) + end + function ultraschall.GetSelectedMediaItemsAtPosition(...) + ultraschall.LM(16) + return ultraschall.GetSelectedMediaItemsAtPosition(table.unpack({...})) + end + function ultraschall.GetSelectedMediaItemsBetween(...) + ultraschall.LM(16) + return ultraschall.GetSelectedMediaItemsBetween(table.unpack({...})) + end + function ultraschall.DeselectMediaItems_MediaItemArray(...) + ultraschall.LM(16) + return ultraschall.DeselectMediaItems_MediaItemArray(table.unpack({...})) + end + function ultraschall.SelectMediaItems_MediaItemArray(...) + ultraschall.LM(16) + return ultraschall.SelectMediaItems_MediaItemArray(table.unpack({...})) + end + function ultraschall.EnumerateMediaItemsInTrack(...) + ultraschall.LM(16) + return ultraschall.EnumerateMediaItemsInTrack(table.unpack({...})) + end + function ultraschall.GetMediaItemArrayLength(...) + ultraschall.LM(16) + return ultraschall.GetMediaItemArrayLength(table.unpack({...})) + end + function ultraschall.GetMediaItemStateChunkArrayLength(...) + ultraschall.LM(16) + return ultraschall.GetMediaItemStateChunkArrayLength(table.unpack({...})) + end + function ultraschall.GetAllMediaItemGUIDs(...) + ultraschall.LM(16) + return ultraschall.GetAllMediaItemGUIDs(table.unpack({...})) + end + function ultraschall.GetItemSpectralConfig(...) + ultraschall.LM(16) + return ultraschall.GetItemSpectralConfig(table.unpack({...})) + end + function ultraschall.SetItemSpectralConfig(...) + ultraschall.LM(16) + return ultraschall.SetItemSpectralConfig(table.unpack({...})) + end + function ultraschall.CountItemSpectralEdits(...) + ultraschall.LM(16) + return ultraschall.CountItemSpectralEdits(table.unpack({...})) + end + function ultraschall.GetItemSpectralEdit(...) + ultraschall.LM(16) + return ultraschall.GetItemSpectralEdit(table.unpack({...})) + end + function ultraschall.DeleteItemSpectralEdit(...) + ultraschall.LM(16) + return ultraschall.DeleteItemSpectralEdit(table.unpack({...})) + end + function ultraschall.SetItemSpectralVisibilityState(...) + ultraschall.LM(16) + return ultraschall.SetItemSpectralVisibilityState(table.unpack({...})) + end + function ultraschall.SetItemSpectralEdit(...) + ultraschall.LM(16) + return ultraschall.SetItemSpectralEdit(table.unpack({...})) + end + function ultraschall.GetItemSourceFile_Take(...) + ultraschall.LM(16) + return ultraschall.GetItemSourceFile_Take(table.unpack({...})) + end + function ultraschall.AddItemSpectralEdit(...) + ultraschall.LM(16) + return ultraschall.AddItemSpectralEdit(table.unpack({...})) + end + function ultraschall.GetItemSpectralVisibilityState(...) + ultraschall.LM(16) + return ultraschall.GetItemSpectralVisibilityState(table.unpack({...})) + end + function ultraschall.InsertImageFile(...) + ultraschall.LM(16) + return ultraschall.InsertImageFile(table.unpack({...})) + end + function ultraschall.GetAllSelectedMediaItems(...) + ultraschall.LM(16) + return ultraschall.GetAllSelectedMediaItems(table.unpack({...})) + end + function ultraschall.SetMediaItemsSelected_TimeSelection(...) + ultraschall.LM(16) + return ultraschall.SetMediaItemsSelected_TimeSelection(table.unpack({...})) + end + function ultraschall.GetParentTrack_MediaItem(...) + ultraschall.LM(16) + return ultraschall.GetParentTrack_MediaItem(table.unpack({...})) + end + function ultraschall.IsItemInTrack2(...) + ultraschall.LM(16) + return ultraschall.IsItemInTrack2(table.unpack({...})) + end + function ultraschall.IsItemInTimerange(...) + ultraschall.LM(16) + return ultraschall.IsItemInTimerange(table.unpack({...})) + end + function ultraschall.OnlyItemsInTracksAndTimerange(...) + ultraschall.LM(16) + return ultraschall.OnlyItemsInTracksAndTimerange(table.unpack({...})) + end + function ultraschall.ApplyActionToMediaItem(...) + ultraschall.LM(16) + return ultraschall.ApplyActionToMediaItem(table.unpack({...})) + end + function ultraschall.ApplyActionToMediaItemArray(...) + ultraschall.LM(16) + return ultraschall.ApplyActionToMediaItemArray(table.unpack({...})) + end + function ultraschall.GetAllMediaItemsInTimeSelection(...) + ultraschall.LM(16) + return ultraschall.GetAllMediaItemsInTimeSelection(table.unpack({...})) + end + function ultraschall.NormalizeItems(...) + ultraschall.LM(16) + return ultraschall.NormalizeItems(table.unpack({...})) + end + function ultraschall.GetAllMediaItems(...) + ultraschall.LM(16) + return ultraschall.GetAllMediaItems(table.unpack({...})) + end + function ultraschall.PreviewMediaItem(...) + ultraschall.LM(16) + return ultraschall.PreviewMediaItem(table.unpack({...})) + end + function ultraschall.StopAnyPreview(...) + ultraschall.LM(16) + return ultraschall.StopAnyPreview(table.unpack({...})) + end + function ultraschall.PreviewMediaFile(...) + ultraschall.LM(16) + return ultraschall.PreviewMediaFile(table.unpack({...})) + end + function ultraschall.GetMediaItemTake(...) + ultraschall.LM(16) + return ultraschall.GetMediaItemTake(table.unpack({...})) + end + function ultraschall.ApplyFunctionToMediaItemArray(...) + ultraschall.LM(16) + return ultraschall.ApplyFunctionToMediaItemArray(table.unpack({...})) + end + function ultraschall.GetGapsBetweenItems(...) + ultraschall.LM(16) + return ultraschall.GetGapsBetweenItems(table.unpack({...})) + end + function ultraschall.DeleteMediaItems_Position(...) + ultraschall.LM(16) + return ultraschall.DeleteMediaItems_Position(table.unpack({...})) + end + function ultraschall.ApplyActionToMediaItemArray2(...) + ultraschall.LM(16) + return ultraschall.ApplyActionToMediaItemArray2(table.unpack({...})) + end + function ultraschall.GetMediafileAttributes(...) + ultraschall.LM(16) + return ultraschall.GetMediafileAttributes(table.unpack({...})) + end + function ultraschall.InsertMediaItemFromFile(...) + ultraschall.LM(16) + return ultraschall.InsertMediaItemFromFile(table.unpack({...})) + end + function ultraschall.CopyMediaItemToDestinationTrack(...) + ultraschall.LM(16) + return ultraschall.CopyMediaItemToDestinationTrack(table.unpack({...})) + end + function ultraschall.IsSplitAtPosition(...) + ultraschall.LM(16) + return ultraschall.IsSplitAtPosition(table.unpack({...})) + end + function ultraschall.GetItem_Number(...) + ultraschall.LM(16) + return ultraschall.GetItem_Number(table.unpack({...})) + end + function ultraschall.GetItem_HighestRecCounter(...) + ultraschall.LM(16) + return ultraschall.GetItem_HighestRecCounter(table.unpack({...})) + end + function ultraschall.GetItem_ClickState(...) + ultraschall.LM(16) + return ultraschall.GetItem_ClickState(table.unpack({...})) + end + function ultraschall.DeleteProjExtState_Section(...) + ultraschall.LM(17) + return ultraschall.DeleteProjExtState_Section(table.unpack({...})) + end + function ultraschall.DeleteProjExtState_Key(...) + ultraschall.LM(17) + return ultraschall.DeleteProjExtState_Key(table.unpack({...})) + end + function ultraschall.GetProjExtState_AllKeyValues(...) + ultraschall.LM(17) + return ultraschall.GetProjExtState_AllKeyValues(table.unpack({...})) + end + function ultraschall.GetGuidExtState(...) + ultraschall.LM(17) + return ultraschall.GetGuidExtState(table.unpack({...})) + end + function ultraschall.SetMarkerExtState(...) + ultraschall.LM(17) + return ultraschall.SetMarkerExtState(table.unpack({...})) + end + function ultraschall.GetMarkerExtState(...) + ultraschall.LM(17) + return ultraschall.GetMarkerExtState(table.unpack({...})) + end + function ultraschall.ZoomVertical_MidiEditor(...) + ultraschall.LM(18) + return ultraschall.ZoomVertical_MidiEditor(table.unpack({...})) + end + function ultraschall.ZoomHorizontal_MidiEditor(...) + ultraschall.LM(18) + return ultraschall.ZoomHorizontal_MidiEditor(table.unpack({...})) + end + function ultraschall.OpenItemInMidiEditor(...) + ultraschall.LM(18) + return ultraschall.OpenItemInMidiEditor(table.unpack({...})) + end + function ultraschall.MIDI_SendMidiNote(...) + ultraschall.LM(18) + return ultraschall.MIDI_SendMidiNote(table.unpack({...})) + end + function ultraschall.MIDI_SendMidiCC(...) + ultraschall.LM(18) + return ultraschall.MIDI_SendMidiCC(table.unpack({...})) + end + function ultraschall.MIDI_SendMidiPC(...) + ultraschall.LM(18) + return ultraschall.MIDI_SendMidiPC(table.unpack({...})) + end + function ultraschall.MIDI_SendMidiPitch(...) + ultraschall.LM(18) + return ultraschall.MIDI_SendMidiPitch(table.unpack({...})) + end + function ultraschall.ToggleMute(...) + ultraschall.LM(19) + return ultraschall.ToggleMute(table.unpack({...})) + end + function ultraschall.ToggleMute_TrackObject(...) + ultraschall.LM(19) + return ultraschall.ToggleMute_TrackObject(table.unpack({...})) + end + function ultraschall.GetNextMuteState(...) + ultraschall.LM(19) + return ultraschall.GetNextMuteState(table.unpack({...})) + end + function ultraschall.GetPreviousMuteState(...) + ultraschall.LM(19) + return ultraschall.GetPreviousMuteState(table.unpack({...})) + end + function ultraschall.GetNextMuteState_TrackObject(...) + ultraschall.LM(19) + return ultraschall.GetNextMuteState_TrackObject(table.unpack({...})) + end + function ultraschall.GetPreviousMuteState_TrackObject(...) + ultraschall.LM(19) + return ultraschall.GetPreviousMuteState_TrackObject(table.unpack({...})) + end + function ultraschall.CountMuteEnvelopePoints(...) + ultraschall.LM(19) + return ultraschall.CountMuteEnvelopePoints(table.unpack({...})) + end + function ultraschall.DeleteMuteState(...) + ultraschall.LM(19) + return ultraschall.DeleteMuteState(table.unpack({...})) + end + function ultraschall.DeleteMuteState_TrackObject(...) + ultraschall.LM(19) + return ultraschall.DeleteMuteState_TrackObject(table.unpack({...})) + end + function ultraschall.IsMuteAtPosition(...) + ultraschall.LM(19) + return ultraschall.IsMuteAtPosition(table.unpack({...})) + end + function ultraschall.IsMuteAtPosition_TrackObject(...) + ultraschall.LM(19) + return ultraschall.IsMuteAtPosition_TrackObject(table.unpack({...})) + end + function ultraschall.ToggleScrollingDuringPlayback(...) + ultraschall.LM(20) + return ultraschall.ToggleScrollingDuringPlayback(table.unpack({...})) + end + function ultraschall.SetPlayCursor_WhenPlaying(...) + ultraschall.LM(20) + return ultraschall.SetPlayCursor_WhenPlaying(table.unpack({...})) + end + function ultraschall.SetPlayAndEditCursor_WhenPlaying(...) + ultraschall.LM(20) + return ultraschall.SetPlayAndEditCursor_WhenPlaying(table.unpack({...})) + end + function ultraschall.JumpForwardBy(...) + ultraschall.LM(20) + return ultraschall.JumpForwardBy(table.unpack({...})) + end + function ultraschall.JumpBackwardBy(...) + ultraschall.LM(20) + return ultraschall.JumpBackwardBy(table.unpack({...})) + end + function ultraschall.JumpForwardBy_Recording(...) + ultraschall.LM(20) + return ultraschall.JumpForwardBy_Recording(table.unpack({...})) + end + function ultraschall.JumpBackwardBy_Recording(...) + ultraschall.LM(20) + return ultraschall.JumpBackwardBy_Recording(table.unpack({...})) + end + function ultraschall.GetNextClosestItemEdge(...) + ultraschall.LM(20) + return ultraschall.GetNextClosestItemEdge(table.unpack({...})) + end + function ultraschall.GetPreviousClosestItemEdge(...) + ultraschall.LM(20) + return ultraschall.GetPreviousClosestItemEdge(table.unpack({...})) + end + function ultraschall.GetClosestNextMarker(...) + ultraschall.LM(20) + return ultraschall.GetClosestNextMarker(table.unpack({...})) + end + function ultraschall.GetClosestPreviousMarker(...) + ultraschall.LM(20) + return ultraschall.GetClosestPreviousMarker(table.unpack({...})) + end + function ultraschall.GetClosestNextRegionEdge(...) + ultraschall.LM(20) + return ultraschall.GetClosestNextRegionEdge(table.unpack({...})) + end + function ultraschall.GetClosestPreviousRegionEdge(...) + ultraschall.LM(20) + return ultraschall.GetClosestPreviousRegionEdge(table.unpack({...})) + end + function ultraschall.GetClosestGoToPoints(...) + ultraschall.LM(20) + return ultraschall.GetClosestGoToPoints(table.unpack({...})) + end + function ultraschall.CenterViewToCursor(...) + ultraschall.LM(20) + return ultraschall.CenterViewToCursor(table.unpack({...})) + end + function ultraschall.GetLastCursorPosition(...) + ultraschall.LM(20) + return ultraschall.GetLastCursorPosition(table.unpack({...})) + end + function ultraschall.GetLastPlayState(...) + ultraschall.LM(20) + return ultraschall.GetLastPlayState(table.unpack({...})) + end + function ultraschall.GetLastLoopState(...) + ultraschall.LM(20) + return ultraschall.GetLastLoopState(table.unpack({...})) + end + function ultraschall.GetLoopState(...) + ultraschall.LM(20) + return ultraschall.GetLoopState(table.unpack({...})) + end + function ultraschall.SetLoopState(...) + ultraschall.LM(20) + return ultraschall.SetLoopState(table.unpack({...})) + end + function ultraschall.Scrubbing_MoveCursor_GetToggleState(...) + ultraschall.LM(20) + return ultraschall.Scrubbing_MoveCursor_GetToggleState(table.unpack({...})) + end + function ultraschall.Scrubbing_MoveCursor_Toggle(...) + ultraschall.LM(20) + return ultraschall.Scrubbing_MoveCursor_Toggle(table.unpack({...})) + end + function ultraschall.GetProjectFilename(...) + ultraschall.LM(21) + return ultraschall.GetProjectFilename(table.unpack({...})) + end + function ultraschall.CheckForChangedProjectTabs(...) + ultraschall.LM(21) + return ultraschall.CheckForChangedProjectTabs(table.unpack({...})) + end + function ultraschall.IsValidProjectStateChunk(...) + ultraschall.LM(21) + return ultraschall.IsValidProjectStateChunk(table.unpack({...})) + end + function ultraschall.GetProjectStateChunk(...) + ultraschall.LM(21) + return ultraschall.GetProjectStateChunk(table.unpack({...})) + end + function ultraschall.EnumProjects(...) + ultraschall.LM(21) + return ultraschall.EnumProjects(table.unpack({...})) + end + function ultraschall.GetProject_ReaperVersion(...) + ultraschall.LM(22) + return ultraschall.GetProject_ReaperVersion(table.unpack({...})) + end + function ultraschall.GetProject_RenderCFG(...) + ultraschall.LM(22) + return ultraschall.GetProject_RenderCFG(table.unpack({...})) + end + function ultraschall.GetProject_RippleState(...) + ultraschall.LM(22) + return ultraschall.GetProject_RippleState(table.unpack({...})) + end + function ultraschall.GetProject_GroupOverride(...) + ultraschall.LM(22) + return ultraschall.GetProject_GroupOverride(table.unpack({...})) + end + function ultraschall.GetProject_AutoCrossFade(...) + ultraschall.LM(22) + return ultraschall.GetProject_AutoCrossFade(table.unpack({...})) + end + function ultraschall.GetProject_EnvAttach(...) + ultraschall.LM(22) + return ultraschall.GetProject_EnvAttach(table.unpack({...})) + end + function ultraschall.GetProject_MixerUIFlags(...) + ultraschall.LM(22) + return ultraschall.GetProject_MixerUIFlags(table.unpack({...})) + end + function ultraschall.GetProject_PeakGain(...) + ultraschall.LM(22) + return ultraschall.GetProject_PeakGain(table.unpack({...})) + end + function ultraschall.GetProject_Feedback(...) + ultraschall.LM(22) + return ultraschall.GetProject_Feedback(table.unpack({...})) + end + function ultraschall.GetProject_PanLaw(...) + ultraschall.LM(22) + return ultraschall.GetProject_PanLaw(table.unpack({...})) + end + function ultraschall.GetProject_ProjOffsets(...) + ultraschall.LM(22) + return ultraschall.GetProject_ProjOffsets(table.unpack({...})) + end + function ultraschall.GetProject_MaxProjectLength(...) + ultraschall.LM(22) + return ultraschall.GetProject_MaxProjectLength(table.unpack({...})) + end + function ultraschall.GetProject_Grid(...) + ultraschall.LM(22) + return ultraschall.GetProject_Grid(table.unpack({...})) + end + function ultraschall.GetProject_Timemode(...) + ultraschall.LM(22) + return ultraschall.GetProject_Timemode(table.unpack({...})) + end + function ultraschall.GetProject_VideoConfig(...) + ultraschall.LM(22) + return ultraschall.GetProject_VideoConfig(table.unpack({...})) + end + function ultraschall.GetProject_PanMode(...) + ultraschall.LM(22) + return ultraschall.GetProject_PanMode(table.unpack({...})) + end + function ultraschall.GetProject_CursorPos(...) + ultraschall.LM(22) + return ultraschall.GetProject_CursorPos(table.unpack({...})) + end + function ultraschall.GetProject_HorizontalZoom(...) + ultraschall.LM(22) + return ultraschall.GetProject_HorizontalZoom(table.unpack({...})) + end + function ultraschall.GetProject_VerticalZoom(...) + ultraschall.LM(22) + return ultraschall.GetProject_VerticalZoom(table.unpack({...})) + end + function ultraschall.GetProject_UseRecConfig(...) + ultraschall.LM(22) + return ultraschall.GetProject_UseRecConfig(table.unpack({...})) + end + function ultraschall.GetProject_RecMode(...) + ultraschall.LM(22) + return ultraschall.GetProject_RecMode(table.unpack({...})) + end + function ultraschall.GetProject_SMPTESync(...) + ultraschall.LM(22) + return ultraschall.GetProject_SMPTESync(table.unpack({...})) + end + function ultraschall.GetProject_Loop(...) + ultraschall.LM(22) + return ultraschall.GetProject_Loop(table.unpack({...})) + end + function ultraschall.GetProject_LoopGran(...) + ultraschall.LM(22) + return ultraschall.GetProject_LoopGran(table.unpack({...})) + end + function ultraschall.GetProject_RecPath(...) + ultraschall.LM(22) + return ultraschall.GetProject_RecPath(table.unpack({...})) + end + function ultraschall.GetProject_RecordCFG(...) + ultraschall.LM(22) + return ultraschall.GetProject_RecordCFG(table.unpack({...})) + end + function ultraschall.GetProject_ApplyFXCFG(...) + ultraschall.LM(22) + return ultraschall.GetProject_ApplyFXCFG(table.unpack({...})) + end + function ultraschall.GetProject_RenderPattern(...) + ultraschall.LM(22) + return ultraschall.GetProject_RenderPattern(table.unpack({...})) + end + function ultraschall.GetProject_RenderFreqNChans(...) + ultraschall.LM(22) + return ultraschall.GetProject_RenderFreqNChans(table.unpack({...})) + end + function ultraschall.GetProject_RenderSpeed(...) + ultraschall.LM(22) + return ultraschall.GetProject_RenderSpeed(table.unpack({...})) + end + function ultraschall.GetProject_RenderRange(...) + ultraschall.LM(22) + return ultraschall.GetProject_RenderRange(table.unpack({...})) + end + function ultraschall.GetProject_RenderResample(...) + ultraschall.LM(22) + return ultraschall.GetProject_RenderResample(table.unpack({...})) + end + function ultraschall.GetProject_AddMediaToProjectAfterRender(...) + ultraschall.LM(22) + return ultraschall.GetProject_AddMediaToProjectAfterRender(table.unpack({...})) + end + function ultraschall.GetProject_RenderStems(...) + ultraschall.LM(22) + return ultraschall.GetProject_RenderStems(table.unpack({...})) + end + function ultraschall.GetProject_RenderDitherState(...) + ultraschall.LM(22) + return ultraschall.GetProject_RenderDitherState(table.unpack({...})) + end + function ultraschall.GetProject_TimeBase(...) + ultraschall.LM(22) + return ultraschall.GetProject_TimeBase(table.unpack({...})) + end + function ultraschall.GetProject_TempoTimeSignature(...) + ultraschall.LM(22) + return ultraschall.GetProject_TempoTimeSignature(table.unpack({...})) + end + function ultraschall.GetProject_ItemMixBehavior(...) + ultraschall.LM(22) + return ultraschall.GetProject_ItemMixBehavior(table.unpack({...})) + end + function ultraschall.GetProject_DefPitchMode(...) + ultraschall.LM(22) + return ultraschall.GetProject_DefPitchMode(table.unpack({...})) + end + function ultraschall.GetProject_TakeLane(...) + ultraschall.LM(22) + return ultraschall.GetProject_TakeLane(table.unpack({...})) + end + function ultraschall.GetProject_SampleRate(...) + ultraschall.LM(22) + return ultraschall.GetProject_SampleRate(table.unpack({...})) + end + function ultraschall.GetProject_TrackMixingDepth(...) + ultraschall.LM(22) + return ultraschall.GetProject_TrackMixingDepth(table.unpack({...})) + end + function ultraschall.GetProject_TrackStateChunk(...) + ultraschall.LM(22) + return ultraschall.GetProject_TrackStateChunk(table.unpack({...})) + end + function ultraschall.GetProject_NumberOfTracks(...) + ultraschall.LM(22) + return ultraschall.GetProject_NumberOfTracks(table.unpack({...})) + end + function ultraschall.GetProject_Selection(...) + ultraschall.LM(22) + return ultraschall.GetProject_Selection(table.unpack({...})) + end + function ultraschall.GetProject_RenderQueueDelay(...) + ultraschall.LM(22) + return ultraschall.GetProject_RenderQueueDelay(table.unpack({...})) + end + function ultraschall.GetProject_QRenderOriginalProject(...) + ultraschall.LM(22) + return ultraschall.GetProject_QRenderOriginalProject(table.unpack({...})) + end + function ultraschall.GetProject_QRenderOutFiles(...) + ultraschall.LM(22) + return ultraschall.GetProject_QRenderOutFiles(table.unpack({...})) + end + function ultraschall.SetProject_RippleState(...) + ultraschall.LM(22) + return ultraschall.SetProject_RippleState(table.unpack({...})) + end + function ultraschall.SetProject_RenderQueueDelay(...) + ultraschall.LM(22) + return ultraschall.SetProject_RenderQueueDelay(table.unpack({...})) + end + function ultraschall.SetProject_Selection(...) + ultraschall.LM(22) + return ultraschall.SetProject_Selection(table.unpack({...})) + end + function ultraschall.SetProject_GroupOverride(...) + ultraschall.LM(22) + return ultraschall.SetProject_GroupOverride(table.unpack({...})) + end + function ultraschall.SetProject_AutoCrossFade(...) + ultraschall.LM(22) + return ultraschall.SetProject_AutoCrossFade(table.unpack({...})) + end + function ultraschall.SetProject_EnvAttach(...) + ultraschall.LM(22) + return ultraschall.SetProject_EnvAttach(table.unpack({...})) + end + function ultraschall.SetProject_MixerUIFlags(...) + ultraschall.LM(22) + return ultraschall.SetProject_MixerUIFlags(table.unpack({...})) + end + function ultraschall.SetProject_PeakGain(...) + ultraschall.LM(22) + return ultraschall.SetProject_PeakGain(table.unpack({...})) + end + function ultraschall.SetProject_Feedback(...) + ultraschall.LM(22) + return ultraschall.SetProject_Feedback(table.unpack({...})) + end + function ultraschall.SetProject_PanLaw(...) + ultraschall.LM(22) + return ultraschall.SetProject_PanLaw(table.unpack({...})) + end + function ultraschall.SetProject_ProjOffsets(...) + ultraschall.LM(22) + return ultraschall.SetProject_ProjOffsets(table.unpack({...})) + end + function ultraschall.SetProject_MaxProjectLength(...) + ultraschall.LM(22) + return ultraschall.SetProject_MaxProjectLength(table.unpack({...})) + end + function ultraschall.SetProject_Grid(...) + ultraschall.LM(22) + return ultraschall.SetProject_Grid(table.unpack({...})) + end + function ultraschall.SetProject_Timemode(...) + ultraschall.LM(22) + return ultraschall.SetProject_Timemode(table.unpack({...})) + end + function ultraschall.SetProject_VideoConfig(...) + ultraschall.LM(22) + return ultraschall.SetProject_VideoConfig(table.unpack({...})) + end + function ultraschall.SetProject_PanMode(...) + ultraschall.LM(22) + return ultraschall.SetProject_PanMode(table.unpack({...})) + end + function ultraschall.SetProject_CursorPos(...) + ultraschall.LM(22) + return ultraschall.SetProject_CursorPos(table.unpack({...})) + end + function ultraschall.SetProject_HorizontalZoom(...) + ultraschall.LM(22) + return ultraschall.SetProject_HorizontalZoom(table.unpack({...})) + end + function ultraschall.SetProject_VerticalZoom(...) + ultraschall.LM(22) + return ultraschall.SetProject_VerticalZoom(table.unpack({...})) + end + function ultraschall.SetProject_UseRecConfig(...) + ultraschall.LM(22) + return ultraschall.SetProject_UseRecConfig(table.unpack({...})) + end + function ultraschall.SetProject_RecMode(...) + ultraschall.LM(22) + return ultraschall.SetProject_RecMode(table.unpack({...})) + end + function ultraschall.SetProject_SMPTESync(...) + ultraschall.LM(22) + return ultraschall.SetProject_SMPTESync(table.unpack({...})) + end + function ultraschall.SetProject_Loop(...) + ultraschall.LM(22) + return ultraschall.SetProject_Loop(table.unpack({...})) + end + function ultraschall.SetProject_LoopGran(...) + ultraschall.LM(22) + return ultraschall.SetProject_LoopGran(table.unpack({...})) + end + function ultraschall.SetProject_RecPath(...) + ultraschall.LM(22) + return ultraschall.SetProject_RecPath(table.unpack({...})) + end + function ultraschall.SetProject_RecordCFG(...) + ultraschall.LM(22) + return ultraschall.SetProject_RecordCFG(table.unpack({...})) + end + function ultraschall.SetProject_RenderCFG(...) + ultraschall.LM(22) + return ultraschall.SetProject_RenderCFG(table.unpack({...})) + end + function ultraschall.SetProject_ApplyFXCFG(...) + ultraschall.LM(22) + return ultraschall.SetProject_ApplyFXCFG(table.unpack({...})) + end + function ultraschall.SetProject_RenderFilename(...) + ultraschall.LM(22) + return ultraschall.SetProject_RenderFilename(table.unpack({...})) + end + function ultraschall.SetProject_RenderFreqNChans(...) + ultraschall.LM(22) + return ultraschall.SetProject_RenderFreqNChans(table.unpack({...})) + end + function ultraschall.SetProject_RenderSpeed(...) + ultraschall.LM(22) + return ultraschall.SetProject_RenderSpeed(table.unpack({...})) + end + function ultraschall.SetProject_RenderRange(...) + ultraschall.LM(22) + return ultraschall.SetProject_RenderRange(table.unpack({...})) + end + function ultraschall.SetProject_RenderResample(...) + ultraschall.LM(22) + return ultraschall.SetProject_RenderResample(table.unpack({...})) + end + function ultraschall.SetProject_AddMediaToProjectAfterRender(...) + ultraschall.LM(22) + return ultraschall.SetProject_AddMediaToProjectAfterRender(table.unpack({...})) + end + function ultraschall.SetProject_RenderStems(...) + ultraschall.LM(22) + return ultraschall.SetProject_RenderStems(table.unpack({...})) + end + function ultraschall.SetProject_RenderDitherState(...) + ultraschall.LM(22) + return ultraschall.SetProject_RenderDitherState(table.unpack({...})) + end + function ultraschall.SetProject_TimeBase(...) + ultraschall.LM(22) + return ultraschall.SetProject_TimeBase(table.unpack({...})) + end + function ultraschall.SetProject_TempoTimeSignature(...) + ultraschall.LM(22) + return ultraschall.SetProject_TempoTimeSignature(table.unpack({...})) + end + function ultraschall.SetProject_ItemMixBehavior(...) + ultraschall.LM(22) + return ultraschall.SetProject_ItemMixBehavior(table.unpack({...})) + end + function ultraschall.SetProject_DefPitchMode(...) + ultraschall.LM(22) + return ultraschall.SetProject_DefPitchMode(table.unpack({...})) + end + function ultraschall.SetProject_TakeLane(...) + ultraschall.LM(22) + return ultraschall.SetProject_TakeLane(table.unpack({...})) + end + function ultraschall.SetProject_SampleRate(...) + ultraschall.LM(22) + return ultraschall.SetProject_SampleRate(table.unpack({...})) + end + function ultraschall.SetProject_TrackMixingDepth(...) + ultraschall.LM(22) + return ultraschall.SetProject_TrackMixingDepth(table.unpack({...})) + end + function ultraschall.GetProject_CountMarkersAndRegions(...) + ultraschall.LM(22) + return ultraschall.GetProject_CountMarkersAndRegions(table.unpack({...})) + end + function ultraschall.GetProject_GetMarker(...) + ultraschall.LM(22) + return ultraschall.GetProject_GetMarker(table.unpack({...})) + end + function ultraschall.GetProject_GetRegion(...) + ultraschall.LM(22) + return ultraschall.GetProject_GetRegion(table.unpack({...})) + end + function ultraschall.GetProject_MarkersAndRegions(...) + ultraschall.LM(22) + return ultraschall.GetProject_MarkersAndRegions(table.unpack({...})) + end + function ultraschall.IsValidReaProject(...) + ultraschall.LM(22) + return ultraschall.IsValidReaProject(table.unpack({...})) + end + function ultraschall.NewProjectTab(...) + ultraschall.LM(22) + return ultraschall.NewProjectTab(table.unpack({...})) + end + function ultraschall.GetCurrentTimeLengthOfFrame(...) + ultraschall.LM(22) + return ultraschall.GetCurrentTimeLengthOfFrame(table.unpack({...})) + end + function ultraschall.GetLengthOfFrames(...) + ultraschall.LM(22) + return ultraschall.GetLengthOfFrames(table.unpack({...})) + end + function ultraschall.ConvertOldProjectToCurrentReaperVersion(...) + ultraschall.LM(22) + return ultraschall.ConvertOldProjectToCurrentReaperVersion(table.unpack({...})) + end + function ultraschall.GetProject_ProjectBay(...) + ultraschall.LM(22) + return ultraschall.GetProject_ProjectBay(table.unpack({...})) + end + function ultraschall.GetProject_Metronome(...) + ultraschall.LM(22) + return ultraschall.GetProject_Metronome(table.unpack({...})) + end + function ultraschall.GetProject_MasterPlayspeed(...) + ultraschall.LM(22) + return ultraschall.GetProject_MasterPlayspeed(table.unpack({...})) + end + function ultraschall.GetProject_TempoEnvEx(...) + ultraschall.LM(22) + return ultraschall.GetProject_TempoEnvEx(table.unpack({...})) + end + function ultraschall.GetProject_Extensions(...) + ultraschall.LM(22) + return ultraschall.GetProject_Extensions(table.unpack({...})) + end + function ultraschall.GetProject_Lock(...) + ultraschall.LM(22) + return ultraschall.GetProject_Lock(table.unpack({...})) + end + function ultraschall.GetProject_GlobalAuto(...) + ultraschall.LM(22) + return ultraschall.GetProject_GlobalAuto(table.unpack({...})) + end + function ultraschall.GetProject_Tempo(...) + ultraschall.LM(22) + return ultraschall.GetProject_Tempo(table.unpack({...})) + end + function ultraschall.GetProject_Playrate(...) + ultraschall.LM(22) + return ultraschall.GetProject_Playrate(table.unpack({...})) + end + function ultraschall.GetProject_MasterAutomode(...) + ultraschall.LM(22) + return ultraschall.GetProject_MasterAutomode(table.unpack({...})) + end + function ultraschall.GetProject_MasterSel(...) + ultraschall.LM(22) + return ultraschall.GetProject_MasterSel(table.unpack({...})) + end + function ultraschall.GetProject_MasterFXByp(...) + ultraschall.LM(22) + return ultraschall.GetProject_MasterFXByp(table.unpack({...})) + end + function ultraschall.GetProject_MasterMuteSolo(...) + ultraschall.LM(22) + return ultraschall.GetProject_MasterMuteSolo(table.unpack({...})) + end + function ultraschall.GetProject_MasterNChans(...) + ultraschall.LM(22) + return ultraschall.GetProject_MasterNChans(table.unpack({...})) + end + function ultraschall.GetProject_MasterTrackHeight(...) + ultraschall.LM(22) + return ultraschall.GetProject_MasterTrackHeight(table.unpack({...})) + end + function ultraschall.GetProject_MasterTrackColor(...) + ultraschall.LM(22) + return ultraschall.GetProject_MasterTrackColor(table.unpack({...})) + end + function ultraschall.GetProject_MasterTrackView(...) + ultraschall.LM(22) + return ultraschall.GetProject_MasterTrackView(table.unpack({...})) + end + function ultraschall.GetProject_CountMasterHWOuts(...) + ultraschall.LM(22) + return ultraschall.GetProject_CountMasterHWOuts(table.unpack({...})) + end + function ultraschall.GetProject_MasterHWOut(...) + ultraschall.LM(22) + return ultraschall.GetProject_MasterHWOut(table.unpack({...})) + end + function ultraschall.GetProject_MasterVolume(...) + ultraschall.LM(22) + return ultraschall.GetProject_MasterVolume(table.unpack({...})) + end + function ultraschall.GetProject_MasterPanMode(...) + ultraschall.LM(22) + return ultraschall.GetProject_MasterPanMode(table.unpack({...})) + end + function ultraschall.GetProject_MasterWidth(...) + ultraschall.LM(22) + return ultraschall.GetProject_MasterWidth(table.unpack({...})) + end + function ultraschall.GetProject_MasterGroupFlagsState(...) + ultraschall.LM(22) + return ultraschall.GetProject_MasterGroupFlagsState(table.unpack({...})) + end + function ultraschall.GetProject_MasterGroupFlagsHighState(...) + ultraschall.LM(22) + return ultraschall.GetProject_MasterGroupFlagsHighState(table.unpack({...})) + end + function ultraschall.GetProject_GroupDisabled(...) + ultraschall.LM(22) + return ultraschall.GetProject_GroupDisabled(table.unpack({...})) + end + function ultraschall.GetProject_MasterHWVolEnvStateChunk(...) + ultraschall.LM(22) + return ultraschall.GetProject_MasterHWVolEnvStateChunk(table.unpack({...})) + end + function ultraschall.GetProject_MasterFXListStateChunk(...) + ultraschall.LM(22) + return ultraschall.GetProject_MasterFXListStateChunk(table.unpack({...})) + end + function ultraschall.GetProject_MasterDualPanEnvStateChunk(...) + ultraschall.LM(22) + return ultraschall.GetProject_MasterDualPanEnvStateChunk(table.unpack({...})) + end + function ultraschall.GetProject_MasterDualPanEnv2StateChunk(...) + ultraschall.LM(22) + return ultraschall.GetProject_MasterDualPanEnv2StateChunk(table.unpack({...})) + end + function ultraschall.GetProject_MasterDualPanEnvLStateChunk(...) + ultraschall.LM(22) + return ultraschall.GetProject_MasterDualPanEnvLStateChunk(table.unpack({...})) + end + function ultraschall.GetProject_MasterDualPanEnvL2StateChunk(...) + ultraschall.LM(22) + return ultraschall.GetProject_MasterDualPanEnvL2StateChunk(table.unpack({...})) + end + function ultraschall.GetProject_MasterVolEnvStateChunk(...) + ultraschall.LM(22) + return ultraschall.GetProject_MasterVolEnvStateChunk(table.unpack({...})) + end + function ultraschall.GetProject_MasterVolEnv2StateChunk(...) + ultraschall.LM(22) + return ultraschall.GetProject_MasterVolEnv2StateChunk(table.unpack({...})) + end + function ultraschall.GetProject_MasterVolEnv3StateChunk(...) + ultraschall.LM(22) + return ultraschall.GetProject_MasterVolEnv3StateChunk(table.unpack({...})) + end + function ultraschall.GetProject_MasterHWPanEnvStateChunk(...) + ultraschall.LM(22) + return ultraschall.GetProject_MasterHWPanEnvStateChunk(table.unpack({...})) + end + function ultraschall.GetProject_MasterPanMode_Ex(...) + ultraschall.LM(22) + return ultraschall.GetProject_MasterPanMode_Ex(table.unpack({...})) + end + function ultraschall.GetProject_TempoEnv_ExStateChunk(...) + ultraschall.LM(22) + return ultraschall.GetProject_TempoEnv_ExStateChunk(table.unpack({...})) + end + function ultraschall.GetProject_Length(...) + ultraschall.LM(22) + return ultraschall.GetProject_Length(table.unpack({...})) + end + function ultraschall.CreateTemporaryFileOfProjectfile(...) + ultraschall.LM(22) + return ultraschall.CreateTemporaryFileOfProjectfile(table.unpack({...})) + end + function ultraschall.GetProject_Length(...) + ultraschall.LM(22) + return ultraschall.GetProject_Length(table.unpack({...})) + end + function ultraschall.SetProject_RenderPattern(...) + ultraschall.LM(22) + return ultraschall.SetProject_RenderPattern(table.unpack({...})) + end + function ultraschall.GetProject_RenderFilename(...) + ultraschall.LM(22) + return ultraschall.GetProject_RenderFilename(table.unpack({...})) + end + function ultraschall.GetProject_GroupName(...) + ultraschall.LM(22) + return ultraschall.GetProject_GroupName(table.unpack({...})) + end + function ultraschall.SetProject_Lock(...) + ultraschall.LM(22) + return ultraschall.SetProject_Lock(table.unpack({...})) + end + function ultraschall.SetProject_GlobalAuto(...) + ultraschall.LM(22) + return ultraschall.SetProject_GlobalAuto(table.unpack({...})) + end + function ultraschall.SetProject_Tempo(...) + ultraschall.LM(22) + return ultraschall.SetProject_Tempo(table.unpack({...})) + end + function ultraschall.SetProject_Playrate(...) + ultraschall.LM(22) + return ultraschall.SetProject_Playrate(table.unpack({...})) + end + function ultraschall.SetProject_MasterAutomode(...) + ultraschall.LM(22) + return ultraschall.SetProject_MasterAutomode(table.unpack({...})) + end + function ultraschall.SetProject_MasterSel(...) + ultraschall.LM(22) + return ultraschall.SetProject_MasterSel(table.unpack({...})) + end + function ultraschall.SetProject_MasterMuteSolo(...) + ultraschall.LM(22) + return ultraschall.SetProject_MasterMuteSolo(table.unpack({...})) + end + function ultraschall.SetProject_MasterFXByp(...) + ultraschall.LM(22) + return ultraschall.SetProject_MasterFXByp(table.unpack({...})) + end + function ultraschall.SetProject_MasterNChans(...) + ultraschall.LM(22) + return ultraschall.SetProject_MasterNChans(table.unpack({...})) + end + function ultraschall.SetProject_MasterTrackHeight(...) + ultraschall.LM(22) + return ultraschall.SetProject_MasterTrackHeight(table.unpack({...})) + end + function ultraschall.SetProject_MasterTrackColor(...) + ultraschall.LM(22) + return ultraschall.SetProject_MasterTrackColor(table.unpack({...})) + end + function ultraschall.SetProject_MasterPanMode(...) + ultraschall.LM(22) + return ultraschall.SetProject_MasterPanMode(table.unpack({...})) + end + function ultraschall.AutoSearchReaMoteSlaves(...) + ultraschall.LM(23) + return ultraschall.AutoSearchReaMoteSlaves(table.unpack({...})) + end + function ultraschall.GetVerticalZoom(...) + ultraschall.LM(24) + return ultraschall.GetVerticalZoom(table.unpack({...})) + end + function ultraschall.SetVerticalZoom(...) + ultraschall.LM(24) + return ultraschall.SetVerticalZoom(table.unpack({...})) + end + function ultraschall.StoreArrangeviewSnapshot(...) + ultraschall.LM(24) + return ultraschall.StoreArrangeviewSnapshot(table.unpack({...})) + end + function ultraschall.IsValidArrangeviewSnapshot(...) + ultraschall.LM(24) + return ultraschall.IsValidArrangeviewSnapshot(table.unpack({...})) + end + function ultraschall.RetrieveArrangeviewSnapshot(...) + ultraschall.LM(24) + return ultraschall.RetrieveArrangeviewSnapshot(table.unpack({...})) + end + function ultraschall.RestoreArrangeviewSnapshot(...) + ultraschall.LM(24) + return ultraschall.RestoreArrangeviewSnapshot(table.unpack({...})) + end + function ultraschall.DeleteArrangeviewSnapshot(...) + ultraschall.LM(24) + return ultraschall.DeleteArrangeviewSnapshot(table.unpack({...})) + end + function ultraschall.SetIDEFontSize(...) + ultraschall.LM(24) + return ultraschall.SetIDEFontSize(table.unpack({...})) + end + function ultraschall.GetIDEFontSize(...) + ultraschall.LM(24) + return ultraschall.GetIDEFontSize(table.unpack({...})) + end + function ultraschall.GetPlayCursorWidth(...) + ultraschall.LM(24) + return ultraschall.GetPlayCursorWidth(table.unpack({...})) + end + function ultraschall.SetPlayCursorWidth(...) + ultraschall.LM(24) + return ultraschall.SetPlayCursorWidth(table.unpack({...})) + end + function ultraschall.GetScreenWidth(...) + ultraschall.LM(24) + return ultraschall.GetScreenWidth(table.unpack({...})) + end + function ultraschall.GetScreenHeight(...) + ultraschall.LM(24) + return ultraschall.GetScreenHeight(table.unpack({...})) + end + function ultraschall.ShowMenu(...) + ultraschall.LM(24) + return ultraschall.ShowMenu(table.unpack({...})) + end + function ultraschall.IsValidHWND(...) + ultraschall.LM(24) + return ultraschall.IsValidHWND(table.unpack({...})) + end + function ultraschall.BrowseForOpenFiles(...) + ultraschall.LM(24) + return ultraschall.BrowseForOpenFiles(table.unpack({...})) + end + function ultraschall.HasHWNDChildWindowNames(...) + ultraschall.LM(24) + return ultraschall.HasHWNDChildWindowNames(table.unpack({...})) + end + function ultraschall.CloseReaScriptConsole(...) + ultraschall.LM(24) + return ultraschall.CloseReaScriptConsole(table.unpack({...})) + end + function ultraschall.MB(...) + ultraschall.LM(24) + return ultraschall.MB(table.unpack({...})) + end + function ultraschall.GetTopmostHWND(...) + ultraschall.LM(24) + return ultraschall.GetTopmostHWND(table.unpack({...})) + end + function ultraschall.GetReaperWindowAttributes(...) + ultraschall.LM(24) + return ultraschall.GetReaperWindowAttributes(table.unpack({...})) + end + function ultraschall.Windows_Find(...) + ultraschall.LM(24) + return ultraschall.Windows_Find(table.unpack({...})) + end + function ultraschall.GetAllReaScriptIDEWindows(...) + ultraschall.LM(24) + return ultraschall.GetAllReaScriptIDEWindows(table.unpack({...})) + end + function ultraschall.GetReaScriptConsoleWindow(...) + ultraschall.LM(24) + return ultraschall.GetReaScriptConsoleWindow(table.unpack({...})) + end + function ultraschall.GetHWND_ArrangeViewAndTimeLine(...) + ultraschall.LM(24) + return ultraschall.GetHWND_ArrangeViewAndTimeLine(table.unpack({...})) + end + function ultraschall.GetVerticalScroll(...) + ultraschall.LM(24) + return ultraschall.GetVerticalScroll(table.unpack({...})) + end + function ultraschall.SetVerticalScroll(...) + ultraschall.LM(24) + return ultraschall.SetVerticalScroll(table.unpack({...})) + end + function ultraschall.SetVerticalRelativeScroll(...) + ultraschall.LM(24) + return ultraschall.SetVerticalRelativeScroll(table.unpack({...})) + end + function ultraschall.GetUserInputs(...) + ultraschall.LM(24) + return ultraschall.GetUserInputs(table.unpack({...})) + end + function ultraschall.GetRenderToFileHWND(...) + ultraschall.LM(24) + return ultraschall.GetRenderToFileHWND(table.unpack({...})) + end + function ultraschall.GetActionsHWND(...) + ultraschall.LM(24) + return ultraschall.GetActionsHWND(table.unpack({...})) + end + function ultraschall.GetVideoHWND(...) + ultraschall.LM(24) + return ultraschall.GetVideoHWND(table.unpack({...})) + end + function ultraschall.GetRenderQueueHWND(...) + ultraschall.LM(24) + return ultraschall.GetRenderQueueHWND(table.unpack({...})) + end + function ultraschall.GetProjectSettingsHWND(...) + ultraschall.LM(24) + return ultraschall.GetProjectSettingsHWND(table.unpack({...})) + end + function ultraschall.GetPreferencesHWND(...) + ultraschall.LM(24) + return ultraschall.GetPreferencesHWND(table.unpack({...})) + end + function ultraschall.GetSaveLiveOutputToDiskHWND(...) + ultraschall.LM(24) + return ultraschall.GetSaveLiveOutputToDiskHWND(table.unpack({...})) + end + function ultraschall.GetConsolidateTracksHWND(...) + ultraschall.LM(24) + return ultraschall.GetConsolidateTracksHWND(table.unpack({...})) + end + function ultraschall.GetExportProjectMIDIHWND(...) + ultraschall.LM(24) + return ultraschall.GetExportProjectMIDIHWND(table.unpack({...})) + end + function ultraschall.GetProjectDirectoryCleanupHWND(...) + ultraschall.LM(24) + return ultraschall.GetProjectDirectoryCleanupHWND(table.unpack({...})) + end + function ultraschall.GetBatchFileItemConverterHWND(...) + ultraschall.LM(24) + return ultraschall.GetBatchFileItemConverterHWND(table.unpack({...})) + end + function ultraschall.SetReaScriptConsole_FontStyle(...) + ultraschall.LM(24) + return ultraschall.SetReaScriptConsole_FontStyle(table.unpack({...})) + end + function ultraschall.MoveChildWithinParentHWND(...) + ultraschall.LM(24) + return ultraschall.MoveChildWithinParentHWND(table.unpack({...})) + end + function ultraschall.GetChildSizeWithinParentHWND(...) + ultraschall.LM(24) + return ultraschall.GetChildSizeWithinParentHWND(table.unpack({...})) + end + function ultraschall.GetCheckboxState(...) + ultraschall.LM(24) + return ultraschall.GetCheckboxState(table.unpack({...})) + end + function ultraschall.SetCheckboxState(...) + ultraschall.LM(24) + return ultraschall.SetCheckboxState(table.unpack({...})) + end + function ultraschall.GetRenderingToFileHWND(...) + ultraschall.LM(24) + return ultraschall.GetRenderingToFileHWND(table.unpack({...})) + end + function ultraschall.GetReaperWindowPosition_Left(...) + ultraschall.LM(24) + return ultraschall.GetReaperWindowPosition_Left(table.unpack({...})) + end + function ultraschall.GetReaperWindowPosition_Right(...) + ultraschall.LM(24) + return ultraschall.GetReaperWindowPosition_Right(table.unpack({...})) + end + function ultraschall.ConvertScreen2ClientXCoordinate_ReaperWindow(...) + ultraschall.LM(24) + return ultraschall.ConvertScreen2ClientXCoordinate_ReaperWindow(table.unpack({...})) + end + function ultraschall.ConvertClient2ScreenXCoordinate_ReaperWindow(...) + ultraschall.LM(24) + return ultraschall.ConvertClient2ScreenXCoordinate_ReaperWindow(table.unpack({...})) + end + function ultraschall.SetReaperWindowToSize(...) + ultraschall.LM(24) + return ultraschall.SetReaperWindowToSize(table.unpack({...})) + end + function ultraschall.ConvertYCoordsMac2Win(...) + ultraschall.LM(24) + return ultraschall.ConvertYCoordsMac2Win(table.unpack({...})) + end + function ultraschall.GetMediaExplorerHWND(...) + ultraschall.LM(24) + return ultraschall.GetMediaExplorerHWND(table.unpack({...})) + end + function ultraschall.GetTimeByMouseXPosition(...) + ultraschall.LM(24) + return ultraschall.GetTimeByMouseXPosition(table.unpack({...})) + end + function ultraschall.ShowTrackInputMenu(...) + ultraschall.LM(24) + return ultraschall.ShowTrackInputMenu(table.unpack({...})) + end + function ultraschall.ShowTrackPanelMenu(...) + ultraschall.LM(24) + return ultraschall.ShowTrackPanelMenu(table.unpack({...})) + end + function ultraschall.ShowTrackAreaMenu(...) + ultraschall.LM(24) + return ultraschall.ShowTrackAreaMenu(table.unpack({...})) + end + function ultraschall.ShowTrackRoutingMenu(...) + ultraschall.LM(24) + return ultraschall.ShowTrackRoutingMenu(table.unpack({...})) + end + function ultraschall.ShowRulerMenu(...) + ultraschall.LM(24) + return ultraschall.ShowRulerMenu(table.unpack({...})) + end + function ultraschall.ShowMediaItemMenu(...) + ultraschall.LM(24) + return ultraschall.ShowMediaItemMenu(table.unpack({...})) + end + function ultraschall.ShowEnvelopeMenu(...) + ultraschall.LM(24) + return ultraschall.ShowEnvelopeMenu(table.unpack({...})) + end + function ultraschall.ShowEnvelopePointMenu(...) + ultraschall.LM(24) + return ultraschall.ShowEnvelopePointMenu(table.unpack({...})) + end + function ultraschall.ShowEnvelopePointMenu_AutomationItem(...) + ultraschall.LM(24) + return ultraschall.ShowEnvelopePointMenu_AutomationItem(table.unpack({...})) + end + function ultraschall.ShowAutomationItemMenu(...) + ultraschall.LM(24) + return ultraschall.ShowAutomationItemMenu(table.unpack({...})) + end + function ultraschall.GetSaveProjectAsHWND(...) + ultraschall.LM(24) + return ultraschall.GetSaveProjectAsHWND(table.unpack({...})) + end + function ultraschall.GetRenderCFG_Settings_FLAC(...) + ultraschall.LM(25) + return ultraschall.GetRenderCFG_Settings_FLAC(table.unpack({...})) + end + function ultraschall.GetRenderCFG_Settings_AIFF(...) + ultraschall.LM(25) + return ultraschall.GetRenderCFG_Settings_AIFF(table.unpack({...})) + end + function ultraschall.GetRenderCFG_Settings_AudioCD(...) + ultraschall.LM(25) + return ultraschall.GetRenderCFG_Settings_AudioCD(table.unpack({...})) + end + function ultraschall.GetRenderCFG_Settings_MP3(...) + ultraschall.LM(25) + return ultraschall.GetRenderCFG_Settings_MP3(table.unpack({...})) + end + function ultraschall.GetRenderCFG_Settings_MP3MaxQuality(...) + ultraschall.LM(25) + return ultraschall.GetRenderCFG_Settings_MP3MaxQuality(table.unpack({...})) + end + function ultraschall.GetRenderCFG_Settings_MP3CBR(...) + ultraschall.LM(25) + return ultraschall.GetRenderCFG_Settings_MP3CBR(table.unpack({...})) + end + function ultraschall.GetRenderCFG_Settings_MP3VBR(...) + ultraschall.LM(25) + return ultraschall.GetRenderCFG_Settings_MP3VBR(table.unpack({...})) + end + function ultraschall.GetRenderCFG_Settings_MP3ABR(...) + ultraschall.LM(25) + return ultraschall.GetRenderCFG_Settings_MP3ABR(table.unpack({...})) + end + function ultraschall.GetRenderCFG_Settings_OGG(...) + ultraschall.LM(25) + return ultraschall.GetRenderCFG_Settings_OGG(table.unpack({...})) + end + function ultraschall.GetRenderCFG_Settings_OPUS(...) + ultraschall.LM(25) + return ultraschall.GetRenderCFG_Settings_OPUS(table.unpack({...})) + end + function ultraschall.GetRenderCFG_Settings_GIF(...) + ultraschall.LM(25) + return ultraschall.GetRenderCFG_Settings_GIF(table.unpack({...})) + end + function ultraschall.GetRenderCFG_Settings_LCF(...) + ultraschall.LM(25) + return ultraschall.GetRenderCFG_Settings_LCF(table.unpack({...})) + end + function ultraschall.GetRenderCFG_Settings_WAV(...) + ultraschall.LM(25) + return ultraschall.GetRenderCFG_Settings_WAV(table.unpack({...})) + end + function ultraschall.GetRenderCFG_Settings_WAVPACK(...) + ultraschall.LM(25) + return ultraschall.GetRenderCFG_Settings_WAVPACK(table.unpack({...})) + end + function ultraschall.GetRenderCFG_Settings_WebMVideo(...) + ultraschall.LM(25) + return ultraschall.GetRenderCFG_Settings_WebMVideo(table.unpack({...})) + end + function ultraschall.GetRenderCFG_Settings_MKV_Video(...) + ultraschall.LM(25) + return ultraschall.GetRenderCFG_Settings_MKV_Video(table.unpack({...})) + end + function ultraschall.GetRenderCFG_Settings_AVI_Video(...) + ultraschall.LM(25) + return ultraschall.GetRenderCFG_Settings_AVI_Video(table.unpack({...})) + end + function ultraschall.GetRenderCFG_Settings_QTMOVMP4_Video(...) + ultraschall.LM(25) + return ultraschall.GetRenderCFG_Settings_QTMOVMP4_Video(table.unpack({...})) + end + function ultraschall.GetRenderCFG_Settings_DDP(...) + ultraschall.LM(25) + return ultraschall.GetRenderCFG_Settings_DDP(table.unpack({...})) + end + function ultraschall.CreateRenderCFG_GIF(...) + ultraschall.LM(25) + return ultraschall.CreateRenderCFG_GIF(table.unpack({...})) + end + function ultraschall.CreateRenderCFG_LCF(...) + ultraschall.LM(25) + return ultraschall.CreateRenderCFG_LCF(table.unpack({...})) + end + function ultraschall.CreateRenderCFG_WebMVideo(...) + ultraschall.LM(25) + return ultraschall.CreateRenderCFG_WebMVideo(table.unpack({...})) + end + function ultraschall.CreateRenderCFG_MKV_Video(...) + ultraschall.LM(25) + return ultraschall.CreateRenderCFG_MKV_Video(table.unpack({...})) + end + function ultraschall.CreateRenderCFG_QTMOVMP4_Video(...) + ultraschall.LM(25) + return ultraschall.CreateRenderCFG_QTMOVMP4_Video(table.unpack({...})) + end + function ultraschall.CreateRenderCFG_AVI_Video(...) + ultraschall.LM(25) + return ultraschall.CreateRenderCFG_AVI_Video(table.unpack({...})) + end + function ultraschall.GetRenderCFG_Settings_MP4Mac_Video(...) + ultraschall.LM(25) + return ultraschall.GetRenderCFG_Settings_MP4Mac_Video(table.unpack({...})) + end + function ultraschall.GetRenderCFG_Settings_MOVMac_Video(...) + ultraschall.LM(25) + return ultraschall.GetRenderCFG_Settings_MOVMac_Video(table.unpack({...})) + end + function ultraschall.GetRenderCFG_Settings_M4AMac(...) + ultraschall.LM(25) + return ultraschall.GetRenderCFG_Settings_M4AMac(table.unpack({...})) + end + function ultraschall.CreateRenderCFG_MP4MAC_Video(...) + ultraschall.LM(25) + return ultraschall.CreateRenderCFG_MP4MAC_Video(table.unpack({...})) + end + function ultraschall.CreateRenderCFG_M4AMAC(...) + ultraschall.LM(25) + return ultraschall.CreateRenderCFG_M4AMAC(table.unpack({...})) + end + function ultraschall.CreateRenderCFG_MOVMAC_Video(...) + ultraschall.LM(25) + return ultraschall.CreateRenderCFG_MOVMAC_Video(table.unpack({...})) + end + function ultraschall.GetRenderTable_Project(...) + ultraschall.LM(25) + return ultraschall.GetRenderTable_Project(table.unpack({...})) + end + function ultraschall.GetRenderTable_ProjectFile(...) + ultraschall.LM(25) + return ultraschall.GetRenderTable_ProjectFile(table.unpack({...})) + end + function ultraschall.GetOutputFormat_RenderCfg(...) + ultraschall.LM(25) + return ultraschall.GetOutputFormat_RenderCfg(table.unpack({...})) + end + function ultraschall.CreateRenderCFG_Opus(...) + ultraschall.LM(25) + return ultraschall.CreateRenderCFG_Opus(table.unpack({...})) + end + function ultraschall.CreateRenderCFG_OGG(...) + ultraschall.LM(25) + return ultraschall.CreateRenderCFG_OGG(table.unpack({...})) + end + function ultraschall.CreateRenderCFG_DDP(...) + ultraschall.LM(25) + return ultraschall.CreateRenderCFG_DDP(table.unpack({...})) + end + function ultraschall.CreateRenderCFG_FLAC(...) + ultraschall.LM(25) + return ultraschall.CreateRenderCFG_FLAC(table.unpack({...})) + end + function ultraschall.CreateRenderCFG_WAVPACK(...) + ultraschall.LM(25) + return ultraschall.CreateRenderCFG_WAVPACK(table.unpack({...})) + end + function ultraschall.IsValidRenderTable(...) + ultraschall.LM(25) + return ultraschall.IsValidRenderTable(table.unpack({...})) + end + function ultraschall.ApplyRenderTable_Project(...) + ultraschall.LM(25) + return ultraschall.ApplyRenderTable_Project(table.unpack({...})) + end + function ultraschall.ApplyRenderTable_ProjectFile(...) + ultraschall.LM(25) + return ultraschall.ApplyRenderTable_ProjectFile(table.unpack({...})) + end + function ultraschall.CreateNewRenderTable(...) + ultraschall.LM(25) + return ultraschall.CreateNewRenderTable(table.unpack({...})) + end + function ultraschall.GetRender_SaveCopyOfProject(...) + ultraschall.LM(25) + return ultraschall.GetRender_SaveCopyOfProject(table.unpack({...})) + end + function ultraschall.SetRender_SaveCopyOfProject(...) + ultraschall.LM(25) + return ultraschall.SetRender_SaveCopyOfProject(table.unpack({...})) + end + function ultraschall.SetRender_QueueDelay(...) + ultraschall.LM(25) + return ultraschall.SetRender_QueueDelay(table.unpack({...})) + end + function ultraschall.GetRender_QueueDelay(...) + ultraschall.LM(25) + return ultraschall.GetRender_QueueDelay(table.unpack({...})) + end + function ultraschall.SetRender_ProjectSampleRateForMix(...) + ultraschall.LM(25) + return ultraschall.SetRender_ProjectSampleRateForMix(table.unpack({...})) + end + function ultraschall.GetRender_ProjectSampleRateForMix(...) + ultraschall.LM(25) + return ultraschall.GetRender_ProjectSampleRateForMix(table.unpack({...})) + end + function ultraschall.SetRender_AutoIncrementFilename(...) + ultraschall.LM(25) + return ultraschall.SetRender_AutoIncrementFilename(table.unpack({...})) + end + function ultraschall.GetRender_AutoIncrementFilename(...) + ultraschall.LM(25) + return ultraschall.GetRender_AutoIncrementFilename(table.unpack({...})) + end + function ultraschall.GetRenderPreset_Names(...) + ultraschall.LM(25) + return ultraschall.GetRenderPreset_Names(table.unpack({...})) + end + function ultraschall.GetRenderPreset_RenderTable(...) + ultraschall.LM(25) + return ultraschall.GetRenderPreset_RenderTable(table.unpack({...})) + end + function ultraschall.DeleteRenderPreset_Bounds(...) + ultraschall.LM(25) + return ultraschall.DeleteRenderPreset_Bounds(table.unpack({...})) + end + function ultraschall.DeleteRenderPreset_FormatOptions(...) + ultraschall.LM(25) + return ultraschall.DeleteRenderPreset_FormatOptions(table.unpack({...})) + end + function ultraschall.AddRenderPreset(...) + ultraschall.LM(25) + return ultraschall.AddRenderPreset(table.unpack({...})) + end + function ultraschall.SetRenderPreset(...) + ultraschall.LM(25) + return ultraschall.SetRenderPreset(table.unpack({...})) + end + function ultraschall.RenderProject_RenderTable(...) + ultraschall.LM(25) + return ultraschall.RenderProject_RenderTable(table.unpack({...})) + end + function ultraschall.GetRenderQueuedProjects(...) + ultraschall.LM(25) + return ultraschall.GetRenderQueuedProjects(table.unpack({...})) + end + function ultraschall.AddProjectFileToRenderQueue(...) + ultraschall.LM(25) + return ultraschall.AddProjectFileToRenderQueue(table.unpack({...})) + end + function ultraschall.RenderProject_RenderQueue(...) + ultraschall.LM(25) + return ultraschall.RenderProject_RenderQueue(table.unpack({...})) + end + function ultraschall.RenderProject(...) + ultraschall.LM(25) + return ultraschall.RenderProject(table.unpack({...})) + end + function ultraschall.RenderProject_Regions(...) + ultraschall.LM(25) + return ultraschall.RenderProject_Regions(table.unpack({...})) + end + function ultraschall.AddSelectedItemsToRenderQueue(...) + ultraschall.LM(25) + return ultraschall.AddSelectedItemsToRenderQueue(table.unpack({...})) + end + function ultraschall.CreateRenderCFG_MP3MaxQuality(...) + ultraschall.LM(25) + return ultraschall.CreateRenderCFG_MP3MaxQuality(table.unpack({...})) + end + function ultraschall.CreateRenderCFG_MP3VBR(...) + ultraschall.LM(25) + return ultraschall.CreateRenderCFG_MP3VBR(table.unpack({...})) + end + function ultraschall.CreateRenderCFG_MP3ABR(...) + ultraschall.LM(25) + return ultraschall.CreateRenderCFG_MP3ABR(table.unpack({...})) + end + function ultraschall.CreateRenderCFG_MP3CBR(...) + ultraschall.LM(25) + return ultraschall.CreateRenderCFG_MP3CBR(table.unpack({...})) + end + function ultraschall.CreateRenderCFG_WAV(...) + ultraschall.LM(25) + return ultraschall.CreateRenderCFG_WAV(table.unpack({...})) + end + function ultraschall.GetLastUsedRenderPatterns(...) + ultraschall.LM(25) + return ultraschall.GetLastUsedRenderPatterns(table.unpack({...})) + end + function ultraschall.GetLastRenderPaths(...) + ultraschall.LM(25) + return ultraschall.GetLastRenderPaths(table.unpack({...})) + end + function ultraschall.IsReaperRendering(...) + ultraschall.LM(25) + return ultraschall.IsReaperRendering(table.unpack({...})) + end + function ultraschall.CreateRenderCFG_AIFF(...) + ultraschall.LM(25) + return ultraschall.CreateRenderCFG_AIFF(table.unpack({...})) + end + function ultraschall.CreateRenderCFG_AudioCD(...) + ultraschall.LM(25) + return ultraschall.CreateRenderCFG_AudioCD(table.unpack({...})) + end + function ultraschall.IsValidTrackString(...) + ultraschall.LM(26) + return ultraschall.IsValidTrackString(table.unpack({...})) + end + function ultraschall.IsValidTrackStateChunk(...) + ultraschall.LM(26) + return ultraschall.IsValidTrackStateChunk(table.unpack({...})) + end + function ultraschall.CreateTrackString(...) + ultraschall.LM(26) + return ultraschall.CreateTrackString(table.unpack({...})) + end + function ultraschall.CreateTrackString_SelectedTracks(...) + ultraschall.LM(26) + return ultraschall.CreateTrackString_SelectedTracks(table.unpack({...})) + end + function ultraschall.InsertTrack_TrackStateChunk(...) + ultraschall.LM(26) + return ultraschall.InsertTrack_TrackStateChunk(table.unpack({...})) + end + function ultraschall.RemoveDuplicateTracksInTrackstring(...) + ultraschall.LM(26) + return ultraschall.RemoveDuplicateTracksInTrackstring(table.unpack({...})) + end + function ultraschall.IsTrackObjectTracknumber(...) + ultraschall.LM(26) + return ultraschall.IsTrackObjectTracknumber(table.unpack({...})) + end + function ultraschall.InverseTrackstring(...) + ultraschall.LM(26) + return ultraschall.InverseTrackstring(table.unpack({...})) + end + function ultraschall.CountItemsInTrackStateChunk(...) + ultraschall.LM(26) + return ultraschall.CountItemsInTrackStateChunk(table.unpack({...})) + end + function ultraschall.GetItemStateChunkFromTrackStateChunk(...) + ultraschall.LM(26) + return ultraschall.GetItemStateChunkFromTrackStateChunk(table.unpack({...})) + end + function ultraschall.AddMediaItemStateChunk_To_TrackStateChunk(...) + ultraschall.LM(26) + return ultraschall.AddMediaItemStateChunk_To_TrackStateChunk(table.unpack({...})) + end + function ultraschall.RemoveMediaItem_TrackStateChunk(...) + ultraschall.LM(26) + return ultraschall.RemoveMediaItem_TrackStateChunk(table.unpack({...})) + end + function ultraschall.RemoveMediaItemByIGUID_TrackStateChunk(...) + ultraschall.LM(26) + return ultraschall.RemoveMediaItemByIGUID_TrackStateChunk(table.unpack({...})) + end + function ultraschall.RemoveMediaItemByGUID_TrackStateChunk(...) + ultraschall.LM(26) + return ultraschall.RemoveMediaItemByGUID_TrackStateChunk(table.unpack({...})) + end + function ultraschall.OnlyTracksInBothTrackstrings(...) + ultraschall.LM(26) + return ultraschall.OnlyTracksInBothTrackstrings(table.unpack({...})) + end + function ultraschall.OnlyTracksInOneTrackstring(...) + ultraschall.LM(26) + return ultraschall.OnlyTracksInOneTrackstring(table.unpack({...})) + end + function ultraschall.SetMediaItemStateChunk_in_TrackStateChunk(...) + ultraschall.LM(26) + return ultraschall.SetMediaItemStateChunk_in_TrackStateChunk(table.unpack({...})) + end + function ultraschall.GetAllMediaItemsFromTrackStateChunk(...) + ultraschall.LM(26) + return ultraschall.GetAllMediaItemsFromTrackStateChunk(table.unpack({...})) + end + function ultraschall.CreateTrackString_AllTracks(...) + ultraschall.LM(26) + return ultraschall.CreateTrackString_AllTracks(table.unpack({...})) + end + function ultraschall.GetTrackLength(...) + ultraschall.LM(26) + return ultraschall.GetTrackLength(table.unpack({...})) + end + function ultraschall.GetLengthOfAllMediaItems_Track(...) + ultraschall.LM(26) + return ultraschall.GetLengthOfAllMediaItems_Track(table.unpack({...})) + end + function ultraschall.ApplyActionToTrack(...) + ultraschall.LM(26) + return ultraschall.ApplyActionToTrack(table.unpack({...})) + end + function ultraschall.InsertTrackAtIndex(...) + ultraschall.LM(26) + return ultraschall.InsertTrackAtIndex(table.unpack({...})) + end + function ultraschall.MoveTracks(...) + ultraschall.LM(26) + return ultraschall.MoveTracks(table.unpack({...})) + end + function ultraschall.CreateTrackString_ArmedTracks(...) + ultraschall.LM(26) + return ultraschall.CreateTrackString_ArmedTracks(table.unpack({...})) + end + function ultraschall.CreateTrackString_UnarmedTracks(...) + ultraschall.LM(26) + return ultraschall.CreateTrackString_UnarmedTracks(table.unpack({...})) + end + function ultraschall.CreateTrackStringByGUID(...) + ultraschall.LM(26) + return ultraschall.CreateTrackStringByGUID(table.unpack({...})) + end + function ultraschall.CreateTrackStringByTracknames(...) + ultraschall.LM(26) + return ultraschall.CreateTrackStringByTracknames(table.unpack({...})) + end + function ultraschall.CreateTrackStringByMediaTracks(...) + ultraschall.LM(26) + return ultraschall.CreateTrackStringByMediaTracks(table.unpack({...})) + end + function ultraschall.GetTracknumberByGuid(...) + ultraschall.LM(26) + return ultraschall.GetTracknumberByGuid(table.unpack({...})) + end + function ultraschall.DeleteTracks_TrackString(...) + ultraschall.LM(26) + return ultraschall.DeleteTracks_TrackString(table.unpack({...})) + end + function ultraschall.AnyTrackMute(...) + ultraschall.LM(26) + return ultraschall.AnyTrackMute(table.unpack({...})) + end + function ultraschall.AnyTrackRecarmed(...) + ultraschall.LM(26) + return ultraschall.AnyTrackRecarmed(table.unpack({...})) + end + function ultraschall.AnyTrackPhased(...) + ultraschall.LM(26) + return ultraschall.AnyTrackPhased(table.unpack({...})) + end + function ultraschall.AnyTrackRecMonitored(...) + ultraschall.LM(26) + return ultraschall.AnyTrackRecMonitored(table.unpack({...})) + end + function ultraschall.AnyTrackHiddenTCP(...) + ultraschall.LM(26) + return ultraschall.AnyTrackHiddenTCP(table.unpack({...})) + end + function ultraschall.AnyTrackHiddenMCP(...) + ultraschall.LM(26) + return ultraschall.AnyTrackHiddenMCP(table.unpack({...})) + end + function ultraschall.AnyTrackFreeItemPositioningMode(...) + ultraschall.LM(26) + return ultraschall.AnyTrackFreeItemPositioningMode(table.unpack({...})) + end + function ultraschall.AnyTrackFXBypass(...) + ultraschall.LM(26) + return ultraschall.AnyTrackFXBypass(table.unpack({...})) + end + function ultraschall.GetTrackHWOut(...) + ultraschall.LM(27) + return ultraschall.GetTrackHWOut(table.unpack({...})) + end + function ultraschall.GetTrackAUXSendReceives(...) + ultraschall.LM(27) + return ultraschall.GetTrackAUXSendReceives(table.unpack({...})) + end + function ultraschall.CountTrackHWOuts(...) + ultraschall.LM(27) + return ultraschall.CountTrackHWOuts(table.unpack({...})) + end + function ultraschall.CountTrackAUXSendReceives(...) + ultraschall.LM(27) + return ultraschall.CountTrackAUXSendReceives(table.unpack({...})) + end + function ultraschall.AddTrackHWOut(...) + ultraschall.LM(27) + return ultraschall.AddTrackHWOut(table.unpack({...})) + end + function ultraschall.AddTrackAUXSendReceives(...) + ultraschall.LM(27) + return ultraschall.AddTrackAUXSendReceives(table.unpack({...})) + end + function ultraschall.DeleteTrackHWOut(...) + ultraschall.LM(27) + return ultraschall.DeleteTrackHWOut(table.unpack({...})) + end + function ultraschall.DeleteTrackAUXSendReceives(...) + ultraschall.LM(27) + return ultraschall.DeleteTrackAUXSendReceives(table.unpack({...})) + end + function ultraschall.SetTrackHWOut(...) + ultraschall.LM(27) + return ultraschall.SetTrackHWOut(table.unpack({...})) + end + function ultraschall.SetTrackAUXSendReceives(...) + ultraschall.LM(27) + return ultraschall.SetTrackAUXSendReceives(table.unpack({...})) + end + function ultraschall.ClearRoutingMatrix(...) + ultraschall.LM(27) + return ultraschall.ClearRoutingMatrix(table.unpack({...})) + end + function ultraschall.ClearRoutingMatrix(...) + ultraschall.LM(27) + return ultraschall.ClearRoutingMatrix(table.unpack({...})) + end + function ultraschall.GetAllHWOuts(...) + ultraschall.LM(27) + return ultraschall.GetAllHWOuts(table.unpack({...})) + end + function ultraschall.ApplyAllHWOuts(...) + ultraschall.LM(27) + return ultraschall.ApplyAllHWOuts(table.unpack({...})) + end + function ultraschall.GetAllAUXSendReceives(...) + ultraschall.LM(27) + return ultraschall.GetAllAUXSendReceives(table.unpack({...})) + end + function ultraschall.ApplyAllAUXSendReceives(...) + ultraschall.LM(27) + return ultraschall.ApplyAllAUXSendReceives(table.unpack({...})) + end + function ultraschall.GetAllMainSendStates(...) + ultraschall.LM(27) + return ultraschall.GetAllMainSendStates(table.unpack({...})) + end + function ultraschall.ApplyAllMainSendStates(...) + ultraschall.LM(27) + return ultraschall.ApplyAllMainSendStates(table.unpack({...})) + end + function ultraschall.AreHWOutsTablesEqual(...) + ultraschall.LM(27) + return ultraschall.AreHWOutsTablesEqual(table.unpack({...})) + end + function ultraschall.AreMainSendsTablesEqual(...) + ultraschall.LM(27) + return ultraschall.AreMainSendsTablesEqual(table.unpack({...})) + end + function ultraschall.AreAUXSendReceivesTablesEqual(...) + ultraschall.LM(27) + return ultraschall.AreAUXSendReceivesTablesEqual(table.unpack({...})) + end + function ultraschall.GetTrackStateChunk_Tracknumber(...) + ultraschall.LM(28) + return ultraschall.GetTrackStateChunk_Tracknumber(table.unpack({...})) + end + function ultraschall.GetTrackName(...) + ultraschall.LM(28) + return ultraschall.GetTrackName(table.unpack({...})) + end + function ultraschall.GetTrackPeakColorState(...) + ultraschall.LM(28) + return ultraschall.GetTrackPeakColorState(table.unpack({...})) + end + function ultraschall.GetTrackBeatState(...) + ultraschall.LM(28) + return ultraschall.GetTrackBeatState(table.unpack({...})) + end + function ultraschall.GetTrackAutoRecArmState(...) + ultraschall.LM(28) + return ultraschall.GetTrackAutoRecArmState(table.unpack({...})) + end + function ultraschall.GetTrackMuteSoloState(...) + ultraschall.LM(28) + return ultraschall.GetTrackMuteSoloState(table.unpack({...})) + end + function ultraschall.GetTrackIPhaseState(...) + ultraschall.LM(28) + return ultraschall.GetTrackIPhaseState(table.unpack({...})) + end + function ultraschall.GetTrackIsBusState(...) + ultraschall.LM(28) + return ultraschall.GetTrackIsBusState(table.unpack({...})) + end + function ultraschall.GetTrackBusCompState(...) + ultraschall.LM(28) + return ultraschall.GetTrackBusCompState(table.unpack({...})) + end + function ultraschall.GetTrackShowInMixState(...) + ultraschall.LM(28) + return ultraschall.GetTrackShowInMixState(table.unpack({...})) + end + function ultraschall.GetTrackFreeModeState(...) + ultraschall.LM(28) + return ultraschall.GetTrackFreeModeState(table.unpack({...})) + end + function ultraschall.GetTrackRecState(...) + ultraschall.LM(28) + return ultraschall.GetTrackRecState(table.unpack({...})) + end + function ultraschall.GetTrackVUState(...) + ultraschall.LM(28) + return ultraschall.GetTrackVUState(table.unpack({...})) + end + function ultraschall.GetTrackHeightState(...) + ultraschall.LM(28) + return ultraschall.GetTrackHeightState(table.unpack({...})) + end + function ultraschall.GetTrackINQState(...) + ultraschall.LM(28) + return ultraschall.GetTrackINQState(table.unpack({...})) + end + function ultraschall.GetTrackNChansState(...) + ultraschall.LM(28) + return ultraschall.GetTrackNChansState(table.unpack({...})) + end + function ultraschall.GetTrackBypFXState(...) + ultraschall.LM(28) + return ultraschall.GetTrackBypFXState(table.unpack({...})) + end + function ultraschall.GetTrackPerfState(...) + ultraschall.LM(28) + return ultraschall.GetTrackPerfState(table.unpack({...})) + end + function ultraschall.GetTrackMIDIOutState(...) + ultraschall.LM(28) + return ultraschall.GetTrackMIDIOutState(table.unpack({...})) + end + function ultraschall.GetTrackMainSendState(...) + ultraschall.LM(28) + return ultraschall.GetTrackMainSendState(table.unpack({...})) + end + function ultraschall.GetTrackGroupFlagsState(...) + ultraschall.LM(28) + return ultraschall.GetTrackGroupFlagsState(table.unpack({...})) + end + function ultraschall.GetTrackGroupFlags_HighState(...) + ultraschall.LM(28) + return ultraschall.GetTrackGroupFlags_HighState(table.unpack({...})) + end + function ultraschall.GetTrackLockState(...) + ultraschall.LM(28) + return ultraschall.GetTrackLockState(table.unpack({...})) + end + function ultraschall.GetTrackLayoutNames(...) + ultraschall.LM(28) + return ultraschall.GetTrackLayoutNames(table.unpack({...})) + end + function ultraschall.GetTrackAutomodeState(...) + ultraschall.LM(28) + return ultraschall.GetTrackAutomodeState(table.unpack({...})) + end + function ultraschall.GetTrackIcon_Filename(...) + ultraschall.LM(28) + return ultraschall.GetTrackIcon_Filename(table.unpack({...})) + end + function ultraschall.GetTrackRecCFG(...) + ultraschall.LM(28) + return ultraschall.GetTrackRecCFG(table.unpack({...})) + end + function ultraschall.GetTrackMidiInputChanMap(...) + ultraschall.LM(28) + return ultraschall.GetTrackMidiInputChanMap(table.unpack({...})) + end + function ultraschall.GetTrackMidiCTL(...) + ultraschall.LM(28) + return ultraschall.GetTrackMidiCTL(table.unpack({...})) + end + function ultraschall.GetTrackWidth(...) + ultraschall.LM(28) + return ultraschall.GetTrackWidth(table.unpack({...})) + end + function ultraschall.GetTrackPanMode(...) + ultraschall.LM(28) + return ultraschall.GetTrackPanMode(table.unpack({...})) + end + function ultraschall.GetTrackMidiColorMapFn(...) + ultraschall.LM(28) + return ultraschall.GetTrackMidiColorMapFn(table.unpack({...})) + end + function ultraschall.GetTrackMidiBankProgFn(...) + ultraschall.LM(28) + return ultraschall.GetTrackMidiBankProgFn(table.unpack({...})) + end + function ultraschall.GetTrackMidiTextStrFn(...) + ultraschall.LM(28) + return ultraschall.GetTrackMidiTextStrFn(table.unpack({...})) + end + function ultraschall.GetTrackID(...) + ultraschall.LM(28) + return ultraschall.GetTrackID(table.unpack({...})) + end + function ultraschall.GetTrackScore(...) + ultraschall.LM(28) + return ultraschall.GetTrackScore(table.unpack({...})) + end + function ultraschall.GetTrackVolPan(...) + ultraschall.LM(28) + return ultraschall.GetTrackVolPan(table.unpack({...})) + end + function ultraschall.SetTrackName(...) + ultraschall.LM(28) + return ultraschall.SetTrackName(table.unpack({...})) + end + function ultraschall.SetTrackPeakColorState(...) + ultraschall.LM(28) + return ultraschall.SetTrackPeakColorState(table.unpack({...})) + end + function ultraschall.SetTrackBeatState(...) + ultraschall.LM(28) + return ultraschall.SetTrackBeatState(table.unpack({...})) + end + function ultraschall.SetTrackAutoRecArmState(...) + ultraschall.LM(28) + return ultraschall.SetTrackAutoRecArmState(table.unpack({...})) + end + function ultraschall.SetTrackMuteSoloState(...) + ultraschall.LM(28) + return ultraschall.SetTrackMuteSoloState(table.unpack({...})) + end + function ultraschall.SetTrackIPhaseState(...) + ultraschall.LM(28) + return ultraschall.SetTrackIPhaseState(table.unpack({...})) + end + function ultraschall.SetTrackIsBusState(...) + ultraschall.LM(28) + return ultraschall.SetTrackIsBusState(table.unpack({...})) + end + function ultraschall.SetTrackBusCompState(...) + ultraschall.LM(28) + return ultraschall.SetTrackBusCompState(table.unpack({...})) + end + function ultraschall.SetTrackShowInMixState(...) + ultraschall.LM(28) + return ultraschall.SetTrackShowInMixState(table.unpack({...})) + end + function ultraschall.SetTrackFreeModeState(...) + ultraschall.LM(28) + return ultraschall.SetTrackFreeModeState(table.unpack({...})) + end + function ultraschall.SetTrackRecState(...) + ultraschall.LM(28) + return ultraschall.SetTrackRecState(table.unpack({...})) + end + function ultraschall.SetTrackVUState(...) + ultraschall.LM(28) + return ultraschall.SetTrackVUState(table.unpack({...})) + end + function ultraschall.SetTrackHeightState(...) + ultraschall.LM(28) + return ultraschall.SetTrackHeightState(table.unpack({...})) + end + function ultraschall.SetTrackINQState(...) + ultraschall.LM(28) + return ultraschall.SetTrackINQState(table.unpack({...})) + end + function ultraschall.SetTrackNChansState(...) + ultraschall.LM(28) + return ultraschall.SetTrackNChansState(table.unpack({...})) + end + function ultraschall.SetTrackBypFXState(...) + ultraschall.LM(28) + return ultraschall.SetTrackBypFXState(table.unpack({...})) + end + function ultraschall.SetTrackPerfState(...) + ultraschall.LM(28) + return ultraschall.SetTrackPerfState(table.unpack({...})) + end + function ultraschall.SetTrackMIDIOutState(...) + ultraschall.LM(28) + return ultraschall.SetTrackMIDIOutState(table.unpack({...})) + end + function ultraschall.SetTrackMainSendState(...) + ultraschall.LM(28) + return ultraschall.SetTrackMainSendState(table.unpack({...})) + end + function ultraschall.SetTrackLockState(...) + ultraschall.LM(28) + return ultraschall.SetTrackLockState(table.unpack({...})) + end + function ultraschall.SetTrackLayoutNames(...) + ultraschall.LM(28) + return ultraschall.SetTrackLayoutNames(table.unpack({...})) + end + function ultraschall.SetTrackAutomodeState(...) + ultraschall.LM(28) + return ultraschall.SetTrackAutomodeState(table.unpack({...})) + end + function ultraschall.SetTrackIcon_Filename(...) + ultraschall.LM(28) + return ultraschall.SetTrackIcon_Filename(table.unpack({...})) + end + function ultraschall.SetTrackMidiInputChanMap(...) + ultraschall.LM(28) + return ultraschall.SetTrackMidiInputChanMap(table.unpack({...})) + end + function ultraschall.SetTrackMidiCTL(...) + ultraschall.LM(28) + return ultraschall.SetTrackMidiCTL(table.unpack({...})) + end + function ultraschall.SetTrackID(...) + ultraschall.LM(28) + return ultraschall.SetTrackID(table.unpack({...})) + end + function ultraschall.SetTrackMidiColorMapFn(...) + ultraschall.LM(28) + return ultraschall.SetTrackMidiColorMapFn(table.unpack({...})) + end + function ultraschall.SetTrackMidiBankProgFn(...) + ultraschall.LM(28) + return ultraschall.SetTrackMidiBankProgFn(table.unpack({...})) + end + function ultraschall.SetTrackMidiTextStrFn(...) + ultraschall.LM(28) + return ultraschall.SetTrackMidiTextStrFn(table.unpack({...})) + end + function ultraschall.SetTrackPanMode(...) + ultraschall.LM(28) + return ultraschall.SetTrackPanMode(table.unpack({...})) + end + function ultraschall.SetTrackWidth(...) + ultraschall.LM(28) + return ultraschall.SetTrackWidth(table.unpack({...})) + end + function ultraschall.SetTrackScore(...) + ultraschall.LM(28) + return ultraschall.SetTrackScore(table.unpack({...})) + end + function ultraschall.SetTrackVolPan(...) + ultraschall.LM(28) + return ultraschall.SetTrackVolPan(table.unpack({...})) + end + function ultraschall.SetTrackRecCFG(...) + ultraschall.LM(28) + return ultraschall.SetTrackRecCFG(table.unpack({...})) + end + function ultraschall.GetAllLockedTracks(...) + ultraschall.LM(28) + return ultraschall.GetAllLockedTracks(table.unpack({...})) + end + function ultraschall.GetAllSelectedTracks(...) + ultraschall.LM(28) + return ultraschall.GetAllSelectedTracks(table.unpack({...})) + end + function ultraschall.GetTrackSelection_TrackStateChunk(...) + ultraschall.LM(28) + return ultraschall.GetTrackSelection_TrackStateChunk(table.unpack({...})) + end + function ultraschall.SetTrackSelection_TrackStateChunk(...) + ultraschall.LM(28) + return ultraschall.SetTrackSelection_TrackStateChunk(table.unpack({...})) + end + function ultraschall.SetAllTracksSelected(...) + ultraschall.LM(28) + return ultraschall.SetAllTracksSelected(table.unpack({...})) + end + function ultraschall.SetTracksSelected(...) + ultraschall.LM(28) + return ultraschall.SetTracksSelected(table.unpack({...})) + end + function ultraschall.SetTracksToLocked(...) + ultraschall.LM(28) + return ultraschall.SetTracksToLocked(table.unpack({...})) + end + function ultraschall.SetTracksToUnlocked(...) + ultraschall.LM(28) + return ultraschall.SetTracksToUnlocked(table.unpack({...})) + end + function ultraschall.SetTrackStateChunk_Tracknumber(...) + ultraschall.LM(28) + return ultraschall.SetTrackStateChunk_Tracknumber(table.unpack({...})) + end + function ultraschall.SetTrackGroupFlagsState(...) + ultraschall.LM(28) + return ultraschall.SetTrackGroupFlagsState(table.unpack({...})) + end + function ultraschall.SetTrackGroupFlags_HighState(...) + ultraschall.LM(28) + return ultraschall.SetTrackGroupFlags_HighState(table.unpack({...})) + end + function ultraschall.pause_follow_one_cycle(...) + ultraschall.LM(29) + return ultraschall.pause_follow_one_cycle(table.unpack({...})) + end + function ultraschall.IsTrackSoundboard(...) + ultraschall.LM(29) + return ultraschall.IsTrackSoundboard(table.unpack({...})) + end + function ultraschall.IsTrackStudioLink(...) + ultraschall.LM(29) + return ultraschall.IsTrackStudioLink(table.unpack({...})) + end + function ultraschall.IsTrackStudioLinkOnAir(...) + ultraschall.LM(29) + return ultraschall.IsTrackStudioLinkOnAir(table.unpack({...})) + end + function ultraschall.GetTypeOfTrack(...) + ultraschall.LM(29) + return ultraschall.GetTypeOfTrack(table.unpack({...})) + end + function ultraschall.GetAllAUXSendReceives2(...) + ultraschall.LM(29) + return ultraschall.GetAllAUXSendReceives2(table.unpack({...})) + end + function ultraschall.GetAllHWOuts2(...) + ultraschall.LM(29) + return ultraschall.GetAllHWOuts2(table.unpack({...})) + end + function ultraschall.GetAllMainSendStates2(...) + ultraschall.LM(29) + return ultraschall.GetAllMainSendStates2(table.unpack({...})) + end + function ultraschall.SetUSExternalState(...) + ultraschall.LM(29) + return ultraschall.SetUSExternalState(table.unpack({...})) + end + function ultraschall.GetUSExternalState(...) + ultraschall.LM(29) + return ultraschall.GetUSExternalState(table.unpack({...})) + end + function ultraschall.CountUSExternalState_sec(...) + ultraschall.LM(29) + return ultraschall.CountUSExternalState_sec(table.unpack({...})) + end + function ultraschall.CountUSExternalState_key(...) + ultraschall.LM(29) + return ultraschall.CountUSExternalState_key(table.unpack({...})) + end + function ultraschall.EnumerateUSExternalState_sec(...) + ultraschall.LM(29) + return ultraschall.EnumerateUSExternalState_sec(table.unpack({...})) + end + function ultraschall.EnumerateUSExternalState_key(...) + ultraschall.LM(29) + return ultraschall.EnumerateUSExternalState_key(table.unpack({...})) + end + function ultraschall.DeleteUSExternalState(...) + ultraschall.LM(29) + return ultraschall.DeleteUSExternalState(table.unpack({...})) + end + function ultraschall.SoundBoard_StopAllSounds(...) + ultraschall.LM(29) + return ultraschall.SoundBoard_StopAllSounds(table.unpack({...})) + end + function ultraschall.SoundBoard_TogglePlayPause(...) + ultraschall.LM(29) + return ultraschall.SoundBoard_TogglePlayPause(table.unpack({...})) + end + function ultraschall.SoundBoard_TogglePlayStop(...) + ultraschall.LM(29) + return ultraschall.SoundBoard_TogglePlayStop(table.unpack({...})) + end + function ultraschall.SoundBoard_Play(...) + ultraschall.LM(29) + return ultraschall.SoundBoard_Play(table.unpack({...})) + end + function ultraschall.SoundBoard_Stop(...) + ultraschall.LM(29) + return ultraschall.SoundBoard_Stop(table.unpack({...})) + end + function ultraschall.SoundBoard_TogglePlay_FadeOutStop(...) + ultraschall.LM(29) + return ultraschall.SoundBoard_TogglePlay_FadeOutStop(table.unpack({...})) + end + function ultraschall.SoundBoard_PlayList_CurrentIndex(...) + ultraschall.LM(29) + return ultraschall.SoundBoard_PlayList_CurrentIndex(table.unpack({...})) + end + function ultraschall.SoundBoard_PlayList_SetIndex(...) + ultraschall.LM(29) + return ultraschall.SoundBoard_PlayList_SetIndex(table.unpack({...})) + end + function ultraschall.SoundBoard_PlayList_Next(...) + ultraschall.LM(29) + return ultraschall.SoundBoard_PlayList_Next(table.unpack({...})) + end + function ultraschall.SoundBoard_PlayList_Previous(...) + ultraschall.LM(29) + return ultraschall.SoundBoard_PlayList_Previous(table.unpack({...})) + end +end +collectgarbage("collect") \ No newline at end of file diff --git a/UserPlugins/ultraschall_api/ultraschall_functions_engine.lua b/UserPlugins/ultraschall_api/ultraschall_functions_engine.lua index dd393616..0820e93f 100644 --- a/UserPlugins/ultraschall_api/ultraschall_functions_engine.lua +++ b/UserPlugins/ultraschall_api/ultraschall_functions_engine.lua @@ -94,6 +94,87 @@ ultraschall.Api_Path=script_path ultraschall.Api_Path=string.gsub(ultraschall.Api_Path,"\\","/") ultraschall.Api_InstallPath=reaper.GetResourcePath().."/UserPlugins/" +function ultraschall.CountProjectTabs() +--[[ + + CountProjectTabs + + Ultraschall=4.00 + Reaper=5.40 + Lua=5.3 + + integer number_of_projecttabs = ultraschall.CountProjectTabs() + + Counts the number of opened project tabs. + + + integer number_of_projecttabs - the number of projecttabs currently opened + + + Project-Management + Helper functions + + US_Api_Documentation + ultraschall_functions_engine.lua + helperfunctions, projectfiles, count, projecttab + +]] + local ProjCount=-1 + local Aretval="t" + local Aprojfn="" + while Aretval~=nil do + Aretval, Aprojfn = reaper.EnumProjects(ProjCount+1, "") + if Aretval~=nil then ProjCount=ProjCount+1 + else break + end + end + return ProjCount+1 +end + + +function ultraschall.GetProject_Tabs() +--[[ + + GetProject_Tabs + + Ultraschall=4.00 + Reaper=5.40 + Lua=5.3 + + integer number_of_projecttabs, array projecttablist = ultraschall.GetProject_Tabs() + + Returns the ReaProject-objects, as well as the filenames of all opened project-tabs. + + + integer number_of_projecttabs - the number of projecttabs currently opened + array projecttablist - an array, that holds all ReaProjects as well as the projectfilenames + - projecttablist[idx][1] = ReaProject + - projecttablist[idx][2] = projectfilename with path + + + Project-Management + Helper functions + + US_Api_Documentation + ultraschall_functions_engine.lua + helperfunctions, projectfiles, count, projecttab, project, filename + +]] + local ProjTabList={} + local CountProj=ultraschall.CountProjectTabs() + for i=1, CountProj do + ProjTabList[i]={} + ProjTabList[i][1], ProjTabList[i][2] = reaper.EnumProjects(i-1, "") + end + return CountProj, ProjTabList +end + +-- Project ChangeCheck Initialisation +ultraschall.tempCount, ultraschall.tempProjects = ultraschall.GetProject_Tabs() +if ultraschall.ProjectList==nil then + ultraschall.ProjectList=ultraschall.tempProjects + ultraschall.ProjectCount=ultraschall.tempCount +end function ultraschall.GetEnvelopeStateChunk(TrackEnvelope, str, isundo, usesws) return reaper.GetEnvelopeStateChunk(TrackEnvelope, "", false) @@ -128,7 +209,7 @@ function ultraschall.GetApiVersion() version,versionmanagement --]] - return 400.0278, "4.00","5th of November 2019", "Beta 2.78", "\"Tchaikovski - Overture 1812\"", ultraschall.hotfixdate + return 400.0279, "4.00","", "Beta 2.79", "\"Yes - Owner of a lonely heart\"", ultraschall.hotfixdate end --A,B,C,D,E,F,G,H,I=ultraschall.GetApiVersion() @@ -1361,15 +1442,422 @@ end +function print2(...) +--[[ + + print2 + + Ultraschall=4.00 + Reaper=5.965 + Lua=5.3 + + print2(parameter_1 to parameter_n) + + replaces Lua's own print-function. + + Converts all parametes given into string using tostring() and displays them as a MessageBox, separated by two spaces. + + + parameter_1 to parameter_n - the parameters, that you want to have printed out + + + API-Helper functions + + US_Api_Documentation + ultraschall_functions_engine.lua + helperfunctions, print, messagebox + +]] + local string="" + local count=1 + local temp={...} + while temp[count]~=nil or temp[count+1]~=nil do + string=string.." "..tostring(temp[count]) + count=count+1 + end + reaper.MB(string:sub(3,-1),"Print",0) +end +function print_alt(...) +--[[ + + print_alt + + Ultraschall=4.00 + Reaper=5.965 + Lua=5.3 + + print_alt(parameter_1 to parameter_n) + + replaces Lua's own print-function, that is quite useless in Reaper. + + like [print](#print), but separates the entries by a two spaced, not a newline + + + parameter_1 to parameter_n - the parameters, that you want to have printed out + + + API-Helper functions + + US_Api_Documentation + ultraschall_functions_engine.lua + helperfunctions, print, console + +]] + local string="" + local count=1 + local temp={...} + while temp[count]~=nil do + string=string.." "..tostring(temp[count]) + count=count+1 + end + if string:sub(-1,-1)=="\n" then string=string:sub(1,-2) end + reaper.ShowConsoleMsg(string:sub(3,-1).."\n","Print",0) +end +function print(...) +--[[ + + print + + Ultraschall=4.00 + Reaper=5.965 + Lua=5.3 + + print(parameter_1 to parameter_n) + + replaces Lua's own print-function, that is quite useless in Reaper. + + Converts all parametes given into string using tostring() and displays them in the ReaScript-console, separated by a newline and ending with a newline. + + + parameter_1 to parameter_n - the parameters, that you want to have printed out + + + API-Helper functions + + US_Api_Documentation + ultraschall_functions_engine.lua + helperfunctions, print, console + +]] + local string="" + local count=1 + local temp={...} + while temp[count]~=nil do + string=string.."\n"..tostring(temp[count]) + count=count+1 + end + if string:sub(-1,-1)=="\n" then string=string:sub(1,-2) end + reaper.ShowConsoleMsg(string:sub(2,-1).."\n","Print",0) +end +function toboolean(value) + -- converts a value to boolean, or returns nil, if not convertible +--[[ + + toboolean + + Ultraschall=4.00 + Reaper=5.40 + Lua=5.3 + + boolean retval = toboolean(string value) + + Converts the string "value" to a boolean, if applicable; means: if it contains either true or false in it. + If it contains both or other characters(except spaces or tabs), it will not convert. + Works basially like Lua's own tostring() or tonumber()-functions. + + Returns nil, if conversion isn't possible. + + Note: Unlike other ultraschall-api-functions, toboolean() has no ultraschall. in it's functionname! + + + string value - the value to be converted to a boolean. True and false can be upper-, lower and camelcase. + + + boolean retval - true or false, depending on the input variable value + + + API-Helper functions + + US_Api_Documentation + ultraschall_functions_engine.lua + helper functions, string, convert, boolean + +--]] + if type(value)=="boolean" then return value end + if value==nil then ultraschall.AddErrorMessage("toboolean","value", "must contain either true or false, nothing else. Spaces and tabs are allowed.", -1) return end + local value=value:lower() + local truth=value:match("^\t*%s*()true\t*%s*$") + local falseness=value:match("^\t*%s*()false\t*%s*$") + + if tonumber(truth)==nil and tonumber(falseness)~=nil then + return false + elseif tonumber(truth)~=nil and tonumber(falseness)==nil then + return true + end +end +function print3(...) +--[[ + + print3 + + Ultraschall=4.00 + Reaper=5.965 + SWS=2.9.7 + Lua=5.3 + + print(parameter_1 to parameter_n) + + like [print](#print), but puts the parameters into the clipboard. + + Converts all parametes given into string using tostring() and puts them into the clipboard, with each parameter separated by two spaces. + Unlike print and print2, this does NOT end with a newline! + + + parameter_1 to parameter_n - the parameters, that you want to have put into the clipboard + + + API-Helper functions + + US_Api_Documentation + ultraschall_functions_engine.lua + helperfunctions, print, clipboard + +]] + local Table={...} + local Stringer="" + local count=1 + while Table[count]~=nil do + Stringer=Stringer..tostring(Table[count]).." " + count=count+1 + end + reaper.CF_SetClipboard(Stringer:sub(1,-2)) +end + +--print3() + +function print_update(...) +--[[ + + print_update + + Ultraschall=4.00 + Reaper=5.965 + Lua=5.3 + + print_update(parameter_1 to parameter_n) + + replaces Lua's own print-function, that is quite useless in Reaper. + + Converts all parametes given into string using tostring() and displays them in the ReaScript-console, separated by two spaces, ending with a newline. + + This is like [print](#print), but clears console everytime before displaying the values. Good for status-display, that shall not scroll. + + + parameter_1 to parameter_n - the parameters, that you want to have printed out + + + API-Helper functions + + US_Api_Documentation + ultraschall_functions_engine.lua + helperfunctions, print, clear, update, console + +]] + + reaper.ClearConsole() + print(...) +end + +function ultraschall.CheckActionCommandIDFormat(aid) +--[[ + + CheckActionCommandIDFormat + + Ultraschall=4.00 + Reaper=5.40 + Lua=5.3 + + boolean retval = ultraschall.CheckActionCommandIDFormat(action_command_id) + + Checks, whether an action command id is a valid commandid(which is a number) or a valid _action_command_id (which is a string with an _underscore in the beginning). + + Does not check, whether this action_command_id is a useable one, only if it's "syntax" is correct! + + returns falsein case of an error + + + boolean retval - true, valid action_command_id; false, not a valid action_command_id + + + actioncommand_id - the ActionCommandID you want to check; either a number or an action_command_id with an underscore at the beginning + + + API-Helper functions + + US_Api_Documentation + ultraschall_functions_engine.lua + command, commandid, actioncommandid, check, validity + +--]] + -- check parameter + if math.type(aid)~="integer" and type(aid)~="string" then ultraschall.AddErrorMessage("CheckActionCommandIDFormat", "action_command_id", "must be an integer or a string", -1) return false end + + if type(aid)=="number" and tonumber(aid)==math.floor(tonumber(aid)) and tonumber(aid)<=65535 and tonumber(aid)>=0 then return true -- is it a valid number? + elseif type(aid)=="string" and aid:sub(1,1)=="_" and aid:len()>1 then return true -- is it a valid string, formatted right= + else return false -- if neither, return false + end +end + + +function ultraschall.RunCommand(actioncommand_id) +--[[ + + RunCommand + + Ultraschall=4.00 + Reaper=5.40 + Lua=5.3 + + integer retval = ultraschall.RunCommand(string actioncommand_id) + + runs a command by its ActionCommandID(instead of the CommandID-number) + + returns -1 in case of error + + + integer retval - -1, in case of error + + + string actioncommand_id - the ActionCommandID of the Command/Script/Action you want to run; must be either a number or the ActionCommandID beginning with an underscore _ + + + API-Helper functions + + US_Api_Documentation + ultraschall_functions_engine.lua + command,commandid,actioncommandid,action,run + +--]] +--reaper.MB("Hui","",0) + -- check parameter + if ultraschall.CheckActionCommandIDFormat(actioncommand_id)==false then ultraschall.AddErrorMessage("RunCommand", "actioncommand_id", "must be a command-number or start with an _underscore", -1) return -1 end +--reaper.MB("Hui2","",0) + -- run the command + local command_id = reaper.NamedCommandLookup(actioncommand_id) + --reaper.MB("Hui3","",0) + reaper.Main_OnCommand(command_id,0) + --reaper.MB("Hui4","",0) +end + +runcommand=ultraschall.RunCommand + + + +function ultraschall.ConvertStringToBits(message) +--[[ + + ConvertStringToBits + + Ultraschall=4.00 + Reaper=5.965 + Lua=5.3 + + integer number_of_bits, array bitarray = ultraschall.ConvertStringToBits(string message) + + converts a string into its bit-representation and returns that as a handy table + + returns -1 in case of an error + + + integer number_of_bits - the number of bits in the string, -1, in case of an error + array bitarray - the individual bits as a handy table + + + string message - the string, which you want to convert into its bit representation + + + API-Helper functions + Data Manipulation + + US_Api_Documentation + ultraschall_functions_engine.lua + helper functions, convert, string, to bits + +--]] + if type(message)~="string" then ultraschall.AddErrorMessage("ConvertStringToBits", "message", "must be a string", -1) return -1 end + local Bitarray={} + local Bitarray_counter=0 + for i=1, message:len() do + local Q=string.byte(message:sub(i,i)) + for i=1, 8 do + Bitarray_counter=Bitarray_counter+1 + Bitarray[Bitarray_counter]=Q&1 + Q=Q>>1 + end + end + return Bitarray_counter, Bitarray +end + +function ultraschall.ConvertBitsToString(bitarray) +--[[ + + ConvertBitsToString + + Ultraschall=4.00 + Reaper=5.965 + Lua=5.3 + + string message = ultraschall.ConvertBitsToString(array bitarray) + + converts a table of bit-representation into a string + + Every entry in the table must be either 0 or 1. If there are too few bits to fill up a byte, the missing bits will be seen as trailing 0-bits. + + returns nil in case of an error + + + string message - the converted bits as string-representation + + + array bitarray - the individual bits in a table, which will be converted into a string-representation + - each entry in the table must be either 0 or 1; missing bits at the end(usually nil) will be seen as 0 + + + API-Helper functions + Data Manipulation + + US_Api_Documentation + ultraschall_functions_engine.lua + helper functions, convert, to string, bits + +--]] + local bitcounter=0 + local Result="" + local byte + for i=1, #bitarray, 8 do + byte=0 + if bitarray[bitcounter+1]==1 then byte=byte+1 elseif bitarray[bitcounter+1]==0 then elseif bitarray[bitcounter+1]==nil then else ultraschall.AddErrorMessage("ConvertBitsToString", "bitarray entry "..bitcounter+1, "must be 1, 0 or nil(for padding zeros)", -2) return end + if bitarray[bitcounter+2]==1 then byte=byte+2 elseif bitarray[bitcounter+2]==0 then elseif bitarray[bitcounter+2]==nil then else ultraschall.AddErrorMessage("ConvertBitsToString", "bitarray entry "..bitcounter+2, "must be 1, 0 or nil(for padding zeros)", -2) return end + if bitarray[bitcounter+3]==1 then byte=byte+4 elseif bitarray[bitcounter+3]==0 then elseif bitarray[bitcounter+3]==nil then else ultraschall.AddErrorMessage("ConvertBitsToString", "bitarray entry "..bitcounter+3, "must be 1, 0 or nil(for padding zeros)", -2) return end + if bitarray[bitcounter+4]==1 then byte=byte+8 elseif bitarray[bitcounter+4]==0 then elseif bitarray[bitcounter+4]==nil then else ultraschall.AddErrorMessage("ConvertBitsToString", "bitarray entry "..bitcounter+4, "must be 1, 0 or nil(for padding zeros)", -2) return end + if bitarray[bitcounter+5]==1 then byte=byte+16 elseif bitarray[bitcounter+5]==0 then elseif bitarray[bitcounter+5]==nil then else ultraschall.AddErrorMessage("ConvertBitsToString", "bitarray entry "..bitcounter+5, "must be 1, 0 or nil(for padding zeros)", -2) return end + if bitarray[bitcounter+6]==1 then byte=byte+32 elseif bitarray[bitcounter+6]==0 then elseif bitarray[bitcounter+6]==nil then else ultraschall.AddErrorMessage("ConvertBitsToString", "bitarray entry "..bitcounter+6, "must be 1, 0 or nil(for padding zeros)", -2) return end + if bitarray[bitcounter+7]==1 then byte=byte+64 elseif bitarray[bitcounter+7]==0 then elseif bitarray[bitcounter+7]==nil then else ultraschall.AddErrorMessage("ConvertBitsToString", "bitarray entry "..bitcounter+7, "must be 1, 0 or nil(for padding zeros)", -2) return end + if bitarray[bitcounter+8]==1 then byte=byte+128 elseif bitarray[bitcounter+8]==0 then elseif bitarray[bitcounter+8]==nil then else ultraschall.AddErrorMessage("ConvertBitsToString", "bitarray entry "..bitcounter+8, "must be 1, 0 or nil(for padding zeros)", -2) return end + bitcounter=bitcounter+8 + Result=Result..string.char(byte) + end + return Result +end @@ -1386,6 +1874,7 @@ end +--[[ dofile(script_path .. "Modules/ultraschall_functions_AudioManagement_Module.lua") dofile(script_path .. "Modules/ultraschall_functions_AutomationItems_Module.lua") dofile(script_path .. "Modules/ultraschall_functions_Clipboard_Module.lua") @@ -1415,5 +1904,9 @@ dofile(script_path .. "Modules/ultraschall_functions_TrackManagement_Module.lua" dofile(script_path .. "Modules/ultraschall_functions_TrackManagement_Routing_Module.lua") dofile(script_path .. "Modules/ultraschall_functions_TrackManagement_TrackStates_Module.lua") dofile(script_path .. "Modules/ultraschall_functions_Ultraschall_Module.lua") +--]] + + +dofile(script_path.."ultraschall_ModulatorLoad3000.lua") ultraschall.ShowLastErrorMessage() diff --git a/UserPlugins/ultraschall_api/ultraschall_functions_engine_beta.lua b/UserPlugins/ultraschall_api/ultraschall_functions_engine_beta.lua index 4c55119a..06ca77a8 100644 --- a/UserPlugins/ultraschall_api/ultraschall_functions_engine_beta.lua +++ b/UserPlugins/ultraschall_api/ultraschall_functions_engine_beta.lua @@ -1368,6 +1368,81 @@ end --ultraschall.TransientDetection_Set(0.1, -9, false) + +function ultraschall.ReadSubtitles_VTT(filename_with_path) +--[[ + + ReadSubtitles_VTT + + Ultraschall=4.00 + Reaper=5.965 + Lua=5.3 + + string Kind, string Language, integer Captions_Counter, table Captions = ultraschall.ReadSubtitles_VTT(string filename_with_path) + + parses a webvtt-subtitle-file and returns its contents as table + + returns nil in case of an error + + + string Kind - the type of the webvtt-file, like: captions + string Language - the language of the webvtt-file + integer Captions_Counter - the number of captions in the file + table Captions - the Captions as a table of the format: + - Captions[index]["start"]= the starttime of this caption in seconds + - Captions[index]["end"]= the endtime of this caption in seconds + - Captions[index]["caption"]= the caption itself + + + string filename_with_path - the filename with path of the webvtt-file + + + File Management + Read Files + + US_Api_Documentation + ultraschall_functions_engine.lua + filemanagement, read, file, webvtt, subtitle, import + +--]] + if type(filename_with_path)~="string" then ultraschall.AddErrorMessage("ReadSubtitles_VTT", "filename_with_path", "must be a string", -1) return end + if reaper.file_exists(filename_with_path)=="false" then ultraschall.AddErrorMessage("ReadSubtitles_VTT", "filename_with_path", "must be a string", -2) return end + local A, Type, Offset, Kind, Language, Subs, Subs_Counter, i + Subs={} + Subs_Counter=0 + A=ultraschall.ReadFullFile(filename_with_path) + Type, Offset=A:match("(.-)\n()") + if Type~="WEBVTT" then ultraschall.AddErrorMessage("ReadSubtitles_VTT", "filename_with_path", "not a webvtt-file", -3) return end + A=A:sub(Offset,-1) + Kind, Offset=A:match(".-: (.-)\n()") + A=A:sub(Offset,-1) + Language, Offset=A:match(".-: (.-)\n()") + A=A:sub(Offset,-1) + + i=0 + for k in string.gmatch(A, "(.-)\n") do + i=i+1 + if i==2 then + Subs_Counter=Subs_Counter+1 + Subs[Subs_Counter]={} + Subs[Subs_Counter]["start"], Subs[Subs_Counter]["end"] = k:match("(.-) --> (.*)") + if Subs[Subs_Counter]["start"]==nil or Subs[Subs_Counter]["end"]==nil then ultraschall.AddErrorMessage("ReadSubtitles_VTT", "filename_with_path", "can't parse the file; probably invalid", -3) return end + Subs[Subs_Counter]["start"]=reaper.parse_timestr(Subs[Subs_Counter]["start"]) + Subs[Subs_Counter]["end"]=reaper.parse_timestr(Subs[Subs_Counter]["end"]) + elseif i==3 then + Subs[Subs_Counter]["caption"]=k + if Subs[Subs_Counter]["caption"]==nil then ultraschall.AddErrorMessage("ReadSubtitles_VTT", "filename_with_path", "can't parse the file; probably invalid", -4) return end + end + if i==3 then i=0 end + end + + + return Kind, Language, Subs_Counter, Subs +end + + +--A,B,C,D,E=ultraschall.ReadSubtitles_VTT("c:\\test.vtt") + -- These seem to work: diff --git a/UserPlugins/ultraschall_api/ultraschall_gfx_engine.lua b/UserPlugins/ultraschall_api/ultraschall_gfx_engine.lua index 908c85cb..7e02915f 100644 --- a/UserPlugins/ultraschall_api/ultraschall_gfx_engine.lua +++ b/UserPlugins/ultraschall_api/ultraschall_gfx_engine.lua @@ -871,3 +871,71 @@ end --A=ultraschall.GFX_SetFont(1, "Arial", 20, "usijv") --gfx.drawstr("huioh") + +function ultraschall.GFX_BlitImageCentered(image, x, y, scale, rotate, ...) +--[[ + + GFX_BlitImageCentered + + Ultraschall=4.00 + Reaper=5.99 + Lua=5.3 + + boolean retval = ultraschall.GFX_BlitImageCentered(integer image, integer x, integer y, number scale, number rotate, optional number srcx, optional number srcy, optional number srcw, optional number srch, optional integer destx, optional integer desty, optional integer destw, optional integer desth, optional integer rotxoffs, optional integer rotyoffs) + + Blits a centered image at the position given by parameter x and y. That means, the center of the image will be at x and y. + + All the rest basically works like the regular gfx.blit-function. + + returns false in case of an error + + + boolean retval - true, blitting was successful; false, blitting was unsuccessful + + + integer source - the source-image/framebuffer to blit; -1 to 1023; -1 for the currently displayed framebuffer. + integer x - the x-position of the center of the image + integer y - the y-position of the center of the image + number scale - the scale-factor; 1, for normal size; smaller or bigger than 1 make image smaller or bigger + - has no effect, when destx, desty, destw, desth are given + number rotation - the rotation-factor; 0 to 6.28; 3.14 for 180 degrees. + optional number srcx - the x-coordinate-offset in the source-image + optional number srcy - the y-coordinate-offset in the source-image + optional number srcw - the width-offset in the source-image + optional number srch - the height-offset in the source-image + optional integer destx - the x-coordinate of the blitting destination + optional integer desty - the y-coordinate of the blitting destination + optional integer destw - the width of the blitting destination; may lead to stretched images + optional integer desth - the height of the blitting destination; may lead to stretched images + optional number rotxoffs - influences rotation + optional number rotyoffs - influences rotation + + + Blitting + + US_Api_Documentation + ultraschall_gfx_engine.lua + gfx, blit, centered, rotate, scale + +--]] + if math.type(image)~="integer" then ultraschall.AddErrorMessage("GFX_BlitImageCentered", "image", "must be an integer", -1) return false end + if image<-1 or image>1023 then ultraschall.AddErrorMessage("GFX_BlitImageCentered", "image", "must be between -1 and 1023", -2) return false end + if math.type(x)~="integer" then ultraschall.AddErrorMessage("GFX_BlitImageCentered", "x", "must be an integer", -3) return false end + if math.type(y)~="integer" then ultraschall.AddErrorMessage("GFX_BlitImageCentered", "y", "must be an integer", -4) return false end + if type(scale)~="number" then ultraschall.AddErrorMessage("GFX_BlitImageCentered", "scale", "must be a number between 0 and higher", -5) return false end + if type(rotate)~="number" then ultraschall.AddErrorMessage("GFX_BlitImageCentered", "rotate", "must be a number", -6) return false end + local params={...} + for i=1, #params do + if type(params[i])~="number" then ultraschall.AddErrorMessage("GFX_BlitImageCentered", "parameter "..i+5, "must be a number or an integer", -7) return false end + end + local oldx=gfx.x + local oldy=gfx.y + local X,Y=gfx.getimgdim(image) + gfx.x=x-((X*scale)/2) + gfx.y=y-((Y*scale)/2) + gfx.blit(image, scale, rotate, table.unpack(params)) + gfx.x=oldx + gfx.y=oldy + return true +end + diff --git a/reaper-kb.ini b/reaper-kb.ini index 17629318..08a1874d 100644 --- a/reaper-kb.ini +++ b/reaper-kb.ini @@ -158,6 +158,7 @@ SCR 4 0 Ultraschall_Render_Check "Custom: Ultraschall: Render Check" ultraschall SCR 4 0 Ultraschall_Messaging "Custom: Ultraschall: Messaging" ultraschall_messaging.lua SCR 4 0 Ultraschall_Moonlander "Custom: moonlander.lua" moonlander.lua SCR 4 0 RS1cbf05b0c4f875518496f34a5ce45adefe05cb67 "Custom: Default_6.0_theme_adjuster.lua" Cockos/Default_6.0_theme_adjuster.lua +ACT 2 0 "Ultraschall_Split_and_Delete" "Custom: ULTRASCHALL: Split and Delete" 40747 40006 KEY 1 84 0 0 KEY 17 32808 0 0 KEY 17 32806 0 0 @@ -169,8 +170,8 @@ KEY 1 86 0 0 KEY 25 83 0 0 KEY 25 32806 0 0 KEY 0 96 0 0 -KEY 25 32808 0 0 KEY 9 32814 0 0 +KEY 25 32808 0 0 KEY 255 218 0 0 KEY 1 87 0 0 KEY 8 91 0 0 @@ -187,14 +188,14 @@ KEY 176 2 34 0 KEY 176 3 42 0 KEY 176 4 50 0 KEY 255 216 988 0 -KEY 255 248 989 0 +KEY 255 250 989 0 KEY 176 432 990 0 KEY 255 251 990 0 -KEY 176 1080 992 0 KEY 176 182 992 0 +KEY 176 1080 992 0 KEY 176 433 996 0 -KEY 176 1204 998 0 KEY 255 8650 998 0 +KEY 176 1204 998 0 KEY 17 65 1155 0 KEY 1 123 40009 0 KEY 13 83 40022 0 @@ -205,10 +206,10 @@ KEY 5 220 40113 0 KEY 5 84 40142 0 KEY 0 63 40151 0 KEY 8 46 40175 0 -KEY 144 16274 40201 0 KEY 17 8 40201 0 -KEY 16 45 40295 0 +KEY 144 16274 40201 0 KEY 17 34 40295 0 +KEY 16 45 40295 0 KEY 1 57 40296 0 KEY 1 48 40297 0 KEY 9 8 40307 0 @@ -222,10 +223,10 @@ KEY 1 1048 40434 0 KEY 0 93 40434 0 KEY 5 121 40477 0 KEY 16 44 40605 0 -KEY 1 73 40625 0 KEY 144 16268 40625 0 -KEY 1 79 40626 0 +KEY 1 73 40625 0 KEY 144 16269 40626 0 +KEY 1 79 40626 0 KEY 17 73 40630 0 KEY 17 79 40631 0 KEY 17 70 40638 0 @@ -299,8 +300,8 @@ KEY 1 113 _Ultraschall_Snapshot_2 0 KEY 1 112 _Ultraschall_Snapshot_1 0 KEY 1 116 _Ultraschall_Snapshot_Editor 0 KEY 17 72 _Ultraschall_Toggle_Peak_Gain_Normal_Max 0 -KEY 9 1034 _Ultraschall_Toggle_Follow 0 KEY 9 70 _Ultraschall_Toggle_Follow 0 +KEY 9 1034 _Ultraschall_Toggle_Follow 0 KEY 1 66 _Ultraschall_Set_Next_Planned_Marker 0 KEY 9 89 _Ultraschall_Mute_Selected_Items_In_Time_Range 0 KEY 13 89 _Ultraschall_Unmute_Selected_Items_In_Time_Range 0 @@ -319,7 +320,7 @@ KEY 9 77 _Ultraschall_Set_Marker_Play 0 KEY 13 77 _Ultraschall_Set_Namedmarker_Play 0 KEY 9 69 _Ultraschall_Set_Edit_Play 0 KEY 255 200 _Ultraschall_Zoomlimiter 0 -KEY 255 250 _Ultraschall_Zoomlimiter 0 +KEY 255 248 _Ultraschall_Zoomlimiter 0 KEY 1 1034 _Ultraschall_Go_To_Cursor 0 KEY 17 74 _Ultraschall_Toggle_Playrate 0 KEY 24 45 _Ultraschall_Zoom_Out_Centered_Cursorposition 0 diff --git a/reaper-menu.ini b/reaper-menu.ini index 8bd68bb1..a6b56e67 100644 --- a/reaper-menu.ini +++ b/reaper-menu.ini @@ -521,285 +521,289 @@ title=&View item_0=-4 Ultraschall item_1=_Ultraschall_ColorPicker Colorpicker item_2=40707 Reset to Track Color -item_3=_XENAKIOS_RENMTAKE Rename Take -item_4=-1 -item_5=-2 Item settings -item_6=40175 Mute -item_7=40636 Loop item source -item_8=40437 Play all takes -item_9=40687 Lock item -item_10=40850 Item notes... -item_11=-1 -item_12=40181 Invert phase -item_13=40547 Loop section of item source -item_14=40566 Preserve pitch when changing playrate -item_15=41051 Reverse active take -item_16=-1 -item_17=40176 Take channel mode: Normal -item_18=40177 Take channel mode: Reverse stereo -item_19=40178 Take channel mode: Mono (downmix) -item_20=40179 Take channel mode: Mono (left) -item_21=40180 Take channel mode: Mono (right) -item_22=-2 Take channel mode: Mono (3-64) -item_23=41388 Mono 3 -item_24=41389 Mono 4 -item_25=41390 Mono 5 -item_26=41391 Mono 6 -item_27=41392 Mono 7 -item_28=41393 Mono 8 -item_29=41394 Mono 9 -item_30=41395 Mono 10 -item_31=41396 Mono 11 -item_32=41397 Mono 12 -item_33=41398 Mono 13 -item_34=41399 Mono 14 -item_35=41400 Mono 15 -item_36=41401 Mono 16 -item_37=41402 Mono 17 -item_38=41403 Mono 18 -item_39=41404 Mono 19 -item_40=41405 Mono 20 -item_41=41406 Mono 21 -item_42=41407 Mono 22 -item_43=41408 Mono 23 -item_44=41409 Mono 24 -item_45=41410 Mono 25 -item_46=41411 Mono 26 -item_47=41412 Mono 27 -item_48=41413 Mono 28 -item_49=41414 Mono 29 -item_50=41415 Mono 30 -item_51=41416 Mono 31 -item_52=41417 Mono 32 -item_53=41418 Mono 33 -item_54=41419 Mono 34 -item_55=41420 Mono 35 -item_56=41421 Mono 36 -item_57=41422 Mono 37 -item_58=41423 Mono 38 -item_59=41424 Mono 39 -item_60=41425 Mono 40 -item_61=41426 Mono 41 -item_62=41427 Mono 42 -item_63=41428 Mono 43 -item_64=41429 Mono 44 -item_65=41430 Mono 45 -item_66=41431 Mono 46 -item_67=41432 Mono 47 -item_68=41433 Mono 48 -item_69=41434 Mono 49 -item_70=41435 Mono 50 -item_71=41436 Mono 51 -item_72=41437 Mono 52 -item_73=41438 Mono 53 -item_74=41439 Mono 54 -item_75=41440 Mono 55 -item_76=41441 Mono 56 -item_77=41442 Mono 57 -item_78=41443 Mono 58 -item_79=41444 Mono 59 -item_80=41445 Mono 60 -item_81=41446 Mono 61 -item_82=41447 Mono 62 -item_83=41448 Mono 63 -item_84=41449 Mono 64 -item_85=-3 -item_86=-2 Take channel mode: Stereo (1-64) -item_87=41450 Stereo 1/2 -item_88=41451 Stereo 2/3 -item_89=41452 Stereo 3/4 -item_90=41453 Stereo 4/5 -item_91=41454 Stereo 5/6 -item_92=41455 Stereo 6/7 -item_93=41456 Stereo 7/8 -item_94=41457 Stereo 8/9 -item_95=41458 Stereo 9/10 -item_96=41459 Stereo 10/11 -item_97=41460 Stereo 11/12 -item_98=41461 Stereo 12/13 -item_99=41462 Stereo 13/14 -item_100=41463 Stereo 14/15 -item_101=41464 Stereo 15/16 -item_102=41465 Stereo 16/17 -item_103=41466 Stereo 17/18 -item_104=41467 Stereo 18/19 -item_105=41468 Stereo 19/20 -item_106=41469 Stereo 20/21 -item_107=41470 Stereo 21/22 -item_108=41471 Stereo 22/23 -item_109=41472 Stereo 23/24 -item_110=41473 Stereo 24/25 -item_111=41474 Stereo 25/26 -item_112=41475 Stereo 26/27 -item_113=41476 Stereo 27/28 -item_114=41477 Stereo 28/29 -item_115=41478 Stereo 29/30 -item_116=41479 Stereo 30/31 -item_117=41480 Stereo 31/32 -item_118=41481 Stereo 32/33 -item_119=41482 Stereo 33/34 -item_120=41483 Stereo 34/35 -item_121=41484 Stereo 35/36 -item_122=41485 Stereo 36/37 -item_123=41486 Stereo 37/38 -item_124=41487 Stereo 38/39 -item_125=41488 Stereo 39/40 -item_126=41489 Stereo 40/41 -item_127=41490 Stereo 41/42 -item_128=41491 Stereo 42/43 -item_129=41492 Stereo 43/44 -item_130=41493 Stereo 44/45 -item_131=41494 Stereo 45/46 -item_132=41495 Stereo 46/47 -item_133=41496 Stereo 47/48 -item_134=41497 Stereo 48/49 -item_135=41498 Stereo 49/50 -item_136=41499 Stereo 50/51 -item_137=41500 Stereo 51/52 -item_138=41501 Stereo 52/53 -item_139=41502 Stereo 53/54 -item_140=41503 Stereo 54/55 -item_141=41504 Stereo 55/56 -item_142=41505 Stereo 56/57 -item_143=41506 Stereo 57/58 -item_144=41507 Stereo 58/59 -item_145=41508 Stereo 59/60 -item_146=41509 Stereo 60/61 -item_147=41510 Stereo 61/62 -item_148=41511 Stereo 62/63 -item_149=41512 Stereo 63/64 -item_150=-3 -item_151=-1 -item_152=40380 Set item timebase to project/track default -item_153=40433 Set item timebase to time +item_3=_S&M_OPEN_ITEM_PATH Open item path in explorer/finder +item_4=_XENAKIOS_RENMTAKE Rename Take +item_5=-1 +item_6=40936 Toggle normalize items +item_7=_BR_NORMALIZE_LOUDNESS_ITEMS23 Normalize loudness of selected items to -23 LUFS +item_8=-1 +item_9=-2 Item settings +item_10=40175 Mute +item_11=40636 Loop item source +item_12=40437 Play all takes +item_13=40687 Lock item +item_14=40850 Item notes... +item_15=-1 +item_16=40181 Invert phase +item_17=40547 Loop section of item source +item_18=40566 Preserve pitch when changing playrate +item_19=41051 Reverse active take +item_20=-1 +item_21=40176 Take channel mode: Normal +item_22=40177 Take channel mode: Reverse stereo +item_23=40178 Take channel mode: Mono (downmix) +item_24=40179 Take channel mode: Mono (left) +item_25=40180 Take channel mode: Mono (right) +item_26=-2 Take channel mode: Mono (3-64) +item_27=41388 Mono 3 +item_28=41389 Mono 4 +item_29=41390 Mono 5 +item_30=41391 Mono 6 +item_31=41392 Mono 7 +item_32=41393 Mono 8 +item_33=41394 Mono 9 +item_34=41395 Mono 10 +item_35=41396 Mono 11 +item_36=41397 Mono 12 +item_37=41398 Mono 13 +item_38=41399 Mono 14 +item_39=41400 Mono 15 +item_40=41401 Mono 16 +item_41=41402 Mono 17 +item_42=41403 Mono 18 +item_43=41404 Mono 19 +item_44=41405 Mono 20 +item_45=41406 Mono 21 +item_46=41407 Mono 22 +item_47=41408 Mono 23 +item_48=41409 Mono 24 +item_49=41410 Mono 25 +item_50=41411 Mono 26 +item_51=41412 Mono 27 +item_52=41413 Mono 28 +item_53=41414 Mono 29 +item_54=41415 Mono 30 +item_55=41416 Mono 31 +item_56=41417 Mono 32 +item_57=41418 Mono 33 +item_58=41419 Mono 34 +item_59=41420 Mono 35 +item_60=41421 Mono 36 +item_61=41422 Mono 37 +item_62=41423 Mono 38 +item_63=41424 Mono 39 +item_64=41425 Mono 40 +item_65=41426 Mono 41 +item_66=41427 Mono 42 +item_67=41428 Mono 43 +item_68=41429 Mono 44 +item_69=41430 Mono 45 +item_70=41431 Mono 46 +item_71=41432 Mono 47 +item_72=41433 Mono 48 +item_73=41434 Mono 49 +item_74=41435 Mono 50 +item_75=41436 Mono 51 +item_76=41437 Mono 52 +item_77=41438 Mono 53 +item_78=41439 Mono 54 +item_79=41440 Mono 55 +item_80=41441 Mono 56 +item_81=41442 Mono 57 +item_82=41443 Mono 58 +item_83=41444 Mono 59 +item_84=41445 Mono 60 +item_85=41446 Mono 61 +item_86=41447 Mono 62 +item_87=41448 Mono 63 +item_88=41449 Mono 64 +item_89=-3 +item_90=-2 Take channel mode: Stereo (1-64) +item_91=41450 Stereo 1/2 +item_92=41451 Stereo 2/3 +item_93=41452 Stereo 3/4 +item_94=41453 Stereo 4/5 +item_95=41454 Stereo 5/6 +item_96=41455 Stereo 6/7 +item_97=41456 Stereo 7/8 +item_98=41457 Stereo 8/9 +item_99=41458 Stereo 9/10 +item_100=41459 Stereo 10/11 +item_101=41460 Stereo 11/12 +item_102=41461 Stereo 12/13 +item_103=41462 Stereo 13/14 +item_104=41463 Stereo 14/15 +item_105=41464 Stereo 15/16 +item_106=41465 Stereo 16/17 +item_107=41466 Stereo 17/18 +item_108=41467 Stereo 18/19 +item_109=41468 Stereo 19/20 +item_110=41469 Stereo 20/21 +item_111=41470 Stereo 21/22 +item_112=41471 Stereo 22/23 +item_113=41472 Stereo 23/24 +item_114=41473 Stereo 24/25 +item_115=41474 Stereo 25/26 +item_116=41475 Stereo 26/27 +item_117=41476 Stereo 27/28 +item_118=41477 Stereo 28/29 +item_119=41478 Stereo 29/30 +item_120=41479 Stereo 30/31 +item_121=41480 Stereo 31/32 +item_122=41481 Stereo 32/33 +item_123=41482 Stereo 33/34 +item_124=41483 Stereo 34/35 +item_125=41484 Stereo 35/36 +item_126=41485 Stereo 36/37 +item_127=41486 Stereo 37/38 +item_128=41487 Stereo 38/39 +item_129=41488 Stereo 39/40 +item_130=41489 Stereo 40/41 +item_131=41490 Stereo 41/42 +item_132=41491 Stereo 42/43 +item_133=41492 Stereo 43/44 +item_134=41493 Stereo 44/45 +item_135=41494 Stereo 45/46 +item_136=41495 Stereo 46/47 +item_137=41496 Stereo 47/48 +item_138=41497 Stereo 48/49 +item_139=41498 Stereo 49/50 +item_140=41499 Stereo 50/51 +item_141=41500 Stereo 51/52 +item_142=41501 Stereo 52/53 +item_143=41502 Stereo 53/54 +item_144=41503 Stereo 54/55 +item_145=41504 Stereo 55/56 +item_146=41505 Stereo 56/57 +item_147=41506 Stereo 57/58 +item_148=41507 Stereo 58/59 +item_149=41508 Stereo 59/60 +item_150=41509 Stereo 60/61 +item_151=41510 Stereo 61/62 +item_152=41511 Stereo 62/63 +item_153=41512 Stereo 63/64 item_154=-3 -item_155=41589 Item properties... -item_156=40011 Source properties... -item_157=-1 -item_158=-2 Group -item_159=40032 Group items -item_160=40033 Remove items from group -item_161=40034 Select all items in group -item_162=-3 -item_163=-2 Take -item_164=40125 Next take -item_165=40126 Previous take -item_166=40129 Delete active take -item_167=40131 Crop to active take -item_168=40639 Duplicate active take -item_169=41339 Lock to active take -item_170=-1 -item_171=40638 Show FX chain for active take -item_172=40640 Remove FX for active take -item_173=-1 -item_174=41974 Take envelopes... -item_175=40693 Take volume envelope -item_176=40694 Take pan envelope -item_177=40695 Take mute envelope -item_178=41612 Take pitch envelope -item_179=-1 -item_180=40224 Explode all takes to new tracks -item_181=40642 Explode all takes (in place) -item_182=40643 Explode all takes (in order) -item_183=40438 Implode items across tracks into takes -item_184=40543 Implode items on same track into takes -item_185=40603 Paste to takes in items -item_186=-1 -item_187=45000 (take list) -item_188=-3 -item_189=-2 Comps -item_190=41373 Save/rename active comp... -item_191=41374 Remove active comp from list -item_192=41379 Crop list to active comp -item_193=41378 Move active comp to top lane -item_194=-1 -item_195=45100 (comp list) -item_196=-3 -item_197=-2 Item and take colors -item_198=40704 Set items to custom color... -item_199=40705 Set items to random colors -item_200=40706 Set items to one random color -item_201=40707 Set items to default color -item_202=-1 -item_203=41331 Set active takes to custom color... -item_204=41332 Set active takes to one random color -item_205=41333 Set active takes to default color -item_206=41337 Set all takes of selected items to default color -item_207=-3 -item_208=-2 Item processing -item_209=40108 Normalize items -item_210=40254 Normalize items (common gain) -item_211=-1 -item_212=40760 Dynamic split items... -item_213=-1 -item_214=40644 Implode items across tracks into items on one track -item_215=40645 Auto-reposition items in free item positioning mode -item_216=-1 -item_217=40894 Explode multichannel audio or MIDI items to new one-channel items -item_218=-1 -item_219=40692 Import media cues from items as project markers +item_155=-1 +item_156=40380 Set item timebase to project/track default +item_157=40433 Set item timebase to time +item_158=-3 +item_159=41589 Item properties... +item_160=40011 Source properties... +item_161=-1 +item_162=-2 Group +item_163=40032 Group items +item_164=40033 Remove items from group +item_165=40034 Select all items in group +item_166=-3 +item_167=-2 Take +item_168=40125 Next take +item_169=40126 Previous take +item_170=40129 Delete active take +item_171=40131 Crop to active take +item_172=40639 Duplicate active take +item_173=41339 Lock to active take +item_174=-1 +item_175=40638 Show FX chain for active take +item_176=40640 Remove FX for active take +item_177=-1 +item_178=41974 Take envelopes... +item_179=40693 Take volume envelope +item_180=40694 Take pan envelope +item_181=40695 Take mute envelope +item_182=41612 Take pitch envelope +item_183=-1 +item_184=40224 Explode all takes to new tracks +item_185=40642 Explode all takes (in place) +item_186=40643 Explode all takes (in order) +item_187=40438 Implode items across tracks into takes +item_188=40543 Implode items on same track into takes +item_189=40603 Paste to takes in items +item_190=-1 +item_191=45000 (take list) +item_192=-3 +item_193=-2 Comps +item_194=41373 Save/rename active comp... +item_195=41374 Remove active comp from list +item_196=41379 Crop list to active comp +item_197=41378 Move active comp to top lane +item_198=-1 +item_199=45100 (comp list) +item_200=-3 +item_201=-2 Item and take colors +item_202=40704 Set items to custom color... +item_203=40705 Set items to random colors +item_204=40706 Set items to one random color +item_205=40707 Set items to default color +item_206=-1 +item_207=41331 Set active takes to custom color... +item_208=41332 Set active takes to one random color +item_209=41333 Set active takes to default color +item_210=41337 Set all takes of selected items to default color +item_211=-3 +item_212=-2 Item processing +item_213=40108 Normalize items +item_214=40254 Normalize items (common gain) +item_215=-1 +item_216=40760 Dynamic split items... +item_217=-1 +item_218=40644 Implode items across tracks into items on one track +item_219=40645 Auto-reposition items in free item positioning mode item_220=-1 -item_221=41976 Propagate take to similarly-named active takes on track -item_222=41977 Propagate item to similarly-named items on track -item_223=41978 Propagate take to all similarly-named active takes -item_224=41979 Propagate item to all similarly-named items -item_225=-3 -item_226=-2 Spectral Editing -item_227=42303 Spectrogram: Toggle show spectrogram for selected items -item_228=42302 Spectrogram: Add spectral edit to item +item_221=40894 Explode multichannel audio or MIDI items to new one-channel items +item_222=-1 +item_223=40692 Import media cues from items as project markers +item_224=-1 +item_225=41976 Propagate take to similarly-named active takes on track +item_226=41977 Propagate item to similarly-named items on track +item_227=41978 Propagate take to all similarly-named active takes +item_228=41979 Propagate item to all similarly-named items item_229=-3 -item_230=-2 Stretch markers -item_231=41842 Add stretch marker at cursor -item_232=41843 Add stretch markers at time selection -item_233=-1 -item_234=-2 Stretch marker at cursor -item_235=41989 Reset -item_236=41988 Edit rate -item_237=41859 Remove -item_238=-3 -item_239=-2 Stretch markers in selected items -item_240=41846 Snap to grid -item_241=41844 Remove +item_230=-2 Spectral Editing +item_231=42303 Spectrogram: Toggle show spectrogram for selected items +item_232=42302 Spectrogram: Add spectral edit to item +item_233=-3 +item_234=-2 Stretch markers +item_235=41842 Add stretch marker at cursor +item_236=41843 Add stretch markers at time selection +item_237=-1 +item_238=-2 Stretch marker at cursor +item_239=41989 Reset +item_240=41988 Edit rate +item_241=41859 Remove item_242=-3 -item_243=-2 Stretch markers in selected items within time selection -item_244=41847 Snap to grid -item_245=41845 Remove +item_243=-2 Stretch markers in selected items +item_244=41846 Snap to grid +item_245=41844 Remove item_246=-3 -item_247=-1 -item_248=41857 Use tonal optimized mode -item_249=-3 -item_250=-2 Open items in editor -item_251=40109 Open in editor -item_252=40202 Open in secondary editor -item_253=-1 -item_254=40132 Open copies in editor -item_255=40203 Open copies in secondary editor -item_256=-1 -item_257=41816 Open associated project in new tab -item_258=-3 -item_259=-1 -item_260=40209 Apply track/take FX to items as new take -item_261=40361 Apply track/take FX to items as new take (mono output) -item_262=41993 Apply track/take FX to items as new take (multichannel output) -item_263=40601 Render items as new take -item_264=40270 Reverse items as new take -item_265=40362 Glue items -item_266=41588 Glue items within time selection -item_267=-1 -item_268=40057 Copy items -item_269=40060 Copy selected area of items -item_270=40014 Copy loop of selected area of items -item_271=40059 Cut items -item_272=40307 Cut selected area of items -item_273=40058 Paste -item_274=40006 Remove items -item_275=40508 Trim items to selected area -item_276=-1 -item_277=41228 Nudge/set items... -item_278=40012 Split items at cursor -item_279=40792 Split items at prior zero crossing -item_280=40061 Split items at time selection -item_281=40548 Heal splits in items +item_247=-2 Stretch markers in selected items within time selection +item_248=41847 Snap to grid +item_249=41845 Remove +item_250=-3 +item_251=-1 +item_252=41857 Use tonal optimized mode +item_253=-3 +item_254=-2 Open items in editor +item_255=40109 Open in editor +item_256=40202 Open in secondary editor +item_257=-1 +item_258=40132 Open copies in editor +item_259=40203 Open copies in secondary editor +item_260=-1 +item_261=41816 Open associated project in new tab +item_262=-3 +item_263=-1 +item_264=40209 Apply track/take FX to items as new take +item_265=40361 Apply track/take FX to items as new take (mono output) +item_266=41993 Apply track/take FX to items as new take (multichannel output) +item_267=40601 Render items as new take +item_268=40270 Reverse items as new take +item_269=40362 Glue items +item_270=41588 Glue items within time selection +item_271=-1 +item_272=40057 Copy items +item_273=40060 Copy selected area of items +item_274=40014 Copy loop of selected area of items +item_275=40059 Cut items +item_276=40307 Cut selected area of items +item_277=40058 Paste +item_278=40006 Remove items +item_279=40508 Trim items to selected area +item_280=-1 +item_281=41228 Nudge/set items... +item_282=40012 Split items at cursor +item_283=40792 Split items at prior zero crossing +item_284=40061 Split items at time selection +item_285=40548 Heal splits in items title=Media item context [Ruler/arrange context] diff --git a/reaper-mouse.ini b/reaper-mouse.ini index eb3c9c93..3ab4989b 100644 --- a/reaper-mouse.ini +++ b/reaper-mouse.ini @@ -22,6 +22,9 @@ MM_CTX_MIDI_RULER=1 MM_CTX_RULER=1 MM_CTX_TRACK=1 +[MM_CTX_ARRANGE_MMOUSE] +mm_0=2 + [MM_CTX_ENVLANE] mm_0=2 @@ -38,7 +41,9 @@ mm_4=49 [MM_CTX_ITEM_CLK] mm_0=_Ultraschall_Select_Item_Move_Editcursor_with_workaround -mm_6=0 +mm_4=40748 +mm_5=40936 +mm_6=_Ultraschall_Split_and_Delete [MM_CTX_ITEM_DBLCLK] mm_0=_Ultraschall_Play_From_Editcursor_Position diff --git a/ultraschall-settings.ini b/ultraschall-settings.ini index 2dc42c1e..947d3acb 100644 --- a/ultraschall-settings.ini +++ b/ultraschall-settings.ini @@ -1,7 +1,12 @@ [ultraschall_devices] -CoreAudio Aux=3 CoreAudio Built-in Microph=3 -CoreAudio Default=1 +CoreAudio H and F Series Multi Track Usb Audio=2 +CoreAudio H4=2 +CoreAudio H5=2 +CoreAudio H6=2 +CoreAudio Scarlett 6i6 USB=2 +CoreAudio Steinberg UR22mkII=2 +CoreAudio USB AUDIO CODEC=2 [ultraschall_settings_followmode_auto] Description=Toggles, if Followmode shall turn off automatically when clicking into Arrangeview or not.|Disable this if you encounter problems with the Followmode. @@ -82,7 +87,7 @@ CheckForXSeconds=0 CheckFunction=SoundcheckBsize Description=If you use a audio device without local monitoring - you cannot attach a headphone to it -|it is important to set the right block size.|A block size larger than 128 will result in latency and echo effects.|A block size smaller than 32 will lead to an unstable audio stack and dropouts.|We suggest 512 for local monitoring devices and 64 for devices without local monitoring. DescriptionWarning=You just armed a track for recording,|but the block size of your sound interface seems to be wrong.|If you use a audio device without local monitoring -|it is important to set the right block size.|A block size larger than 128 will result in latency and echo effects.|A block size smaller than 32 will lead to an unstable audio stack and dropouts.|We suggest 512 for local monitoring devices and 64 for devices without local monitoring.|Use the action button to set the block size accordingly. -EventIdentifier=Ultraschall_Eventidentifier: {54D699EE-CF06-084F-8B34-E0F65DF57713} +EventIdentifier=Ultraschall_Eventidentifier: {81AC298A-C963-5544-A6B0-26ECAB926E94} EventNameDisplay=Echo and distortion prevention EventPaused=false Position=7 @@ -101,7 +106,7 @@ CheckForXSeconds=0 CheckFunction=SoundcheckChangedInterface Description=Watches for a change in your sound interface DescriptionWarning=You connected this sound interface for the first time.|Please specify whether or nor|you are using local minitoring on this device. -EventIdentifier=Ultraschall_Eventidentifier: {561CFB26-AE05-784D-B529-0BE4EA938E7B} +EventIdentifier=Ultraschall_Eventidentifier: {731B3439-EDAE-6348-8944-CD074CE9C0EB} EventNameDisplay=Unknown sound interface EventPaused=false Position=6 @@ -118,7 +123,7 @@ CheckForXSeconds=0 CheckFunction=SoundcheckMic Description=Prevents you from accidentally recording with the built-in microphone|instead of using your dedicated sound interface. DescriptionWarning=You have just armed a track for recording, but your recording interface seems to be the internal microphone. |This results in very poor sound quality. |You can ignore this and still continue or change the sound interface. -EventIdentifier=Ultraschall_Eventidentifier: {13209998-5FA6-8640-B75C-87E253092B43} +EventIdentifier=Ultraschall_Eventidentifier: {406C565F-2EB4-BD45-A39E-477D55A29630} EventNameDisplay=Check for microphone EventPaused=false Position=4 @@ -135,7 +140,7 @@ CheckForXSeconds=0 CheckFunction=SoundcheckOverdub Description=This warning appears when a recording is started in the middle of an existing recording. |This would lead to overlapping takes and is usually undesirable. DescriptionWarning=You have just started a recording, but the recording cursor is not positioned at the end of the project. |This would lead to overlapping takes. |You can ignore the warning and still continue recording, or start recording at the very end of your project. -EventIdentifier=Ultraschall_Eventidentifier: {7A062E9C-8AD4-C64C-AE25-9F78CBC855A5} +EventIdentifier=Ultraschall_Eventidentifier: {11BB9C5A-1CE4-6B42-89A8-970AFAEDB6B3} EventNameDisplay=Start recording only at the end EventPaused=false Position=5 @@ -154,7 +159,7 @@ CheckForXSeconds=0 CheckFunction=SoundcheckTransitionRecordToStop Description=Reminder to prepare all tracks for editing after a recording is complete. |This starts a series of actions to switch the app from recording to editing behavior. DescriptionWarning=You just stopped a recording. |Do you want to rather pause and resume the recording later, |or is the recording really finished and you want to switch to edit mode? -EventIdentifier=Ultraschall_Eventidentifier: {1A90ADE7-4612-A640-95F3-2C8BA0FEB585} +EventIdentifier=Ultraschall_Eventidentifier: {99C6A117-2F64-F647-9F29-913151BB4AB9} EventNameDisplay=Prepare all tracks for editing EventPaused=false Position=2 @@ -171,7 +176,7 @@ CheckForXSeconds=0 CheckFunction=SoundcheckSamplerate Description=The samplerate of all devices must be set to 48.000 Hz |if you want to use StudioLink or StudioLink OnAir. DescriptionWarning=You have just started using StudioLink, but your sample rate is different from 48.000 Hz. |We strongly recommend that you change the sample rate via both the REAPER device settings and your recording hardware. |Failure to do so can result in dropouts and serious loss of audio quality. -EventIdentifier=Ultraschall_Eventidentifier: {75C5F72B-B1E7-AC43-A282-C12C124D228E} +EventIdentifier=Ultraschall_Eventidentifier: {01A515B9-E4F8-A343-B4E8-1B50A5F3C6BA} EventNameDisplay=48KHz Samplerate EventPaused=false Position=3 @@ -188,7 +193,7 @@ CheckForXSeconds=0 CheckFunction=SoundcheckUnsaved Description=The project must be saved before recording begins. DescriptionWarning=You have just armed a track for recording - but your project has not yet been saved. |We strongly recommend that you save your project as soon as possible. |Ignoring this may cause difficulties in finding your recordings or even loss of data. -EventIdentifier=Ultraschall_Eventidentifier: {4AA15109-866F-7442-878C-4AB5CEDD8FFB} +EventIdentifier=Ultraschall_Eventidentifier: {C11AE778-8CF1-A84E-969F-F5B817BE5302} EventNameDisplay=Unsaved project EventPaused=false Position=1 @@ -196,4 +201,3 @@ settingstype=checkbox StartActionsOnceDuringTrue=false StartFunction=_Ultraschall_Soundcheck_Startgui Value=1 -